@seniorsistemas/exclusion-process-component 0.2.1-534b2cd2-c9f9-432d-af2e-5630b05ee46f → 0.2.1-d6a79e93-16a1-4705-a52d-6a12a465c189

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,"sources":["../../node_modules/tslib/tslib.es6.js","ng://@seniorsistemas/exclusion-process-component/enums/enum-exclusion-process-status.ts","ng://@seniorsistemas/exclusion-process-component/models/project-config.ts","ng://@seniorsistemas/exclusion-process-component/services/logical-delete-config.service.ts","ng://@seniorsistemas/exclusion-process-component/services/logical-delete.service.ts","ng://@seniorsistemas/exclusion-process-component/exclusion-details/exclusion-details.component.ts","ng://@seniorsistemas/exclusion-process-component/exclusion-details/exclusion-details.module.ts","ng://@seniorsistemas/exclusion-process-component/services/filter.service.ts","ng://@seniorsistemas/exclusion-process-component/exclusions-list/exclusions-list.component.ts","ng://@seniorsistemas/exclusion-process-component/exclusions-list/exclusions-list.routing.ts","ng://@seniorsistemas/exclusion-process-component/exclusions-list/exclusions-list.module.ts","ng://@seniorsistemas/exclusion-process-component/logical-delete.module.ts"],"names":["EnumExclusionProcessStatus","__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__decorate","decorators","target","key","desc","d","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__read","o","m","Symbol","iterator","e","ar","next","done","push","value","error","__spread","concat","ProjectConfigsInjectionToken","InjectionToken","LogicalDeleteConfigService","projectConfigs","paramIndex","decorator","getDomain","domain","getService","service","getTranslationPrefix","translationPrefix","Inject","args","Injectable","LogicalDeleteService","http","messageService","translate","entityUrl","exclusionProcessUrl","defaultCatch","bind","_this","catchError","err","summary","status","String","detail","_a","message","statusText","prefix","instant","add","severity","throwError","getListQueryParams","listParams","page","_b","size","_c","sort","_d","filterQuery","_e","displayFields","params","HttpParams","append","map","order","field","join","getProcessDetails","id","doGetProcessDetails","filter","offset","getLatestProcessDetails","recordId","orderby","filterParams","get","pipe","contents","mapExclusionsDates","exclusionProcess","startDate","moment","toDate","finishDate","groups","group","steps","step","listExclusions","entityName","HttpClient","MessageService","TranslateService","ExclusionDetailsComponent","router","route","logicalDeleteService","_entityName","_isVisible","_isLoading","_processSummaryData","_processSummaryColumns","ngUnsubscribe","Subject","ngOnInit","data","takeUntil","subscribe","locale","localeConfig","getSummaryColumns","ngOnDestroy","complete","disconnectWebSocket","showDetails","details","_exclusionDetails","processDetails","entityDescription","loadProcessDetails","connectWebSocket","onVisibilityChanged","event","closeDetails","openExclusions","navigate","queryParams","getRecordDescription","description","getInicialDate","format","getFinishDate","isFinished","getShowExclusionsButtonLabel","getCloseButtonLabel","getSummaryLabel","getStartDateLabel","getFinishDateLabel","getSidebarTitle","getEmptyStateTitle","getEmptyStateDescription","attributes","header","type","EnumColumnFieldType","STRING","style","width","ENUM","enumPrefix","tooltip","getColumnStatusTooltip","badgeConfigs","enumValue","ERROR","color","EnumBadgeColors","RED","PENDING","YELLOW","PROCESSING","BLUE","SUCCESS","GREEN","rowValue","errorMessage","processId","finalize","process","loadProcessSummary","sortByDate","getTime","sortGroupsByStartDate","a","b","sortStepsByStartDate","stepLogs","forEach","_exclusionProcessStatusChangedSubscribe","unsubscribe","_websocketService","disconnect","WebsocketService","onConnect","startListeningWebhookEvents","onError","console","onEvent","primitive","pid","Router","ActivatedRoute","Output","Component","selector","template","encapsulation","ViewEncapsulation","None","ExclusionDetailsModule","NgModule","imports","CommonModule","SidebarModule","ButtonModule","PanelModule","PrimeTableModule","TableModule","LoadingStateModule","LocaleModule","EmptyStateModule","declarations","exports","entryComponents","FilterService","logicalDeleteConfigService","numberTypes","FieldType","Integer","Double","getEnumQuery","name","multiple","selected","createFilterString","formField","Date","Time","DateTime","LocalDateTime","Enum","replace","Lookup","createFilterTokens","label","searchFields","options","labelValue","getProp","Array","isArray","element","en","option","Boolean","getSuggestionValue","ownerEntity","separator","reduce","acc","val","obj","path","split","result","prop","undefined","getLabelValueRequest","item","isValidFilter","isTypeNumber","includes","isNumber","match","ExclusionsListComponent","formBuilder","changeDetectorRef","filterService","cdr","currentListParams","filterData","showLoader","totalRecords","filtersPanelCollapsed","searchTokens","serverError","filterFormGroup","getFormBuilder","filterFields","getFilterFields","gridColumns","getGridColumns","ngAfterViewInit","exclusionDetailsComponent","detectChanges","Validators","compose","disabled","endDate","DATE","dateFormat","FormField","placeholder","getTitle","getDetailsButtonTitle","getFiltersTitle","getFilterButtonTitle","getClearButtonTitle","getErrorInvalid","getErrorServerTitle","getErrorServerDescription","getActionsColumnLabel","onSearch","getRawValue","resetGrid","onClear","reset","onRemoveToken","token","setValue","onGridChange","rows","first","multiSortMeta","updateGrid","getFilterTokens","getFilterQuery","dateQuery","dateFields","ExclusionsListComponent_1","DATE_FORMAT","column","list","gridData","totalElements","focusInput","elementId","document","getElementById","focus","table","onClickDetails","rowData","FormBuilder","ChangeDetectorRef","ViewChild","providers","ExclusionsListFeatureRoutingGuard","canActivate","ExclusionsListFeatureRoutingListTitleResolver","resolve","ExclusionsListFeatureRoutingPermissionResolver","permissionsService","PermissionsService","ExclusionsListFeatureRoutingLocaleResolver","localeService","LocaleService","EmptyComponent","routes","component","allPermissions","routeTitle","children","ExclusionsListFeatureRouting","RouterModule","forChild","ExclusionsListModule","FormsModule","ReactiveFormsModule","TranslateModule","ControlErrorsModule","InputTextModule","InfoSignModule","ConfirmDialogModule","DialogModule","DynamicFormModule","TokenListModule","LogicalDeleteModule","forRoot","config","ngModule","LogicalDeleteModule_1","provide","useValue"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export enum EnumExclusionProcessStatus {\n PENDING = \"PENDING\",\n PROCESSING = \"PROCESSING\",\n ERROR = \"ERROR\",\n SUCCESS = \"SUCCESS\"\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const ProjectConfigsInjectionToken = new InjectionToken<ProjectConfigs>(\"projectConfigs\");\n\nexport interface ProjectConfigs {\n domain: string;\n service: string;\n translationPrefix?: string;\n}\n","import { Inject, Injectable } from \"@angular/core\";\nimport { ProjectConfigs, ProjectConfigsInjectionToken } from \"../models/project-config\";\n\n@Injectable()\nexport class LogicalDeleteConfigService {\n constructor(\n @Inject(ProjectConfigsInjectionToken)\n private readonly projectConfigs: ProjectConfigs) {\n }\n\n public getDomain() {\n return this.projectConfigs.domain;\n }\n\n public getService() {\n return this.projectConfigs.service;\n }\n\n public getTranslationPrefix() {\n if (this.projectConfigs.translationPrefix) {\n return this.projectConfigs.translationPrefix;\n }\n return `${this.projectConfigs.domain}.${this.projectConfigs.service}`;\n }\n}\n","import * as moment from \"moment\";\nimport { HttpClient, HttpParams } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { MessageService } from \"primeng/api\";\nimport { Observable, throwError } from \"rxjs\";\nimport { catchError, map } from \"rxjs/operators\";\nimport { ListResult, ExclusionProcess } from \"../models/index\";\nimport { LogicalDeleteConfigService } from \"./logical-delete-config.service\";\nimport { ListParams } from \"../models/list-params\";\n\nconst HTTP_UNAUTHORIZED_CODE = 401;\nconst DEFAULT_PAGE_SIZE = 10;\n\n@Injectable()\nexport class LogicalDeleteService {\n private readonly exclusionProcessUrl: string;\n\n constructor(\n private readonly http: HttpClient,\n private readonly messageService: MessageService,\n private readonly translate: TranslateService,\n private readonly projectConfigs: LogicalDeleteConfigService) {\n\n const entityUrl = `${projectConfigs.getDomain()}/${projectConfigs.getService()}`;\n this.exclusionProcessUrl = `${entityUrl}/entities/exclusionProcess`;\n this.defaultCatch = this.defaultCatch.bind(this);\n }\n\n public defaultCatch() {\n return catchError<any, any>((err: any) => {\n if (err) {\n let summary = err.status ? String(err.status) : \"Error\";\n let detail = err.error?.message || err.statusText || err.message;\n\n if (err.status === HTTP_UNAUTHORIZED_CODE) {\n const prefix = this.projectConfigs.getTranslationPrefix();\n summary = this.translate.instant(`${prefix}.error_unauthorized_title`);\n detail = this.translate.instant(`${prefix}.error_unauthorized_description`);\n }\n\n this.messageService.add({\n severity: \"error\",\n summary,\n detail: detail || \"Error\"\n });\n }\n\n return throwError(err);\n });\n }\n\n public getListQueryParams(listParams: ListParams) {\n const { page = 0, size = DEFAULT_PAGE_SIZE, sort = [], filterQuery = \"\", displayFields = [] } = listParams;\n\n let params = new HttpParams();\n params = params.append(\"size\", String(size));\n params = params.append(\"offset\", String(page));\n\n if (sort && sort.length) {\n params = params.append(\n \"orderby\",\n sort\n .map(s => {\n if (s.order === -1) {\n return `${s.field} desc`;\n }\n\n return `${s.field} asc`;\n })\n .join(\", \")\n );\n }\n\n if (filterQuery) {\n params = params.append(\"filter\", filterQuery);\n }\n\n if (displayFields && displayFields.length) {\n params = params.append(\"displayfields\", displayFields.join());\n }\n\n return params;\n }\n\n public getProcessDetails(id: string): Observable<ExclusionProcess> {\n return this.doGetProcessDetails({\n filter: `id eq '${id}'`,\n size: \"1\",\n offset: \"0\",\n });\n }\n\n public getLatestProcessDetails(recordId: string): Observable<ExclusionProcess> {\n return this.doGetProcessDetails({\n filter: `recordId eq '${recordId}'`,\n size: \"1\",\n offset: \"0\",\n orderby: \"startDate desc\"\n });\n }\n\n private doGetProcessDetails(filterParams: HttpParams | {\n [param: string]: string | string[];\n }): Observable<ExclusionProcess> {\n return this.http.get<ListResult<ExclusionProcess>>(this.exclusionProcessUrl, { params: filterParams })\n .pipe<ListResult<ExclusionProcess>>(this.defaultCatch())\n .pipe(map(value => {\n if (!value.contents?.length) {\n return null;\n }\n return this.mapExclusionsDates(value.contents[0]);\n }));\n }\n\n private mapExclusionsDates(exclusionProcess: ExclusionProcess) {\n return {\n ...exclusionProcess,\n startDate: exclusionProcess.startDate ? moment(exclusionProcess.startDate).toDate() : null,\n finishDate: exclusionProcess.finishDate ? moment(exclusionProcess.finishDate).toDate() : null,\n groups: exclusionProcess.groups?.map(group => ({\n ...group,\n startDate: group.startDate ? moment(group.startDate).toDate() : null,\n finishDate: group.finishDate ? moment(group.finishDate).toDate() : null,\n steps: group.steps?.map(step => ({\n ...step,\n startDate: step.startDate ? moment(step.startDate).toDate() : null,\n finishDate: step.finishDate ? moment(step.finishDate).toDate() : null,\n }))\n }))\n };\n }\n\n public listExclusions(entityName: string, params: ListParams = {}): Observable<ListResult<ExclusionProcess>> {\n if (params.filterQuery) {\n params.filterQuery += ` and lower(entityName) eq lower('${entityName}')`;\n } else {\n params.filterQuery = `lower(entityName) eq lower('${entityName}')`;\n }\n\n return this.http.get<ListResult<ExclusionProcess>>(this.exclusionProcessUrl, { params: this.getListQueryParams(params) })\n .pipe<ListResult<ExclusionProcess>>(this.defaultCatch())\n .pipe<ListResult<ExclusionProcess>>(map(value => {\n value.contents = value.contents.map(this.mapExclusionsDates);\n return value;\n }));\n }\n}\n","import * as moment from \"moment\";\nimport { Component, Output, ViewEncapsulation, OnInit, OnDestroy } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { Subject, Subscription } from \"rxjs\";\nimport { finalize, takeUntil } from \"rxjs/operators\";\nimport { EnumBadgeColors, EnumColumnFieldType, TableColumnLocaleOptions } from \"@seniorsistemas/angular-components\";\nimport { WebsocketService } from \"@senior-gestao-empresarial/angular-components\";\nimport { EnumExclusionProcessStatus } from \"../enums/enum-exclusion-process-status\";\nimport { ExclusionDetails } from \"./protocols/exclusion-details\";\nimport { LogicalDeleteService } from \"../services/logical-delete.service\";\nimport { ExclusionProcess, ExclusionProcessStep, ExclusionProcessStepGroup } from \"../models/index\";\nimport { LogicalDeleteConfigService } from \"../services/logical-delete-config.service\";\nimport { ShowDetailsInformation } from \"./protocols\";\nimport { ExclusionProcessStatusChanged } from \"./protocols/exclusion-process-status-changed\";\nimport { WebsocketEventData } from \"./protocols/web-socket-event-data\";\n\n@Component({\n selector: \"s-exclusion-details\",\n templateUrl: \"./exclusion-details.component.html\",\n styleUrls: [\"./exclusion-details.component.scss\"],\n encapsulation: ViewEncapsulation.None\n})\nexport class ExclusionDetailsComponent implements OnInit, OnDestroy {\n public locale!: TableColumnLocaleOptions;\n\n @Output()\n get isVisible(): boolean {\n return this._isVisible;\n }\n\n @Output()\n get isLoading(): boolean {\n return this._isLoading;\n }\n\n @Output()\n get processSummaryData(): ExclusionDetails[] {\n return this._processSummaryData;\n }\n\n @Output()\n get processSummaryColumns(): any[] {\n return this._processSummaryColumns;\n }\n\n @Output()\n public processDetails: ExclusionProcess;\n\n @Output()\n public entityDescription: string;\n\n private _entityName = \"\";\n private _isVisible = false;\n private _isLoading = false;\n private _processSummaryData: ExclusionDetails[] = [];\n private _processSummaryColumns: any[] = [];\n private _websocketService: WebsocketService;\n private _exclusionProcessStatusChangedSubscribe: Subscription;\n private _exclusionDetails: ShowDetailsInformation;\n private readonly ngUnsubscribe = new Subject();\n\n constructor(\n private readonly router: Router,\n private readonly route: ActivatedRoute,\n private readonly translate: TranslateService,\n private readonly logicalDeleteService: LogicalDeleteService,\n private readonly projectConfigs: LogicalDeleteConfigService\n ) {\n }\n\n ngOnInit(): void {\n this.route.data\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((data: { [configs: string]: any, localeConfig: TableColumnLocaleOptions }) => {\n this.locale = data.localeConfig;\n });\n this._processSummaryColumns = this.getSummaryColumns();\n }\n\n public ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n\n this.disconnectWebSocket();\n }\n\n public showDetails(details: ShowDetailsInformation) {\n this._exclusionDetails = details;\n this._entityName = details.entityName;\n this._isVisible = true;\n this._processSummaryData = [];\n\n this.processDetails = null;\n this.entityDescription = details.entityDescription;\n\n this.loadProcessDetails(details);\n\n this.connectWebSocket();\n }\n\n public onVisibilityChanged(event: any) {\n this.closeDetails();\n }\n\n public closeDetails() {\n this._isVisible = false;\n this._exclusionDetails = null;\n this._processSummaryData = [];\n this.disconnectWebSocket();\n }\n\n public openExclusions() {\n this.closeDetails();\n this.router.navigate(\n [\"exclusions-list\", this._entityName],\n {\n queryParams: {\n entityDescription: this.entityDescription\n }\n }\n );\n }\n\n public getRecordDescription() {\n if (!this.processDetails?.description) {\n return \"\";\n }\n\n return this.processDetails.description;\n }\n\n public getInicialDate() {\n if (!this.processDetails?.startDate) {\n return \"\";\n }\n\n return moment(this.processDetails.startDate).format(\"DD/MM/YYYY HH:mm:ss\");\n }\n\n public getFinishDate() {\n if (!this.processDetails?.finishDate) {\n return \"\";\n }\n\n return moment(this.processDetails.finishDate).format(\"DD/MM/YYYY HH:mm:ss\");\n }\n\n public isFinished() {\n return !!this.processDetails?.finishDate;\n }\n\n public getShowExclusionsButtonLabel() {\n return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_show_deletions`);\n }\n\n public getCloseButtonLabel() {\n return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_close`);\n }\n\n public getSummaryLabel() {\n return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_summary`);\n }\n\n public getStartDateLabel() {\n return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_start`);\n }\n\n public getFinishDateLabel() {\n return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_finish`);\n }\n\n public getSidebarTitle() {\n return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_details_title`);\n }\n\n public getEmptyStateTitle() {\n return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_empty_state_title`);\n }\n\n public getEmptyStateDescription() {\n return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_empty_state_description`);\n }\n\n private getSummaryColumns() {\n return [\n {\n field: \"description\",\n attributes: [\"description\"],\n header: this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_description`),\n type: EnumColumnFieldType.STRING,\n style: {\n width: \"300px\"\n }\n },\n {\n field: \"status\",\n attributes: [\"status\"],\n header: this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_status`),\n type: EnumColumnFieldType.ENUM,\n enumPrefix: `${this.projectConfigs.getTranslationPrefix()}.logical_delete_enum_exclusion_process_status_`,\n style: {\n width: \"100px\"\n },\n tooltip: this.getColumnStatusTooltip,\n badgeConfigs: [\n {\n enumValue: EnumExclusionProcessStatus.ERROR,\n color: EnumBadgeColors.RED\n },\n {\n enumValue: EnumExclusionProcessStatus.PENDING,\n color: EnumBadgeColors.YELLOW\n },\n {\n enumValue: EnumExclusionProcessStatus.PROCESSING,\n color: EnumBadgeColors.BLUE\n },\n {\n enumValue: EnumExclusionProcessStatus.SUCCESS,\n color: EnumBadgeColors.GREEN\n }\n ]\n }\n ];\n }\n\n private getColumnStatusTooltip(rowValue: ExclusionDetails) {\n if (rowValue.errorMessage) {\n return rowValue.errorMessage;\n }\n\n return null;\n }\n\n private loadProcessDetails(details: ShowDetailsInformation) {\n this._isLoading = true;\n\n const processObservable = details.processId\n ? this.logicalDeleteService.getProcessDetails(details.processId)\n : this.logicalDeleteService.getLatestProcessDetails(details.recordId);\n\n processObservable\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(finalize(() => this._isLoading = false))\n .subscribe((process: ExclusionProcess) => {\n if (!process) {\n return;\n }\n\n this.processDetails = process;\n this.loadProcessSummary(process);\n });\n }\n\n private sortByDate(startDate: Date, finishDate: Date) {\n if (startDate.getTime() > finishDate.getTime()) {\n return 1;\n }\n if (startDate.getTime() < finishDate.getTime()) {\n return -1;\n }\n return 0;\n }\n\n private sortGroupsByStartDate(groups: ExclusionProcessStepGroup[]) {\n return groups.sort((a, b) => this.sortByDate(a.startDate, b.finishDate));\n }\n\n private sortStepsByStartDate(steps: ExclusionProcessStep[]) {\n return steps.sort((a, b) => this.sortByDate(a.startDate, b.finishDate));\n }\n\n private loadProcessSummary(process: ExclusionProcess) {\n const stepLogs: ExclusionDetails[] = [];\n\n this.sortGroupsByStartDate(process.groups)\n .forEach(group => {\n const steps = this.sortStepsByStartDate(group.steps)\n .map(step => ({\n description: step.description,\n status: step.status,\n errorMessage: step.errorMessage\n } as ExclusionDetails));\n\n stepLogs.push(...steps);\n });\n\n this._processSummaryData = stepLogs;\n }\n\n private disconnectWebSocket() {\n if (this._exclusionProcessStatusChangedSubscribe) {\n this._exclusionProcessStatusChangedSubscribe.unsubscribe();\n this._exclusionProcessStatusChangedSubscribe = null;\n }\n\n if (this._websocketService) {\n this._websocketService.disconnect();\n this._websocketService = null;\n }\n }\n\n private connectWebSocket() {\n if (this._websocketService) {\n this.disconnectWebSocket();\n }\n\n this._websocketService = new WebsocketService();\n this._websocketService\n .onConnect()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n this.startListeningWebhookEvents();\n });\n }\n\n private startListeningWebhookEvents() {\n this._websocketService\n .onError()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((data: any) => {\n console.error('onError', data);\n });\n\n this._exclusionProcessStatusChangedSubscribe = this._websocketService\n .onEvent<WebsocketEventData<ExclusionProcessStatusChanged>>({\n domain: this.projectConfigs.getDomain(),\n service: this.projectConfigs.getService(),\n primitive: \"exclusionProcessStatusChanged\"\n })\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((event: WebsocketEventData<ExclusionProcessStatusChanged>) => {\n const { data } = event;\n\n if (this._exclusionDetails.processId && data.pid === this._exclusionDetails.processId) {\n this.loadProcessDetails(this._exclusionDetails);\n return;\n }\n\n if (this._exclusionDetails.recordId && data.recordId === this._exclusionDetails.recordId) {\n this.loadProcessDetails(this._exclusionDetails);\n }\n });\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { PanelModule } from \"primeng/panel\";\nimport { TableModule as PrimeTableModule } from \"primeng/table\";\nimport {\n ButtonModule,\n LoadingStateModule,\n TableModule,\n SidebarModule,\n LocaleModule,\n EmptyStateModule\n} from \"@seniorsistemas/angular-components\";\nimport { ExclusionDetailsComponent } from \"./exclusion-details.component\";\n\n@NgModule({\n imports: [\n CommonModule,\n SidebarModule,\n ButtonModule,\n PanelModule,\n PrimeTableModule,\n TableModule,\n LoadingStateModule,\n LocaleModule,\n EmptyStateModule\n ],\n declarations: [ExclusionDetailsComponent],\n exports: [ExclusionDetailsComponent],\n entryComponents: [ExclusionDetailsComponent]\n})\nexport class ExclusionDetailsModule {}\n","import * as moment from \"moment\";\nimport { Injectable } from \"@angular/core\";\nimport { FieldType, FormField, Option } from \"@seniorsistemas/angular-components\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { LogicalDeleteConfigService } from \"./logical-delete-config.service\";\n\n@Injectable()\nexport class FilterService {\n private readonly numberTypes = [FieldType.Integer, FieldType.Double];\n\n constructor(\n private readonly logicalDeleteConfigService: LogicalDeleteConfigService,\n private readonly translate: TranslateService\n ) {}\n\n getEnumQuery(name: string, value: any, multiple: boolean = false) {\n if (multiple) {\n const filter = value.map((selected: any) => `${name} eq '${selected}'`).join(\" or \");\n return `(${filter})`;\n }\n return `${name} eq '${value}'`;\n }\n\n createFilterString(formField: FormField, value: any) {\n const { name, type, multiple } = formField;\n if (typeof value == \"number\") {\n return `${name} eq ${value}`;\n }\n\n switch (type) {\n case FieldType.Date:\n return `${name} eq '${moment(value).format(\"YYYY-MM-DD\")}'`;\n case FieldType.Time:\n return `${name} eq '${moment(value).format(\"HH:mm:ss\")}'`;\n case FieldType.DateTime:\n return `${name} eq '${moment(value).format()}'`;\n case FieldType.LocalDateTime:\n return `${name} eq '${moment(value).format(\"YYYY-MM-DD[T]HH:mm:ss.SSS\")}'`;\n case FieldType.Enum:\n return this.getEnumQuery(name, value, multiple);\n case FieldType.String:\n return `containing(upper(${name}), upper('${value.replace(/'/g, \"'\")}'))`;\n case FieldType.Lookup:\n return `${name} eq '${value.id}'`;\n default:\n return `${name} eq '${value}'`;\n }\n }\n\n createFilterTokens(formField: FormField, value: any) {\n const { name, type, label, searchFields, options } = formField as any;\n let labelValue = value;\n\n switch (type) {\n case FieldType.Date:\n labelValue = moment(value).format(\"L\");\n break;\n case FieldType.Time:\n labelValue = moment(value).format(\"LTS\");\n break;\n case FieldType.LocalDateTime:\n case FieldType.DateTime:\n labelValue = moment(value).format(\"L LTS\");\n break;\n case FieldType.Lookup:\n labelValue = searchFields.map((field: FormField) => this.getProp(value, field.name)).join(\" - \");\n break;\n case FieldType.Enum:\n if (Array.isArray(value)) {\n labelValue = value.map((element: string) => {\n return options.filter((en: any) => en.value === element)[0].label;\n });\n } else {\n labelValue = options.filter((option: Option) => option.value === labelValue)[0].label;\n }\n break;\n case FieldType.Boolean:\n labelValue = value\n ? this.translate.instant(`${this.logicalDeleteConfigService.getTranslationPrefix()}.list_grid_boolean_true`)\n : this.translate.instant(`${this.logicalDeleteConfigService.getTranslationPrefix()}.list_grid_boolean_false`);\n break;\n default:\n labelValue = value;\n break;\n }\n\n return { id: name, label: `${label}: ${labelValue}` };\n }\n\n getSuggestionValue(displayFields: string[], ownerEntity: string, value: any, separator: string) {\n return displayFields.map(field => this.getProp(value, `${ownerEntity}.${field}`))\n .reduce((acc: any, val: any) => `${acc}${separator}${val}`) + \"\";\n }\n\n getProp(obj: any, path: any) {\n return path.split(\".\").reduce((result: any, prop: any) => (result[prop] === undefined ? \"\" : result[prop]), obj);\n }\n\n getLabelValueRequest(contents: any[], displayFields: any[]) {\n return contents.map((item: any) => ({\n ...item,\n label: displayFields.map(field => this.getProp(item, field)).join(\" - \")\n }));\n }\n\n isValidFilter(type: FieldType, value: any) {\n const isTypeNumber = this.numberTypes.includes(type);\n const numberPattern = /^\\d+\\b$/;\n const isNumber = value.match(numberPattern);\n return !(isTypeNumber && !isNumber);\n }\n}\n","import * as moment from \"moment\";\nimport { AfterViewInit, ChangeDetectorRef, Component, OnDestroy, OnInit, ViewChild } from \"@angular/core\";\nimport { FormBuilder, FormGroup, Validators } from \"@angular/forms\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { LazyLoadEvent } from \"primeng/api\";\nimport { Subject } from \"rxjs\";\nimport { catchError, finalize, takeUntil } from \"rxjs/operators\";\nimport {\n EnumBadgeColors,\n EnumColumnFieldType,\n FieldType,\n FormField,\n IToken,\n TableColumnLocaleOptions\n} from \"@seniorsistemas/angular-components\";\nimport { EnumExclusionProcessStatus } from \"../enums/enum-exclusion-process-status\";\nimport { ExclusionProcess } from \"../models\";\nimport { Table } from \"primeng/table\";\nimport { LogicalDeleteService } from \"../services\";\nimport { ActivatedRoute } from \"@angular/router\";\nimport { ListParams } from \"../models/list-params\";\nimport { LogicalDeleteConfigService } from \"../services/logical-delete-config.service\";\nimport { ExclusionDetailsComponent } from \"../exclusion-details\";\nimport { FilterService } from \"../services/filter.service\";\n\nconst HTTP_CODE_SERVER_ERROR_START = 500;\nconst HTTP_CODE_SERVER_ERROR_END = 600;\n\n@Component({\n templateUrl: \"./exclusions-list.component.html\",\n styleUrls: [],\n providers: []\n})\nexport class ExclusionsListComponent implements OnInit, OnDestroy, AfterViewInit {\n\n private static readonly DATE_FORMAT = \"YYYY-MM-DD\";\n\n public locale!: TableColumnLocaleOptions;\n public entityName: string;\n public entityDescription: string;\n public processId: string;\n\n public currentListParams: ListParams = { page: 0, size: 10, sort: [], filterData: {} };\n public gridData: ExclusionProcess[];\n public gridColumns: any[];\n public showLoader = false;\n public totalRecords = 0;\n\n public filterFields: FormField[];\n public filterFormGroup: FormGroup;\n public filtersPanelCollapsed = true;\n public searchTokens: IToken[] = [];\n public serverError = false;\n\n @ViewChild(\"exclusionsTable\")\n public table: Table;\n\n @ViewChild(ExclusionDetailsComponent)\n public exclusionDetailsComponent: ExclusionDetailsComponent;\n\n private readonly ngUnsubscribe = new Subject();\n\n constructor(\n private readonly route: ActivatedRoute,\n private readonly translate: TranslateService,\n private readonly formBuilder: FormBuilder,\n private readonly changeDetectorRef: ChangeDetectorRef,\n private readonly logicalDeleteService: LogicalDeleteService,\n private readonly filterService: FilterService,\n private readonly projectConfigs: LogicalDeleteConfigService,\n private readonly cdr: ChangeDetectorRef,\n ) {\n }\n\n public ngOnInit() {\n this.filterFormGroup = this.getFormBuilder();\n this.filterFields = this.getFilterFields();\n this.gridColumns = this.getGridColumns();\n\n this.route.data\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((data: { [configs: string]: any, localeConfig: TableColumnLocaleOptions }) => {\n this.locale = data.localeConfig;\n });\n this.route.queryParams\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((queryParams: any) => {\n this.entityName = queryParams.entityName;\n this.entityDescription = queryParams.entityDescription;\n this.processId = queryParams.processId;\n });\n }\n\n public ngAfterViewInit() {\n if (this.entityName && this.entityDescription && this.processId) {\n this.exclusionDetailsComponent.showDetails({\n processId: this.processId,\n entityDescription: this.entityDescription,\n entityName: this.entityName\n });\n this.cdr.detectChanges();\n }\n }\n\n public ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n private getFormBuilder() {\n return this.formBuilder.group({\n description: [undefined, Validators.compose([])],\n status: [undefined, Validators.compose([])],\n startDate: [{ value: undefined, disabled: false }, Validators.compose([])],\n endDate: [{ value: undefined, disabled: false }, Validators.compose([])]\n });\n }\n\n private getGridColumns() {\n return [\n {\n field: \"description\",\n attributes: [\"description\"],\n header: this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_description`),\n type: EnumColumnFieldType.STRING,\n style: {\n width: \"300px\"\n }\n },\n {\n field: \"status\",\n attributes: [\"status\"],\n header: this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_status`),\n type: EnumColumnFieldType.ENUM,\n enumPrefix: `${this.projectConfigs.getTranslationPrefix()}.logical_delete_enum_exclusion_process_status_`,\n style: {\n width: \"100px\"\n },\n tooltip: this.getColumnStatusTooltip,\n badgeConfigs: [\n {\n enumValue: EnumExclusionProcessStatus.ERROR,\n color: EnumBadgeColors.RED\n },\n {\n enumValue: EnumExclusionProcessStatus.PENDING,\n color: EnumBadgeColors.YELLOW\n },\n {\n enumValue: EnumExclusionProcessStatus.PROCESSING,\n color: EnumBadgeColors.BLUE\n },\n {\n enumValue: EnumExclusionProcessStatus.SUCCESS,\n color: EnumBadgeColors.GREEN\n }\n ]\n },\n {\n field: \"startDate\",\n attributes: [\"startDate\"],\n header: this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_start`),\n type: EnumColumnFieldType.DATE,\n dateFormat: \"DD/MM/YYYY HH:mm:ss\",\n style: {\n width: \"100px\"\n }\n },\n {\n field: \"finishDate\",\n attributes: [\"finishDate\"],\n header: this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_finish`),\n type: EnumColumnFieldType.DATE,\n dateFormat: \"DD/MM/YYYY HH:mm:ss\",\n style: {\n width: \"100px\"\n }\n }\n ];\n }\n\n private getColumnStatusTooltip(rowValue: ExclusionProcess) {\n if (rowValue.errorMessage) {\n return rowValue.errorMessage;\n }\n\n return null;\n }\n\n private getFilterFields() {\n const translationPrefix = this.projectConfigs.getTranslationPrefix();\n\n return [\n new FormField({\n type: FieldType.String,\n name: \"description\",\n label: this.translate.instant(`${translationPrefix}.logical_delete_description`)\n }),\n new FormField({\n type: FieldType.Enum,\n name: \"status\",\n label: this.translate.instant(`${translationPrefix}.logical_delete_status`),\n placeholder: this.translate.instant(`${translationPrefix}.logical_delete_status`),\n multiple: true,\n options: [\n {\n label: this.translate.instant(`${translationPrefix}.logical_delete_enum_exclusion_process_status_error`),\n value: EnumExclusionProcessStatus.ERROR\n },\n {\n label: this.translate.instant(`${translationPrefix}.logical_delete_enum_exclusion_process_status_pending`),\n value: EnumExclusionProcessStatus.PENDING\n },\n {\n label: this.translate.instant(`${translationPrefix}.logical_delete_enum_exclusion_process_status_processing`),\n value: EnumExclusionProcessStatus.PROCESSING\n },\n {\n label: this.translate.instant(`${translationPrefix}.logical_delete_enum_exclusion_process_status_success`),\n value: EnumExclusionProcessStatus.SUCCESS\n }\n ]\n }),\n new FormField({\n type: FieldType.Date,\n name: \"startDate\",\n label: this.translate.instant(`${translationPrefix}.logical_delete_start`)\n }),\n\n new FormField({\n type: FieldType.Date,\n name: \"endDate\",\n label: this.translate.instant(`${translationPrefix}.logical_delete_finish`)\n })\n ];\n }\n\n public getEmptyStateTitle() {\n return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_empty_state_title`);\n }\n\n public getEmptyStateDescription() {\n return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_empty_state_description`);\n }\n\n public getTitle() {\n return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_list_title`);\n }\n\n public getDetailsButtonTitle() {\n return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_details`);\n }\n\n public getFiltersTitle() {\n return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.filters`);\n }\n\n public getFilterButtonTitle() {\n return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.filter`);\n }\n\n public getClearButtonTitle() {\n return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.clear`);\n }\n\n public getErrorInvalid() {\n return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.error_invalid`);\n }\n\n public getErrorServerTitle() {\n return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.error_server_title`);\n }\n\n public getErrorServerDescription() {\n return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.error_server_description`);\n }\n\n public getActionsColumnLabel() {\n return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.actions`);\n }\n\n public onSearch() {\n const filterData = this.filterFormGroup.getRawValue();\n this.filtersPanelCollapsed = true;\n this.resetGrid({ filterData });\n }\n\n public onClear() {\n this.filterFormGroup.reset();\n const filterData = this.filterFormGroup.getRawValue();\n this.resetGrid({ filterData });\n }\n\n public onRemoveToken(token: IToken) {\n this.filterFormGroup.get(token.id).setValue(undefined);\n const filterData = this.filterFormGroup.getRawValue();\n this.resetGrid({ filterData });\n }\n\n public onGridChange(event: LazyLoadEvent) {\n const size = event.rows;\n const page = event.first / size;\n const sort = event.multiSortMeta ? event.multiSortMeta : [];\n return this.updateGrid({ page, size, sort });\n }\n\n private getFilterTokens() {\n const filterData = this.filterFormGroup.value;\n\n return this.filterFields\n .filter(({ name }) => filterData[name] !== undefined && filterData[name] !== \"\" && filterData[name] !== null)\n .map(formField => this.filterService.createFilterTokens(formField, filterData[formField.name]));\n }\n\n private getFilterQuery(): string {\n const { filterData } = this.currentListParams;\n const dateFields = [\"startDate\", \"endDate\"];\n\n let filterQuery = this.filterFields\n .filter(({ name }) => !dateFields.includes(name))\n .filter(({ name }) => filterData[name] !== undefined && filterData[name] !== \"\" && filterData[name] !== null)\n .map(formField => this.filterService.createFilterString(formField, filterData[formField.name]))\n .join(\" and \");\n\n let dateQuery: string;\n if (filterData.startDate && filterData.endDate) {\n const startDate = moment(filterData.startDate).format(ExclusionsListComponent.DATE_FORMAT);\n const endDate = moment(filterData.endDate).format(ExclusionsListComponent.DATE_FORMAT);\n dateQuery = `startDate between '${startDate}T00:00:00Z' and '${endDate}T23:59:59Z'`;\n } else if (filterData.startDate) {\n const startDate = moment(filterData.startDate).format(ExclusionsListComponent.DATE_FORMAT);\n dateQuery = `startDate >= '${startDate}T00:00:00Z'`;\n } else if (filterData.endDate) {\n const endDate = moment(filterData.endDate).format(ExclusionsListComponent.DATE_FORMAT);\n dateQuery = `finishDate <= '${endDate}T23:59:59Z'`;\n } else {\n // Não é necessário nenhuma condição a mais no filtro.\n }\n\n if (dateQuery) {\n filterQuery += filterQuery ? ` and ${dateQuery}` : dateQuery;\n }\n\n return filterQuery;\n }\n\n private updateGrid(listParams: ListParams = {}) {\n this.currentListParams = { ...this.currentListParams, ...listParams };\n const { page, size, sort } = this.currentListParams;\n\n this.searchTokens = this.getFilterTokens();\n const filterQuery = this.getFilterQuery();\n const displayFields = [\n \"recordId\",\n \"errorMessage\",\n ...this.gridColumns.map(column => column.field)\n ];\n\n if (!sort.length) {\n sort.push({ field: 'startDate', order: -1 });\n }\n\n this.listExclusions({ page, size, sort, filterQuery, displayFields });\n }\n\n public listExclusions(params: any) {\n this.showLoader = true;\n this.serverError = false;\n\n this.changeDetectorRef.detectChanges();\n\n this.logicalDeleteService\n .listExclusions(this.entityName, params)\n .pipe(\n takeUntil(this.ngUnsubscribe),\n catchError((err: any) => {\n if (err.status >= HTTP_CODE_SERVER_ERROR_START && err.status < HTTP_CODE_SERVER_ERROR_END) {\n this.serverError = true;\n }\n throw err;\n }),\n finalize(() => this.showLoader = false)\n )\n .subscribe((list: any) => {\n this.gridData = list.contents;\n this.totalRecords = list.totalElements;\n });\n }\n\n public focusInput(elementId: string) {\n const element: any = document.getElementById(`${elementId}`);\n if (element) {\n element.focus();\n }\n }\n\n public resetGrid(listParams?: ListParams) {\n if (listParams) {\n this.currentListParams = { ...this.currentListParams, ...listParams };\n }\n this.currentListParams = { ...this.currentListParams, page: 0, sort: [] };\n this.table.reset();\n }\n\n public onClickDetails(rowData: ExclusionProcess) {\n this.exclusionDetailsComponent.showDetails({\n processId: rowData.id,\n entityDescription: this.entityDescription,\n entityName: this.entityName\n });\n }\n}\n","import { NgModule, Injectable, Component } from \"@angular/core\";\nimport { RouterModule, Routes, CanActivate } from \"@angular/router\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { PermissionsService } from \"@seniorsistemas/platform-components\";\nimport { LocaleService } from \"@seniorsistemas/angular-components\";\nimport { ExclusionsListComponent } from \"./exclusions-list.component\";\nimport { LogicalDeleteConfigService } from \"../services/logical-delete-config.service\";\n\n@Injectable()\nexport class ExclusionsListFeatureRoutingGuard implements CanActivate {\n public canActivate() {\n return true;\n }\n}\n\n@Injectable()\nexport class ExclusionsListFeatureRoutingListTitleResolver {\n constructor(\n private readonly translate: TranslateService,\n private readonly projectConfigs: LogicalDeleteConfigService\n ) {}\n\n public resolve() {\n return this.translate.get(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_list_title`);\n }\n}\n\n@Injectable()\nexport class ExclusionsListFeatureRoutingPermissionResolver {\n constructor(private readonly permissionsService: PermissionsService) {}\n\n public resolve() {\n return this.permissionsService.get();\n }\n}\n\n@Injectable()\nexport class ExclusionsListFeatureRoutingLocaleResolver {\n constructor(private readonly localeService: LocaleService) {}\n\n public resolve() {\n return this.localeService.get();\n }\n}\n\n@Component({\n template: `<router-outlet></router-outlet>`\n})\nexport class EmptyComponent {}\n\nexport const routes: Routes = [\n {\n path: \"exclusions-list\",\n component: EmptyComponent,\n canActivate: [\n ExclusionsListFeatureRoutingGuard\n ],\n resolve: {\n allPermissions: ExclusionsListFeatureRoutingPermissionResolver,\n localeConfig: ExclusionsListFeatureRoutingLocaleResolver,\n routeTitle: ExclusionsListFeatureRoutingListTitleResolver\n },\n children: [\n {\n path: \"\",\n component: ExclusionsListComponent\n }\n ]\n }\n];\n\n@NgModule({\n imports: [\n RouterModule.forChild(routes)\n ],\n exports: [\n RouterModule\n ],\n providers: [\n ExclusionsListFeatureRoutingGuard,\n ExclusionsListFeatureRoutingPermissionResolver,\n ExclusionsListFeatureRoutingLocaleResolver,\n ExclusionsListFeatureRoutingListTitleResolver\n ],\n declarations: [\n EmptyComponent\n ]\n})\nexport class ExclusionsListFeatureRouting {}\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { PanelModule } from \"primeng/panel\";\nimport { TableModule as PrimeTableModule } from \"primeng/table\";\nimport {\n ButtonModule,\n LoadingStateModule,\n TableModule,\n LocaleModule,\n TokenListModule,\n DynamicFormModule,\n EmptyStateModule,\n ControlErrorsModule,\n InfoSignModule\n} from \"@seniorsistemas/angular-components\";\nimport { ExclusionsListComponent } from \"./exclusions-list.component\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { DialogModule } from \"primeng/dialog\";\nimport { ConfirmDialogModule } from \"primeng/confirmdialog\";\nimport { InputTextModule } from \"primeng/inputtext\";\nimport { ExclusionDetailsModule } from \"../exclusion-details\";\nimport { ExclusionsListFeatureRouting } from \"./exclusions-list.routing\";\n\n@NgModule({\n imports: [\n FormsModule,\n ReactiveFormsModule,\n TranslateModule,\n CommonModule,\n ControlErrorsModule,\n ButtonModule,\n PanelModule,\n InputTextModule,\n InfoSignModule,\n ConfirmDialogModule,\n DialogModule,\n PrimeTableModule,\n TableModule,\n LoadingStateModule,\n EmptyStateModule,\n DynamicFormModule,\n TokenListModule,\n LocaleModule.forChild(),\n ExclusionDetailsModule,\n ExclusionsListFeatureRouting\n ],\n declarations: [ExclusionsListComponent],\n exports: [ExclusionsListComponent],\n entryComponents: [ExclusionsListComponent]\n})\nexport class ExclusionsListModule {}\n","import { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { ProjectConfigs, ProjectConfigsInjectionToken } from \"./models/project-config\";\nimport { FilterService } from \"./services/filter.service\";\nimport { LogicalDeleteConfigService } from \"./services/logical-delete-config.service\";\nimport { LogicalDeleteService } from \"./services/logical-delete.service\";\n\n@NgModule({\n providers: [LogicalDeleteService, LogicalDeleteConfigService, FilterService]\n})\nexport class LogicalDeleteModule {\n static forRoot(config: ProjectConfigs): ModuleWithProviders<LogicalDeleteModule> {\n return {\n ngModule: LogicalDeleteModule,\n providers: [\n {\n provide: ProjectConfigsInjectionToken,\n useValue: config\n }\n ]\n };\n }\n}\n"]}
1
+ {"version":3,"sources":["../../node_modules/tslib/tslib.es6.js","ng://@seniorsistemas/exclusion-process-component/enums/enum-exclusion-process-status.ts","ng://@seniorsistemas/exclusion-process-component/models/project-config.ts","ng://@seniorsistemas/exclusion-process-component/services/logical-delete-config.service.ts","ng://@seniorsistemas/exclusion-process-component/services/logical-delete.service.ts","ng://@seniorsistemas/exclusion-process-component/exclusion-details/exclusion-details.component.ts","ng://@seniorsistemas/exclusion-process-component/exclusion-details/exclusion-details.module.ts","ng://@seniorsistemas/exclusion-process-component/services/filter.service.ts","ng://@seniorsistemas/exclusion-process-component/exclusions-list/exclusions-list.component.ts","ng://@seniorsistemas/exclusion-process-component/exclusions-list/exclusions-list.routing.ts","ng://@seniorsistemas/exclusion-process-component/exclusions-list/exclusions-list.module.ts","ng://@seniorsistemas/exclusion-process-component/logical-delete.module.ts"],"names":["EnumExclusionProcessStatus","__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__decorate","decorators","target","key","desc","d","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__read","o","m","Symbol","iterator","e","ar","next","done","push","value","error","__spread","concat","ProjectConfigsInjectionToken","InjectionToken","LogicalDeleteConfigService","projectConfigs","paramIndex","decorator","getDomain","domain","getService","service","getTranslationPrefix","translationPrefix","Inject","args","Injectable","LogicalDeleteService","http","messageService","translate","entityUrl","exclusionProcessUrl","defaultCatch","bind","_this","catchError","err","summary","status","String","detail","_a","message","statusText","prefix","instant","add","severity","throwError","getListQueryParams","listParams","page","_b","size","_c","sort","_d","filterQuery","_e","displayFields","params","HttpParams","append","map","order","field","join","getProcessDetails","id","doGetProcessDetails","filter","offset","getLatestProcessDetails","recordId","orderby","filterParams","get","pipe","contents","mapExclusionsDates","exclusionProcess","startDate","moment","toDate","finishDate","groups","group","steps","step","listExclusions","entityName","HttpClient","MessageService","TranslateService","ExclusionDetailsComponent","router","route","logicalDeleteService","_entityName","_isVisible","_isLoading","_processSummaryData","_processSummaryColumns","ngUnsubscribe","Subject","ngOnInit","data","takeUntil","subscribe","locale","localeConfig","getSummaryColumns","ngOnDestroy","complete","disconnectWebSocket","showDetails","details","_exclusionDetails","processDetails","entityDescription","loadProcessDetails","connectWebSocket","onVisibilityChanged","event","closeDetails","openExclusions","navigate","queryParams","getRecordDescription","description","getInicialDate","format","getFinishDate","isFinished","getShowExclusionsButtonLabel","getCloseButtonLabel","getSummaryLabel","getStartDateLabel","getFinishDateLabel","getSidebarTitle","getEmptyStateTitle","getEmptyStateDescription","attributes","header","type","EnumColumnFieldType","STRING","style","width","ENUM","enumPrefix","tooltip","getColumnStatusTooltip","badgeConfigs","enumValue","ERROR","color","EnumBadgeColors","RED","PENDING","YELLOW","PROCESSING","BLUE","SUCCESS","GREEN","rowValue","errorMessage","processId","finalize","process","loadProcessSummary","sortByDate","getTime","sortGroupsByStartDate","a","b","sortStepsByStartDate","stepLogs","forEach","_exclusionProcessStatusChangedSubscribe","unsubscribe","_websocketService","disconnect","WebsocketService","onConnect","startListeningWebhookEvents","onError","console","onEvent","primitive","pid","Router","ActivatedRoute","Output","Component","selector","template","encapsulation","ViewEncapsulation","None","ExclusionDetailsModule","NgModule","imports","CommonModule","SidebarModule","ButtonModule","PanelModule","PrimeTableModule","TableModule","LoadingStateModule","LocaleModule","EmptyStateModule","declarations","exports","entryComponents","FilterService","logicalDeleteConfigService","numberTypes","FieldType","Integer","Double","getEnumQuery","name","multiple","selected","createFilterString","formField","Date","Time","DateTime","LocalDateTime","Enum","replace","Lookup","createFilterTokens","label","searchFields","options","labelValue","getProp","Array","isArray","element","en","option","Boolean","getSuggestionValue","ownerEntity","separator","reduce","acc","val","obj","path","split","result","prop","undefined","getLabelValueRequest","item","isValidFilter","isTypeNumber","includes","isNumber","match","ExclusionsListComponent","formBuilder","changeDetectorRef","filterService","cdr","currentListParams","filterData","showLoader","totalRecords","filtersPanelCollapsed","searchTokens","serverError","filterFormGroup","getFormBuilder","filterFields","getFilterFields","gridColumns","getGridColumns","ngAfterViewInit","exclusionDetailsComponent","detectChanges","Validators","compose","disabled","endDate","DATE","dateFormat","FormField","placeholder","getTitle","getDetailsButtonTitle","getFiltersTitle","getFilterButtonTitle","getClearButtonTitle","getErrorInvalid","getErrorServerTitle","getErrorServerDescription","getActionsColumnLabel","onSearch","getRawValue","resetGrid","onClear","reset","onRemoveToken","token","setValue","onGridChange","rows","first","multiSortMeta","updateGrid","getFilterTokens","getFilterQuery","dateQuery","dateFields","ExclusionsListComponent_1","DATE_FORMAT","column","list","gridData","totalElements","focusInput","elementId","document","getElementById","focus","table","onClickDetails","rowData","FormBuilder","ChangeDetectorRef","ViewChild","providers","ExclusionsListFeatureRoutingGuard","canActivate","ExclusionsListFeatureRoutingListTitleResolver","resolve","ExclusionsListFeatureRoutingPermissionResolver","permissionsService","PermissionsService","ExclusionsListFeatureRoutingLocaleResolver","localeService","LocaleService","EmptyComponent","routes","component","allPermissions","routeTitle","children","ExclusionsListFeatureRouting","RouterModule","forChild","ExclusionsListModule","FormsModule","ReactiveFormsModule","TranslateModule","ControlErrorsModule","InputTextModule","InfoSignModule","ConfirmDialogModule","DialogModule","DynamicFormModule","TokenListModule","LogicalDeleteModule","forRoot","config","ngModule","LogicalDeleteModule_1","provide","useValue"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export enum EnumExclusionProcessStatus {\n PENDING = \"PENDING\",\n PROCESSING = \"PROCESSING\",\n ERROR = \"ERROR\",\n SUCCESS = \"SUCCESS\"\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const ProjectConfigsInjectionToken = new InjectionToken<ProjectConfigs>(\"projectConfigs\");\n\nexport interface ProjectConfigs {\n domain: string;\n service: string;\n translationPrefix?: string;\n}\n","import { Inject, Injectable } from \"@angular/core\";\nimport { ProjectConfigs, ProjectConfigsInjectionToken } from \"../models/project-config\";\n\n@Injectable()\nexport class LogicalDeleteConfigService {\n constructor(\n @Inject(ProjectConfigsInjectionToken)\n private readonly projectConfigs: ProjectConfigs) {\n }\n\n public getDomain() {\n return this.projectConfigs.domain;\n }\n\n public getService() {\n return this.projectConfigs.service;\n }\n\n public getTranslationPrefix() {\n if (this.projectConfigs.translationPrefix) {\n return this.projectConfigs.translationPrefix;\n }\n return `${this.projectConfigs.domain}.${this.projectConfigs.service}`;\n }\n}\n","import * as moment from \"moment\";\nimport { HttpClient, HttpParams } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { MessageService } from \"primeng/api\";\nimport { Observable, throwError } from \"rxjs\";\nimport { catchError, map } from \"rxjs/operators\";\nimport { ListResult, ExclusionProcess } from \"../models/index\";\nimport { LogicalDeleteConfigService } from \"./logical-delete-config.service\";\nimport { ListParams } from \"../models/list-params\";\n\nconst HTTP_UNAUTHORIZED_CODE = 401;\nconst DEFAULT_PAGE_SIZE = 10;\n\n@Injectable()\nexport class LogicalDeleteService {\n private readonly exclusionProcessUrl: string;\n\n constructor(\n private readonly http: HttpClient,\n private readonly messageService: MessageService,\n private readonly translate: TranslateService,\n private readonly projectConfigs: LogicalDeleteConfigService) {\n\n const entityUrl = `${projectConfigs.getDomain()}/${projectConfigs.getService()}`;\n this.exclusionProcessUrl = `${entityUrl}/entities/exclusionProcess`;\n this.defaultCatch = this.defaultCatch.bind(this);\n }\n\n public defaultCatch() {\n return catchError<any, any>((err: any) => {\n if (err) {\n let summary = err.status ? String(err.status) : \"Error\";\n let detail = err.error?.message || err.statusText || err.message;\n\n if (err.status === HTTP_UNAUTHORIZED_CODE) {\n const prefix = this.projectConfigs.getTranslationPrefix();\n summary = this.translate.instant(`${prefix}.error_unauthorized_title`);\n detail = this.translate.instant(`${prefix}.error_unauthorized_description`);\n }\n\n this.messageService.add({\n severity: \"error\",\n summary,\n detail: detail || \"Error\"\n });\n }\n\n return throwError(err);\n });\n }\n\n public getListQueryParams(listParams: ListParams) {\n const { page = 0, size = DEFAULT_PAGE_SIZE, sort = [], filterQuery = \"\", displayFields = [] } = listParams;\n\n let params = new HttpParams();\n params = params.append(\"size\", String(size));\n params = params.append(\"offset\", String(page));\n\n if (sort && sort.length) {\n params = params.append(\n \"orderby\",\n sort\n .map(s => {\n if (s.order === -1) {\n return `${s.field} desc`;\n }\n\n return `${s.field} asc`;\n })\n .join(\", \")\n );\n }\n\n if (filterQuery) {\n params = params.append(\"filter\", filterQuery);\n }\n\n if (displayFields && displayFields.length) {\n params = params.append(\"displayfields\", displayFields.join());\n }\n\n return params;\n }\n\n public getProcessDetails(id: string): Observable<ExclusionProcess> {\n return this.doGetProcessDetails({\n filter: `id eq '${id}'`,\n size: \"1\",\n offset: \"0\",\n });\n }\n\n public getLatestProcessDetails(recordId: string): Observable<ExclusionProcess> {\n return this.doGetProcessDetails({\n filter: `recordId eq '${recordId}'`,\n size: \"1\",\n offset: \"0\",\n orderby: \"startDate desc\"\n });\n }\n\n private doGetProcessDetails(filterParams: HttpParams | {\n [param: string]: string | string[];\n }): Observable<ExclusionProcess> {\n return this.http.get<ListResult<ExclusionProcess>>(this.exclusionProcessUrl, { params: filterParams })\n .pipe<ListResult<ExclusionProcess>>(this.defaultCatch())\n .pipe(map(value => {\n if (!value.contents?.length) {\n return null;\n }\n return this.mapExclusionsDates(value.contents[0]);\n }));\n }\n\n private mapExclusionsDates(exclusionProcess: ExclusionProcess) {\n return {\n ...exclusionProcess,\n startDate: exclusionProcess.startDate ? moment(exclusionProcess.startDate).toDate() : null,\n finishDate: exclusionProcess.finishDate ? moment(exclusionProcess.finishDate).toDate() : null,\n groups: exclusionProcess.groups?.map(group => ({\n ...group,\n startDate: group.startDate ? moment(group.startDate).toDate() : null,\n finishDate: group.finishDate ? moment(group.finishDate).toDate() : null,\n steps: group.steps?.map(step => ({\n ...step,\n startDate: step.startDate ? moment(step.startDate).toDate() : null,\n finishDate: step.finishDate ? moment(step.finishDate).toDate() : null,\n }))\n }))\n };\n }\n\n public listExclusions(entityName: string, params: ListParams = {}): Observable<ListResult<ExclusionProcess>> {\n if (params.filterQuery) {\n params.filterQuery += ` and lower(entityName) eq lower('${entityName}')`;\n } else {\n params.filterQuery = `lower(entityName) eq lower('${entityName}')`;\n }\n\n return this.http.get<ListResult<ExclusionProcess>>(this.exclusionProcessUrl, { params: this.getListQueryParams(params) })\n .pipe<ListResult<ExclusionProcess>>(this.defaultCatch())\n .pipe<ListResult<ExclusionProcess>>(map(value => {\n value.contents = value.contents.map(this.mapExclusionsDates);\n return value;\n }));\n }\n}\n","import * as moment from \"moment\";\nimport { Component, Output, ViewEncapsulation, OnInit, OnDestroy } from \"@angular/core\";\nimport { ActivatedRoute, Router } from \"@angular/router\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { Subject, Subscription } from \"rxjs\";\nimport { finalize, takeUntil } from \"rxjs/operators\";\nimport { EnumBadgeColors, EnumColumnFieldType, TableColumnLocaleOptions } from \"@seniorsistemas/angular-components\";\nimport { WebsocketService } from \"@senior-gestao-empresarial/angular-components\";\nimport { EnumExclusionProcessStatus } from \"../enums/enum-exclusion-process-status\";\nimport { ExclusionDetails } from \"./protocols/exclusion-details\";\nimport { LogicalDeleteService } from \"../services/logical-delete.service\";\nimport { ExclusionProcess, ExclusionProcessStep, ExclusionProcessStepGroup } from \"../models/index\";\nimport { LogicalDeleteConfigService } from \"../services/logical-delete-config.service\";\nimport { ShowDetailsInformation } from \"./protocols\";\nimport { ExclusionProcessStatusChanged } from \"./protocols/exclusion-process-status-changed\";\nimport { WebsocketEventData } from \"./protocols/web-socket-event-data\";\n\n@Component({\n selector: \"s-exclusion-details\",\n templateUrl: \"./exclusion-details.component.html\",\n styleUrls: [\"./exclusion-details.component.scss\"],\n encapsulation: ViewEncapsulation.None\n})\nexport class ExclusionDetailsComponent implements OnInit, OnDestroy {\n public locale!: TableColumnLocaleOptions;\n\n @Output()\n get isVisible(): boolean {\n return this._isVisible;\n }\n\n @Output()\n get isLoading(): boolean {\n return this._isLoading;\n }\n\n @Output()\n get processSummaryData(): ExclusionDetails[] {\n return this._processSummaryData;\n }\n\n @Output()\n get processSummaryColumns(): any[] {\n return this._processSummaryColumns;\n }\n\n @Output()\n public processDetails: ExclusionProcess;\n\n @Output()\n public entityDescription: string;\n\n private _entityName = \"\";\n private _isVisible = false;\n private _isLoading = false;\n private _processSummaryData: ExclusionDetails[] = [];\n private _processSummaryColumns: any[] = [];\n private _websocketService: WebsocketService;\n private _exclusionProcessStatusChangedSubscribe: Subscription;\n private _exclusionDetails: ShowDetailsInformation;\n private readonly ngUnsubscribe = new Subject();\n\n constructor(\n private readonly router: Router,\n private readonly route: ActivatedRoute,\n private readonly translate: TranslateService,\n private readonly logicalDeleteService: LogicalDeleteService,\n private readonly projectConfigs: LogicalDeleteConfigService\n ) {\n }\n\n ngOnInit(): void {\n this.route.data\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((data: { [configs: string]: any, localeConfig: TableColumnLocaleOptions }) => {\n this.locale = data.localeConfig;\n });\n this._processSummaryColumns = this.getSummaryColumns();\n }\n\n public ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n\n this.disconnectWebSocket();\n }\n\n public showDetails(details: ShowDetailsInformation) {\n this._exclusionDetails = details;\n this._entityName = details.entityName;\n this._isVisible = true;\n this._processSummaryData = [];\n\n this.processDetails = null;\n this.entityDescription = details.entityDescription;\n\n this.loadProcessDetails(details);\n\n this.connectWebSocket();\n }\n\n public onVisibilityChanged(event: any) {\n this.closeDetails();\n }\n\n public closeDetails() {\n this._isVisible = false;\n this._exclusionDetails = null;\n this._processSummaryData = [];\n this.disconnectWebSocket();\n }\n\n public openExclusions() {\n this.closeDetails();\n this.router.navigate(\n [this._entityName, \"exclusions-list\"],\n {\n queryParams: {\n entityName: this._entityName,\n entityDescription: this.entityDescription\n }\n }\n );\n }\n\n public getRecordDescription() {\n if (!this.processDetails?.description) {\n return \"\";\n }\n\n return this.processDetails.description;\n }\n\n public getInicialDate() {\n if (!this.processDetails?.startDate) {\n return \"\";\n }\n\n return moment(this.processDetails.startDate).format(\"DD/MM/YYYY HH:mm:ss\");\n }\n\n public getFinishDate() {\n if (!this.processDetails?.finishDate) {\n return \"\";\n }\n\n return moment(this.processDetails.finishDate).format(\"DD/MM/YYYY HH:mm:ss\");\n }\n\n public isFinished() {\n return !!this.processDetails?.finishDate;\n }\n\n public getShowExclusionsButtonLabel() {\n return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_show_deletions`);\n }\n\n public getCloseButtonLabel() {\n return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_close`);\n }\n\n public getSummaryLabel() {\n return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_summary`);\n }\n\n public getStartDateLabel() {\n return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_start`);\n }\n\n public getFinishDateLabel() {\n return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_finish`);\n }\n\n public getSidebarTitle() {\n return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_details_title`);\n }\n\n public getEmptyStateTitle() {\n return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_empty_state_title`);\n }\n\n public getEmptyStateDescription() {\n return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_empty_state_description`);\n }\n\n private getSummaryColumns() {\n return [\n {\n field: \"description\",\n attributes: [\"description\"],\n header: this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_description`),\n type: EnumColumnFieldType.STRING,\n style: {\n width: \"300px\"\n }\n },\n {\n field: \"status\",\n attributes: [\"status\"],\n header: this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_status`),\n type: EnumColumnFieldType.ENUM,\n enumPrefix: `${this.projectConfigs.getTranslationPrefix()}.logical_delete_enum_exclusion_process_status_`,\n style: {\n width: \"100px\"\n },\n tooltip: this.getColumnStatusTooltip,\n badgeConfigs: [\n {\n enumValue: EnumExclusionProcessStatus.ERROR,\n color: EnumBadgeColors.RED\n },\n {\n enumValue: EnumExclusionProcessStatus.PENDING,\n color: EnumBadgeColors.YELLOW\n },\n {\n enumValue: EnumExclusionProcessStatus.PROCESSING,\n color: EnumBadgeColors.BLUE\n },\n {\n enumValue: EnumExclusionProcessStatus.SUCCESS,\n color: EnumBadgeColors.GREEN\n }\n ]\n }\n ];\n }\n\n private getColumnStatusTooltip(rowValue: ExclusionDetails) {\n if (rowValue.errorMessage) {\n return rowValue.errorMessage;\n }\n\n return null;\n }\n\n private loadProcessDetails(details: ShowDetailsInformation) {\n this._isLoading = true;\n\n const processObservable = details.processId\n ? this.logicalDeleteService.getProcessDetails(details.processId)\n : this.logicalDeleteService.getLatestProcessDetails(details.recordId);\n\n processObservable\n .pipe(takeUntil(this.ngUnsubscribe))\n .pipe(finalize(() => this._isLoading = false))\n .subscribe((process: ExclusionProcess) => {\n if (!process) {\n return;\n }\n\n this.processDetails = process;\n this.loadProcessSummary(process);\n });\n }\n\n private sortByDate(startDate: Date, finishDate: Date) {\n if (startDate.getTime() > finishDate.getTime()) {\n return 1;\n }\n if (startDate.getTime() < finishDate.getTime()) {\n return -1;\n }\n return 0;\n }\n\n private sortGroupsByStartDate(groups: ExclusionProcessStepGroup[]) {\n return groups.sort((a, b) => this.sortByDate(a.startDate, b.finishDate));\n }\n\n private sortStepsByStartDate(steps: ExclusionProcessStep[]) {\n return steps.sort((a, b) => this.sortByDate(a.startDate, b.finishDate));\n }\n\n private loadProcessSummary(process: ExclusionProcess) {\n const stepLogs: ExclusionDetails[] = [];\n\n this.sortGroupsByStartDate(process.groups)\n .forEach(group => {\n const steps = this.sortStepsByStartDate(group.steps)\n .map(step => ({\n description: step.description,\n status: step.status,\n errorMessage: step.errorMessage\n } as ExclusionDetails));\n\n stepLogs.push(...steps);\n });\n\n this._processSummaryData = stepLogs;\n }\n\n private disconnectWebSocket() {\n if (this._exclusionProcessStatusChangedSubscribe) {\n this._exclusionProcessStatusChangedSubscribe.unsubscribe();\n this._exclusionProcessStatusChangedSubscribe = null;\n }\n\n if (this._websocketService) {\n this._websocketService.disconnect();\n this._websocketService = null;\n }\n }\n\n private connectWebSocket() {\n if (this._websocketService) {\n this.disconnectWebSocket();\n }\n\n this._websocketService = new WebsocketService();\n this._websocketService\n .onConnect()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n this.startListeningWebhookEvents();\n });\n }\n\n private startListeningWebhookEvents() {\n this._websocketService\n .onError()\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((data: any) => {\n console.error('onError', data);\n });\n\n this._exclusionProcessStatusChangedSubscribe = this._websocketService\n .onEvent<WebsocketEventData<ExclusionProcessStatusChanged>>({\n domain: this.projectConfigs.getDomain(),\n service: this.projectConfigs.getService(),\n primitive: \"exclusionProcessStatusChanged\"\n })\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((event: WebsocketEventData<ExclusionProcessStatusChanged>) => {\n const { data } = event;\n\n if (this._exclusionDetails.processId && data.pid === this._exclusionDetails.processId) {\n this.loadProcessDetails(this._exclusionDetails);\n return;\n }\n\n if (this._exclusionDetails.recordId && data.recordId === this._exclusionDetails.recordId) {\n this.loadProcessDetails(this._exclusionDetails);\n }\n });\n }\n}\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { PanelModule } from \"primeng/panel\";\nimport { TableModule as PrimeTableModule } from \"primeng/table\";\nimport {\n ButtonModule,\n LoadingStateModule,\n TableModule,\n SidebarModule,\n LocaleModule,\n EmptyStateModule\n} from \"@seniorsistemas/angular-components\";\nimport { ExclusionDetailsComponent } from \"./exclusion-details.component\";\n\n@NgModule({\n imports: [\n CommonModule,\n SidebarModule,\n ButtonModule,\n PanelModule,\n PrimeTableModule,\n TableModule,\n LoadingStateModule,\n LocaleModule,\n EmptyStateModule\n ],\n declarations: [ExclusionDetailsComponent],\n exports: [ExclusionDetailsComponent],\n entryComponents: [ExclusionDetailsComponent]\n})\nexport class ExclusionDetailsModule {}\n","import * as moment from \"moment\";\nimport { Injectable } from \"@angular/core\";\nimport { FieldType, FormField, Option } from \"@seniorsistemas/angular-components\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { LogicalDeleteConfigService } from \"./logical-delete-config.service\";\n\n@Injectable()\nexport class FilterService {\n private readonly numberTypes = [FieldType.Integer, FieldType.Double];\n\n constructor(\n private readonly logicalDeleteConfigService: LogicalDeleteConfigService,\n private readonly translate: TranslateService\n ) {}\n\n getEnumQuery(name: string, value: any, multiple: boolean = false) {\n if (multiple) {\n const filter = value.map((selected: any) => `${name} eq '${selected}'`).join(\" or \");\n return `(${filter})`;\n }\n return `${name} eq '${value}'`;\n }\n\n createFilterString(formField: FormField, value: any) {\n const { name, type, multiple } = formField;\n if (typeof value == \"number\") {\n return `${name} eq ${value}`;\n }\n\n switch (type) {\n case FieldType.Date:\n return `${name} eq '${moment(value).format(\"YYYY-MM-DD\")}'`;\n case FieldType.Time:\n return `${name} eq '${moment(value).format(\"HH:mm:ss\")}'`;\n case FieldType.DateTime:\n return `${name} eq '${moment(value).format()}'`;\n case FieldType.LocalDateTime:\n return `${name} eq '${moment(value).format(\"YYYY-MM-DD[T]HH:mm:ss.SSS\")}'`;\n case FieldType.Enum:\n return this.getEnumQuery(name, value, multiple);\n case FieldType.String:\n return `containing(upper(${name}), upper('${value.replace(/'/g, \"'\")}'))`;\n case FieldType.Lookup:\n return `${name} eq '${value.id}'`;\n default:\n return `${name} eq '${value}'`;\n }\n }\n\n createFilterTokens(formField: FormField, value: any) {\n const { name, type, label, searchFields, options } = formField as any;\n let labelValue = value;\n\n switch (type) {\n case FieldType.Date:\n labelValue = moment(value).format(\"L\");\n break;\n case FieldType.Time:\n labelValue = moment(value).format(\"LTS\");\n break;\n case FieldType.LocalDateTime:\n case FieldType.DateTime:\n labelValue = moment(value).format(\"L LTS\");\n break;\n case FieldType.Lookup:\n labelValue = searchFields.map((field: FormField) => this.getProp(value, field.name)).join(\" - \");\n break;\n case FieldType.Enum:\n if (Array.isArray(value)) {\n labelValue = value.map((element: string) => {\n return options.filter((en: any) => en.value === element)[0].label;\n });\n } else {\n labelValue = options.filter((option: Option) => option.value === labelValue)[0].label;\n }\n break;\n case FieldType.Boolean:\n labelValue = value\n ? this.translate.instant(`${this.logicalDeleteConfigService.getTranslationPrefix()}.list_grid_boolean_true`)\n : this.translate.instant(`${this.logicalDeleteConfigService.getTranslationPrefix()}.list_grid_boolean_false`);\n break;\n default:\n labelValue = value;\n break;\n }\n\n return { id: name, label: `${label}: ${labelValue}` };\n }\n\n getSuggestionValue(displayFields: string[], ownerEntity: string, value: any, separator: string) {\n return displayFields.map(field => this.getProp(value, `${ownerEntity}.${field}`))\n .reduce((acc: any, val: any) => `${acc}${separator}${val}`) + \"\";\n }\n\n getProp(obj: any, path: any) {\n return path.split(\".\").reduce((result: any, prop: any) => (result[prop] === undefined ? \"\" : result[prop]), obj);\n }\n\n getLabelValueRequest(contents: any[], displayFields: any[]) {\n return contents.map((item: any) => ({\n ...item,\n label: displayFields.map(field => this.getProp(item, field)).join(\" - \")\n }));\n }\n\n isValidFilter(type: FieldType, value: any) {\n const isTypeNumber = this.numberTypes.includes(type);\n const numberPattern = /^\\d+\\b$/;\n const isNumber = value.match(numberPattern);\n return !(isTypeNumber && !isNumber);\n }\n}\n","import * as moment from \"moment\";\nimport { AfterViewInit, ChangeDetectorRef, Component, OnDestroy, OnInit, ViewChild } from \"@angular/core\";\nimport { FormBuilder, FormGroup, Validators } from \"@angular/forms\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { LazyLoadEvent } from \"primeng/api\";\nimport { Subject } from \"rxjs\";\nimport { catchError, finalize, takeUntil } from \"rxjs/operators\";\nimport {\n EnumBadgeColors,\n EnumColumnFieldType,\n FieldType,\n FormField,\n IToken,\n TableColumnLocaleOptions\n} from \"@seniorsistemas/angular-components\";\nimport { EnumExclusionProcessStatus } from \"../enums/enum-exclusion-process-status\";\nimport { ExclusionProcess } from \"../models\";\nimport { Table } from \"primeng/table\";\nimport { LogicalDeleteService } from \"../services\";\nimport { ActivatedRoute } from \"@angular/router\";\nimport { ListParams } from \"../models/list-params\";\nimport { LogicalDeleteConfigService } from \"../services/logical-delete-config.service\";\nimport { ExclusionDetailsComponent } from \"../exclusion-details\";\nimport { FilterService } from \"../services/filter.service\";\n\nconst HTTP_CODE_SERVER_ERROR_START = 500;\nconst HTTP_CODE_SERVER_ERROR_END = 600;\n\n@Component({\n templateUrl: \"./exclusions-list.component.html\",\n styleUrls: [],\n providers: []\n})\nexport class ExclusionsListComponent implements OnInit, OnDestroy, AfterViewInit {\n\n private static readonly DATE_FORMAT = \"YYYY-MM-DD\";\n\n public locale!: TableColumnLocaleOptions;\n public entityName: string;\n public entityDescription: string;\n public processId: string;\n\n public currentListParams: ListParams = { page: 0, size: 10, sort: [], filterData: {} };\n public gridData: ExclusionProcess[];\n public gridColumns: any[];\n public showLoader = false;\n public totalRecords = 0;\n\n public filterFields: FormField[];\n public filterFormGroup: FormGroup;\n public filtersPanelCollapsed = true;\n public searchTokens: IToken[] = [];\n public serverError = false;\n\n @ViewChild(\"exclusionsTable\")\n public table: Table;\n\n @ViewChild(ExclusionDetailsComponent)\n public exclusionDetailsComponent: ExclusionDetailsComponent;\n\n private readonly ngUnsubscribe = new Subject();\n\n constructor(\n private readonly route: ActivatedRoute,\n private readonly translate: TranslateService,\n private readonly formBuilder: FormBuilder,\n private readonly changeDetectorRef: ChangeDetectorRef,\n private readonly logicalDeleteService: LogicalDeleteService,\n private readonly filterService: FilterService,\n private readonly projectConfigs: LogicalDeleteConfigService,\n private readonly cdr: ChangeDetectorRef,\n ) {\n }\n\n public ngOnInit() {\n this.filterFormGroup = this.getFormBuilder();\n this.filterFields = this.getFilterFields();\n this.gridColumns = this.getGridColumns();\n\n this.route.data\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((data: { [configs: string]: any, localeConfig: TableColumnLocaleOptions }) => {\n this.locale = data.localeConfig;\n });\n this.route.queryParams\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((queryParams: any) => {\n this.entityName = queryParams.entityName;\n this.entityDescription = queryParams.entityDescription;\n this.processId = queryParams.processId;\n });\n }\n\n public ngAfterViewInit() {\n if (this.entityName && this.entityDescription && this.processId) {\n this.exclusionDetailsComponent.showDetails({\n processId: this.processId,\n entityDescription: this.entityDescription,\n entityName: this.entityName\n });\n this.cdr.detectChanges();\n }\n }\n\n public ngOnDestroy() {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n }\n\n private getFormBuilder() {\n return this.formBuilder.group({\n description: [undefined, Validators.compose([])],\n status: [undefined, Validators.compose([])],\n startDate: [{ value: undefined, disabled: false }, Validators.compose([])],\n endDate: [{ value: undefined, disabled: false }, Validators.compose([])]\n });\n }\n\n private getGridColumns() {\n return [\n {\n field: \"description\",\n attributes: [\"description\"],\n header: this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_description`),\n type: EnumColumnFieldType.STRING,\n style: {\n width: \"300px\"\n }\n },\n {\n field: \"status\",\n attributes: [\"status\"],\n header: this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_status`),\n type: EnumColumnFieldType.ENUM,\n enumPrefix: `${this.projectConfigs.getTranslationPrefix()}.logical_delete_enum_exclusion_process_status_`,\n style: {\n width: \"100px\"\n },\n tooltip: this.getColumnStatusTooltip,\n badgeConfigs: [\n {\n enumValue: EnumExclusionProcessStatus.ERROR,\n color: EnumBadgeColors.RED\n },\n {\n enumValue: EnumExclusionProcessStatus.PENDING,\n color: EnumBadgeColors.YELLOW\n },\n {\n enumValue: EnumExclusionProcessStatus.PROCESSING,\n color: EnumBadgeColors.BLUE\n },\n {\n enumValue: EnumExclusionProcessStatus.SUCCESS,\n color: EnumBadgeColors.GREEN\n }\n ]\n },\n {\n field: \"startDate\",\n attributes: [\"startDate\"],\n header: this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_start`),\n type: EnumColumnFieldType.DATE,\n dateFormat: \"DD/MM/YYYY HH:mm:ss\",\n style: {\n width: \"100px\"\n }\n },\n {\n field: \"finishDate\",\n attributes: [\"finishDate\"],\n header: this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_finish`),\n type: EnumColumnFieldType.DATE,\n dateFormat: \"DD/MM/YYYY HH:mm:ss\",\n style: {\n width: \"100px\"\n }\n }\n ];\n }\n\n private getColumnStatusTooltip(rowValue: ExclusionProcess) {\n if (rowValue.errorMessage) {\n return rowValue.errorMessage;\n }\n\n return null;\n }\n\n private getFilterFields() {\n const translationPrefix = this.projectConfigs.getTranslationPrefix();\n\n return [\n new FormField({\n type: FieldType.String,\n name: \"description\",\n label: this.translate.instant(`${translationPrefix}.logical_delete_description`)\n }),\n new FormField({\n type: FieldType.Enum,\n name: \"status\",\n label: this.translate.instant(`${translationPrefix}.logical_delete_status`),\n placeholder: this.translate.instant(`${translationPrefix}.logical_delete_status`),\n multiple: true,\n options: [\n {\n label: this.translate.instant(`${translationPrefix}.logical_delete_enum_exclusion_process_status_error`),\n value: EnumExclusionProcessStatus.ERROR\n },\n {\n label: this.translate.instant(`${translationPrefix}.logical_delete_enum_exclusion_process_status_pending`),\n value: EnumExclusionProcessStatus.PENDING\n },\n {\n label: this.translate.instant(`${translationPrefix}.logical_delete_enum_exclusion_process_status_processing`),\n value: EnumExclusionProcessStatus.PROCESSING\n },\n {\n label: this.translate.instant(`${translationPrefix}.logical_delete_enum_exclusion_process_status_success`),\n value: EnumExclusionProcessStatus.SUCCESS\n }\n ]\n }),\n new FormField({\n type: FieldType.Date,\n name: \"startDate\",\n label: this.translate.instant(`${translationPrefix}.logical_delete_start`)\n }),\n\n new FormField({\n type: FieldType.Date,\n name: \"endDate\",\n label: this.translate.instant(`${translationPrefix}.logical_delete_finish`)\n })\n ];\n }\n\n public getEmptyStateTitle() {\n return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_empty_state_title`);\n }\n\n public getEmptyStateDescription() {\n return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_empty_state_description`);\n }\n\n public getTitle() {\n return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_list_title`);\n }\n\n public getDetailsButtonTitle() {\n return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_details`);\n }\n\n public getFiltersTitle() {\n return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.filters`);\n }\n\n public getFilterButtonTitle() {\n return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.filter`);\n }\n\n public getClearButtonTitle() {\n return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.clear`);\n }\n\n public getErrorInvalid() {\n return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.error_invalid`);\n }\n\n public getErrorServerTitle() {\n return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.error_server_title`);\n }\n\n public getErrorServerDescription() {\n return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.error_server_description`);\n }\n\n public getActionsColumnLabel() {\n return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.actions`);\n }\n\n public onSearch() {\n const filterData = this.filterFormGroup.getRawValue();\n this.filtersPanelCollapsed = true;\n this.resetGrid({ filterData });\n }\n\n public onClear() {\n this.filterFormGroup.reset();\n const filterData = this.filterFormGroup.getRawValue();\n this.resetGrid({ filterData });\n }\n\n public onRemoveToken(token: IToken) {\n this.filterFormGroup.get(token.id).setValue(undefined);\n const filterData = this.filterFormGroup.getRawValue();\n this.resetGrid({ filterData });\n }\n\n public onGridChange(event: LazyLoadEvent) {\n const size = event.rows;\n const page = event.first / size;\n const sort = event.multiSortMeta ? event.multiSortMeta : [];\n return this.updateGrid({ page, size, sort });\n }\n\n private getFilterTokens() {\n const filterData = this.filterFormGroup.value;\n\n return this.filterFields\n .filter(({ name }) => filterData[name] !== undefined && filterData[name] !== \"\" && filterData[name] !== null)\n .map(formField => this.filterService.createFilterTokens(formField, filterData[formField.name]));\n }\n\n private getFilterQuery(): string {\n const { filterData } = this.currentListParams;\n const dateFields = [\"startDate\", \"endDate\"];\n\n let filterQuery = this.filterFields\n .filter(({ name }) => !dateFields.includes(name))\n .filter(({ name }) => filterData[name] !== undefined && filterData[name] !== \"\" && filterData[name] !== null)\n .map(formField => this.filterService.createFilterString(formField, filterData[formField.name]))\n .join(\" and \");\n\n let dateQuery: string;\n if (filterData.startDate && filterData.endDate) {\n const startDate = moment(filterData.startDate).format(ExclusionsListComponent.DATE_FORMAT);\n const endDate = moment(filterData.endDate).format(ExclusionsListComponent.DATE_FORMAT);\n dateQuery = `startDate between '${startDate}T00:00:00Z' and '${endDate}T23:59:59Z'`;\n } else if (filterData.startDate) {\n const startDate = moment(filterData.startDate).format(ExclusionsListComponent.DATE_FORMAT);\n dateQuery = `startDate >= '${startDate}T00:00:00Z'`;\n } else if (filterData.endDate) {\n const endDate = moment(filterData.endDate).format(ExclusionsListComponent.DATE_FORMAT);\n dateQuery = `finishDate <= '${endDate}T23:59:59Z'`;\n } else {\n // Não é necessário nenhuma condição a mais no filtro.\n }\n\n if (dateQuery) {\n filterQuery += filterQuery ? ` and ${dateQuery}` : dateQuery;\n }\n\n return filterQuery;\n }\n\n private updateGrid(listParams: ListParams = {}) {\n this.currentListParams = { ...this.currentListParams, ...listParams };\n const { page, size, sort } = this.currentListParams;\n\n this.searchTokens = this.getFilterTokens();\n const filterQuery = this.getFilterQuery();\n const displayFields = [\n \"recordId\",\n \"errorMessage\",\n ...this.gridColumns.map(column => column.field)\n ];\n\n if (!sort.length) {\n sort.push({ field: 'startDate', order: -1 });\n }\n\n this.listExclusions({ page, size, sort, filterQuery, displayFields });\n }\n\n public listExclusions(params: any) {\n this.showLoader = true;\n this.serverError = false;\n\n this.changeDetectorRef.detectChanges();\n\n this.logicalDeleteService\n .listExclusions(this.entityName, params)\n .pipe(\n takeUntil(this.ngUnsubscribe),\n catchError((err: any) => {\n if (err.status >= HTTP_CODE_SERVER_ERROR_START && err.status < HTTP_CODE_SERVER_ERROR_END) {\n this.serverError = true;\n }\n throw err;\n }),\n finalize(() => this.showLoader = false)\n )\n .subscribe((list: any) => {\n this.gridData = list.contents;\n this.totalRecords = list.totalElements;\n });\n }\n\n public focusInput(elementId: string) {\n const element: any = document.getElementById(`${elementId}`);\n if (element) {\n element.focus();\n }\n }\n\n public resetGrid(listParams?: ListParams) {\n if (listParams) {\n this.currentListParams = { ...this.currentListParams, ...listParams };\n }\n this.currentListParams = { ...this.currentListParams, page: 0, sort: [] };\n this.table.reset();\n }\n\n public onClickDetails(rowData: ExclusionProcess) {\n this.exclusionDetailsComponent.showDetails({\n processId: rowData.id,\n entityDescription: this.entityDescription,\n entityName: this.entityName\n });\n }\n}\n","import { NgModule, Injectable, Component } from \"@angular/core\";\nimport { RouterModule, Routes, CanActivate } from \"@angular/router\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { PermissionsService } from \"@seniorsistemas/platform-components\";\nimport { LocaleService } from \"@seniorsistemas/angular-components\";\nimport { ExclusionsListComponent } from \"./exclusions-list.component\";\nimport { LogicalDeleteConfigService } from \"../services/logical-delete-config.service\";\n\n@Injectable()\nexport class ExclusionsListFeatureRoutingGuard implements CanActivate {\n public canActivate() {\n return true;\n }\n}\n\n@Injectable()\nexport class ExclusionsListFeatureRoutingListTitleResolver {\n constructor(\n private readonly translate: TranslateService,\n private readonly projectConfigs: LogicalDeleteConfigService\n ) {}\n\n public resolve() {\n return this.translate.get(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_list_title`);\n }\n}\n\n@Injectable()\nexport class ExclusionsListFeatureRoutingPermissionResolver {\n constructor(private readonly permissionsService: PermissionsService) {}\n\n public resolve() {\n return this.permissionsService.get();\n }\n}\n\n@Injectable()\nexport class ExclusionsListFeatureRoutingLocaleResolver {\n constructor(private readonly localeService: LocaleService) {}\n\n public resolve() {\n return this.localeService.get();\n }\n}\n\n@Component({\n template: `<router-outlet></router-outlet>`\n})\nexport class EmptyComponent {}\n\nexport const routes: Routes = [\n {\n path: \"exclusions-list\",\n component: EmptyComponent,\n canActivate: [\n ExclusionsListFeatureRoutingGuard\n ],\n resolve: {\n allPermissions: ExclusionsListFeatureRoutingPermissionResolver,\n localeConfig: ExclusionsListFeatureRoutingLocaleResolver,\n routeTitle: ExclusionsListFeatureRoutingListTitleResolver\n },\n children: [\n {\n path: \"\",\n component: ExclusionsListComponent\n }\n ]\n }\n];\n\n@NgModule({\n imports: [\n RouterModule.forChild(routes)\n ],\n exports: [\n RouterModule\n ],\n providers: [\n ExclusionsListFeatureRoutingGuard,\n ExclusionsListFeatureRoutingPermissionResolver,\n ExclusionsListFeatureRoutingLocaleResolver,\n ExclusionsListFeatureRoutingListTitleResolver\n ],\n declarations: [\n EmptyComponent\n ]\n})\nexport class ExclusionsListFeatureRouting {}\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { PanelModule } from \"primeng/panel\";\nimport { TableModule as PrimeTableModule } from \"primeng/table\";\nimport {\n ButtonModule,\n LoadingStateModule,\n TableModule,\n LocaleModule,\n TokenListModule,\n DynamicFormModule,\n EmptyStateModule,\n ControlErrorsModule,\n InfoSignModule\n} from \"@seniorsistemas/angular-components\";\nimport { ExclusionsListComponent } from \"./exclusions-list.component\";\nimport { TranslateModule } from \"@ngx-translate/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { DialogModule } from \"primeng/dialog\";\nimport { ConfirmDialogModule } from \"primeng/confirmdialog\";\nimport { InputTextModule } from \"primeng/inputtext\";\nimport { ExclusionDetailsModule } from \"../exclusion-details\";\nimport { ExclusionsListFeatureRouting } from \"./exclusions-list.routing\";\n\n@NgModule({\n imports: [\n FormsModule,\n ReactiveFormsModule,\n TranslateModule,\n CommonModule,\n ControlErrorsModule,\n ButtonModule,\n PanelModule,\n InputTextModule,\n InfoSignModule,\n ConfirmDialogModule,\n DialogModule,\n PrimeTableModule,\n TableModule,\n LoadingStateModule,\n EmptyStateModule,\n DynamicFormModule,\n TokenListModule,\n LocaleModule.forChild(),\n ExclusionDetailsModule,\n ExclusionsListFeatureRouting\n ],\n declarations: [ExclusionsListComponent],\n exports: [ExclusionsListComponent],\n entryComponents: [ExclusionsListComponent]\n})\nexport class ExclusionsListModule {}\n","import { ModuleWithProviders, NgModule } from \"@angular/core\";\nimport { ProjectConfigs, ProjectConfigsInjectionToken } from \"./models/project-config\";\nimport { FilterService } from \"./services/filter.service\";\nimport { LogicalDeleteConfigService } from \"./services/logical-delete-config.service\";\nimport { LogicalDeleteService } from \"./services/logical-delete.service\";\n\n@NgModule({\n providers: [LogicalDeleteService, LogicalDeleteConfigService, FilterService]\n})\nexport class LogicalDeleteModule {\n static forRoot(config: ProjectConfigs): ModuleWithProviders<LogicalDeleteModule> {\n return {\n ngModule: LogicalDeleteModule,\n providers: [\n {\n provide: ProjectConfigsInjectionToken,\n useValue: config\n }\n ]\n };\n }\n}\n"]}
@@ -70,8 +70,9 @@ let ExclusionDetailsComponent = class ExclusionDetailsComponent {
70
70
  }
71
71
  openExclusions() {
72
72
  this.closeDetails();
73
- this.router.navigate(["exclusions-list", this._entityName], {
73
+ this.router.navigate([this._entityName, "exclusions-list"], {
74
74
  queryParams: {
75
+ entityName: this._entityName,
75
76
  entityDescription: this.entityDescription
76
77
  }
77
78
  });
@@ -300,4 +301,4 @@ ExclusionDetailsComponent = __decorate([
300
301
  })
301
302
  ], ExclusionDetailsComponent);
302
303
  export { ExclusionDetailsComponent };
303
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjbHVzaW9uLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2V4Y2x1c2lvbi1wcm9jZXNzLWNvbXBvbmVudC8iLCJzb3VyY2VzIjpbImV4Y2x1c2lvbi1kZXRhaWxzL2V4Y2x1c2lvbi1kZXRhaWxzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUE0QixNQUFNLG9DQUFvQyxDQUFDO0FBQ3BILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRXBGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRTFFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBV3ZGLElBQWEseUJBQXlCLEdBQXRDLE1BQWEseUJBQXlCO0lBdUNsQyxZQUNxQixNQUFjLEVBQ2QsS0FBcUIsRUFDckIsU0FBMkIsRUFDM0Isb0JBQTBDLEVBQzFDLGNBQTBDO1FBSjFDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixjQUFTLEdB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LEtBQUssSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRTtnQkFDdEYsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2FBQ25EO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0NBQ0osQ0FBQTs7WUExUmdDLE1BQU07WUFDUCxjQUFjO1lBQ1YsZ0JBQWdCO1lBQ0wsb0JBQW9CO1lBQzFCLDBCQUEwQjs7QUF4Qy9EO0lBREMsTUFBTSxFQUFFOzBEQUdSO0FBR0Q7SUFEQyxNQUFNLEVBQUU7MERBR1I7QUFHRDtJQURDLE1BQU0sRUFBRTttRUFHUjtBQUdEO0lBREMsTUFBTSxFQUFFO3NFQUdSO0FBR0Q7SUFEQyxNQUFNLEVBQUU7aUVBQytCO0FBR3hDO0lBREMsTUFBTSxFQUFFO29FQUN3QjtBQTNCeEIseUJBQXlCO0lBTnJDLFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSxxQkFBcUI7UUFDL0IsdTFIQUFpRDtRQUVqRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTs7S0FDeEMsQ0FBQztHQUNXLHlCQUF5QixDQWtVckM7U0FsVVkseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcbmltcG9ydCB7IENvbXBvbmVudCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiwgT25Jbml0LCBPbkRlc3Ryb3kgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IGZpbmFsaXplLCB0YWtlVW50aWwgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7IEVudW1CYWRnZUNvbG9ycywgRW51bUNvbHVtbkZpZWxkVHlwZSwgVGFibGVDb2x1bW5Mb2NhbGVPcHRpb25zIH0gZnJvbSBcIkBzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHNcIjtcbmltcG9ydCB7IFdlYnNvY2tldFNlcnZpY2UgfSBmcm9tIFwiQHNlbmlvci1nZXN0YW8tZW1wcmVzYXJpYWwvYW5ndWxhci1jb21wb25lbnRzXCI7XG5pbXBvcnQgeyBFbnVtRXhjbHVzaW9uUHJvY2Vzc1N0YXR1cyB9IGZyb20gXCIuLi9lbnVtcy9lbnVtLWV4Y2x1c2lvbi1wcm9jZXNzLXN0YXR1c1wiO1xuaW1wb3J0IHsgRXhjbHVzaW9uRGV0YWlscyB9IGZyb20gXCIuL3Byb3RvY29scy9leGNsdXNpb24tZGV0YWlsc1wiO1xuaW1wb3J0IHsgTG9naWNhbERlbGV0ZVNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvbG9naWNhbC1kZWxldGUuc2VydmljZVwiO1xuaW1wb3J0IHsgRXhjbHVzaW9uUHJvY2VzcywgRXhjbHVzaW9uUHJvY2Vzc1N0ZXAsIEV4Y2x1c2lvblByb2Nlc3NTdGVwR3JvdXAgfSBmcm9tIFwiLi4vbW9kZWxzL2luZGV4XCI7XG5pbXBvcnQgeyBMb2dpY2FsRGVsZXRlQ29uZmlnU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9sb2dpY2FsLWRlbGV0ZS1jb25maWcuc2VydmljZVwiO1xuaW1wb3J0IHsgU2hvd0RldGFpbHNJbmZvcm1hdGlvbiB9IGZyb20gXCIuL3Byb3RvY29sc1wiO1xuaW1wb3J0IHsgRXhjbHVzaW9uUHJvY2Vzc1N0YXR1c0NoYW5nZWQgfSBmcm9tIFwiLi9wcm90b2NvbHMvZXhjbHVzaW9uLXByb2Nlc3Mtc3RhdHVzLWNoYW5nZWRcIjtcbmltcG9ydCB7IFdlYnNvY2tldEV2ZW50RGF0YSB9IGZyb20gXCIuL3Byb3RvY29scy93ZWItc29ja2V0LWV2ZW50LWRhdGFcIjtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwicy1leGNsdXNpb24tZGV0YWlsc1wiLFxuICAgIHRlbXBsYXRlVXJsOiBcIi4vZXhjbHVzaW9uLWRldGFpbHMuY29tcG9uZW50Lmh0bWxcIixcbiAgICBzdHlsZVVybHM6IFtcIi4vZXhjbHVzaW9uLWRldGFpbHMuY29tcG9uZW50LnNjc3NcIl0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBFeGNsdXNpb25EZXRhaWxzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIHB1YmxpYyBsb2NhbGUhOiBUYWJsZUNvbHVtbkxvY2FsZU9wdGlvbnM7XG5cbiAgICBAT3V0cHV0KClcbiAgICBnZXQgaXNWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNWaXNpYmxlO1xuICAgIH1cblxuICAgIEBPdXRwdXQoKVxuICAgIGdldCBpc0xvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0xvYWRpbmc7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpXG4gICAgZ2V0IHByb2Nlc3NTdW1tYXJ5RGF0YSgpOiBFeGNsdXNpb25EZXRhaWxzW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJvY2Vzc1N1bW1hcnlEYXRhO1xuICAgIH1cblxuICAgIEBPdXRwdXQoKVxuICAgIGdldCBwcm9jZXNzU3VtbWFyeUNvbHVtbnMoKTogYW55W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJvY2Vzc1N1bW1hcnlDb2x1bW5zO1xuICAgIH1cblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBwcm9jZXNzRGV0YWlsczogRXhjbHVzaW9uUHJvY2VzcztcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBlbnRpdHlEZXNjcmlwdGlvbjogc3RyaW5nO1xuXG4gICAgcHJpdmF0ZSBfZW50aXR5TmFtZSA9IFwiXCI7XG4gICAgcHJpdmF0ZSBfaXNWaXNpYmxlID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfcHJvY2Vzc1N1bW1hcnlEYXRhOiBFeGNsdXNpb25EZXRhaWxzW10gPSBbXTtcbiAgICBwcml2YXRlIF9wcm9jZXNzU3VtbWFyeUNvbHVtbnM6IGFueVtdID0gW107XG4gICAgcHJpdmF0ZSBfd2Vic29ja2V0U2VydmljZTogV2Vic29ja2V0U2VydmljZTtcbiAgICBwcml2YXRlIF9leGNsdXNpb25Qcm9jZXNzU3RhdHVzQ2hhbmdlZFN1YnNjcmliZTogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgX2V4Y2x1c2lvbkRldGFpbHM6IFNob3dEZXRhaWxzSW5mb3JtYXRpb247XG4gICAgcHJpdmF0ZSByZWFkb25seSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbG9naWNhbERlbGV0ZVNlcnZpY2U6IExvZ2ljYWxEZWxldGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHByb2plY3RDb25maWdzOiBMb2dpY2FsRGVsZXRlQ29uZmlnU2VydmljZVxuICAgICkge1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJvdXRlLmRhdGFcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZGF0YTogeyBbY29uZmlnczogc3RyaW5nXTogYW55LCBsb2NhbGVDb25maWc6IFRhYmxlQ29sdW1uTG9jYWxlT3B0aW9ucyB9KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhbGUgPSBkYXRhLmxvY2FsZUNvbmZpZztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9wcm9jZXNzU3VtbWFyeUNvbHVtbnMgPSB0aGlzLmdldFN1bW1hcnlDb2x1bW5zKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcblxuICAgICAgICB0aGlzLmRpc2Nvbm5lY3RXZWJTb2NrZXQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2hvd0RldGFpbHMoZGV0YWlsczogU2hvd0RldGFpbHNJbmZvcm1hdGlvbikge1xuICAgICAgICB0aGlzLl9leGNsdXNpb25EZXRhaWxzID0gZGV0YWlscztcbiAgICAgICAgdGhpcy5fZW50aXR5TmFtZSA9IGRldGFpbHMuZW50aXR5TmFtZTtcbiAgICAgICAgdGhpcy5faXNWaXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fcHJvY2Vzc1N1bW1hcnlEYXRhID0gW107XG5cbiAgICAgICAgdGhpcy5wcm9jZXNzRGV0YWlscyA9IG51bGw7XG4gICAgICAgIHRoaXMuZW50aXR5RGVzY3JpcHRpb24gPSBkZXRhaWxzLmVudGl0eURlc2NyaXB0aW9uO1xuXG4gICAgICAgIHRoaXMubG9hZFByb2Nlc3NEZXRhaWxzKGRldGFpbHMpO1xuXG4gICAgICAgIHRoaXMuY29ubmVjdFdlYlNvY2tldCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblZpc2liaWxpdHlDaGFuZ2VkKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgdGhpcy5jbG9zZURldGFpbHMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xvc2VEZXRhaWxzKCkge1xuICAgICAgICB0aGlzLl9pc1Zpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fZXhjbHVzaW9uRGV0YWlscyA9IG51bGw7XG4gICAgICAgIHRoaXMuX3Byb2Nlc3NTdW1tYXJ5RGF0YSA9IFtdO1xuICAgICAgICB0aGlzLmRpc2Nvbm5lY3RXZWJTb2NrZXQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3BlbkV4Y2x1c2lvbnMoKSB7XG4gICAgICAgIHRoaXMuY2xvc2VEZXRhaWxzKCk7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFxuICAgICAgICAgICAgW1wiZXhjbHVzaW9ucy1saXN0XCIsIHRoaXMuX2VudGl0eU5hbWVdLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgIGVudGl0eURlc2NyaXB0aW9uOiB0aGlzLmVudGl0eURlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRSZWNvcmREZXNjcmlwdGlvbigpIHtcbiAgICAgICAgaWYgKCF0aGlzLnByb2Nlc3NEZXRhaWxzPy5kZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzRGV0YWlscy5kZXNjcmlwdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SW5pY2lhbERhdGUoKSB7XG4gICAgICAgIGlmICghdGhpcy5wcm9jZXNzRGV0YWlscz8uc3RhcnREYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBtb21lbnQodGhpcy5wcm9jZXNzRGV0YWlscy5zdGFydERhdGUpLmZvcm1hdChcIkREL01NL1lZWVkgSEg6bW06c3NcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZpbmlzaERhdGUoKSB7XG4gICAgICAgIGlmICghdGhpcy5wcm9jZXNzRGV0YWlscz8uZmluaXNoRGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbW9tZW50KHRoaXMucHJvY2Vzc0RldGFpbHMuZmluaXNoRGF0ZSkuZm9ybWF0KFwiREQvTU0vWVlZWSBISDptbTpzc1wiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNGaW5pc2hlZCgpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5wcm9jZXNzRGV0YWlscz8uZmluaXNoRGF0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U2hvd0V4Y2x1c2lvbnNCdXR0b25MYWJlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5sb2dpY2FsX2RlbGV0ZV9zaG93X2RlbGV0aW9uc2ApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDbG9zZUJ1dHRvbkxhYmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2Nsb3NlYCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFN1bW1hcnlMYWJlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5sb2dpY2FsX2RlbGV0ZV9zdW1tYXJ5YCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFN0YXJ0RGF0ZUxhYmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX3N0YXJ0YCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZpbmlzaERhdGVMYWJlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5sb2dpY2FsX2RlbGV0ZV9maW5pc2hgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U2lkZWJhclRpdGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2RldGFpbHNfdGl0bGVgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RW1wdHlTdGF0ZVRpdGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2VtcHR5X3N0YXRlX3RpdGxlYCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEVtcHR5U3RhdGVEZXNjcmlwdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5sb2dpY2FsX2RlbGV0ZV9lbXB0eV9zdGF0ZV9kZXNjcmlwdGlvbmApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U3VtbWFyeUNvbHVtbnMoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZmllbGQ6IFwiZGVzY3JpcHRpb25cIixcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiBbXCJkZXNjcmlwdGlvblwiXSxcbiAgICAgICAgICAgICAgICBoZWFkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5sb2dpY2FsX2RlbGV0ZV9kZXNjcmlwdGlvbmApLFxuICAgICAgICAgICAgICAgIHR5cGU6IEVudW1Db2x1bW5GaWVsZFR5cGUuU1RSSU5HLFxuICAgICAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBcIjMwMHB4XCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGZpZWxkOiBcInN0YXR1c1wiLFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IFtcInN0YXR1c1wiXSxcbiAgICAgICAgICAgICAgICBoZWFkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5sb2dpY2FsX2RlbGV0ZV9zdGF0dXNgKSxcbiAgICAgICAgICAgICAgICB0eXBlOiBFbnVtQ29sdW1uRmllbGRUeXBlLkVOVU0sXG4gICAgICAgICAgICAgICAgZW51bVByZWZpeDogYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5sb2dpY2FsX2RlbGV0ZV9lbnVtX2V4Y2x1c2lvbl9wcm9jZXNzX3N0YXR1c19gLFxuICAgICAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBcIjEwMHB4XCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHRvb2x0aXA6IHRoaXMuZ2V0Q29sdW1uU3RhdHVzVG9vbHRpcCxcbiAgICAgICAgICAgICAgICBiYWRnZUNvbmZpZ3M6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW51bVZhbHVlOiBFbnVtRXhjbHVzaW9uUHJvY2Vzc1N0YXR1cy5FUlJPUixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBFbnVtQmFkZ2VDb2xvcnMuUkVEXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudW1WYWx1ZTogRW51bUV4Y2x1c2lvblByb2Nlc3NTdGF0dXMuUEVORElORyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBFbnVtQmFkZ2VDb2xvcnMuWUVMTE9XXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudW1WYWx1ZTogRW51bUV4Y2x1c2lvblByb2Nlc3NTdGF0dXMuUFJPQ0VTU0lORyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBFbnVtQmFkZ2VDb2xvcnMuQkxVRVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnVtVmFsdWU6IEVudW1FeGNsdXNpb25Qcm9jZXNzU3RhdHVzLlNVQ0NFU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogRW51bUJhZGdlQ29sb3JzLkdSRUVOXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9XG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDb2x1bW5TdGF0dXNUb29sdGlwKHJvd1ZhbHVlOiBFeGNsdXNpb25EZXRhaWxzKSB7XG4gICAgICAgIGlmIChyb3dWYWx1ZS5lcnJvck1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHJldHVybiByb3dWYWx1ZS5lcnJvck1lc3NhZ2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWRQcm9jZXNzRGV0YWlscyhkZXRhaWxzOiBTaG93RGV0YWlsc0luZm9ybWF0aW9uKSB7XG4gICAgICAgIHRoaXMuX2lzTG9hZGluZyA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgcHJvY2Vzc09ic2VydmFibGUgPSBkZXRhaWxzLnByb2Nlc3NJZFxuICAgICAgICAgICAgPyB0aGlzLmxvZ2ljYWxEZWxldGVTZXJ2aWNlLmdldFByb2Nlc3NEZXRhaWxzKGRldGFpbHMucHJvY2Vzc0lkKVxuICAgICAgICAgICAgOiB0aGlzLmxvZ2ljYWxEZWxldGVTZXJ2aWNlLmdldExhdGVzdFByb2Nlc3NEZXRhaWxzKGRldGFpbHMucmVjb3JkSWQpO1xuXG4gICAgICAgIHByb2Nlc3NPYnNlcnZhYmxlXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHRoaXMuX2lzTG9hZGluZyA9IGZhbHNlKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHByb2Nlc3M6IEV4Y2x1c2lvblByb2Nlc3MpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXByb2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc0RldGFpbHMgPSBwcm9jZXNzO1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZFByb2Nlc3NTdW1tYXJ5KHByb2Nlc3MpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzb3J0QnlEYXRlKHN0YXJ0RGF0ZTogRGF0ZSwgZmluaXNoRGF0ZTogRGF0ZSkge1xuICAgICAgICBpZiAoc3RhcnREYXRlLmdldFRpbWUoKSA+IGZpbmlzaERhdGUuZ2V0VGltZSgpKSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhcnREYXRlLmdldFRpbWUoKSA8IGZpbmlzaERhdGUuZ2V0VGltZSgpKSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzb3J0R3JvdXBzQnlTdGFydERhdGUoZ3JvdXBzOiBFeGNsdXNpb25Qcm9jZXNzU3RlcEdyb3VwW10pIHtcbiAgICAgICAgcmV0dXJuIGdyb3Vwcy5zb3J0KChhLCBiKSA9PiB0aGlzLnNvcnRCeURhdGUoYS5zdGFydERhdGUsIGIuZmluaXNoRGF0ZSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc29ydFN0ZXBzQnlTdGFydERhdGUoc3RlcHM6IEV4Y2x1c2lvblByb2Nlc3NTdGVwW10pIHtcbiAgICAgICAgcmV0dXJuIHN0ZXBzLnNvcnQoKGEsIGIpID0+IHRoaXMuc29ydEJ5RGF0ZShhLnN0YXJ0RGF0ZSwgYi5maW5pc2hEYXRlKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkUHJvY2Vzc1N1bW1hcnkocHJvY2VzczogRXhjbHVzaW9uUHJvY2Vzcykge1xuICAgICAgICBjb25zdCBzdGVwTG9nczogRXhjbHVzaW9uRGV0YWlsc1tdID0gW107XG5cbiAgICAgICAgdGhpcy5zb3J0R3JvdXBzQnlTdGFydERhdGUocHJvY2Vzcy5ncm91cHMpXG4gICAgICAgICAgICAuZm9yRWFjaChncm91cCA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RlcHMgPSB0aGlzLnNvcnRTdGVwc0J5U3RhcnREYXRlKGdyb3VwLnN0ZXBzKVxuICAgICAgICAgICAgICAgICAgICAubWFwKHN0ZXAgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBzdGVwLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBzdGVwLnN0YXR1cyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZTogc3RlcC5lcnJvck1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgfSBhcyBFeGNsdXNpb25EZXRhaWxzKSk7XG5cbiAgICAgICAgICAgICAgICBzdGVwTG9ncy5wdXNoKC4uLnN0ZXBzKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3Byb2Nlc3NTdW1tYXJ5RGF0YSA9IHN0ZXBMb2dzO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGlzY29ubmVjdFdlYlNvY2tldCgpIHtcbiAgICAgICAgaWYgKHRoaXMuX2V4Y2x1c2lvblByb2Nlc3NTdGF0dXNDaGFuZ2VkU3Vic2NyaWJlKSB7XG4gICAgICAgICAgICB0aGlzLl9leGNsdXNpb25Qcm9jZXNzU3RhdHVzQ2hhbmdlZFN1YnNjcmliZS51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5fZXhjbHVzaW9uUHJvY2Vzc1N0YXR1c0NoYW5nZWRTdWJzY3JpYmUgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX3dlYnNvY2tldFNlcnZpY2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3dlYnNvY2tldFNlcnZpY2UuZGlzY29ubmVjdCgpO1xuICAgICAgICAgICAgdGhpcy5fd2Vic29ja2V0U2VydmljZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbm5lY3RXZWJTb2NrZXQoKSB7XG4gICAgICAgIGlmICh0aGlzLl93ZWJzb2NrZXRTZXJ2aWNlKSB7XG4gICAgICAgICAgICB0aGlzLmRpc2Nvbm5lY3RXZWJTb2NrZXQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3dlYnNvY2tldFNlcnZpY2UgPSBuZXcgV2Vic29ja2V0U2VydmljZSgpO1xuICAgICAgICB0aGlzLl93ZWJzb2NrZXRTZXJ2aWNlXG4gICAgICAgICAgICAub25Db25uZWN0KClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydExpc3RlbmluZ1dlYmhvb2tFdmVudHMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhcnRMaXN0ZW5pbmdXZWJob29rRXZlbnRzKCkge1xuICAgICAgICB0aGlzLl93ZWJzb2NrZXRTZXJ2aWNlXG4gICAgICAgICAgICAub25FcnJvcigpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ29uRXJyb3InLCBkYXRhKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2V4Y2x1c2lvblByb2Nlc3NTdGF0dXNDaGFuZ2VkU3Vic2NyaWJlID0gdGhpcy5fd2Vic29ja2V0U2VydmljZVxuICAgICAgICAgICAgLm9uRXZlbnQ8V2Vic29ja2V0RXZlbnREYXRhPEV4Y2x1c2lvblByb2Nlc3NTdGF0dXNDaGFuZ2VkPj4oe1xuICAgICAgICAgICAgICAgIGRvbWFpbjogdGhpcy5wcm9qZWN0Q29uZmlncy5nZXREb21haW4oKSxcbiAgICAgICAgICAgICAgICBzZXJ2aWNlOiB0aGlzLnByb2plY3RDb25maWdzLmdldFNlcnZpY2UoKSxcbiAgICAgICAgICAgICAgICBwcmltaXRpdmU6IFwiZXhjbHVzaW9uUHJvY2Vzc1N0YXR1c0NoYW5nZWRcIlxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IFdlYnNvY2tldEV2ZW50RGF0YTxFeGNsdXNpb25Qcm9jZXNzU3RhdHVzQ2hhbmdlZD4pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGRhdGEgfSA9IGV2ZW50O1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX2V4Y2x1c2lvbkRldGFpbHMucHJvY2Vzc0lkICYmIGRhdGEucGlkID09PSB0aGlzLl9leGNsdXNpb25EZXRhaWxzLnByb2Nlc3NJZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRQcm9jZXNzRGV0YWlscyh0aGlzLl9leGNsdXNpb25EZXRhaWxzKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9leGNsdXNpb25EZXRhaWxzLnJlY29yZElkICYmIGRhdGEucmVjb3JkSWQgPT09IHRoaXMuX2V4Y2x1c2lvbkRldGFpbHMucmVjb3JkSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkUHJvY2Vzc0RldGFpbHModGhpcy5fZXhjbHVzaW9uRGV0YWlscyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
304
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjbHVzaW9uLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2V4Y2x1c2lvbi1wcm9jZXNzLWNvbXBvbmVudC8iLCJzb3VyY2VzIjpbImV4Y2x1c2lvbi1kZXRhaWxzL2V4Y2x1c2lvbi1kZXRhaWxzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUE0QixNQUFNLG9DQUFvQyxDQUFDO0FBQ3BILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRXBGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRTFFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBV3ZGLElBQWEseUJBQXlCLEdBQXRDLE1BQWEseUJBQXlCO0lBdUNsQyxZQUNxQixNQUFjLEVBQ2QsS0FBcUIsRUFDckIsU0FBMkIsRUFDM0Isb0JBQTBDLEVBQzFDLGNBQTBDO1FBSjFDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixjQUFTLEdB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aUIsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFO2dCQUN0RixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7YUFDbkQ7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7Q0FDSixDQUFBOztZQTNSZ0MsTUFBTTtZQUNQLGNBQWM7WUFDVixnQkFBZ0I7WUFDTCxvQkFBb0I7WUFDMUIsMEJBQTBCOztBQXhDL0Q7SUFEQyxNQUFNLEVBQUU7MERBR1I7QUFHRDtJQURDLE1BQU0sRUFBRTswREFHUjtBQUdEO0lBREMsTUFBTSxFQUFFO21FQUdSO0FBR0Q7SUFEQyxNQUFNLEVBQUU7c0VBR1I7QUFHRDtJQURDLE1BQU0sRUFBRTtpRUFDK0I7QUFHeEM7SUFEQyxNQUFNLEVBQUU7b0VBQ3dCO0FBM0J4Qix5QkFBeUI7SUFOckMsU0FBUyxDQUFDO1FBQ1AsUUFBUSxFQUFFLHFCQUFxQjtRQUMvQix1MUhBQWlEO1FBRWpELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJOztLQUN4QyxDQUFDO0dBQ1cseUJBQXlCLENBbVVyQztTQW5VWSx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBtb21lbnQgZnJvbSBcIm1vbWVudFwiO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uLCBPbkluaXQsIE9uRGVzdHJveSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgZmluYWxpemUsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgRW51bUJhZGdlQ29sb3JzLCBFbnVtQ29sdW1uRmllbGRUeXBlLCBUYWJsZUNvbHVtbkxvY2FsZU9wdGlvbnMgfSBmcm9tIFwiQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50c1wiO1xuaW1wb3J0IHsgV2Vic29ja2V0U2VydmljZSB9IGZyb20gXCJAc2VuaW9yLWdlc3Rhby1lbXByZXNhcmlhbC9hbmd1bGFyLWNvbXBvbmVudHNcIjtcbmltcG9ydCB7IEVudW1FeGNsdXNpb25Qcm9jZXNzU3RhdHVzIH0gZnJvbSBcIi4uL2VudW1zL2VudW0tZXhjbHVzaW9uLXByb2Nlc3Mtc3RhdHVzXCI7XG5pbXBvcnQgeyBFeGNsdXNpb25EZXRhaWxzIH0gZnJvbSBcIi4vcHJvdG9jb2xzL2V4Y2x1c2lvbi1kZXRhaWxzXCI7XG5pbXBvcnQgeyBMb2dpY2FsRGVsZXRlU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9sb2dpY2FsLWRlbGV0ZS5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBFeGNsdXNpb25Qcm9jZXNzLCBFeGNsdXNpb25Qcm9jZXNzU3RlcCwgRXhjbHVzaW9uUHJvY2Vzc1N0ZXBHcm91cCB9IGZyb20gXCIuLi9tb2RlbHMvaW5kZXhcIjtcbmltcG9ydCB7IExvZ2ljYWxEZWxldGVDb25maWdTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL2xvZ2ljYWwtZGVsZXRlLWNvbmZpZy5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBTaG93RGV0YWlsc0luZm9ybWF0aW9uIH0gZnJvbSBcIi4vcHJvdG9jb2xzXCI7XG5pbXBvcnQgeyBFeGNsdXNpb25Qcm9jZXNzU3RhdHVzQ2hhbmdlZCB9IGZyb20gXCIuL3Byb3RvY29scy9leGNsdXNpb24tcHJvY2Vzcy1zdGF0dXMtY2hhbmdlZFwiO1xuaW1wb3J0IHsgV2Vic29ja2V0RXZlbnREYXRhIH0gZnJvbSBcIi4vcHJvdG9jb2xzL3dlYi1zb2NrZXQtZXZlbnQtZGF0YVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogXCJzLWV4Y2x1c2lvbi1kZXRhaWxzXCIsXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9leGNsdXNpb24tZGV0YWlscy5jb21wb25lbnQuaHRtbFwiLFxuICAgIHN0eWxlVXJsczogW1wiLi9leGNsdXNpb24tZGV0YWlscy5jb21wb25lbnQuc2Nzc1wiXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEV4Y2x1c2lvbkRldGFpbHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgcHVibGljIGxvY2FsZSE6IFRhYmxlQ29sdW1uTG9jYWxlT3B0aW9ucztcblxuICAgIEBPdXRwdXQoKVxuICAgIGdldCBpc1Zpc2libGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1Zpc2libGU7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpXG4gICAgZ2V0IGlzTG9hZGluZygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzTG9hZGluZztcbiAgICB9XG5cbiAgICBAT3V0cHV0KClcbiAgICBnZXQgcHJvY2Vzc1N1bW1hcnlEYXRhKCk6IEV4Y2x1c2lvbkRldGFpbHNbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcm9jZXNzU3VtbWFyeURhdGE7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpXG4gICAgZ2V0IHByb2Nlc3NTdW1tYXJ5Q29sdW1ucygpOiBhbnlbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcm9jZXNzU3VtbWFyeUNvbHVtbnM7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHByb2Nlc3NEZXRhaWxzOiBFeGNsdXNpb25Qcm9jZXNzO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGVudGl0eURlc2NyaXB0aW9uOiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIF9lbnRpdHlOYW1lID0gXCJcIjtcbiAgICBwcml2YXRlIF9pc1Zpc2libGUgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9wcm9jZXNzU3VtbWFyeURhdGE6IEV4Y2x1c2lvbkRldGFpbHNbXSA9IFtdO1xuICAgIHByaXZhdGUgX3Byb2Nlc3NTdW1tYXJ5Q29sdW1uczogYW55W10gPSBbXTtcbiAgICBwcml2YXRlIF93ZWJzb2NrZXRTZXJ2aWNlOiBXZWJzb2NrZXRTZXJ2aWNlO1xuICAgIHByaXZhdGUgX2V4Y2x1c2lvblByb2Nlc3NTdGF0dXNDaGFuZ2VkU3Vic2NyaWJlOiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBfZXhjbHVzaW9uRGV0YWlsczogU2hvd0RldGFpbHNJbmZvcm1hdGlvbjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBsb2dpY2FsRGVsZXRlU2VydmljZTogTG9naWNhbERlbGV0ZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvamVjdENvbmZpZ3M6IExvZ2ljYWxEZWxldGVDb25maWdTZXJ2aWNlXG4gICAgKSB7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucm91dGUuZGF0YVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChkYXRhOiB7IFtjb25maWdzOiBzdHJpbmddOiBhbnksIGxvY2FsZUNvbmZpZzogVGFibGVDb2x1bW5Mb2NhbGVPcHRpb25zIH0pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2FsZSA9IGRhdGEubG9jYWxlQ29uZmlnO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3Byb2Nlc3NTdW1tYXJ5Q29sdW1ucyA9IHRoaXMuZ2V0U3VtbWFyeUNvbHVtbnMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuXG4gICAgICAgIHRoaXMuZGlzY29ubmVjdFdlYlNvY2tldCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzaG93RGV0YWlscyhkZXRhaWxzOiBTaG93RGV0YWlsc0luZm9ybWF0aW9uKSB7XG4gICAgICAgIHRoaXMuX2V4Y2x1c2lvbkRldGFpbHMgPSBkZXRhaWxzO1xuICAgICAgICB0aGlzLl9lbnRpdHlOYW1lID0gZGV0YWlscy5lbnRpdHlOYW1lO1xuICAgICAgICB0aGlzLl9pc1Zpc2libGUgPSB0cnVlO1xuICAgICAgICB0aGlzLl9wcm9jZXNzU3VtbWFyeURhdGEgPSBbXTtcblxuICAgICAgICB0aGlzLnByb2Nlc3NEZXRhaWxzID0gbnVsbDtcbiAgICAgICAgdGhpcy5lbnRpdHlEZXNjcmlwdGlvbiA9IGRldGFpbHMuZW50aXR5RGVzY3JpcHRpb247XG5cbiAgICAgICAgdGhpcy5sb2FkUHJvY2Vzc0RldGFpbHMoZGV0YWlscyk7XG5cbiAgICAgICAgdGhpcy5jb25uZWN0V2ViU29ja2V0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uVmlzaWJpbGl0eUNoYW5nZWQoZXZlbnQ6IGFueSkge1xuICAgICAgICB0aGlzLmNsb3NlRGV0YWlscygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZURldGFpbHMoKSB7XG4gICAgICAgIHRoaXMuX2lzVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9leGNsdXNpb25EZXRhaWxzID0gbnVsbDtcbiAgICAgICAgdGhpcy5fcHJvY2Vzc1N1bW1hcnlEYXRhID0gW107XG4gICAgICAgIHRoaXMuZGlzY29ubmVjdFdlYlNvY2tldCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvcGVuRXhjbHVzaW9ucygpIHtcbiAgICAgICAgdGhpcy5jbG9zZURldGFpbHMoKTtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoXG4gICAgICAgICAgICBbdGhpcy5fZW50aXR5TmFtZSwgXCJleGNsdXNpb25zLWxpc3RcIl0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgZW50aXR5TmFtZTogdGhpcy5fZW50aXR5TmFtZSxcbiAgICAgICAgICAgICAgICAgICAgZW50aXR5RGVzY3JpcHRpb246IHRoaXMuZW50aXR5RGVzY3JpcHRpb25cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFJlY29yZERlc2NyaXB0aW9uKCkge1xuICAgICAgICBpZiAoIXRoaXMucHJvY2Vzc0RldGFpbHM/LmRlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NEZXRhaWxzLmRlc2NyaXB0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRJbmljaWFsRGF0ZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnByb2Nlc3NEZXRhaWxzPy5zdGFydERhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG1vbWVudCh0aGlzLnByb2Nlc3NEZXRhaWxzLnN0YXJ0RGF0ZSkuZm9ybWF0KFwiREQvTU0vWVlZWSBISDptbTpzc1wiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RmluaXNoRGF0ZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnByb2Nlc3NEZXRhaWxzPy5maW5pc2hEYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBtb21lbnQodGhpcy5wcm9jZXNzRGV0YWlscy5maW5pc2hEYXRlKS5mb3JtYXQoXCJERC9NTS9ZWVlZIEhIOm1tOnNzXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0ZpbmlzaGVkKCkge1xuICAgICAgICByZXR1cm4gISF0aGlzLnByb2Nlc3NEZXRhaWxzPy5maW5pc2hEYXRlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTaG93RXhjbHVzaW9uc0J1dHRvbkxhYmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX3Nob3dfZGVsZXRpb25zYCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENsb3NlQnV0dG9uTGFiZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubG9naWNhbF9kZWxldGVfY2xvc2VgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U3VtbWFyeUxhYmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX3N1bW1hcnlgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U3RhcnREYXRlTGFiZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubG9naWNhbF9kZWxldGVfc3RhcnRgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RmluaXNoRGF0ZUxhYmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2ZpbmlzaGApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTaWRlYmFyVGl0bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubG9naWNhbF9kZWxldGVfZGV0YWlsc190aXRsZWApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRFbXB0eVN0YXRlVGl0bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubG9naWNhbF9kZWxldGVfZW1wdHlfc3RhdGVfdGl0bGVgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RW1wdHlTdGF0ZURlc2NyaXB0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2VtcHR5X3N0YXRlX2Rlc2NyaXB0aW9uYCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTdW1tYXJ5Q29sdW1ucygpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBmaWVsZDogXCJkZXNjcmlwdGlvblwiLFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IFtcImRlc2NyaXB0aW9uXCJdLFxuICAgICAgICAgICAgICAgIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2Rlc2NyaXB0aW9uYCksXG4gICAgICAgICAgICAgICAgdHlwZTogRW51bUNvbHVtbkZpZWxkVHlwZS5TVFJJTkcsXG4gICAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IFwiMzAwcHhcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZmllbGQ6IFwic3RhdHVzXCIsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlczogW1wic3RhdHVzXCJdLFxuICAgICAgICAgICAgICAgIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX3N0YXR1c2ApLFxuICAgICAgICAgICAgICAgIHR5cGU6IEVudW1Db2x1bW5GaWVsZFR5cGUuRU5VTSxcbiAgICAgICAgICAgICAgICBlbnVtUHJlZml4OiBgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2VudW1fZXhjbHVzaW9uX3Byb2Nlc3Nfc3RhdHVzX2AsXG4gICAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IFwiMTAwcHhcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdG9vbHRpcDogdGhpcy5nZXRDb2x1bW5TdGF0dXNUb29sdGlwLFxuICAgICAgICAgICAgICAgIGJhZGdlQ29uZmlnczogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnVtVmFsdWU6IEVudW1FeGNsdXNpb25Qcm9jZXNzU3RhdHVzLkVSUk9SLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IEVudW1CYWRnZUNvbG9ycy5SRURcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW51bVZhbHVlOiBFbnVtRXhjbHVzaW9uUHJvY2Vzc1N0YXR1cy5QRU5ESU5HLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IEVudW1CYWRnZUNvbG9ycy5ZRUxMT1dcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW51bVZhbHVlOiBFbnVtRXhjbHVzaW9uUHJvY2Vzc1N0YXR1cy5QUk9DRVNTSU5HLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IEVudW1CYWRnZUNvbG9ycy5CTFVFXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudW1WYWx1ZTogRW51bUV4Y2x1c2lvblByb2Nlc3NTdGF0dXMuU1VDQ0VTUyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBFbnVtQmFkZ2VDb2xvcnMuR1JFRU5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH1cbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENvbHVtblN0YXR1c1Rvb2x0aXAocm93VmFsdWU6IEV4Y2x1c2lvbkRldGFpbHMpIHtcbiAgICAgICAgaWYgKHJvd1ZhbHVlLmVycm9yTWVzc2FnZSkge1xuICAgICAgICAgICAgcmV0dXJuIHJvd1ZhbHVlLmVycm9yTWVzc2FnZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgbG9hZFByb2Nlc3NEZXRhaWxzKGRldGFpbHM6IFNob3dEZXRhaWxzSW5mb3JtYXRpb24pIHtcbiAgICAgICAgdGhpcy5faXNMb2FkaW5nID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBwcm9jZXNzT2JzZXJ2YWJsZSA9IGRldGFpbHMucHJvY2Vzc0lkXG4gICAgICAgICAgICA/IHRoaXMubG9naWNhbERlbGV0ZVNlcnZpY2UuZ2V0UHJvY2Vzc0RldGFpbHMoZGV0YWlscy5wcm9jZXNzSWQpXG4gICAgICAgICAgICA6IHRoaXMubG9naWNhbERlbGV0ZVNlcnZpY2UuZ2V0TGF0ZXN0UHJvY2Vzc0RldGFpbHMoZGV0YWlscy5yZWNvcmRJZCk7XG5cbiAgICAgICAgcHJvY2Vzc09ic2VydmFibGVcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4gdGhpcy5faXNMb2FkaW5nID0gZmFsc2UpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocHJvY2VzczogRXhjbHVzaW9uUHJvY2VzcykgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghcHJvY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzRGV0YWlscyA9IHByb2Nlc3M7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkUHJvY2Vzc1N1bW1hcnkocHJvY2Vzcyk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNvcnRCeURhdGUoc3RhcnREYXRlOiBEYXRlLCBmaW5pc2hEYXRlOiBEYXRlKSB7XG4gICAgICAgIGlmIChzdGFydERhdGUuZ2V0VGltZSgpID4gZmluaXNoRGF0ZS5nZXRUaW1lKCkpIHtcbiAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGFydERhdGUuZ2V0VGltZSgpIDwgZmluaXNoRGF0ZS5nZXRUaW1lKCkpIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNvcnRHcm91cHNCeVN0YXJ0RGF0ZShncm91cHM6IEV4Y2x1c2lvblByb2Nlc3NTdGVwR3JvdXBbXSkge1xuICAgICAgICByZXR1cm4gZ3JvdXBzLnNvcnQoKGEsIGIpID0+IHRoaXMuc29ydEJ5RGF0ZShhLnN0YXJ0RGF0ZSwgYi5maW5pc2hEYXRlKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzb3J0U3RlcHNCeVN0YXJ0RGF0ZShzdGVwczogRXhjbHVzaW9uUHJvY2Vzc1N0ZXBbXSkge1xuICAgICAgICByZXR1cm4gc3RlcHMuc29ydCgoYSwgYikgPT4gdGhpcy5zb3J0QnlEYXRlKGEuc3RhcnREYXRlLCBiLmZpbmlzaERhdGUpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWRQcm9jZXNzU3VtbWFyeShwcm9jZXNzOiBFeGNsdXNpb25Qcm9jZXNzKSB7XG4gICAgICAgIGNvbnN0IHN0ZXBMb2dzOiBFeGNsdXNpb25EZXRhaWxzW10gPSBbXTtcblxuICAgICAgICB0aGlzLnNvcnRHcm91cHNCeVN0YXJ0RGF0ZShwcm9jZXNzLmdyb3VwcylcbiAgICAgICAgICAgIC5mb3JFYWNoKGdyb3VwID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGVwcyA9IHRoaXMuc29ydFN0ZXBzQnlTdGFydERhdGUoZ3JvdXAuc3RlcHMpXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoc3RlcCA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHN0ZXAuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IHN0ZXAuc3RhdHVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiBzdGVwLmVycm9yTWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICB9IGFzIEV4Y2x1c2lvbkRldGFpbHMpKTtcblxuICAgICAgICAgICAgICAgIHN0ZXBMb2dzLnB1c2goLi4uc3RlcHMpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fcHJvY2Vzc1N1bW1hcnlEYXRhID0gc3RlcExvZ3M7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkaXNjb25uZWN0V2ViU29ja2V0KCkge1xuICAgICAgICBpZiAodGhpcy5fZXhjbHVzaW9uUHJvY2Vzc1N0YXR1c0NoYW5nZWRTdWJzY3JpYmUpIHtcbiAgICAgICAgICAgIHRoaXMuX2V4Y2x1c2lvblByb2Nlc3NTdGF0dXNDaGFuZ2VkU3Vic2NyaWJlLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB0aGlzLl9leGNsdXNpb25Qcm9jZXNzU3RhdHVzQ2hhbmdlZFN1YnNjcmliZSA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fd2Vic29ja2V0U2VydmljZSkge1xuICAgICAgICAgICAgdGhpcy5fd2Vic29ja2V0U2VydmljZS5kaXNjb25uZWN0KCk7XG4gICAgICAgICAgICB0aGlzLl93ZWJzb2NrZXRTZXJ2aWNlID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY29ubmVjdFdlYlNvY2tldCgpIHtcbiAgICAgICAgaWYgKHRoaXMuX3dlYnNvY2tldFNlcnZpY2UpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzY29ubmVjdFdlYlNvY2tldCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fd2Vic29ja2V0U2VydmljZSA9IG5ldyBXZWJzb2NrZXRTZXJ2aWNlKCk7XG4gICAgICAgIHRoaXMuX3dlYnNvY2tldFNlcnZpY2VcbiAgICAgICAgICAgIC5vbkNvbm5lY3QoKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0TGlzdGVuaW5nV2ViaG9va0V2ZW50cygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGFydExpc3RlbmluZ1dlYmhvb2tFdmVudHMoKSB7XG4gICAgICAgIHRoaXMuX3dlYnNvY2tldFNlcnZpY2VcbiAgICAgICAgICAgIC5vbkVycm9yKClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignb25FcnJvcicsIGRhdGEpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fZXhjbHVzaW9uUHJvY2Vzc1N0YXR1c0NoYW5nZWRTdWJzY3JpYmUgPSB0aGlzLl93ZWJzb2NrZXRTZXJ2aWNlXG4gICAgICAgICAgICAub25FdmVudDxXZWJzb2NrZXRFdmVudERhdGE8RXhjbHVzaW9uUHJvY2Vzc1N0YXR1c0NoYW5nZWQ+Pih7XG4gICAgICAgICAgICAgICAgZG9tYWluOiB0aGlzLnByb2plY3RDb25maWdzLmdldERvbWFpbigpLFxuICAgICAgICAgICAgICAgIHNlcnZpY2U6IHRoaXMucHJvamVjdENvbmZpZ3MuZ2V0U2VydmljZSgpLFxuICAgICAgICAgICAgICAgIHByaW1pdGl2ZTogXCJleGNsdXNpb25Qcm9jZXNzU3RhdHVzQ2hhbmdlZFwiXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChldmVudDogV2Vic29ja2V0RXZlbnREYXRhPEV4Y2x1c2lvblByb2Nlc3NTdGF0dXNDaGFuZ2VkPikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gZXZlbnQ7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fZXhjbHVzaW9uRGV0YWlscy5wcm9jZXNzSWQgJiYgZGF0YS5waWQgPT09IHRoaXMuX2V4Y2x1c2lvbkRldGFpbHMucHJvY2Vzc0lkKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZFByb2Nlc3NEZXRhaWxzKHRoaXMuX2V4Y2x1c2lvbkRldGFpbHMpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX2V4Y2x1c2lvbkRldGFpbHMucmVjb3JkSWQgJiYgZGF0YS5yZWNvcmRJZCA9PT0gdGhpcy5fZXhjbHVzaW9uRGV0YWlscy5yZWNvcmRJZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRQcm9jZXNzRGV0YWlscyh0aGlzLl9leGNsdXNpb25EZXRhaWxzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=