@tuki-io/tuki-widgets 0.0.45 → 0.0.49

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":"tuki-io-tuki-widgets-users-list.mjs","sources":["../../../../projects/tuki/widgets/users-list/src/user-list-confirm-dialog/user-list-confirm-dialog.component.ts","../../../../projects/tuki/widgets/users-list/src/user-list-confirm-dialog/user-list-confirm-dialog.component.html","../../../../projects/tuki/widgets/users-list/src/utils/common-functions.ts","../../../../projects/tuki/widgets/users-list/src/app.constants.ts","../../../../projects/tuki/widgets/users-list/src/classes/simlified-user.ts","../../../../projects/tuki/widgets/users-list/src/utils/utils.service.ts","../../../../projects/tuki/widgets/users-list/src/services/api.service.ts","../../../../projects/tuki/widgets/users-list/src/services/api-webex.service.ts","../../../../projects/tuki/widgets/users-list/src/services/user.service.ts","../../../../projects/tuki/widgets/users-list/src/classes/notification.ts","../../../../projects/tuki/widgets/users-list/src/services/notification.service.ts","../../../../projects/tuki/widgets/users-list/src/classes/user-list.ts","../../../../projects/tuki/widgets/users-list/src/services/removeKynFromIBM.service.ts","../../../../projects/tuki/widgets/users-list/src/services/users-search.service.ts","../../../../projects/tuki/widgets/users-list/src/utils/pagination/pagination.component.ts","../../../../projects/tuki/widgets/users-list/src/utils/pagination/pagination.component.html","../../../../projects/tuki/widgets/users-list/src/utils/app-loader/app-loader.ts","../../../../projects/tuki/widgets/users-list/src/utils/app-loader/app-loader.component.html","../../../../projects/tuki/widgets/users-list/src/classes/line.ts","../../../../projects/tuki/widgets/users-list/src/services/dns.service.ts","../../../../projects/tuki/widgets/users-list/src/move-user-wizard/move-user-stepper/move-user-stepper.component.ts","../../../../projects/tuki/widgets/users-list/src/move-user-wizard/move-user-stepper/move-user-stepper.component.html","../../../../projects/tuki/widgets/users-list/src/move-user-wizard/move-user-wizard.component.ts","../../../../projects/tuki/widgets/users-list/src/move-user-wizard/move-user-wizard.component.html","../../../../projects/tuki/widgets/users-list/src/users-list.component.ts","../../../../projects/tuki/widgets/users-list/src/users-list.component.html","../../../../projects/tuki/widgets/users-list/src/services/events-communication.service.ts","../../../../projects/tuki/widgets/users-list/src/material.module.ts","../../../../projects/tuki/widgets/users-list/src/users-list.module.ts","../../../../projects/tuki/widgets/users-list/tuki-io-tuki-widgets-users-list.ts"],"sourcesContent":["import { Component, Inject, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'app-info-dialog',\r\n templateUrl: './user-list-confirm-dialog.component.html',\r\n styleUrls: ['./user-list-confirm-dialog.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class UserListConfirmDialogComponent implements OnInit {\r\n public confirmButtonText = 'OK';\r\n public message = '';\r\n public title = '';\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<any>,\r\n @Inject(MAT_DIALOG_DATA) public data: InfoDialogConfig\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.confirmButtonText = this.data.confirmButtonText || '';\r\n this.message = this.data.message || '';\r\n this.title = this.data.title || '';\r\n }\r\n\r\n public onClose(val: boolean): void {\r\n this.dialogRef.close(val);\r\n }\r\n}\r\n\r\nexport class InfoDialogConfig {\r\n message!: string;\r\n title!: string;\r\n confirmButtonText!: string;\r\n}\r\n","<div id=\"info-dialog\" class=\"app-dialog\" aria-labelledby=\"info-dialog-label\" role=\"dialog\">\r\n <h3 *ngIf=\"title\" class=\"app-dialog-title\">{{title}}</h3>\r\n <div mat-dialog-content *ngIf=\"message\" class=\"app-dialog-content\">\r\n <div class=\"move_user_popup_icon\"></div>\r\n <div class=\"dialog-content-message\" [innerHTML]=\"message\"></div>\r\n </div>\r\n <div mat-dialog-actions class=\"flex-gap-container\">\r\n <button class=\"app-dialog-button app-dialog-cancel-button\" (click)=\"onClose(false)\">\r\n Cancel\r\n </button>\r\n <button class=\"app-dialog-button app-dialog-confirm-button\" (click)=\"onClose(true)\">\r\n {{confirmButtonText}}\r\n </button>\r\n </div>\r\n</div>\r\n","export const getSavableData = (model: any, exclude?: Array<string>) => {\r\n let result = Object.keys(model);\r\n if (exclude && exclude.length) {\r\n result = result.filter(key => !exclude.some(item => item === key));\r\n }\r\n return result.reduce((result, key) => {\r\n if (model[key] instanceof Array && model[key].length && model[key][0].getSavableData) {\r\n (result as any)[key] = model[key].map((item: any) => item.getSavableData());\r\n } else if (model[key] instanceof Object && model[key].getSavableData) {\r\n (result as any)[key] = model[key].getSavableData();\r\n } else {\r\n (result as any)[key] = model[key];\r\n }\r\n return result;\r\n }, {});\r\n};\r\n","export const API = {\r\n USER_TOKEN: '/api/provision/:siteId/users/:userId/token',\r\n UPDATE_USER_FIELDS: '/api/provision/:siteId/userFields/:token',\r\n PERSIST_USER_CACHE: '/api/provision/:siteId/saveUser/:token',\r\n USER_BY_ID: '/api/provision/:siteId/users/:userId',\r\n QUICK_USERS_SEARCH: \"/api/search/quickusers\",\r\n DELETE_USER: \"/api/search/quickusers\",\r\n MOVE_USER: \"/api/migration/webex/singlemigration/features/PERSON\",\r\n AVAILABLE_DN_IN_RANGES: \"/api/sites/:siteId/available-dn-in-ranges\",\r\n DELETE_LINE: \"/api/provision/:siteId/deleteLine/:pkid/:token\",\r\n DISASSOCIATE_LINE: \"/api/provision/:siteId/:deviceName/deleteLineAssociation/:linePkid/:token\",\r\n CHECK_DELETE_LINE: \"/api/provision/:siteId/checklinedeletion\",\r\n ASSOCIATE_LINE: \"/api/provision/:siteId/:deviceName/createLineAssociation/:token\",\r\n CHECK_DESTINATION_NUMBER: \"/api/provision/:siteId/check-dn\",\r\n UPDATE_LINE_FIELDS: \"/api/provision/:siteId/lineFields/:pkid/:token\",\r\n UPDATE_DEVICE_FIELDS: \"/api/provision/:siteId/deviceFields/:deviceName/:token\",\r\n WEBEX_USERS: \"/api/webex/provisioning/customers/:customerId/users\",\r\n MIGRATED_USERS: \"/api/search/migratedusers\",\r\n REVERT_WEBEX_USER: \"/api/webex/provisioning/customers/:customerId/persons/:webexUUID/removecallinglicense\",\r\n PHONE_NUMBERS: \"/api/search/webex/customers/:customerId/locations/:locationId/phonenumbers\"\r\n};\r\nexport const REGEX_PATTERN = {\r\n EMAIL: '^(([^<>()\\\\[\\\\]\\\\\\\\.,;:\\\\s@\"]+(\\\\.[^<>()\\\\[\\\\]\\\\\\\\.,;:\\\\s@\"]+)*)|(\".+\"))' +\r\n '@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,62}[a-zA-Z0-9])' +\r\n '?(?:\\\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,62}[a-zA-Z0-9])?)*$'\r\n};\r\n\r\nexport const PAGINATION_DEFAULTS = {\r\n SIZE: 10,\r\n INDEX: 0\r\n}\r\nexport const PAGINATION_SIZE_OPTIONS = [\r\n 10,\r\n 50,\r\n 100,\r\n 500\r\n];\r\nexport const CUCS_TO_IGNORE = [\r\n 189,\r\n 194,\r\n 191,\r\n 190\r\n];\r\nexport const CUCMS_TO_IGNORE = [\r\n 249,\r\n 255,\r\n 251,\r\n 250\r\n];\r\nexport const MAX_INTEGER = 2147483647;\r\n","import { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { getSavableData } from '../utils/common-functions';\r\nimport { REGEX_PATTERN } from '../app.constants';\r\n\r\nexport class SimplifiedUser {\r\n userid!: string;\r\n email!: string;\r\n firstName!: string;\r\n lastName!: string;\r\n token!: string;\r\n viewMode!: string;\r\n hasModifiedCache!: boolean;\r\n newUserId?: string;\r\n editMode!: boolean;\r\n form!: FormGroup;\r\n\r\n constructor(user?: any) {\r\n if (user) {\r\n this.userid = user.userid;\r\n this.email = user.email;\r\n this.firstName = user.firstName;\r\n this.lastName = user.lastName;\r\n this.token = user.token;\r\n }\r\n this.initForm()\r\n }\r\n\r\n initForm() {\r\n const formBuilder = new FormBuilder();\r\n const formSettings = {\r\n userid: [{value: this.userid || '', disabled: true}, [Validators.required, Validators.maxLength(128)]],\r\n email: [{value: this.email || '', disabled: true}, [\r\n Validators.pattern(REGEX_PATTERN.EMAIL),\r\n Validators.required\r\n ]],\r\n firstName: [{value: this.firstName || '', disabled: true}],\r\n lastName: [{value: this.lastName || '', disabled: true}, Validators.required],\r\n };\r\n this.form = formBuilder.group(formSettings);\r\n }\r\n\r\n toggleEditMode() {\r\n this.editMode = !this.editMode;\r\n ['userid', 'email', 'firstName', 'lastName'].forEach(token => {\r\n if (this.editMode) {\r\n this.form.get(token)?.enable();\r\n } else {\r\n this.form.get(token)?.disable();\r\n }\r\n })\r\n }\r\n\r\n getSavableData() {\r\n const excludedFields: string[] = ['form', 'editMode', 'viewMode', 'token', 'hasModifiedCache'];\r\n return getSavableData(this, excludedFields);\r\n }\r\n\r\n equal(userToCompare?: SimplifiedUser): boolean {\r\n if (!userToCompare) {\r\n return false;\r\n }\r\n return JSON.stringify(this.getSavableData()) === JSON.stringify(userToCompare.getSavableData());\r\n }\r\n\r\n}\r\n\r\nexport interface SimplifiedUserInterface {\r\n userid: string;\r\n email: string;\r\n firstName: string;\r\n lastName: string;\r\n form?: FormGroup;\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class UtilsService {\r\n\r\n static sortSortArrayByProperty(array: [], sortBy: string) {\r\n if (!array) {\r\n return null;\r\n }\r\n return array.sort((a, b) => {\r\n if (!a[sortBy] && !b[sortBy]) {\r\n return 0;\r\n }\r\n if (a[sortBy] && !b[sortBy]) {\r\n return 1;\r\n }\r\n if (!a[sortBy] && b[sortBy]) {\r\n return -1;\r\n }\r\n const positionA = a[sortBy];\r\n const positionB = b[sortBy];\r\n return (positionA < positionB) ? -1 : (positionA > positionB) ? 1 : 0;\r\n });\r\n }\r\n\r\n static diff(origObject: any, updatedObj: any, path: string, keysToIgnore?: string[]) {\r\n let result: any = [];\r\n if (Object.is(origObject, updatedObj)) {\r\n return undefined;\r\n }\r\n if (!updatedObj || typeof updatedObj !== 'object') {\r\n return updatedObj;\r\n }\r\n const concat = Array.from(new Set([...Object.keys(origObject || {}), ...Object.keys(updatedObj || {})]));\r\n const filter = keysToIgnore ? concat.filter(key => !keysToIgnore.includes(key)) : concat;\r\n filter\r\n .forEach(key => {\r\n if (typeof updatedObj[key] === 'object' && typeof origObject[key] === 'object') {\r\n if (UtilsService.differs(updatedObj[key], origObject[key])) {\r\n const newPath = `${path}${path ? '.' : ''}${key}`;\r\n const values = UtilsService.diff(origObject[key], updatedObj[key], newPath, keysToIgnore);\r\n if (values !== undefined) {\r\n result = [...result, ...values];\r\n }\r\n }\r\n } else if (updatedObj && !origObject || updatedObj[key] !== origObject[key] && !Object.is(origObject[key], updatedObj[key])) {\r\n const value = updatedObj ? UtilsService.formatIfEmpty(updatedObj[key]) : null;\r\n result.push(`${path}${path ? '.' : ''}${key}=${value}`);\r\n }\r\n });\r\n return result;\r\n }\r\n\r\n static formatIfEmpty(value: any) {\r\n if (value) {\r\n return value;\r\n }\r\n switch (typeof value) {\r\n case 'boolean':\r\n return value;\r\n case 'string':\r\n return '';\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n static differs(obj1: any, obj2: any): boolean {\r\n return JSON.stringify(obj1) !== JSON.stringify(obj2);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { TableDataInterface } from '../classes/table-data';\r\nimport { Observable } from 'rxjs';\r\n\r\n\r\n\r\n@Injectable()\r\nexport class APIService {\r\n\r\n apiUrl = window.location.protocol + '//' + window.location.hostname + '/dcp';\r\n\r\n public token: any;\r\n constructor(\r\n private httpClient: HttpClient\r\n ) {\r\n }\r\n\r\n fetch(url: string, params = {}, cache?: boolean) {\r\n const headers = this.getHeaders(cache);\r\n return this.httpClient.get(this.apiUrl + url, {params: this.prepareEncodedParams(params), headers});\r\n }\r\n\r\n post(url: string, body: any, params = {}): any {\r\n body = body || null;\r\n const headers = this.getHeaders();\r\n return this.httpClient.post(this.apiUrl + url, body, {params: this.prepareEncodedParams(params), headers});\r\n }\r\n\r\n // use when response extended data is necessary:\r\n postExtended(url: string, body = null, params = {}, headers = {}) {\r\n headers = headers || this.getHeaders();\r\n return this.httpClient.post(this.apiUrl + url, body, {\r\n headers,\r\n observe: 'response',\r\n params: this.prepareEncodedParams(params)\r\n });\r\n }\r\n\r\n put(url: string, body = null, params = {}) {\r\n const headers = this.getHeaders();\r\n return this.httpClient.put(this.apiUrl + url, body, {headers, params: this.prepareEncodedParams(params)});\r\n }\r\n\r\n delete(url: string, params = {}) {\r\n const headers = this.getHeaders();\r\n return this.httpClient.delete(this.apiUrl + url, {headers, params: this.prepareEncodedParams(params)});\r\n }\r\n\r\n fetchPagination(url: string, pageSize: number, pageNumber: number, additionalParams = {}, cache?: boolean): Observable<TableDataInterface> {\r\n const copyAdditionalParams = JSON.parse(JSON.stringify(additionalParams));\r\n const params = Object.assign(copyAdditionalParams, {size: pageSize.toString(), page: pageNumber.toString()});\r\n return this.fetch(url, params, cache) as Observable<TableDataInterface>;\r\n }\r\n\r\n private prepareEncodedParams(params: any) {\r\n const result: any = {};\r\n\r\n if (!params) {\r\n return {};\r\n }\r\n for (const key of Object.keys(params)) {\r\n if (params[key]) {\r\n const stringParam = params[key].toString();\r\n result[key] = stringParam.includes('+') ? encodeURIComponent(stringParam) : stringParam;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n private getHeaders(cache?: boolean): HttpHeaders {\r\n let headers = new HttpHeaders();\r\n if (cache) {\r\n headers = headers.append('_Cache', 'true ');\r\n }\r\n const token = this.token || this.getParameterByName('token');\r\n headers = headers.append('Authorization', 'Bearer '+ token);\r\n return headers;\r\n }\r\n\r\n private getParameterByName(name: any, url = window.location.href) {\r\n name = name.replace(/[\\[\\]]/g, '\\\\$&');\r\n var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),\r\n results = regex.exec(url);\r\n if (!results) return null;\r\n if (!results[2]) return '';\r\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { APIService } from './api.service';\r\n\r\n\r\n@Injectable()\r\nexport class ApiWebexService extends APIService {\r\n constructor(httpClient: HttpClient) {\r\n super(httpClient);\r\n //this.apiUrl = window.location.protocol + \"//\"+ window.location.hostname + environment.apiAuthUrl;\r\n this.apiUrl = 'https://webex.car-west.net/webex';\r\n // this.apiUrl = 'https://staging.tuki.io/webex';\r\n }\r\n}\r\n","import {Injectable, OnInit} from '@angular/core';\r\nimport { Observable, of, forkJoin, Subject } from 'rxjs';\r\nimport { SimplifiedUser } from '../classes/simlified-user';\r\nimport { API } from '../app.constants';\r\nimport { APIService } from './api.service';\r\nimport { map } from 'rxjs/operators';\r\nimport { UtilsService } from '../utils/utils.service';\r\nimport { ListUser } from '../classes/user-list';\r\nimport { ApiWebexService } from './api-webex.service';\r\n\r\n@Injectable()\r\nexport class UserService implements OnInit{\r\n siteId: number = -1;\r\n userId: string = '';\r\n userIdExistPending = false;\r\n hasExistedUserId = false;\r\n user!: SimplifiedUser;\r\n originUser!: SimplifiedUser;\r\n moveUserPending = false;\r\n userMoved$ = new Subject<any>();\r\n\r\n constructor(\r\n private apiService: APIService,\r\n private apiWebexService: ApiWebexService\r\n ) {\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n console.log(this.siteId)\r\n }\r\n\r\n public fetchUserToken(siteId: number, userId: string): any {\r\n this.siteId = siteId;\r\n this.userId = userId;\r\n return this.apiService.fetch(API.USER_TOKEN.replace(':siteId', String(this.siteId)).replace(':userId', encodeURIComponent(encodeURIComponent(userId))))\r\n .pipe(map((result: any) => {\r\n const token = Object.keys(result)[0];\r\n this.setSimplifiedUser(Object.values(result)[0], token);\r\n }))\r\n // .pipe(this.handleError(false, true));\r\n }\r\n\r\n public updateUserFields(body: any): any {\r\n if (!this.userId || !this.siteId || !this.user?.token) {\r\n return;\r\n }\r\n return this.apiService.post(API.UPDATE_USER_FIELDS.replace(':siteId', String(this.siteId)).replace(':token', this.user.token), body)\r\n // .pipe(this.handleError(false, true));\r\n }\r\n\r\n public moveUserToMT(customerId: any, user: ListUser): any {\r\n // return new Observable<boolean>(observer => {\r\n // setTimeout(() => {\r\n // observer.next(true);\r\n //\r\n // }, 1000);\r\n // });\r\n return this.apiWebexService.post(API.MOVE_USER, this.getMoveUserBody(customerId, user))\r\n // .pipe(this.handleError(true, true));\r\n }\r\n\r\n public moveUserToDI(customerId: any, user: ListUser): any {\r\n // return new Observable<boolean>(observer => {\r\n // setTimeout(() => {\r\n // observer.next(true);\r\n //\r\n // }, 1000);\r\n // });\r\n const URL = API.REVERT_WEBEX_USER.replace(':customerId', customerId).replace(':webexUUID', String(user.webexUUID));\r\n return this.apiWebexService.post(URL, this.getMoveUserBody(customerId, user))\r\n // .pipe(this.handleError(true, true));\r\n }\r\n\r\n private getMoveUserBody(customerId: any, user: ListUser): any {\r\n return {\r\n customerId: customerId,\r\n entities: {\r\n PERSON: [{cucmId: user.cucmId, entityId: user.userid}]\r\n }\r\n };\r\n }\r\n\r\n public deleteUser(siteId: number, userId: string): Observable<any> {\r\n return this.apiService.delete(API.DELETE_USER.replace(':siteId', String(siteId)).replace(':userId', encodeURIComponent(encodeURIComponent(userId))))\r\n // .pipe(this.handleError(true, true));\r\n }\r\n\r\n public fetchUserById(id: string) {\r\n this.userIdExistPending = true;\r\n return this.apiService.fetch(API.USER_BY_ID.replace(':siteId', String(this.siteId)).replace(':userId', encodeURIComponent(encodeURIComponent(id))))\r\n .pipe(map(result => {\r\n this.userIdExistPending = false;\r\n return result;\r\n }));\r\n }\r\n\r\n public persistCacheChanges() {\r\n const params = {\r\n excludeDeviceExtraOptions: true\r\n };\r\n return this.processUserChangesToCache()\r\n .pipe(map((result: any) => {\r\n return this.apiService.post(API.PERSIST_USER_CACHE.replace(':siteId', String(this.siteId)).replace(':token', this.user.token), {}, params)\r\n .subscribe(() => {\r\n\r\n })\r\n // .pipe(map((user) => {\r\n // // this.setUser(user, false, this.user.token);\r\n // this.user.hasModifiedCache = false;\r\n // }))\r\n // .pipe(this.handleError(true, true));\r\n }));\r\n }\r\n\r\n public processUserChangesToCache(): any {\r\n const calls = [];\r\n const body = UtilsService.diff(this.originUser.getSavableData(), this.user.getSavableData(), 'user');\r\n if (body) {\r\n calls.push(this.updateUserFields(body));\r\n }\r\n if (!calls?.length) {\r\n return of(this.user);\r\n }\r\n\r\n return forkJoin(calls)\r\n .pipe(map((responses: any) => {\r\n // ApiUserResponse\r\n this.handleSaveUserResponse(responses);\r\n }))\r\n // .pipe(this.handleError(false, true));\r\n\r\n }\r\n\r\n public hasUnsavedChanges() {\r\n return !this.user.equal(this.originUser);\r\n }\r\n\r\n public setSimplifiedUser(user: any, token?: any): void {\r\n this.user = new SimplifiedUser(user);\r\n const copiedUser = JSON.parse(JSON.stringify(user));\r\n this.originUser = new SimplifiedUser(copiedUser);\r\n this.user.token = this.user.token || token;\r\n this.originUser.token = this.originUser.token || token;\r\n }\r\n\r\n private handleSaveUserResponse(responses: any) {\r\n if (!responses?.length) {\r\n return;\r\n }\r\n for (let len = responses.length, i = len - 1; i >= 0; i--) {\r\n if (responses[i] && responses[i].currentUpdatedUser) {\r\n // this.setUser(responses[i].currentUpdatedUser, false, this.user.token);\r\n this.user.hasModifiedCache = true;\r\n return;\r\n }\r\n }\r\n }\r\n}\r\n","const TTL_DEFAULT = 30000;\r\nconst TTL_LONG_DEFAULT = 45000;\r\n\r\nexport enum NotificationType {\r\n info = 'info',\r\n error = 'error',\r\n success = 'success',\r\n warning = 'warning'\r\n}\r\n\r\nexport class Notification {\r\n id?: number;\r\n type?: NotificationType;\r\n message?: string;\r\n ttl: number = TTL_DEFAULT;\r\n timerId?: any;\r\n\r\n constructor(data: any) {\r\n Object.assign(this, data || {});\r\n\r\n if(this.ttl === undefined) {\r\n this.ttl = this.message && this.message.length && this.message.length < 80 ? TTL_DEFAULT : TTL_LONG_DEFAULT;\r\n }\r\n }\r\n\r\n isInfo(): boolean {\r\n return this.type === NotificationType.info;\r\n }\r\n isError(): boolean {\r\n return this.type === NotificationType.error;\r\n }\r\n isSuccess(): boolean {\r\n return this.type === NotificationType.success;\r\n }\r\n isWarning(): boolean {\r\n return this.type === NotificationType.warning;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Notification } from '../classes/notification';\r\nimport { Subject } from 'rxjs';\r\nconst SUCCESS_TIME = 5000;\r\nconst INACTIVE_SESSION_MESSAGE = 'Your session was lost due to inactivity. Please login again';\r\nconst INACTIVE_SESSION = 'SESSION_INACTIVE';\r\n\r\n@Injectable()\r\nexport class NotificationService {\r\n\r\n public listChange = new Subject();\r\n\r\n private max = 0;\r\n private list: Notification[] = [];\r\n\r\n constructor(\r\n ) {\r\n }\r\n\r\n error(message: string, ttl?: number): void {\r\n this.notify('error', message, ttl);\r\n }\r\n\r\n success(message: string, ttl?: number): void {\r\n this.notify('success', message, (!ttl) ? SUCCESS_TIME : ttl);\r\n }\r\n\r\n warning(message: string, ttl?: number): void {\r\n this.notify('warning', message, ttl);\r\n }\r\n\r\n info(message: string, ttl?: number): void {\r\n this.notify('info', message, ttl);\r\n }\r\n private notify(type: string, message: string, ttl?: number): void {\r\n const found = this.list.find((n: Notification) => n.message === message);\r\n if (found) {\r\n this.remove(found);\r\n }\r\n const notification = new Notification({\r\n id: ++this.max,\r\n type, message, ttl\r\n });\r\n if (notification.ttl > 0) {\r\n notification.timerId = setTimeout(() => this.remove(notification, true), notification.ttl);\r\n }\r\n this.list.push(notification);\r\n this.listChange.next(this.list);\r\n }\r\n\r\n remove(notification: Notification, auto?: boolean): void {\r\n if (!auto && notification.timerId) {\r\n // clear timeout in case of manual remove\r\n clearInterval(notification.timerId);\r\n }\r\n this.list = this.list.filter(n => n.id !== notification.id);\r\n this.listChange.next(this.list);\r\n }\r\n\r\n private removeInactiveSessionError(): void {\r\n if (!this.list || !this.list.length) {\r\n return;\r\n }\r\n this.list = this.list.filter(n => n.message !== INACTIVE_SESSION_MESSAGE && n.message !== INACTIVE_SESSION);\r\n this.listChange.next(this.list);\r\n }\r\n\r\n}\r\n","import { DeviceInterface } from './device';\r\nimport { LineInterface } from './line';\r\n\r\nexport class ListUser implements ListUserInterface {\r\n // @ts-ignore\r\n userid: string;\r\n firstName?: string;\r\n lastName?: string;\r\n email?: string;\r\n telephoneNumber?: string;\r\n devices: DeviceInterface[] = [];\r\n deviceProfiles: DeviceInterface[] = [];\r\n lines?: LineInterface[];\r\n siteId?: number;\r\n siteName?: string;\r\n webexUUID?: string;\r\n cucmId?: number;\r\n roleName?: string;\r\n status?: string;\r\n ldapIntegrated!: boolean;\r\n isMigrated?: boolean;\r\n\r\n constructor(user?: ListUser, roleName?: string) {\r\n if (user) {\r\n Object.assign(this, user);\r\n }\r\n if (roleName) {\r\n this.roleName = roleName;\r\n }\r\n }\r\n}\r\n\r\nexport interface ListUserInterface {\r\n userid: string;\r\n firstName?: string;\r\n lastName?: string;\r\n email?: string;\r\n telephoneNumber?: string;\r\n viewMode?: any;\r\n devices: DeviceInterface[];\r\n deviceProfiles: DeviceInterface[];\r\n lines?: LineInterface[];\r\n siteId?: number;\r\n siteName?: string;\r\n webexUUID?: string;\r\n cucmId?: number;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CUCMS_TO_IGNORE, CUCS_TO_IGNORE } from '../app.constants';\r\n\r\n@Injectable()\r\nexport class RemoveKynFromIBMService {\r\n constructor() {\r\n }\r\n\r\n\r\n removeCUCMS(date: any, customerId: number) {\r\n if (customerId === 8) {\r\n return date.filter((val: any) => !CUCMS_TO_IGNORE.includes(Math.round(val.cucmId)));\r\n }\r\n return date;\r\n }\r\n\r\n removeCUCS(date: any, customerId: number) {\r\n if (customerId === 8) {\r\n return date.filter((val: any) => !CUCS_TO_IGNORE.includes(Math.round(val.cucId)));\r\n }\r\n return date;\r\n }\r\n\r\n\r\n}\r\n","import { Injectable, OnInit } from '@angular/core';\r\nimport { SimplifiedUser } from '../classes/simlified-user';\r\nimport { APIService } from './api.service';\r\nimport { ListUser, ListUserInterface } from '../classes/user-list';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { API, PAGINATION_DEFAULTS, PAGINATION_SIZE_OPTIONS } from '../app.constants';\r\nimport { TableDataInterface } from '../classes/table-data';\r\nimport { map } from 'rxjs/operators';\r\nimport { RemoveKynFromIBMService } from './removeKynFromIBM.service';\r\nimport { PaginationDataDto } from '../classes/pagination';\r\nimport { ApiWebexService } from './api-webex.service';\r\n\r\n\r\n\r\n@Injectable()\r\nexport class UsersSearchService {\r\n siteId: number = -1;\r\n userId: string = '';\r\n customerId!: number;\r\n siteid!: number;\r\n userIdExistPending = false;\r\n hasExistedUserId = false;\r\n pageSize = PAGINATION_DEFAULTS.SIZE;\r\n pageIndex = PAGINATION_DEFAULTS.SIZE;\r\n pageSizeOptions = PAGINATION_SIZE_OPTIONS;\r\n migratedUsersIds!: any;\r\n total!: number;\r\n migratedUsers!: any;\r\n searchParams!: any;\r\n foundUsers$!: any;\r\n\r\n constructor(\r\n private apiService: APIService,\r\n private webexApiService: ApiWebexService,\r\n private removeKynFromIBMService: RemoveKynFromIBMService\r\n ) {\r\n this.foundUsers$ = new BehaviorSubject(null);\r\n\r\n }\r\n\r\n public getPagination(): PaginationDataDto {\r\n return {\r\n total: this.total,\r\n pageSizeOptions: this.pageSizeOptions,\r\n pageSize: this.pageSize,\r\n pageIndex: this.pageIndex\r\n };\r\n }\r\n\r\n public setDefaultValues() {\r\n this.total = 0;\r\n this.pageSize = PAGINATION_DEFAULTS.SIZE;\r\n this.pageIndex = PAGINATION_DEFAULTS.INDEX;\r\n this.pageSizeOptions = PAGINATION_SIZE_OPTIONS;\r\n }\r\n public quickRegularUsersSearch(searchParams?: any, isMigratedUsersOnly?: boolean, pageSize?: number): any {\r\n console.log('searchParams = ', searchParams);\r\n this.searchParams = searchParams || {customerid: this.customerId, siteid: this.siteId};\r\n return this.apiService.fetchPagination(API.QUICK_USERS_SEARCH, this.pageSize, pageSize ||this.pageIndex, this.searchParams)\r\n .pipe(map((res: TableDataInterface) => {\r\n // this.totals = this.totals || {};\r\n // this.totals['users'] = res.total;\r\n\r\n // this.foundUsers$.next(this.removeKynFromIBMService.removeCUCMS(users, this.customerId));\r\n if (!isMigratedUsersOnly) {\r\n const users = res.pageData && res.pageData.length ? res.pageData\r\n .map(user => new ListUser(user, 'Dedicated Instance Calling user')) : [];\r\n if (this.migratedUsersIds?.length) {\r\n this.setMigratedPropToUsers(users);\r\n }\r\n this.total = res.total;\r\n this.foundUsers$.next(users);\r\n } else {\r\n this.migratedUsersIds = res.pageData && res.pageData.length ? res.pageData\r\n .map(user => user.userid) : [];\r\n }\r\n }));\r\n // .pipe(this.handleError(true));\r\n }\r\n\r\n public quickWebexUsersSearch(searchParams?: any, isMigratedUsersOnly?: boolean, pageSize?: number): any {\r\n this.searchParams = searchParams || {customerid: this.customerId, siteid: this.siteId};\r\n return this.webexApiService.fetchPagination(API.QUICK_USERS_SEARCH, this.pageSize, pageSize ||this.pageIndex, this.searchParams)\r\n .pipe(map((res: TableDataInterface) => {\r\n if (!isMigratedUsersOnly) {\r\n const users = res.pageData && res.pageData.length ? res.pageData\r\n .map(user => new ListUser(user, 'Dedicated Instance Calling user')) : [];\r\n if (this.migratedUsersIds?.length) {\r\n this.setMigratedPropToUsers(users);\r\n }\r\n this.total = res.total;\r\n this.foundUsers$.next(users);\r\n } else {\r\n this.migratedUsersIds = res.pageData && res.pageData.length ? res.pageData\r\n .map(user => user.userid) : [];\r\n }\r\n }));\r\n // .pipe(this.handleError(true));\r\n }\r\n\r\n getMigratedUsers(customerId: number): any {\r\n return this.webexApiService.fetch(API.WEBEX_USERS.replace(':customerId', String(customerId)), {})\r\n .pipe(map((result: any) => {\r\n if (result && result.length) {\r\n this.migratedUsers = result.filter((user: any) => user.webexUUID && user.devices && user.devices.length);\r\n }\r\n }))\r\n }\r\n\r\n getMigratedWebexUsers(customerId: number): any {\r\n const params = {customerid: customerId, type: 'PERSON'};\r\n return this.webexApiService.fetch(API.MIGRATED_USERS.replace(':customerId', String(customerId)), params, true)\r\n .pipe(map((result: any) => {\r\n }))\r\n }\r\n\r\n setMigratedPropToUsers(users: any): void {\r\n users.forEach((user: any) => {\r\n const migratedUser = this.migratedUsers.filter((migratedUser: any) => migratedUser.userid === user.email);\r\n if (migratedUser && migratedUser[0]) {\r\n user.roleName = '';\r\n user.isMigrated = true;\r\n user.status = 'Migrated';\r\n user.webexUUID = migratedUser[0].webexUUID;\r\n } else {\r\n user.roleName = 'Dedicated Instance Calling user';\r\n user.isMigrated = false;\r\n user.status = 'Active';\r\n user.webexUUID = '';\r\n }\r\n })\r\n console.log('users ttt', users);\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { PaginationDataDto } from '../../classes/pagination';\r\nimport { PAGINATION_SIZE_OPTIONS } from '../../app.constants';\r\n\r\n\r\n@Component({\r\n selector: 'app-pagination',\r\n templateUrl: './pagination.component.html',\r\n styleUrls: ['./pagination.component.scss'],\r\n})\r\nexport class PaginationComponent implements OnInit{\r\n @Input()\r\n public pagination!: PaginationDataDto;\r\n @Input()\r\n public showPageSizeOptions!: boolean;\r\n @Input()\r\n public showRefreshButton!: boolean;\r\n @Input()\r\n public lengthPending!: boolean;\r\n @Output()\r\n public pageEmitter = new EventEmitter();\r\n @Output()\r\n public pageNumberChangeEmitter = new EventEmitter<any>();\r\n public pageSizeOptions: number[] = PAGINATION_SIZE_OPTIONS;\r\n\r\n constructor(\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n public pageEvent(event: any) {\r\n this.pageEmitter.emit(event);\r\n }\r\n\r\n public changePerPageNumber(event: any) {\r\n this.pageNumberChangeEmitter.emit(event.value);\r\n }\r\n\r\n}\r\n","<div class=\"flex-box pagination\">\r\n <div class=\"page-indexes-box\">\r\n <mat-paginator\r\n [id]=\"'commonPagination'\"\r\n [hidePageSize]=\"true\"\r\n [length]=\"pagination.total\"\r\n [pageIndex]=\"pagination.pageIndex\"\r\n [pageSize]=\"pagination.pageSize\"\r\n [pageSizeOptions]=\"pagination.pageSizeOptions\"\r\n (page)=\"pageEvent($event)\">\r\n </mat-paginator>\r\n <mat-spinner class=\"length-spinner\" [diameter]=\"20\" mode=\"indeterminate\" *ngIf=\"lengthPending\">\r\n </mat-spinner>\r\n </div>\r\n\r\n <div class=\"flex-box per-page-block\" *ngIf=\"showPageSizeOptions\">\r\n <div class=\"item_per_page\">Items per page:</div>\r\n <div class=\"select-box select-page-size\">\r\n <mat-select [(ngModel)]=\"pagination.pageSize\" (selectionChange)=\"changePerPageNumber($event)\" #page\r\n [id]=\"'commonPaginationSelect'\">\r\n <mat-option *ngFor=\"let option of pageSizeOptions; let i = index;\" [id]=\"'paginationSelectOpt_' + i\" [value]=\"option\">{{option}}</mat-option>\r\n </mat-select>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n","import { Component, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-loader',\r\n templateUrl: './app-loader.component.html',\r\n styleUrls: ['./app-loader.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class AppLoaderComponent {\r\n constructor() {\r\n }\r\n\r\n}\r\n","<div class=\"overlay\">\r\n <mat-progress-spinner\r\n class=\"page-spinner\"\r\n mode=\"indeterminate\"\r\n [diameter]=\"120\"></mat-progress-spinner>\r\n</div>\r\n","import { SiteShortDataInterface } from './device';\r\n\r\nexport interface LineInterface {\r\n description: string;\r\n pkid: string;\r\n entityChangeType: EntityChangeType;\r\n alertingName: string;\r\n asciiAlertingName: string;\r\n callingSearchSpace: string;\r\n voiceMailProfile: string;\r\n noAnswerRingDuration: number;\r\n autoAnswer: string;\r\n directoryNumber: LineDirectoryInterface;\r\n didPatterns: Array<TranslationPatternInterface>;\r\n mappedDids: Array<string>;\r\n aarSettings: LineAarInterface;\r\n callForwardAll: CallInterface;\r\n callForwardAllSecondaryCSS: CallInterface;\r\n callForwardBusyInternal: CallInterface;\r\n callForwardBusyExternal: CallInterface;\r\n callForwardNoAnswerInternal: CallInterface;\r\n callForwardNoAnswerExternal: CallInterface;\r\n callForwardNoCoverageInternal: CallInterface;\r\n callForwardNoCoverageExternal: CallInterface;\r\n callForwardOnCTIFailure: CallInterface;\r\n callForwardUnregisteredInternal: CallInterface;\r\n callForwardUnregisteredExternal: CallInterface;\r\n parkMonitoringExternal: LineParkMonitoringInterface;\r\n parkMonitoringInternal: LineParkMonitoringInterface;\r\n callPickupGroup: string;\r\n localId: string;\r\n urgentPriority: boolean;\r\n blfPresenceGroup: string;\r\n userHoldMOHAudioSourceId: string;\r\n userHoldMOHAudioSourceName: string;\r\n networkMOHAudioSourceId: string;\r\n networkMOHAudioSourceName: string;\r\n rejectAnonymousCall: boolean;\r\n enterpriseAltNum: AlternateNumberInterface;\r\n e164AltNum: AlternateNumberInterface;\r\n directoryUris: Array<DirectoryUriInterface>;\r\n callForwardAlternateParty: ParkMonitoringInterface;\r\n mlppNoAnswerRingDuration: number;\r\n confidentialAccessMode: string;\r\n confidentialAccessLevel: string;\r\n confidentialAccessLevelName: string;\r\n callControlAgentProfile: string;\r\n holdReversionRingDuration: number;\r\n holdReversionNotificationInterval: number;\r\n partyEntranceTone: string;\r\n pstnFailover: string;\r\n isExistingLine?: boolean;\r\n plarDestinationNumber: string;\r\n prefixDigits: string;\r\n plarDescription: string;\r\n plarEnabled: boolean;\r\n}\r\n\r\nexport enum EntityChangeType {\r\n added = 'added',\r\n updated = 'updated',\r\n existing = 'existing',\r\n removed = 'removed',\r\n unassociated = 'unassociated'\r\n}\r\nexport interface LineDirectoryInterface {\r\n directoryNumber: string;\r\n routePartitionName: string;\r\n pkid: string;\r\n dnType: string;\r\n subType?: string;\r\n templateDirectoryNumber?: string;\r\n}\r\nexport interface TranslationPatternInterface {\r\n pattern: string;\r\n calledPartyTransformationMask: string;\r\n description?: string;\r\n site?: SiteShortDataInterface;\r\n hasMultipleSites?: boolean;\r\n multipleSitesId?: string;\r\n}\r\nexport interface LineAarInterface {\r\n aarDestinationMask: string;\r\n aarGroup: string;\r\n aarVoiceMailEnabled: boolean;\r\n aarKeepCallHistory: boolean;\r\n}\r\nexport interface CallInterface {\r\n forwardToVoiceMail: boolean;\r\n destination: string;\r\n callingSearchSpace: string;\r\n}\r\nexport interface LineParkMonitoringInterface {\r\n voiceMail: boolean;\r\n destination: string;\r\n callingSearchSpace: string;\r\n}\r\nexport interface AlternateNumberInterface {\r\n numberMask: string;\r\n addLocalRoutePartition: boolean;\r\n routePartition: string;\r\n isUrgent: boolean;\r\n advertiseGloballyIls: boolean;\r\n}\r\nexport interface DirectoryUriInterface {\r\n primary: boolean;\r\n uri: string;\r\n routePartition: string;\r\n advertiseGloballyIls: boolean;\r\n}\r\nexport interface ParkMonitoringInterface {\r\n destination: string;\r\n callingSearchSpace: string;\r\n voiceMail: boolean;\r\n}\r\nexport interface AvailablePhoneNumberRangeInterface {\r\n phoneNumberRange: DnRangeInterface;\r\n usedNumbers: string[];\r\n requestedNumber: string;\r\n unUsedNumbersWithDids: any;\r\n}\r\nexport interface DnRangeInterface {\r\n from: string;\r\n to: string;\r\n prefix: string;\r\n routePartition: string;\r\n dnType: DnRangeType;\r\n tempIdx: number;\r\n\r\n getEditableData(): any;\r\n\r\n getUsedRangeEditableData(): any;\r\n}\r\nexport enum DnRangeType {\r\n extension = 'EXTENSION',\r\n cpg = 'CPG',\r\n callpark = 'CALLPARK',\r\n huntgroup = 'HUNTGROUP',\r\n meetme = 'MEETME',\r\n did = 'DID'\r\n}\r\nexport interface AvailableRangeInterface {\r\n availableNumberList: AvailablePhoneNumberRangeInterface[];\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { API } from '../app.constants';\r\nimport { APIService } from './api.service';\r\nimport { map } from 'rxjs/operators';\r\nimport * as Big from 'big.js';\r\nimport { Observable } from 'rxjs';\r\nimport { ApiWebexService } from '../services/api-webex.service';\r\nimport { AvailablePhoneNumberRangeInterface, DnRangeType } from '../classes/line';\r\n\r\n\r\n@Injectable()\r\nexport class DnsService {\r\n availableNumbers = {};\r\n availableDidPatternsMappedToDn!: any;\r\n phoneNumbers: string[] = [];\r\n\r\n constructor(\r\n private apiService: APIService,\r\n private apiWebexService: ApiWebexService\r\n ) {\r\n\r\n }\r\n public getNumberRange(siteId: string, routePartition: string, withdids?: boolean, from?: string, pageSize?: number): any {\r\n // @ts-ignore\r\n if (this.availableNumbers[routePartition]?.length) {\r\n return new Observable<any>(observer => {\r\n // @ts-ignore\r\n observer.next(this.availableNumbers[routePartition]);\r\n });\r\n }\r\n\r\n this.availableDidPatternsMappedToDn = {};\r\n pageSize = pageSize ? pageSize : 20;\r\n const params = {dntype: DnRangeType.extension, routepartition: routePartition, size: pageSize, page: 0};\r\n if (withdids) {\r\n // @ts-ignore\r\n params['withdids'] = 'true';\r\n }\r\n if (from) {\r\n // @ts-ignore\r\n params['from'] = from;\r\n }\r\n // @ts-ignore\r\n this.availableNumbers[routePartition] = this.availableNumbers[routePartition] || [];\r\n\r\n return this.apiService.fetch(API.AVAILABLE_DN_IN_RANGES.replace(':siteId', siteId), params)\r\n .pipe(map((res: any) => {\r\n res.availableNumberList.forEach((availableNumber: AvailablePhoneNumberRangeInterface) => {\r\n this.setAvailableDidMappedToDn(availableNumber);\r\n // @ts-ignore\r\n this.availableNumbers[routePartition] = [...this.availableNumbers[routePartition], ...this.getUnwrapNumberRange(availableNumber)];\r\n });\r\n })\r\n )\r\n // .pipe(this.handleError(true, false));\r\n }\r\n\r\n public setAvailableDidMappedToDn(availableNumber: any): void {\r\n if (availableNumber.unUsedNumbersWithDids && availableNumber.unUsedNumbersWithDids.length) {\r\n\r\n availableNumber.unUsedNumbersWithDids.forEach((numberWithDids: any) => {\r\n const dn = numberWithDids['unUsedNumber'];\r\n this.availableDidPatternsMappedToDn[dn] = [{}];\r\n if (numberWithDids['translationPatternList'] && numberWithDids['translationPatternList'].length > 0) {\r\n this.availableDidPatternsMappedToDn[dn] = numberWithDids['translationPatternList'];\r\n this.availableDidPatternsMappedToDn[dn][0]['mappedDids'] = [{}];\r\n if (numberWithDids['mappedDids'] && numberWithDids['mappedDids'].length > 0) {\r\n this.availableDidPatternsMappedToDn[dn][0]['mappedDids'] = numberWithDids['mappedDids'];\r\n }\r\n }\r\n this.availableDidPatternsMappedToDn[dn][0]['vm'] = numberWithDids['vm'];\r\n });\r\n }\r\n }\r\n\r\n public getUnwrapNumberRange(availableNumber: any): string[] {\r\n let unwrapNumberRange = this.unwrapNumberRange(availableNumber.phoneNumberRange.from, availableNumber.phoneNumberRange.to)\r\n .map((unwrappedNumber: string) => {\r\n const dn = availableNumber.phoneNumberRange.prefix + unwrappedNumber;\r\n let str = dn;\r\n if (this.availableDidPatternsMappedToDn[dn] && this.availableDidPatternsMappedToDn[dn].length > 0) {\r\n if (this.availableDidPatternsMappedToDn[dn][0]['mappedDids'] && this.availableDidPatternsMappedToDn[dn][0]['mappedDids'].length > 0) {\r\n str += ' DID: ' + (this.availableDidPatternsMappedToDn[dn][0]['mappedDids'].length > 1 ? 'multiple' :\r\n this.availableDidPatternsMappedToDn[dn][0]['mappedDids'][0]);\r\n }\r\n if (this.availableDidPatternsMappedToDn[dn][0]['vm']) {\r\n str += ' In Use - VM';\r\n }\r\n }\r\n return str;\r\n });\r\n unwrapNumberRange = unwrapNumberRange.filter((unwrappedNumber: string) => !availableNumber.usedNumbers.includes(unwrappedNumber));\r\n return unwrapNumberRange;\r\n }\r\n\r\n public unwrapNumberRange(start: string, end: string): string[] {\r\n const regExp = /(^0+)/;\r\n let leadingZeros = '';\r\n const matches = start.match(regExp);\r\n if (matches) {\r\n leadingZeros = matches[1];\r\n }\r\n const startNumeric = new Big(start);\r\n const endNumeric = new Big(end);\r\n // @ts-ignore\r\n return Array.from({length: (endNumeric.minus(startNumeric).plus(new Big(1)).toFixed(0))}, (v, k) => {\r\n const number = String(startNumeric.plus(new Big(k)).toFixed(0));\r\n if ((leadingZeros + number).length > start.length) {\r\n leadingZeros = leadingZeros.substr(1);\r\n }\r\n return leadingZeros + number;\r\n });\r\n }\r\n\r\n public fetchPhoneNumbers(customerId: number, locationId: string): any {\r\n const params = {\r\n available: true,\r\n numberType: 'NUMBER'\r\n };\r\n return this.apiWebexService.fetch(API.PHONE_NUMBERS.replace(':customerId', String(customerId)).replace(':locationId', locationId), params)\r\n .pipe(map((result: any) => {\r\n if (result?.length) {\r\n this.phoneNumbers = result.map((item: any) => item.phoneNumber);\r\n }\r\n return result;\r\n }));\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from \"@angular/core\";\r\nimport { FormBuilder, Validators } from \"@angular/forms\";\r\nimport { DnsService } from '../../services/dns.service';\r\nimport { MatStepper } from \"@angular/material/stepper\";\r\nimport { UserService } from '../../services/user.service';\r\n// for test only\r\nconst LOCATION = 'Y2lzY29zcGFyazovL3VzL0xPQ0FUSU9OLzE2YjY0NjljLTBjZmQtNDJjMS1iOWJjLTUyN2FlZTNhN2RlOQ';\r\n@Component({\r\n selector: 'app-move-user-stepper',\r\n templateUrl: './move-user-stepper.component.html',\r\n styleUrls: ['./move-user-stepper.component.scss']\r\n\r\n})\r\nexport class MoveUserStepperComponent implements OnInit {\r\n @ViewChild('nextAfterMoveBtn') nextAfterMoveBtn: any;\r\n @Output()\r\n done = new EventEmitter();\r\n @Input()\r\n user: any;\r\n @Input()\r\n customerId!: number;\r\n @Output()\r\n runMoveUser = new EventEmitter();\r\n @Output()\r\n cancel = new EventEmitter();\r\n isLinear = false;\r\n phoneNumberPending = false;\r\n stepper!: MatStepper;\r\n\r\n get moveUserPending(): boolean {\r\n return this.userService.moveUserPending;\r\n }\r\n\r\n get currentNumber(): string {\r\n if (this.user?.devices?.length && this.user.devices[0]?.lineAssociations && this.user.devices[0].lineAssociations[0]) {\r\n return this.user.devices[0].lineAssociations[0].directoryNumber.directoryNumber;\r\n }\r\n return '';\r\n }\r\n\r\n constructor(\r\n public dnsService: DnsService,\r\n public userService: UserService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n if (this.user) {\r\n this.user.moveType = {\r\n phoneNumber: '1',\r\n extension: '1'\r\n }\r\n\r\n this.userService.userMoved$.subscribe((result) => {\r\n this.userService.moveUserPending = false;\r\n if (result && this.nextAfterMoveBtn?._elementRef?.nativeElement) {\r\n this.nextAfterMoveBtn._elementRef.nativeElement.click();\r\n }\r\n })\r\n }\r\n }\r\n\r\n onMoveUser(stepper: MatStepper): void {\r\n this.stepper = stepper;\r\n this.runMoveUser.emit();\r\n }\r\n\r\n selectPhoneNumberMigrationType(event: any): void {\r\n if (event.value && event.value === '2') {\r\n this.getPhoneNumbers();\r\n }\r\n }\r\n\r\n onPhoneNumberChange(event: any): void {\r\n this.user.newNumber\r\n }\r\n\r\n onExtensionCHange(event: any): void {\r\n this.user.newExtension\r\n }\r\n\r\n isFieldAvailable(type: string, value: string): boolean {\r\n if (this.user?.moveType) {\r\n return this.user.moveType[type] && this.user.moveType[type] === value;\r\n }\r\n return false;\r\n }\r\n\r\n getPhoneNumbers(): void {\r\n this.phoneNumberPending = true;\r\n this.dnsService.fetchPhoneNumbers(this.customerId, LOCATION)\r\n .subscribe(() => {\r\n this.phoneNumberPending = false;\r\n }, () => this.phoneNumberPending = false);\r\n }\r\n\r\n goNextStep(stepper: MatStepper) {\r\n\r\n const currentStep = stepper.selectedIndex;\r\n\r\n if (currentStep === 1) { stepper.selectedIndex = 3; }\r\n // else if (currentStep === 3) { stepper.selectedIndex = 0; }\r\n\r\n [\r\n stepper.steps.get(1),\r\n stepper.steps.get(2)\r\n\r\n ].map(step => step ? step.completed = true : undefined);\r\n }\r\n}\r\n","<app-loader *ngIf=\"moveUserPending\"></app-loader>\r\n<mat-stepper *ngIf=\"user?.moveType\" [linear]=\"isLinear\" labelPosition=\"bottom\" #stepper>\r\n <mat-step>\r\n <div class=\"step-title\">Step 1: Select location</div>\r\n <!-- <form>-->\r\n <ng-template matStepLabel>Select location</ng-template>\r\n <mat-label class=\"mat-label\">Phone number</mat-label>\r\n <mat-radio-group\r\n class=\"radio-group\"\r\n [(ngModel)]=\"user.moveType.phoneNumber\"\r\n name=\"phoneNumber\" (change)=\"selectPhoneNumberMigrationType($event)\">\r\n <mat-radio-button class=\"radio-button\" value=\"1\" color=\"primary\">Keep current number {{currentNumber}}</mat-radio-button>\r\n <mat-radio-button class=\"radio-button\" value=\"2\" color=\"primary\">Select a new number</mat-radio-button>\r\n\r\n <div *ngIf=\"user.moveType.phoneNumber === '2'\" class=\"select-container\">\r\n <mat-progress-spinner *ngIf=\"phoneNumberPending\"\r\n class=\"field-spinner\" mode=\"indeterminate\"\r\n [diameter]=\"30\"></mat-progress-spinner>\r\n\r\n <mat-select class=\"select\" placeholder=\"Select number\" [(ngModel)]=\"user.newNumber\"\r\n (selectionChange)=\"onPhoneNumberChange($event)\">\r\n <mat-option *ngFor=\"let option of dnsService.phoneNumbers\" value=\"option\">{{option}}</mat-option>\r\n </mat-select>\r\n </div>\r\n\r\n <mat-radio-button class=\"radio-button\" value=\"3\" color=\"primary\">Remove number</mat-radio-button>\r\n </mat-radio-group>\r\n <mat-label class=\"mat-label\">Extension</mat-label>\r\n <mat-radio-group class=\"radio-group\" name=\"extension\"\r\n [(ngModel)]=\"user.moveType.extension\">\r\n <mat-radio-button class=\"radio-button\" value=\"1\" color=\"primary\">Keep current extension</mat-radio-button>\r\n <mat-radio-button class=\"radio-button\" value=\"2\" color=\"primary\">Select a new extension</mat-radio-button>\r\n <mat-form-field *ngIf=\"user.moveType.extension === '2'\" appearance=\"outline\">\r\n <input matInput type=\"text\" (change)=\"onExtensionCHange($event)\"\r\n [(ngModel)]=\"user.newExtension\"\r\n [placeholder]=\"'Enter extension'\" />\r\n </mat-form-field>\r\n\r\n <mat-radio-button class=\"radio-button\" value=\"3\" color=\"primary\">Remove extension</mat-radio-button>\r\n </mat-radio-group>\r\n <!-- </form>-->\r\n <button #nextAfterMoveBtn mat-button class=\"invisible-next-btn\" matStepperNext (click)=\"goNextStep(stepper)\"></button>\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-next\" (click)=\"onMoveUser(stepper)\">Move</button>\r\n <button mat-button class=\"webex-btn btn-cancel\" (click)=\"cancel.emit()\">Cancel</button>\r\n </div>\r\n </mat-step>\r\n <mat-step [aria-labelledby]=\"'disabled_af'\">\r\n <div class=\"step-title\">Step 2: Device eligibility check</div>\r\n <ng-template matStepLabel>Device eligibility check</ng-template>\r\n <form></form>\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-next\" matStepperNext (click)=\"goNextStep(stepper)\">Next</button>\r\n <button mat-button class=\"webex-btn btn-cancel\" matStepperPrevious>Previous</button>\r\n </div>\r\n </mat-step>\r\n <mat-step [aria-labelledby]=\"'disabled_af'\">\r\n <div class=\"step-title\">Step 3: Validation</div>\r\n <form>\r\n <ng-template matStepLabel>Validation</ng-template>\r\n <mat-label class=\"mat-label\">Validation Success!</mat-label>\r\n <p class=\"validation-text\">There is no issue for moving this user to the new location, $MTlocationname. Please be aware of the changes below once the user is being moved to the new location.</p>\r\n <mat-label class=\"mat-label\">Expected changes</mat-label>\r\n <ul>\r\n <li>Tablet device (TABAVICK) needs to be reconfigured with Webex App. User will receive an email with link to download.</li>\r\n <li>Cisco 8875 (SEP751FC9BAB854) will not be migrated.</li>\r\n <li>The user will be removed from Call Park Group.</li>\r\n <li>If the device is using the location level device settings, the device will pick up the new location device settings once the user is moved. If some of the device settings are overwritten at the user level, these user level settings will be retained and the rest of the settings will be picked up at the higher level (organization or location) settings.</li>\r\n <li>If the current location has a different recording service from the one of the new location, the recording of this user may be lost after moving location.</li>\r\n </ul>\r\n <div>\r\n <mat-checkbox class=\"checkbox\" checked=\"true\" color=\"primary\">I confirm that I understand these conditions. I acknowledge the changes.</mat-checkbox>\r\n </div>\r\n </form>\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-next\" matStepperNext (click)=\"goNextStep(stepper)\">Next</button>\r\n <button mat-button class=\"webex-btn btn-cancel\" matStepperPrevious>Previous</button>\r\n </div>\r\n </mat-step>\r\n <mat-step>\r\n <div class=\"step-title\">Step 4: Result</div>\r\n <ng-template matStepLabel>Result</ng-template>\r\n <form>\r\n <mat-label class=\"mat-label\">Moving user has been successfully initiated!</mat-label>\r\n <p class=\"validation-text\">\r\n The user will be moved to the new location, $MTlocationname.\r\n <br>\r\n For the progress of move, please visit the <a class=\"form-link\" href=\"#\">user details</a>.\r\n </p>\r\n </form>\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-done\" (click)=\"done.emit(true)\">Done</button>\r\n </div>\r\n </mat-step>\r\n</mat-stepper>\r\n","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\r\nimport { DnsService } from '../services/dns.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-move-user-wizard',\r\n templateUrl: './move-user-wizard.component.html',\r\n styleUrls: ['./move-user-wizard.component.scss']\r\n})\r\nexport class MoveUserWizardComponent {\r\n @Input()\r\n user: any;\r\n @Input()\r\n customerId!: number;\r\n @Output()\r\n closeMoveUserWizard = new EventEmitter();\r\n @Output()\r\n done = new EventEmitter();\r\n @Output()\r\n runMoveUser = new EventEmitter();\r\n dataPending = false;\r\n\r\n constructor(\r\n public dnsService: DnsService\r\n ) {\r\n\r\n }\r\n\r\n onClose(): void {\r\n this.closeMoveUserWizard.emit();\r\n }\r\n\r\n onRunMoveUser(): void {\r\n this.runMoveUser.emit();\r\n }\r\n}\r\n","<app-loader *ngIf=\"dataPending\"></app-loader>\r\n<div class=\"move-user-stepper-container\">\r\n <header class=\"move-user-header\">\r\n <div class=\"move-user-header__title\">Move User {{user.userid}}</div>\r\n <div class=\"move-user-header__close\">\r\n <span class=\"app-icon icon-white-close\" (click)=\"onClose()\"></span>\r\n </div>\r\n </header>\r\n <app-move-user-stepper *ngIf=\"user\" [customerId]=\"customerId\"\r\n [user]=\"user\" (cancel)=\"onClose()\" (done)=\"done.emit()\"\r\n (runMoveUser)=\"onRunMoveUser()\"></app-move-user-stepper>\r\n</div>\r\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { UserService } from './services/user.service';\r\nimport { APIService } from \"./services/api.service\";\r\nimport { NotificationService } from './services/notification.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { UsersSearchService } from './services/users-search.service';\r\nimport { ListUser } from './classes/user-list';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { PageEvent } from '@angular/material/paginator';\r\nimport { ApiWebexService } from './services/api-webex.service';\r\nimport { MAX_INTEGER } from './app.constants';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { UserListConfirmDialogComponent } from './user-list-confirm-dialog/user-list-confirm-dialog.component';\r\n\r\nconst DISPLAYED_COLS = ['user-icon', 'name', 'email', 'status', 'role', 'actions'];\r\nconst LOCAL_STORAGE = {\r\n USER_IN_MIGRATION: 'userIdInMigration'\r\n};\r\n\r\n@Component({\r\n selector: 'app-users-list',\r\n templateUrl: './users-list.component.html',\r\n styleUrls: ['./users-list.component.scss']\r\n})\r\nexport class UsersListComponent implements OnInit, OnDestroy {\r\n @Input() token!: string;\r\n @Input() customerId!: number;\r\n @Input() siteId!: number;\r\n @Output() openUser = new EventEmitter();\r\n @Output() userMoved = new EventEmitter();\r\n @Output() switchToWizard = new EventEmitter();\r\n @Input() host!: string;\r\n\r\n dataPending!: boolean;\r\n moveInProgressUserId!: string;\r\n users!: ListUser[];\r\n dataSource!: MatTableDataSource<ListUser>;\r\n displayedColumns = DISPLAYED_COLS;\r\n moveUser: any;\r\n moveUserIndex: any;\r\n showMoveUserWizard = false;\r\n moveUserPending = false;\r\n private subscriptions: Subscription[] = [];\r\n\r\n get form(): FormGroup {\r\n return this.userService?.user?.form;\r\n }\r\n\r\n constructor(\r\n public userService: UserService,\r\n private apiService: APIService,\r\n private apiWebexService: ApiWebexService,\r\n private notifications: NotificationService,\r\n public usersSearchService: UsersSearchService,\r\n private dialog: MatDialog\r\n ) {\r\n }\r\n\r\n\r\n ngOnInit(): void {\r\n this.usersSearchService.setDefaultValues();\r\n this.usersSearchService.customerId = this.customerId;\r\n this.usersSearchService.siteId = this.siteId;\r\n this.apiService.token = this.token;\r\n this.apiWebexService.token = this.token;\r\n this.apiService.apiUrl = this.host + '/dcp';\r\n this.apiWebexService.apiUrl = this.host + '/webex';\r\n\r\n this.getMigratedUsers();\r\n const subscription = this.usersSearchService.foundUsers$\r\n .subscribe((users: ListUser[]) => {\r\n this.initializeDataSource(users);\r\n });\r\n this.subscriptions.push(subscription);\r\n\r\n console.log('users list paris 7773');\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.subscriptions?.length) {\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n }\r\n }\r\n\r\n pageNumberChangeEvent(perPageNumber: number): void {\r\n this.usersSearchService.pageSize = perPageNumber;\r\n this.usersSearchService.pageIndex = 0;\r\n this.runSearch();\r\n }\r\n\r\n closeMoveUserWizard(afterUserMove?: boolean): void {\r\n this.moveUser = null;\r\n this.moveUserIndex = null;\r\n localStorage.removeItem(LOCAL_STORAGE.USER_IN_MIGRATION);\r\n this.showMoveUserWizard = false;\r\n this.switchToWizard.emit(false);\r\n if (afterUserMove) {\r\n this.getMigratedUsers();\r\n }\r\n }\r\n\r\n pageEvent(event: PageEvent): void {\r\n this.usersSearchService.pageSize = event.pageSize;\r\n this.usersSearchService.pageIndex = event.pageIndex;\r\n this.runSearch();\r\n }\r\n\r\n onUserClick(user: ListUser): void {\r\n this.openUser.emit(user);\r\n }\r\n\r\n moveUserToMT(user: ListUser, index: number): void {\r\n\r\n if (user && user.siteId && user.userid) {\r\n this.moveUserPending = true;\r\n this.moveInProgressUserId = user.userid;\r\n this.setStatusToUser(index, 'In Progress');\r\n localStorage.setItem(LOCAL_STORAGE.USER_IN_MIGRATION, user.userid);\r\n\r\n const subscription = this.userService.moveUserToMT(this.customerId, user)\r\n .subscribe(() => {\r\n this.moveUser = null;\r\n this.moveUserIndex = null;\r\n this.getMigratedUsers();\r\n }, () => {\r\n this.removeUserInMigrationProgress();\r\n this.setStatusToUser(index, 'Migration Error');\r\n });\r\n this.subscriptions.push(subscription);\r\n }\r\n }\r\n\r\n moveUserToDI(user: ListUser, index: number): void {\r\n\r\n if (user && user.siteId && user.webexUUID) {\r\n this.moveUserPending = true;\r\n this.moveInProgressUserId = user.userid;\r\n this.users[index].status = 'In Progress'\r\n localStorage.setItem(LOCAL_STORAGE.USER_IN_MIGRATION, user.userid);\r\n\r\n const subscription = this.userService.moveUserToDI(this.customerId, user)\r\n .subscribe(() => {\r\n this.removeUserInMigrationProgress();\r\n this.setStatusToUser(index, 'Active');\r\n this.users[index].webexUUID = '';\r\n if (this.usersSearchService.migratedUsers && this.usersSearchService.migratedUsers.length) {\r\n this.usersSearchService.migratedUsers = this.usersSearchService.migratedUsers.filter((migratedUser: any) => migratedUser.userid !== user.email);\r\n }\r\n }, () => {\r\n this.removeUserInMigrationProgress();\r\n this.setStatusToUser(index, 'Migration Error');\r\n });\r\n }\r\n }\r\n\r\n private removeUserInMigrationProgress(): void {\r\n localStorage.removeItem(LOCAL_STORAGE.USER_IN_MIGRATION);\r\n this.moveInProgressUserId = '';\r\n this.moveUserPending = false;\r\n }\r\n\r\n private setStatusToUser(index: number, status: string): void {\r\n if (this.users && this.users[index]) {\r\n this.users[index].status = status;\r\n if (status === 'Migrated') {\r\n this.users[index].roleName = '';\r\n this.users[index].isMigrated = true;\r\n this.users[index].status = status;\r\n } else {\r\n this.users[index].roleName = 'Dedicated Instance Calling user';\r\n this.users[index].isMigrated = false;\r\n this.users[index].status = status;\r\n }\r\n }\r\n this.dataSource = new MatTableDataSource(this.users);\r\n }\r\n\r\n private initializeDataSource(users: ListUser[]): void {\r\n if(users?.length) {\r\n // this.setRandomUserRole(users);\r\n this.users = users;\r\n this.setUserMigrationProgress();\r\n this.usersSearchService.setMigratedPropToUsers(this.users);\r\n this.dataSource = new MatTableDataSource(users);\r\n }\r\n }\r\n\r\n private setUserRole(): void {\r\n if (this.users?.length) {\r\n this.users.forEach(user => {\r\n if (!user.isMigrated) {\r\n user.roleName = 'Dedicated Instance Calling user';\r\n }\r\n })\r\n }\r\n }\r\n\r\n private setRandomUserRole(users: ListUser[]): void {\r\n const max = Math.round(this.usersSearchService.pageSize - this.usersSearchService.pageSize / 4);\r\n const min = Math.round(this.usersSearchService.pageSize / 2);\r\n const randomAmount = Math.round(Math.random() * (max - min) + min);\r\n const indexes = this.getArrayOfRandomUserIndexes(randomAmount);\r\n indexes.forEach(index => {\r\n if (users[index]) {\r\n users[index].roleName = 'Dedicated Instance Calling user'\r\n }\r\n });\r\n }\r\n\r\n private getArrayOfRandomUserIndexes(randomAmount: number): number[] {\r\n const indexes = [];\r\n while (randomAmount > 0) {\r\n const index = Math.round(Math.random() * (this.usersSearchService.pageSize - 1));\r\n indexes.push(index)\r\n randomAmount--;\r\n }\r\n return indexes;\r\n }\r\n\r\n private runSearch(): void {\r\n this.dataPending = true;\r\n this.usersSearchService.quickRegularUsersSearch()\r\n .subscribe(() => {\r\n this.dataPending = false;\r\n }, () => {\r\n this.dataPending = false;\r\n this.notifications.error('The data can not be received');\r\n });\r\n }\r\n\r\n private setUserMigrationProgress(): void {\r\n const userIdInMigration = localStorage.getItem(LOCAL_STORAGE.USER_IN_MIGRATION);\r\n if (userIdInMigration) {\r\n const index = this.users.findIndex(user => user.userid === userIdInMigration);\r\n this.moveInProgressUserId = index > -1 ? this.users[index].userid : '';\r\n this.moveUserPending = index > -1;\r\n }\r\n }\r\n\r\n private getMigratedUsers(): void {\r\n this.dataPending = true;\r\n const searchParams = {\r\n customerid: this.customerId,\r\n siteid: this.siteId,\r\n 'cloud-only': 'true'\r\n };\r\n // this.usersSearchService.quickWebexUsersSearch(searchParams, true, MAX_INTEGER)\r\n this.usersSearchService.getMigratedUsers(this.customerId)\r\n // this.usersSearchService.getMigratedWebexUsers(this.customerId)\r\n .subscribe(() => {\r\n const userIdInMigration = localStorage.getItem(LOCAL_STORAGE.USER_IN_MIGRATION);\r\n if (userIdInMigration && this.usersSearchService.migratedUsers.filter((migratedUser: any) => migratedUser.userid === userIdInMigration)) {\r\n localStorage.removeItem(LOCAL_STORAGE.USER_IN_MIGRATION);\r\n }\r\n this.runSearch();\r\n }, () => {\r\n this.dataPending = false;\r\n this.notifications.error('The data can not be received');\r\n });\r\n }\r\n\r\n onMoveUser(user: ListUser, index: number, type: string): void {\r\n const dialogRef = this.dialog.open(UserListConfirmDialogComponent, {\r\n data: {\r\n title: `Move user ${user.userid} to ${type}?`,\r\n message: `<p>By moving out of Dedicated Instance, you may need to reassign directory numbers and lose calling services.</p>\r\n<p>Are you sure you want to continue?</p>`,\r\n confirmButtonText: 'Yes, continue'\r\n }\r\n });\r\n dialogRef.beforeClosed().subscribe((result: any) => {\r\n if (result) {\r\n switch (type) {\r\n case 'QuickMove':\r\n this.moveUserToMT(user, index);\r\n break;\r\n case 'MT':\r\n this.moveUser = user;\r\n this.moveUserIndex = index;\r\n this.showMoveUserWizard = true;\r\n this.switchToWizard.emit(true);\r\n break;\r\n case 'DI':\r\n this.moveUserToDI(user, index);\r\n break;\r\n }\r\n\r\n }\r\n });\r\n }\r\n\r\n runMoveUserToMT(): void {\r\n if (this.moveUser && this.moveUser.siteId && this.moveUser.userid) {\r\n this.userService.moveUserPending = true;\r\n this.moveInProgressUserId = this.moveUser.userid;\r\n this.setStatusToUser(this.moveUserIndex, 'In Progress');\r\n localStorage.setItem(LOCAL_STORAGE.USER_IN_MIGRATION, this.moveUser.userid);\r\n }\r\n\r\n const subscription = this.userService.moveUserToMT(this.customerId, this.moveUser)\r\n .subscribe(() => {\r\n this.userService.userMoved$.next(true);\r\n }, () => {\r\n this.removeUserInMigrationProgress();\r\n this.setStatusToUser(this.moveUserIndex, 'Migration Error');\r\n });\r\n this.subscriptions.push(subscription);\r\n }\r\n\r\n\r\n}\r\n","<app-loader *ngIf=\"dataPending\"></app-loader>\r\n<div *ngIf=\"!showMoveUserWizard\" id=\"users-list\">\r\n <app-pagination\r\n [pagination]=\"usersSearchService.getPagination()\"\r\n [showPageSizeOptions]=\"true\"\r\n (pageNumberChangeEmitter)=\"pageNumberChangeEvent($event)\"\r\n (pageEmitter)=\"pageEvent($event)\">\r\n </app-pagination>\r\n <table class=\"webex-table\" mat-table *ngIf=\"users?.length\" #table [dataSource]=\"dataSource\">\r\n\r\n <ng-container matColumnDef=\"user-icon\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\"></th>\r\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\"\r\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\r\n (click)=\"onUserClick(user)\">\r\n <span class=\"icon-webex-box\"><span class=\"icon-webex icon-webex-user\"></span></span>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"name\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">First / Last Name</th>\r\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\"\r\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\r\n (click)=\"onUserClick(user)\"> {{ user.firstName }} {{ user.lastName }}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"email\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">Email</th>\r\n <td class=\"user-site\" [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\r\n mat-cell *matCellDef=\"let user\" (click)=\"onUserClick(user)\">\r\n {{ user.email }}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"status\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">Status</th>\r\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\"\r\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\r\n (click)=\"onUserClick(user)\">\r\n <span class=\"icon-user-status icon-user-status-active\"></span>{{user.status}}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"actions\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\"></th>\r\n <td class=\"user-site\" mat-cell *matCellDef=\"let user, let i = index\"\r\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\">\r\n <mat-progress-spinner class=\"field-spinner\"\r\n [diameter]=\"20\"\r\n mode=\"indeterminate\"\r\n *ngIf=\"user.status === 'In Progress'\"></mat-progress-spinner>\r\n <button *ngIf=\"!(moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid)\"\r\n class=\"button-action-dot\" mat-icon-button [matMenuTriggerFor]=\"menu\">\r\n <div class=\"icon-actions-dots\">\r\n <span class=\"icon-dot\">.</span>\r\n <span class=\"icon-dot\">.</span>\r\n <span class=\"icon-dot\">.</span>\r\n </div>\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button mat-menu-item [disabled]=\"true\">Resend Invitation</button>\r\n <button mat-menu-item [disabled]=\"true\">Reset Password</button>\r\n <button *ngIf=\"!user.isMigrated\" mat-menu-item (click)=\"onMoveUser(user, i, 'QuickMove')\">Quick Move User Tם MT</button>\r\n <button *ngIf=\"!user.isMigrated\" mat-menu-item (click)=\"onMoveUser(user, i, 'MT')\">Move User to MT</button>\r\n <button *ngIf=\"user.isMigrated\" mat-menu-item (click)=\"onMoveUser(user, i, 'DI')\">Revert User to UCM/DI</button>\r\n <button mat-menu-item [disabled]=\"true\">Deactivate User</button>\r\n <button mat-menu-item [disabled]=\"true\">Delete User</button>\r\n </mat-menu>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"role\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">Administrator Role</th>\r\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\" (click)=\"onUserClick(user)\">{{ user.roleName || '' }}</td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\r\n </table>\r\n</div>\r\n\r\n<app-move-user-wizard *ngIf=\"showMoveUserWizard\" [user]=\"moveUser\" (done)=\"closeMoveUserWizard(true)\"\r\n [customerId]=\"customerId\" (runMoveUser)=\"runMoveUserToMT()\"\r\n (closeMoveUserWizard)=\"closeMoveUserWizard(false)\"></app-move-user-wizard>\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class EventsCommunicationService {\r\n public onSuccessfulLoginEvent = new Subject();\r\n\r\n constructor() {\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatTreeModule } from '@angular/material/tree';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatNativeDateModule } from '@angular/material/core';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatStepperModule } from '@angular/material/stepper';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n DragDropModule,\r\n MatButtonModule,\r\n MatListModule,\r\n MatProgressSpinnerModule,\r\n MatExpansionModule,\r\n MatInputModule,\r\n MatInputModule,\r\n MatListModule,\r\n MatTreeModule,\r\n MatTreeModule,\r\n MatNativeDateModule,\r\n MatDatepickerModule,\r\n MatTooltipModule,\r\n MatAutocompleteModule,\r\n MatChipsModule,\r\n MatSidenavModule,\r\n MatFormFieldModule,\r\n MatStepperModule,\r\n MatTabsModule,\r\n MatCardModule,\r\n MatSelectModule,\r\n MatCheckboxModule,\r\n MatSlideToggleModule,\r\n MatTableModule,\r\n MatPaginatorModule,\r\n MatMenuModule,\r\n MatDialogModule,\r\n MatRadioModule\r\n ],\r\n exports: [\r\n DragDropModule,\r\n MatButtonModule,\r\n MatListModule,\r\n MatProgressSpinnerModule,\r\n MatExpansionModule,\r\n MatInputModule,\r\n MatInputModule,\r\n MatListModule,\r\n MatTreeModule,\r\n MatTreeModule,\r\n MatNativeDateModule,\r\n MatDatepickerModule,\r\n MatTooltipModule,\r\n MatAutocompleteModule,\r\n MatChipsModule,\r\n MatSidenavModule,\r\n MatFormFieldModule,\r\n MatStepperModule,\r\n MatTabsModule,\r\n MatCardModule,\r\n MatCheckboxModule,\r\n MatSelectModule,\r\n MatSlideToggleModule,\r\n MatProgressSpinnerModule,\r\n MatTableModule,\r\n MatPaginatorModule,\r\n MatMenuModule,\r\n MatDialogModule,\r\n MatRadioModule\r\n ],\r\n})\r\nexport class MaterialModule {\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { UsersListComponent } from './users-list.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { MaterialModule } from './material.module';\r\nimport { PaginationComponent } from './utils/pagination/pagination.component';\r\nimport { UserService } from './services/user.service';\r\nimport { APIService } from './services/api.service';\r\nimport { EventsCommunicationService } from './services/events-communication.service';\r\nimport { UsersSearchService } from './services/users-search.service';\r\nimport { NotificationService } from './services/notification.service';\r\nimport { RemoveKynFromIBMService } from './services/removeKynFromIBM.service';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { ApiWebexService } from './services/api-webex.service';\r\nimport { AppLoaderComponent } from './utils/app-loader/app-loader';\r\nimport { MoveUserWizardComponent } from './move-user-wizard/move-user-wizard.component';\r\nimport { MoveUserStepperComponent } from './move-user-wizard/move-user-stepper/move-user-stepper.component';\r\nimport { UserListConfirmDialogComponent } from './user-list-confirm-dialog/user-list-confirm-dialog.component';\r\nimport { DnsService } from './services/dns.service';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n UsersListComponent,\r\n PaginationComponent,\r\n AppLoaderComponent,\r\n MoveUserWizardComponent,\r\n MoveUserStepperComponent,\r\n UserListConfirmDialogComponent\r\n ],\r\n imports: [\r\n BrowserModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n HttpClientModule,\r\n MaterialModule\r\n ],\r\n providers: [\r\n UserService,\r\n APIService,\r\n EventsCommunicationService,\r\n UsersSearchService,\r\n NotificationService,\r\n RemoveKynFromIBMService,\r\n ApiWebexService,\r\n DnsService\r\n ],\r\n exports: [UsersListComponent]\r\n})\r\nexport class UsersListModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1","i1.APIService","i2.ApiWebexService","i3.RemoveKynFromIBMService","i4","i1.DnsService","i2.UserService","i3","i5","i6","i9","i12","i14.AppLoaderComponent","i3.AppLoaderComponent","i4.MoveUserStepperComponent","i1.UserService","i2.APIService","i3.ApiWebexService","i4.NotificationService","i5.UsersSearchService","i7","i8","i10","i11","i12.PaginationComponent","i13.AppLoaderComponent","i14.MoveUserWizardComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MASa,8BAA8B,CAAA;IAKzC,WACS,CAAA,SAA4B,EACH,IAAsB,EAAA;AAD/C,QAAA,IAAS,CAAA,SAAA,GAAT,SAAS,CAAmB;AACH,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAkB;AANjD,QAAA,IAAiB,CAAA,iBAAA,GAAG,IAAI,CAAC;AACzB,QAAA,IAAO,CAAA,OAAA,GAAG,EAAE,CAAC;AACb,QAAA,IAAK,CAAA,KAAA,GAAG,EAAE,CAAC;KAKb;IAEL,QAAQ,GAAA;QACN,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,EAAE,CAAC;QAC3D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;KACpC;AAEM,IAAA,OAAO,CAAC,GAAY,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;KAC3B;;AAlBU,8BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,8BAA8B,8CAO/B,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAPd,8BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,8BAA8B,uDCT3C,quBAeA,EAAA,MAAA,EAAA,CAAA,g3RAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4FDNa,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAN1C,SAAS;+BACE,iBAAiB,EAAA,aAAA,EAGZ,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,quBAAA,EAAA,MAAA,EAAA,CAAA,g3RAAA,CAAA,EAAA,CAAA;;;8BASlC,MAAM;+BAAC,eAAe,CAAA;;;MAcd,gBAAgB,CAAA;AAI5B;;AElCM,MAAM,cAAc,GAAG,CAAC,KAAU,EAAE,OAAuB,KAAI;IACpE,IAAI,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,IAAA,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE;QAC7B,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;AACpE,KAAA;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,GAAG,KAAI;QACnC,IAAI,KAAK,CAAC,GAAG,CAAC,YAAY,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE;YACnF,MAAc,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;AAC7E,SAAA;AAAM,aAAA,IAAI,KAAK,CAAC,GAAG,CAAC,YAAY,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE;YACnE,MAAc,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC;AACpD,SAAA;AAAM,aAAA;YACJ,MAAc,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AACnC,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACf,EAAE,EAAE,CAAC,CAAC;AACT,CAAC;;ACfM,MAAM,GAAG,GAAG;AACjB,IAAA,UAAU,EAAE,4CAA4C;AACxD,IAAA,kBAAkB,EAAE,0CAA0C;AAC9D,IAAA,kBAAkB,EAAE,wCAAwC;AAC5D,IAAA,UAAU,EAAE,sCAAsC;AAClD,IAAA,kBAAkB,EAAE,wBAAwB;AAC5C,IAAA,WAAW,EAAE,wBAAwB;AACrC,IAAA,SAAS,EAAE,sDAAsD;AACjE,IAAA,sBAAsB,EAAE,2CAA2C;AACnE,IAAA,WAAW,EAAE,gDAAgD;AAC7D,IAAA,iBAAiB,EAAE,2EAA2E;AAC9F,IAAA,iBAAiB,EAAE,0CAA0C;AAC7D,IAAA,cAAc,EAAE,iEAAiE;AACjF,IAAA,wBAAwB,EAAE,iCAAiC;AAC3D,IAAA,kBAAkB,EAAE,gDAAgD;AACpE,IAAA,oBAAoB,EAAE,wDAAwD;AAC9E,IAAA,WAAW,EAAE,qDAAqD;AAClE,IAAA,cAAc,EAAE,2BAA2B;AAC3C,IAAA,iBAAiB,EAAE,uFAAuF;AAC1G,IAAA,aAAa,EAAE,4EAA4E;CAC5F,CAAC;AACK,MAAM,aAAa,GAAG;AAC3B,IAAA,KAAK,EAAE,0EAA0E;QACjF,+CAA+C;QAC/C,yDAAyD;CAC1D,CAAC;AAEK,MAAM,mBAAmB,GAAG;AACjC,IAAA,IAAI,EAAE,EAAE;AACR,IAAA,KAAK,EAAE,CAAC;CACT,CAAA;AACM,MAAM,uBAAuB,GAAG;IACrC,EAAE;IACF,EAAE;IACF,GAAG;IACH,GAAG;CACJ,CAAC;AACK,MAAM,cAAc,GAAG;IAC5B,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;CACJ,CAAC;AACK,MAAM,eAAe,GAAG;IAC7B,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;CACJ,CAAC;AACK,MAAM,WAAW,GAAG,UAAU;;MC5CxB,cAAc,CAAA;AAYzB,IAAA,WAAA,CAAY,IAAU,EAAA;AACpB,QAAA,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC1B,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACxB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;AAChC,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AAC9B,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;AACzB,SAAA;QACD,IAAI,CAAC,QAAQ,EAAE,CAAA;KAChB;IAED,QAAQ,GAAA;AACN,QAAA,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AACtC,QAAA,MAAM,YAAY,GAAG;AACnB,YAAA,MAAM,EAAE,CAAC,EAAC,KAAK,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AACtG,YAAA,KAAK,EAAE,CAAC,EAAC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAC,EAAE;AACjD,oBAAA,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC;AACvC,oBAAA,UAAU,CAAC,QAAQ;iBACpB,CAAC;AACF,YAAA,SAAS,EAAE,CAAC,EAAC,KAAK,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;AAC1D,YAAA,QAAQ,EAAE,CAAC,EAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAC,EAAE,UAAU,CAAC,QAAQ,CAAC;SAC9E,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;KAC7C;IAED,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC/B,QAAA,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,KAAK,IAAG;;YAC3D,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE,CAAC;AAChC,aAAA;AAAM,iBAAA;gBACL,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,EAAE,CAAC;AACjC,aAAA;AACH,SAAC,CAAC,CAAA;KACH;IAED,cAAc,GAAA;AACZ,QAAA,MAAM,cAAc,GAAa,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;AAC/F,QAAA,OAAO,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;KAC7C;AAED,IAAA,KAAK,CAAC,aAA8B,EAAA;QAClC,IAAI,CAAC,aAAa,EAAE;AAClB,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC,CAAC;KACjG;AAEF;;MC9DY,YAAY,CAAA;AAEvB,IAAA,OAAO,uBAAuB,CAAC,KAAS,EAAE,MAAc,EAAA;QACtD,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;YACzB,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;AAC5B,gBAAA,OAAO,CAAC,CAAC;AACV,aAAA;YACD,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;AAC3B,gBAAA,OAAO,CAAC,CAAC;AACV,aAAA;YACD,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE;gBAC3B,OAAO,CAAC,CAAC,CAAC;AACX,aAAA;AACD,YAAA,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;AAC5B,YAAA,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;YAC5B,OAAO,CAAC,SAAS,GAAG,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,SAAS,IAAI,CAAC,GAAG,CAAC,CAAC;AACxE,SAAC,CAAC,CAAC;KACJ;IAED,OAAO,IAAI,CAAC,UAAe,EAAE,UAAe,EAAE,IAAY,EAAE,YAAuB,EAAA;QACjF,IAAI,MAAM,GAAQ,EAAE,CAAC;QACrB,IAAI,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE;AACrC,YAAA,OAAO,SAAS,CAAC;AAClB,SAAA;AACD,QAAA,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;AACjD,YAAA,OAAO,UAAU,CAAC;AACnB,SAAA;AACD,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACzG,MAAM,MAAM,GAAG,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;QACzF,MAAM;aACH,OAAO,CAAC,GAAG,IAAG;AACb,YAAA,IAAI,OAAO,UAAU,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,OAAO,UAAU,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE;AAC9E,gBAAA,IAAI,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE;AAC1D,oBAAA,MAAM,OAAO,GAAG,CAAA,EAAG,IAAI,CAAA,EAAG,IAAI,GAAG,GAAG,GAAG,EAAE,CAAG,EAAA,GAAG,EAAE,CAAC;oBAClD,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;oBAC1F,IAAI,MAAM,KAAK,SAAS,EAAE;wBACxB,MAAM,GAAG,CAAC,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC;AACjC,qBAAA;AACF,iBAAA;AACF,aAAA;AAAM,iBAAA,IAAI,UAAU,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE;AAC3H,gBAAA,MAAM,KAAK,GAAG,UAAU,GAAG,YAAY,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;gBAC9E,MAAM,CAAC,IAAI,CAAC,CAAA,EAAG,IAAI,CAAG,EAAA,IAAI,GAAG,GAAG,GAAG,EAAE,CAAA,EAAG,GAAG,CAAI,CAAA,EAAA,KAAK,CAAE,CAAA,CAAC,CAAC;AACzD,aAAA;AACH,SAAC,CAAC,CAAC;AACL,QAAA,OAAO,MAAM,CAAC;KACf;IAED,OAAO,aAAa,CAAC,KAAU,EAAA;AAC7B,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;QACD,QAAQ,OAAO,KAAK;AAClB,YAAA,KAAK,SAAS;AACZ,gBAAA,OAAO,KAAK,CAAC;AACf,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,EAAE,CAAC;AACZ,YAAA;AACE,gBAAA,OAAO,IAAI,CAAC;AACf,SAAA;KACF;AAED,IAAA,OAAO,OAAO,CAAC,IAAS,EAAE,IAAS,EAAA;AACjC,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;KACtD;;0GAlEU,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;8GAAZ,YAAY,EAAA,CAAA,CAAA;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,UAAU;;;MCME,UAAU,CAAA;AAKrB,IAAA,WAAA,CACU,UAAsB,EAAA;AAAtB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AAJhC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC;KAM5E;AAED,IAAA,KAAK,CAAC,GAAW,EAAE,MAAM,GAAG,EAAE,EAAE,KAAe,EAAA;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,EAAC,MAAM,EAAE,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,OAAO,EAAC,CAAC,CAAC;KACrG;AAED,IAAA,IAAI,CAAC,GAAW,EAAE,IAAS,EAAE,MAAM,GAAG,EAAE,EAAA;AACtC,QAAA,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC;AACpB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,EAAC,MAAM,EAAE,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,OAAO,EAAC,CAAC,CAAC;KAC5G;;AAGD,IAAA,YAAY,CAAC,GAAW,EAAE,IAAI,GAAG,IAAI,EAAE,MAAM,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAA;AAC9D,QAAA,OAAO,GAAG,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;AACvC,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE;YACnD,OAAO;AACP,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,MAAM,EAAE,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;AAC1C,SAAA,CAAC,CAAC;KACJ;IAED,GAAG,CAAC,GAAW,EAAE,IAAI,GAAG,IAAI,EAAE,MAAM,GAAG,EAAE,EAAA;AACvC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,EAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAC,CAAC,CAAC;KAC3G;AAED,IAAA,MAAM,CAAC,GAAW,EAAE,MAAM,GAAG,EAAE,EAAA;AAC7B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,EAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAC,CAAC,CAAC;KACxG;IAED,eAAe,CAAC,GAAW,EAAE,QAAgB,EAAE,UAAkB,EAAE,gBAAgB,GAAG,EAAE,EAAE,KAAe,EAAA;AACvG,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC1E,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,QAAQ,EAAE,EAAC,CAAC,CAAC;QAC7G,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAmC,CAAC;KACzE;AAEO,IAAA,oBAAoB,CAAC,MAAW,EAAA;QACtC,MAAM,MAAM,GAAQ,EAAE,CAAC;QAEvB,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;QACD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACrC,YAAA,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE;gBACf,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC3C,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC;AACzF,aAAA;AACF,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACf;AAEO,IAAA,UAAU,CAAC,KAAe,EAAA;AAChC,QAAA,IAAI,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAChC,QAAA,IAAI,KAAK,EAAE;YACT,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC7C,SAAA;AACD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC7D,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,GAAE,KAAK,CAAC,CAAC;AAC5D,QAAA,OAAO,OAAO,CAAC;KAChB;IAEO,kBAAkB,CAAC,IAAS,EAAE,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAA;QAC9D,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACvC,IAAI,KAAK,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,GAAG,mBAAmB,CAAC,EACzD,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAAE,YAAA,OAAO,EAAE,CAAC;AAC3B,QAAA,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;KAC3D;;wGA/EU,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;4GAAV,UAAU,EAAA,CAAA,CAAA;4FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB,UAAU;;;ACDL,MAAO,eAAgB,SAAQ,UAAU,CAAA;AAC7C,IAAA,WAAA,CAAY,UAAsB,EAAA;QAChC,KAAK,CAAC,UAAU,CAAC,CAAC;;AAElB,QAAA,IAAI,CAAC,MAAM,GAAG,kCAAkC,CAAC;;KAElD;;6GANU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;iHAAf,eAAe,EAAA,CAAA,CAAA;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;;;MCME,WAAW,CAAA;IAUtB,WACU,CAAA,UAAsB,EACtB,eAAgC,EAAA;AADhC,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AACtB,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;AAX1C,QAAA,IAAM,CAAA,MAAA,GAAW,CAAC,CAAC,CAAC;AACpB,QAAA,IAAM,CAAA,MAAA,GAAW,EAAE,CAAC;AACpB,QAAA,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;AAGzB,QAAA,IAAe,CAAA,eAAA,GAAG,KAAK,CAAC;AACxB,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAO,CAAC;KAO/B;IAED,QAAQ,GAAA;AACN,QAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;KACzB;IAEM,cAAc,CAAC,MAAc,EAAE,MAAc,EAAA;AAClD,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,kBAAkB,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpJ,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,MAAW,KAAI;YACxB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,YAAA,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;SACzD,CAAC,CAAC,CAAA;;KAEN;AAEM,IAAA,gBAAgB,CAAC,IAAS,EAAA;;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,EAAC,MAAA,IAAI,CAAC,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,CAAA,EAAE;YACrD,OAAO;AACR,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAA;;KAErI;IAEM,YAAY,CAAC,UAAe,EAAE,IAAc,EAAA;;;;;;;AAOjD,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAA;;KAExF;IAEM,YAAY,CAAC,UAAe,EAAE,IAAc,EAAA;;;;;;;QAOjD,MAAM,GAAG,GAAG,GAAG,CAAC,iBAAiB,CAAC,OAAO,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AACnH,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAA;;KAE9E;IAEO,eAAe,CAAC,UAAe,EAAE,IAAc,EAAA;QACrD,OAAO;AACL,YAAA,UAAU,EAAE,UAAU;AACtB,YAAA,QAAQ,EAAE;AACR,gBAAA,MAAM,EAAE,CAAC,EAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAC,CAAC;AACvD,aAAA;SACF,CAAC;KACH;IAEM,UAAU,CAAC,MAAc,EAAE,MAAc,EAAA;AAC9C,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,kBAAkB,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;;KAErJ;AAEM,IAAA,aAAa,CAAC,EAAU,EAAA;AAC7B,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AAC/B,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,kBAAkB,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAChJ,aAAA,IAAI,CAAC,GAAG,CAAC,MAAM,IAAG;AACjB,YAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AAChC,YAAA,OAAO,MAAM,CAAC;SACf,CAAC,CAAC,CAAC;KACP;IAEM,mBAAmB,GAAA;AACxB,QAAA,MAAM,MAAM,GAAG;AACb,YAAA,yBAAyB,EAAE,IAAI;SAChC,CAAC;QACF,OAAO,IAAI,CAAC,yBAAyB,EAAE;AACpC,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,MAAW,KAAI;AACxB,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC;iBACvI,SAAS,CAAC,MAAK;AAEhB,aAAC,CAAC,CAAA;;;;;;SAML,CAAC,CAAC,CAAC;KACP;IAEM,yBAAyB,GAAA;QAC9B,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,MAAM,CAAC,CAAC;AACrG,QAAA,IAAI,IAAI,EAAE;YACR,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;AACzC,SAAA;QACD,IAAI,EAAC,KAAK,KAAL,IAAA,IAAA,KAAK,uBAAL,KAAK,CAAE,MAAM,CAAA,EAAE;AAClB,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtB,SAAA;QAED,OAAO,QAAQ,CAAC,KAAK,CAAC;AACnB,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,SAAc,KAAI;;AAE3B,YAAA,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;SACxC,CAAC,CAAC,CAAA;;KAGN;IAEM,iBAAiB,GAAA;QACtB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAC1C;IAEM,iBAAiB,CAAC,IAAS,EAAE,KAAW,EAAA;QAC7C,IAAI,CAAC,IAAI,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;AACrC,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,UAAU,GAAG,IAAI,cAAc,CAAC,UAAU,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC;AAC3C,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,KAAK,CAAC;KACxD;AAEO,IAAA,sBAAsB,CAAC,SAAc,EAAA;QAC3C,IAAI,EAAC,SAAS,KAAT,IAAA,IAAA,SAAS,uBAAT,SAAS,CAAE,MAAM,CAAA,EAAE;YACtB,OAAO;AACR,SAAA;AACD,QAAA,KAAK,IAAI,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YACzD,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE;;AAEnD,gBAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;gBAClC,OAAO;AACR,aAAA;AACF,SAAA;KACF;;yGAlJU,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;6GAAX,WAAW,EAAA,CAAA,CAAA;4FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,UAAU;;;ACVX,MAAM,WAAW,GAAG,KAAK,CAAC;AAC1B,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAE/B,IAAY,gBAKX,CAAA;AALD,CAAA,UAAY,gBAAgB,EAAA;AACxB,IAAA,gBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,gBAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,gBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,gBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACvB,CAAC,EALW,gBAAgB,KAAhB,gBAAgB,GAK3B,EAAA,CAAA,CAAA,CAAA;MAEY,YAAY,CAAA;AAOvB,IAAA,WAAA,CAAY,IAAS,EAAA;AAHrB,QAAA,IAAG,CAAA,GAAA,GAAW,WAAW,CAAC;QAIxB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AAEhC,QAAA,IAAG,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE;AACzB,YAAA,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,GAAG,WAAW,GAAG,gBAAgB,CAAC;AAC7G,SAAA;KACF;IAED,MAAM,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC,IAAI,CAAC;KAC5C;IACD,OAAO,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC,KAAK,CAAC;KAC7C;IACD,SAAS,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC,OAAO,CAAC;KAC/C;IACD,SAAS,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC,OAAO,CAAC;KAC/C;AACF;;AClCD,MAAM,YAAY,GAAG,IAAI,CAAC;AAC1B,MAAM,wBAAwB,GAAG,6DAA6D,CAAC;AAC/F,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;MAG/B,mBAAmB,CAAA;AAO9B,IAAA,WAAA,GAAA;AALO,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAE,CAAC;AAE1B,QAAA,IAAG,CAAA,GAAA,GAAG,CAAC,CAAC;AACR,QAAA,IAAI,CAAA,IAAA,GAAmB,EAAE,CAAC;KAIjC;IAED,KAAK,CAAC,OAAe,EAAE,GAAY,EAAA;QACjC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;KACpC;IAED,OAAO,CAAC,OAAe,EAAE,GAAY,EAAA;QACnC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,GAAG,IAAI,YAAY,GAAG,GAAG,CAAC,CAAC;KAC9D;IAED,OAAO,CAAC,OAAe,EAAE,GAAY,EAAA;QACnC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;KACtC;IAED,IAAI,CAAC,OAAe,EAAE,GAAY,EAAA;QAChC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;KACnC;AACO,IAAA,MAAM,CAAC,IAAY,EAAE,OAAe,EAAE,GAAY,EAAA;AACxD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAe,KAAK,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;AACzE,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACpB,SAAA;AACD,QAAA,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC;AACpC,YAAA,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG;YACd,IAAI,EAAE,OAAO,EAAE,GAAG;AACnB,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,YAAY,CAAC,GAAG,GAAG,CAAC,EAAE;YACxB,YAAY,CAAC,OAAO,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;AAC5F,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACjC;IAED,MAAM,CAAC,YAA0B,EAAE,IAAc,EAAA;AAC/C,QAAA,IAAI,CAAC,IAAI,IAAI,YAAY,CAAC,OAAO,EAAE;;AAEjC,YAAA,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACrC,SAAA;QACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,YAAY,CAAC,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACjC;IAEO,0BAA0B,GAAA;QAChC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACnC,OAAO;AACR,SAAA;QACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,wBAAwB,IAAI,CAAC,CAAC,OAAO,KAAK,gBAAgB,CAAC,CAAC;QAC5G,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACjC;;iHAzDU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;qHAAnB,mBAAmB,EAAA,CAAA,CAAA;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;;MCJE,QAAQ,CAAA;IAmBnB,WAAY,CAAA,IAAe,EAAE,QAAiB,EAAA;AAZ9C,QAAA,IAAO,CAAA,OAAA,GAAsB,EAAE,CAAC;AAChC,QAAA,IAAc,CAAA,cAAA,GAAsB,EAAE,CAAC;AAYrC,QAAA,IAAI,IAAI,EAAE;AACR,YAAA,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC3B,SAAA;AACD,QAAA,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC1B,SAAA;KACF;AACF;;MC1BY,uBAAuB,CAAA;AAClC,IAAA,WAAA,GAAA;KACC;IAGD,WAAW,CAAC,IAAS,EAAE,UAAkB,EAAA;QACvC,IAAI,UAAU,KAAK,CAAC,EAAE;YACpB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAQ,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACrF,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;IAED,UAAU,CAAC,IAAS,EAAE,UAAkB,EAAA;QACtC,IAAI,UAAU,KAAK,CAAC,EAAE;YACpB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAQ,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnF,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;;qHAjBU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;yHAAvB,uBAAuB,EAAA,CAAA,CAAA;4FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;;;MCYE,kBAAkB,CAAA;AAgB7B,IAAA,WAAA,CACU,UAAsB,EACtB,eAAgC,EAChC,uBAAgD,EAAA;AAFhD,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AACtB,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;AAChC,QAAA,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB,CAAyB;AAlB1D,QAAA,IAAM,CAAA,MAAA,GAAW,CAAC,CAAC,CAAC;AACpB,QAAA,IAAM,CAAA,MAAA,GAAW,EAAE,CAAC;AAGpB,QAAA,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;AACzB,QAAA,IAAA,CAAA,QAAQ,GAAG,mBAAmB,CAAC,IAAI,CAAC;AACpC,QAAA,IAAA,CAAA,SAAS,GAAG,mBAAmB,CAAC,IAAI,CAAC;AACrC,QAAA,IAAe,CAAA,eAAA,GAAG,uBAAuB,CAAC;QAYxC,IAAI,CAAC,WAAW,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;KAE9C;IAEM,aAAa,GAAA;QAClB,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;KACH;IAEM,gBAAgB,GAAA;AACrB,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACf,QAAA,IAAI,CAAC,QAAQ,GAAG,mBAAmB,CAAC,IAAI,CAAC;AACzC,QAAA,IAAI,CAAC,SAAS,GAAG,mBAAmB,CAAC,KAAK,CAAC;AAC3C,QAAA,IAAI,CAAC,eAAe,GAAG,uBAAuB,CAAC;KAChD;AACM,IAAA,uBAAuB,CAAC,YAAkB,EAAE,mBAA6B,EAAE,QAAiB,EAAA;AACjG,QAAA,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY,IAAI,EAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAC,CAAC;QACvF,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,IAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC;AACxH,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,GAAuB,KAAI;;;;;YAKpC,IAAI,CAAC,mBAAmB,EAAE;AACxB,gBAAA,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,QAAQ;AAC7D,qBAAA,GAAG,CAAC,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,iCAAiC,CAAC,CAAC,GAAG,EAAE,CAAC;AAC3E,gBAAA,IAAI,MAAA,IAAI,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;AACjC,oBAAA,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;AACpC,iBAAA;AACD,gBAAA,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;AACvB,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9B,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,QAAQ;AACvE,qBAAA,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;AAClC,aAAA;SACF,CAAC,CAAC,CAAC;;KAEP;AAEM,IAAA,qBAAqB,CAAC,YAAkB,EAAE,mBAA6B,EAAE,QAAiB,EAAA;AAC/F,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY,IAAI,EAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAC,CAAC;QACvF,OAAO,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,IAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC;AAC7H,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,GAAuB,KAAI;;YACpC,IAAI,CAAC,mBAAmB,EAAE;AACxB,gBAAA,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,QAAQ;AAC7D,qBAAA,GAAG,CAAC,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,iCAAiC,CAAC,CAAC,GAAG,EAAE,CAAC;AAC3E,gBAAA,IAAI,MAAA,IAAI,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;AACjC,oBAAA,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;AACpC,iBAAA;AACD,gBAAA,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;AACvB,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9B,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,QAAQ;AACvE,qBAAA,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;AAClC,aAAA;SACF,CAAC,CAAC,CAAC;;KAEP;AAED,IAAA,gBAAgB,CAAC,UAAkB,EAAA;QACjC,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC;AAC9F,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,MAAW,KAAI;AACxB,YAAA,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;gBAC3B,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC1G,aAAA;SACF,CAAC,CAAC,CAAA;KACN;AAED,IAAA,qBAAqB,CAAC,UAAkB,EAAA;QACtC,MAAM,MAAM,GAAG,EAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAC,CAAC;QACxD,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC;AAC3G,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,MAAW,KAAI;SACzB,CAAC,CAAC,CAAA;KACN;AAED,IAAA,sBAAsB,CAAC,KAAU,EAAA;AAC/B,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAS,KAAI;YAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,YAAiB,KAAK,YAAY,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1G,YAAA,IAAI,YAAY,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE;AACnC,gBAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACnB,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,gBAAA,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;gBACzB,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5C,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,QAAQ,GAAG,iCAAiC,CAAC;AAClD,gBAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,gBAAA,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;AACvB,gBAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACrB,aAAA;AACH,SAAC,CAAC,CAAA;AACF,QAAA,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;KACjC;;gHArHU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;oHAAlB,kBAAkB,EAAA,CAAA,CAAA;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;;;MCJE,mBAAmB,CAAA;AAe9B,IAAA,WAAA,GAAA;AALO,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAE,CAAC;AAEjC,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,YAAY,EAAO,CAAC;AAClD,QAAA,IAAe,CAAA,eAAA,GAAa,uBAAuB,CAAC;KAI1D;IAED,QAAQ,GAAA;KACP;AAEM,IAAA,SAAS,CAAC,KAAU,EAAA;AACzB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9B;AAEM,IAAA,mBAAmB,CAAC,KAAU,EAAA;QACnC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KAChD;;iHA5BU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,6SCVhC,ynCA0BA,EAAA,MAAA,EAAA,CAAA,qfAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAH,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDhBa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;+BACE,gBAAgB,EAAA,QAAA,EAAA,ynCAAA,EAAA,MAAA,EAAA,CAAA,qfAAA,CAAA,EAAA,CAAA;0EAMnB,UAAU,EAAA,CAAA;sBADhB,KAAK;gBAGC,mBAAmB,EAAA,CAAA;sBADzB,KAAK;gBAGC,iBAAiB,EAAA,CAAA;sBADvB,KAAK;gBAGC,aAAa,EAAA,CAAA;sBADnB,KAAK;gBAGC,WAAW,EAAA,CAAA;sBADjB,MAAM;gBAGA,uBAAuB,EAAA,CAAA;sBAD7B,MAAM;;;MEbI,kBAAkB,CAAA;AAC7B,IAAA,WAAA,GAAA;KACC;;gHAFU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,kDCR/B,gLAMA,EAAA,MAAA,EAAA,CAAA,8FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAJ,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4FDEa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;+BACE,YAAY,EAAA,aAAA,EAGP,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,gLAAA,EAAA,MAAA,EAAA,CAAA,8FAAA,CAAA,EAAA,CAAA;;;AEoDvC,IAAY,gBAMX,CAAA;AAND,CAAA,UAAY,gBAAgB,EAAA;AAC1B,IAAA,gBAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,gBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,gBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,gBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,gBAAA,CAAA,cAAA,CAAA,GAAA,cAA6B,CAAA;AAC/B,CAAC,EANW,gBAAgB,KAAhB,gBAAgB,GAM3B,EAAA,CAAA,CAAA,CAAA;AAqED,IAAY,WAOX,CAAA;AAPD,CAAA,UAAY,WAAW,EAAA;AACrB,IAAA,WAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB,IAAA,WAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,WAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,WAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB,IAAA,WAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,WAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACb,CAAC,EAPW,WAAW,KAAX,WAAW,GAOtB,EAAA,CAAA,CAAA;;MCjIY,UAAU,CAAA;IAKrB,WACU,CAAA,UAAsB,EACtB,eAAgC,EAAA;AADhC,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AACtB,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;AAN1C,QAAA,IAAgB,CAAA,gBAAA,GAAG,EAAE,CAAC;AAEtB,QAAA,IAAY,CAAA,YAAA,GAAa,EAAE,CAAC;KAO3B;IACM,cAAc,CAAC,MAAc,EAAE,cAAsB,EAAE,QAAkB,EAAE,IAAa,EAAE,QAAiB,EAAA;;;QAEhH,IAAI,CAAA,EAAA,GAAA,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,EAAE;AACjD,YAAA,OAAO,IAAI,UAAU,CAAM,QAAQ,IAAG;;gBAEpC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC;AACvD,aAAC,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,IAAI,CAAC,8BAA8B,GAAG,EAAE,CAAC;QACzC,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,EAAC,MAAM,EAAE,WAAW,CAAC,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAC,CAAC;AACxG,QAAA,IAAI,QAAQ,EAAE;;AAEZ,YAAA,MAAM,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC;AAC7B,SAAA;AACD,QAAA,IAAI,IAAI,EAAE;;AAER,YAAA,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;AACvB,SAAA;;AAED,QAAA,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;AAEpF,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC;AACxF,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,GAAQ,KAAI;YACnB,GAAG,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,eAAmD,KAAI;AACtF,gBAAA,IAAI,CAAC,yBAAyB,CAAC,eAAe,CAAC,CAAC;;gBAEhD,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC,CAAC;AACpI,aAAC,CAAC,CAAC;SACJ,CAAC,CACH,CAAA;;KAEJ;AAEM,IAAA,yBAAyB,CAAC,eAAoB,EAAA;QACnD,IAAI,eAAe,CAAC,qBAAqB,IAAI,eAAe,CAAC,qBAAqB,CAAC,MAAM,EAAE;YAEzF,eAAe,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,cAAmB,KAAI;AACpE,gBAAA,MAAM,EAAE,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;gBAC1C,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC/C,gBAAA,IAAI,cAAc,CAAC,wBAAwB,CAAC,IAAI,cAAc,CAAC,wBAAwB,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;oBACnG,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,wBAAwB,CAAC,CAAC;AACnF,oBAAA,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAChE,oBAAA,IAAI,cAAc,CAAC,YAAY,CAAC,IAAI,cAAc,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3E,wBAAA,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;AACzF,qBAAA;AACF,iBAAA;AACD,gBAAA,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;AAC1E,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;AAEM,IAAA,oBAAoB,CAAC,eAAoB,EAAA;AAC9C,QAAA,IAAI,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,EAAE,eAAe,CAAC,gBAAgB,CAAC,EAAE,CAAC;AACvH,aAAA,GAAG,CAAC,CAAC,eAAuB,KAAI;YAC/B,MAAM,EAAE,GAAG,eAAe,CAAC,gBAAgB,CAAC,MAAM,GAAG,eAAe,CAAC;YACrE,IAAI,GAAG,GAAG,EAAE,CAAC;AACb,YAAA,IAAI,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AACjG,gBAAA,IAAI,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;oBACnI,GAAG,IAAI,gBAAgB,IAAI,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,UAAU;AACzG,wBAAA,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,iBAAA;AACD,gBAAA,IAAI,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;oBACpD,GAAG,IAAI,qBAAqB,CAAC;AAC9B,iBAAA;AACF,aAAA;AACD,YAAA,OAAO,GAAG,CAAC;AACb,SAAC,CAAC,CAAC;QACL,iBAAiB,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,eAAuB,KAAK,CAAC,eAAe,CAAC,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;AAClI,QAAA,OAAO,iBAAiB,CAAC;KAC1B;IAEM,iBAAiB,CAAC,KAAa,EAAE,GAAW,EAAA;QACjD,MAAM,MAAM,GAAG,OAAO,CAAC;QACvB,IAAI,YAAY,GAAG,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACpC,QAAA,IAAI,OAAO,EAAE;AACX,YAAA,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3B,SAAA;AACD,QAAA,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;AACpC,QAAA,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;;AAEhC,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAI;YACjG,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YAChE,IAAI,CAAC,YAAY,GAAG,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE;AACjD,gBAAA,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACvC,aAAA;YACD,OAAO,YAAY,GAAG,MAAM,CAAC;AAC/B,SAAC,CAAC,CAAC;KACJ;IAEM,iBAAiB,CAAC,UAAkB,EAAE,UAAkB,EAAA;AAC7D,QAAA,MAAM,MAAM,GAAG;AACb,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,UAAU,EAAE,QAAQ;SACrB,CAAC;AACF,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC;AACvI,aAAA,IAAI,CAAC,GAAG,CAAC,CAAC,MAAW,KAAI;AACxB,YAAA,IAAI,MAAM,KAAN,IAAA,IAAA,MAAM,uBAAN,MAAM,CAAE,MAAM,EAAE;AAClB,gBAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAS,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC;AACjE,aAAA;AACD,YAAA,OAAO,MAAM,CAAC;SACf,CAAC,CAAC,CAAC;KACP;;wGAnHU,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;4GAAV,UAAU,EAAA,CAAA,CAAA;4FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB,UAAU;;;ACLX;AACA,MAAM,QAAQ,GAAG,oFAAoF,CAAC;MAOzF,wBAAwB,CAAA;AAgBnC,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC;KACzC;AAED,IAAA,IAAI,aAAa,GAAA;;AACf,QAAA,IAAI,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,MAAI,CAAA,EAAA,GAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,0CAAE,gBAAgB,CAAA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE;AACpH,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,eAAe,CAAC;AACjF,SAAA;AACD,QAAA,OAAO,EAAE,CAAC;KACX;IAED,WACS,CAAA,UAAsB,EACtB,WAAwB,EAAA;AADxB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AACtB,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;AA1BjC,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;AAM1B,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAE,CAAC;AAEjC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;AAC5B,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AACjB,QAAA,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;KAkB1B;IAED,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG;AACnB,gBAAA,WAAW,EAAE,GAAG;AAChB,gBAAA,SAAS,EAAE,GAAG;aACf,CAAA;YAED,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;;AAC/C,gBAAA,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,KAAK,CAAC;AACzC,gBAAA,IAAI,MAAM,KAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,IAAI,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,aAAa,CAAA,EAAE;oBAC/D,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AACzD,iBAAA;AACH,aAAC,CAAC,CAAA;AACH,SAAA;KACF;AAED,IAAA,UAAU,CAAC,OAAmB,EAAA;AAC5B,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;KACzB;AAED,IAAA,8BAA8B,CAAC,KAAU,EAAA;QACvC,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,GAAG,EAAE;YACtC,IAAI,CAAC,eAAe,EAAE,CAAC;AACxB,SAAA;KACF;AAED,IAAA,mBAAmB,CAAC,KAAU,EAAA;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAA;KACpB;AAED,IAAA,iBAAiB,CAAC,KAAU,EAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAA;KACvB;IAED,gBAAgB,CAAC,IAAY,EAAE,KAAa,EAAA;;AAC1C,QAAA,IAAI,MAAA,IAAI,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,QAAQ,EAAE;AACvB,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACvE,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;IAED,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC;aACzD,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;SACjC,EAAE,MAAM,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,CAAC;KAC7C;AAED,IAAA,UAAU,CAAC,OAAmB,EAAA;AAE5B,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;QAE1C,IAAI,WAAW,KAAK,CAAC,EAAE;AAAE,YAAA,OAAO,CAAC,aAAa,GAAG,CAAC,CAAC;AAAE,SAAA;;AAGrD,QAAA;AACE,YAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACpB,YAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;SAErB,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;KACzD;;sHA/FU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAG,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,gTCbrC,m2LA+FA,EAAA,MAAA,EAAA,CAAA,isFAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,UAAA,EAAA,QAAA,EAAA,yEAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAAA,OAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,mBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,EAAA,oBAAA,EAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,cAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDlFa,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,SAAS;+BACE,uBAAuB,EAAA,QAAA,EAAA,m2LAAA,EAAA,MAAA,EAAA,CAAA,isFAAA,CAAA,EAAA,CAAA;qHAMF,gBAAgB,EAAA,CAAA;sBAA9C,SAAS;uBAAC,kBAAkB,CAAA;gBAE7B,IAAI,EAAA,CAAA;sBADH,MAAM;gBAGP,IAAI,EAAA,CAAA;sBADH,KAAK;gBAGN,UAAU,EAAA,CAAA;sBADT,KAAK;gBAGN,WAAW,EAAA,CAAA;sBADV,MAAM;gBAGP,MAAM,EAAA,CAAA;sBADL,MAAM;;;MEdI,uBAAuB,CAAA;AAahC,IAAA,WAAA,CACS,UAAsB,EAAA;AAAtB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AARjC,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,YAAY,EAAE,CAAC;AAEzC,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;AAE1B,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAE,CAAC;AACjC,QAAA,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;KAMjB;IAED,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;KACjC;IAED,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;KACzB;;qHAzBQ,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAP,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,mNCTpC,opBAYA,EAAA,MAAA,EAAA,CAAA,qtGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAc,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,EAAA,aAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FDHa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;+BACI,sBAAsB,EAAA,QAAA,EAAA,opBAAA,EAAA,MAAA,EAAA,CAAA,qtGAAA,CAAA,EAAA,CAAA;8FAMlC,IAAI,EAAA,CAAA;sBADH,KAAK;gBAGN,UAAU,EAAA,CAAA;sBADT,KAAK;gBAGN,mBAAmB,EAAA,CAAA;sBADlB,MAAM;gBAGP,IAAI,EAAA,CAAA;sBADH,MAAM;gBAGP,WAAW,EAAA,CAAA;sBADV,MAAM;;;AEHT,MAAM,cAAc,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;AACnF,MAAM,aAAa,GAAG;AACpB,IAAA,iBAAiB,EAAE,mBAAmB;CACvC,CAAC;MAOW,kBAAkB,CAAA;AAoB7B,IAAA,IAAI,IAAI,GAAA;;QACN,OAAO,CAAA,EAAA,GAAA,MAAA,IAAI,CAAC,WAAW,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAAC;KACrC;IAED,WACS,CAAA,WAAwB,EACvB,UAAsB,EACtB,eAAgC,EAChC,aAAkC,EACnC,kBAAsC,EACrC,MAAiB,EAAA;AALlB,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;AACvB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AACtB,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;AAChC,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAqB;AACnC,QAAA,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AACrC,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAW;AA1BjB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;AAC9B,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAE,CAAC;AAC/B,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAE,CAAC;AAO9C,QAAA,IAAgB,CAAA,gBAAA,GAAG,cAAc,CAAC;AAGlC,QAAA,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAe,CAAA,eAAA,GAAG,KAAK,CAAC;AAChB,QAAA,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;KAc1C;IAGD,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,CAAC;QAC3C,IAAI,CAAC,kBAAkB,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACrD,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC7C,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACnC,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;QAC5C,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;QAEnD,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACxB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW;AACrD,aAAA,SAAS,CAAC,CAAC,KAAiB,KAAI;AAC/B,YAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACnC,SAAC,CAAC,CAAC;AACL,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAEtC,QAAA,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;KACtC;IAED,WAAW,GAAA;;AACT,QAAA,IAAI,MAAA,IAAI,CAAC,aAAa,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;AAC9B,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;AACxE,SAAA;KACF;AAED,IAAA,qBAAqB,CAAC,aAAqB,EAAA;AACzC,QAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,GAAG,aAAa,CAAC;AACjD,QAAA,IAAI,CAAC,kBAAkB,CAAC,SAAS,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;AAED,IAAA,mBAAmB,CAAC,aAAuB,EAAA;AACzC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC1B,QAAA,YAAY,CAAC,UAAU,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;AACzD,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AAChC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,QAAA,IAAI,aAAa,EAAE;YACjB,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACzB,SAAA;KACF;AAED,IAAA,SAAS,CAAC,KAAgB,EAAA;QACxB,IAAI,CAAC,kBAAkB,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAClD,IAAI,CAAC,kBAAkB,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACpD,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;AAED,IAAA,WAAW,CAAC,IAAc,EAAA;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC1B;IAED,YAAY,CAAC,IAAc,EAAE,KAAa,EAAA;QAExC,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;AACtC,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC5B,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC;AACxC,YAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;YAC3C,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAEnE,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;iBACtE,SAAS,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;gBAC1B,IAAI,CAAC,gBAAgB,EAAE,CAAC;aACzB,EAAE,MAAK;gBACN,IAAI,CAAC,6BAA6B,EAAE,CAAC;AACrC,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;AACjD,aAAC,CAAC,CAAC;AACL,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACvC,SAAA;KACF;IAED,YAAY,CAAC,IAAc,EAAE,KAAa,EAAA;QAExC,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE;AACzC,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC5B,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC;YACxC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,aAAa,CAAA;YACxC,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AAEnE,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;iBACtE,SAAS,CAAC,MAAK;gBACd,IAAI,CAAC,6BAA6B,EAAE,CAAC;AACrC,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBACtC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC;AACjC,gBAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,aAAa,IAAI,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,MAAM,EAAE;oBACzF,IAAI,CAAC,kBAAkB,CAAC,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,YAAiB,KAAK,YAAY,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;AACjJ,iBAAA;aACF,EAAE,MAAK;gBACN,IAAI,CAAC,6BAA6B,EAAE,CAAC;AACrC,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;AACjD,aAAC,CAAC,CAAC;AACN,SAAA;KACF;IAEO,6BAA6B,GAAA;AACnC,QAAA,YAAY,CAAC,UAAU,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;AACzD,QAAA,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;KAC9B;IAEO,eAAe,CAAC,KAAa,EAAE,MAAc,EAAA;QACnD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACnC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;YAClC,IAAI,MAAM,KAAK,UAAU,EAAE;gBACzB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC;gBAChC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC;gBACpC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;AACnC,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,iCAAiC,CAAC;gBAC/D,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,KAAK,CAAC;gBACrC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;AACnC,aAAA;AACF,SAAA;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACtD;AAEO,IAAA,oBAAoB,CAAC,KAAiB,EAAA;AAC5C,QAAA,IAAG,KAAK,KAAL,IAAA,IAAA,KAAK,uBAAL,KAAK,CAAE,MAAM,EAAE;;AAEhB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAChC,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3D,IAAI,CAAC,UAAU,GAAG,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACjD,SAAA;KACF;IAEO,WAAW,GAAA;;AACjB,QAAA,IAAI,MAAA,IAAI,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,MAAM,EAAE;AACtB,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;AACxB,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,oBAAA,IAAI,CAAC,QAAQ,GAAG,iCAAiC,CAAC;AACnD,iBAAA;AACH,aAAC,CAAC,CAAA;AACH,SAAA;KACF;AAEO,IAAA,iBAAiB,CAAC,KAAiB,EAAA;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;AAChG,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;AAC7D,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;QACnE,MAAM,OAAO,GAAG,IAAI,CAAC,2BAA2B,CAAC,YAAY,CAAC,CAAC;AAC/D,QAAA,OAAO,CAAC,OAAO,CAAC,KAAK,IAAG;AACtB,YAAA,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;AAChB,gBAAA,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,iCAAiC,CAAA;AAC1D,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,2BAA2B,CAAC,YAAoB,EAAA;QACtD,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,OAAO,YAAY,GAAG,CAAC,EAAE;YACvB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,kBAAkB,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;AACjF,YAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACnB,YAAA,YAAY,EAAE,CAAC;AAChB,SAAA;AACD,QAAA,OAAO,OAAO,CAAC;KAChB;IAEO,SAAS,GAAA;AACf,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,kBAAkB,CAAC,uBAAuB,EAAE;aAC9C,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;SAC1B,EAAE,MAAK;AACN,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;AAC3D,SAAC,CAAC,CAAC;KACN;IAEO,wBAAwB,GAAA;QAC9B,MAAM,iBAAiB,GAAG,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;AAChF,QAAA,IAAI,iBAAiB,EAAE;AACrB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,iBAAiB,CAAC,CAAC;YAC9E,IAAI,CAAC,oBAAoB,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC;AACvE,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AACnC,SAAA;KACF;IAEO,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,QAAA,MAAM,YAAY,GAAG;YACnB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;AACnB,YAAA,YAAY,EAAE,MAAM;SACrB,CAAC;;QAEF,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC;;aAEtD,SAAS,CAAC,MAAK;YACd,MAAM,iBAAiB,GAAG,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;YAChF,IAAI,iBAAiB,IAAI,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,YAAiB,KAAK,YAAY,CAAC,MAAM,KAAK,iBAAiB,CAAC,EAAE;AACvI,gBAAA,YAAY,CAAC,UAAU,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;AAC1D,aAAA;YACD,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB,EAAE,MAAK;AACN,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;AAC3D,SAAC,CAAC,CAAC;KACN;AAED,IAAA,UAAU,CAAC,IAAc,EAAE,KAAa,EAAE,IAAY,EAAA;QACpD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE;AACjE,YAAA,IAAI,EAAE;AACJ,gBAAA,KAAK,EAAE,CAAa,UAAA,EAAA,IAAI,CAAC,MAAM,CAAA,IAAA,EAAO,IAAI,CAAG,CAAA,CAAA;AAC7C,gBAAA,OAAO,EAAE,CAAA;AACyB,yCAAA,CAAA;AAClC,gBAAA,iBAAiB,EAAE,eAAe;AACnC,aAAA;AACF,SAAA,CAAC,CAAC;QACH,SAAS,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,CAAC,MAAW,KAAI;AACjD,YAAA,IAAI,MAAM,EAAE;AACV,gBAAA,QAAQ,IAAI;AACV,oBAAA,KAAK,WAAW;AACd,wBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;wBAC/B,MAAM;AACR,oBAAA,KAAK,IAAI;AACP,wBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,wBAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,wBAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AAC/B,wBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAC/B,MAAM;AACR,oBAAA,KAAK,IAAI;AACP,wBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;wBAC/B,MAAM;AACT,iBAAA;AAEF,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAED,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACjE,YAAA,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,IAAI,CAAC;YACxC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YACjD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;AACxD,YAAA,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,iBAAiB,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC7E,SAAA;AAED,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC;aAC/E,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACxC,EAAE,MAAK;YACN,IAAI,CAAC,6BAA6B,EAAE,CAAC;YACrC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;AAC9D,SAAC,CAAC,CAAC;AACL,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KACvC;;gHA3RU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAV,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,yOCzB/B,+5JAqFA,EAAA,MAAA,EAAA,CAAA,sqMAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,4LAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,UAAA,EAAA,aAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAY,KAAA,CAAA,QAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,OAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,YAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,MAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,KAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,EAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,KAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,yBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;4FD5Da,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,SAAS;+BACE,gBAAgB,EAAA,QAAA,EAAA,+5JAAA,EAAA,MAAA,EAAA,CAAA,sqMAAA,CAAA,EAAA,CAAA;qOAKjB,KAAK,EAAA,CAAA;sBAAb,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACG,MAAM,EAAA,CAAA;sBAAd,KAAK;gBACI,QAAQ,EAAA,CAAA;sBAAjB,MAAM;gBACG,SAAS,EAAA,CAAA;sBAAlB,MAAM;gBACG,cAAc,EAAA,CAAA;sBAAvB,MAAM;gBACE,IAAI,EAAA,CAAA;sBAAZ,KAAK;;;ME5BK,0BAA0B,CAAA;AAGrC,IAAA,WAAA,GAAA;AAFO,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,OAAO,EAAE,CAAC;KAG7C;;wHAJU,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;4HAA1B,0BAA0B,EAAA,CAAA,CAAA;4FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,UAAU;;;MCyFE,cAAc,CAAA;;4GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YA7DvB,cAAc;QACd,eAAe;QACf,aAAa;QACb,wBAAwB;QACxB,kBAAkB;QAClB,cAAc;QACd,cAAc;QACd,aAAa;QACb,aAAa;QACb,aAAa;QACb,mBAAmB;QACnB,mBAAmB;QACnB,gBAAgB;QAChB,qBAAqB;QACrB,cAAc;QACd,gBAAgB;QAChB,kBAAkB;QAClB,gBAAgB;QAChB,aAAa;QACb,aAAa;QACb,eAAe;QACf,iBAAiB;QACjB,oBAAoB;QACpB,cAAc;QACd,kBAAkB;QAClB,aAAa;QACb,eAAe;AACf,QAAA,cAAc,aAGd,cAAc;QACd,eAAe;QACf,aAAa;QACb,wBAAwB;QACxB,kBAAkB;QAClB,cAAc;QACd,cAAc;QACd,aAAa;QACb,aAAa;QACb,aAAa;QACb,mBAAmB;QACnB,mBAAmB;QACnB,gBAAgB;QAChB,qBAAqB;QACrB,cAAc;QACd,gBAAgB;QAChB,kBAAkB;QAClB,gBAAgB;QAChB,aAAa;QACb,aAAa;QACb,iBAAiB;QACjB,eAAe;QACf,oBAAoB;QACpB,wBAAwB;QACxB,cAAc;QACd,kBAAkB;QAClB,aAAa;QACb,eAAe;QACf,cAAc,CAAA,EAAA,CAAA,CAAA;AAGL,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YA7DvB,cAAc;QACd,eAAe;QACf,aAAa;QACb,wBAAwB;QACxB,kBAAkB;QAClB,cAAc;QACd,cAAc;QACd,aAAa;QACb,aAAa;QACb,aAAa;QACb,mBAAmB;QACnB,mBAAmB;QACnB,gBAAgB;QAChB,qBAAqB;QACrB,cAAc;QACd,gBAAgB;QAChB,kBAAkB;QAClB,gBAAgB;QAChB,aAAa;QACb,aAAa;QACb,eAAe;QACf,iBAAiB;QACjB,oBAAoB;QACpB,cAAc;QACd,kBAAkB;QAClB,aAAa;QACb,eAAe;AACf,QAAA,cAAc,EAGd,cAAc;QACd,eAAe;QACf,aAAa;QACb,wBAAwB;QACxB,kBAAkB;QAClB,cAAc;QACd,cAAc;QACd,aAAa;QACb,aAAa;QACb,aAAa;QACb,mBAAmB;QACnB,mBAAmB;QACnB,gBAAgB;QAChB,qBAAqB;QACrB,cAAc;QACd,gBAAgB;QAChB,kBAAkB;QAClB,gBAAgB;QAChB,aAAa;QACb,aAAa;QACb,iBAAiB;QACjB,eAAe;QACf,oBAAoB;QACpB,wBAAwB;QACxB,cAAc;QACd,kBAAkB;QAClB,aAAa;QACb,eAAe;QACf,cAAc,CAAA,EAAA,CAAA,CAAA;4FAGL,cAAc,EAAA,UAAA,EAAA,CAAA;kBA/D1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,cAAc;wBACd,eAAe;wBACf,aAAa;wBACb,wBAAwB;wBACxB,kBAAkB;wBAClB,cAAc;wBACd,cAAc;wBACd,aAAa;wBACb,aAAa;wBACb,aAAa;wBACb,mBAAmB;wBACnB,mBAAmB;wBACnB,gBAAgB;wBAChB,qBAAqB;wBACrB,cAAc;wBACd,gBAAgB;wBAChB,kBAAkB;wBAClB,gBAAgB;wBAChB,aAAa;wBACb,aAAa;wBACb,eAAe;wBACf,iBAAiB;wBACjB,oBAAoB;wBACpB,cAAc;wBACd,kBAAkB;wBAClB,aAAa;wBACb,eAAe;wBACf,cAAc;AACf,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,cAAc;wBACd,eAAe;wBACf,aAAa;wBACb,wBAAwB;wBACxB,kBAAkB;wBAClB,cAAc;wBACd,cAAc;wBACd,aAAa;wBACb,aAAa;wBACb,aAAa;wBACb,mBAAmB;wBACnB,mBAAmB;wBACnB,gBAAgB;wBAChB,qBAAqB;wBACrB,cAAc;wBACd,gBAAgB;wBAChB,kBAAkB;wBAClB,gBAAgB;wBAChB,aAAa;wBACb,aAAa;wBACb,iBAAiB;wBACjB,eAAe;wBACf,oBAAoB;wBACpB,wBAAwB;wBACxB,cAAc;wBACd,kBAAkB;wBAClB,aAAa;wBACb,eAAe;wBACf,cAAc;AACf,qBAAA;iBACF,CAAA;;;MCzCY,eAAe,CAAA;;6GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,iBA1BxB,kBAAkB;QAClB,mBAAmB;QACnB,kBAAkB;QAClB,uBAAuB;QACvB,wBAAwB;AACxB,QAAA,8BAA8B,aAG9B,aAAa;QACb,WAAW;QACX,mBAAmB;QACnB,gBAAgB;QAChB,cAAc,aAYN,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAEjB,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,EAZf,SAAA,EAAA;QACT,WAAW;QACX,UAAU;QACV,0BAA0B;QAC1B,kBAAkB;QAClB,mBAAmB;QACnB,uBAAuB;QACvB,eAAe;QACf,UAAU;KACX,EAAA,OAAA,EAAA,CAfC,aAAa;QACb,WAAW;QACX,mBAAmB;QACnB,gBAAgB;QAChB,cAAc,CAAA,EAAA,CAAA,CAAA;4FAcL,eAAe,EAAA,UAAA,EAAA,CAAA;kBA5B3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,kBAAkB;wBAClB,mBAAmB;wBACnB,kBAAkB;wBAClB,uBAAuB;wBACvB,wBAAwB;wBACxB,8BAA8B;AAC/B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,aAAa;wBACb,WAAW;wBACX,mBAAmB;wBACnB,gBAAgB;wBAChB,cAAc;AACf,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACT,WAAW;wBACX,UAAU;wBACV,0BAA0B;wBAC1B,kBAAkB;wBAClB,mBAAmB;wBACnB,uBAAuB;wBACvB,eAAe;wBACf,UAAU;AACX,qBAAA;oBACD,OAAO,EAAE,CAAC,kBAAkB,CAAC;iBAC9B,CAAA;;;ACjDD;;AAEG;;;;"}
1
+ {"version":3,"file":"tuki-io-tuki-widgets-users-list.mjs","sources":["../../../../projects/tuki/widgets/users-list/src/user-list-confirm-dialog/user-list-confirm-dialog.component.ts","../../../../projects/tuki/widgets/users-list/src/user-list-confirm-dialog/user-list-confirm-dialog.component.html","../../../../projects/tuki/widgets/users-list/src/utils/common-functions.ts","../../../../projects/tuki/widgets/users-list/src/app.constants.ts","../../../../projects/tuki/widgets/users-list/src/classes/simlified-user.ts","../../../../projects/tuki/widgets/users-list/src/utils/utils.service.ts","../../../../projects/tuki/widgets/users-list/src/services/api.service.ts","../../../../projects/tuki/widgets/users-list/src/services/api-webex.service.ts","../../../../projects/tuki/widgets/users-list/src/services/user.service.ts","../../../../projects/tuki/widgets/users-list/src/classes/notification.ts","../../../../projects/tuki/widgets/users-list/src/services/notification.service.ts","../../../../projects/tuki/widgets/users-list/src/classes/user-list.ts","../../../../projects/tuki/widgets/users-list/src/services/removeKynFromIBM.service.ts","../../../../projects/tuki/widgets/users-list/src/services/users-search.service.ts","../../../../projects/tuki/widgets/users-list/src/utils/pagination/pagination.component.ts","../../../../projects/tuki/widgets/users-list/src/utils/pagination/pagination.component.html","../../../../projects/tuki/widgets/users-list/src/utils/app-loader/app-loader.ts","../../../../projects/tuki/widgets/users-list/src/utils/app-loader/app-loader.component.html","../../../../projects/tuki/widgets/users-list/src/classes/line.ts","../../../../projects/tuki/widgets/users-list/src/services/dns.service.ts","../../../../projects/tuki/widgets/users-list/src/move-user-wizard/move-user-stepper/move-user-stepper.component.ts","../../../../projects/tuki/widgets/users-list/src/move-user-wizard/move-user-stepper/move-user-stepper.component.html","../../../../projects/tuki/widgets/users-list/src/move-user-wizard/move-user-wizard.component.ts","../../../../projects/tuki/widgets/users-list/src/move-user-wizard/move-user-wizard.component.html","../../../../projects/tuki/widgets/users-list/src/users-list.component.ts","../../../../projects/tuki/widgets/users-list/src/users-list.component.html","../../../../projects/tuki/widgets/users-list/src/services/events-communication.service.ts","../../../../projects/tuki/widgets/users-list/src/material.module.ts","../../../../projects/tuki/widgets/users-list/src/users-list.module.ts","../../../../projects/tuki/widgets/users-list/tuki-io-tuki-widgets-users-list.ts"],"sourcesContent":["import { Component, Inject, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'app-info-dialog',\r\n templateUrl: './user-list-confirm-dialog.component.html',\r\n styleUrls: ['./user-list-confirm-dialog.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class UserListConfirmDialogComponent implements OnInit {\r\n public confirmButtonText = 'OK';\r\n public message = '';\r\n public title = '';\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<any>,\r\n @Inject(MAT_DIALOG_DATA) public data: InfoDialogConfig\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.confirmButtonText = this.data.confirmButtonText || '';\r\n this.message = this.data.message || '';\r\n this.title = this.data.title || '';\r\n }\r\n\r\n public onClose(val: boolean): void {\r\n this.dialogRef.close(val);\r\n }\r\n}\r\n\r\nexport class InfoDialogConfig {\r\n message!: string;\r\n title!: string;\r\n confirmButtonText!: string;\r\n}\r\n","<div id=\"info-dialog\" class=\"app-dialog\" aria-labelledby=\"info-dialog-label\" role=\"dialog\">\r\n <h3 *ngIf=\"title\" class=\"app-dialog-title\">{{title}}</h3>\r\n <div mat-dialog-content *ngIf=\"message\" class=\"app-dialog-content\">\r\n <div class=\"move_user_popup_icon\"></div>\r\n <div class=\"dialog-content-message\" [innerHTML]=\"message\"></div>\r\n </div>\r\n <div mat-dialog-actions class=\"flex-gap-container\">\r\n <button class=\"app-dialog-button app-dialog-cancel-button\" (click)=\"onClose(false)\">\r\n Cancel\r\n </button>\r\n <button class=\"app-dialog-button app-dialog-confirm-button\" (click)=\"onClose(true)\">\r\n {{confirmButtonText}}\r\n </button>\r\n </div>\r\n</div>\r\n","export const getSavableData = (model: any, exclude?: Array<string>) => {\r\n let result = Object.keys(model);\r\n if (exclude && exclude.length) {\r\n result = result.filter(key => !exclude.some(item => item === key));\r\n }\r\n return result.reduce((result, key) => {\r\n if (model[key] instanceof Array && model[key].length && model[key][0].getSavableData) {\r\n (result as any)[key] = model[key].map((item: any) => item.getSavableData());\r\n } else if (model[key] instanceof Object && model[key].getSavableData) {\r\n (result as any)[key] = model[key].getSavableData();\r\n } else {\r\n (result as any)[key] = model[key];\r\n }\r\n return result;\r\n }, {});\r\n};\r\n","export const API = {\r\n USER_TOKEN: '/api/provision/:siteId/users/:userId/token',\r\n UPDATE_USER_FIELDS: '/api/provision/:siteId/userFields/:token',\r\n PERSIST_USER_CACHE: '/api/provision/:siteId/saveUser/:token',\r\n USER_BY_ID: '/api/provision/:siteId/users/:userId',\r\n QUICK_USERS_SEARCH: \"/api/search/quickusers\",\r\n DELETE_USER: \"/api/search/quickusers\",\r\n MOVE_USER: \"/api/migration/webex/singlemigration/features/PERSON\",\r\n AVAILABLE_DN_IN_RANGES: \"/api/sites/:siteId/available-dn-in-ranges\",\r\n DELETE_LINE: \"/api/provision/:siteId/deleteLine/:pkid/:token\",\r\n DISASSOCIATE_LINE: \"/api/provision/:siteId/:deviceName/deleteLineAssociation/:linePkid/:token\",\r\n CHECK_DELETE_LINE: \"/api/provision/:siteId/checklinedeletion\",\r\n ASSOCIATE_LINE: \"/api/provision/:siteId/:deviceName/createLineAssociation/:token\",\r\n CHECK_DESTINATION_NUMBER: \"/api/provision/:siteId/check-dn\",\r\n UPDATE_LINE_FIELDS: \"/api/provision/:siteId/lineFields/:pkid/:token\",\r\n UPDATE_DEVICE_FIELDS: \"/api/provision/:siteId/deviceFields/:deviceName/:token\",\r\n WEBEX_USERS: \"/api/webex/provisioning/customers/:customerId/users\",\r\n MIGRATED_USERS: \"/api/search/migratedusers\",\r\n REVERT_WEBEX_USER: \"/api/webex/provisioning/customers/:customerId/persons/:webexUUID/revertmigration\",\r\n PHONE_NUMBERS: \"/api/search/webex/customers/:customerId/locations/:locationId/phonenumbers\"\r\n};\r\nexport const REGEX_PATTERN = {\r\n EMAIL: '^(([^<>()\\\\[\\\\]\\\\\\\\.,;:\\\\s@\"]+(\\\\.[^<>()\\\\[\\\\]\\\\\\\\.,;:\\\\s@\"]+)*)|(\".+\"))' +\r\n '@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,62}[a-zA-Z0-9])' +\r\n '?(?:\\\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,62}[a-zA-Z0-9])?)*$'\r\n};\r\n\r\nexport const PAGINATION_DEFAULTS = {\r\n SIZE: 10,\r\n INDEX: 0\r\n}\r\nexport const PAGINATION_SIZE_OPTIONS = [\r\n 10,\r\n 50,\r\n 100,\r\n 500\r\n];\r\nexport const CUCS_TO_IGNORE = [\r\n 189,\r\n 194,\r\n 191,\r\n 190\r\n];\r\nexport const CUCMS_TO_IGNORE = [\r\n 249,\r\n 255,\r\n 251,\r\n 250\r\n];\r\nexport const MAX_INTEGER = 2147483647;\r\n","import { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { getSavableData } from '../utils/common-functions';\r\nimport { REGEX_PATTERN } from '../app.constants';\r\n\r\nexport class SimplifiedUser {\r\n userid!: string;\r\n email!: string;\r\n firstName!: string;\r\n lastName!: string;\r\n token!: string;\r\n viewMode!: string;\r\n hasModifiedCache!: boolean;\r\n newUserId?: string;\r\n editMode!: boolean;\r\n form!: FormGroup;\r\n\r\n constructor(user?: any) {\r\n if (user) {\r\n this.userid = user.userid;\r\n this.email = user.email;\r\n this.firstName = user.firstName;\r\n this.lastName = user.lastName;\r\n this.token = user.token;\r\n }\r\n this.initForm()\r\n }\r\n\r\n initForm() {\r\n const formBuilder = new FormBuilder();\r\n const formSettings = {\r\n userid: [{value: this.userid || '', disabled: true}, [Validators.required, Validators.maxLength(128)]],\r\n email: [{value: this.email || '', disabled: true}, [\r\n Validators.pattern(REGEX_PATTERN.EMAIL),\r\n Validators.required\r\n ]],\r\n firstName: [{value: this.firstName || '', disabled: true}],\r\n lastName: [{value: this.lastName || '', disabled: true}, Validators.required],\r\n };\r\n this.form = formBuilder.group(formSettings);\r\n }\r\n\r\n toggleEditMode() {\r\n this.editMode = !this.editMode;\r\n ['userid', 'email', 'firstName', 'lastName'].forEach(token => {\r\n if (this.editMode) {\r\n this.form.get(token)?.enable();\r\n } else {\r\n this.form.get(token)?.disable();\r\n }\r\n })\r\n }\r\n\r\n getSavableData() {\r\n const excludedFields: string[] = ['form', 'editMode', 'viewMode', 'token', 'hasModifiedCache'];\r\n return getSavableData(this, excludedFields);\r\n }\r\n\r\n equal(userToCompare?: SimplifiedUser): boolean {\r\n if (!userToCompare) {\r\n return false;\r\n }\r\n return JSON.stringify(this.getSavableData()) === JSON.stringify(userToCompare.getSavableData());\r\n }\r\n\r\n}\r\n\r\nexport interface SimplifiedUserInterface {\r\n userid: string;\r\n email: string;\r\n firstName: string;\r\n lastName: string;\r\n form?: FormGroup;\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class UtilsService {\r\n\r\n static sortSortArrayByProperty(array: [], sortBy: string) {\r\n if (!array) {\r\n return null;\r\n }\r\n return array.sort((a, b) => {\r\n if (!a[sortBy] && !b[sortBy]) {\r\n return 0;\r\n }\r\n if (a[sortBy] && !b[sortBy]) {\r\n return 1;\r\n }\r\n if (!a[sortBy] && b[sortBy]) {\r\n return -1;\r\n }\r\n const positionA = a[sortBy];\r\n const positionB = b[sortBy];\r\n return (positionA < positionB) ? -1 : (positionA > positionB) ? 1 : 0;\r\n });\r\n }\r\n\r\n static diff(origObject: any, updatedObj: any, path: string, keysToIgnore?: string[]) {\r\n let result: any = [];\r\n if (Object.is(origObject, updatedObj)) {\r\n return undefined;\r\n }\r\n if (!updatedObj || typeof updatedObj !== 'object') {\r\n return updatedObj;\r\n }\r\n const concat = Array.from(new Set([...Object.keys(origObject || {}), ...Object.keys(updatedObj || {})]));\r\n const filter = keysToIgnore ? concat.filter(key => !keysToIgnore.includes(key)) : concat;\r\n filter\r\n .forEach(key => {\r\n if (typeof updatedObj[key] === 'object' && typeof origObject[key] === 'object') {\r\n if (UtilsService.differs(updatedObj[key], origObject[key])) {\r\n const newPath = `${path}${path ? '.' : ''}${key}`;\r\n const values = UtilsService.diff(origObject[key], updatedObj[key], newPath, keysToIgnore);\r\n if (values !== undefined) {\r\n result = [...result, ...values];\r\n }\r\n }\r\n } else if (updatedObj && !origObject || updatedObj[key] !== origObject[key] && !Object.is(origObject[key], updatedObj[key])) {\r\n const value = updatedObj ? UtilsService.formatIfEmpty(updatedObj[key]) : null;\r\n result.push(`${path}${path ? '.' : ''}${key}=${value}`);\r\n }\r\n });\r\n return result;\r\n }\r\n\r\n static formatIfEmpty(value: any) {\r\n if (value) {\r\n return value;\r\n }\r\n switch (typeof value) {\r\n case 'boolean':\r\n return value;\r\n case 'string':\r\n return '';\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n static differs(obj1: any, obj2: any): boolean {\r\n return JSON.stringify(obj1) !== JSON.stringify(obj2);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { TableDataInterface } from '../classes/table-data';\r\nimport { Observable } from 'rxjs';\r\n\r\n\r\n\r\n@Injectable()\r\nexport class APIService {\r\n\r\n apiUrl = window.location.protocol + '//' + window.location.hostname + '/dcp';\r\n\r\n public token: any;\r\n constructor(\r\n private httpClient: HttpClient\r\n ) {\r\n }\r\n\r\n fetch(url: string, params = {}, cache?: boolean) {\r\n const headers = this.getHeaders(cache);\r\n return this.httpClient.get(this.apiUrl + url, {params: this.prepareEncodedParams(params), headers});\r\n }\r\n\r\n post(url: string, body: any, params = {}): any {\r\n body = body || null;\r\n const headers = this.getHeaders();\r\n return this.httpClient.post(this.apiUrl + url, body, {params: this.prepareEncodedParams(params), headers});\r\n }\r\n\r\n // use when response extended data is necessary:\r\n postExtended(url: string, body = null, params = {}, headers = {}) {\r\n headers = headers || this.getHeaders();\r\n return this.httpClient.post(this.apiUrl + url, body, {\r\n headers,\r\n observe: 'response',\r\n params: this.prepareEncodedParams(params)\r\n });\r\n }\r\n\r\n put(url: string, body = null, params = {}) {\r\n const headers = this.getHeaders();\r\n return this.httpClient.put(this.apiUrl + url, body, {headers, params: this.prepareEncodedParams(params)});\r\n }\r\n\r\n delete(url: string, params = {}) {\r\n const headers = this.getHeaders();\r\n return this.httpClient.delete(this.apiUrl + url, {headers, params: this.prepareEncodedParams(params)});\r\n }\r\n\r\n fetchPagination(url: string, pageSize: number, pageNumber: number, additionalParams = {}, cache?: boolean): Observable<TableDataInterface> {\r\n const copyAdditionalParams = JSON.parse(JSON.stringify(additionalParams));\r\n const params = Object.assign(copyAdditionalParams, {size: pageSize.toString(), page: pageNumber.toString()});\r\n return this.fetch(url, params, cache) as Observable<TableDataInterface>;\r\n }\r\n\r\n private prepareEncodedParams(params: any) {\r\n const result: any = {};\r\n\r\n if (!params) {\r\n return {};\r\n }\r\n for (const key of Object.keys(params)) {\r\n if (params[key]) {\r\n const stringParam = params[key].toString();\r\n result[key] = stringParam.includes('+') ? encodeURIComponent(stringParam) : stringParam;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n private getHeaders(cache?: boolean): HttpHeaders {\r\n let headers = new HttpHeaders();\r\n if (cache) {\r\n headers = headers.append('_Cache', 'true ');\r\n }\r\n const token = this.token || this.getParameterByName('token');\r\n headers = headers.append('Authorization', 'Bearer '+ token);\r\n return headers;\r\n }\r\n\r\n private getParameterByName(name: any, url = window.location.href) {\r\n name = name.replace(/[\\[\\]]/g, '\\\\$&');\r\n var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),\r\n results = regex.exec(url);\r\n if (!results) return null;\r\n if (!results[2]) return '';\r\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { APIService } from './api.service';\r\n\r\n\r\n@Injectable()\r\nexport class ApiWebexService extends APIService {\r\n constructor(httpClient: HttpClient) {\r\n super(httpClient);\r\n //this.apiUrl = window.location.protocol + \"//\"+ window.location.hostname + environment.apiAuthUrl;\r\n this.apiUrl = 'https://webex.car-west.net/webex';\r\n // this.apiUrl = 'https://staging.tuki.io/webex';\r\n }\r\n}\r\n","import {Injectable, OnInit} from '@angular/core';\r\nimport { Observable, of, forkJoin, Subject } from 'rxjs';\r\nimport { SimplifiedUser } from '../classes/simlified-user';\r\nimport { API } from '../app.constants';\r\nimport { APIService } from './api.service';\r\nimport { map } from 'rxjs/operators';\r\nimport { UtilsService } from '../utils/utils.service';\r\nimport { ListUser } from '../classes/user-list';\r\nimport { ApiWebexService } from './api-webex.service';\r\n\r\n@Injectable()\r\nexport class UserService implements OnInit{\r\n siteId: number = -1;\r\n userId: string = '';\r\n userIdExistPending = false;\r\n hasExistedUserId = false;\r\n user!: SimplifiedUser;\r\n originUser!: SimplifiedUser;\r\n moveUserPending = false;\r\n userMoved$ = new Subject<any>();\r\n\r\n constructor(\r\n private apiService: APIService,\r\n private apiWebexService: ApiWebexService\r\n ) {\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n console.log(this.siteId)\r\n }\r\n\r\n public fetchUserToken(siteId: number, userId: string): any {\r\n this.siteId = siteId;\r\n this.userId = userId;\r\n return this.apiService.fetch(API.USER_TOKEN.replace(':siteId', String(this.siteId)).replace(':userId', encodeURIComponent(encodeURIComponent(userId))))\r\n .pipe(map((result: any) => {\r\n const token = Object.keys(result)[0];\r\n this.setSimplifiedUser(Object.values(result)[0], token);\r\n }))\r\n // .pipe(this.handleError(false, true));\r\n }\r\n\r\n public updateUserFields(body: any): any {\r\n if (!this.userId || !this.siteId || !this.user?.token) {\r\n return;\r\n }\r\n return this.apiService.post(API.UPDATE_USER_FIELDS.replace(':siteId', String(this.siteId)).replace(':token', this.user.token), body)\r\n // .pipe(this.handleError(false, true));\r\n }\r\n\r\n public moveUserToMT(customerId: any, user: ListUser): any {\r\n // return new Observable<boolean>(observer => {\r\n // setTimeout(() => {\r\n // observer.next(true);\r\n //\r\n // }, 1000);\r\n // });\r\n return this.apiWebexService.post(API.MOVE_USER, this.getMoveUserBody(customerId, user))\r\n // .pipe(this.handleError(true, true));\r\n }\r\n\r\n public moveUserToDI(customerId: any, user: ListUser): any {\r\n // return new Observable<boolean>(observer => {\r\n // setTimeout(() => {\r\n // observer.next(true);\r\n //\r\n // }, 1000);\r\n // });\r\n const URL = API.REVERT_WEBEX_USER.replace(':customerId', customerId).replace(':webexUUID', String(user.webexUUID));\r\n return this.apiWebexService.post(URL, this.getMoveUserBody(customerId, user))\r\n // .pipe(this.handleError(true, true));\r\n }\r\n\r\n private getMoveUserBody(customerId: any, user: ListUser): any {\r\n return {\r\n customerId: customerId,\r\n entities: {\r\n PERSON: [{cucmId: user.cucmId, entityId: user.userid}]\r\n }\r\n };\r\n }\r\n\r\n public deleteUser(siteId: number, userId: string): Observable<any> {\r\n return this.apiService.delete(API.DELETE_USER.replace(':siteId', String(siteId)).replace(':userId', encodeURIComponent(encodeURIComponent(userId))))\r\n // .pipe(this.handleError(true, true));\r\n }\r\n\r\n public fetchUserById(id: string) {\r\n this.userIdExistPending = true;\r\n return this.apiService.fetch(API.USER_BY_ID.replace(':siteId', String(this.siteId)).replace(':userId', encodeURIComponent(encodeURIComponent(id))))\r\n .pipe(map(result => {\r\n this.userIdExistPending = false;\r\n return result;\r\n }));\r\n }\r\n\r\n public persistCacheChanges() {\r\n const params = {\r\n excludeDeviceExtraOptions: true\r\n };\r\n return this.processUserChangesToCache()\r\n .pipe(map((result: any) => {\r\n return this.apiService.post(API.PERSIST_USER_CACHE.replace(':siteId', String(this.siteId)).replace(':token', this.user.token), {}, params)\r\n .subscribe(() => {\r\n\r\n })\r\n // .pipe(map((user) => {\r\n // // this.setUser(user, false, this.user.token);\r\n // this.user.hasModifiedCache = false;\r\n // }))\r\n // .pipe(this.handleError(true, true));\r\n }));\r\n }\r\n\r\n public processUserChangesToCache(): any {\r\n const calls = [];\r\n const body = UtilsService.diff(this.originUser.getSavableData(), this.user.getSavableData(), 'user');\r\n if (body) {\r\n calls.push(this.updateUserFields(body));\r\n }\r\n if (!calls?.length) {\r\n return of(this.user);\r\n }\r\n\r\n return forkJoin(calls)\r\n .pipe(map((responses: any) => {\r\n // ApiUserResponse\r\n this.handleSaveUserResponse(responses);\r\n }))\r\n // .pipe(this.handleError(false, true));\r\n\r\n }\r\n\r\n public hasUnsavedChanges() {\r\n return !this.user.equal(this.originUser);\r\n }\r\n\r\n public setSimplifiedUser(user: any, token?: any): void {\r\n this.user = new SimplifiedUser(user);\r\n const copiedUser = JSON.parse(JSON.stringify(user));\r\n this.originUser = new SimplifiedUser(copiedUser);\r\n this.user.token = this.user.token || token;\r\n this.originUser.token = this.originUser.token || token;\r\n }\r\n\r\n private handleSaveUserResponse(responses: any) {\r\n if (!responses?.length) {\r\n return;\r\n }\r\n for (let len = responses.length, i = len - 1; i >= 0; i--) {\r\n if (responses[i] && responses[i].currentUpdatedUser) {\r\n // this.setUser(responses[i].currentUpdatedUser, false, this.user.token);\r\n this.user.hasModifiedCache = true;\r\n return;\r\n }\r\n }\r\n }\r\n}\r\n","const TTL_DEFAULT = 30000;\r\nconst TTL_LONG_DEFAULT = 45000;\r\n\r\nexport enum NotificationType {\r\n info = 'info',\r\n error = 'error',\r\n success = 'success',\r\n warning = 'warning'\r\n}\r\n\r\nexport class Notification {\r\n id?: number;\r\n type?: NotificationType;\r\n message?: string;\r\n ttl: number = TTL_DEFAULT;\r\n timerId?: any;\r\n\r\n constructor(data: any) {\r\n Object.assign(this, data || {});\r\n\r\n if(this.ttl === undefined) {\r\n this.ttl = this.message && this.message.length && this.message.length < 80 ? TTL_DEFAULT : TTL_LONG_DEFAULT;\r\n }\r\n }\r\n\r\n isInfo(): boolean {\r\n return this.type === NotificationType.info;\r\n }\r\n isError(): boolean {\r\n return this.type === NotificationType.error;\r\n }\r\n isSuccess(): boolean {\r\n return this.type === NotificationType.success;\r\n }\r\n isWarning(): boolean {\r\n return this.type === NotificationType.warning;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Notification } from '../classes/notification';\r\nimport { Subject } from 'rxjs';\r\nconst SUCCESS_TIME = 5000;\r\nconst INACTIVE_SESSION_MESSAGE = 'Your session was lost due to inactivity. Please login again';\r\nconst INACTIVE_SESSION = 'SESSION_INACTIVE';\r\n\r\n@Injectable()\r\nexport class NotificationService {\r\n\r\n public listChange = new Subject();\r\n\r\n private max = 0;\r\n private list: Notification[] = [];\r\n\r\n constructor(\r\n ) {\r\n }\r\n\r\n error(message: string, ttl?: number): void {\r\n this.notify('error', message, ttl);\r\n }\r\n\r\n success(message: string, ttl?: number): void {\r\n this.notify('success', message, (!ttl) ? SUCCESS_TIME : ttl);\r\n }\r\n\r\n warning(message: string, ttl?: number): void {\r\n this.notify('warning', message, ttl);\r\n }\r\n\r\n info(message: string, ttl?: number): void {\r\n this.notify('info', message, ttl);\r\n }\r\n private notify(type: string, message: string, ttl?: number): void {\r\n const found = this.list.find((n: Notification) => n.message === message);\r\n if (found) {\r\n this.remove(found);\r\n }\r\n const notification = new Notification({\r\n id: ++this.max,\r\n type, message, ttl\r\n });\r\n if (notification.ttl > 0) {\r\n notification.timerId = setTimeout(() => this.remove(notification, true), notification.ttl);\r\n }\r\n this.list.push(notification);\r\n this.listChange.next(this.list);\r\n }\r\n\r\n remove(notification: Notification, auto?: boolean): void {\r\n if (!auto && notification.timerId) {\r\n // clear timeout in case of manual remove\r\n clearInterval(notification.timerId);\r\n }\r\n this.list = this.list.filter(n => n.id !== notification.id);\r\n this.listChange.next(this.list);\r\n }\r\n\r\n private removeInactiveSessionError(): void {\r\n if (!this.list || !this.list.length) {\r\n return;\r\n }\r\n this.list = this.list.filter(n => n.message !== INACTIVE_SESSION_MESSAGE && n.message !== INACTIVE_SESSION);\r\n this.listChange.next(this.list);\r\n }\r\n\r\n}\r\n","import { DeviceInterface } from './device';\r\nimport { LineInterface } from './line';\r\n\r\nexport class ListUser implements ListUserInterface {\r\n // @ts-ignore\r\n userid: string;\r\n firstName?: string;\r\n lastName?: string;\r\n email?: string;\r\n telephoneNumber?: string;\r\n devices: DeviceInterface[] = [];\r\n deviceProfiles: DeviceInterface[] = [];\r\n lines?: LineInterface[];\r\n siteId?: number;\r\n siteName?: string;\r\n webexUUID?: string;\r\n cucmId?: number;\r\n roleName?: string;\r\n status?: string;\r\n ldapIntegrated!: boolean;\r\n isMigrated?: boolean;\r\n\r\n constructor(user?: ListUser, roleName?: string) {\r\n if (user) {\r\n Object.assign(this, user);\r\n }\r\n if (roleName) {\r\n this.roleName = roleName;\r\n }\r\n }\r\n}\r\n\r\nexport interface ListUserInterface {\r\n userid: string;\r\n firstName?: string;\r\n lastName?: string;\r\n email?: string;\r\n telephoneNumber?: string;\r\n viewMode?: any;\r\n devices: DeviceInterface[];\r\n deviceProfiles: DeviceInterface[];\r\n lines?: LineInterface[];\r\n siteId?: number;\r\n siteName?: string;\r\n webexUUID?: string;\r\n cucmId?: number;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CUCMS_TO_IGNORE, CUCS_TO_IGNORE } from '../app.constants';\r\n\r\n@Injectable()\r\nexport class RemoveKynFromIBMService {\r\n constructor() {\r\n }\r\n\r\n\r\n removeCUCMS(date: any, customerId: number) {\r\n if (customerId === 8) {\r\n return date.filter((val: any) => !CUCMS_TO_IGNORE.includes(Math.round(val.cucmId)));\r\n }\r\n return date;\r\n }\r\n\r\n removeCUCS(date: any, customerId: number) {\r\n if (customerId === 8) {\r\n return date.filter((val: any) => !CUCS_TO_IGNORE.includes(Math.round(val.cucId)));\r\n }\r\n return date;\r\n }\r\n\r\n\r\n}\r\n","import { Injectable, OnInit } from '@angular/core';\r\nimport { SimplifiedUser } from '../classes/simlified-user';\r\nimport { APIService } from './api.service';\r\nimport { ListUser, ListUserInterface } from '../classes/user-list';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { API, PAGINATION_DEFAULTS, PAGINATION_SIZE_OPTIONS } from '../app.constants';\r\nimport { TableDataInterface } from '../classes/table-data';\r\nimport { map } from 'rxjs/operators';\r\nimport { RemoveKynFromIBMService } from './removeKynFromIBM.service';\r\nimport { PaginationDataDto } from '../classes/pagination';\r\nimport { ApiWebexService } from './api-webex.service';\r\n\r\n\r\n\r\n@Injectable()\r\nexport class UsersSearchService {\r\n siteId: number = -1;\r\n userId: string = '';\r\n customerId!: number;\r\n siteid!: number;\r\n userIdExistPending = false;\r\n hasExistedUserId = false;\r\n pageSize = PAGINATION_DEFAULTS.SIZE;\r\n pageIndex = PAGINATION_DEFAULTS.SIZE;\r\n pageSizeOptions = PAGINATION_SIZE_OPTIONS;\r\n migratedUsersIds!: any;\r\n total!: number;\r\n migratedUsers!: any;\r\n searchParams!: any;\r\n foundUsers$!: any;\r\n\r\n constructor(\r\n private apiService: APIService,\r\n private webexApiService: ApiWebexService,\r\n private removeKynFromIBMService: RemoveKynFromIBMService\r\n ) {\r\n this.foundUsers$ = new BehaviorSubject(null);\r\n\r\n }\r\n\r\n public getPagination(): PaginationDataDto {\r\n return {\r\n total: this.total,\r\n pageSizeOptions: this.pageSizeOptions,\r\n pageSize: this.pageSize,\r\n pageIndex: this.pageIndex\r\n };\r\n }\r\n\r\n public setDefaultValues() {\r\n this.total = 0;\r\n this.pageSize = PAGINATION_DEFAULTS.SIZE;\r\n this.pageIndex = PAGINATION_DEFAULTS.INDEX;\r\n this.pageSizeOptions = PAGINATION_SIZE_OPTIONS;\r\n }\r\n public quickRegularUsersSearch(searchParams?: any, isMigratedUsersOnly?: boolean, pageSize?: number): any {\r\n console.log('searchParams = ', searchParams);\r\n this.searchParams = searchParams || {customerid: this.customerId, siteid: this.siteId};\r\n return this.apiService.fetchPagination(API.QUICK_USERS_SEARCH, this.pageSize, pageSize ||this.pageIndex, this.searchParams)\r\n .pipe(map((res: TableDataInterface) => {\r\n // this.totals = this.totals || {};\r\n // this.totals['users'] = res.total;\r\n\r\n // this.foundUsers$.next(this.removeKynFromIBMService.removeCUCMS(users, this.customerId));\r\n if (!isMigratedUsersOnly) {\r\n const users = res.pageData && res.pageData.length ? res.pageData\r\n .map(user => new ListUser(user, 'Dedicated Instance Calling user')) : [];\r\n if (this.migratedUsersIds?.length) {\r\n this.setMigratedPropToUsers(users);\r\n }\r\n this.total = res.total;\r\n this.foundUsers$.next(users);\r\n } else {\r\n this.migratedUsersIds = res.pageData && res.pageData.length ? res.pageData\r\n .map(user => user.userid) : [];\r\n }\r\n }));\r\n // .pipe(this.handleError(true));\r\n }\r\n\r\n public quickWebexUsersSearch(searchParams?: any, isMigratedUsersOnly?: boolean, pageSize?: number): any {\r\n this.searchParams = searchParams || {customerid: this.customerId, siteid: this.siteId};\r\n return this.webexApiService.fetchPagination(API.QUICK_USERS_SEARCH, this.pageSize, pageSize ||this.pageIndex, this.searchParams)\r\n .pipe(map((res: TableDataInterface) => {\r\n if (!isMigratedUsersOnly) {\r\n const users = res.pageData && res.pageData.length ? res.pageData\r\n .map(user => new ListUser(user, 'Dedicated Instance Calling user')) : [];\r\n if (this.migratedUsersIds?.length) {\r\n this.setMigratedPropToUsers(users);\r\n }\r\n this.total = res.total;\r\n this.foundUsers$.next(users);\r\n } else {\r\n this.migratedUsersIds = res.pageData && res.pageData.length ? res.pageData\r\n .map(user => user.userid) : [];\r\n }\r\n }));\r\n // .pipe(this.handleError(true));\r\n }\r\n\r\n getMigratedUsers(customerId: number): any {\r\n return this.webexApiService.fetch(API.WEBEX_USERS.replace(':customerId', String(customerId)), {})\r\n .pipe(map((result: any) => {\r\n if (result && result.length) {\r\n this.migratedUsers = result.filter((user: any) => user.webexUUID && user.devices && user.devices.length);\r\n }\r\n }))\r\n }\r\n\r\n getMigratedWebexUsers(customerId: number): any {\r\n const params = {customerid: customerId, type: 'PERSON'};\r\n return this.webexApiService.fetch(API.MIGRATED_USERS.replace(':customerId', String(customerId)), params, true)\r\n .pipe(map((result: any) => {\r\n }))\r\n }\r\n\r\n setMigratedPropToUsers(users: any): void {\r\n users.forEach((user: any) => {\r\n const migratedUser = this.migratedUsers.filter((migratedUser: any) => migratedUser.userid === user.email);\r\n if (migratedUser && migratedUser[0]) {\r\n user.roleName = '';\r\n user.isMigrated = true;\r\n user.status = 'Migrated';\r\n user.webexUUID = migratedUser[0].webexUUID;\r\n } else {\r\n user.roleName = 'Dedicated Instance Calling user';\r\n user.isMigrated = false;\r\n user.status = 'Active';\r\n user.webexUUID = '';\r\n }\r\n })\r\n console.log('users ttt', users);\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { PaginationDataDto } from '../../classes/pagination';\r\nimport { PAGINATION_SIZE_OPTIONS } from '../../app.constants';\r\n\r\n\r\n@Component({\r\n selector: 'app-pagination',\r\n templateUrl: './pagination.component.html',\r\n styleUrls: ['./pagination.component.scss'],\r\n})\r\nexport class PaginationComponent implements OnInit{\r\n @Input()\r\n public pagination!: PaginationDataDto;\r\n @Input()\r\n public showPageSizeOptions!: boolean;\r\n @Input()\r\n public showRefreshButton!: boolean;\r\n @Input()\r\n public lengthPending!: boolean;\r\n @Output()\r\n public pageEmitter = new EventEmitter();\r\n @Output()\r\n public pageNumberChangeEmitter = new EventEmitter<any>();\r\n public pageSizeOptions: number[] = PAGINATION_SIZE_OPTIONS;\r\n\r\n constructor(\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n public pageEvent(event: any) {\r\n this.pageEmitter.emit(event);\r\n }\r\n\r\n public changePerPageNumber(event: any) {\r\n this.pageNumberChangeEmitter.emit(event.value);\r\n }\r\n\r\n}\r\n","<div class=\"flex-box pagination\">\r\n <div class=\"page-indexes-box\">\r\n <mat-paginator\r\n [id]=\"'commonPagination'\"\r\n [hidePageSize]=\"true\"\r\n [length]=\"pagination.total\"\r\n [pageIndex]=\"pagination.pageIndex\"\r\n [pageSize]=\"pagination.pageSize\"\r\n [pageSizeOptions]=\"pagination.pageSizeOptions\"\r\n (page)=\"pageEvent($event)\">\r\n </mat-paginator>\r\n <mat-spinner class=\"length-spinner\" [diameter]=\"20\" mode=\"indeterminate\" *ngIf=\"lengthPending\">\r\n </mat-spinner>\r\n </div>\r\n\r\n <div class=\"flex-box per-page-block\" *ngIf=\"showPageSizeOptions\">\r\n <div class=\"item_per_page\">Items per page:</div>\r\n <div class=\"select-box select-page-size\">\r\n <mat-select [(ngModel)]=\"pagination.pageSize\" (selectionChange)=\"changePerPageNumber($event)\" #page\r\n [id]=\"'commonPaginationSelect'\">\r\n <mat-option *ngFor=\"let option of pageSizeOptions; let i = index;\" [id]=\"'paginationSelectOpt_' + i\" [value]=\"option\">{{option}}</mat-option>\r\n </mat-select>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n","import { Component, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-loader',\r\n templateUrl: './app-loader.component.html',\r\n styleUrls: ['./app-loader.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class AppLoaderComponent {\r\n constructor() {\r\n }\r\n\r\n}\r\n","<div class=\"overlay\">\r\n <mat-progress-spinner\r\n class=\"page-spinner\"\r\n mode=\"indeterminate\"\r\n [diameter]=\"120\"></mat-progress-spinner>\r\n</div>\r\n","import { SiteShortDataInterface } from './device';\r\n\r\nexport interface LineInterface {\r\n description: string;\r\n pkid: string;\r\n entityChangeType: EntityChangeType;\r\n alertingName: string;\r\n asciiAlertingName: string;\r\n callingSearchSpace: string;\r\n voiceMailProfile: string;\r\n noAnswerRingDuration: number;\r\n autoAnswer: string;\r\n directoryNumber: LineDirectoryInterface;\r\n didPatterns: Array<TranslationPatternInterface>;\r\n mappedDids: Array<string>;\r\n aarSettings: LineAarInterface;\r\n callForwardAll: CallInterface;\r\n callForwardAllSecondaryCSS: CallInterface;\r\n callForwardBusyInternal: CallInterface;\r\n callForwardBusyExternal: CallInterface;\r\n callForwardNoAnswerInternal: CallInterface;\r\n callForwardNoAnswerExternal: CallInterface;\r\n callForwardNoCoverageInternal: CallInterface;\r\n callForwardNoCoverageExternal: CallInterface;\r\n callForwardOnCTIFailure: CallInterface;\r\n callForwardUnregisteredInternal: CallInterface;\r\n callForwardUnregisteredExternal: CallInterface;\r\n parkMonitoringExternal: LineParkMonitoringInterface;\r\n parkMonitoringInternal: LineParkMonitoringInterface;\r\n callPickupGroup: string;\r\n localId: string;\r\n urgentPriority: boolean;\r\n blfPresenceGroup: string;\r\n userHoldMOHAudioSourceId: string;\r\n userHoldMOHAudioSourceName: string;\r\n networkMOHAudioSourceId: string;\r\n networkMOHAudioSourceName: string;\r\n rejectAnonymousCall: boolean;\r\n enterpriseAltNum: AlternateNumberInterface;\r\n e164AltNum: AlternateNumberInterface;\r\n directoryUris: Array<DirectoryUriInterface>;\r\n callForwardAlternateParty: ParkMonitoringInterface;\r\n mlppNoAnswerRingDuration: number;\r\n confidentialAccessMode: string;\r\n confidentialAccessLevel: string;\r\n confidentialAccessLevelName: string;\r\n callControlAgentProfile: string;\r\n holdReversionRingDuration: number;\r\n holdReversionNotificationInterval: number;\r\n partyEntranceTone: string;\r\n pstnFailover: string;\r\n isExistingLine?: boolean;\r\n plarDestinationNumber: string;\r\n prefixDigits: string;\r\n plarDescription: string;\r\n plarEnabled: boolean;\r\n}\r\n\r\nexport enum EntityChangeType {\r\n added = 'added',\r\n updated = 'updated',\r\n existing = 'existing',\r\n removed = 'removed',\r\n unassociated = 'unassociated'\r\n}\r\nexport interface LineDirectoryInterface {\r\n directoryNumber: string;\r\n routePartitionName: string;\r\n pkid: string;\r\n dnType: string;\r\n subType?: string;\r\n templateDirectoryNumber?: string;\r\n}\r\nexport interface TranslationPatternInterface {\r\n pattern: string;\r\n calledPartyTransformationMask: string;\r\n description?: string;\r\n site?: SiteShortDataInterface;\r\n hasMultipleSites?: boolean;\r\n multipleSitesId?: string;\r\n}\r\nexport interface LineAarInterface {\r\n aarDestinationMask: string;\r\n aarGroup: string;\r\n aarVoiceMailEnabled: boolean;\r\n aarKeepCallHistory: boolean;\r\n}\r\nexport interface CallInterface {\r\n forwardToVoiceMail: boolean;\r\n destination: string;\r\n callingSearchSpace: string;\r\n}\r\nexport interface LineParkMonitoringInterface {\r\n voiceMail: boolean;\r\n destination: string;\r\n callingSearchSpace: string;\r\n}\r\nexport interface AlternateNumberInterface {\r\n numberMask: string;\r\n addLocalRoutePartition: boolean;\r\n routePartition: string;\r\n isUrgent: boolean;\r\n advertiseGloballyIls: boolean;\r\n}\r\nexport interface DirectoryUriInterface {\r\n primary: boolean;\r\n uri: string;\r\n routePartition: string;\r\n advertiseGloballyIls: boolean;\r\n}\r\nexport interface ParkMonitoringInterface {\r\n destination: string;\r\n callingSearchSpace: string;\r\n voiceMail: boolean;\r\n}\r\nexport interface AvailablePhoneNumberRangeInterface {\r\n phoneNumberRange: DnRangeInterface;\r\n usedNumbers: string[];\r\n requestedNumber: string;\r\n unUsedNumbersWithDids: any;\r\n}\r\nexport interface DnRangeInterface {\r\n from: string;\r\n to: string;\r\n prefix: string;\r\n routePartition: string;\r\n dnType: DnRangeType;\r\n tempIdx: number;\r\n\r\n getEditableData(): any;\r\n\r\n getUsedRangeEditableData(): any;\r\n}\r\nexport enum DnRangeType {\r\n extension = 'EXTENSION',\r\n cpg = 'CPG',\r\n callpark = 'CALLPARK',\r\n huntgroup = 'HUNTGROUP',\r\n meetme = 'MEETME',\r\n did = 'DID'\r\n}\r\nexport interface AvailableRangeInterface {\r\n availableNumberList: AvailablePhoneNumberRangeInterface[];\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { API } from '../app.constants';\r\nimport { APIService } from './api.service';\r\nimport { map } from 'rxjs/operators';\r\nimport * as Big from 'big.js';\r\nimport { Observable } from 'rxjs';\r\nimport { ApiWebexService } from '../services/api-webex.service';\r\nimport { AvailablePhoneNumberRangeInterface, DnRangeType } from '../classes/line';\r\n\r\n\r\n@Injectable()\r\nexport class DnsService {\r\n availableNumbers = {};\r\n availableDidPatternsMappedToDn!: any;\r\n phoneNumbers: string[] = [];\r\n\r\n constructor(\r\n private apiService: APIService,\r\n private apiWebexService: ApiWebexService\r\n ) {\r\n\r\n }\r\n public getNumberRange(siteId: string, routePartition: string, withdids?: boolean, from?: string, pageSize?: number): any {\r\n // @ts-ignore\r\n if (this.availableNumbers[routePartition]?.length) {\r\n return new Observable<any>(observer => {\r\n // @ts-ignore\r\n observer.next(this.availableNumbers[routePartition]);\r\n });\r\n }\r\n\r\n this.availableDidPatternsMappedToDn = {};\r\n pageSize = pageSize ? pageSize : 20;\r\n const params = {dntype: DnRangeType.extension, routepartition: routePartition, size: pageSize, page: 0};\r\n if (withdids) {\r\n // @ts-ignore\r\n params['withdids'] = 'true';\r\n }\r\n if (from) {\r\n // @ts-ignore\r\n params['from'] = from;\r\n }\r\n // @ts-ignore\r\n this.availableNumbers[routePartition] = this.availableNumbers[routePartition] || [];\r\n\r\n return this.apiService.fetch(API.AVAILABLE_DN_IN_RANGES.replace(':siteId', siteId), params)\r\n .pipe(map((res: any) => {\r\n res.availableNumberList.forEach((availableNumber: AvailablePhoneNumberRangeInterface) => {\r\n this.setAvailableDidMappedToDn(availableNumber);\r\n // @ts-ignore\r\n this.availableNumbers[routePartition] = [...this.availableNumbers[routePartition], ...this.getUnwrapNumberRange(availableNumber)];\r\n });\r\n })\r\n )\r\n // .pipe(this.handleError(true, false));\r\n }\r\n\r\n public setAvailableDidMappedToDn(availableNumber: any): void {\r\n if (availableNumber.unUsedNumbersWithDids && availableNumber.unUsedNumbersWithDids.length) {\r\n\r\n availableNumber.unUsedNumbersWithDids.forEach((numberWithDids: any) => {\r\n const dn = numberWithDids['unUsedNumber'];\r\n this.availableDidPatternsMappedToDn[dn] = [{}];\r\n if (numberWithDids['translationPatternList'] && numberWithDids['translationPatternList'].length > 0) {\r\n this.availableDidPatternsMappedToDn[dn] = numberWithDids['translationPatternList'];\r\n this.availableDidPatternsMappedToDn[dn][0]['mappedDids'] = [{}];\r\n if (numberWithDids['mappedDids'] && numberWithDids['mappedDids'].length > 0) {\r\n this.availableDidPatternsMappedToDn[dn][0]['mappedDids'] = numberWithDids['mappedDids'];\r\n }\r\n }\r\n this.availableDidPatternsMappedToDn[dn][0]['vm'] = numberWithDids['vm'];\r\n });\r\n }\r\n }\r\n\r\n public getUnwrapNumberRange(availableNumber: any): string[] {\r\n let unwrapNumberRange = this.unwrapNumberRange(availableNumber.phoneNumberRange.from, availableNumber.phoneNumberRange.to)\r\n .map((unwrappedNumber: string) => {\r\n const dn = availableNumber.phoneNumberRange.prefix + unwrappedNumber;\r\n let str = dn;\r\n if (this.availableDidPatternsMappedToDn[dn] && this.availableDidPatternsMappedToDn[dn].length > 0) {\r\n if (this.availableDidPatternsMappedToDn[dn][0]['mappedDids'] && this.availableDidPatternsMappedToDn[dn][0]['mappedDids'].length > 0) {\r\n str += ' DID: ' + (this.availableDidPatternsMappedToDn[dn][0]['mappedDids'].length > 1 ? 'multiple' :\r\n this.availableDidPatternsMappedToDn[dn][0]['mappedDids'][0]);\r\n }\r\n if (this.availableDidPatternsMappedToDn[dn][0]['vm']) {\r\n str += ' In Use - VM';\r\n }\r\n }\r\n return str;\r\n });\r\n unwrapNumberRange = unwrapNumberRange.filter((unwrappedNumber: string) => !availableNumber.usedNumbers.includes(unwrappedNumber));\r\n return unwrapNumberRange;\r\n }\r\n\r\n public unwrapNumberRange(start: string, end: string): string[] {\r\n const regExp = /(^0+)/;\r\n let leadingZeros = '';\r\n const matches = start.match(regExp);\r\n if (matches) {\r\n leadingZeros = matches[1];\r\n }\r\n const startNumeric = new Big(start);\r\n const endNumeric = new Big(end);\r\n // @ts-ignore\r\n return Array.from({length: (endNumeric.minus(startNumeric).plus(new Big(1)).toFixed(0))}, (v, k) => {\r\n const number = String(startNumeric.plus(new Big(k)).toFixed(0));\r\n if ((leadingZeros + number).length > start.length) {\r\n leadingZeros = leadingZeros.substr(1);\r\n }\r\n return leadingZeros + number;\r\n });\r\n }\r\n\r\n public fetchPhoneNumbers(customerId: number, locationId: string): any {\r\n const params = {\r\n available: true,\r\n numberType: 'NUMBER'\r\n };\r\n return this.apiWebexService.fetch(API.PHONE_NUMBERS.replace(':customerId', String(customerId)).replace(':locationId', locationId), params)\r\n .pipe(map((result: any) => {\r\n if (result?.length) {\r\n this.phoneNumbers = result.map((item: any) => item.phoneNumber);\r\n }\r\n return result;\r\n }));\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from \"@angular/core\";\r\nimport { FormBuilder, Validators } from \"@angular/forms\";\r\nimport { DnsService } from '../../services/dns.service';\r\nimport { MatStepper } from \"@angular/material/stepper\";\r\nimport { UserService } from '../../services/user.service';\r\n// for test only\r\nconst LOCATION = 'Y2lzY29zcGFyazovL3VzL0xPQ0FUSU9OLzE2YjY0NjljLTBjZmQtNDJjMS1iOWJjLTUyN2FlZTNhN2RlOQ';\r\n@Component({\r\n selector: 'app-move-user-stepper',\r\n templateUrl: './move-user-stepper.component.html',\r\n styleUrls: ['./move-user-stepper.component.scss']\r\n\r\n})\r\nexport class MoveUserStepperComponent implements OnInit {\r\n @ViewChild('nextAfterMoveBtn') nextAfterMoveBtn: any;\r\n @Output()\r\n done = new EventEmitter();\r\n @Input()\r\n user: any;\r\n @Input()\r\n customerId!: number;\r\n @Output()\r\n runMoveUser = new EventEmitter();\r\n @Output()\r\n cancel = new EventEmitter();\r\n isLinear = false;\r\n phoneNumberPending = false;\r\n stepper!: MatStepper;\r\n\r\n get moveUserPending(): boolean {\r\n return this.userService.moveUserPending;\r\n }\r\n\r\n get currentNumber(): string {\r\n if (this.user?.devices?.length && this.user.devices[0]?.lineAssociations && this.user.devices[0].lineAssociations[0]) {\r\n return this.user.devices[0].lineAssociations[0].directoryNumber.directoryNumber;\r\n }\r\n return '';\r\n }\r\n\r\n constructor(\r\n public dnsService: DnsService,\r\n public userService: UserService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n if (this.user) {\r\n this.user.moveType = {\r\n phoneNumber: '1',\r\n extension: '1'\r\n }\r\n\r\n this.userService.userMoved$.subscribe((result) => {\r\n this.userService.moveUserPending = false;\r\n if (result && this.nextAfterMoveBtn?._elementRef?.nativeElement) {\r\n this.nextAfterMoveBtn._elementRef.nativeElement.click();\r\n }\r\n })\r\n }\r\n }\r\n\r\n onMoveUser(stepper: MatStepper): void {\r\n this.stepper = stepper;\r\n this.runMoveUser.emit();\r\n }\r\n\r\n selectPhoneNumberMigrationType(event: any): void {\r\n if (event.value && event.value === '2') {\r\n this.getPhoneNumbers();\r\n }\r\n }\r\n\r\n onPhoneNumberChange(event: any): void {\r\n this.user.newNumber\r\n }\r\n\r\n onExtensionCHange(event: any): void {\r\n this.user.newExtension\r\n }\r\n\r\n isFieldAvailable(type: string, value: string): boolean {\r\n if (this.user?.moveType) {\r\n return this.user.moveType[type] && this.user.moveType[type] === value;\r\n }\r\n return false;\r\n }\r\n\r\n getPhoneNumbers(): void {\r\n this.phoneNumberPending = true;\r\n this.dnsService.fetchPhoneNumbers(this.customerId, LOCATION)\r\n .subscribe(() => {\r\n this.phoneNumberPending = false;\r\n }, () => this.phoneNumberPending = false);\r\n }\r\n\r\n goNextStep(stepper: MatStepper) {\r\n\r\n const currentStep = stepper.selectedIndex;\r\n\r\n if (currentStep === 1) { stepper.selectedIndex = 3; }\r\n // else if (currentStep === 3) { stepper.selectedIndex = 0; }\r\n\r\n [\r\n stepper.steps.get(1),\r\n stepper.steps.get(2)\r\n\r\n ].map(step => step ? step.completed = true : undefined);\r\n }\r\n}\r\n","<app-loader *ngIf=\"moveUserPending\"></app-loader>\r\n<mat-stepper *ngIf=\"user?.moveType\" [linear]=\"isLinear\" labelPosition=\"bottom\" #stepper>\r\n <mat-step>\r\n <div class=\"step-title\">Step 1: Select location</div>\r\n <!-- <form>-->\r\n <ng-template matStepLabel>Select location</ng-template>\r\n <mat-label class=\"mat-label\">Phone number</mat-label>\r\n <mat-radio-group\r\n class=\"radio-group\"\r\n [(ngModel)]=\"user.moveType.phoneNumber\"\r\n name=\"phoneNumber\" (change)=\"selectPhoneNumberMigrationType($event)\">\r\n <mat-radio-button class=\"radio-button\" value=\"1\" color=\"primary\">Keep current number {{currentNumber}}</mat-radio-button>\r\n <mat-radio-button class=\"radio-button\" value=\"2\" color=\"primary\">Select a new number</mat-radio-button>\r\n\r\n <div *ngIf=\"user.moveType.phoneNumber === '2'\" class=\"select-container\">\r\n <mat-progress-spinner *ngIf=\"phoneNumberPending\"\r\n class=\"field-spinner\" mode=\"indeterminate\"\r\n [diameter]=\"30\"></mat-progress-spinner>\r\n\r\n <mat-select class=\"select\" placeholder=\"Select number\" [(ngModel)]=\"user.newNumber\"\r\n (selectionChange)=\"onPhoneNumberChange($event)\">\r\n <mat-option *ngFor=\"let option of dnsService.phoneNumbers\" value=\"option\">{{option}}</mat-option>\r\n </mat-select>\r\n </div>\r\n\r\n <mat-radio-button class=\"radio-button\" value=\"3\" color=\"primary\">Remove number</mat-radio-button>\r\n </mat-radio-group>\r\n <mat-label class=\"mat-label\">Extension</mat-label>\r\n <mat-radio-group class=\"radio-group\" name=\"extension\"\r\n [(ngModel)]=\"user.moveType.extension\">\r\n <mat-radio-button class=\"radio-button\" value=\"1\" color=\"primary\">Keep current extension</mat-radio-button>\r\n <mat-radio-button class=\"radio-button\" value=\"2\" color=\"primary\">Select a new extension</mat-radio-button>\r\n <mat-form-field *ngIf=\"user.moveType.extension === '2'\" appearance=\"outline\">\r\n <input matInput type=\"text\" (change)=\"onExtensionCHange($event)\"\r\n [(ngModel)]=\"user.newExtension\"\r\n [placeholder]=\"'Enter extension'\" />\r\n </mat-form-field>\r\n\r\n <mat-radio-button class=\"radio-button\" value=\"3\" color=\"primary\">Remove extension</mat-radio-button>\r\n </mat-radio-group>\r\n <!-- </form>-->\r\n <button #nextAfterMoveBtn mat-button class=\"invisible-next-btn\" matStepperNext (click)=\"goNextStep(stepper)\"></button>\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-next\" (click)=\"onMoveUser(stepper)\">Move</button>\r\n <button mat-button class=\"webex-btn btn-cancel\" (click)=\"cancel.emit()\">Cancel</button>\r\n </div>\r\n </mat-step>\r\n <mat-step [aria-labelledby]=\"'disabled_af'\">\r\n <div class=\"step-title\">Step 2: Device eligibility check</div>\r\n <ng-template matStepLabel>Device eligibility check</ng-template>\r\n <form></form>\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-next\" matStepperNext (click)=\"goNextStep(stepper)\">Next</button>\r\n <button mat-button class=\"webex-btn btn-cancel\" matStepperPrevious>Previous</button>\r\n </div>\r\n </mat-step>\r\n <mat-step [aria-labelledby]=\"'disabled_af'\">\r\n <div class=\"step-title\">Step 3: Validation</div>\r\n <form>\r\n <ng-template matStepLabel>Validation</ng-template>\r\n <mat-label class=\"mat-label\">Validation Success!</mat-label>\r\n <p class=\"validation-text\">There is no issue for moving this user to the new location, $MTlocationname. Please be aware of the changes below once the user is being moved to the new location.</p>\r\n <mat-label class=\"mat-label\">Expected changes</mat-label>\r\n <ul>\r\n <li>Tablet device (TABAVICK) needs to be reconfigured with Webex App. User will receive an email with link to download.</li>\r\n <li>Cisco 8875 (SEP751FC9BAB854) will not be migrated.</li>\r\n <li>The user will be removed from Call Park Group.</li>\r\n <li>If the device is using the location level device settings, the device will pick up the new location device settings once the user is moved. If some of the device settings are overwritten at the user level, these user level settings will be retained and the rest of the settings will be picked up at the higher level (organization or location) settings.</li>\r\n <li>If the current location has a different recording service from the one of the new location, the recording of this user may be lost after moving location.</li>\r\n </ul>\r\n <div>\r\n <mat-checkbox class=\"checkbox\" checked=\"true\" color=\"primary\">I confirm that I understand these conditions. I acknowledge the changes.</mat-checkbox>\r\n </div>\r\n </form>\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-next\" matStepperNext (click)=\"goNextStep(stepper)\">Next</button>\r\n <button mat-button class=\"webex-btn btn-cancel\" matStepperPrevious>Previous</button>\r\n </div>\r\n </mat-step>\r\n <mat-step>\r\n <div class=\"step-title\">Step 4: Result</div>\r\n <ng-template matStepLabel>Result</ng-template>\r\n <form>\r\n <mat-label class=\"mat-label\">Moving user has been successfully initiated!</mat-label>\r\n <p class=\"validation-text\">\r\n The user will be moved to the new location, $MTlocationname.\r\n <br>\r\n For the progress of move, please visit the <a class=\"form-link\" href=\"#\">user details</a>.\r\n </p>\r\n </form>\r\n <div class=\"step-actions\">\r\n <button mat-button class=\"webex-btn btn-done\" (click)=\"done.emit(true)\">Done</button>\r\n </div>\r\n </mat-step>\r\n</mat-stepper>\r\n","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\r\nimport { DnsService } from '../services/dns.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-move-user-wizard',\r\n templateUrl: './move-user-wizard.component.html',\r\n styleUrls: ['./move-user-wizard.component.scss']\r\n})\r\nexport class MoveUserWizardComponent {\r\n @Input()\r\n user: any;\r\n @Input()\r\n customerId!: number;\r\n @Output()\r\n closeMoveUserWizard = new EventEmitter();\r\n @Output()\r\n done = new EventEmitter();\r\n @Output()\r\n runMoveUser = new EventEmitter();\r\n dataPending = false;\r\n\r\n constructor(\r\n public dnsService: DnsService\r\n ) {\r\n\r\n }\r\n\r\n onClose(): void {\r\n this.closeMoveUserWizard.emit();\r\n }\r\n\r\n onRunMoveUser(): void {\r\n this.runMoveUser.emit();\r\n }\r\n}\r\n","<app-loader *ngIf=\"dataPending\"></app-loader>\r\n<div class=\"move-user-stepper-container\">\r\n <header class=\"move-user-header\">\r\n <div class=\"move-user-header__title\">Move User {{user.userid}}</div>\r\n <div class=\"move-user-header__close\">\r\n <span class=\"app-icon icon-white-close\" (click)=\"onClose()\"></span>\r\n </div>\r\n </header>\r\n <app-move-user-stepper *ngIf=\"user\" [customerId]=\"customerId\"\r\n [user]=\"user\" (cancel)=\"onClose()\" (done)=\"done.emit()\"\r\n (runMoveUser)=\"onRunMoveUser()\"></app-move-user-stepper>\r\n</div>\r\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { UserService } from './services/user.service';\r\nimport { APIService } from \"./services/api.service\";\r\nimport { NotificationService } from './services/notification.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { UsersSearchService } from './services/users-search.service';\r\nimport { ListUser } from './classes/user-list';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { PageEvent } from '@angular/material/paginator';\r\nimport { ApiWebexService } from './services/api-webex.service';\r\nimport { MAX_INTEGER } from './app.constants';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { UserListConfirmDialogComponent } from './user-list-confirm-dialog/user-list-confirm-dialog.component';\r\n\r\nconst DISPLAYED_COLS = ['user-icon', 'name', 'email', 'status', 'role', 'actions'];\r\nconst LOCAL_STORAGE = {\r\n USER_IN_MIGRATION: 'userIdInMigration'\r\n};\r\n\r\n@Component({\r\n selector: 'app-users-list',\r\n templateUrl: './users-list.component.html',\r\n styleUrls: ['./users-list.component.scss']\r\n})\r\nexport class UsersListComponent implements OnInit, OnDestroy {\r\n @Input() token!: string;\r\n @Input() customerId!: number;\r\n @Input() siteId!: number;\r\n @Output() openUser = new EventEmitter();\r\n @Output() userMoved = new EventEmitter();\r\n @Output() switchToWizard = new EventEmitter();\r\n @Input() host!: string;\r\n\r\n dataPending!: boolean;\r\n moveInProgressUserId!: string;\r\n users!: ListUser[];\r\n dataSource!: MatTableDataSource<ListUser>;\r\n displayedColumns = DISPLAYED_COLS;\r\n moveUser: any;\r\n moveUserIndex: any;\r\n showMoveUserWizard = false;\r\n moveUserPending = false;\r\n private subscriptions: Subscription[] = [];\r\n\r\n get form(): FormGroup {\r\n return this.userService?.user?.form;\r\n }\r\n\r\n constructor(\r\n public userService: UserService,\r\n private apiService: APIService,\r\n private apiWebexService: ApiWebexService,\r\n private notifications: NotificationService,\r\n public usersSearchService: UsersSearchService,\r\n private dialog: MatDialog\r\n ) {\r\n }\r\n\r\n\r\n ngOnInit(): void {\r\n this.usersSearchService.setDefaultValues();\r\n this.usersSearchService.customerId = this.customerId;\r\n this.usersSearchService.siteId = this.siteId;\r\n this.apiService.token = this.token;\r\n this.apiWebexService.token = this.token;\r\n this.apiService.apiUrl = this.host + '/dcp';\r\n this.apiWebexService.apiUrl = this.host + '/webex';\r\n\r\n this.getMigratedUsers();\r\n const subscription = this.usersSearchService.foundUsers$\r\n .subscribe((users: ListUser[]) => {\r\n this.initializeDataSource(users);\r\n });\r\n this.subscriptions.push(subscription);\r\n\r\n console.log('users list paris 7773');\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.subscriptions?.length) {\r\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\r\n }\r\n }\r\n\r\n pageNumberChangeEvent(perPageNumber: number): void {\r\n this.usersSearchService.pageSize = perPageNumber;\r\n this.usersSearchService.pageIndex = 0;\r\n this.runSearch();\r\n }\r\n\r\n closeMoveUserWizard(afterUserMove?: boolean): void {\r\n this.moveUser = null;\r\n this.moveUserIndex = null;\r\n localStorage.removeItem(LOCAL_STORAGE.USER_IN_MIGRATION);\r\n this.showMoveUserWizard = false;\r\n this.switchToWizard.emit(false);\r\n if (afterUserMove) {\r\n this.getMigratedUsers();\r\n }\r\n }\r\n\r\n pageEvent(event: PageEvent): void {\r\n this.usersSearchService.pageSize = event.pageSize;\r\n this.usersSearchService.pageIndex = event.pageIndex;\r\n this.runSearch();\r\n }\r\n\r\n onUserClick(user: ListUser): void {\r\n this.openUser.emit(user);\r\n }\r\n\r\n moveUserToMT(user: ListUser, index: number): void {\r\n\r\n if (user && user.siteId && user.userid) {\r\n this.moveUserPending = true;\r\n this.moveInProgressUserId = user.userid;\r\n this.setStatusToUser(index, 'In Progress');\r\n localStorage.setItem(LOCAL_STORAGE.USER_IN_MIGRATION, user.userid);\r\n\r\n const subscription = this.userService.moveUserToMT(this.customerId, user)\r\n .subscribe(() => {\r\n this.moveUser = null;\r\n this.moveUserIndex = null;\r\n this.getMigratedUsers();\r\n }, () => {\r\n this.removeUserInMigrationProgress();\r\n this.setStatusToUser(index, 'Migration Error');\r\n });\r\n this.subscriptions.push(subscription);\r\n }\r\n }\r\n\r\n moveUserToDI(user: ListUser, index: number): void {\r\n\r\n if (user && user.siteId && user.webexUUID) {\r\n this.moveUserPending = true;\r\n this.moveInProgressUserId = user.userid;\r\n this.users[index].status = 'In Progress'\r\n localStorage.setItem(LOCAL_STORAGE.USER_IN_MIGRATION, user.userid);\r\n\r\n const subscription = this.userService.moveUserToDI(this.customerId, user)\r\n .subscribe(() => {\r\n this.removeUserInMigrationProgress();\r\n this.setStatusToUser(index, 'Active');\r\n this.users[index].webexUUID = '';\r\n if (this.usersSearchService.migratedUsers && this.usersSearchService.migratedUsers.length) {\r\n this.usersSearchService.migratedUsers = this.usersSearchService.migratedUsers.filter((migratedUser: any) => migratedUser.userid !== user.email);\r\n }\r\n }, () => {\r\n this.removeUserInMigrationProgress();\r\n this.setStatusToUser(index, 'Migration Error');\r\n });\r\n }\r\n }\r\n\r\n private removeUserInMigrationProgress(): void {\r\n localStorage.removeItem(LOCAL_STORAGE.USER_IN_MIGRATION);\r\n this.moveInProgressUserId = '';\r\n this.moveUserPending = false;\r\n }\r\n\r\n private setStatusToUser(index: number, status: string): void {\r\n if (this.users && this.users[index]) {\r\n this.users[index].status = status;\r\n if (status === 'Migrated') {\r\n this.users[index].roleName = '';\r\n this.users[index].isMigrated = true;\r\n this.users[index].status = status;\r\n } else {\r\n this.users[index].roleName = 'Dedicated Instance Calling user';\r\n this.users[index].isMigrated = false;\r\n this.users[index].status = status;\r\n }\r\n }\r\n this.dataSource = new MatTableDataSource(this.users);\r\n }\r\n\r\n private initializeDataSource(users: ListUser[]): void {\r\n if(users?.length) {\r\n // this.setRandomUserRole(users);\r\n this.users = users;\r\n this.setUserMigrationProgress();\r\n this.usersSearchService.setMigratedPropToUsers(this.users);\r\n this.dataSource = new MatTableDataSource(users);\r\n }\r\n }\r\n\r\n private setUserRole(): void {\r\n if (this.users?.length) {\r\n this.users.forEach(user => {\r\n if (!user.isMigrated) {\r\n user.roleName = 'Dedicated Instance Calling user';\r\n }\r\n })\r\n }\r\n }\r\n\r\n private setRandomUserRole(users: ListUser[]): void {\r\n const max = Math.round(this.usersSearchService.pageSize - this.usersSearchService.pageSize / 4);\r\n const min = Math.round(this.usersSearchService.pageSize / 2);\r\n const randomAmount = Math.round(Math.random() * (max - min) + min);\r\n const indexes = this.getArrayOfRandomUserIndexes(randomAmount);\r\n indexes.forEach(index => {\r\n if (users[index]) {\r\n users[index].roleName = 'Dedicated Instance Calling user'\r\n }\r\n });\r\n }\r\n\r\n private getArrayOfRandomUserIndexes(randomAmount: number): number[] {\r\n const indexes = [];\r\n while (randomAmount > 0) {\r\n const index = Math.round(Math.random() * (this.usersSearchService.pageSize - 1));\r\n indexes.push(index)\r\n randomAmount--;\r\n }\r\n return indexes;\r\n }\r\n\r\n private runSearch(): void {\r\n this.dataPending = true;\r\n this.usersSearchService.quickRegularUsersSearch()\r\n .subscribe(() => {\r\n this.dataPending = false;\r\n }, () => {\r\n this.dataPending = false;\r\n this.notifications.error('The data can not be received');\r\n });\r\n }\r\n\r\n private setUserMigrationProgress(): void {\r\n const userIdInMigration = localStorage.getItem(LOCAL_STORAGE.USER_IN_MIGRATION);\r\n if (userIdInMigration) {\r\n const index = this.users.findIndex(user => user.userid === userIdInMigration);\r\n this.moveInProgressUserId = index > -1 ? this.users[index].userid : '';\r\n this.moveUserPending = index > -1;\r\n }\r\n }\r\n\r\n private getMigratedUsers(): void {\r\n this.dataPending = true;\r\n const searchParams = {\r\n customerid: this.customerId,\r\n siteid: this.siteId,\r\n 'cloud-only': 'true'\r\n };\r\n // this.usersSearchService.quickWebexUsersSearch(searchParams, true, MAX_INTEGER)\r\n this.usersSearchService.getMigratedUsers(this.customerId)\r\n // this.usersSearchService.getMigratedWebexUsers(this.customerId)\r\n .subscribe(() => {\r\n const userIdInMigration = localStorage.getItem(LOCAL_STORAGE.USER_IN_MIGRATION);\r\n if (userIdInMigration && this.usersSearchService.migratedUsers.filter((migratedUser: any) => migratedUser.userid === userIdInMigration)) {\r\n localStorage.removeItem(LOCAL_STORAGE.USER_IN_MIGRATION);\r\n }\r\n this.runSearch();\r\n }, () => {\r\n this.dataPending = false;\r\n this.notifications.error('The data can not be received');\r\n });\r\n }\r\n\r\n onMoveUser(user: ListUser, index: number, type: string): void {\r\n const dialogRef = this.dialog.open(UserListConfirmDialogComponent, {\r\n data: {\r\n title: `Move user ${user.userid} to ${type}?`,\r\n message: `<p>By moving out of Dedicated Instance, you may need to reassign directory numbers and lose calling services.</p>\r\n<p>Are you sure you want to continue?</p>`,\r\n confirmButtonText: 'Yes, continue'\r\n }\r\n });\r\n dialogRef.beforeClosed().subscribe((result: any) => {\r\n if (result) {\r\n switch (type) {\r\n case 'QuickMove':\r\n this.moveUserToMT(user, index);\r\n break;\r\n case 'MT':\r\n this.moveUser = user;\r\n this.moveUserIndex = index;\r\n this.showMoveUserWizard = true;\r\n this.switchToWizard.emit(true);\r\n break;\r\n case 'DI':\r\n this.moveUserToDI(user, index);\r\n break;\r\n }\r\n\r\n }\r\n });\r\n }\r\n\r\n runMoveUserToMT(): void {\r\n if (this.moveUser && this.moveUser.siteId && this.moveUser.userid) {\r\n this.userService.moveUserPending = true;\r\n this.moveInProgressUserId = this.moveUser.userid;\r\n this.setStatusToUser(this.moveUserIndex, 'In Progress');\r\n localStorage.setItem(LOCAL_STORAGE.USER_IN_MIGRATION, this.moveUser.userid);\r\n }\r\n\r\n const subscription = this.userService.moveUserToMT(this.customerId, this.moveUser)\r\n .subscribe(() => {\r\n this.userService.userMoved$.next(true);\r\n }, () => {\r\n this.removeUserInMigrationProgress();\r\n this.setStatusToUser(this.moveUserIndex, 'Migration Error');\r\n });\r\n this.subscriptions.push(subscription);\r\n }\r\n\r\n\r\n}\r\n","<app-loader *ngIf=\"dataPending\"></app-loader>\r\n<div *ngIf=\"!showMoveUserWizard\" id=\"users-list\">\r\n <app-pagination\r\n [pagination]=\"usersSearchService.getPagination()\"\r\n [showPageSizeOptions]=\"true\"\r\n (pageNumberChangeEmitter)=\"pageNumberChangeEvent($event)\"\r\n (pageEmitter)=\"pageEvent($event)\">\r\n </app-pagination>\r\n <table class=\"webex-table\" mat-table *ngIf=\"users?.length\" #table [dataSource]=\"dataSource\">\r\n\r\n <ng-container matColumnDef=\"user-icon\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\"></th>\r\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\"\r\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\r\n (click)=\"onUserClick(user)\">\r\n <span class=\"icon-webex-box\"><span class=\"icon-webex icon-webex-user\"></span></span>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"name\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">First / Last Name</th>\r\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\"\r\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\r\n (click)=\"onUserClick(user)\"> {{ user.firstName }} {{ user.lastName }}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"email\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">Email</th>\r\n <td class=\"user-site\" [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\r\n mat-cell *matCellDef=\"let user\" (click)=\"onUserClick(user)\">\r\n {{ user.email }}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"status\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">Status</th>\r\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\"\r\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\"\r\n (click)=\"onUserClick(user)\">\r\n <span class=\"icon-user-status icon-user-status-active\"></span>{{user.status}}\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"actions\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\"></th>\r\n <td class=\"user-site\" mat-cell *matCellDef=\"let user, let i = index\"\r\n [ngClass]=\"{'disabled-user-row': moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid}\">\r\n <mat-progress-spinner class=\"field-spinner\"\r\n [diameter]=\"20\"\r\n mode=\"indeterminate\"\r\n *ngIf=\"user.status === 'In Progress'\"></mat-progress-spinner>\r\n <button *ngIf=\"!(moveUserPending && moveInProgressUserId && moveInProgressUserId === user?.userid)\"\r\n class=\"button-action-dot\" mat-icon-button [matMenuTriggerFor]=\"menu\">\r\n <div class=\"icon-actions-dots\">\r\n <span class=\"icon-dot\">.</span>\r\n <span class=\"icon-dot\">.</span>\r\n <span class=\"icon-dot\">.</span>\r\n </div>\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button mat-menu-item [disabled]=\"true\">Resend Invitation</button>\r\n <button mat-menu-item [disabled]=\"true\">Reset Password</button>\r\n <button *ngIf=\"!user.isMigrated\" mat-menu-item (click)=\"onMoveUser(user, i, 'QuickMove')\">Quick Move User to MT</button>\r\n <button *ngIf=\"!user.isMigrated\" mat-menu-item (click)=\"onMoveUser(user, i, 'MT')\">Move User to MT</button>\r\n <button *ngIf=\"user.isMigrated\" mat-menu-item (click)=\"onMoveUser(user, i, 'DI')\">Revert User to UCM/DI</button>\r\n <button mat-menu-item [disabled]=\"true\">Deactivate User</button>\r\n <button mat-menu-item [disabled]=\"true\">Delete User</button>\r\n </mat-menu>\r\n </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"role\">\r\n <th mat-header-cell *matHeaderCellDef class=\"webex-table-th\">Administrator Role</th>\r\n <td class=\"user-site\" mat-cell *matCellDef=\"let user\" (click)=\"onUserClick(user)\">{{ user.roleName || '' }}</td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\r\n </table>\r\n</div>\r\n\r\n<app-move-user-wizard *ngIf=\"showMoveUserWizard\" [user]=\"moveUser\" (done)=\"closeMoveUserWizard(true)\"\r\n [customerId]=\"customerId\" (runMoveUser)=\"runMoveUserToMT()\"\r\n (closeMoveUserWizard)=\"closeMoveUserWizard(false)\"></app-move-user-wizard>\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class EventsCommunicationService {\r\n public onSuccessfulLoginEvent = new Subject();\r\n\r\n constructor() {\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatTreeModule } from '@angular/material/tree';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatNativeDateModule } from '@angular/material/core';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatStepperModule } from '@angular/material/stepper';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n DragDropModule,\r\n MatButtonModule,\r\n MatListModule,\r\n MatProgressSpinnerModule,\r\n MatExpansionModule,\r\n MatInputModule,\r\n MatInputModule,\r\n MatListModule,\r\n MatTreeModule,\r\n MatTreeModule,\r\n MatNativeDateModule,\r\n MatDatepickerModule,\r\n MatTooltipModule,\r\n MatAutocompleteModule,\r\n MatChipsModule,\r\n MatSidenavModule,\r\n MatFormFieldModule,\r\n MatStepperModule,\r\n MatTabsModule,\r\n MatCardModule,\r\n MatSelectModule,\r\n MatCheckboxModule,\r\n MatSlideToggleModule,\r\n MatTableModule,\r\n MatPaginatorModule,\r\n MatMenuModule,\r\n MatDialogModule,\r\n MatRadioModule\r\n ],\r\n exports: [\r\n DragDropModule,\r\n MatButtonModule,\r\n MatListModule,\r\n MatProgressSpinnerModule,\r\n MatExpansionModule,\r\n MatInputModule,\r\n MatInputModule,\r\n MatListModule,\r\n MatTreeModule,\r\n MatTreeModule,\r\n MatNativeDateModule,\r\n MatDatepickerModule,\r\n MatTooltipModule,\r\n MatAutocompleteModule,\r\n MatChipsModule,\r\n MatSidenavModule,\r\n MatFormFieldModule,\r\n MatStepperModule,\r\n MatTabsModule,\r\n MatCardModule,\r\n MatCheckboxModule,\r\n MatSelectModule,\r\n MatSlideToggleModule,\r\n MatProgressSpinnerModule,\r\n MatTableModule,\r\n MatPaginatorModule,\r\n MatMenuModule,\r\n MatDialogModule,\r\n MatRadioModule\r\n ],\r\n})\r\nexport class MaterialModule {\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { UsersListComponent } from './users-list.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { MaterialModule } from './material.module';\r\nimport { PaginationComponent } from './utils/pagination/pagination.component';\r\nimport { UserService } from './services/user.service';\r\nimport { APIService } from './services/api.service';\r\nimport { EventsCommunicationService } from './services/events-communication.service';\r\nimport { UsersSearchService } from './services/users-search.service';\r\nimport { NotificationService } from './services/notification.service';\r\nimport { RemoveKynFromIBMService } from './services/removeKynFromIBM.service';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { ApiWebexService } from './services/api-webex.service';\r\nimport { AppLoaderComponent } from './utils/app-loader/app-loader';\r\nimport { MoveUserWizardComponent } from './move-user-wizard/move-user-wizard.component';\r\nimport { MoveUserStepperComponent } from './move-user-wizard/move-user-stepper/move-user-stepper.component';\r\nimport { UserListConfirmDialogComponent } from './user-list-confirm-dialog/user-list-confirm-dialog.component';\r\nimport { DnsService } from './services/dns.service';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n UsersListComponent,\r\n PaginationComponent,\r\n AppLoaderComponent,\r\n MoveUserWizardComponent,\r\n MoveUserStepperComponent,\r\n UserListConfirmDialogComponent\r\n ],\r\n imports: [\r\n BrowserModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n HttpClientModule,\r\n MaterialModule\r\n ],\r\n providers: [\r\n UserService,\r\n APIService,\r\n EventsCommunicationService,\r\n UsersSearchService,\r\n NotificationService,\r\n RemoveKynFromIBMService,\r\n ApiWebexService,\r\n DnsService\r\n ],\r\n exports: [UsersListComponent]\r\n})\r\nexport class UsersListModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1","i1.APIService","i2.ApiWebexService","i3.RemoveKynFromIBMService","i4","i1.DnsService","i2.UserService","i3","i5","i6","i9","i12","i14.AppLoaderComponent","i3.AppLoaderComponent","i4.MoveUserStepperComponent","i1.UserService","i2.APIService","i3.ApiWebexService","i4.NotificationService","i5.UsersSearchService","i7","i8","i10","i11","i12.PaginationComponent","i13.AppLoaderComponent","i14.MoveUserWizardComponent"],"mappings":"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"}