ng-ipa-library 1.4.3 → 1.4.4
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-ipa-library.mjs","sources":["../../../projects/ng-ipa-library/src/lib/pipes/hijri-date.pipe.ts","../../../projects/ng-ipa-library/src/lib/pipes/pipes.module.ts","../../../projects/ng-ipa-library/src/lib/ipa-form/ipa-form.service.ts","../../../projects/ng-ipa-library/src/lib/ipa-form/text-input/text-input.component.ts","../../../projects/ng-ipa-library/src/lib/ipa-form/text-input/text-input.component.html","../../../projects/ng-ipa-library/src/lib/ipa-form/textarea-input/textarea-input.component.ts","../../../projects/ng-ipa-library/src/lib/ipa-form/textarea-input/textarea-input.component.html","../../../projects/ng-ipa-library/src/lib/ipa-form/dropdown-input/dropdown-input.component.ts","../../../projects/ng-ipa-library/src/lib/ipa-form/dropdown-input/dropdown-input.component.html","../../../projects/ng-ipa-library/src/lib/core/services/loader.service.ts","../../../projects/ng-ipa-library/src/lib/core/components/loading/loading.component.ts","../../../projects/ng-ipa-library/src/lib/core/components/loading/loading.component.html","../../../projects/ng-ipa-library/src/lib/ipa-form/file-upload/file-upload.component.ts","../../../projects/ng-ipa-library/src/lib/ipa-form/file-upload/file-upload.component.html","../../../projects/ng-ipa-library/src/lib/ipa-form/recaptcha/recaptcha.component.ts","../../../projects/ng-ipa-library/src/lib/ipa-form/recaptcha/recaptcha.component.html","../../../projects/ng-ipa-library/src/lib/generate-form/generate-form.component.ts","../../../projects/ng-ipa-library/src/lib/generate-form/generate-form.component.html","../../../projects/ng-ipa-library/src/lib/ipa-form/datepicker/datepicker.component.ts","../../../projects/ng-ipa-library/src/lib/ipa-form/datepicker/datepicker.component.html","../../../projects/ng-ipa-library/src/lib/ipa-form/datepicker/hijri-datepicker/IslamicI18n.ts","../../../projects/ng-ipa-library/src/lib/ipa-form/datepicker/hijri-datepicker/hijri-datepicker.component.ts","../../../projects/ng-ipa-library/src/lib/ipa-form/datepicker/gregorian-datepicker/gregorian18n.ts","../../../projects/ng-ipa-library/src/lib/ipa-form/datepicker/gregorian-datepicker/gregorian-datepicker.component.ts","../../../projects/ng-ipa-library/src/lib/share-button/share-button.component.ts","../../../projects/ng-ipa-library/src/lib/share-button/share-button.component.html","../../../projects/ng-ipa-library/src/lib/share-button/share-button.module.ts","../../../projects/ng-ipa-library/src/lib/ng-ipa-library.module.ts","../../../projects/ng-ipa-library/src/lib/core/interceptors/loading.interceptor.ts","../../../projects/ng-ipa-library/src/lib/core/services/error.service.ts","../../../projects/ng-ipa-library/src/lib/core/interceptors/error.interceptor.ts","../../../projects/ng-ipa-library/src/lib/core/services/auth.service.ts","../../../projects/ng-ipa-library/src/lib/core/services/token.service.ts","../../../projects/ng-ipa-library/src/lib/core/interceptors/token.interceptor.ts","../../../projects/ng-ipa-library/src/lib/core/interceptors/myIPAToken.interceptor.ts","../../../projects/ng-ipa-library/src/lib/services/breadcrumbs.service.ts","../../../projects/ng-ipa-library/src/lib/services/common.service.ts","../../../projects/ng-ipa-library/src/public-api.ts","../../../projects/ng-ipa-library/src/ng-ipa-library.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\r\nimport momentHijri from 'moment-hijri';\r\n@Pipe({\r\n name: 'hijriDate',\r\n})\r\nexport class HijriDatePipe implements PipeTransform {\r\n transform(\r\n date: string,\r\n format: string = 'iYYYY-iMM-iDD',\r\n lang: 'ar' | 'en' = 'en'\r\n ): string {\r\n momentHijri.locale(lang);\r\n return momentHijri(date).format(format);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { HijriDatePipe } from './hijri-date.pipe';\r\n\r\n@NgModule({\r\n declarations: [HijriDatePipe],\r\n exports: [HijriDatePipe],\r\n})\r\nexport class PipesModule {}\r\n","import { Injectable } from '@angular/core';\r\nimport { AbstractControl, FormControl, ValidationErrors } from '@angular/forms';\r\nimport momentHijri from 'moment-hijri';\r\nimport { Moment } from 'moment';\r\nimport { NgbDateParserFormatter } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IPAFormService {\r\n constructor(private parserFormatter: NgbDateParserFormatter) {}\r\n\r\n /**\r\n * check link is valid.\r\n */\r\n static linkValidation(control: AbstractControl): ValidationErrors | null {\r\n const isValidLink =\r\n /^((https?:\\/\\/)[\\w-]+(\\.[a-z-]+)+\\.?(:\\d+)?(\\/\\S*)?)$/.test(\r\n control.value\r\n );\r\n return isValidLink || !control.value ? null : { link: true };\r\n }\r\n\r\n /**\r\n * check mp4 link is valid.\r\n */\r\n static mp4LinkValidation(control: AbstractControl): ValidationErrors | null {\r\n const isValidLink =\r\n /^((https?:\\/\\/)[\\w-]+(\\.[a-z-]+)+\\.?(:\\d+)?(\\/\\S*)?(\\/[\\w\\u0600-\\u06FF]+\\.mp4))$/.test(\r\n control.value\r\n );\r\n return isValidLink || !control.value ? null : { linkMP4: true };\r\n }\r\n\r\n /**\r\n * check mobile number is valid.\r\n */\r\n static mobileNo(control: AbstractControl): ValidationErrors | null {\r\n const isValidLink = /^05\\d{8}$/.test(control.value);\r\n return isValidLink || !control.value ? null : { mobileNo: true };\r\n }\r\n\r\n /**\r\n * check email is valid.\r\n */\r\n static email(control: AbstractControl): ValidationErrors | null {\r\n const isValidLink =\r\n /^(([^<>()[\\]\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@(([^<>()[\\]\\.,;:\\s@\\\"]+\\.)+[^<>()[\\]\\.,;:\\s@\\\"]{2,})$/.test(\r\n control.value\r\n );\r\n return isValidLink || !control.value ? null : { Email: true };\r\n }\r\n\r\n /**\r\n * check national ID or iqama ID is valid.\r\n */\r\n static checkID(control: AbstractControl): ValidationErrors | null {\r\n let isValid = false;\r\n const value = control.value;\r\n if (\r\n IPAFormService.nationalIdValidate(value) ||\r\n IPAFormService.iqamaIdValidate(value)\r\n ) {\r\n isValid = true;\r\n } else {\r\n isValid = false;\r\n }\r\n return isValid || !value ? null : { checkId: true };\r\n }\r\n\r\n getErrorMessage(\r\n control: FormControl,\r\n patternErrorMsg = '',\r\n isArabic: boolean\r\n ): string | null {\r\n for (const propertyName in control?.errors) {\r\n if (\r\n control?.errors.hasOwnProperty(propertyName) &&\r\n (control.touched || control.dirty)\r\n ) {\r\n return this.getValidatorErrorMessage(\r\n propertyName,\r\n control.errors[propertyName],\r\n patternErrorMsg,\r\n isArabic\r\n );\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * convert gregorian date to hijri date (Based on Umm al-Qura calculations).\r\n * @param date: gregorian date\r\n * @param format: iDD => day: ١٥, iMM => month: ٠٤, iMMM => month: ربيع ٢,\r\n * iMMMM => ربيع الثاني, iYY => year: ٤٢, iYYYY => year: ١٤٤٢,\r\n * dd => ن, ddd => إثنين, dddd => الإثنين\r\n * @example 'iYYYY/iM/iDهـ الموافق YYYY/M/Dم'\r\n * '١٤٤٢/٠٤/١٥هـ الموافق ٢٠٢٠/١١/٣٠'\r\n */\r\n convertToHijriDate(\r\n date: string,\r\n format = 'iYYYY-iMM-iDD',\r\n lang = 'ar-SA'\r\n ): string {\r\n momentHijri.locale(lang);\r\n return momentHijri(date).format(format);\r\n }\r\n\r\n convertToGregorianDate(\r\n date: Moment,\r\n format = 'YYYY-MM-DD',\r\n lang = 'en'\r\n ): string {\r\n momentHijri.locale(lang);\r\n const m = momentHijri.iConvert.toGregorian(\r\n date.year(),\r\n date.month(),\r\n date.date()\r\n );\r\n return momentHijri(new Date(m.gy, m.gm, m.gd)).format(format);\r\n }\r\n\r\n getCurrentHijriDate() {\r\n momentHijri.locale('en');\r\n return momentHijri().format('iYYYY/iMM/iDD');\r\n }\r\n\r\n private getValidatorErrorMessage(\r\n validatorName: string,\r\n validatorValue: any,\r\n patternErrorMsg: string,\r\n isArabic: boolean\r\n ): string {\r\n if (validatorName === 'pattern') {\r\n validatorValue = this.addPatternMsg(validatorValue, patternErrorMsg);\r\n }\r\n const config: any = {\r\n required: isArabic ? 'هذا الحقل مطلوب' : 'this field required',\r\n pattern: `${validatorValue.message}`,\r\n Email:\r\n (isArabic ? 'خطأ في البريد الالكتروني ' : 'Invalid email ') +\r\n '(example@example.com)',\r\n maxlength: isArabic\r\n ? `تجاوز عدد الحقل المسموح بها (${validatorValue.requiredLength}) حرف`\r\n : `this field is more than (${validatorValue.requiredLength}) letter`,\r\n minlength: isArabic\r\n ? `على الأقل عدد ${validatorValue.requiredLength} حرف`\r\n : `this field is less than (${validatorValue.requiredLength}) letter`,\r\n min: isArabic\r\n ? `رقم اكبر من أو يساوي ${validatorValue.min}`\r\n : `number more than or equal (${validatorValue.min})`,\r\n max: isArabic\r\n ? `رقم اصغر من أو يساوي ${validatorValue.max}`\r\n : `number less than or equal (${validatorValue.min})`,\r\n ngbDate: this.getNgbDatepickerErrorMsg(validatorValue),\r\n checkId: isArabic\r\n ? 'رقم الهوية أو الاقامة غير صحيح'\r\n : 'Wrong ID or Iqama number',\r\n link:\r\n (isArabic ? 'الرابط غير صحيح ' : 'Wrong link ') +\r\n '(http://example.com)',\r\n linkMP4:\r\n (isArabic ? 'رابط MP4 غير صحيح ' : 'Wrong MP4 link ') +\r\n '(http://example.com/example.mp4)',\r\n mobileNo:\r\n (isArabic ? 'خطأ في رقم الجوال ' : 'Wrong mobile number ') +\r\n '(05xxxxxxxx)',\r\n };\r\n return config[validatorName];\r\n }\r\n\r\n private addPatternMsg(validatorValue: any, patternErrorMsg: string) {\r\n let pattern = {\r\n ...validatorValue,\r\n message: patternErrorMsg,\r\n };\r\n return pattern;\r\n }\r\n\r\n private getNgbDatepickerErrorMsg(validatorValue: any): string {\r\n let msg = '';\r\n if (validatorValue.maxDate) {\r\n msg = `التاريخ المدخل \"${this.parserFormatter.format(\r\n validatorValue.maxDate.actual\r\n )}\" اكبر من تاريخ اليوم \"${this.parserFormatter.format(\r\n validatorValue.maxDate.maxDate\r\n )}\"`;\r\n } else if (validatorValue.minDate) {\r\n msg = `التاريخ المدخل \"${this.parserFormatter.format(\r\n validatorValue.minDate.actual\r\n )}\" يجب ان يكون اكبر من أو يساوي تاريخ البداية \"${this.parserFormatter.format(\r\n validatorValue.minDate.minDate\r\n )}\"`;\r\n } else if (validatorValue.invalid) {\r\n msg = `التاريخ المدخل غير صحيح ${validatorValue.invalid}.`;\r\n }\r\n return msg;\r\n }\r\n\r\n private static convertToEn(value: string) {\r\n let newValue = '';\r\n for (let i = 0; i < value.length; i++) {\r\n let ch = value.charCodeAt(i);\r\n if (ch >= 1584 && ch <= 1650) {\r\n let newChar = ch - 1584;\r\n newValue = newValue + String.fromCharCode(newChar);\r\n } else {\r\n newValue = newValue + String.fromCharCode(ch);\r\n }\r\n }\r\n return newValue;\r\n }\r\n\r\n private static nationalIdValidate(civilId: string): boolean {\r\n if (civilId) {\r\n let strID = this.convertToEn(civilId);\r\n let digits = '';\r\n let counter = 0;\r\n while (counter < 9) {\r\n if ((counter + 1) % 2 == 0) {\r\n digits = digits + strID.substring(counter, counter + 1);\r\n } else {\r\n digits =\r\n digits + (+strID.substring(counter, counter + 1) * 2).toString();\r\n }\r\n counter++;\r\n }\r\n let intSum = 0;\r\n let intSumTemp = 0;\r\n let strSum;\r\n let intOddSumDigit;\r\n let CheckDigit;\r\n counter = 0;\r\n while (counter < digits.length) {\r\n intSumTemp = +digits.charAt(counter) * 1;\r\n intSum += intSumTemp;\r\n counter++;\r\n }\r\n strSum = intSum.toString();\r\n if (strSum.length == 1) {\r\n intOddSumDigit = intSum;\r\n } else {\r\n intOddSumDigit = strSum.substring(strSum.length, strSum.length - 1);\r\n }\r\n if (intOddSumDigit == 0) {\r\n CheckDigit = 0;\r\n } else {\r\n CheckDigit = (10 - +intOddSumDigit).toString();\r\n }\r\n let PublicID = this.convertToEn(civilId);\r\n if (\r\n CheckDigit ==\r\n PublicID.substring(PublicID.length - 1, PublicID.length) &&\r\n strID.length == 10 &&\r\n strID.substring(0, 1) == '1'\r\n ) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n private static iqamaIdValidate(civilId: string): boolean {\r\n if (civilId) {\r\n let strID = this.convertToEn(civilId);\r\n let digits = '';\r\n let counter = 0;\r\n while (counter < 9) {\r\n if ((counter + 1) % 2 == 0) {\r\n digits = digits + strID.substring(counter, counter + 1);\r\n } else {\r\n digits =\r\n digits + (+strID.substring(counter, counter + 1) * 2).toString();\r\n }\r\n counter++;\r\n }\r\n let intSum = 0;\r\n let intSumTemp = 0;\r\n let strSum;\r\n let intOddSumDigit;\r\n let CheckDigit;\r\n counter = 0;\r\n while (counter < digits.length) {\r\n intSumTemp = +digits.charAt(counter) * 1;\r\n intSum += intSumTemp;\r\n counter++;\r\n }\r\n strSum = intSum.toString();\r\n if (strSum.length == 1) {\r\n intOddSumDigit = intSum;\r\n } else {\r\n intOddSumDigit = strSum.substring(strSum.length, strSum.length - 1);\r\n }\r\n if (intOddSumDigit == 0) {\r\n CheckDigit = 0;\r\n } else {\r\n CheckDigit = (10 - +intOddSumDigit).toString();\r\n }\r\n let PublicID = this.convertToEn(civilId);\r\n if (\r\n CheckDigit ==\r\n PublicID.substring(PublicID.length - 1, PublicID.length) &&\r\n strID.length == 10 &&\r\n strID.substring(0, 1) == '2'\r\n ) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n return false;\r\n }\r\n }\r\n}\r\n","import {\r\n AfterContentChecked,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n Input,\r\n OnInit,\r\n Self,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { FormControl, NgControl } from '@angular/forms';\r\nimport { IPAFormService } from '../ipa-form.service';\r\n\r\n@Component({\r\n selector: 'ipa-text-input',\r\n templateUrl: './text-input.component.html',\r\n styleUrls: ['./text-input.component.scss'],\r\n})\r\nexport class TextInputComponent implements OnInit, AfterContentChecked {\r\n @ViewChild('input', { static: true }) input!: ElementRef;\r\n @Input() id!: string;\r\n @Input() type = 'text';\r\n @Input() placeholder = 'please enter text';\r\n @Input() label: string = 'text input';\r\n @Input() required = false;\r\n @Input() patternErrorMsg = 'invalid pattern';\r\n @Input() onlyNumber = false;\r\n @Input() pattern = '';\r\n @Input() classes!: string;\r\n @Input() containerClasses!: string;\r\n @Input() isArabicForm = true;\r\n formControl: FormControl = new FormControl('');\r\n errorMsg!: string | null;\r\n\r\n constructor(\r\n private validationService: IPAFormService,\r\n @Self() public controlDir: NgControl,\r\n private cd: ChangeDetectorRef\r\n ) {\r\n this.controlDir.valueAccessor = this;\r\n }\r\n\r\n ngAfterContentChecked(): void {\r\n this.cd.detectChanges();\r\n }\r\n\r\n ngOnInit(): void {\r\n const control = this.controlDir.control;\r\n const validators = control?.validator ? [control.validator] : [];\r\n\r\n control?.setValidators(validators);\r\n control?.updateValueAndValidity();\r\n this.formControl = control as FormControl;\r\n }\r\n\r\n onChange(event: any): void {}\r\n\r\n onTouched(): void {}\r\n writeValue(obj: any): void {\r\n this.input.nativeElement.value = obj || '';\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n checkIsNumber(event: Event) {\r\n if (this.onlyNumber) {\r\n const initialValue = this.formControl.value;\r\n const newValue = initialValue.replace(/[^0-9]*/g, '');\r\n this.formControl.patchValue(newValue);\r\n this.formControl.markAsPristine();\r\n if (initialValue !== this.formControl.value) {\r\n event.stopPropagation();\r\n }\r\n }\r\n }\r\n\r\n get errorMessage(): string | null {\r\n this.errorMsg = this.validationService.getErrorMessage(\r\n this.formControl,\r\n this.patternErrorMsg,\r\n this.isArabicForm\r\n );\r\n return this.errorMsg;\r\n }\r\n}\r\n","<div class=\"form-floating {{containerClasses}}\">\r\n <input #input id=\"{{id}}\" class=\"form-control {{classes}}\" [type]=\"type\" [required]=\"required\" pattern=\"{{pattern}}\"\r\n placeholder=\"{{placeholder}}\" [formControl]=\"formControl\" (input)=\"onChange(controlDir.control?.value)\"\r\n (blur)=\"onTouched()\" (input)=\"checkIsNumber($event)\"\r\n [ngClass]=\"{'is-invalid is-invalid:focus': (controlDir.control?.invalid && (controlDir.control?.dirty || controlDir.control?.touched)) && errorMsg,'is-valid is-valid:focus': (controlDir.control?.valid && (controlDir.control?.dirty || controlDir.control?.touched) && (errorMsg || controlDir.value))}\">\r\n <label for=\"{{id}}\">{{label}}</label>\r\n <div class=\"invalid-feedback\" *ngIf=\"errorMessage !== null\">\r\n {{errorMsg}}\r\n </div>\r\n</div>","import {\r\n AfterContentChecked,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n Input,\r\n OnInit,\r\n Self,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { FormControl, NgControl } from '@angular/forms';\r\nimport { IPAFormService } from '../ipa-form.service';\r\n\r\n@Component({\r\n selector: 'ipa-textarea-input',\r\n templateUrl: './textarea-input.component.html',\r\n styleUrls: ['./textarea-input.component.scss'],\r\n})\r\nexport class TextareaInputComponent implements OnInit, AfterContentChecked {\r\n @ViewChild('input', { static: true }) input: ElementRef<any> =\r\n new ElementRef<any>(null);\r\n @Input() id!: string;\r\n @Input() placeholder = 'please enter text';\r\n @Input() label: string = 'textarea input';\r\n @Input() required = false;\r\n @Input() patternErrorMsg = 'invalid pattern';\r\n @Input() pattern!: string;\r\n @Input() classes!: string;\r\n @Input() containerClasses!: string;\r\n @Input() isArabicForm = true;\r\n formControl: FormControl = new FormControl('');\r\n errorMsg!: string | null;\r\n\r\n constructor(\r\n private validationService: IPAFormService,\r\n @Self() public controlDir: NgControl,\r\n private cd: ChangeDetectorRef\r\n ) {\r\n this.controlDir.valueAccessor = this;\r\n }\r\n\r\n ngAfterContentChecked(): void {\r\n this.cd.detectChanges();\r\n }\r\n\r\n ngOnInit(): void {\r\n const control = this.controlDir.control;\r\n const validators = control?.validator ? [control.validator] : [];\r\n\r\n control?.setValidators(validators);\r\n control?.updateValueAndValidity();\r\n this.formControl = control as FormControl;\r\n }\r\n\r\n onChange(event: any): void {}\r\n\r\n onTouched(): void {}\r\n writeValue(obj: any): void {\r\n this.input.nativeElement.value = obj || '';\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n get errorMessage(): string | null {\r\n this.errorMsg = this.validationService.getErrorMessage(\r\n this.formControl,\r\n this.patternErrorMsg,\r\n this.isArabicForm\r\n );\r\n return this.errorMsg;\r\n }\r\n}\r\n","<div class=\"form-floating {{containerClasses}}\">\r\n <textarea #input id=\"{{id}}\" class=\"form-control {{classes}}\" [required]=\"required\" pattern=\"{{pattern}}\"\r\n placeholder=\"{{placeholder}}\" [formControl]=\"formControl\" (input)=\"onChange(controlDir.control?.value)\"\r\n (blur)=\"onTouched()\" style=\"height: 135px;\"\r\n [ngClass]=\"{\r\n 'is-invalid is-invalid:focus': (controlDir.control?.invalid && (controlDir.control?.dirty || controlDir.control?.touched)) && errorMsg,\r\n 'is-valid is-valid:focus': (controlDir.control?.valid && (controlDir.control?.dirty || controlDir.control?.touched) && (errorMsg || controlDir.value))}\">\r\n </textarea>\r\n <label for=\"{{id}}\">{{label}}</label>\r\n <div class=\"invalid-feedback\" *ngIf=\"errorMessage !== null\">\r\n {{errorMsg}}\r\n </div>\r\n</div>","import {\r\n Component,\r\n ElementRef,\r\n Input,\r\n OnInit,\r\n Self,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { FormControl, NgControl } from '@angular/forms';\r\nimport { IPAFormService } from '../ipa-form.service';\r\n\r\n@Component({\r\n selector: 'ipa-dropdown-input',\r\n templateUrl: './dropdown-input.component.html',\r\n styleUrls: ['./dropdown-input.component.scss'],\r\n})\r\nexport class DropdownInputComponent implements OnInit {\r\n @ViewChild('select', { static: true }) input!: HTMLSelectElement;\r\n @Input() id!: string;\r\n @Input() label: string = 'text input';\r\n @Input() items: any[] = [];\r\n @Input() textField!: string;\r\n @Input() valueField!: string;\r\n @Input() required = false;\r\n @Input() firstItemLabel!: string;\r\n @Input() searchable = false;\r\n @Input() notFoundText = 'لا يوجد بيانات';\r\n @Input() classes!: string;\r\n @Input() containerClasses!: string;\r\n @Input() isArabicForm = true;\r\n @Input() fromGenerateForm = false;\r\n formControl: FormControl = new FormControl('');\r\n errorMsg!: string | null;\r\n\r\n constructor(\r\n private validationService: IPAFormService,\r\n @Self() public controlDir: NgControl\r\n ) {\r\n this.controlDir.valueAccessor = this;\r\n }\r\n\r\n ngOnInit(): void {\r\n const control = this.controlDir.control;\r\n const validators = control?.validator ? [control.validator] : [];\r\n\r\n control?.setValidators(validators);\r\n control?.updateValueAndValidity();\r\n this.formControl = control as FormControl;\r\n this.formControl.patchValue('');\r\n }\r\n\r\n onChange(event: any): void {}\r\n\r\n onTouched(): void {}\r\n writeValue(obj: any): void {\r\n if (this.input) this.input.value = obj || '';\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n get errorMessage(): string | null {\r\n this.errorMsg = this.validationService.getErrorMessage(\r\n this.formControl,\r\n '',\r\n this.isArabicForm\r\n );\r\n return this.errorMsg;\r\n }\r\n}\r\n","<div class=\"form-floating {{containerClasses}}\">\r\n <!-- searchable is false -->\r\n <ng-container *ngIf=\"!searchable\">\r\n <select #select id=\"{{id}}\" class=\"form-select {{classes}}\" [required]=\"required\" [formControl]=\"formControl\"\r\n [ngClass]=\"{'is-invalid is-invalid:focus': (controlDir.control?.invalid && (controlDir.control?.dirty || controlDir.control?.touched)) && errorMsg,'is-valid is-valid:focus': \r\n (controlDir.control?.valid && (controlDir.control?.dirty || controlDir.control?.touched) && (errorMsg || controlDir.value))}\">\r\n <option *ngIf=\"firstItemLabel\" value=\"\">{{firstItemLabel}}</option>\r\n <option *ngFor=\"let item of items\"\r\n [value]=\"valueField ? fromGenerateForm ? item[textField] : item[valueField] : item\">\r\n {{textField ? item[textField] : item}}\r\n </option>\r\n </select>\r\n <label for=\"{{id}}\">{{label}}</label>\r\n </ng-container>\r\n\r\n <!-- searchable is true -->\r\n <ng-select *ngIf=\"searchable\" #select dir=\"rtl\" class=\"{{classes}}\" [formControl]=\"formControl\" [items]=\"items\"\r\n [placeholder]=\"label\" [notFoundText]=\"notFoundText\" [required]=\"required\"\r\n [bindValue]=\"fromGenerateForm? textField : valueField\" [bindLabel]=\"textField\"\r\n [ngClass]=\"{'is-invalid is-invalid:focus': (controlDir.control?.invalid && (controlDir.control?.dirty || controlDir.control?.touched)) && errorMsg,'is-valid is-valid:focus': \r\n (controlDir.control?.valid && (controlDir.control?.dirty || controlDir.control?.touched) && (errorMsg || controlDir.value))}\">\r\n </ng-select>\r\n <div class=\"invalid-feedback\" *ngIf=\"errorMessage !== null\">\r\n {{errorMsg}}\r\n </div>\r\n</div>","import { HttpRequest } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { ExceptionUrl } from '../../models/exceptionUrl.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class LoaderService {\r\n public isLoading = new BehaviorSubject(false);\r\n urls: ExceptionUrl[] = [];\r\n constructor() {}\r\n\r\n setExceptionUrls(urls: ExceptionUrl[]) {\r\n this.urls = urls;\r\n }\r\n\r\n addExceptionUrl(url: ExceptionUrl) {\r\n this.urls.push(url);\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n} from '@angular/core';\r\nimport { LoaderService } from '../../services/loader.service';\r\n\r\n@Component({\r\n selector: 'ipa-loader',\r\n templateUrl: './loading.component.html',\r\n styleUrls: ['./loading.component.scss'],\r\n})\r\nexport class LoaderComponent implements AfterViewInit {\r\n loading = true;\r\n @Input() isLocal = false;\r\n\r\n constructor(\r\n private loaderService: LoaderService,\r\n private cdr: ChangeDetectorRef\r\n ) {}\r\n\r\n ngAfterViewInit(): void {\r\n this.loaderService.isLoading.subscribe((v) => {\r\n this.loading = v;\r\n const loader = document.getElementById('cover-spin');\r\n if (loader) {\r\n if (this.loading) {\r\n loader.style.display = 'flex';\r\n } else {\r\n if (loader.style.display !== 'none') loader.style.display = 'none';\r\n }\r\n }\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n}\r\n","<div id=\"cover-spin\" *ngIf=\"loading && isLocal\">\r\n <div class=\"spinner\"></div>\r\n</div>\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport {\r\n DropzoneConfigInterface,\r\n DropzoneDirective,\r\n} from 'ngx-dropzone-wrapper';\r\n\r\n@Component({\r\n selector: 'ipa-file-upload',\r\n templateUrl: './file-upload.component.html',\r\n styleUrls: ['./file-upload.component.scss'],\r\n})\r\nexport class FileUploadComponent implements OnInit {\r\n @ViewChild(DropzoneDirective, { static: false })\r\n dropzoneDir!: DropzoneDirective;\r\n @Input() isArabicForm = true;\r\n @Input() label = '';\r\n @Input() required = false;\r\n @Input() acceptedFiles = '';\r\n @Input() multiple = 1; // set maxFiles (NOT uploadMultiple)in the config object,\r\n @Input() maxFileSize = 2;\r\n @Input() method = 'POST';\r\n @Input() autoUpload = false;\r\n @Input() apiUrl = 'apiUrl';\r\n @Input() authorization!: string;\r\n @Output() successUpload = new EventEmitter();\r\n @Output() fileAdded = new EventEmitter();\r\n @Output() fileDeleted = new EventEmitter();\r\n dragEnter = false;\r\n errors: string[] = [];\r\n config!: DropzoneConfigInterface;\r\n filesAdded: File[] = [];\r\n currentFiles: File[] = [];\r\n\r\n constructor(\r\n // private authService: AuthService,\r\n private toastrService: ToastrService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.label = this.isArabicForm ? 'رفع ' : 'Upload ' + this.label;\r\n this.config = {\r\n url: this.apiUrl,\r\n method: this.method,\r\n headers: {\r\n Authorization: 'Bearer ' + this.authorization,\r\n },\r\n maxFilesize: this.maxFileSize,\r\n maxFiles: this.multiple,\r\n uploadMultiple: this.multiple > 1,\r\n dictInvalidFileType: this.isArabicForm\r\n ? 'صيغة الملف غير مسموح بها'\r\n : 'the file format is not allowed',\r\n dictFileTooBig: this.isArabicForm\r\n ? 'الحجم تجاوز الحد المسموح'\r\n : `the file size must be less than or equal (${this.maxFileSize}) MB`,\r\n dictMaxFilesExceeded: this.isArabicForm\r\n ? 'الرجاء حذف الملفات الموجودة حاليا لتتمكن من رفع هذا الملف'\r\n : 'Please delete existing files to be able to upload this file',\r\n acceptedFiles: this.acceptedFiles,\r\n autoProcessQueue: this.autoUpload,\r\n previewTemplate: '<span></span>',\r\n dictRemoveFile: '',\r\n };\r\n }\r\n\r\n operationCompleted(e: any): void {\r\n if (this.filesAdded.length > 0) {\r\n this.successUpload.emit(this.filesAdded);\r\n this.filesAdded = [];\r\n }\r\n this.dropzoneDir.reset();\r\n }\r\n\r\n onUploadSuccess(e: any): void {\r\n const file = e[0];\r\n if (file.status === 'success') {\r\n this.filesAdded.push(file);\r\n }\r\n const message = this.isArabicForm\r\n ? 'تم تحميل المرفقات بنجاح'\r\n : 'Attachments uploaded successfully';\r\n this.toastrService.success(message);\r\n }\r\n\r\n onUploadError(e: any): void {\r\n if (e[1]) {\r\n this.errors = [];\r\n this.errors.push(`${e[1]} (${e[0].name})`);\r\n }\r\n }\r\n\r\n fileWasAdded(e: File): void {\r\n const myDropzone = this.dropzoneDir.dropzone();\r\n if (this.multiple === 1) {\r\n this.currentFiles = [];\r\n this.filesAdded = [];\r\n this.errors = [];\r\n const files = myDropzone.files;\r\n if (files.length > 1) {\r\n myDropzone.removeFile(files[0]);\r\n }\r\n }\r\n this.currentFiles.push(e);\r\n this.fileAdded.emit(e);\r\n }\r\n\r\n sending(e: any): void {\r\n this.errors = [];\r\n }\r\n\r\n reset(e: any): void {}\r\n\r\n deleteFile(file: any): void {\r\n this.currentFiles = this.currentFiles.filter(\r\n (x) => x.name !== file.name && x.size !== file.size\r\n );\r\n this.errors = [];\r\n this.fileDeleted.emit();\r\n }\r\n}\r\n","<div class=\"file-upload\">\r\n <div class=\"upload-overlay\" [dropzone]=\"config\" (error)=\"onUploadError($event)\"\r\n (queueComplete)=\"operationCompleted($event)\" (success)=\"onUploadSuccess($event)\" (dragenter)=\"dragEnter = true\"\r\n (dragLeave)=\"dragEnter = false\" (drop)=\"dragEnter = false\" (dragEnd)=\"dragEnter = false\"\r\n [class.active-border]=\"dragEnter\" (sending)=\"sending($event)\" (reset)=\"reset($event)\"\r\n (addedFile)=\"fileWasAdded($event)\">\r\n </div>\r\n <div class=\"upload-btn-wrapper\">\r\n <div>\r\n <div class=\"subtitle mb-2\">\r\n {{label}}\r\n <span *ngIf=\"required\" class=\"required\">*</span>\r\n </div>\r\n <hr>\r\n <span style=\"font-size: 12px;\">{{isArabicForm? 'قم بسحب الملف أو اضغط هنا' : 'drag or click here'}}</span>\r\n <i class=\"fas fa-upload upload-icon mr-2\"></i>\r\n </div>\r\n <div *ngIf=\"acceptedFiles.length > 0\" class=\"allowed-extensions\">\r\n {{isArabicForm? 'الصيغة المسموح بها:' : 'Allowed format:'}} \r\n <span class=\"extensions\">{{ acceptedFiles }}</span>\r\n </div>\r\n <div class=\"allowed-extensions\">\r\n {{isArabicForm? 'اقصى حجم للمرفق:' : 'Attachment Size:'}}\r\n <span class=\"extensions\">{{ maxFileSize }} MB</span>\r\n </div>\r\n </div>\r\n</div>\r\n<div id=\"attachment-status\" style=\"text-align: center; margin-top:10px;\">\r\n <span style=\"font-size: 14px; margin: auto; font-weight:bold;\" *ngFor=\"let file of currentFiles\">\r\n {{ file.name }} <i (click)=\"deleteFile(file)\" class=\"fas fa-trash\"\r\n style=\"color:firebrick; cursor: pointer;\"></i>\r\n <br>\r\n </span>\r\n <ul class=\"list-unstyled\">\r\n <li class=\"text-danger\" style=\"font-size: 12px;\" *ngFor=\"let error of errors\">{{error}}</li>\r\n </ul>\r\n</div>","import { Component, Input, OnInit, Self } from '@angular/core';\nimport { FormControl, NgControl } from '@angular/forms';\n\n@Component({\n selector: 'ipa-recaptcha',\n templateUrl: './recaptcha.component.html',\n styleUrls: ['./recaptcha.component.scss'],\n})\nexport class RecaptchaComponent implements OnInit {\n @Input() siteKey = '6LefJQYdAAAAAIlxmfkjNlWidMk8VukIZcs6lO5e';\n @Input() recaptchaSize: 'compact' | 'normal' = 'normal';\n @Input() lang: 'ar' | 'en' = 'ar';\n @Input() recaptchaType: 'image' | 'audio' = 'image';\n @Input() theme: 'light' | 'dark' = 'light';\n @Input() useGlobalDomain = true;\n formControl: FormControl = new FormControl('');\n constructor(@Self() public controlDir: NgControl) {\n this.controlDir.valueAccessor = this;\n }\n\n ngOnInit(): void {\n const control = this.controlDir.control;\n const validators = control?.validator ? [control.validator] : [];\n\n control?.setValidators(validators);\n control?.updateValueAndValidity();\n this.formControl = control as FormControl;\n }\n\n onChange(event: any): void {}\n\n onTouched(): void {}\n writeValue(obj: any): void {}\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n}\n","<ngx-recaptcha2 [siteKey]=\"siteKey\" [size]=\"recaptchaSize\" [hl]=\"lang\" [theme]=\"theme\" [type]=\"recaptchaType\"\n [useGlobalDomain]=\"useGlobalDomain\" [formControl]=\"formControl\">\n</ngx-recaptcha2>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { IPAFormService } from '../ipa-form/ipa-form.service';\r\nimport { Column, GenerateForm } from '../models/generateForm.model';\r\n\r\n@Component({\r\n selector: 'ipa-generate-form',\r\n templateUrl: './generate-form.component.html',\r\n styleUrls: ['./generate-form.component.scss'],\r\n})\r\nexport class GenerateFormComponent implements OnInit {\r\n @Input() generateForm!: FormGroup;\r\n @Input() form!: GenerateForm;\r\n @Input() isArabicForm = true;\r\n\r\n // recaptcha inputs\r\n @Input() siteKey!: string;\r\n @Input() recaptchaSize: 'compact' | 'normal' = 'normal';\r\n @Input() lang: 'ar' | 'en' = 'ar';\r\n @Input() recaptchaType: 'image' | 'audio' = 'image';\r\n @Input() theme: 'light' | 'dark' = 'light';\r\n @Input() useGlobalDomain = true;\r\n\r\n // file upload outputs\r\n @Output() successUpload = new EventEmitter();\r\n @Output() fileAdded = new EventEmitter();\r\n @Output() fileDeleted = new EventEmitter();\r\n\r\n errorMsg!: string | null;\r\n\r\n constructor(private validationService: IPAFormService) {}\r\n\r\n ngOnInit(): void {\r\n this.changeDataValueForEngForm();\r\n this.createForm();\r\n }\r\n\r\n getFormControls(formControlName: string) {\r\n return this.generateForm.get('items' + formControlName) as FormArray;\r\n }\r\n\r\n getErrorMessage(formControlName: string): string | null {\r\n const formControl = this.generateForm.controls[\r\n formControlName\r\n ] as FormControl;\r\n this.errorMsg = this.validationService.getErrorMessage(\r\n formControl,\r\n '',\r\n this.isArabicForm\r\n );\r\n return this.errorMsg;\r\n }\r\n\r\n SuccessUpload(event: any) {\r\n this.successUpload.emit(event);\r\n }\r\n\r\n FileAdded(file: any, formControlName: string) {\r\n this.generateForm.controls[formControlName].patchValue(file);\r\n this.fileAdded.emit(file);\r\n }\r\n\r\n FileDeleted(event: any, formControlName: string) {\r\n this.generateForm.controls[formControlName].patchValue(null);\r\n this.fileDeleted.emit(event);\r\n }\r\n\r\n private changeDataValueForEngForm() {\r\n this.form.columns = this.form.columns.map((column) => {\r\n return {\r\n ...column,\r\n data: column.data?.map((item) => {\r\n const value = item[column.textField!];\r\n return {\r\n ...item,\r\n [column.textField!]: this.isArabicForm\r\n ? value.split(',')[0]\r\n : value.split(',')[1],\r\n };\r\n }),\r\n };\r\n });\r\n }\r\n\r\n private createForm() {\r\n this.form.columns.forEach((column) => {\r\n if (column.type === 'checkbox') {\r\n this.addCheckboxControl(column);\r\n } else {\r\n this.generateForm.addControl(\r\n column.formControlName,\r\n new FormControl(\r\n column.type === 'file' && column.multipleFile! > 1 ? [] : null,\r\n [\r\n column.required ? Validators.required : Validators.nullValidator,\r\n column.validationPattern\r\n ? Validators.pattern(column.validationPattern)\r\n : Validators.nullValidator,\r\n ['select', 'radio', 'file', 'recaptcha'].indexOf(column.type) <=\r\n -1\r\n ? Validators.maxLength(column.size!)\r\n : Validators.nullValidator,\r\n column.type === 'number'\r\n ? Validators.min(1)\r\n : Validators.nullValidator,\r\n ]\r\n )\r\n );\r\n }\r\n });\r\n }\r\n\r\n private addCheckboxControl(column: Column) {\r\n let checkboxGroup = new FormArray(\r\n column.data!.map((item) => {\r\n return new FormGroup({\r\n [column.valueField!]: new FormControl(item[column.valueField!]),\r\n [column.textField!]: new FormControl(item[column.textField!]),\r\n checkbox: new FormControl(false),\r\n });\r\n })\r\n );\r\n\r\n this.generateForm.addControl(\r\n column.formControlName,\r\n new FormControl(\r\n null,\r\n column.required ? Validators.required : Validators.nullValidator\r\n )\r\n );\r\n this.generateForm.addControl(\r\n 'items' + column.formControlName,\r\n checkboxGroup\r\n );\r\n checkboxGroup.valueChanges.subscribe((value: any[]) => {\r\n let selectedItems = this.getCheckboxSelectedValues(value);\r\n if (selectedItems) {\r\n this.generateForm.controls[column.formControlName].patchValue(\r\n selectedItems.map((x) => x[column.textField!])\r\n );\r\n } else {\r\n this.generateForm.controls[column.formControlName].patchValue(null);\r\n this.generateForm.controls[column.formControlName].markAsTouched();\r\n }\r\n });\r\n }\r\n\r\n private getCheckboxSelectedValues(items: any[]): any[] | null {\r\n let selectedItems = items.filter((item) => item.checkbox);\r\n return selectedItems.length > 0 ? selectedItems : null;\r\n }\r\n}\r\n","<form [formGroup]=\"generateForm\">\r\n <ng-container *ngFor=\"let column of form.columns\">\r\n <div [ngSwitch]=\"column.type\">\r\n <!-- TEXTAREA -->\r\n <div *ngSwitchCase=\"'textArea'\">\r\n <ipa-textarea-input [formControlName]=\"column.formControlName\" [id]=\"column.formControlName\"\r\n [label]=\"isArabicForm? column.arabicLabel : column.englishLabel\" [required]=\"column.required\"\r\n [patternErrorMsg]=\"isArabicForm? column.patternArErrorMsg! : column.patternEnErrorMsg!\"\r\n [classes]=\"column.inputClasses!\" [containerClasses]=\"column.containerClasses!\"\r\n [isArabicForm]=\"isArabicForm\">\r\n </ipa-textarea-input>\r\n </div>\r\n\r\n <!-- DROP DOWN LIST -->\r\n <div *ngSwitchCase=\"'select'\">\r\n <ipa-dropdown-input [formControlName]=\"column.formControlName\" [id]=\"column.formControlName\"\r\n [label]=\"isArabicForm? column.arabicLabel : column.englishLabel\" [items]=\"column.data!\"\r\n [valueField]=\"column.valueField!\" [textField]=\"column.textField!\" [required]=\"column.required\"\r\n [searchable]=\"column.searchable!\" [notFoundText]=\"column.notFoundText!\"\r\n [classes]=\"column.inputClasses!\" [containerClasses]=\"column.containerClasses!\"\r\n [isArabicForm]=\"isArabicForm\" [fromGenerateForm]=\"true\">\r\n </ipa-dropdown-input>\r\n </div>\r\n\r\n <!-- CHECKBOX -->\r\n <div *ngSwitchCase=\"'checkbox'\" [class]=\"column.containerClasses\">\r\n <label>{{isArabicForm? column.arabicLabel : column.englishLabel}}</label>\r\n <ng-container [formArrayName]=\"'items'+ column.formControlName\"\r\n *ngFor=\"let control of getFormControls(column.formControlName).controls; let i = index\">\r\n <div class=\"form-check {{column.inputClasses}}\" [formGroupName]=\"i\">\r\n <input [id]=\"column.formControlName+control.value[column.valueField!]\" class=\"form-check-input\"\r\n type=\"checkbox\" formControlName=\"checkbox\">\r\n <label class=\"form-check-label\"\r\n [for]=\"column.formControlName+control.value[column.valueField!]\">\r\n {{control.value[column.textField!]}}\r\n </label>\r\n </div>\r\n </ng-container>\r\n <div class=\"invalid-feedback\" style=\"display: block !important;\"\r\n *ngIf=\"getErrorMessage(column.formControlName) !== null\">\r\n {{errorMsg}}\r\n </div>\r\n </div>\r\n\r\n <!-- RADIO -->\r\n <div *ngSwitchCase=\"'radio'\" [class]=\"column.containerClasses\">\r\n <label>{{isArabicForm? column.arabicLabel : column.englishLabel}}</label>\r\n <ng-container *ngFor=\"let item of column.data; let i = index\">\r\n <div class=\"form-check {{column.inputClasses}}\">\r\n <input [id]=\"column.formControlName+item[column.valueField!]\" class=\"form-check-input\"\r\n type=\"radio\" [formControlName]=\"column.formControlName\" [value]=\"item[column.textField!]\">\r\n <label class=\"form-check-label\" [for]=\"column.formControlName+item[column.valueField!]\">\r\n {{item[column.textField!]}}\r\n </label>\r\n </div>\r\n </ng-container>\r\n <div class=\"invalid-feedback\" style=\"display: block !important;\"\r\n *ngIf=\"getErrorMessage(column.formControlName) !== null\">\r\n {{errorMsg}}\r\n </div>\r\n </div>\r\n\r\n <!-- FILE UPLOAD -->\r\n <div *ngSwitchCase=\"'file'\" [class]=\"column.containerClasses\">\r\n <ipa-file-upload [isArabicForm]=\"isArabicForm\" [label]=\"isArabicForm? column.arabicLabel : column.englishLabel\"\r\n [acceptedFiles]=\"column.acceptedFiles!\" [multiple]=\"column.multipleFile!\"\r\n [maxFileSize]=\"column.size!\" [method]=\"column.apiURlMethod!\" [autoUpload]=\"column.autoUploadFile!\"\r\n [apiUrl]=\"column.apiUrl?? 'apiUrl' \" [authorization]=\"column.authorization!\" ngDefaultControl\r\n [formControlName]=\"column.formControlName\" (successUpload)=\"SuccessUpload($event)\"\r\n (fileAdded)=\"FileAdded($event, column.formControlName)\"\r\n (fileDeleted)=\"FileDeleted($event, column.formControlName)\">\r\n </ipa-file-upload>\r\n </div>\r\n\r\n <!-- recaptcha -->\r\n <div *ngSwitchCase=\"'recaptcha'\" [class]=\"column.containerClasses\">\r\n <ipa-recaptcha [recaptchaSize]=\"recaptchaSize\" [lang]=\"isArabicForm? 'ar':'en'\" [theme]=\"theme\"\r\n [recaptchaType]=\"recaptchaType\" [useGlobalDomain]=\"useGlobalDomain\"\r\n formControlName=\"{{column.formControlName}}\">\r\n </ipa-recaptcha>\r\n </div>\r\n\r\n <!-- DEFAULT -->\r\n <div *ngSwitchDefault>\r\n <ipa-text-input [formControlName]=\"column.formControlName\" [id]=\"column.formControlName\"\r\n [type]=\"column.type\" [label]=\"isArabicForm? column.arabicLabel : column.englishLabel\"\r\n [required]=\"column.required\"\r\n [patternErrorMsg]=\"isArabicForm? column.patternArErrorMsg! : column.patternEnErrorMsg!\"\r\n [classes]=\"column.inputClasses!\" [containerClasses]=\"column.containerClasses!\"\r\n [isArabicForm]=\"isArabicForm\">\r\n </ipa-text-input>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</form>","import { Component, Input, OnInit, Self, ViewChild } from '@angular/core';\r\nimport { FormControl, NgControl } from '@angular/forms';\r\nimport {\r\n NgbCalendar,\r\n NgbDateStruct,\r\n NgbInputDatepicker,\r\n NgbInputDatepickerConfig,\r\n} from '@ng-bootstrap/ng-bootstrap';\r\nimport { IPAFormService } from '../ipa-form.service';\r\n\r\n@Component({\r\n selector: 'ipa-datepicker',\r\n templateUrl: './datepicker.component.html',\r\n styleUrls: ['./datepicker.component.scss'],\r\n})\r\nexport class DatepickerComponent implements OnInit {\r\n @ViewChild('d') datepicker!: NgbInputDatepicker;\r\n @Input() id!: string;\r\n @Input() label = 'datepicker';\r\n @Input() patternErrorMsg = 'invalid pattern';\r\n @Input() required = false;\r\n @Input() maxDate!: NgbDateStruct;\r\n @Input() minDate!: NgbDateStruct;\r\n @Input() classes!: string;\r\n @Input() containerClasses!: string;\r\n @Input() isArabicForm = true;\r\n today = this.calendar.getToday();\r\n formControl: FormControl = new FormControl('');\r\n errorMsg!: string | null;\r\n\r\n constructor(\r\n private ipaFormService: IPAFormService,\r\n private calendar: NgbCalendar,\r\n @Self() public controlDir: NgControl,\r\n config: NgbInputDatepickerConfig\r\n ) {\r\n this.controlDir.valueAccessor = this;\r\n config.container = null;\r\n }\r\n\r\n ngOnInit(): void {\r\n const control = this.controlDir.control;\r\n const validators = control?.validator ? [control.validator] : [];\r\n\r\n control?.setValidators(validators);\r\n control?.updateValueAndValidity();\r\n this.formControl = control as FormControl;\r\n }\r\n\r\n onChange(event: any): void {}\r\n\r\n onTouched(): void {}\r\n writeValue(obj: any): void {}\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n openDatepicker(event: any) {\r\n if (!this.datepicker.isOpen()) {\r\n this.datepicker.toggle();\r\n event.preventDefault();\r\n return;\r\n }\r\n this.datepicker.close();\r\n }\r\n\r\n get errorMessage(): string | null {\r\n this.errorMsg = this.ipaFormService.getErrorMessage(\r\n this.formControl,\r\n this.patternErrorMsg,\r\n this.isArabicForm\r\n );\r\n return this.errorMsg;\r\n }\r\n}\r\n","<div class=\"form-floating input-group {{containerClasses}}\">\r\n <input id=\"{{id}}\"\r\n [ngClass]=\"{'is-invalid is-invalid:focus': (controlDir.control?.invalid && (controlDir.control?.dirty || controlDir.control?.touched)) && errorMsg,'is-valid is-valid:focus': (controlDir.control?.valid && (controlDir.control?.dirty || controlDir.control?.touched) && (errorMsg || controlDir.value))}\"\r\n class=\"form-control {{classes}}\" [formControl]=\"formControl\" [firstDayOfWeek]=\"7\" ngbDatepicker\r\n #d=\"ngbDatepicker\" [maxDate]=\"maxDate\" [minDate]=\"minDate\" [footerTemplate]=\"footerTemplate\"\r\n [required]=\"required\" style=\"outline: unset; z-index: unset !important;\" autocomplete=\"off\" (blur)=\"onTouched()\"\r\n title=\"{{label}}\">\r\n <label for=\"{{id}}\">{{label}}</label>\r\n <span class=\"input-group-text calenderBtn\" (click)=\"openDatepicker($event)\">\r\n <i class=\"far fa-calendar-alt fa-lg\"></i>\r\n </span>\r\n <div class=\"invalid-feedback\" *ngIf=\"errorMessage !== null\">\r\n {{errorMsg}}\r\n </div>\r\n <ng-template #footerTemplate style=\"text-align: center;\">\r\n <hr>\r\n <button type=\"button\" class=\"btn btn-primary btn-sm m-2 \" style=\"width: auto; float: right;\"\r\n (click)=\"formControl.patchValue(today);d.navigateTo(today);\">اليوم</button>\r\n <button type=\"button\" class=\"btn btn-secondary btn-sm m-2\" style=\"width: auto; float: left;\"\r\n (click)=\"formControl.patchValue(null);d.close()\">مسح</button>\r\n </ng-template>\r\n</div>","import { TranslationWidth } from '@angular/common';\r\nimport { Injectable } from '@angular/core';\r\nimport { NgbDatepickerI18n, NgbDateStruct } from '@ng-bootstrap/ng-bootstrap';\r\n\r\nconst WEEKDAYS = ['ن', 'ث', 'ر', 'خ', 'ج', 'س', 'ح'];\r\nconst MONTHS = [\r\n 'محرم',\r\n 'صفر',\r\n 'ربيع الأول',\r\n 'ربيع الآخر',\r\n 'جمادى الأولى',\r\n 'جمادى الآخرة',\r\n 'رجب',\r\n 'شعبان',\r\n 'رمضان',\r\n 'شوال',\r\n 'ذو القعدة',\r\n 'ذو الحجة',\r\n];\r\n\r\n@Injectable()\r\nexport class IslamicI18n extends NgbDatepickerI18n {\r\n getMonthShortName(month: number) {\r\n return MONTHS[month - 1];\r\n }\r\n\r\n getMonthFullName(month: number) {\r\n return MONTHS[month - 1];\r\n }\r\n\r\n getWeekdayLabel(weekday: number, width?: TranslationWidth) {\r\n return WEEKDAYS[weekday - 1];\r\n }\r\n\r\n getDayAriaLabel(date: NgbDateStruct): string {\r\n return `${date.day}-${date.month}-${date.year}`;\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { NgbCalendar, NgbCalendarIslamicUmalqura, NgbDatepickerI18n } from '@ng-bootstrap/ng-bootstrap';\r\nimport { DatepickerComponent } from '../datepicker.component';\r\nimport { IslamicI18n } from './IslamicI18n';\r\n@Component({\r\n selector: 'ipa-hijri-datepicker',\r\n templateUrl: '../datepicker.component.html',\r\n styleUrls: ['../datepicker.component.scss'],\r\n providers: [\r\n { provide: NgbCalendar, useClass: NgbCalendarIslamicUmalqura },\r\n { provide: NgbDatepickerI18n, useClass: IslamicI18n },\r\n ],\r\n})\r\nexport class HijriDatepickerComponent extends DatepickerComponent {}\r\n","import { TranslationWidth } from '@angular/common';\r\nimport { Injectable } from '@angular/core';\r\nimport { NgbDatepickerI18n, NgbDateStruct } from '@ng-bootstrap/ng-bootstrap';\r\n\r\nconst WEEKDAYS = ['ن', 'ث', 'ر', 'خ', 'ج', 'س', 'ح'];\r\nconst MONTHS = [\r\n 'يناير',\r\n 'فبراير',\r\n 'مارس',\r\n 'أبريل',\r\n 'مايو',\r\n 'يونيو',\r\n 'يوليو',\r\n 'اغسطس',\r\n 'سبتمبر',\r\n 'أكتوبر',\r\n 'نوفمبر',\r\n 'ديسمبر',\r\n];\r\n\r\n@Injectable()\r\nexport class Gregorian18n extends NgbDatepickerI18n {\r\n getMonthShortName(month: number) {\r\n return MONTHS[month - 1];\r\n }\r\n\r\n getMonthFullName(month: number) {\r\n return MONTHS[month - 1];\r\n }\r\n\r\n getWeekdayLabel(weekday: number, width?: TranslationWidth) {\r\n return WEEKDAYS[weekday - 1];\r\n }\r\n\r\n getDayAriaLabel(date: NgbDateStruct): string {\r\n return `${date.day}-${date.month}-${date.year}`;\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { NgbCalendar, NgbCalendarGregorian, NgbDatepickerI18n } from '@ng-bootstrap/ng-bootstrap';\r\nimport { DatepickerComponent } from '../datepicker.component';\r\nimport { Gregorian18n } from './gregorian18n';\r\n\r\n@Component({\r\n selector: 'ipa-gregorian-datepicker',\r\n templateUrl: '../datepicker.component.html',\r\n styleUrls: ['../datepicker.component.scss'],\r\n providers: [\r\n { provide: NgbCalendar, useClass: NgbCalendarGregorian},\r\n { provide: NgbDatepickerI18n, useClass: Gregorian18n },\r\n ],\r\n})\r\nexport class GregorianDatepickerComponent extends DatepickerComponent {}\r\n","import { Component, AfterViewInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ipa-share-button',\r\n templateUrl: './share-button.component.html',\r\n styleUrls: ['./share-button.component.scss'],\r\n})\r\nexport class ShareButtonComponent implements AfterViewInit {\r\n @Input() title = '';\r\n @Input() description = '';\r\n @Input() btnLabel = '';\r\n constructor() {}\r\n ngAfterViewInit(): void {\r\n const elements = document.getElementsByClassName('sb-show-icon');\r\n elements[0].setAttribute('type', 'button');\r\n elements[0].setAttribute('id', 'IPAShareBtn');\r\n const label = document.createElement('label');\r\n label.innerHTML = this.btnLabel;\r\n label.classList.add('sm-share-title');\r\n label.classList.add('me-1');\r\n elements[0].before(label);\r\n }\r\n}\r\n","<share-popup-button [title]=\"title\" [description]=\"description\" [icon]=\"'share-alt'\"\r\n [include]=\"['facebook','twitter','linkedin','telegram','whatsapp','email','copy']\">\r\n</share-popup-button>","import { OverlayModule } from '@angular/cdk/overlay';\r\nimport { NgModule } from '@angular/core';\r\nimport {\r\n FaIconLibrary,\r\n FontAwesomeModule,\r\n} from '@fortawesome/angular-fontawesome';\r\nimport { fas } from '@fortawesome/free-solid-svg-icons';\r\nimport { ShareIconsModule } from 'ngx-sharebuttons/icons';\r\nimport { ShareButtonsPopupModule } from 'ngx-sharebuttons/popup';\r\nimport { ShareButtonComponent } from './share-button.component';\r\n\r\n@NgModule({\r\n declarations: [ShareButtonComponent],\r\n imports: [\r\n ShareIconsModule,\r\n ShareButtonsPopupModule,\r\n OverlayModule,\r\n FontAwesomeModule,\r\n ],\r\n exports: [\r\n ShareButtonComponent,\r\n ShareIconsModule,\r\n ShareButtonsPopupModule,\r\n OverlayModule,\r\n FontAwesomeModule,\r\n ]\r\n})\r\nexport class ShareButtonModule {\r\n constructor(library: FaIconLibrary) {\r\n library.addIconPacks(fas);\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { ToastrModule } from 'ngx-toastr';\r\nimport { DropzoneModule } from 'ngx-dropzone-wrapper';\r\nimport { NgxCaptchaModule } from 'ngx-captcha';\r\nimport { PipesModule } from './pipes/pipes.module';\r\nimport { NgbDatepickerModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\n\r\nimport { TextInputComponent } from './ipa-form/text-input/text-input.component';\r\nimport { TextareaInputComponent } from './ipa-form/textarea-input/textarea-input.component';\r\nimport { DropdownInputComponent } from './ipa-form/dropdown-input/dropdown-input.component';\r\nimport { LoaderComponent } from './core/components/loading/loading.component';\r\nimport { GenerateFormComponent } from './generate-form/generate-form.component';\r\nimport { FileUploadComponent } from './ipa-form/file-upload/file-upload.component';\r\nimport { DatepickerComponent } from './ipa-form/datepicker/datepicker.component';\r\nimport { HijriDatepickerComponent } from './ipa-form/datepicker/hijri-datepicker/hijri-datepicker.component';\r\nimport { GregorianDatepickerComponent } from './ipa-form/datepicker/gregorian-datepicker/gregorian-datepicker.component';\r\nimport { ShareButtonModule } from './share-button/share-button.module';\r\nimport { RecaptchaComponent } from './ipa-form/recaptcha/recaptcha.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n TextInputComponent,\r\n TextareaInputComponent,\r\n DropdownInputComponent,\r\n LoaderComponent,\r\n GenerateFormComponent,\r\n FileUploadComponent,\r\n DatepickerComponent,\r\n HijriDatepickerComponent,\r\n GregorianDatepickerComponent,\r\n RecaptchaComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n ToastrModule,\r\n DropzoneModule,\r\n NgxCaptchaModule,\r\n PipesModule,\r\n NgbDatepickerModule,\r\n ShareButtonModule,\r\n NgSelectModule,\r\n ],\r\n exports: [\r\n TextInputComponent,\r\n TextareaInputComponent,\r\n DropdownInputComponent,\r\n LoaderComponent,\r\n GenerateFormComponent,\r\n FileUploadComponent,\r\n PipesModule,\r\n HijriDatepickerComponent,\r\n GregorianDatepickerComponent,\r\n ShareButtonModule,\r\n RecaptchaComponent,\r\n ],\r\n})\r\nexport class NgIPALibraryModule {}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n HttpRequest,\r\n HttpHandler,\r\n HttpEvent,\r\n HttpInterceptor,\r\n HttpResponse,\r\n} from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { LoaderService } from '../services/loader.service';\r\n\r\n@Injectable()\r\nexport class LoadingInterceptor implements HttpInterceptor {\r\n private requests: HttpRequest<any>[] = [];\r\n\r\n constructor(private loaderService: LoaderService) {}\r\n\r\n removeRequest(req: HttpRequest<any>): void {\r\n const i = this.requests.indexOf(req);\r\n if (i >= 0) {\r\n this.requests.splice(i, 1);\r\n }\r\n this.loaderService.isLoading.next(this.requests.length > 0);\r\n }\r\n\r\n intercept(\r\n req: HttpRequest<unknown>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<unknown>> {\r\n if (this.isException(req)) {\r\n return next.handle(req);\r\n }\r\n this.requests.push(req);\r\n\r\n this.loaderService.isLoading.next(true);\r\n return new Observable((observer) => {\r\n const subscription = next.handle(req).subscribe(\r\n (event) => {\r\n if (event instanceof HttpResponse) {\r\n this.removeRequest(req);\r\n observer.next(event);\r\n }\r\n },\r\n (err) => {\r\n this.removeRequest(req);\r\n observer.error(err);\r\n },\r\n () => {\r\n this.removeRequest(req);\r\n observer.complete();\r\n }\r\n );\r\n // remove request from queue when cancelled\r\n return () => {\r\n this.removeRequest(req);\r\n subscription.unsubscribe();\r\n };\r\n });\r\n }\r\n\r\n isException(req: HttpRequest<any>): boolean {\r\n for (const url of this.loaderService.urls) {\r\n if (req.url.includes(url.path) && req.method === url.method) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n","import { HttpRequest } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { ExceptionUrl } from '../../models/exceptionUrl.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ErrorService {\r\n urls: ExceptionUrl[] = [];\r\n constructor() {}\r\n\r\n setExceptionUrls(urls: ExceptionUrl[]) {\r\n this.urls = urls;\r\n }\r\n\r\n addExceptionUrl(url: ExceptionUrl) {\r\n this.urls.push(url);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n HttpRequest,\r\n HttpHandler,\r\n HttpEvent,\r\n HttpInterceptor,\r\n} from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { ErrorService } from '../services/error.service';\r\nimport { ApiException } from '../../models/apiException';\r\nimport { IndividualConfig, ToastrService } from 'ngx-toastr';\r\n\r\n@Injectable()\r\nexport class ErrorInterceptor implements HttpInterceptor {\r\n constructor(\r\n private errorService: ErrorService,\r\n private toastrService: ToastrService\r\n ) {}\r\n\r\n intercept(\r\n req: HttpRequest<unknown>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<unknown>> {\r\n if (this.isException(req)) {\r\n return next.handle(req);\r\n }\r\n\r\n return next.handle(req).pipe(\r\n catchError((error) => {\r\n const response = error.error as ApiException;\r\n const toastrConfig: Partial<IndividualConfig> = {\r\n disableTimeOut: true,\r\n closeButton: true,\r\n tapToDismiss: false,\r\n };\r\n switch (response.statusCode) {\r\n case 500:\r\n const msg =\r\n response.innerException + ' ' + (response.stackTrace ?? '');\r\n const toastr = this.toastrService.error(\r\n msg,\r\n response.message,\r\n toastrConfig\r\n );\r\n toastr.onShown.subscribe(() => {\r\n this.addCopyButton(response.message + '\\n' + msg);\r\n });\r\n break;\r\n\r\n default:\r\n this.toastrService.error('', response.message, toastrConfig);\r\n break;\r\n }\r\n return throwError(error);\r\n })\r\n );\r\n }\r\n\r\n isException(req: HttpRequest<any>): boolean {\r\n for (const url of this.errorService.urls) {\r\n if (req.url.includes(url.path) && req.method === url.method) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n private addCopyButton(message: string) {\r\n const messageToast = document.getElementsByClassName(\r\n 'toast-message'\r\n )[0] as HTMLDivElement;\r\n const icon = document.createElement('i');\r\n icon.classList.add('ms-2', 'fas', 'fa-copy');\r\n icon.addEventListener('click', () => {\r\n this.copyToClipboard(message);\r\n });\r\n messageToast.appendChild(icon);\r\n }\r\n\r\n private copyToClipboard(message: string) {\r\n navigator.clipboard.writeText(message);\r\n this.toastrService.success('تم نسخ الرسالة إلى الحافظة', '', {\r\n positionClass: 'toast-bottom-right',\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { DecodedToken } from '../../models/decodedToken.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AuthService {\r\n public currentUser = new BehaviorSubject<DecodedToken>({ exp: 0 });\r\n currentUserUrl = '';\r\n constructor() {}\r\n\r\n getToken(): string {\r\n return localStorage.getItem('token') ?? '';\r\n }\r\n\r\n getDecodedToken(): any {\r\n return this.decodeJwt(this.getToken());\r\n }\r\n\r\n setCurrentUser(): void {\r\n const decodedToken = this.getDecodedToken() as DecodedToken;\r\n this.currentUser.next({\r\n nameid: decodedToken.nameid,\r\n email: decodedToken.email,\r\n given_name: decodedToken.given_name,\r\n exp: decodedToken.exp,\r\n });\r\n }\r\n\r\n getTokenFromHidden(): string {\r\n return (\r\n (document.querySelector('[id$=hfToken]') as HTMLInputElement).value ?? ''\r\n );\r\n }\r\n\r\n getDecodedTokenFromHidden(): any {\r\n return this.decodeJwt(this.getTokenFromHidden());\r\n }\r\n\r\n setCurrentUserFromHidden(): void {\r\n const decodedToken = this.getDecodedTokenFromHidden() as DecodedToken;\r\n this.currentUser.next({\r\n nameid: decodedToken.nameid?.split('\\\\')[1],\r\n email: decodedToken.email,\r\n given_name: decodedToken.given_name,\r\n exp: decodedToken.exp,\r\n });\r\n }\r\n\r\n setCurrentUserUrl(url: string) {\r\n this.currentUserUrl = url;\r\n }\r\n\r\n private decodeJwt(token: string): any {\r\n const base64Url = token.split('.')[1];\r\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\r\n const jsonPayload = decodeURIComponent(\r\n atob(base64)\r\n .split('')\r\n .map((c) => {\r\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\r\n })\r\n .join('')\r\n );\r\n return JSON.parse(jsonPayload);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\nimport { ExceptionUrl } from '../../models/exceptionUrl.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TokenService {\n urls: ExceptionUrl[] = [];\n constructor() {}\n\n setExceptionUrls(urls: ExceptionUrl[]) {\n this.urls = urls;\n }\n\n addExceptionUrl(url: ExceptionUrl) {\n this.urls.push(url);\n }\n}\n","import { Injectable } from '@angular/core';\r\nimport {\r\n HttpRequest,\r\n HttpHandler,\r\n HttpEvent,\r\n HttpInterceptor,\r\n HttpClient,\r\n} from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { AuthService } from '../services/auth.service';\r\nimport { DecodedToken } from '../../models/decodedToken.model';\r\nimport { User } from '../../models/user.model';\r\nimport { LoaderService } from '../services/loader.service';\r\nimport { TokenService } from '../services/token.service';\r\n\r\n@Injectable()\r\nexport class TokenInterceptor implements HttpInterceptor {\r\n refresh = true;\r\n constructor(\r\n private authService: AuthService,\r\n private http: HttpClient,\r\n private loaderService: LoaderService,\r\n private tokenService: TokenService\r\n ) {\r\n this.loaderService.addExceptionUrl({\r\n path: '/api/users?refresh',\r\n method: 'GET',\r\n });\r\n this.tokenService.addExceptionUrl({\r\n path: '/api/users?refresh',\r\n method: 'GET',\r\n });\r\n }\r\n\r\n intercept(\r\n request: HttpRequest<unknown>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<unknown>> {\r\n if (this.isException(request)) {\r\n return next.handle(request);\r\n }\r\n const token = this.authService.getToken();\r\n if (token) {\r\n this.isTokenExpired(token);\r\n request = request.clone({\r\n setHeaders: {\r\n Authorization: `Bearer ${token}`,\r\n },\r\n });\r\n }\r\n return next.handle(request);\r\n }\r\n\r\n private isTokenExpired(token: string) {\r\n const redirectPath = location.pathname;\r\n const decodedToken = this.authService.getDecodedToken() as DecodedToken;\r\n const expDate = new Date((decodedToken.exp ?? 0) * 1000);\r\n if (expDate < new Date()) {\r\n location.replace('/ar/login?redirect=' + redirectPath);\r\n return;\r\n } else {\r\n if (this.authService.currentUserUrl) {\r\n if (this.refresh) {\r\n this.http\r\n .get<User>(this.authService.currentUserUrl + `users?refresh`, {\r\n headers: { Authorization: `Bearer ${token}` },\r\n })\r\n .subscribe((user) => {\r\n localStorage.setItem('token', user.token);\r\n this.refresh = false;\r\n setTimeout(() => {\r\n this.refresh = true;\r\n }, 60 * 1000);\r\n });\r\n }\r\n } else {\r\n throw new Error(\r\n \"provide current base user api url using this function authService.setCurrentUserUrl('https://...')\"\r\n );\r\n }\r\n }\r\n }\r\n\r\n isException(req: HttpRequest<any>): boolean {\r\n for (const url of this.tokenService.urls) {\r\n if (req.url.includes(url.path) && req.method === url.method) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n HttpRequest,\r\n HttpHandler,\r\n HttpEvent,\r\n HttpInterceptor,\r\n} from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { AuthService } from '../services/auth.service';\r\n\r\n@Injectable()\r\nexport class myIPATokenInterceptor implements HttpInterceptor {\r\n constructor(private authService: AuthService) {}\r\n\r\n intercept(\r\n request: HttpRequest<unknown>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<unknown>> {\r\n const token = this.authService.getTokenFromHidden();\r\n if (token) {\r\n request = request.clone({\r\n setHeaders: {\r\n Authorization: `Bearer ${token}`,\r\n },\r\n });\r\n }\r\n return next.handle(request);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Breadcrumbs } from '../models/breadcrumbs.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class BreadcrumbsService {\r\n constructor() {}\r\n\r\n setPageTitle(text: string) {\r\n const titleEl = document.querySelector('.sub-section-title');\r\n if (titleEl) {\r\n titleEl.textContent = text;\r\n }\r\n }\r\n\r\n setMainPageTitle(text: string, url: string) {\r\n const div = document.getElementsByClassName('main-section-title');\r\n if (div && div.length > 0) {\r\n div[0].innerHTML = `<a id=\"site-url\" href=\"${url}\">${text}</a>`;\r\n }\r\n }\r\n\r\n addBreadcrumb(\r\n nodeName: string,\r\n spanClasses = 'bc-current',\r\n linkClasses = 'bc-node'\r\n ) {\r\n const spans = document.getElementById('ctl00_path')?.children;\r\n //get last child\r\n const lastIndex = spans?.item(spans.length - 1) as HTMLSpanElement;\r\n const innerHTML = lastIndex.innerHTML;\r\n lastIndex.innerHTML = '';\r\n lastIndex.classList.remove(...['bc-current']);\r\n //add new link\r\n lastIndex.appendChild(\r\n this.createLink(innerHTML, location.pathname, linkClasses)\r\n );\r\n //add new span and empty span\r\n const newSpan = this.createSpan(nodeName, spanClasses);\r\n const emptySpan = document.createElement('span');\r\n lastIndex.after(...[emptySpan, newSpan]);\r\n }\r\n\r\n addBreadcrumbList(\r\n nodeList: Breadcrumbs[],\r\n spanClasses = 'bc-current',\r\n linkClasses = 'bc-node'\r\n ) {\r\n const spans = document.getElementById('ctl00_path')?.childNodes;\r\n //get last child\r\n const lastSpan = spans?.item(spans.length - 1) as HTMLSpanElement;\r\n const innerHTML = lastSpan.innerHTML;\r\n lastSpan.classList.remove(...[spanClasses]);\r\n lastSpan.innerHTML = '';\r\n //add new link\r\n lastSpan.appendChild(\r\n this.createLink(innerHTML, location.pathname, linkClasses)\r\n );\r\n\r\n for (let i = 0; i < nodeList.length; i++) {\r\n const lastIndex = spans?.item(spans.length - 1) as HTMLSpanElement;\r\n if (nodeList[i].nodeUrl) {\r\n const newSpan = document.createElement('span');\r\n newSpan.appendChild(\r\n this.createLink(\r\n nodeList[i].nodeName,\r\n nodeList[i].nodeUrl,\r\n linkClasses\r\n )\r\n );\r\n const emptySpan = document.createElement('span');\r\n lastIndex.after(...[emptySpan, newSpan]);\r\n } else {\r\n const newSpan = this.createSpan(nodeList[i].nodeName, spanClasses);\r\n const emptySpan = document.createElement('span');\r\n lastIndex.after(...[emptySpan, newSpan]);\r\n }\r\n }\r\n }\r\n\r\n createBreadcrumbs(\r\n nodeList: Breadcrumbs[],\r\n spanClasses = 'bc-current',\r\n linkClasses = 'bc-node'\r\n ) {\r\n const currentSpan = document.getElementById(\r\n 'ctl00_path'\r\n ) as HTMLSpanElement;\r\n currentSpan.innerHTML = '';\r\n const newSpan = document.createElement('span');\r\n currentSpan?.appendChild(newSpan);\r\n newSpan.appendChild(\r\n this.createLink(nodeList[0].nodeName, nodeList[0].nodeUrl, linkClasses)\r\n );\r\n const spans = currentSpan?.children;\r\n for (let i = 1; i < nodeList.length; i++) {\r\n const lastIndex = spans?.item(spans.length - 1) as HTMLSpanElement;\r\n if (nodeList[i].nodeUrl) {\r\n const newSpan = document.createElement('span');\r\n newSpan.appendChild(\r\n this.createLink(\r\n nodeList[i].nodeName,\r\n nodeList[i].nodeUrl,\r\n linkClasses\r\n )\r\n );\r\n const emptySpan = document.createElement('span');\r\n lastIndex?.after(...[emptySpan, newSpan]);\r\n } else {\r\n const newSpan = this.createSpan(nodeList[i].nodeName, spanClasses);\r\n const emptySpan = document.createElement('span');\r\n lastIndex.after(...[emptySpan, newSpan]);\r\n }\r\n }\r\n }\r\n\r\n removeLastBreadcrumb() {\r\n const spans = document.getElementById('ctl00_path')?.children;\r\n spans?.item(spans.length - 1)?.remove();\r\n spans?.item(spans.length - 1)?.remove();\r\n this.setCurrentNode(spans);\r\n }\r\n\r\n removeBreadcrumbByNodeName(nodeName: string) {\r\n const spans = document.getElementById('ctl00_path')\r\n ?.children as HTMLCollection;\r\n let index = -1;\r\n for (let i = 0; i < spans.length; i++) {\r\n const span = spans.item(i);\r\n if (span?.textContent?.trim() === nodeName) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n const lastNode = spans.length - 1 === index;\r\n if (index !== -1 && !lastNode) {\r\n spans?.item(index)?.remove();\r\n spans?.item(index)?.remove();\r\n } else {\r\n spans?.item(index)?.remove();\r\n spans?.item(index - 1)?.remove();\r\n }\r\n if (lastNode) {\r\n this.setCurrentNode(spans);\r\n }\r\n }\r\n\r\n removeLastBreadcrumbsByLength(length: number) {\r\n const spans = document.getElementById('ctl00_path')\r\n ?.children as HTMLCollection;\r\n while (length > 0) {\r\n spans?.item(spans.length - 1)?.remove();\r\n spans?.item(spans.length - 1)?.remove();\r\n length--;\r\n }\r\n if (spans.length > 0) {\r\n this.setCurrentNode(spans);\r\n }\r\n }\r\n\r\n private createLink(\r\n innerHTML: string,\r\n href: string | null,\r\n classes: string\r\n ): HTMLAnchorElement {\r\n const link = document.createElement('a');\r\n link.innerHTML = ' ' + innerHTML;\r\n link.href = href ?? '';\r\n link.classList.add(...[classes]);\r\n return link;\r\n }\r\n\r\n private createSpan(innerHTML: string, classes: string): HTMLSpanElement {\r\n const span = document.createElement('span');\r\n span.classList.add(...[classes]);\r\n span.innerHTML = ' ' + innerHTML;\r\n return span;\r\n }\r\n\r\n private setCurrentNode(spans?: HTMLCollection) {\r\n const lastSpan = spans?.item(spans.length - 1) as HTMLSpanElement;\r\n const lastSpanLink = spans\r\n ?.item(spans.length - 1)\r\n ?.children.item(0) as HTMLAnchorElement;\r\n lastSpan?.classList.add(...['bc-current']);\r\n lastSpan.innerHTML = lastSpanLink.innerHTML;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class CommonService {\r\n constructor() {}\r\n\r\n print(element: string, title: string, classes?: string) {\r\n const styles = this.getElementTag('style');\r\n const linkes = this.getElementTag('link');\r\n const scripts = this.getElementTag('script');\r\n\r\n const printContents = document.getElementById(element)?.innerHTML;\r\n const popupWin = window.open('', '', 'top=0,left=0,height=100%,width=auto');\r\n const data = `\r\n <!DOCTYPE html>\r\n <head>\r\n <title> ${title} </title>\r\n <meta charset=\"utf-8\">\r\n ${linkes}\r\n ${styles}\r\n <style>\r\n @media print {\r\n .noPrint{\r\n display: none !important;\r\n }\r\n body {\r\n direction: rtl;\r\n }\r\n }\r\n </style>\r\n </head>\r\n <body class=\"${classes}\">\r\n ${printContents}\r\n ${scripts}\r\n </body>\r\n\r\n </html>`;\r\n popupWin?.document.open();\r\n popupWin?.document.write(data);\r\n popupWin?.document.close();\r\n popupWin?.focus();\r\n popupWin?.addEventListener('focus', () => {\r\n setTimeout(() => {\r\n if (popupWin.document.hasFocus()) {\r\n popupWin.print();\r\n popupWin.close();\r\n }\r\n }, 1000);\r\n });\r\n }\r\n\r\n private getElementTag(tag: keyof HTMLElementTagNameMap): string {\r\n const html: string[] = [];\r\n const elements = document.getElementsByTagName(tag);\r\n for (let index = 0; index < elements.length; index++) {\r\n html.push(elements[index].outerHTML);\r\n }\r\n\r\n return html.join('\\r\\n');\r\n }\r\n}\r\n","/*\r\n * Public API Surface of ipa-library\r\n */\r\n// module\r\nexport * from './lib/ng-ipa-library.module';\r\nexport * from 'ngx-toastr';\r\nexport * from '@ng-select/ng-select';\r\nexport * from './lib/pipes/pipes.module';\r\nexport * from './lib/share-button/share-button.module';\r\n\r\n// core components\r\nexport * from './lib/core/components/loading/loading.component';\r\n\r\n// form components\r\nexport * from './lib/ipa-form/text-input/text-input.component';\r\nexport * from './lib/ipa-form/textarea-input/textarea-input.component';\r\nexport * from './lib/ipa-form/dropdown-input/dropdown-input.component';\r\nexport * from './lib/ipa-form/file-upload/file-upload.component';\r\nexport * from './lib/ipa-form/datepicker/hijri-datepicker/hijri-datepicker.component';\r\nexport * from './lib/ipa-form/datepicker/gregorian-datepicker/gregorian-datepicker.component';\r\nexport * from './lib/ipa-form/recaptcha/recaptcha.component';\r\nexport * from './lib/generate-form/generate-form.component';\r\nexport * from './lib/share-button/share-button.component';\r\n\r\n// interceptors\r\nexport * from './lib/core/interceptors/loading.interceptor';\r\nexport * from './lib/core/interceptors/error.interceptor';\r\nexport * from './lib/core/interceptors/token.interceptor';\r\nexport * from './lib/core/interceptors/myIPAToken.interceptor';\r\n\r\n// services\r\nexport * from './lib/core/services/loader.service';\r\nexport * from './lib/core/services/error.service';\r\nexport * from './lib/core/services/token.service';\r\nexport * from './lib/core/services/auth.service';\r\nexport * from './lib/ipa-form/ipa-form.service';\r\nexport * from './lib/services/breadcrumbs.service';\r\nexport * from './lib/services/common.service';\r\n\r\n//pipes\r\nexport * from './lib/pipes/hijri-date.pipe';\r\n\r\n//models\r\nexport * from './lib/models/pagedResult';\r\nexport * from './lib/models/apiException';\r\nexport * from './lib/models/apiResponse';\r\nexport * from './lib/models/generateForm.model';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["WEEKDAYS","MONTHS"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng-ipa-library.mjs","sources":["../../../projects/ng-ipa-library/src/lib/pipes/hijri-date.pipe.ts","../../../projects/ng-ipa-library/src/lib/pipes/pipes.module.ts","../../../projects/ng-ipa-library/src/lib/ipa-form/ipa-form.service.ts","../../../projects/ng-ipa-library/src/lib/ipa-form/text-input/text-input.component.ts","../../../projects/ng-ipa-library/src/lib/ipa-form/text-input/text-input.component.html","../../../projects/ng-ipa-library/src/lib/ipa-form/textarea-input/textarea-input.component.ts","../../../projects/ng-ipa-library/src/lib/ipa-form/textarea-input/textarea-input.component.html","../../../projects/ng-ipa-library/src/lib/ipa-form/dropdown-input/dropdown-input.component.ts","../../../projects/ng-ipa-library/src/lib/ipa-form/dropdown-input/dropdown-input.component.html","../../../projects/ng-ipa-library/src/lib/core/services/loader.service.ts","../../../projects/ng-ipa-library/src/lib/core/components/loading/loading.component.ts","../../../projects/ng-ipa-library/src/lib/core/components/loading/loading.component.html","../../../projects/ng-ipa-library/src/lib/ipa-form/file-upload/file-upload.component.ts","../../../projects/ng-ipa-library/src/lib/ipa-form/file-upload/file-upload.component.html","../../../projects/ng-ipa-library/src/lib/ipa-form/recaptcha/recaptcha.component.ts","../../../projects/ng-ipa-library/src/lib/ipa-form/recaptcha/recaptcha.component.html","../../../projects/ng-ipa-library/src/lib/generate-form/generate-form.component.ts","../../../projects/ng-ipa-library/src/lib/generate-form/generate-form.component.html","../../../projects/ng-ipa-library/src/lib/ipa-form/datepicker/datepicker.component.ts","../../../projects/ng-ipa-library/src/lib/ipa-form/datepicker/datepicker.component.html","../../../projects/ng-ipa-library/src/lib/ipa-form/datepicker/hijri-datepicker/IslamicI18n.ts","../../../projects/ng-ipa-library/src/lib/ipa-form/datepicker/hijri-datepicker/hijri-datepicker.component.ts","../../../projects/ng-ipa-library/src/lib/ipa-form/datepicker/gregorian-datepicker/gregorian18n.ts","../../../projects/ng-ipa-library/src/lib/ipa-form/datepicker/gregorian-datepicker/gregorian-datepicker.component.ts","../../../projects/ng-ipa-library/src/lib/share-button/share-button.component.ts","../../../projects/ng-ipa-library/src/lib/share-button/share-button.component.html","../../../projects/ng-ipa-library/src/lib/share-button/share-button.module.ts","../../../projects/ng-ipa-library/src/lib/ng-ipa-library.module.ts","../../../projects/ng-ipa-library/src/lib/core/interceptors/loading.interceptor.ts","../../../projects/ng-ipa-library/src/lib/core/services/error.service.ts","../../../projects/ng-ipa-library/src/lib/core/interceptors/error.interceptor.ts","../../../projects/ng-ipa-library/src/lib/core/services/auth.service.ts","../../../projects/ng-ipa-library/src/lib/core/services/token.service.ts","../../../projects/ng-ipa-library/src/lib/core/interceptors/token.interceptor.ts","../../../projects/ng-ipa-library/src/lib/core/interceptors/myIPAToken.interceptor.ts","../../../projects/ng-ipa-library/src/lib/services/breadcrumbs.service.ts","../../../projects/ng-ipa-library/src/lib/services/common.service.ts","../../../projects/ng-ipa-library/src/public-api.ts","../../../projects/ng-ipa-library/src/ng-ipa-library.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\r\nimport momentHijri from 'moment-hijri';\r\n@Pipe({\r\n name: 'hijriDate',\r\n})\r\nexport class HijriDatePipe implements PipeTransform {\r\n transform(\r\n date: string,\r\n format: string = 'iYYYY-iMM-iDD',\r\n lang: 'ar' | 'en' = 'en'\r\n ): string {\r\n momentHijri.locale(lang);\r\n return momentHijri(date).format(format);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { HijriDatePipe } from './hijri-date.pipe';\r\n\r\n@NgModule({\r\n declarations: [HijriDatePipe],\r\n exports: [HijriDatePipe],\r\n})\r\nexport class PipesModule {}\r\n","import { Injectable } from '@angular/core';\r\nimport { AbstractControl, FormControl, ValidationErrors } from '@angular/forms';\r\nimport momentHijri from 'moment-hijri';\r\nimport { Moment } from 'moment';\r\nimport { NgbDateParserFormatter } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IPAFormService {\r\n constructor(private parserFormatter: NgbDateParserFormatter) {}\r\n\r\n /**\r\n * check link is valid.\r\n */\r\n static linkValidation(control: AbstractControl): ValidationErrors | null {\r\n const isValidLink =\r\n /^((https?:\\/\\/)[\\w-]+(\\.[a-z-]+)+\\.?(:\\d+)?(\\/\\S*)?)$/.test(\r\n control.value\r\n );\r\n return isValidLink || !control.value ? null : { link: true };\r\n }\r\n\r\n /**\r\n * check mp4 link is valid.\r\n */\r\n static mp4LinkValidation(control: AbstractControl): ValidationErrors | null {\r\n const isValidLink =\r\n /^((https?:\\/\\/)[\\w-]+(\\.[a-z-]+)+\\.?(:\\d+)?(\\/\\S*)?(\\/[\\w\\u0600-\\u06FF]+\\.mp4))$/.test(\r\n control.value\r\n );\r\n return isValidLink || !control.value ? null : { linkMP4: true };\r\n }\r\n\r\n /**\r\n * check mobile number is valid.\r\n */\r\n static mobileNo(control: AbstractControl): ValidationErrors | null {\r\n const isValidLink = /^05\\d{8}$/.test(control.value);\r\n return isValidLink || !control.value ? null : { mobileNo: true };\r\n }\r\n\r\n /**\r\n * check email is valid.\r\n */\r\n static email(control: AbstractControl): ValidationErrors | null {\r\n const isValidLink =\r\n /^(([^<>()[\\]\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@(([^<>()[\\]\\.,;:\\s@\\\"]+\\.)+[^<>()[\\]\\.,;:\\s@\\\"]{2,})$/.test(\r\n control.value\r\n );\r\n return isValidLink || !control.value ? null : { Email: true };\r\n }\r\n\r\n /**\r\n * check national ID or iqama ID is valid.\r\n */\r\n static checkID(control: AbstractControl): ValidationErrors | null {\r\n let isValid = false;\r\n const value = control.value;\r\n if (\r\n IPAFormService.nationalIdValidate(value) ||\r\n IPAFormService.iqamaIdValidate(value)\r\n ) {\r\n isValid = true;\r\n } else {\r\n isValid = false;\r\n }\r\n return isValid || !value ? null : { checkId: true };\r\n }\r\n\r\n getErrorMessage(\r\n control: FormControl,\r\n patternErrorMsg = '',\r\n isArabic: boolean\r\n ): string | null {\r\n for (const propertyName in control?.errors) {\r\n if (\r\n control?.errors.hasOwnProperty(propertyName) &&\r\n (control.touched || control.dirty)\r\n ) {\r\n return this.getValidatorErrorMessage(\r\n propertyName,\r\n control.errors[propertyName],\r\n patternErrorMsg,\r\n isArabic\r\n );\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * convert gregorian date to hijri date (Based on Umm al-Qura calculations).\r\n * @param date: gregorian date\r\n * @param format: iDD => day: ١٥, iMM => month: ٠٤, iMMM => month: ربيع ٢,\r\n * iMMMM => ربيع الثاني, iYY => year: ٤٢, iYYYY => year: ١٤٤٢,\r\n * dd => ن, ddd => إثنين, dddd => الإثنين\r\n * @example 'iYYYY/iM/iDهـ الموافق YYYY/M/Dم'\r\n * '١٤٤٢/٠٤/١٥هـ الموافق ٢٠٢٠/١١/٣٠'\r\n */\r\n convertToHijriDate(\r\n date: string,\r\n format = 'iYYYY-iMM-iDD',\r\n lang = 'ar-SA'\r\n ): string {\r\n momentHijri.locale(lang);\r\n return momentHijri(date).format(format);\r\n }\r\n\r\n convertToGregorianDate(\r\n date: Moment,\r\n format = 'YYYY-MM-DD',\r\n lang = 'en'\r\n ): string {\r\n momentHijri.locale(lang);\r\n const m = momentHijri.iConvert.toGregorian(\r\n date.year(),\r\n date.month(),\r\n date.date()\r\n );\r\n return momentHijri(new Date(m.gy, m.gm, m.gd)).format(format);\r\n }\r\n\r\n getCurrentHijriDate() {\r\n momentHijri.locale('en');\r\n return momentHijri().format('iYYYY/iMM/iDD');\r\n }\r\n\r\n private getValidatorErrorMessage(\r\n validatorName: string,\r\n validatorValue: any,\r\n patternErrorMsg: string,\r\n isArabic: boolean\r\n ): string {\r\n if (validatorName === 'pattern') {\r\n validatorValue = this.addPatternMsg(validatorValue, patternErrorMsg);\r\n }\r\n const config: any = {\r\n required: isArabic ? 'هذا الحقل مطلوب' : 'this field required',\r\n pattern: `${validatorValue.message}`,\r\n Email:\r\n (isArabic ? 'خطأ في البريد الالكتروني ' : 'Invalid email ') +\r\n '(example@example.com)',\r\n maxlength: isArabic\r\n ? `تجاوز عدد الحقل المسموح بها (${validatorValue.requiredLength}) حرف`\r\n : `this field is more than (${validatorValue.requiredLength}) letter`,\r\n minlength: isArabic\r\n ? `على الأقل عدد ${validatorValue.requiredLength} حرف`\r\n : `this field is less than (${validatorValue.requiredLength}) letter`,\r\n min: isArabic\r\n ? `رقم اكبر من أو يساوي ${validatorValue.min}`\r\n : `number more than or equal (${validatorValue.min})`,\r\n max: isArabic\r\n ? `رقم اصغر من أو يساوي ${validatorValue.max}`\r\n : `number less than or equal (${validatorValue.min})`,\r\n ngbDate: this.getNgbDatepickerErrorMsg(validatorValue),\r\n checkId: isArabic\r\n ? 'رقم الهوية أو الاقامة غير صحيح'\r\n : 'Wrong ID or Iqama number',\r\n link:\r\n (isArabic ? 'الرابط غير صحيح ' : 'Wrong link ') +\r\n '(http://example.com)',\r\n linkMP4:\r\n (isArabic ? 'رابط MP4 غير صحيح ' : 'Wrong MP4 link ') +\r\n '(http://example.com/example.mp4)',\r\n mobileNo:\r\n (isArabic ? 'خطأ في رقم الجوال ' : 'Wrong mobile number ') +\r\n '(05xxxxxxxx)',\r\n };\r\n return config[validatorName];\r\n }\r\n\r\n private addPatternMsg(validatorValue: any, patternErrorMsg: string) {\r\n let pattern = {\r\n ...validatorValue,\r\n message: patternErrorMsg,\r\n };\r\n return pattern;\r\n }\r\n\r\n private getNgbDatepickerErrorMsg(validatorValue: any): string {\r\n let msg = '';\r\n if (validatorValue.maxDate) {\r\n msg = `التاريخ المدخل \"${this.parserFormatter.format(\r\n validatorValue.maxDate.actual\r\n )}\" اكبر من تاريخ اليوم \"${this.parserFormatter.format(\r\n validatorValue.maxDate.maxDate\r\n )}\"`;\r\n } else if (validatorValue.minDate) {\r\n msg = `التاريخ المدخل \"${this.parserFormatter.format(\r\n validatorValue.minDate.actual\r\n )}\" يجب ان يكون اكبر من أو يساوي تاريخ البداية \"${this.parserFormatter.format(\r\n validatorValue.minDate.minDate\r\n )}\"`;\r\n } else if (validatorValue.invalid) {\r\n msg = `التاريخ المدخل غير صحيح ${validatorValue.invalid}.`;\r\n }\r\n return msg;\r\n }\r\n\r\n private static convertToEn(value: string) {\r\n let newValue = '';\r\n for (let i = 0; i < value.length; i++) {\r\n let ch = value.charCodeAt(i);\r\n if (ch >= 1584 && ch <= 1650) {\r\n let newChar = ch - 1584;\r\n newValue = newValue + String.fromCharCode(newChar);\r\n } else {\r\n newValue = newValue + String.fromCharCode(ch);\r\n }\r\n }\r\n return newValue;\r\n }\r\n\r\n private static nationalIdValidate(civilId: string): boolean {\r\n if (civilId) {\r\n let strID = this.convertToEn(civilId);\r\n let digits = '';\r\n let counter = 0;\r\n while (counter < 9) {\r\n if ((counter + 1) % 2 == 0) {\r\n digits = digits + strID.substring(counter, counter + 1);\r\n } else {\r\n digits =\r\n digits + (+strID.substring(counter, counter + 1) * 2).toString();\r\n }\r\n counter++;\r\n }\r\n let intSum = 0;\r\n let intSumTemp = 0;\r\n let strSum;\r\n let intOddSumDigit;\r\n let CheckDigit;\r\n counter = 0;\r\n while (counter < digits.length) {\r\n intSumTemp = +digits.charAt(counter) * 1;\r\n intSum += intSumTemp;\r\n counter++;\r\n }\r\n strSum = intSum.toString();\r\n if (strSum.length == 1) {\r\n intOddSumDigit = intSum;\r\n } else {\r\n intOddSumDigit = strSum.substring(strSum.length, strSum.length - 1);\r\n }\r\n if (intOddSumDigit == 0) {\r\n CheckDigit = 0;\r\n } else {\r\n CheckDigit = (10 - +intOddSumDigit).toString();\r\n }\r\n let PublicID = this.convertToEn(civilId);\r\n if (\r\n CheckDigit ==\r\n PublicID.substring(PublicID.length - 1, PublicID.length) &&\r\n strID.length == 10 &&\r\n strID.substring(0, 1) == '1'\r\n ) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n private static iqamaIdValidate(civilId: string): boolean {\r\n if (civilId) {\r\n let strID = this.convertToEn(civilId);\r\n let digits = '';\r\n let counter = 0;\r\n while (counter < 9) {\r\n if ((counter + 1) % 2 == 0) {\r\n digits = digits + strID.substring(counter, counter + 1);\r\n } else {\r\n digits =\r\n digits + (+strID.substring(counter, counter + 1) * 2).toString();\r\n }\r\n counter++;\r\n }\r\n let intSum = 0;\r\n let intSumTemp = 0;\r\n let strSum;\r\n let intOddSumDigit;\r\n let CheckDigit;\r\n counter = 0;\r\n while (counter < digits.length) {\r\n intSumTemp = +digits.charAt(counter) * 1;\r\n intSum += intSumTemp;\r\n counter++;\r\n }\r\n strSum = intSum.toString();\r\n if (strSum.length == 1) {\r\n intOddSumDigit = intSum;\r\n } else {\r\n intOddSumDigit = strSum.substring(strSum.length, strSum.length - 1);\r\n }\r\n if (intOddSumDigit == 0) {\r\n CheckDigit = 0;\r\n } else {\r\n CheckDigit = (10 - +intOddSumDigit).toString();\r\n }\r\n let PublicID = this.convertToEn(civilId);\r\n if (\r\n CheckDigit ==\r\n PublicID.substring(PublicID.length - 1, PublicID.length) &&\r\n strID.length == 10 &&\r\n strID.substring(0, 1) == '2'\r\n ) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n return false;\r\n }\r\n }\r\n}\r\n","import {\r\n AfterContentChecked,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n Input,\r\n OnInit,\r\n Self,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { FormControl, NgControl } from '@angular/forms';\r\nimport { IPAFormService } from '../ipa-form.service';\r\n\r\n@Component({\r\n selector: 'ipa-text-input',\r\n templateUrl: './text-input.component.html',\r\n styleUrls: ['./text-input.component.scss'],\r\n})\r\nexport class TextInputComponent implements OnInit, AfterContentChecked {\r\n @ViewChild('input', { static: true }) input!: ElementRef;\r\n @Input() id!: string;\r\n @Input() type = 'text';\r\n @Input() placeholder = 'please enter text';\r\n @Input() label: string = 'text input';\r\n @Input() required = false;\r\n @Input() patternErrorMsg = 'invalid pattern';\r\n @Input() onlyNumber = false;\r\n @Input() pattern = '';\r\n @Input() classes!: string;\r\n @Input() containerClasses!: string;\r\n @Input() isArabicForm = true;\r\n formControl: FormControl = new FormControl('');\r\n errorMsg!: string | null;\r\n\r\n constructor(\r\n private validationService: IPAFormService,\r\n @Self() public controlDir: NgControl,\r\n private cd: ChangeDetectorRef\r\n ) {\r\n this.controlDir.valueAccessor = this;\r\n }\r\n\r\n ngAfterContentChecked(): void {\r\n this.cd.detectChanges();\r\n }\r\n\r\n ngOnInit(): void {\r\n const control = this.controlDir.control;\r\n const validators = control?.validator ? [control.validator] : [];\r\n\r\n control?.setValidators(validators);\r\n control?.updateValueAndValidity();\r\n this.formControl = control as FormControl;\r\n }\r\n\r\n onChange(event: any): void {}\r\n\r\n onTouched(): void {}\r\n writeValue(obj: any): void {\r\n this.input.nativeElement.value = obj || '';\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n checkIsNumber(event: Event) {\r\n if (this.onlyNumber) {\r\n const initialValue = this.formControl.value;\r\n const newValue = initialValue.replace(/[^0-9]*/g, '');\r\n this.formControl.patchValue(newValue);\r\n this.formControl.markAsPristine();\r\n if (initialValue !== this.formControl.value) {\r\n event.stopPropagation();\r\n }\r\n }\r\n }\r\n\r\n get errorMessage(): string | null {\r\n this.errorMsg = this.validationService.getErrorMessage(\r\n this.formControl,\r\n this.patternErrorMsg,\r\n this.isArabicForm\r\n );\r\n return this.errorMsg;\r\n }\r\n}\r\n","<div class=\"form-floating {{containerClasses}}\">\r\n <input #input id=\"{{id}}\" class=\"form-control {{classes}}\" [type]=\"type\" [required]=\"required\" pattern=\"{{pattern}}\"\r\n placeholder=\"{{placeholder}}\" [formControl]=\"formControl\" (input)=\"onChange(controlDir.control?.value)\"\r\n (blur)=\"onTouched()\" (input)=\"checkIsNumber($event)\"\r\n [ngClass]=\"{'is-invalid is-invalid:focus': (controlDir.control?.invalid && (controlDir.control?.dirty || controlDir.control?.touched)) && errorMsg,'is-valid is-valid:focus': (controlDir.control?.valid && (controlDir.control?.dirty || controlDir.control?.touched) && (errorMsg || controlDir.value))}\">\r\n <label for=\"{{id}}\">{{label}}</label>\r\n <div class=\"invalid-feedback\" *ngIf=\"errorMessage !== null\">\r\n {{errorMsg}}\r\n </div>\r\n</div>","import {\r\n AfterContentChecked,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n Input,\r\n OnInit,\r\n Self,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { FormControl, NgControl } from '@angular/forms';\r\nimport { IPAFormService } from '../ipa-form.service';\r\n\r\n@Component({\r\n selector: 'ipa-textarea-input',\r\n templateUrl: './textarea-input.component.html',\r\n styleUrls: ['./textarea-input.component.scss'],\r\n})\r\nexport class TextareaInputComponent implements OnInit, AfterContentChecked {\r\n @ViewChild('input', { static: true }) input: ElementRef<any> =\r\n new ElementRef<any>(null);\r\n @Input() id!: string;\r\n @Input() placeholder = 'please enter text';\r\n @Input() label: string = 'textarea input';\r\n @Input() required = false;\r\n @Input() patternErrorMsg = 'invalid pattern';\r\n @Input() pattern!: string;\r\n @Input() classes!: string;\r\n @Input() containerClasses!: string;\r\n @Input() isArabicForm = true;\r\n formControl: FormControl = new FormControl('');\r\n errorMsg!: string | null;\r\n\r\n constructor(\r\n private validationService: IPAFormService,\r\n @Self() public controlDir: NgControl,\r\n private cd: ChangeDetectorRef\r\n ) {\r\n this.controlDir.valueAccessor = this;\r\n }\r\n\r\n ngAfterContentChecked(): void {\r\n this.cd.detectChanges();\r\n }\r\n\r\n ngOnInit(): void {\r\n const control = this.controlDir.control;\r\n const validators = control?.validator ? [control.validator] : [];\r\n\r\n control?.setValidators(validators);\r\n control?.updateValueAndValidity();\r\n this.formControl = control as FormControl;\r\n }\r\n\r\n onChange(event: any): void {}\r\n\r\n onTouched(): void {}\r\n writeValue(obj: any): void {\r\n this.input.nativeElement.value = obj || '';\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n get errorMessage(): string | null {\r\n this.errorMsg = this.validationService.getErrorMessage(\r\n this.formControl,\r\n this.patternErrorMsg,\r\n this.isArabicForm\r\n );\r\n return this.errorMsg;\r\n }\r\n}\r\n","<div class=\"form-floating {{containerClasses}}\">\r\n <textarea #input id=\"{{id}}\" class=\"form-control {{classes}}\" [required]=\"required\" pattern=\"{{pattern}}\"\r\n placeholder=\"{{placeholder}}\" [formControl]=\"formControl\" (input)=\"onChange(controlDir.control?.value)\"\r\n (blur)=\"onTouched()\" style=\"height: 135px;\"\r\n [ngClass]=\"{\r\n 'is-invalid is-invalid:focus': (controlDir.control?.invalid && (controlDir.control?.dirty || controlDir.control?.touched)) && errorMsg,\r\n 'is-valid is-valid:focus': (controlDir.control?.valid && (controlDir.control?.dirty || controlDir.control?.touched) && (errorMsg || controlDir.value))}\">\r\n </textarea>\r\n <label for=\"{{id}}\">{{label}}</label>\r\n <div class=\"invalid-feedback\" *ngIf=\"errorMessage !== null\">\r\n {{errorMsg}}\r\n </div>\r\n</div>","import {\r\n Component,\r\n ElementRef,\r\n Input,\r\n OnInit,\r\n Self,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { FormControl, NgControl } from '@angular/forms';\r\nimport { IPAFormService } from '../ipa-form.service';\r\n\r\n@Component({\r\n selector: 'ipa-dropdown-input',\r\n templateUrl: './dropdown-input.component.html',\r\n styleUrls: ['./dropdown-input.component.scss'],\r\n})\r\nexport class DropdownInputComponent implements OnInit {\r\n @ViewChild('select', { static: true }) input!: HTMLSelectElement;\r\n @Input() id!: string;\r\n @Input() label: string = 'text input';\r\n @Input() items: any[] = [];\r\n @Input() textField!: string;\r\n @Input() valueField!: string;\r\n @Input() required = false;\r\n @Input() firstItemLabel!: string;\r\n @Input() searchable = false;\r\n @Input() notFoundText = 'لا يوجد بيانات';\r\n @Input() classes!: string;\r\n @Input() containerClasses!: string;\r\n @Input() isArabicForm = true;\r\n @Input() fromGenerateForm = false;\r\n formControl: FormControl = new FormControl('');\r\n errorMsg!: string | null;\r\n\r\n constructor(\r\n private validationService: IPAFormService,\r\n @Self() public controlDir: NgControl\r\n ) {\r\n this.controlDir.valueAccessor = this;\r\n }\r\n\r\n ngOnInit(): void {\r\n const control = this.controlDir.control;\r\n const validators = control?.validator ? [control.validator] : [];\r\n\r\n control?.setValidators(validators);\r\n control?.updateValueAndValidity();\r\n this.formControl = control as FormControl;\r\n this.formControl.patchValue('');\r\n }\r\n\r\n onChange(event: any): void {}\r\n\r\n onTouched(): void {}\r\n writeValue(obj: any): void {\r\n if (this.input) this.input.value = obj || '';\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n get errorMessage(): string | null {\r\n this.errorMsg = this.validationService.getErrorMessage(\r\n this.formControl,\r\n '',\r\n this.isArabicForm\r\n );\r\n return this.errorMsg;\r\n }\r\n}\r\n","<div class=\"form-floating {{containerClasses}}\">\r\n <!-- searchable is false -->\r\n <ng-container *ngIf=\"!searchable\">\r\n <select #select id=\"{{id}}\" class=\"form-select {{classes}}\" [required]=\"required\" [formControl]=\"formControl\"\r\n [ngClass]=\"{'is-invalid is-invalid:focus': (controlDir.control?.invalid && (controlDir.control?.dirty || controlDir.control?.touched)) && errorMsg,'is-valid is-valid:focus': \r\n (controlDir.control?.valid && (controlDir.control?.dirty || controlDir.control?.touched) && (errorMsg || controlDir.value))}\">\r\n <option *ngIf=\"firstItemLabel\" value=\"\">{{firstItemLabel}}</option>\r\n <option *ngFor=\"let item of items\"\r\n [value]=\"valueField ? fromGenerateForm ? item[textField] : item[valueField] : item\">\r\n {{textField ? item[textField] : item}}\r\n </option>\r\n </select>\r\n <label for=\"{{id}}\">{{label}}</label>\r\n </ng-container>\r\n\r\n <!-- searchable is true -->\r\n <ng-select *ngIf=\"searchable\" #select dir=\"rtl\" class=\"{{classes}}\" [formControl]=\"formControl\" [items]=\"items\"\r\n [placeholder]=\"label\" [notFoundText]=\"notFoundText\" [required]=\"required\"\r\n [bindValue]=\"fromGenerateForm? textField : valueField\" [bindLabel]=\"textField\"\r\n [ngClass]=\"{'is-invalid is-invalid:focus': (controlDir.control?.invalid && (controlDir.control?.dirty || controlDir.control?.touched)) && errorMsg,'is-valid is-valid:focus': \r\n (controlDir.control?.valid && (controlDir.control?.dirty || controlDir.control?.touched) && (errorMsg || controlDir.value))}\">\r\n </ng-select>\r\n <div class=\"invalid-feedback\" *ngIf=\"errorMessage !== null\">\r\n {{errorMsg}}\r\n </div>\r\n</div>","import { HttpRequest } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { ExceptionUrl } from '../../models/exceptionUrl.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class LoaderService {\r\n public isLoading = new BehaviorSubject(false);\r\n urls: ExceptionUrl[] = [];\r\n constructor() {}\r\n\r\n setExceptionUrls(urls: ExceptionUrl[]) {\r\n this.urls = urls;\r\n }\r\n\r\n addExceptionUrl(url: ExceptionUrl) {\r\n this.urls.push(url);\r\n }\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n} from '@angular/core';\r\nimport { LoaderService } from '../../services/loader.service';\r\n\r\n@Component({\r\n selector: 'ipa-loader',\r\n templateUrl: './loading.component.html',\r\n styleUrls: ['./loading.component.scss'],\r\n})\r\nexport class LoaderComponent implements AfterViewInit {\r\n loading = true;\r\n @Input() isLocal = false;\r\n\r\n constructor(\r\n private loaderService: LoaderService,\r\n private cdr: ChangeDetectorRef\r\n ) {}\r\n\r\n ngAfterViewInit(): void {\r\n this.loaderService.isLoading.subscribe((v) => {\r\n this.loading = v;\r\n const loader = document.getElementById('cover-spin');\r\n if (loader) {\r\n if (this.loading) {\r\n loader.style.display = 'flex';\r\n } else {\r\n if (loader.style.display !== 'none') loader.style.display = 'none';\r\n }\r\n }\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n}\r\n","<div id=\"cover-spin\" *ngIf=\"loading && isLocal\">\r\n <div class=\"spinner\"></div>\r\n</div>\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport {\r\n DropzoneConfigInterface,\r\n DropzoneDirective,\r\n} from 'ngx-dropzone-wrapper';\r\n\r\n@Component({\r\n selector: 'ipa-file-upload',\r\n templateUrl: './file-upload.component.html',\r\n styleUrls: ['./file-upload.component.scss'],\r\n})\r\nexport class FileUploadComponent implements OnInit {\r\n @ViewChild(DropzoneDirective, { static: false })\r\n dropzoneDir!: DropzoneDirective;\r\n @Input() isArabicForm = true;\r\n @Input() label = '';\r\n @Input() required = false;\r\n @Input() acceptedFiles = '';\r\n @Input() multiple = 1; // set maxFiles (NOT uploadMultiple)in the config object,\r\n @Input() maxFileSize = 2;\r\n @Input() method = 'POST';\r\n @Input() autoUpload = false;\r\n @Input() apiUrl = 'apiUrl';\r\n @Input() authorization!: string;\r\n @Output() successUpload = new EventEmitter();\r\n @Output() fileAdded = new EventEmitter();\r\n @Output() fileDeleted = new EventEmitter();\r\n dragEnter = false;\r\n errors: string[] = [];\r\n config!: DropzoneConfigInterface;\r\n filesAdded: File[] = [];\r\n currentFiles: File[] = [];\r\n\r\n constructor(\r\n // private authService: AuthService,\r\n private toastrService: ToastrService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.label = (this.isArabicForm ? 'رفع ' : 'Upload ') + this.label;\r\n this.config = {\r\n url: this.apiUrl,\r\n method: this.method,\r\n headers: {\r\n Authorization: 'Bearer ' + this.authorization,\r\n },\r\n maxFilesize: this.maxFileSize,\r\n maxFiles: this.multiple,\r\n uploadMultiple: this.multiple > 1,\r\n dictInvalidFileType: this.isArabicForm\r\n ? 'صيغة الملف غير مسموح بها'\r\n : 'the file format is not allowed',\r\n dictFileTooBig: this.isArabicForm\r\n ? 'الحجم تجاوز الحد المسموح'\r\n : `the file size must be less than or equal (${this.maxFileSize}) MB`,\r\n dictMaxFilesExceeded: this.isArabicForm\r\n ? 'الرجاء حذف الملفات الموجودة حاليا لتتمكن من رفع هذا الملف'\r\n : 'Please delete existing files to be able to upload this file',\r\n acceptedFiles: this.acceptedFiles,\r\n autoProcessQueue: this.autoUpload,\r\n previewTemplate: '<span></span>',\r\n dictRemoveFile: '',\r\n };\r\n }\r\n\r\n operationCompleted(e: any): void {\r\n if (this.filesAdded.length > 0) {\r\n this.successUpload.emit(this.filesAdded);\r\n this.filesAdded = [];\r\n }\r\n this.dropzoneDir.reset();\r\n }\r\n\r\n onUploadSuccess(e: any): void {\r\n const file = e[0];\r\n if (file.status === 'success') {\r\n this.filesAdded.push(file);\r\n }\r\n const message = this.isArabicForm\r\n ? 'تم تحميل المرفقات بنجاح'\r\n : 'Attachments uploaded successfully';\r\n this.toastrService.success(message);\r\n }\r\n\r\n onUploadError(e: any): void {\r\n if (e[1]) {\r\n this.errors = [];\r\n this.errors.push(`${e[1]} (${e[0].name})`);\r\n }\r\n }\r\n\r\n fileWasAdded(e: File): void {\r\n const myDropzone = this.dropzoneDir.dropzone();\r\n if (this.multiple === 1) {\r\n this.currentFiles = [];\r\n this.filesAdded = [];\r\n this.errors = [];\r\n const files = myDropzone.files;\r\n if (files.length > 1) {\r\n myDropzone.removeFile(files[0]);\r\n }\r\n }\r\n this.currentFiles.push(e);\r\n this.fileAdded.emit(e);\r\n }\r\n\r\n sending(e: any): void {\r\n this.errors = [];\r\n }\r\n\r\n reset(e: any): void {}\r\n\r\n deleteFile(file: any): void {\r\n this.currentFiles = this.currentFiles.filter(\r\n (x) => x.name !== file.name && x.size !== file.size\r\n );\r\n this.errors = [];\r\n this.fileDeleted.emit();\r\n }\r\n}\r\n","<div class=\"file-upload\">\r\n <div class=\"upload-overlay\" [dropzone]=\"config\" (error)=\"onUploadError($event)\"\r\n (queueComplete)=\"operationCompleted($event)\" (success)=\"onUploadSuccess($event)\" (dragenter)=\"dragEnter = true\"\r\n (dragLeave)=\"dragEnter = false\" (drop)=\"dragEnter = false\" (dragEnd)=\"dragEnter = false\"\r\n [class.active-border]=\"dragEnter\" (sending)=\"sending($event)\" (reset)=\"reset($event)\"\r\n (addedFile)=\"fileWasAdded($event)\">\r\n </div>\r\n <div class=\"upload-btn-wrapper\">\r\n <div>\r\n <div class=\"subtitle mb-2\">\r\n {{label}}\r\n <span *ngIf=\"required\" class=\"required\">*</span>\r\n </div>\r\n <hr>\r\n <span style=\"font-size: 12px;\">{{isArabicForm? 'قم بسحب الملف أو اضغط هنا' : 'drag or click here'}}</span>\r\n <i class=\"fas fa-upload upload-icon mr-2\"></i>\r\n </div>\r\n <div *ngIf=\"acceptedFiles.length > 0\" class=\"allowed-extensions\">\r\n {{isArabicForm? 'الصيغة المسموح بها:' : 'Allowed format:'}} \r\n <span class=\"extensions\">{{ acceptedFiles }}</span>\r\n </div>\r\n <div class=\"allowed-extensions\">\r\n {{isArabicForm? 'اقصى حجم للمرفق:' : 'Attachment Size:'}}\r\n <span class=\"extensions\">{{ maxFileSize }} MB</span>\r\n </div>\r\n </div>\r\n</div>\r\n<div id=\"attachment-status\" style=\"text-align: center; margin-top:10px;\">\r\n <span style=\"font-size: 14px; margin: auto; font-weight:bold;\" *ngFor=\"let file of currentFiles\">\r\n {{ file.name }} <i (click)=\"deleteFile(file)\" class=\"fas fa-trash\"\r\n style=\"color:firebrick; cursor: pointer;\"></i>\r\n <br>\r\n </span>\r\n <ul class=\"list-unstyled\">\r\n <li class=\"text-danger\" style=\"font-size: 12px;\" *ngFor=\"let error of errors\">{{error}}</li>\r\n </ul>\r\n</div>","import { Component, Input, OnInit, Self } from '@angular/core';\nimport { FormControl, NgControl } from '@angular/forms';\n\n@Component({\n selector: 'ipa-recaptcha',\n templateUrl: './recaptcha.component.html',\n styleUrls: ['./recaptcha.component.scss'],\n})\nexport class RecaptchaComponent implements OnInit {\n @Input() siteKey = '6LefJQYdAAAAAIlxmfkjNlWidMk8VukIZcs6lO5e';\n @Input() recaptchaSize: 'compact' | 'normal' = 'normal';\n @Input() lang: 'ar' | 'en' = 'ar';\n @Input() recaptchaType: 'image' | 'audio' = 'image';\n @Input() theme: 'light' | 'dark' = 'light';\n @Input() useGlobalDomain = true;\n formControl: FormControl = new FormControl('');\n constructor(@Self() public controlDir: NgControl) {\n this.controlDir.valueAccessor = this;\n }\n\n ngOnInit(): void {\n const control = this.controlDir.control;\n const validators = control?.validator ? [control.validator] : [];\n\n control?.setValidators(validators);\n control?.updateValueAndValidity();\n this.formControl = control as FormControl;\n }\n\n onChange(event: any): void {}\n\n onTouched(): void {}\n writeValue(obj: any): void {}\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n}\n","<ngx-recaptcha2 [siteKey]=\"siteKey\" [size]=\"recaptchaSize\" [hl]=\"lang\" [theme]=\"theme\" [type]=\"recaptchaType\"\n [useGlobalDomain]=\"useGlobalDomain\" [formControl]=\"formControl\">\n</ngx-recaptcha2>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { IPAFormService } from '../ipa-form/ipa-form.service';\r\nimport { Column, GenerateForm } from '../models/generateForm.model';\r\n\r\n@Component({\r\n selector: 'ipa-generate-form',\r\n templateUrl: './generate-form.component.html',\r\n styleUrls: ['./generate-form.component.scss'],\r\n})\r\nexport class GenerateFormComponent implements OnInit {\r\n @Input() generateForm!: FormGroup;\r\n @Input() form!: GenerateForm;\r\n @Input() isArabicForm = true;\r\n\r\n // recaptcha inputs\r\n @Input() siteKey!: string;\r\n @Input() recaptchaSize: 'compact' | 'normal' = 'normal';\r\n @Input() lang: 'ar' | 'en' = 'ar';\r\n @Input() recaptchaType: 'image' | 'audio' = 'image';\r\n @Input() theme: 'light' | 'dark' = 'light';\r\n @Input() useGlobalDomain = true;\r\n\r\n // file upload outputs\r\n @Output() successUpload = new EventEmitter();\r\n @Output() fileAdded = new EventEmitter();\r\n @Output() fileDeleted = new EventEmitter();\r\n\r\n errorMsg!: string | null;\r\n\r\n constructor(private validationService: IPAFormService) {}\r\n\r\n ngOnInit(): void {\r\n this.changeDataValueForEngForm();\r\n this.createForm();\r\n }\r\n\r\n getFormControls(formControlName: string) {\r\n return this.generateForm.get('items' + formControlName) as FormArray;\r\n }\r\n\r\n getErrorMessage(formControlName: string): string | null {\r\n const formControl = this.generateForm.controls[\r\n formControlName\r\n ] as FormControl;\r\n this.errorMsg = this.validationService.getErrorMessage(\r\n formControl,\r\n '',\r\n this.isArabicForm\r\n );\r\n return this.errorMsg;\r\n }\r\n\r\n SuccessUpload(event: any) {\r\n this.successUpload.emit(event);\r\n }\r\n\r\n FileAdded(file: any, formControlName: string) {\r\n this.generateForm.controls[formControlName].patchValue(file);\r\n this.fileAdded.emit(file);\r\n }\r\n\r\n FileDeleted(event: any, formControlName: string) {\r\n this.generateForm.controls[formControlName].patchValue(null);\r\n this.fileDeleted.emit(event);\r\n }\r\n\r\n private changeDataValueForEngForm() {\r\n this.form.columns = this.form.columns.map((column) => {\r\n return {\r\n ...column,\r\n data: column.data?.map((item) => {\r\n const value = item[column.textField!];\r\n return {\r\n ...item,\r\n [column.textField!]: this.isArabicForm\r\n ? value.split(',')[0]\r\n : value.split(',')[1],\r\n };\r\n }),\r\n };\r\n });\r\n }\r\n\r\n private createForm() {\r\n this.form.columns.forEach((column) => {\r\n if (column.type === 'checkbox') {\r\n this.addCheckboxControl(column);\r\n } else {\r\n this.generateForm.addControl(\r\n column.formControlName,\r\n new FormControl(\r\n column.type === 'file' && column.multipleFile! > 1 ? [] : null,\r\n [\r\n column.required ? Validators.required : Validators.nullValidator,\r\n column.validationPattern\r\n ? Validators.pattern(column.validationPattern)\r\n : Validators.nullValidator,\r\n ['select', 'radio', 'file', 'recaptcha'].indexOf(column.type) <=\r\n -1\r\n ? Validators.maxLength(column.size!)\r\n : Validators.nullValidator,\r\n column.type === 'number'\r\n ? Validators.min(1)\r\n : Validators.nullValidator,\r\n ]\r\n )\r\n );\r\n }\r\n });\r\n }\r\n\r\n private addCheckboxControl(column: Column) {\r\n let checkboxGroup = new FormArray(\r\n column.data!.map((item) => {\r\n return new FormGroup({\r\n [column.valueField!]: new FormControl(item[column.valueField!]),\r\n [column.textField!]: new FormControl(item[column.textField!]),\r\n checkbox: new FormControl(false),\r\n });\r\n })\r\n );\r\n\r\n this.generateForm.addControl(\r\n column.formControlName,\r\n new FormControl(\r\n null,\r\n column.required ? Validators.required : Validators.nullValidator\r\n )\r\n );\r\n this.generateForm.addControl(\r\n 'items' + column.formControlName,\r\n checkboxGroup\r\n );\r\n checkboxGroup.valueChanges.subscribe((value: any[]) => {\r\n let selectedItems = this.getCheckboxSelectedValues(value);\r\n if (selectedItems) {\r\n this.generateForm.controls[column.formControlName].patchValue(\r\n selectedItems.map((x) => x[column.textField!])\r\n );\r\n } else {\r\n this.generateForm.controls[column.formControlName].patchValue(null);\r\n this.generateForm.controls[column.formControlName].markAsTouched();\r\n }\r\n });\r\n }\r\n\r\n private getCheckboxSelectedValues(items: any[]): any[] | null {\r\n let selectedItems = items.filter((item) => item.checkbox);\r\n return selectedItems.length > 0 ? selectedItems : null;\r\n }\r\n}\r\n","<form [formGroup]=\"generateForm\">\r\n <ng-container *ngFor=\"let column of form.columns\">\r\n <div [ngSwitch]=\"column.type\">\r\n <!-- TEXTAREA -->\r\n <div *ngSwitchCase=\"'textArea'\">\r\n <ipa-textarea-input [formControlName]=\"column.formControlName\" [id]=\"column.formControlName\"\r\n [label]=\"isArabicForm? column.arabicLabel : column.englishLabel\" [required]=\"column.required\"\r\n [patternErrorMsg]=\"isArabicForm? column.patternArErrorMsg! : column.patternEnErrorMsg!\"\r\n [classes]=\"column.inputClasses!\" [containerClasses]=\"column.containerClasses!\"\r\n [isArabicForm]=\"isArabicForm\">\r\n </ipa-textarea-input>\r\n </div>\r\n\r\n <!-- DROP DOWN LIST -->\r\n <div *ngSwitchCase=\"'select'\">\r\n <ipa-dropdown-input [formControlName]=\"column.formControlName\" [id]=\"column.formControlName\"\r\n [label]=\"isArabicForm? column.arabicLabel : column.englishLabel\" [items]=\"column.data!\"\r\n [valueField]=\"column.valueField!\" [textField]=\"column.textField!\" [required]=\"column.required\"\r\n [searchable]=\"column.searchable!\" [notFoundText]=\"column.notFoundText!\"\r\n [classes]=\"column.inputClasses!\" [containerClasses]=\"column.containerClasses!\"\r\n [isArabicForm]=\"isArabicForm\" [fromGenerateForm]=\"true\">\r\n </ipa-dropdown-input>\r\n </div>\r\n\r\n <!-- CHECKBOX -->\r\n <div *ngSwitchCase=\"'checkbox'\" [class]=\"column.containerClasses\">\r\n <label>{{isArabicForm? column.arabicLabel : column.englishLabel}}</label>\r\n <ng-container [formArrayName]=\"'items'+ column.formControlName\"\r\n *ngFor=\"let control of getFormControls(column.formControlName).controls; let i = index\">\r\n <div class=\"form-check {{column.inputClasses}}\" [formGroupName]=\"i\">\r\n <input [id]=\"column.formControlName+control.value[column.valueField!]\" class=\"form-check-input\"\r\n type=\"checkbox\" formControlName=\"checkbox\">\r\n <label class=\"form-check-label\"\r\n [for]=\"column.formControlName+control.value[column.valueField!]\">\r\n {{control.value[column.textField!]}}\r\n </label>\r\n </div>\r\n </ng-container>\r\n <div class=\"invalid-feedback\" style=\"display: block !important;\"\r\n *ngIf=\"getErrorMessage(column.formControlName) !== null\">\r\n {{errorMsg}}\r\n </div>\r\n </div>\r\n\r\n <!-- RADIO -->\r\n <div *ngSwitchCase=\"'radio'\" [class]=\"column.containerClasses\">\r\n <label>{{isArabicForm? column.arabicLabel : column.englishLabel}}</label>\r\n <ng-container *ngFor=\"let item of column.data; let i = index\">\r\n <div class=\"form-check {{column.inputClasses}}\">\r\n <input [id]=\"column.formControlName+item[column.valueField!]\" class=\"form-check-input\"\r\n type=\"radio\" [formControlName]=\"column.formControlName\" [value]=\"item[column.textField!]\">\r\n <label class=\"form-check-label\" [for]=\"column.formControlName+item[column.valueField!]\">\r\n {{item[column.textField!]}}\r\n </label>\r\n </div>\r\n </ng-container>\r\n <div class=\"invalid-feedback\" style=\"display: block !important;\"\r\n *ngIf=\"getErrorMessage(column.formControlName) !== null\">\r\n {{errorMsg}}\r\n </div>\r\n </div>\r\n\r\n <!-- FILE UPLOAD -->\r\n <div *ngSwitchCase=\"'file'\" [class]=\"column.containerClasses\">\r\n <ipa-file-upload [isArabicForm]=\"isArabicForm\" [label]=\"isArabicForm? column.arabicLabel : column.englishLabel\"\r\n [acceptedFiles]=\"column.acceptedFiles!\" [multiple]=\"column.multipleFile!\"\r\n [maxFileSize]=\"column.size!\" [method]=\"column.apiURlMethod!\" [autoUpload]=\"column.autoUploadFile!\"\r\n [apiUrl]=\"column.apiUrl?? 'apiUrl' \" [authorization]=\"column.authorization!\" ngDefaultControl\r\n [formControlName]=\"column.formControlName\" (successUpload)=\"SuccessUpload($event)\"\r\n (fileAdded)=\"FileAdded($event, column.formControlName)\"\r\n (fileDeleted)=\"FileDeleted($event, column.formControlName)\">\r\n </ipa-file-upload>\r\n </div>\r\n\r\n <!-- recaptcha -->\r\n <div *ngSwitchCase=\"'recaptcha'\" [class]=\"column.containerClasses\">\r\n <ipa-recaptcha [recaptchaSize]=\"recaptchaSize\" [lang]=\"isArabicForm? 'ar':'en'\" [theme]=\"theme\"\r\n [recaptchaType]=\"recaptchaType\" [useGlobalDomain]=\"useGlobalDomain\"\r\n formControlName=\"{{column.formControlName}}\">\r\n </ipa-recaptcha>\r\n </div>\r\n\r\n <!-- DEFAULT -->\r\n <div *ngSwitchDefault>\r\n <ipa-text-input [formControlName]=\"column.formControlName\" [id]=\"column.formControlName\"\r\n [type]=\"column.type\" [label]=\"isArabicForm? column.arabicLabel : column.englishLabel\"\r\n [required]=\"column.required\"\r\n [patternErrorMsg]=\"isArabicForm? column.patternArErrorMsg! : column.patternEnErrorMsg!\"\r\n [classes]=\"column.inputClasses!\" [containerClasses]=\"column.containerClasses!\"\r\n [isArabicForm]=\"isArabicForm\">\r\n </ipa-text-input>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</form>","import { Component, Input, OnInit, Self, ViewChild } from '@angular/core';\r\nimport { FormControl, NgControl } from '@angular/forms';\r\nimport {\r\n NgbCalendar,\r\n NgbDateStruct,\r\n NgbInputDatepicker,\r\n NgbInputDatepickerConfig,\r\n} from '@ng-bootstrap/ng-bootstrap';\r\nimport { IPAFormService } from '../ipa-form.service';\r\n\r\n@Component({\r\n selector: 'ipa-datepicker',\r\n templateUrl: './datepicker.component.html',\r\n styleUrls: ['./datepicker.component.scss'],\r\n})\r\nexport class DatepickerComponent implements OnInit {\r\n @ViewChild('d') datepicker!: NgbInputDatepicker;\r\n @Input() id!: string;\r\n @Input() label = 'datepicker';\r\n @Input() patternErrorMsg = 'invalid pattern';\r\n @Input() required = false;\r\n @Input() maxDate!: NgbDateStruct;\r\n @Input() minDate!: NgbDateStruct;\r\n @Input() classes!: string;\r\n @Input() containerClasses!: string;\r\n @Input() isArabicForm = true;\r\n today = this.calendar.getToday();\r\n formControl: FormControl = new FormControl('');\r\n errorMsg!: string | null;\r\n\r\n constructor(\r\n private ipaFormService: IPAFormService,\r\n private calendar: NgbCalendar,\r\n @Self() public controlDir: NgControl,\r\n config: NgbInputDatepickerConfig\r\n ) {\r\n this.controlDir.valueAccessor = this;\r\n config.container = null;\r\n }\r\n\r\n ngOnInit(): void {\r\n const control = this.controlDir.control;\r\n const validators = control?.validator ? [control.validator] : [];\r\n\r\n control?.setValidators(validators);\r\n control?.updateValueAndValidity();\r\n this.formControl = control as FormControl;\r\n }\r\n\r\n onChange(event: any): void {}\r\n\r\n onTouched(): void {}\r\n writeValue(obj: any): void {}\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n openDatepicker(event: any) {\r\n if (!this.datepicker.isOpen()) {\r\n this.datepicker.toggle();\r\n event.preventDefault();\r\n return;\r\n }\r\n this.datepicker.close();\r\n }\r\n\r\n get errorMessage(): string | null {\r\n this.errorMsg = this.ipaFormService.getErrorMessage(\r\n this.formControl,\r\n this.patternErrorMsg,\r\n this.isArabicForm\r\n );\r\n return this.errorMsg;\r\n }\r\n}\r\n","<div class=\"form-floating input-group {{containerClasses}}\">\r\n <input id=\"{{id}}\"\r\n [ngClass]=\"{'is-invalid is-invalid:focus': (controlDir.control?.invalid && (controlDir.control?.dirty || controlDir.control?.touched)) && errorMsg,'is-valid is-valid:focus': (controlDir.control?.valid && (controlDir.control?.dirty || controlDir.control?.touched) && (errorMsg || controlDir.value))}\"\r\n class=\"form-control {{classes}}\" [formControl]=\"formControl\" [firstDayOfWeek]=\"7\" ngbDatepicker\r\n #d=\"ngbDatepicker\" [maxDate]=\"maxDate\" [minDate]=\"minDate\" [footerTemplate]=\"footerTemplate\"\r\n [required]=\"required\" style=\"outline: unset; z-index: unset !important;\" autocomplete=\"off\" (blur)=\"onTouched()\"\r\n title=\"{{label}}\">\r\n <label for=\"{{id}}\">{{label}}</label>\r\n <span class=\"input-group-text calenderBtn\" (click)=\"openDatepicker($event)\">\r\n <i class=\"far fa-calendar-alt fa-lg\"></i>\r\n </span>\r\n <div class=\"invalid-feedback\" *ngIf=\"errorMessage !== null\">\r\n {{errorMsg}}\r\n </div>\r\n <ng-template #footerTemplate style=\"text-align: center;\">\r\n <hr>\r\n <button type=\"button\" class=\"btn btn-primary btn-sm m-2 \" style=\"width: auto; float: right;\"\r\n (click)=\"formControl.patchValue(today);d.navigateTo(today);\">اليوم</button>\r\n <button type=\"button\" class=\"btn btn-secondary btn-sm m-2\" style=\"width: auto; float: left;\"\r\n (click)=\"formControl.patchValue(null);d.close()\">مسح</button>\r\n </ng-template>\r\n</div>","import { TranslationWidth } from '@angular/common';\r\nimport { Injectable } from '@angular/core';\r\nimport { NgbDatepickerI18n, NgbDateStruct } from '@ng-bootstrap/ng-bootstrap';\r\n\r\nconst WEEKDAYS = ['ن', 'ث', 'ر', 'خ', 'ج', 'س', 'ح'];\r\nconst MONTHS = [\r\n 'محرم',\r\n 'صفر',\r\n 'ربيع الأول',\r\n 'ربيع الآخر',\r\n 'جمادى الأولى',\r\n 'جمادى الآخرة',\r\n 'رجب',\r\n 'شعبان',\r\n 'رمضان',\r\n 'شوال',\r\n 'ذو القعدة',\r\n 'ذو الحجة',\r\n];\r\n\r\n@Injectable()\r\nexport class IslamicI18n extends NgbDatepickerI18n {\r\n getMonthShortName(month: number) {\r\n return MONTHS[month - 1];\r\n }\r\n\r\n getMonthFullName(month: number) {\r\n return MONTHS[month - 1];\r\n }\r\n\r\n getWeekdayLabel(weekday: number, width?: TranslationWidth) {\r\n return WEEKDAYS[weekday - 1];\r\n }\r\n\r\n getDayAriaLabel(date: NgbDateStruct): string {\r\n return `${date.day}-${date.month}-${date.year}`;\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { NgbCalendar, NgbCalendarIslamicUmalqura, NgbDatepickerI18n } from '@ng-bootstrap/ng-bootstrap';\r\nimport { DatepickerComponent } from '../datepicker.component';\r\nimport { IslamicI18n } from './IslamicI18n';\r\n@Component({\r\n selector: 'ipa-hijri-datepicker',\r\n templateUrl: '../datepicker.component.html',\r\n styleUrls: ['../datepicker.component.scss'],\r\n providers: [\r\n { provide: NgbCalendar, useClass: NgbCalendarIslamicUmalqura },\r\n { provide: NgbDatepickerI18n, useClass: IslamicI18n },\r\n ],\r\n})\r\nexport class HijriDatepickerComponent extends DatepickerComponent {}\r\n","import { TranslationWidth } from '@angular/common';\r\nimport { Injectable } from '@angular/core';\r\nimport { NgbDatepickerI18n, NgbDateStruct } from '@ng-bootstrap/ng-bootstrap';\r\n\r\nconst WEEKDAYS = ['ن', 'ث', 'ر', 'خ', 'ج', 'س', 'ح'];\r\nconst MONTHS = [\r\n 'يناير',\r\n 'فبراير',\r\n 'مارس',\r\n 'أبريل',\r\n 'مايو',\r\n 'يونيو',\r\n 'يوليو',\r\n 'اغسطس',\r\n 'سبتمبر',\r\n 'أكتوبر',\r\n 'نوفمبر',\r\n 'ديسمبر',\r\n];\r\n\r\n@Injectable()\r\nexport class Gregorian18n extends NgbDatepickerI18n {\r\n getMonthShortName(month: number) {\r\n return MONTHS[month - 1];\r\n }\r\n\r\n getMonthFullName(month: number) {\r\n return MONTHS[month - 1];\r\n }\r\n\r\n getWeekdayLabel(weekday: number, width?: TranslationWidth) {\r\n return WEEKDAYS[weekday - 1];\r\n }\r\n\r\n getDayAriaLabel(date: NgbDateStruct): string {\r\n return `${date.day}-${date.month}-${date.year}`;\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { NgbCalendar, NgbCalendarGregorian, NgbDatepickerI18n } from '@ng-bootstrap/ng-bootstrap';\r\nimport { DatepickerComponent } from '../datepicker.component';\r\nimport { Gregorian18n } from './gregorian18n';\r\n\r\n@Component({\r\n selector: 'ipa-gregorian-datepicker',\r\n templateUrl: '../datepicker.component.html',\r\n styleUrls: ['../datepicker.component.scss'],\r\n providers: [\r\n { provide: NgbCalendar, useClass: NgbCalendarGregorian},\r\n { provide: NgbDatepickerI18n, useClass: Gregorian18n },\r\n ],\r\n})\r\nexport class GregorianDatepickerComponent extends DatepickerComponent {}\r\n","import { Component, AfterViewInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ipa-share-button',\r\n templateUrl: './share-button.component.html',\r\n styleUrls: ['./share-button.component.scss'],\r\n})\r\nexport class ShareButtonComponent implements AfterViewInit {\r\n @Input() title = '';\r\n @Input() description = '';\r\n @Input() btnLabel = '';\r\n constructor() {}\r\n ngAfterViewInit(): void {\r\n const elements = document.getElementsByClassName('sb-show-icon');\r\n elements[0].setAttribute('type', 'button');\r\n elements[0].setAttribute('id', 'IPAShareBtn');\r\n const label = document.createElement('label');\r\n label.innerHTML = this.btnLabel;\r\n label.classList.add('sm-share-title');\r\n label.classList.add('me-1');\r\n elements[0].before(label);\r\n }\r\n}\r\n","<share-popup-button [title]=\"title\" [description]=\"description\" [icon]=\"'share-alt'\"\r\n [include]=\"['facebook','twitter','linkedin','telegram','whatsapp','email','copy']\">\r\n</share-popup-button>","import { OverlayModule } from '@angular/cdk/overlay';\r\nimport { NgModule } from '@angular/core';\r\nimport {\r\n FaIconLibrary,\r\n FontAwesomeModule,\r\n} from '@fortawesome/angular-fontawesome';\r\nimport { fas } from '@fortawesome/free-solid-svg-icons';\r\nimport { ShareIconsModule } from 'ngx-sharebuttons/icons';\r\nimport { ShareButtonsPopupModule } from 'ngx-sharebuttons/popup';\r\nimport { ShareButtonComponent } from './share-button.component';\r\n\r\n@NgModule({\r\n declarations: [ShareButtonComponent],\r\n imports: [\r\n ShareIconsModule,\r\n ShareButtonsPopupModule,\r\n OverlayModule,\r\n FontAwesomeModule,\r\n ],\r\n exports: [\r\n ShareButtonComponent,\r\n ShareIconsModule,\r\n ShareButtonsPopupModule,\r\n OverlayModule,\r\n FontAwesomeModule,\r\n ]\r\n})\r\nexport class ShareButtonModule {\r\n constructor(library: FaIconLibrary) {\r\n library.addIconPacks(fas);\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { ToastrModule } from 'ngx-toastr';\r\nimport { DropzoneModule } from 'ngx-dropzone-wrapper';\r\nimport { NgxCaptchaModule } from 'ngx-captcha';\r\nimport { PipesModule } from './pipes/pipes.module';\r\nimport { NgbDatepickerModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\n\r\nimport { TextInputComponent } from './ipa-form/text-input/text-input.component';\r\nimport { TextareaInputComponent } from './ipa-form/textarea-input/textarea-input.component';\r\nimport { DropdownInputComponent } from './ipa-form/dropdown-input/dropdown-input.component';\r\nimport { LoaderComponent } from './core/components/loading/loading.component';\r\nimport { GenerateFormComponent } from './generate-form/generate-form.component';\r\nimport { FileUploadComponent } from './ipa-form/file-upload/file-upload.component';\r\nimport { DatepickerComponent } from './ipa-form/datepicker/datepicker.component';\r\nimport { HijriDatepickerComponent } from './ipa-form/datepicker/hijri-datepicker/hijri-datepicker.component';\r\nimport { GregorianDatepickerComponent } from './ipa-form/datepicker/gregorian-datepicker/gregorian-datepicker.component';\r\nimport { ShareButtonModule } from './share-button/share-button.module';\r\nimport { RecaptchaComponent } from './ipa-form/recaptcha/recaptcha.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n TextInputComponent,\r\n TextareaInputComponent,\r\n DropdownInputComponent,\r\n LoaderComponent,\r\n GenerateFormComponent,\r\n FileUploadComponent,\r\n DatepickerComponent,\r\n HijriDatepickerComponent,\r\n GregorianDatepickerComponent,\r\n RecaptchaComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n ToastrModule,\r\n DropzoneModule,\r\n NgxCaptchaModule,\r\n PipesModule,\r\n NgbDatepickerModule,\r\n ShareButtonModule,\r\n NgSelectModule,\r\n ],\r\n exports: [\r\n TextInputComponent,\r\n TextareaInputComponent,\r\n DropdownInputComponent,\r\n LoaderComponent,\r\n GenerateFormComponent,\r\n FileUploadComponent,\r\n PipesModule,\r\n HijriDatepickerComponent,\r\n GregorianDatepickerComponent,\r\n ShareButtonModule,\r\n RecaptchaComponent,\r\n ],\r\n})\r\nexport class NgIPALibraryModule {}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n HttpRequest,\r\n HttpHandler,\r\n HttpEvent,\r\n HttpInterceptor,\r\n HttpResponse,\r\n} from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { LoaderService } from '../services/loader.service';\r\n\r\n@Injectable()\r\nexport class LoadingInterceptor implements HttpInterceptor {\r\n private requests: HttpRequest<any>[] = [];\r\n\r\n constructor(private loaderService: LoaderService) {}\r\n\r\n removeRequest(req: HttpRequest<any>): void {\r\n const i = this.requests.indexOf(req);\r\n if (i >= 0) {\r\n this.requests.splice(i, 1);\r\n }\r\n this.loaderService.isLoading.next(this.requests.length > 0);\r\n }\r\n\r\n intercept(\r\n req: HttpRequest<unknown>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<unknown>> {\r\n if (this.isException(req)) {\r\n return next.handle(req);\r\n }\r\n this.requests.push(req);\r\n\r\n this.loaderService.isLoading.next(true);\r\n return new Observable((observer) => {\r\n const subscription = next.handle(req).subscribe(\r\n (event) => {\r\n if (event instanceof HttpResponse) {\r\n this.removeRequest(req);\r\n observer.next(event);\r\n }\r\n },\r\n (err) => {\r\n this.removeRequest(req);\r\n observer.error(err);\r\n },\r\n () => {\r\n this.removeRequest(req);\r\n observer.complete();\r\n }\r\n );\r\n // remove request from queue when cancelled\r\n return () => {\r\n this.removeRequest(req);\r\n subscription.unsubscribe();\r\n };\r\n });\r\n }\r\n\r\n isException(req: HttpRequest<any>): boolean {\r\n for (const url of this.loaderService.urls) {\r\n if (req.url.includes(url.path) && req.method === url.method) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n","import { HttpRequest } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { ExceptionUrl } from '../../models/exceptionUrl.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ErrorService {\r\n urls: ExceptionUrl[] = [];\r\n constructor() {}\r\n\r\n setExceptionUrls(urls: ExceptionUrl[]) {\r\n this.urls = urls;\r\n }\r\n\r\n addExceptionUrl(url: ExceptionUrl) {\r\n this.urls.push(url);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n HttpRequest,\r\n HttpHandler,\r\n HttpEvent,\r\n HttpInterceptor,\r\n} from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { ErrorService } from '../services/error.service';\r\nimport { ApiException } from '../../models/apiException';\r\nimport { IndividualConfig, ToastrService } from 'ngx-toastr';\r\n\r\n@Injectable()\r\nexport class ErrorInterceptor implements HttpInterceptor {\r\n constructor(\r\n private errorService: ErrorService,\r\n private toastrService: ToastrService\r\n ) {}\r\n\r\n intercept(\r\n req: HttpRequest<unknown>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<unknown>> {\r\n if (this.isException(req)) {\r\n return next.handle(req);\r\n }\r\n\r\n return next.handle(req).pipe(\r\n catchError((error) => {\r\n const response = error.error as ApiException;\r\n const toastrConfig: Partial<IndividualConfig> = {\r\n disableTimeOut: true,\r\n closeButton: true,\r\n tapToDismiss: false,\r\n };\r\n switch (response.statusCode) {\r\n case 500:\r\n const msg =\r\n response.innerException + ' ' + (response.stackTrace ?? '');\r\n const toastr = this.toastrService.error(\r\n msg,\r\n response.message,\r\n toastrConfig\r\n );\r\n toastr.onShown.subscribe(() => {\r\n this.addCopyButton(response.message + '\\n' + msg);\r\n });\r\n break;\r\n\r\n default:\r\n this.toastrService.error('', response.message, toastrConfig);\r\n break;\r\n }\r\n return throwError(error);\r\n })\r\n );\r\n }\r\n\r\n isException(req: HttpRequest<any>): boolean {\r\n for (const url of this.errorService.urls) {\r\n if (req.url.includes(url.path) && req.method === url.method) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n private addCopyButton(message: string) {\r\n const messageToast = document.getElementsByClassName(\r\n 'toast-message'\r\n )[0] as HTMLDivElement;\r\n const icon = document.createElement('i');\r\n icon.classList.add('ms-2', 'fas', 'fa-copy');\r\n icon.addEventListener('click', () => {\r\n this.copyToClipboard(message);\r\n });\r\n messageToast.appendChild(icon);\r\n }\r\n\r\n private copyToClipboard(message: string) {\r\n navigator.clipboard.writeText(message);\r\n this.toastrService.success('تم نسخ الرسالة إلى الحافظة', '', {\r\n positionClass: 'toast-bottom-right',\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { DecodedToken } from '../../models/decodedToken.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AuthService {\r\n public currentUser = new BehaviorSubject<DecodedToken>({ exp: 0 });\r\n currentUserUrl = '';\r\n constructor() {}\r\n\r\n getToken(): string {\r\n return localStorage.getItem('token') ?? '';\r\n }\r\n\r\n getDecodedToken(): any {\r\n return this.decodeJwt(this.getToken());\r\n }\r\n\r\n setCurrentUser(): void {\r\n const decodedToken = this.getDecodedToken() as DecodedToken;\r\n this.currentUser.next({\r\n nameid: decodedToken.nameid,\r\n email: decodedToken.email,\r\n given_name: decodedToken.given_name,\r\n exp: decodedToken.exp,\r\n });\r\n }\r\n\r\n getTokenFromHidden(): string {\r\n return (\r\n (document.querySelector('[id$=hfToken]') as HTMLInputElement).value ?? ''\r\n );\r\n }\r\n\r\n getDecodedTokenFromHidden(): any {\r\n return this.decodeJwt(this.getTokenFromHidden());\r\n }\r\n\r\n setCurrentUserFromHidden(): void {\r\n const decodedToken = this.getDecodedTokenFromHidden() as DecodedToken;\r\n this.currentUser.next({\r\n nameid: decodedToken.nameid?.split('\\\\')[1],\r\n email: decodedToken.email,\r\n given_name: decodedToken.given_name,\r\n exp: decodedToken.exp,\r\n });\r\n }\r\n\r\n setCurrentUserUrl(url: string) {\r\n this.currentUserUrl = url;\r\n }\r\n\r\n private decodeJwt(token: string): any {\r\n const base64Url = token.split('.')[1];\r\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\r\n const jsonPayload = decodeURIComponent(\r\n atob(base64)\r\n .split('')\r\n .map((c) => {\r\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\r\n })\r\n .join('')\r\n );\r\n return JSON.parse(jsonPayload);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\nimport { ExceptionUrl } from '../../models/exceptionUrl.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TokenService {\n urls: ExceptionUrl[] = [];\n constructor() {}\n\n setExceptionUrls(urls: ExceptionUrl[]) {\n this.urls = urls;\n }\n\n addExceptionUrl(url: ExceptionUrl) {\n this.urls.push(url);\n }\n}\n","import { Injectable } from '@angular/core';\r\nimport {\r\n HttpRequest,\r\n HttpHandler,\r\n HttpEvent,\r\n HttpInterceptor,\r\n HttpClient,\r\n} from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { AuthService } from '../services/auth.service';\r\nimport { DecodedToken } from '../../models/decodedToken.model';\r\nimport { User } from '../../models/user.model';\r\nimport { LoaderService } from '../services/loader.service';\r\nimport { TokenService } from '../services/token.service';\r\n\r\n@Injectable()\r\nexport class TokenInterceptor implements HttpInterceptor {\r\n refresh = true;\r\n constructor(\r\n private authService: AuthService,\r\n private http: HttpClient,\r\n private loaderService: LoaderService,\r\n private tokenService: TokenService\r\n ) {\r\n this.loaderService.addExceptionUrl({\r\n path: '/api/users?refresh',\r\n method: 'GET',\r\n });\r\n this.tokenService.addExceptionUrl({\r\n path: '/api/users?refresh',\r\n method: 'GET',\r\n });\r\n }\r\n\r\n intercept(\r\n request: HttpRequest<unknown>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<unknown>> {\r\n if (this.isException(request)) {\r\n return next.handle(request);\r\n }\r\n const token = this.authService.getToken();\r\n if (token) {\r\n this.isTokenExpired(token);\r\n request = request.clone({\r\n setHeaders: {\r\n Authorization: `Bearer ${token}`,\r\n },\r\n });\r\n }\r\n return next.handle(request);\r\n }\r\n\r\n private isTokenExpired(token: string) {\r\n const redirectPath = location.pathname;\r\n const decodedToken = this.authService.getDecodedToken() as DecodedToken;\r\n const expDate = new Date((decodedToken.exp ?? 0) * 1000);\r\n if (expDate < new Date()) {\r\n location.replace('/ar/login?redirect=' + redirectPath);\r\n return;\r\n } else {\r\n if (this.authService.currentUserUrl) {\r\n if (this.refresh) {\r\n this.http\r\n .get<User>(this.authService.currentUserUrl + `users?refresh`, {\r\n headers: { Authorization: `Bearer ${token}` },\r\n })\r\n .subscribe((user) => {\r\n localStorage.setItem('token', user.token);\r\n this.refresh = false;\r\n setTimeout(() => {\r\n this.refresh = true;\r\n }, 60 * 1000);\r\n });\r\n }\r\n } else {\r\n throw new Error(\r\n \"provide current base user api url using this function authService.setCurrentUserUrl('https://...')\"\r\n );\r\n }\r\n }\r\n }\r\n\r\n isException(req: HttpRequest<any>): boolean {\r\n for (const url of this.tokenService.urls) {\r\n if (req.url.includes(url.path) && req.method === url.method) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n HttpRequest,\r\n HttpHandler,\r\n HttpEvent,\r\n HttpInterceptor,\r\n} from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { AuthService } from '../services/auth.service';\r\n\r\n@Injectable()\r\nexport class myIPATokenInterceptor implements HttpInterceptor {\r\n constructor(private authService: AuthService) {}\r\n\r\n intercept(\r\n request: HttpRequest<unknown>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<unknown>> {\r\n const token = this.authService.getTokenFromHidden();\r\n if (token) {\r\n request = request.clone({\r\n setHeaders: {\r\n Authorization: `Bearer ${token}`,\r\n },\r\n });\r\n }\r\n return next.handle(request);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Breadcrumbs } from '../models/breadcrumbs.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class BreadcrumbsService {\r\n constructor() {}\r\n\r\n setPageTitle(text: string) {\r\n const titleEl = document.querySelector('.sub-section-title');\r\n if (titleEl) {\r\n titleEl.textContent = text;\r\n }\r\n }\r\n\r\n setMainPageTitle(text: string, url: string) {\r\n const div = document.getElementsByClassName('main-section-title');\r\n if (div && div.length > 0) {\r\n div[0].innerHTML = `<a id=\"site-url\" href=\"${url}\">${text}</a>`;\r\n }\r\n }\r\n\r\n addBreadcrumb(\r\n nodeName: string,\r\n spanClasses = 'bc-current',\r\n linkClasses = 'bc-node'\r\n ) {\r\n const spans = document.getElementById('ctl00_path')?.children;\r\n //get last child\r\n const lastIndex = spans?.item(spans.length - 1) as HTMLSpanElement;\r\n const innerHTML = lastIndex.innerHTML;\r\n lastIndex.innerHTML = '';\r\n lastIndex.classList.remove(...['bc-current']);\r\n //add new link\r\n lastIndex.appendChild(\r\n this.createLink(innerHTML, location.pathname, linkClasses)\r\n );\r\n //add new span and empty span\r\n const newSpan = this.createSpan(nodeName, spanClasses);\r\n const emptySpan = document.createElement('span');\r\n lastIndex.after(...[emptySpan, newSpan]);\r\n }\r\n\r\n addBreadcrumbList(\r\n nodeList: Breadcrumbs[],\r\n spanClasses = 'bc-current',\r\n linkClasses = 'bc-node'\r\n ) {\r\n const spans = document.getElementById('ctl00_path')?.childNodes;\r\n //get last child\r\n const lastSpan = spans?.item(spans.length - 1) as HTMLSpanElement;\r\n const innerHTML = lastSpan.innerHTML;\r\n lastSpan.classList.remove(...[spanClasses]);\r\n lastSpan.innerHTML = '';\r\n //add new link\r\n lastSpan.appendChild(\r\n this.createLink(innerHTML, location.pathname, linkClasses)\r\n );\r\n\r\n for (let i = 0; i < nodeList.length; i++) {\r\n const lastIndex = spans?.item(spans.length - 1) as HTMLSpanElement;\r\n if (nodeList[i].nodeUrl) {\r\n const newSpan = document.createElement('span');\r\n newSpan.appendChild(\r\n this.createLink(\r\n nodeList[i].nodeName,\r\n nodeList[i].nodeUrl,\r\n linkClasses\r\n )\r\n );\r\n const emptySpan = document.createElement('span');\r\n lastIndex.after(...[emptySpan, newSpan]);\r\n } else {\r\n const newSpan = this.createSpan(nodeList[i].nodeName, spanClasses);\r\n const emptySpan = document.createElement('span');\r\n lastIndex.after(...[emptySpan, newSpan]);\r\n }\r\n }\r\n }\r\n\r\n createBreadcrumbs(\r\n nodeList: Breadcrumbs[],\r\n spanClasses = 'bc-current',\r\n linkClasses = 'bc-node'\r\n ) {\r\n const currentSpan = document.getElementById(\r\n 'ctl00_path'\r\n ) as HTMLSpanElement;\r\n currentSpan.innerHTML = '';\r\n const newSpan = document.createElement('span');\r\n currentSpan?.appendChild(newSpan);\r\n newSpan.appendChild(\r\n this.createLink(nodeList[0].nodeName, nodeList[0].nodeUrl, linkClasses)\r\n );\r\n const spans = currentSpan?.children;\r\n for (let i = 1; i < nodeList.length; i++) {\r\n const lastIndex = spans?.item(spans.length - 1) as HTMLSpanElement;\r\n if (nodeList[i].nodeUrl) {\r\n const newSpan = document.createElement('span');\r\n newSpan.appendChild(\r\n this.createLink(\r\n nodeList[i].nodeName,\r\n nodeList[i].nodeUrl,\r\n linkClasses\r\n )\r\n );\r\n const emptySpan = document.createElement('span');\r\n lastIndex?.after(...[emptySpan, newSpan]);\r\n } else {\r\n const newSpan = this.createSpan(nodeList[i].nodeName, spanClasses);\r\n const emptySpan = document.createElement('span');\r\n lastIndex.after(...[emptySpan, newSpan]);\r\n }\r\n }\r\n }\r\n\r\n removeLastBreadcrumb() {\r\n const spans = document.getElementById('ctl00_path')?.children;\r\n spans?.item(spans.length - 1)?.remove();\r\n spans?.item(spans.length - 1)?.remove();\r\n this.setCurrentNode(spans);\r\n }\r\n\r\n removeBreadcrumbByNodeName(nodeName: string) {\r\n const spans = document.getElementById('ctl00_path')\r\n ?.children as HTMLCollection;\r\n let index = -1;\r\n for (let i = 0; i < spans.length; i++) {\r\n const span = spans.item(i);\r\n if (span?.textContent?.trim() === nodeName) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n const lastNode = spans.length - 1 === index;\r\n if (index !== -1 && !lastNode) {\r\n spans?.item(index)?.remove();\r\n spans?.item(index)?.remove();\r\n } else {\r\n spans?.item(index)?.remove();\r\n spans?.item(index - 1)?.remove();\r\n }\r\n if (lastNode) {\r\n this.setCurrentNode(spans);\r\n }\r\n }\r\n\r\n removeLastBreadcrumbsByLength(length: number) {\r\n const spans = document.getElementById('ctl00_path')\r\n ?.children as HTMLCollection;\r\n while (length > 0) {\r\n spans?.item(spans.length - 1)?.remove();\r\n spans?.item(spans.length - 1)?.remove();\r\n length--;\r\n }\r\n if (spans.length > 0) {\r\n this.setCurrentNode(spans);\r\n }\r\n }\r\n\r\n private createLink(\r\n innerHTML: string,\r\n href: string | null,\r\n classes: string\r\n ): HTMLAnchorElement {\r\n const link = document.createElement('a');\r\n link.innerHTML = ' ' + innerHTML;\r\n link.href = href ?? '';\r\n link.classList.add(...[classes]);\r\n return link;\r\n }\r\n\r\n private createSpan(innerHTML: string, classes: string): HTMLSpanElement {\r\n const span = document.createElement('span');\r\n span.classList.add(...[classes]);\r\n span.innerHTML = ' ' + innerHTML;\r\n return span;\r\n }\r\n\r\n private setCurrentNode(spans?: HTMLCollection) {\r\n const lastSpan = spans?.item(spans.length - 1) as HTMLSpanElement;\r\n const lastSpanLink = spans\r\n ?.item(spans.length - 1)\r\n ?.children.item(0) as HTMLAnchorElement;\r\n lastSpan?.classList.add(...['bc-current']);\r\n lastSpan.innerHTML = lastSpanLink.innerHTML;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class CommonService {\r\n constructor() {}\r\n\r\n print(element: string, title: string, classes?: string) {\r\n const styles = this.getElementTag('style');\r\n const linkes = this.getElementTag('link');\r\n const scripts = this.getElementTag('script');\r\n\r\n const printContents = document.getElementById(element)?.innerHTML;\r\n const popupWin = window.open('', '', 'top=0,left=0,height=100%,width=auto');\r\n const data = `\r\n <!DOCTYPE html>\r\n <head>\r\n <title> ${title} </title>\r\n <meta charset=\"utf-8\">\r\n ${linkes}\r\n ${styles}\r\n <style>\r\n @media print {\r\n .noPrint{\r\n display: none !important;\r\n }\r\n body {\r\n direction: rtl;\r\n }\r\n }\r\n </style>\r\n </head>\r\n <body class=\"${classes}\">\r\n ${printContents}\r\n ${scripts}\r\n </body>\r\n\r\n </html>`;\r\n popupWin?.document.open();\r\n popupWin?.document.write(data);\r\n popupWin?.document.close();\r\n popupWin?.focus();\r\n popupWin?.addEventListener('focus', () => {\r\n setTimeout(() => {\r\n if (popupWin.document.hasFocus()) {\r\n popupWin.print();\r\n popupWin.close();\r\n }\r\n }, 1000);\r\n });\r\n }\r\n\r\n private getElementTag(tag: keyof HTMLElementTagNameMap): string {\r\n const html: string[] = [];\r\n const elements = document.getElementsByTagName(tag);\r\n for (let index = 0; index < elements.length; index++) {\r\n html.push(elements[index].outerHTML);\r\n }\r\n\r\n return html.join('\\r\\n');\r\n }\r\n}\r\n","/*\r\n * Public API Surface of ipa-library\r\n */\r\n// module\r\nexport * from './lib/ng-ipa-library.module';\r\nexport * from 'ngx-toastr';\r\nexport * from '@ng-select/ng-select';\r\nexport * from './lib/pipes/pipes.module';\r\nexport * from './lib/share-button/share-button.module';\r\n\r\n// core components\r\nexport * from './lib/core/components/loading/loading.component';\r\n\r\n// form components\r\nexport * from './lib/ipa-form/text-input/text-input.component';\r\nexport * from './lib/ipa-form/textarea-input/textarea-input.component';\r\nexport * from './lib/ipa-form/dropdown-input/dropdown-input.component';\r\nexport * from './lib/ipa-form/file-upload/file-upload.component';\r\nexport * from './lib/ipa-form/datepicker/hijri-datepicker/hijri-datepicker.component';\r\nexport * from './lib/ipa-form/datepicker/gregorian-datepicker/gregorian-datepicker.component';\r\nexport * from './lib/ipa-form/recaptcha/recaptcha.component';\r\nexport * from './lib/generate-form/generate-form.component';\r\nexport * from './lib/share-button/share-button.component';\r\n\r\n// interceptors\r\nexport * from './lib/core/interceptors/loading.interceptor';\r\nexport * from './lib/core/interceptors/error.interceptor';\r\nexport * from './lib/core/interceptors/token.interceptor';\r\nexport * from './lib/core/interceptors/myIPAToken.interceptor';\r\n\r\n// services\r\nexport * from './lib/core/services/loader.service';\r\nexport * from './lib/core/services/error.service';\r\nexport * from './lib/core/services/token.service';\r\nexport * from './lib/core/services/auth.service';\r\nexport * from './lib/ipa-form/ipa-form.service';\r\nexport * from './lib/services/breadcrumbs.service';\r\nexport * from './lib/services/common.service';\r\n\r\n//pipes\r\nexport * from './lib/pipes/hijri-date.pipe';\r\n\r\n//models\r\nexport * from './lib/models/pagedResult';\r\nexport * from './lib/models/apiException';\r\nexport * from './lib/models/apiResponse';\r\nexport * from './lib/models/generateForm.model';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["WEEKDAYS","MONTHS"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAKa,aAAa;IACxB,SAAS,CACP,IAAY,EACZ,SAAiB,eAAe,EAChC,OAAoB,IAAI;QAExB,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KACzC;;0GARU,aAAa;wGAAb,aAAa;2FAAb,aAAa;kBAHzB,IAAI;mBAAC;oBACJ,IAAI,EAAE,WAAW;iBAClB;;;MCGY,WAAW;;wGAAX,WAAW;yGAAX,WAAW,iBAHP,aAAa,aAClB,aAAa;yGAEZ,WAAW;2FAAX,WAAW;kBAJvB,QAAQ;mBAAC;oBACR,YAAY,EAAE,CAAC,aAAa,CAAC;oBAC7B,OAAO,EAAE,CAAC,aAAa,CAAC;iBACzB;;;MCGY,cAAc;IACzB,YAAoB,eAAuC;QAAvC,oBAAe,GAAf,eAAe,CAAwB;KAAI;;;;IAK/D,OAAO,cAAc,CAAC,OAAwB;QAC5C,MAAM,WAAW,GACf,uDAAuD,CAAC,IAAI,CAC1D,OAAO,CAAC,KAAK,CACd,CAAC;QACJ,OAAO,WAAW,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;KAC9D;;;;IAKD,OAAO,iBAAiB,CAAC,OAAwB;QAC/C,MAAM,WAAW,GACf,kFAAkF,CAAC,IAAI,CACrF,OAAO,CAAC,KAAK,CACd,CAAC;QACJ,OAAO,WAAW,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;KACjE;;;;IAKD,OAAO,QAAQ,CAAC,OAAwB;QACtC,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpD,OAAO,WAAW,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;KAClE;;;;IAKD,OAAO,KAAK,CAAC,OAAwB;QACnC,MAAM,WAAW,GACf,qHAAqH,CAAC,IAAI,CACxH,OAAO,CAAC,KAAK,CACd,CAAC;QACJ,OAAO,WAAW,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;KAC/D;;;;IAKD,OAAO,OAAO,CAAC,OAAwB;QACrC,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC5B,IACE,cAAc,CAAC,kBAAkB,CAAC,KAAK,CAAC;YACxC,cAAc,CAAC,eAAe,CAAC,KAAK,CAAC,EACrC;YACA,OAAO,GAAG,IAAI,CAAC;SAChB;aAAM;YACL,OAAO,GAAG,KAAK,CAAC;SACjB;QACD,OAAO,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;KACrD;IAED,eAAe,CACb,OAAoB,EACpB,eAAe,GAAG,EAAE,EACpB,QAAiB;QAEjB,KAAK,MAAM,YAAY,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,EAAE;YAC1C,IACE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC;iBAC3C,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,EAClC;gBACA,OAAO,IAAI,CAAC,wBAAwB,CAClC,YAAY,EACZ,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,EAC5B,eAAe,EACf,QAAQ,CACT,CAAC;aACH;SACF;QACD,OAAO,IAAI,CAAC;KACb;;;;;;;;;;IAWD,kBAAkB,CAChB,IAAY,EACZ,MAAM,GAAG,eAAe,EACxB,IAAI,GAAG,OAAO;QAEd,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KACzC;IAED,sBAAsB,CACpB,IAAY,EACZ,MAAM,GAAG,YAAY,EACrB,IAAI,GAAG,IAAI;QAEX,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzB,MAAM,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,WAAW,CACxC,IAAI,CAAC,IAAI,EAAE,EACX,IAAI,CAAC,KAAK,EAAE,EACZ,IAAI,CAAC,IAAI,EAAE,CACZ,CAAC;QACF,OAAO,WAAW,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KAC/D;IAED,mBAAmB;QACjB,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO,WAAW,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;KAC9C;IAEO,wBAAwB,CAC9B,aAAqB,EACrB,cAAmB,EACnB,eAAuB,EACvB,QAAiB;QAEjB,IAAI,aAAa,KAAK,SAAS,EAAE;YAC/B,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;SACtE;QACD,MAAM,MAAM,GAAQ;YAClB,QAAQ,EAAE,QAAQ,GAAG,iBAAiB,GAAG,qBAAqB;YAC9D,OAAO,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE;YACpC,KAAK,EACH,CAAC,QAAQ,GAAG,2BAA2B,GAAG,gBAAgB;gBAC1D,uBAAuB;YACzB,SAAS,EAAE,QAAQ;kBACf,gCAAgC,cAAc,CAAC,cAAc,OAAO;kBACpE,4BAA4B,cAAc,CAAC,cAAc,UAAU;YACvE,SAAS,EAAE,QAAQ;kBACf,iBAAiB,cAAc,CAAC,cAAc,MAAM;kBACpD,4BAA4B,cAAc,CAAC,cAAc,UAAU;YACvE,GAAG,EAAE,QAAQ;kBACT,wBAAwB,cAAc,CAAC,GAAG,EAAE;kBAC5C,8BAA8B,cAAc,CAAC,GAAG,GAAG;YACvD,GAAG,EAAE,QAAQ;kBACT,wBAAwB,cAAc,CAAC,GAAG,EAAE;kBAC5C,8BAA8B,cAAc,CAAC,GAAG,GAAG;YACvD,OAAO,EAAE,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC;YACtD,OAAO,EAAE,QAAQ;kBACb,gCAAgC;kBAChC,0BAA0B;YAC9B,IAAI,EACF,CAAC,QAAQ,GAAG,kBAAkB,GAAG,aAAa;gBAC9C,sBAAsB;YACxB,OAAO,EACL,CAAC,QAAQ,GAAG,oBAAoB,GAAG,iBAAiB;gBACpD,kCAAkC;YACpC,QAAQ,EACN,CAAC,QAAQ,GAAG,oBAAoB,GAAG,sBAAsB;gBACzD,cAAc;SACjB,CAAC;QACF,OAAO,MAAM,CAAC,aAAa,CAAC,CAAC;KAC9B;IAEO,aAAa,CAAC,cAAmB,EAAE,eAAuB;QAChE,IAAI,OAAO,mCACN,cAAc,KACjB,OAAO,EAAE,eAAe,GACzB,CAAC;QACF,OAAO,OAAO,CAAC;KAChB;IAEO,wBAAwB,CAAC,cAAmB;QAClD,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,IAAI,cAAc,CAAC,OAAO,EAAE;YAC1B,GAAG,GAAG,mBAAmB,IAAI,CAAC,eAAe,CAAC,MAAM,CAClD,cAAc,CAAC,OAAO,CAAC,MAAM,CAC9B,0BAA0B,IAAI,CAAC,eAAe,CAAC,MAAM,CACpD,cAAc,CAAC,OAAO,CAAC,OAAO,CAC/B,GAAG,CAAC;SACN;aAAM,IAAI,cAAc,CAAC,OAAO,EAAE;YACjC,GAAG,GAAG,mBAAmB,IAAI,CAAC,eAAe,CAAC,MAAM,CAClD,cAAc,CAAC,OAAO,CAAC,MAAM,CAC9B,iDAAiD,IAAI,CAAC,eAAe,CAAC,MAAM,CAC3E,cAAc,CAAC,OAAO,CAAC,OAAO,CAC/B,GAAG,CAAC;SACN;aAAM,IAAI,cAAc,CAAC,OAAO,EAAE;YACjC,GAAG,GAAG,2BAA2B,cAAc,CAAC,OAAO,GAAG,CAAC;SAC5D;QACD,OAAO,GAAG,CAAC;KACZ;IAEO,OAAO,WAAW,CAAC,KAAa;QACtC,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrC,IAAI,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE;gBAC5B,IAAI,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC;gBACxB,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;aACpD;iBAAM;gBACL,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;aAC/C;SACF;QACD,OAAO,QAAQ,CAAC;KACjB;IAEO,OAAO,kBAAkB,CAAC,OAAe;QAC/C,IAAI,OAAO,EAAE;YACX,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,OAAO,OAAO,GAAG,CAAC,EAAE;gBAClB,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBAC1B,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;iBACzD;qBAAM;oBACL,MAAM;wBACJ,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC;iBACpE;gBACD,OAAO,EAAE,CAAC;aACX;YACD,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,IAAI,MAAM,CAAC;YACX,IAAI,cAAc,CAAC;YACnB,IAAI,UAAU,CAAC;YACf,OAAO,GAAG,CAAC,CAAC;YACZ,OAAO,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE;gBAC9B,UAAU,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACzC,MAAM,IAAI,UAAU,CAAC;gBACrB,OAAO,EAAE,CAAC;aACX;YACD,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC3B,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;gBACtB,cAAc,GAAG,MAAM,CAAC;aACzB;iBAAM;gBACL,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;aACrE;YACD,IAAI,cAAc,IAAI,CAAC,EAAE;gBACvB,UAAU,GAAG,CAAC,CAAC;aAChB;iBAAM;gBACL,UAAU,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,EAAE,QAAQ,EAAE,CAAC;aAChD;YACD,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACzC,IACE,UAAU;gBACR,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC;gBAC1D,KAAK,CAAC,MAAM,IAAI,EAAE;gBAClB,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAC5B;gBACA,OAAO,IAAI,CAAC;aACb;iBAAM;gBACL,OAAO,KAAK,CAAC;aACd;SACF;aAAM;YACL,OAAO,KAAK,CAAC;SACd;KACF;IAEO,OAAO,eAAe,CAAC,OAAe;QAC5C,IAAI,OAAO,EAAE;YACX,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,OAAO,OAAO,GAAG,CAAC,EAAE;gBAClB,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBAC1B,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;iBACzD;qBAAM;oBACL,MAAM;wBACJ,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC;iBACpE;gBACD,OAAO,EAAE,CAAC;aACX;YACD,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,IAAI,MAAM,CAAC;YACX,IAAI,cAAc,CAAC;YACnB,IAAI,UAAU,CAAC;YACf,OAAO,GAAG,CAAC,CAAC;YACZ,OAAO,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE;gBAC9B,UAAU,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACzC,MAAM,IAAI,UAAU,CAAC;gBACrB,OAAO,EAAE,CAAC;aACX;YACD,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC3B,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;gBACtB,cAAc,GAAG,MAAM,CAAC;aACzB;iBAAM;gBACL,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;aACrE;YACD,IAAI,cAAc,IAAI,CAAC,EAAE;gBACvB,UAAU,GAAG,CAAC,CAAC;aAChB;iBAAM;gBACL,UAAU,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,EAAE,QAAQ,EAAE,CAAC;aAChD;YACD,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACzC,IACE,UAAU;gBACR,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC;gBAC1D,KAAK,CAAC,MAAM,IAAI,EAAE;gBAClB,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAC5B;gBACA,OAAO,IAAI,CAAC;aACb;iBAAM;gBACL,OAAO,KAAK,CAAC;aACd;SACF;aAAM;YACL,OAAO,KAAK,CAAC;SACd;KACF;;2GAnTU,cAAc;+GAAd,cAAc,cAFb,MAAM;2FAEP,cAAc;kBAH1B,UAAU;mBAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;;MCUY,kBAAkB;IAgB7B,YACU,iBAAiC,EAC1B,UAAqB,EAC5B,EAAqB;QAFrB,sBAAiB,GAAjB,iBAAiB,CAAgB;QAC1B,eAAU,GAAV,UAAU,CAAW;QAC5B,OAAE,GAAF,EAAE,CAAmB;QAhBtB,SAAI,GAAG,MAAM,CAAC;QACd,gBAAW,GAAG,mBAAmB,CAAC;QAClC,UAAK,GAAW,YAAY,CAAC;QAC7B,aAAQ,GAAG,KAAK,CAAC;QACjB,oBAAe,GAAG,iBAAiB,CAAC;QACpC,eAAU,GAAG,KAAK,CAAC;QACnB,YAAO,GAAG,EAAE,CAAC;QAGb,iBAAY,GAAG,IAAI,CAAC;QAC7B,gBAAW,GAAgB,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;QAQ7C,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC;KACtC;IAED,qBAAqB;QACnB,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;KACzB;IAED,QAAQ;QACN,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QACxC,MAAM,UAAU,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,IAAG,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;QAEjE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa,CAAC,UAAU,CAAC,CAAC;QACnC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,sBAAsB,EAAE,CAAC;QAClC,IAAI,CAAC,WAAW,GAAG,OAAsB,CAAC;KAC3C;IAED,QAAQ,CAAC,KAAU,KAAU;IAE7B,SAAS,MAAW;IACpB,UAAU,CAAC,GAAQ;QACjB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,GAAG,GAAG,IAAI,EAAE,CAAC;KAC5C;IAED,gBAAgB,CAAC,EAAO;QACtB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;IAED,iBAAiB,CAAC,EAAO;QACvB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;IAED,aAAa,CAAC,KAAY;QACxB,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YAC5C,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YACtD,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACtC,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;YAClC,IAAI,YAAY,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;gBAC3C,KAAK,CAAC,eAAe,EAAE,CAAC;aACzB;SACF;KACF;IAED,IAAI,YAAY;QACd,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,CACpD,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,YAAY,CAClB,CAAC;QACF,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;;+GAvEU,kBAAkB;mGAAlB,kBAAkB,obClB/B,y1BASM;2FDSO,kBAAkB;kBAL9B,SAAS;+BACE,gBAAgB;;;8BAsBvB,IAAI;;yBAjB+B,KAAK;sBAA1C,SAAS;uBAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAC3B,EAAE;sBAAV,KAAK;gBACG,IAAI;sBAAZ,KAAK;gBACG,WAAW;sBAAnB,KAAK;gBACG,KAAK;sBAAb,KAAK;gBACG,QAAQ;sBAAhB,KAAK;gBACG,eAAe;sBAAvB,KAAK;gBACG,UAAU;sBAAlB,KAAK;gBACG,OAAO;sBAAf,KAAK;gBACG,OAAO;sBAAf,KAAK;gBACG,gBAAgB;sBAAxB,KAAK;gBACG,YAAY;sBAApB,KAAK;;;MEZK,sBAAsB;IAejC,YACU,iBAAiC,EAC1B,UAAqB,EAC5B,EAAqB;QAFrB,sBAAiB,GAAjB,iBAAiB,CAAgB;QAC1B,eAAU,GAAV,UAAU,CAAW;QAC5B,OAAE,GAAF,EAAE,CAAmB;QAjBO,UAAK,GACzC,IAAI,UAAU,CAAM,IAAI,CAAC,CAAC;QAEnB,gBAAW,GAAG,mBAAmB,CAAC;QAClC,UAAK,GAAW,gBAAgB,CAAC;QACjC,aAAQ,GAAG,KAAK,CAAC;QACjB,oBAAe,GAAG,iBAAiB,CAAC;QAIpC,iBAAY,GAAG,IAAI,CAAC;QAC7B,gBAAW,GAAgB,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;QAQ7C,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC;KACtC;IAED,qBAAqB;QACnB,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;KACzB;IAED,QAAQ;QACN,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QACxC,MAAM,UAAU,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,IAAG,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;QAEjE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa,CAAC,UAAU,CAAC,CAAC;QACnC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,sBAAsB,EAAE,CAAC;QAClC,IAAI,CAAC,WAAW,GAAG,OAAsB,CAAC;KAC3C;IAED,QAAQ,CAAC,KAAU,KAAU;IAE7B,SAAS,MAAW;IACpB,UAAU,CAAC,GAAQ;QACjB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,GAAG,GAAG,IAAI,EAAE,CAAC;KAC5C;IAED,gBAAgB,CAAC,EAAO;QACtB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;IAED,iBAAiB,CAAC,EAAO;QACvB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;IAED,IAAI,YAAY;QACd,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,CACpD,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,YAAY,CAClB,CAAC;QACF,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;;mHA1DU,sBAAsB;uGAAtB,sBAAsB,gZClBnC,82BAYM;2FDMO,sBAAsB;kBALlC,SAAS;+BACE,oBAAoB;;;8BAqB3B,IAAI;;yBAhB+B,KAAK;sBAA1C,SAAS;uBAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAE3B,EAAE;sBAAV,KAAK;gBACG,WAAW;sBAAnB,KAAK;gBACG,KAAK;sBAAb,KAAK;gBACG,QAAQ;sBAAhB,KAAK;gBACG,eAAe;sBAAvB,KAAK;gBACG,OAAO;sBAAf,KAAK;gBACG,OAAO;sBAAf,KAAK;gBACG,gBAAgB;sBAAxB,KAAK;gBACG,YAAY;sBAApB,KAAK;;;MEbK,sBAAsB;IAkBjC,YACU,iBAAiC,EAC1B,UAAqB;QAD5B,sBAAiB,GAAjB,iBAAiB,CAAgB;QAC1B,eAAU,GAAV,UAAU,CAAW;QAjB7B,UAAK,GAAW,YAAY,CAAC;QAC7B,UAAK,GAAU,EAAE,CAAC;QAGlB,aAAQ,GAAG,KAAK,CAAC;QAEjB,eAAU,GAAG,KAAK,CAAC;QACnB,iBAAY,GAAG,gBAAgB,CAAC;QAGhC,iBAAY,GAAG,IAAI,CAAC;QACpB,qBAAgB,GAAG,KAAK,CAAC;QAClC,gBAAW,GAAgB,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;QAO7C,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC;KACtC;IAED,QAAQ;QACN,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QACxC,MAAM,UAAU,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,IAAG,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;QAEjE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa,CAAC,UAAU,CAAC,CAAC;QACnC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,sBAAsB,EAAE,CAAC;QAClC,IAAI,CAAC,WAAW,GAAG,OAAsB,CAAC;QAC1C,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;KACjC;IAED,QAAQ,CAAC,KAAU,KAAU;IAE7B,SAAS,MAAW;IACpB,UAAU,CAAC,GAAQ;QACjB,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,IAAI,EAAE,CAAC;KAC9C;IAED,gBAAgB,CAAC,EAAO;QACtB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;IAED,iBAAiB,CAAC,EAAO;QACvB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;IAED,IAAI,YAAY;QACd,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,CACpD,IAAI,CAAC,WAAW,EAChB,EAAE,EACF,IAAI,CAAC,YAAY,CAClB,CAAC;QACF,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;;mHAzDU,sBAAsB;uGAAtB,sBAAsB,+fChBnC,uyDAyBM;2FDTO,sBAAsB;kBALlC,SAAS;+BACE,oBAAoB;;;8BAwB3B,IAAI;;yBAnBgC,KAAK;sBAA3C,SAAS;uBAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAC5B,EAAE;sBAAV,KAAK;gBACG,KAAK;sBAAb,KAAK;gBACG,KAAK;sBAAb,KAAK;gBACG,SAAS;sBAAjB,KAAK;gBACG,UAAU;sBAAlB,KAAK;gBACG,QAAQ;sBAAhB,KAAK;gBACG,cAAc;sBAAtB,KAAK;gBACG,UAAU;sBAAlB,KAAK;gBACG,YAAY;sBAApB,KAAK;gBACG,OAAO;sBAAf,KAAK;gBACG,gBAAgB;sBAAxB,KAAK;gBACG,YAAY;sBAApB,KAAK;gBACG,gBAAgB;sBAAxB,KAAK;;;MEtBK,aAAa;IAGxB;QAFO,cAAS,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;QAC9C,SAAI,GAAmB,EAAE,CAAC;KACV;IAEhB,gBAAgB,CAAC,IAAoB;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;KAClB;IAED,eAAe,CAAC,GAAiB;QAC/B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACrB;;0GAXU,aAAa;8GAAb,aAAa,cAFZ,MAAM;2FAEP,aAAa;kBAHzB,UAAU;mBAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;;MCMY,eAAe;IAI1B,YACU,aAA4B,EAC5B,GAAsB;QADtB,kBAAa,GAAb,aAAa,CAAe;QAC5B,QAAG,GAAH,GAAG,CAAmB;QALhC,YAAO,GAAG,IAAI,CAAC;QACN,YAAO,GAAG,KAAK,CAAC;KAKrB;IAEJ,eAAe;QACb,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;YACvC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;YACjB,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;YACrD,IAAI,MAAM,EAAE;gBACV,IAAI,IAAI,CAAC,OAAO,EAAE;oBAChB,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;iBAC/B;qBAAM;oBACL,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM;wBAAE,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;iBACpE;aACF;YACD,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC1B,CAAC,CAAC;KACJ;;4GAtBU,eAAe;gGAAf,eAAe,kFCb5B,uGAGA;2FDUa,eAAe;kBAL3B,SAAS;+BACE,YAAY;iIAMb,OAAO;sBAAf,KAAK;;;MEIK,mBAAmB;IAsB9B;;IAEU,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;QArB7B,iBAAY,GAAG,IAAI,CAAC;QACpB,UAAK,GAAG,EAAE,CAAC;QACX,aAAQ,GAAG,KAAK,CAAC;QACjB,kBAAa,GAAG,EAAE,CAAC;QACnB,aAAQ,GAAG,CAAC,CAAC;QACb,gBAAW,GAAG,CAAC,CAAC;QAChB,WAAM,GAAG,MAAM,CAAC;QAChB,eAAU,GAAG,KAAK,CAAC;QACnB,WAAM,GAAG,QAAQ,CAAC;QAEjB,kBAAa,GAAG,IAAI,YAAY,EAAE,CAAC;QACnC,cAAS,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,gBAAW,GAAG,IAAI,YAAY,EAAE,CAAC;QAC3C,cAAS,GAAG,KAAK,CAAC;QAClB,WAAM,GAAa,EAAE,CAAC;QAEtB,eAAU,GAAW,EAAE,CAAC;QACxB,iBAAY,GAAW,EAAE,CAAC;KAKtB;IAEJ,QAAQ;QACN,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,MAAM,GAAG,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC;QACnE,IAAI,CAAC,MAAM,GAAG;YACZ,GAAG,EAAE,IAAI,CAAC,MAAM;YAChB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE;gBACP,aAAa,EAAE,SAAS,GAAG,IAAI,CAAC,aAAa;aAC9C;YACD,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,cAAc,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC;YACjC,mBAAmB,EAAE,IAAI,CAAC,YAAY;kBAClC,0BAA0B;kBAC1B,gCAAgC;YACpC,cAAc,EAAE,IAAI,CAAC,YAAY;kBAC7B,0BAA0B;kBAC1B,6CAA6C,IAAI,CAAC,WAAW,MAAM;YACvE,oBAAoB,EAAE,IAAI,CAAC,YAAY;kBACnC,2DAA2D;kBAC3D,6DAA6D;YACjE,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,gBAAgB,EAAE,IAAI,CAAC,UAAU;YACjC,eAAe,EAAE,eAAe;YAChC,cAAc,EAAE,EAAE;SACnB,CAAC;KACH;IAED,kBAAkB,CAAC,CAAM;QACvB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;SACtB;QACD,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;KAC1B;IAED,eAAe,CAAC,CAAM;QACpB,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;YAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC5B;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY;cAC7B,yBAAyB;cACzB,mCAAmC,CAAC;QACxC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;KACrC;IAED,aAAa,CAAC,CAAM;QAClB,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;YACR,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;SAC5C;KACF;IAED,YAAY,CAAC,CAAO;QAClB,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC/C,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;YACvB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;YAC/B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBACpB,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;aACjC;SACF;QACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACxB;IAED,OAAO,CAAC,CAAM;QACZ,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;KAClB;IAED,KAAK,CAAC,CAAM,KAAU;IAEtB,UAAU,CAAC,IAAS;QAClB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAC1C,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CACpD,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;KACzB;;gHA3GU,mBAAmB;oGAAnB,mBAAmB,qcACnB,iBAAiB,gDCpB9B,urEAoCM;2FDjBO,mBAAmB;kBAL/B,SAAS;+BACE,iBAAiB;oGAM3B,WAAW;sBADV,SAAS;uBAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;gBAEtC,YAAY;sBAApB,KAAK;gBACG,KAAK;sBAAb,KAAK;gBACG,QAAQ;sBAAhB,KAAK;gBACG,aAAa;sBAArB,KAAK;gBACG,QAAQ;sBAAhB,KAAK;gBACG,WAAW;sBAAnB,KAAK;gBACG,MAAM;sBAAd,KAAK;gBACG,UAAU;sBAAlB,KAAK;gBACG,MAAM;sBAAd,KAAK;gBACG,aAAa;sBAArB,KAAK;gBACI,aAAa;sBAAtB,MAAM;gBACG,SAAS;sBAAlB,MAAM;gBACG,WAAW;sBAApB,MAAM;;;ME1BI,kBAAkB;IAQ7B,YAA2B,UAAqB;QAArB,eAAU,GAAV,UAAU,CAAW;QAPvC,YAAO,GAAG,0CAA0C,CAAC;QACrD,kBAAa,GAAyB,QAAQ,CAAC;QAC/C,SAAI,GAAgB,IAAI,CAAC;QACzB,kBAAa,GAAsB,OAAO,CAAC;QAC3C,UAAK,GAAqB,OAAO,CAAC;QAClC,oBAAe,GAAG,IAAI,CAAC;QAChC,gBAAW,GAAgB,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;QAE7C,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC;KACtC;IAED,QAAQ;QACN,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QACxC,MAAM,UAAU,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,IAAG,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;QAEjE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa,CAAC,UAAU,CAAC,CAAC;QACnC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,sBAAsB,EAAE,CAAC;QAClC,IAAI,CAAC,WAAW,GAAG,OAAsB,CAAC;KAC3C;IAED,QAAQ,CAAC,KAAU,KAAU;IAE7B,SAAS,MAAW;IACpB,UAAU,CAAC,GAAQ,KAAU;IAE7B,gBAAgB,CAAC,EAAO;QACtB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;IAED,iBAAiB,CAAC,EAAO;QACvB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;;+GAhCU,kBAAkB;mGAAlB,kBAAkB,uNCR/B,sNAEiB;2FDMJ,kBAAkB;kBAL9B,SAAS;+BACE,eAAe;;;8BAYZ,IAAI;;yBAPR,OAAO;sBAAf,KAAK;gBACG,aAAa;sBAArB,KAAK;gBACG,IAAI;sBAAZ,KAAK;gBACG,aAAa;sBAArB,KAAK;gBACG,KAAK;sBAAb,KAAK;gBACG,eAAe;sBAAvB,KAAK;;;MEJK,qBAAqB;IAoBhC,YAAoB,iBAAiC;QAAjC,sBAAiB,GAAjB,iBAAiB,CAAgB;QAjB5C,iBAAY,GAAG,IAAI,CAAC;QAIpB,kBAAa,GAAyB,QAAQ,CAAC;QAC/C,SAAI,GAAgB,IAAI,CAAC;QACzB,kBAAa,GAAsB,OAAO,CAAC;QAC3C,UAAK,GAAqB,OAAO,CAAC;QAClC,oBAAe,GAAG,IAAI,CAAC;;QAGtB,kBAAa,GAAG,IAAI,YAAY,EAAE,CAAC;QACnC,cAAS,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,gBAAW,GAAG,IAAI,YAAY,EAAE,CAAC;KAIc;IAEzD,QAAQ;QACN,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;IAED,eAAe,CAAC,eAAuB;QACrC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,GAAG,eAAe,CAAc,CAAC;KACtE;IAED,eAAe,CAAC,eAAuB;QACrC,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAC5C,eAAe,CACD,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,CACpD,WAAW,EACX,EAAE,EACF,IAAI,CAAC,YAAY,CAClB,CAAC;QACF,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IAED,aAAa,CAAC,KAAU;QACtB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAChC;IAED,SAAS,CAAC,IAAS,EAAE,eAAuB;QAC1C,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC3B;IAED,WAAW,CAAC,KAAU,EAAE,eAAuB;QAC7C,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9B;IAEO,yBAAyB;QAC/B,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM;;YAC/C,uCACK,MAAM,KACT,IAAI,EAAE,MAAA,MAAM,CAAC,IAAI,0CAAE,GAAG,CAAC,CAAC,IAAI;oBAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAU,CAAC,CAAC;oBACtC,uCACK,IAAI,KACP,CAAC,MAAM,CAAC,SAAU,GAAG,IAAI,CAAC,YAAY;8BAClC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;8BACnB,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IACvB;iBACH,CAAC,IACF;SACH,CAAC,CAAC;KACJ;IAEO,UAAU;QAChB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM;YAC/B,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE;gBAC9B,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;aACjC;iBAAM;gBACL,IAAI,CAAC,YAAY,CAAC,UAAU,CAC1B,MAAM,CAAC,eAAe,EACtB,IAAI,WAAW,CACb,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,YAAa,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,EAC9D;oBACE,MAAM,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,GAAG,UAAU,CAAC,aAAa;oBAChE,MAAM,CAAC,iBAAiB;0BACpB,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC;0BAC5C,UAAU,CAAC,aAAa;oBAC5B,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;wBAC7D,CAAC,CAAC;0BACE,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,IAAK,CAAC;0BAClC,UAAU,CAAC,aAAa;oBAC5B,MAAM,CAAC,IAAI,KAAK,QAAQ;0BACpB,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;0BACjB,UAAU,CAAC,aAAa;iBAC7B,CACF,CACF,CAAC;aACH;SACF,CAAC,CAAC;KACJ;IAEO,kBAAkB,CAAC,MAAc;QACvC,IAAI,aAAa,GAAG,IAAI,SAAS,CAC/B,MAAM,CAAC,IAAK,CAAC,GAAG,CAAC,CAAC,IAAI;YACpB,OAAO,IAAI,SAAS,CAAC;gBACnB,CAAC,MAAM,CAAC,UAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,UAAW,CAAC,CAAC;gBAC/D,CAAC,MAAM,CAAC,SAAU,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,SAAU,CAAC,CAAC;gBAC7D,QAAQ,EAAE,IAAI,WAAW,CAAC,KAAK,CAAC;aACjC,CAAC,CAAC;SACJ,CAAC,CACH,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,UAAU,CAC1B,MAAM,CAAC,eAAe,EACtB,IAAI,WAAW,CACb,IAAI,EACJ,MAAM,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,GAAG,UAAU,CAAC,aAAa,CACjE,CACF,CAAC;QACF,IAAI,CAAC,YAAY,CAAC,UAAU,CAC1B,OAAO,GAAG,MAAM,CAAC,eAAe,EAChC,aAAa,CACd,CAAC;QACF,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAY;YAChD,IAAI,aAAa,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;YAC1D,IAAI,aAAa,EAAE;gBACjB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,UAAU,CAC3D,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAU,CAAC,CAAC,CAC/C,CAAC;aACH;iBAAM;gBACL,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBACpE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,aAAa,EAAE,CAAC;aACpE;SACF,CAAC,CAAC;KACJ;IAEO,yBAAyB,CAAC,KAAY;QAC5C,IAAI,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1D,OAAO,aAAa,CAAC,MAAM,GAAG,CAAC,GAAG,aAAa,GAAG,IAAI,CAAC;KACxD;;kHA5IU,qBAAqB;sGAArB,qBAAqB,sYCVlC,wjMA8FO;2FDpFM,qBAAqB;kBALjC,SAAS;+BACE,mBAAmB;kGAKpB,YAAY;sBAApB,KAAK;gBACG,IAAI;sBAAZ,KAAK;gBACG,YAAY;sBAApB,KAAK;gBAGG,OAAO;sBAAf,KAAK;gBACG,aAAa;sBAArB,KAAK;gBACG,IAAI;sBAAZ,KAAK;gBACG,aAAa;sBAArB,KAAK;gBACG,KAAK;sBAAb,KAAK;gBACG,eAAe;sBAAvB,KAAK;gBAGI,aAAa;sBAAtB,MAAM;gBACG,SAAS;sBAAlB,MAAM;gBACG,WAAW;sBAApB,MAAM;;;MEXI,mBAAmB;IAe9B,YACU,cAA8B,EAC9B,QAAqB,EACd,UAAqB,EACpC,MAAgC;QAHxB,mBAAc,GAAd,cAAc,CAAgB;QAC9B,aAAQ,GAAR,QAAQ,CAAa;QACd,eAAU,GAAV,UAAU,CAAW;QAf7B,UAAK,GAAG,YAAY,CAAC;QACrB,oBAAe,GAAG,iBAAiB,CAAC;QACpC,aAAQ,GAAG,KAAK,CAAC;QAKjB,iBAAY,GAAG,IAAI,CAAC;QAC7B,UAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACjC,gBAAW,GAAgB,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;QAS7C,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC;QACrC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;KACzB;IAED,QAAQ;QACN,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QACxC,MAAM,UAAU,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,IAAG,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;QAEjE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa,CAAC,UAAU,CAAC,CAAC;QACnC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,sBAAsB,EAAE,CAAC;QAClC,IAAI,CAAC,WAAW,GAAG,OAAsB,CAAC;KAC3C;IAED,QAAQ,CAAC,KAAU,KAAU;IAE7B,SAAS,MAAW;IACpB,UAAU,CAAC,GAAQ,KAAU;IAE7B,gBAAgB,CAAC,EAAO;QACtB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;IAED,iBAAiB,CAAC,EAAO;QACvB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;IAED,cAAc,CAAC,KAAU;QACvB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE;YAC7B,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACzB,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,OAAO;SACR;QACD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;KACzB;IAED,IAAI,YAAY;QACd,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CACjD,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,YAAY,CAClB,CAAC;QACF,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;;gHA/DU,mBAAmB;oGAAnB,mBAAmB,uXCfhC,ynDAqBM;2FDNO,mBAAmB;kBAL/B,SAAS;+BACE,gBAAgB;;;8BAsBvB,IAAI;;yBAjBS,UAAU;sBAAzB,SAAS;uBAAC,GAAG;gBACL,EAAE;sBAAV,KAAK;gBACG,KAAK;sBAAb,KAAK;gBACG,eAAe;sBAAvB,KAAK;gBACG,QAAQ;sBAAhB,KAAK;gBACG,OAAO;sBAAf,KAAK;gBACG,OAAO;sBAAf,KAAK;gBACG,OAAO;sBAAf,KAAK;gBACG,gBAAgB;sBAAxB,KAAK;gBACG,YAAY;sBAApB,KAAK;;;AErBR,MAAMA,UAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACrD,MAAMC,QAAM,GAAG;IACb,MAAM;IACN,KAAK;IACL,YAAY;IACZ,YAAY;IACZ,cAAc;IACd,cAAc;IACd,KAAK;IACL,OAAO;IACP,OAAO;IACP,MAAM;IACN,WAAW;IACX,UAAU;CACX,CAAC;MAGW,oBAAoB,iBAAiB;IAChD,iBAAiB,CAAC,KAAa;QAC7B,OAAOA,QAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;KAC1B;IAED,gBAAgB,CAAC,KAAa;QAC5B,OAAOA,QAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;KAC1B;IAED,eAAe,CAAC,OAAe,EAAE,KAAwB;QACvD,OAAOD,UAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;KAC9B;IAED,eAAe,CAAC,IAAmB;QACjC,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;KACjD;;wGAfU,WAAW;4GAAX,WAAW;2FAAX,WAAW;kBADvB,UAAU;;;MCPE,iCAAiC,mBAAmB;;qHAApD,wBAAwB;yGAAxB,wBAAwB,+CALxB;QACT,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,0BAA0B,EAAE;QAC9D,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE;KACtD,iDFXH,ynDAqBM;2FERO,wBAAwB;kBATpC,SAAS;+BACE,sBAAsB,aAGrB;wBACT,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,0BAA0B,EAAE;wBAC9D,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,WAAW,EAAE;qBACtD;;;ACPH,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACrD,MAAM,MAAM,GAAG;IACb,OAAO;IACP,QAAQ;IACR,MAAM;IACN,OAAO;IACP,MAAM;IACN,OAAO;IACP,OAAO;IACP,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;CACT,CAAC;MAGW,qBAAqB,iBAAiB;IACjD,iBAAiB,CAAC,KAAa;QAC7B,OAAO,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;KAC1B;IAED,gBAAgB,CAAC,KAAa;QAC5B,OAAO,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;KAC1B;IAED,eAAe,CAAC,OAAe,EAAE,KAAwB;QACvD,OAAO,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;KAC9B;IAED,eAAe,CAAC,IAAmB;QACjC,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;KACjD;;yGAfU,YAAY;6GAAZ,YAAY;2FAAZ,YAAY;kBADxB,UAAU;;;MCNE,qCAAqC,mBAAmB;;yHAAxD,4BAA4B;6GAA5B,4BAA4B,mDAL5B;QACT,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,oBAAoB,EAAC;QACvD,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,YAAY,EAAE;KACvD,iDJZH,ynDAqBM;2FIPO,4BAA4B;kBATxC,SAAS;+BACE,0BAA0B,aAGzB;wBACT,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,oBAAoB,EAAC;wBACvD,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,YAAY,EAAE;qBACvD;;;MCLU,oBAAoB;IAI/B;QAHS,UAAK,GAAG,EAAE,CAAC;QACX,gBAAW,GAAG,EAAE,CAAC;QACjB,aAAQ,GAAG,EAAE,CAAC;KACP;IAChB,eAAe;QACb,MAAM,QAAQ,GAAG,QAAQ,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAC;QACjE,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC3C,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC9C,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;QAChC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACtC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5B,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KAC3B;;iHAdU,oBAAoB;qGAApB,oBAAoB,sICPjC,kNAEqB;2FDKR,oBAAoB;kBALhC,SAAS;+BACE,kBAAkB;0EAKnB,KAAK;sBAAb,KAAK;gBACG,WAAW;sBAAnB,KAAK;gBACG,QAAQ;sBAAhB,KAAK;;;MEiBK,iBAAiB;IAC5B,YAAY,OAAsB;QAChC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;KAC3B;;8GAHU,iBAAiB;+GAAjB,iBAAiB,iBAfb,oBAAoB,aAEjC,gBAAgB;QAChB,uBAAuB;QACvB,aAAa;QACb,iBAAiB,aAGjB,oBAAoB;QACpB,gBAAgB;QAChB,uBAAuB;QACvB,aAAa;QACb,iBAAiB;+GAGR,iBAAiB,YAdnB;YACP,gBAAgB;YAChB,uBAAuB;YACvB,aAAa;YACb,iBAAiB;SAClB,EAGC,gBAAgB;QAChB,uBAAuB;QACvB,aAAa;QACb,iBAAiB;2FAGR,iBAAiB;kBAhB7B,QAAQ;mBAAC;oBACR,YAAY,EAAE,CAAC,oBAAoB,CAAC;oBACpC,OAAO,EAAE;wBACP,gBAAgB;wBAChB,uBAAuB;wBACvB,aAAa;wBACb,iBAAiB;qBAClB;oBACD,OAAO,EAAE;wBACP,oBAAoB;wBACpB,gBAAgB;wBAChB,uBAAuB;wBACvB,aAAa;wBACb,iBAAiB;qBAClB;iBACF;;;MCmCY,kBAAkB;;+GAAlB,kBAAkB;gHAAlB,kBAAkB,iBArC3B,kBAAkB;QAClB,sBAAsB;QACtB,sBAAsB;QACtB,eAAe;QACf,qBAAqB;QACrB,mBAAmB;QACnB,mBAAmB;QACnB,wBAAwB;QACxB,4BAA4B;QAC5B,kBAAkB,aAGlB,YAAY;QACZ,WAAW;QACX,mBAAmB;QACnB,YAAY;QACZ,cAAc;QACd,gBAAgB;QAChB,WAAW;QACX,mBAAmB;QACnB,iBAAiB;QACjB,cAAc,aAGd,kBAAkB;QAClB,sBAAsB;QACtB,sBAAsB;QACtB,eAAe;QACf,qBAAqB;QACrB,mBAAmB;QACnB,WAAW;QACX,wBAAwB;QACxB,4BAA4B;QAC5B,iBAAiB;QACjB,kBAAkB;gHAGT,kBAAkB,YA1BpB;YACP,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,YAAY;YACZ,cAAc;YACd,gBAAgB;YAChB,WAAW;YACX,mBAAmB;YACnB,iBAAiB;YACjB,cAAc;SACf,EAQC,WAAW;QAGX,iBAAiB;2FAIR,kBAAkB;kBAvC9B,QAAQ;mBAAC;oBACR,YAAY,EAAE;wBACZ,kBAAkB;wBAClB,sBAAsB;wBACtB,sBAAsB;wBACtB,eAAe;wBACf,qBAAqB;wBACrB,mBAAmB;wBACnB,mBAAmB;wBACnB,wBAAwB;wBACxB,4BAA4B;wBAC5B,kBAAkB;qBACnB;oBACD,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,YAAY;wBACZ,cAAc;wBACd,gBAAgB;wBAChB,WAAW;wBACX,mBAAmB;wBACnB,iBAAiB;wBACjB,cAAc;qBACf;oBACD,OAAO,EAAE;wBACP,kBAAkB;wBAClB,sBAAsB;wBACtB,sBAAsB;wBACtB,eAAe;wBACf,qBAAqB;wBACrB,mBAAmB;wBACnB,WAAW;wBACX,wBAAwB;wBACxB,4BAA4B;wBAC5B,iBAAiB;wBACjB,kBAAkB;qBACnB;iBACF;;;MChDY,kBAAkB;IAG7B,YAAoB,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;QAFxC,aAAQ,GAAuB,EAAE,CAAC;KAEU;IAEpD,aAAa,CAAC,GAAqB;QACjC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,EAAE;YACV,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAC5B;QACD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;KAC7D;IAED,SAAS,CACP,GAAyB,EACzB,IAAiB;QAEjB,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;YACzB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SACzB;QACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAExB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO,IAAI,UAAU,CAAC,CAAC,QAAQ;YAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAC7C,CAAC,KAAK;gBACJ,IAAI,KAAK,YAAY,YAAY,EAAE;oBACjC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;oBACxB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBACtB;aACF,EACD,CAAC,GAAG;gBACF,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBACxB,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;aACrB,EACD;gBACE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBACxB,QAAQ,CAAC,QAAQ,EAAE,CAAC;aACrB,CACF,CAAC;;YAEF,OAAO;gBACL,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBACxB,YAAY,CAAC,WAAW,EAAE,CAAC;aAC5B,CAAC;SACH,CAAC,CAAC;KACJ;IAED,WAAW,CAAC,GAAqB;QAC/B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;YACzC,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE;gBAC3D,OAAO,IAAI,CAAC;aACb;SACF;QACD,OAAO,KAAK,CAAC;KACd;;+GAvDU,kBAAkB;mHAAlB,kBAAkB;2FAAlB,kBAAkB;kBAD9B,UAAU;;;MCJE,YAAY;IAEvB;QADA,SAAI,GAAmB,EAAE,CAAC;KACV;IAEhB,gBAAgB,CAAC,IAAoB;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;KAClB;IAED,eAAe,CAAC,GAAiB;QAC/B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACrB;;yGAVU,YAAY;6GAAZ,YAAY,cAFX,MAAM;2FAEP,YAAY;kBAHxB,UAAU;mBAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;;MCQY,gBAAgB;IAC3B,YACU,YAA0B,EAC1B,aAA4B;QAD5B,iBAAY,GAAZ,YAAY,CAAc;QAC1B,kBAAa,GAAb,aAAa,CAAe;KAClC;IAEJ,SAAS,CACP,GAAyB,EACzB,IAAiB;QAEjB,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;YACzB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SACzB;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAC1B,UAAU,CAAC,CAAC,KAAK;;YACf,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAqB,CAAC;YAC7C,MAAM,YAAY,GAA8B;gBAC9C,cAAc,EAAE,IAAI;gBACpB,WAAW,EAAE,IAAI;gBACjB,YAAY,EAAE,KAAK;aACpB,CAAC;YACF,QAAQ,QAAQ,CAAC,UAAU;gBACzB,KAAK,GAAG;oBACN,MAAM,GAAG,GACP,QAAQ,CAAC,cAAc,GAAG,GAAG,IAAI,MAAA,QAAQ,CAAC,UAAU,mCAAI,EAAE,CAAC,CAAC;oBAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CACrC,GAAG,EACH,QAAQ,CAAC,OAAO,EAChB,YAAY,CACb,CAAC;oBACF,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;wBACvB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC;qBACnD,CAAC,CAAC;oBACH,MAAM;gBAER;oBACE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;oBAC7D,MAAM;aACT;YACD,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;SAC1B,CAAC,CACH,CAAC;KACH;IAED,WAAW,CAAC,GAAqB;QAC/B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;YACxC,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE;gBAC3D,OAAO,IAAI,CAAC;aACb;SACF;QACD,OAAO,KAAK,CAAC;KACd;IACO,aAAa,CAAC,OAAe;QACnC,MAAM,YAAY,GAAG,QAAQ,CAAC,sBAAsB,CAClD,eAAe,CAChB,CAAC,CAAC,CAAmB,CAAC;QACvB,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE;YAC7B,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;SAC/B,CAAC,CAAC;QACH,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;KAChC;IAEO,eAAe,CAAC,OAAe;QACrC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,4BAA4B,EAAE,EAAE,EAAE;YAC3D,aAAa,EAAE,oBAAoB;SACpC,CAAC,CAAC;KACJ;;6GAtEU,gBAAgB;iHAAhB,gBAAgB;2FAAhB,gBAAgB;kBAD5B,UAAU;;;MCNE,WAAW;IAGtB;QAFO,gBAAW,GAAG,IAAI,eAAe,CAAe,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QACnE,mBAAc,GAAG,EAAE,CAAC;KACJ;IAEhB,QAAQ;;QACN,OAAO,MAAA,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,mCAAI,EAAE,CAAC;KAC5C;IAED,eAAe;QACb,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;KACxC;IAED,cAAc;QACZ,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAkB,CAAC;QAC5D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YACpB,MAAM,EAAE,YAAY,CAAC,MAAM;YAC3B,KAAK,EAAE,YAAY,CAAC,KAAK;YACzB,UAAU,EAAE,YAAY,CAAC,UAAU;YACnC,GAAG,EAAE,YAAY,CAAC,GAAG;SACtB,CAAC,CAAC;KACJ;IAED,kBAAkB;;QAChB,QACG,MAAA,QAAQ,CAAC,aAAa,CAAC,eAAe,CAAsB,CAAC,KAAK,mCAAI,EAAE,EACzE;KACH;IAED,yBAAyB;QACvB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;KAClD;IAED,wBAAwB;;QACtB,MAAM,YAAY,GAAG,IAAI,CAAC,yBAAyB,EAAkB,CAAC;QACtE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YACpB,MAAM,EAAE,MAAA,YAAY,CAAC,MAAM,0CAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3C,KAAK,EAAE,YAAY,CAAC,KAAK;YACzB,UAAU,EAAE,YAAY,CAAC,UAAU;YACnC,GAAG,EAAE,YAAY,CAAC,GAAG;SACtB,CAAC,CAAC;KACJ;IAED,iBAAiB,CAAC,GAAW;QAC3B,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC;KAC3B;IAEO,SAAS,CAAC,KAAa;QAC7B,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC/D,MAAM,WAAW,GAAG,kBAAkB,CACpC,IAAI,CAAC,MAAM,CAAC;aACT,KAAK,CAAC,EAAE,CAAC;aACT,GAAG,CAAC,CAAC,CAAC;YACL,OAAO,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SAC9D,CAAC;aACD,IAAI,CAAC,EAAE,CAAC,CACZ,CAAC;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;KAChC;;wGA3DU,WAAW;4GAAX,WAAW,cAFV,MAAM;2FAEP,WAAW;kBAHvB,UAAU;mBAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;;MCAY,YAAY;IAEvB;QADA,SAAI,GAAmB,EAAE,CAAC;KACV;IAEhB,gBAAgB,CAAC,IAAoB;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;KAClB;IAED,eAAe,CAAC,GAAiB;QAC/B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACrB;;yGAVU,YAAY;6GAAZ,YAAY,cAFX,MAAM;2FAEP,YAAY;kBAHxB,UAAU;mBAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;;MCWY,gBAAgB;IAE3B,YACU,WAAwB,EACxB,IAAgB,EAChB,aAA4B,EAC5B,YAA0B;QAH1B,gBAAW,GAAX,WAAW,CAAa;QACxB,SAAI,GAAJ,IAAI,CAAY;QAChB,kBAAa,GAAb,aAAa,CAAe;QAC5B,iBAAY,GAAZ,YAAY,CAAc;QALpC,YAAO,GAAG,IAAI,CAAC;QAOb,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC;YACjC,IAAI,EAAE,oBAAoB;YAC1B,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC;YAChC,IAAI,EAAE,oBAAoB;YAC1B,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;KACJ;IAED,SAAS,CACP,OAA6B,EAC7B,IAAiB;QAEjB,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE;YAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SAC7B;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC1C,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAC3B,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;gBACtB,UAAU,EAAE;oBACV,aAAa,EAAE,UAAU,KAAK,EAAE;iBACjC;aACF,CAAC,CAAC;SACJ;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;KAC7B;IAEO,cAAc,CAAC,KAAa;;QAClC,MAAM,YAAY,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACvC,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,EAAkB,CAAC;QACxE,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,CAAC,MAAA,YAAY,CAAC,GAAG,mCAAI,CAAC,IAAI,IAAI,CAAC,CAAC;QACzD,IAAI,OAAO,GAAG,IAAI,IAAI,EAAE,EAAE;YACxB,QAAQ,CAAC,OAAO,CAAC,qBAAqB,GAAG,YAAY,CAAC,CAAC;YACvD,OAAO;SACR;aAAM;YACL,IAAI,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE;gBACnC,IAAI,IAAI,CAAC,OAAO,EAAE;oBAChB,IAAI,CAAC,IAAI;yBACN,GAAG,CAAO,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,eAAe,EAAE;wBAC5D,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE;qBAC9C,CAAC;yBACD,SAAS,CAAC,CAAC,IAAI;wBACd,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;wBAC1C,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;wBACrB,UAAU,CAAC;4BACT,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;yBACrB,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;qBACf,CAAC,CAAC;iBACN;aACF;iBAAM;gBACL,MAAM,IAAI,KAAK,CACb,oGAAoG,CACrG,CAAC;aACH;SACF;KACF;IAED,WAAW,CAAC,GAAqB;QAC/B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;YACxC,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE;gBAC3D,OAAO,IAAI,CAAC;aACb;SACF;QACD,OAAO,KAAK,CAAC;KACd;;6GA1EU,gBAAgB;iHAAhB,gBAAgB;2FAAhB,gBAAgB;kBAD5B,UAAU;;;MCJE,qBAAqB;IAChC,YAAoB,WAAwB;QAAxB,gBAAW,GAAX,WAAW,CAAa;KAAI;IAEhD,SAAS,CACP,OAA6B,EAC7B,IAAiB;QAEjB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC;QACpD,IAAI,KAAK,EAAE;YACT,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;gBACtB,UAAU,EAAE;oBACV,aAAa,EAAE,UAAU,KAAK,EAAE;iBACjC;aACF,CAAC,CAAC;SACJ;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;KAC7B;;kHAhBU,qBAAqB;sHAArB,qBAAqB;2FAArB,qBAAqB;kBADjC,UAAU;;;MCJE,kBAAkB;IAC7B,iBAAgB;IAEhB,YAAY,CAAC,IAAY;QACvB,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;QAC7D,IAAI,OAAO,EAAE;YACX,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;SAC5B;KACF;IAED,gBAAgB,CAAC,IAAY,EAAE,GAAW;QACxC,MAAM,GAAG,GAAG,QAAQ,CAAC,sBAAsB,CAAC,oBAAoB,CAAC,CAAC;QAClE,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;YACzB,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,0BAA0B,GAAG,KAAK,IAAI,MAAM,CAAC;SACjE;KACF;IAED,aAAa,CACX,QAAgB,EAChB,WAAW,GAAG,YAAY,EAC1B,WAAW,GAAG,SAAS;;QAEvB,MAAM,KAAK,GAAG,MAAA,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,0CAAE,QAAQ,CAAC;;QAE9D,MAAM,SAAS,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAoB,CAAC;QACnE,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;QACtC,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC;QACzB,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;;QAE9C,SAAS,CAAC,WAAW,CACnB,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,CAC3D,CAAC;;QAEF,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACvD,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACjD,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;KAC1C;IAED,iBAAiB,CACf,QAAuB,EACvB,WAAW,GAAG,YAAY,EAC1B,WAAW,GAAG,SAAS;;QAEvB,MAAM,KAAK,GAAG,MAAA,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,0CAAE,UAAU,CAAC;;QAEhE,MAAM,QAAQ,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAoB,CAAC;QAClE,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACrC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;QAC5C,QAAQ,CAAC,SAAS,GAAG,EAAE,CAAC;;QAExB,QAAQ,CAAC,WAAW,CAClB,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,CAC3D,CAAC;QAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,MAAM,SAAS,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAoB,CAAC;YACnE,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;gBACvB,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBAC/C,OAAO,CAAC,WAAW,CACjB,IAAI,CAAC,UAAU,CACb,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EACpB,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,EACnB,WAAW,CACZ,CACF,CAAC;gBACF,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBACjD,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;aAC1C;iBAAM;gBACL,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;gBACnE,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBACjD,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;aAC1C;SACF;KACF;IAED,iBAAiB,CACf,QAAuB,EACvB,WAAW,GAAG,YAAY,EAC1B,WAAW,GAAG,SAAS;QAEvB,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CACzC,YAAY,CACM,CAAC;QACrB,WAAW,CAAC,SAAS,GAAG,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC/C,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW,CAAC,OAAO,CAAC,CAAC;QAClC,OAAO,CAAC,WAAW,CACjB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,CACxE,CAAC;QACF,MAAM,KAAK,GAAG,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,QAAQ,CAAC;QACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,MAAM,SAAS,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAoB,CAAC;YACnE,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE;gBACvB,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBAC/C,OAAO,CAAC,WAAW,CACjB,IAAI,CAAC,UAAU,CACb,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EACpB,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,EACnB,WAAW,CACZ,CACF,CAAC;gBACF,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBACjD,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;aAC3C;iBAAM;gBACL,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;gBACnE,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBACjD,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;aAC1C;SACF;KACF;IAED,oBAAoB;;QAClB,MAAM,KAAK,GAAG,MAAA,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,0CAAE,QAAQ,CAAC;QAC9D,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,0CAAE,MAAM,EAAE,CAAC;QACxC,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,0CAAE,MAAM,EAAE,CAAC;QACxC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;KAC5B;IAED,0BAA0B,CAAC,QAAgB;;QACzC,MAAM,KAAK,GAAG,MAAA,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,0CAC/C,QAA0B,CAAC;QAC/B,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;QACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,CAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,WAAW,0CAAE,IAAI,EAAE,MAAK,QAAQ,EAAE;gBAC1C,KAAK,GAAG,CAAC,CAAC;gBACV,MAAM;aACP;SACF;QACD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,KAAK,CAAC;QAC5C,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE;YAC7B,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAC,KAAK,CAAC,0CAAE,MAAM,EAAE,CAAC;YAC7B,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAC,KAAK,CAAC,0CAAE,MAAM,EAAE,CAAC;SAC9B;aAAM;YACL,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAC,KAAK,CAAC,0CAAE,MAAM,EAAE,CAAC;YAC7B,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,0CAAE,MAAM,EAAE,CAAC;SAClC;QACD,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;SAC5B;KACF;IAED,6BAA6B,CAAC,MAAc;;QAC1C,MAAM,KAAK,GAAG,MAAA,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,0CAC/C,QAA0B,CAAC;QAC/B,OAAO,MAAM,GAAG,CAAC,EAAE;YACjB,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,0CAAE,MAAM,EAAE,CAAC;YACxC,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,0CAAE,MAAM,EAAE,CAAC;YACxC,MAAM,EAAE,CAAC;SACV;QACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACpB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;SAC5B;KACF;IAEO,UAAU,CAChB,SAAiB,EACjB,IAAmB,EACnB,OAAe;QAEf,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,SAAS,GAAG,GAAG,GAAG,SAAS,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,CAAC;QACvB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;KACb;IAEO,UAAU,CAAC,SAAiB,EAAE,OAAe;QACnD,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,GAAG,GAAG,SAAS,CAAC;QACjC,OAAO,IAAI,CAAC;KACb;IAEO,cAAc,CAAC,KAAsB;;QAC3C,MAAM,QAAQ,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAoB,CAAC;QAClE,MAAM,YAAY,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CACtB,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,0CACtB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAsB,CAAC;QAC1C,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;QAC3C,QAAQ,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;KAC7C;;+GArLU,kBAAkB;mHAAlB,kBAAkB,cAFjB,MAAM;2FAEP,kBAAkB;kBAH9B,UAAU;mBAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;;MCAY,aAAa;IACxB,iBAAgB;IAEhB,KAAK,CAAC,OAAe,EAAE,KAAa,EAAE,OAAgB;;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAE7C,MAAM,aAAa,GAAG,MAAA,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,0CAAE,SAAS,CAAC;QAClE,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,qCAAqC,CAAC,CAAC;QAC5E,MAAM,IAAI,GAAG;;;sBAGK,KAAK;;cAEb,MAAM;cACN,MAAM;;;;;;;;;;;;yBAYK,OAAO;cAClB,aAAa;cACb,OAAO;;;gBAGL,CAAC;QACb,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC1B,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC3B,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,KAAK,EAAE,CAAC;QAClB,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,gBAAgB,CAAC,OAAO,EAAE;YAClC,UAAU,CAAC;gBACT,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE;oBAChC,QAAQ,CAAC,KAAK,EAAE,CAAC;oBACjB,QAAQ,CAAC,KAAK,EAAE,CAAC;iBAClB;aACF,EAAE,IAAI,CAAC,CAAC;SACV,CAAC,CAAC;KACJ;IAEO,aAAa,CAAC,GAAgC;QACpD,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,QAAQ,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;QACpD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACpD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC;SACtC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC1B;;0GAxDU,aAAa;8GAAb,aAAa,cAFZ,MAAM;2FAEP,aAAa;kBAHzB,UAAU;mBAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;;ACJD;;;;ACAA;;;;;;"}
|