UNPKG

acr-assist-simulator-module

Version:

This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 1.7.4.

169 lines (168 loc) 23.2 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import { Injectable } from '@angular/core'; import { DataElementCreationBaseService } from './data-element-creation-base-service'; import { DiagramService } from './diagram.service'; import { ChoiceDataElement } from '../../../core/elements/models/choice-data-element-model'; import { Choice } from '../../../core/elements/models/choice.model'; import { ImageMap } from '../../../core/elements/models/image-map.model'; import { Area } from '../../../core/elements/models/area-model'; import { AreaMap } from '../../../core/elements/models/area-map.model'; import { ArrayCheckerService } from './array-checker.service'; import { NotRelevantDataElements } from '../../../core/models/notrelevantdataelements.model'; import { ConditionalProperty } from '../../../core/elements/models/conditionalproperty.model'; import { ConditionsCreationService } from './conditions-creation.service'; import { ComputedValueCreationService } from './computed-value-creation.service'; export class ChoiceDataElementCreationService extends DataElementCreationBaseService { /** * @param {?} diagramService * @param {?} arrayCheckerService * @param {?} conditionsCreationService * @param {?} computedValueCreationService */ constructor(diagramService, arrayCheckerService, conditionsCreationService, computedValueCreationService) { super(diagramService); this.arrayCheckerService = arrayCheckerService; this.conditionsCreationService = conditionsCreationService; this.computedValueCreationService = computedValueCreationService; this.elementType = 'ChoiceDataElement'; } /** * @param {?} choiceItem * @return {?} */ returnChoice(choiceItem) { const /** @type {?} */ choice = new Choice(); choice.label = choiceItem.Label; choice.value = choiceItem.Value; choice.hint = choiceItem.Hint; choice.reportText = choiceItem.ReportText; choice.default = false; if (choiceItem.Attr && choiceItem.Attr.IsDefault) { choice.default = choiceItem.Attr.IsDefault; } return choice; } /** * @param {?} areaJSON * @return {?} */ returnArea(areaJSON) { const /** @type {?} */ area = new Area(); area.choiceValue = areaJSON.Attr.ChoiceValue; area.coords = areaJSON.Attr.Coords; area.shape = areaJSON.Attr.Shape; return area; } /** * @param {?} data * @return {?} */ createElement(data) { const /** @type {?} */ dataElement = new ChoiceDataElement(); super.populateBasicData(data, dataElement); dataElement.allowFreetext = data.Attr.AllowFreetext ? data.Attr.AllowFreetext : false; const /** @type {?} */ choiceItems = data.ChoiceInfo.Choice; let /** @type {?} */ defaultValue; if (choiceItems !== undefined) { dataElement.choiceInfo = new Array(); if (this.arrayCheckerService.isArray(choiceItems)) { for (const /** @type {?} */ choiceItem of choiceItems) { const /** @type {?} */ choice = this.returnChoice(choiceItem); if (choice.default) { defaultValue = choice.value; } dataElement.choiceInfo.push(choice); } } else { const /** @type {?} */ choice = this.returnChoice(choiceItems); if (choice.default) { defaultValue = choice.value; } dataElement.choiceInfo.push(choice); } } dataElement.defaultValue = defaultValue; dataElement.currentValue = defaultValue; const /** @type {?} */ imageMap = data.ImageMap; if (imageMap !== undefined) { dataElement.imageMap = new ImageMap(); dataElement.imageMap.location = imageMap.Location; const /** @type {?} */ areaMaps = imageMap.Map.Area; if (areaMaps !== undefined) { dataElement.imageMap.map = new AreaMap(); dataElement.imageMap.map.areas = new Array(); if (this.arrayCheckerService.isArray(areaMaps)) { for (const /** @type {?} */ areaMap of areaMaps) { dataElement.imageMap.map.areas.push(this.returnArea(areaMap)); } } else { dataElement.imageMap.map.areas.push(this.returnArea(areaMaps)); } } } const /** @type {?} */ ConditionalProperties = data.ConditionalProperties; if (ConditionalProperties !== undefined) { const /** @type {?} */ notRelevantDataElements = new NotRelevantDataElements(); const /** @type {?} */ dataElementRefs = data.ConditionalProperties; // .NotRelevantDataElements.DataElementRef; if (data.ConditionalProperties !== undefined) { dataElement.conditionalProperties = new Array(); if (data.ConditionalProperties.ConditionalProperty instanceof Array) { for (const /** @type {?} */ conditionalProperty of data.ConditionalProperties.ConditionalProperty) { dataElement.conditionalProperties.push(this.GetConditionalProperties(conditionalProperty)); } } else { dataElement.conditionalProperties.push(this.GetConditionalProperties(data.ConditionalProperties.ConditionalProperty)); } } } return dataElement; } /** * @param {?} conditionalProperty * @return {?} */ GetConditionalProperties(conditionalProperty) { const /** @type {?} */ _conditionalProperty = new ConditionalProperty(); _conditionalProperty.condition = this.conditionsCreationService.returnCondition(conditionalProperty); // var test = this.computedValueCreationService.createComputedValue(conditionalProperty); if (this.conditionsCreationService.isComposite(conditionalProperty)) { _conditionalProperty.compositeCondition = this.conditionsCreationService.returnCompositeCondition(conditionalProperty); } _conditionalProperty.isRelevant = conditionalProperty.IsRelevant; _conditionalProperty.isRequired = conditionalProperty.IsRequired; _conditionalProperty.DisplaySequence = conditionalProperty.DisplaySequence; if (conditionalProperty.ChoiceNotRelevant !== undefined) { _conditionalProperty.ChoiceNotRelevant = new Array(); for (const /** @type {?} */ choiceNotRelevant of conditionalProperty.ChoiceNotRelevant) { _conditionalProperty.ChoiceNotRelevant.push(choiceNotRelevant.Attr.ChoiceValue); } } return _conditionalProperty; } } ChoiceDataElementCreationService.decorators = [ { type: Injectable }, ]; /** @nocollapse */ ChoiceDataElementCreationService.ctorParameters = () => [ { type: DiagramService }, { type: ArrayCheckerService }, { type: ConditionsCreationService }, { type: ComputedValueCreationService } ]; function ChoiceDataElementCreationService_tsickle_Closure_declarations() { /** @type {?} */ ChoiceDataElementCreationService.prototype.arrayCheckerService; /** @type {?} */ ChoiceDataElementCreationService.prototype.conditionsCreationService; /** @type {?} */ ChoiceDataElementCreationService.prototype.computedValueCreationService; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hvaWNlLWRhdGEtZWxlbWVudC1jcmVhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYWNyLWFzc2lzdC1zaW11bGF0b3ItbW9kdWxlLyIsInNvdXJjZXMiOlsic3JjL2FwcC9tb2R1bGVzL2Fjci1hc3Npc3Qtc2ltdWxhdG9yL3NoYXJlZC9zZXJ2aWNlcy9jaG9pY2UtZGF0YS1lbGVtZW50LWNyZWF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBRTVGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDekUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUM3RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUM5RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUlqRixNQUFNLHVDQUF3QyxTQUFRLDhCQUE4Qjs7Ozs7OztJQUVsRixZQUFZLGNBQThCLEVBQVUsbUJBQXdDLEVBQ2xGLDJCQUNBO1FBRVIsS0FB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QyxtQkFBbUIsQ0FBQyxDQUFDOztRQUVyRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BFLG9CQUFvQixDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyx3QkFBd0IsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1NBQ3hIO1FBRUQsb0JBQW9CLENBQUMsVUFBVSxHQUFHLG1CQUFtQixDQUFDLFVBQVUsQ0FBQztRQUNqRSxvQkFBb0IsQ0FBQyxVQUFVLEdBQUcsbUJBQW1CLENBQUMsVUFBVSxDQUFDO1FBQ2pFLG9CQUFvQixDQUFDLGVBQWUsR0FBRyxtQkFBbUIsQ0FBQyxlQUFlLENBQUM7UUFDM0UsRUFBRSxDQUFDLENBQUMsbUJBQW1CLENBQUMsaUJBQWlCLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztZQUN4RCxvQkFBb0IsQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO1lBQzdELEdBQUcsQ0FBQyxDQUFDLHVCQUFNLGlCQUFpQixJQUFJLG1CQUFtQixDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztnQkFDdEUsb0JBQW9CLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUNqRjtTQUNGO1FBRUQsTUFBTSxDQUFDLG9CQUFvQixDQUFDOzs7O1lBckgvQixVQUFVOzs7O1lBZEYsY0FBYztZQU9kLG1CQUFtQjtZQUduQix5QkFBeUI7WUFDekIsNEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEYXRhRWxlbWVudENyZWF0aW9uQmFzZVNlcnZpY2UgfSBmcm9tICcuL2RhdGEtZWxlbWVudC1jcmVhdGlvbi1iYXNlLXNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEaWFncmFtU2VydmljZSB9IGZyb20gJy4vZGlhZ3JhbS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2hvaWNlRGF0YUVsZW1lbnQgfSBmcm9tICcuLi8uLi8uLi9jb3JlL2VsZW1lbnRzL21vZGVscy9jaG9pY2UtZGF0YS1lbGVtZW50LW1vZGVsJztcclxuaW1wb3J0IHsgQmFzZURhdGFFbGVtZW50IH0gZnJvbSAnLi4vLi4vLi4vY29yZS9lbGVtZW50cy9tb2RlbHMvYmFzZS1kYXRhLWVsZW1lbnQubW9kZWwnO1xyXG5pbXBvcnQgeyBDaG9pY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL2VsZW1lbnRzL21vZGVscy9jaG9pY2UubW9kZWwnO1xyXG5pbXBvcnQgeyBJbWFnZU1hcCB9IGZyb20gJy4uLy4uLy4uL2NvcmUvZWxlbWVudHMvbW9kZWxzL2ltYWdlLW1hcC5tb2RlbCc7XHJcbmltcG9ydCB7IEFyZWEgfSBmcm9tICcuLi8uLi8uLi9jb3JlL2VsZW1lbnRzL21vZGVscy9hcmVhLW1vZGVsJztcclxuaW1wb3J0IHsgQXJlYU1hcCB9IGZyb20gJy4uLy4uLy4uL2NvcmUvZWxlbWVudHMvbW9kZWxzL2FyZWEtbWFwLm1vZGVsJztcclxuaW1wb3J0IHsgQXJyYXlDaGVja2VyU2VydmljZSB9IGZyb20gJy4vYXJyYXktY2hlY2tlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTm90UmVsZXZhbnREYXRhRWxlbWVudHMgfSBmcm9tICcuLi8uLi8uLi9jb3JlL21vZGVscy9ub3RyZWxldmFudGRhdGFlbGVtZW50cy5tb2RlbCc7XHJcbmltcG9ydCB7IENvbmRpdGlvbmFsUHJvcGVydHkgfSBmcm9tICcuLi8uLi8uLi9jb3JlL2VsZW1lbnRzL21vZGVscy9jb25kaXRpb25hbHByb3BlcnR5Lm1vZGVsJztcclxuaW1wb3J0IHsgQ29uZGl0aW9uc0NyZWF0aW9uU2VydmljZSB9IGZyb20gJy4vY29uZGl0aW9ucy1jcmVhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tcHV0ZWRWYWx1ZUNyZWF0aW9uU2VydmljZSB9IGZyb20gJy4vY29tcHV0ZWQtdmFsdWUtY3JlYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IEJyYW5jaCB9IGZyb20gJy4uLy4uLy4uL2NvcmUvbW9kZWxzL2JyYW5jaC5tb2RlbCc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDaG9pY2VEYXRhRWxlbWVudENyZWF0aW9uU2VydmljZSBleHRlbmRzIERhdGFFbGVtZW50Q3JlYXRpb25CYXNlU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGRpYWdyYW1TZXJ2aWNlOiBEaWFncmFtU2VydmljZSwgcHJpdmF0ZSBhcnJheUNoZWNrZXJTZXJ2aWNlOiBBcnJheUNoZWNrZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb25kaXRpb25zQ3JlYXRpb25TZXJ2aWNlOiBDb25kaXRpb25zQ3JlYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjb21wdXRlZFZhbHVlQ3JlYXRpb25TZXJ2aWNlOiBDb21wdXRlZFZhbHVlQ3JlYXRpb25TZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcihkaWFncmFtU2VydmljZSk7XHJcbiAgICB0aGlzLmVsZW1lbnRUeXBlID0gJ0Nob2ljZURhdGFFbGVtZW50JztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmV0dXJuQ2hvaWNlKGNob2ljZUl0ZW06IGFueSk6IENob2ljZSB7XHJcbiAgICBjb25zdCBjaG9pY2UgPSBuZXcgQ2hvaWNlKCk7XHJcbiAgICBjaG9pY2UubGFiZWwgPSBjaG9pY2VJdGVtLkxhYmVsO1xyXG4gICAgY2hvaWNlLnZhbHVlID0gY2hvaWNlSXRlbS5WYWx1ZTtcclxuICAgIGNob2ljZS5oaW50ID0gY2hvaWNlSXRlbS5IaW50O1xyXG4gICAgY2hvaWNlLnJlcG9ydFRleHQgPSBjaG9pY2VJdGVtLlJlcG9ydFRleHQ7XHJcbiAgICBjaG9pY2UuZGVmYXVsdCA9IGZhbHNlO1xyXG4gICAgaWYgKGNob2ljZUl0ZW0uQXR0ciAmJiBjaG9pY2VJdGVtLkF0dHIuSXNEZWZhdWx0KSB7XHJcbiAgICAgIGNob2ljZS5kZWZhdWx0ID0gY2hvaWNlSXRlbS5BdHRyLklzRGVmYXVsdDtcclxuICAgIH1cclxuICAgIHJldHVybiBjaG9pY2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJldHVybkFyZWEoYXJlYUpTT046IGFueSk6IEFyZWEge1xyXG4gICAgY29uc3QgYXJlYSA9IG5ldyBBcmVhKCk7XHJcbiAgICBhcmVhLmNob2ljZVZhbHVlID0gYXJlYUpTT04uQXR0ci5DaG9pY2VWYWx1ZTtcclxuICAgIGFyZWEuY29vcmRzID0gYXJlYUpTT04uQXR0ci5Db29yZHM7XHJcbiAgICBhcmVhLnNoYXBlID0gYXJlYUpTT04uQXR0ci5TaGFwZTtcclxuICAgIHJldHVybiBhcmVhO1xyXG4gIH1cclxuXHJcblxyXG4gIGNyZWF0ZUVsZW1lbnQoZGF0YTogYW55KTogQmFzZURhdGFFbGVtZW50IHtcclxuICAgIGNvbnN0IGRhdGFFbGVtZW50ID0gbmV3IENob2ljZURhdGFFbGVtZW50KCk7XHJcbiAgICBzdXBlci5wb3B1bGF0ZUJhc2ljRGF0YShkYXRhLCBkYXRhRWxlbWVudCk7XHJcbiAgICBkYXRhRWxlbWVudC5hbGxvd0ZyZWV0ZXh0ID0gZGF0YS5BdHRyLkFsbG93RnJlZXRleHQgPyBkYXRhLkF0dHIuQWxsb3dGcmVldGV4dCA6IGZhbHNlO1xyXG4gICAgY29uc3QgY2hvaWNlSXRlbXMgPSBkYXRhLkNob2ljZUluZm8uQ2hvaWNlO1xyXG4gICAgbGV0IGRlZmF1bHRWYWx1ZTogYW55O1xyXG4gICAgaWYgKGNob2ljZUl0ZW1zICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgZGF0YUVsZW1lbnQuY2hvaWNlSW5mbyA9IG5ldyBBcnJheTxDaG9pY2U+KCk7XHJcbiAgICAgIGlmICh0aGlzLmFycmF5Q2hlY2tlclNlcnZpY2UuaXNBcnJheShjaG9pY2VJdGVtcykpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGNob2ljZUl0ZW0gb2YgY2hvaWNlSXRlbXMpIHtcclxuICAgICAgICAgIGNvbnN0IGNob2ljZSA9IHRoaXMucmV0dXJuQ2hvaWNlKGNob2ljZUl0ZW0pO1xyXG4gICAgICAgICAgaWYgKGNob2ljZS5kZWZhdWx0KSB7XHJcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZSA9IGNob2ljZS52YWx1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRhdGFFbGVtZW50LmNob2ljZUluZm8ucHVzaChjaG9pY2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCBjaG9pY2UgPSB0aGlzLnJldHVybkNob2ljZShjaG9pY2VJdGVtcyk7XHJcbiAgICAgICAgaWYgKGNob2ljZS5kZWZhdWx0KSB7XHJcbiAgICAgICAgICBkZWZhdWx0VmFsdWUgPSBjaG9pY2UudmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRhdGFFbGVtZW50LmNob2ljZUluZm8ucHVzaChjaG9pY2UpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBkYXRhRWxlbWVudC5kZWZhdWx0VmFsdWUgPSBkZWZhdWx0VmFsdWU7XHJcbiAgICBkYXRhRWxlbWVudC5jdXJyZW50VmFsdWUgPSBkZWZhdWx0VmFsdWU7XHJcbiAgICBjb25zdCBpbWFnZU1hcCA9IGRhdGEuSW1hZ2VNYXA7XHJcbiAgICBpZiAoaW1hZ2VNYXAgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBkYXRhRWxlbWVudC5pbWFnZU1hcCA9IG5ldyBJbWFnZU1hcCgpO1xyXG4gICAgICBkYXRhRWxlbWVudC5pbWFnZU1hcC5sb2NhdGlvbiA9IGltYWdlTWFwLkxvY2F0aW9uO1xyXG4gICAgICBjb25zdCBhcmVhTWFwcyA9IGltYWdlTWFwLk1hcC5BcmVhO1xyXG4gICAgICBpZiAoYXJlYU1hcHMgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGRhdGFFbGVtZW50LmltYWdlTWFwLm1hcCA9IG5ldyBBcmVhTWFwKCk7XHJcbiAgICAgICAgZGF0YUVsZW1lbnQuaW1hZ2VNYXAubWFwLmFyZWFzID0gbmV3IEFycmF5PEFyZWE+KCk7XHJcbiAgICAgICAgaWYgKHRoaXMuYXJyYXlDaGVja2VyU2VydmljZS5pc0FycmF5KGFyZWFNYXBzKSkge1xyXG4gICAgICAgICAgZm9yIChjb25zdCBhcmVhTWFwIG9mIGFyZWFNYXBzKSB7XHJcbiAgICAgICAgICAgIGRhdGFFbGVtZW50LmltYWdlTWFwLm1hcC5hcmVhcy5wdXNoKHRoaXMucmV0dXJuQXJlYShhcmVhTWFwKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGRhdGFFbGVtZW50LmltYWdlTWFwLm1hcC5hcmVhcy5wdXNoKHRoaXMucmV0dXJuQXJlYShhcmVhTWFwcykpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBjb25zdCBDb25kaXRpb25hbFByb3BlcnRpZXMgPSBkYXRhLkNvbmRpdGlvbmFsUHJvcGVydGllcztcclxuICAgIGlmIChDb25kaXRpb25hbFByb3BlcnRpZXMgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBjb25zdCBub3RSZWxldmFudERhdGFFbGVtZW50cyA9IG5ldyBOb3RSZWxldmFudERhdGFFbGVtZW50cygpO1xyXG4gICAgICBjb25zdCBkYXRhRWxlbWVudFJlZnMgPSBkYXRhLkNvbmRpdGlvbmFsUHJvcGVydGllcztcclxuICAgICAgLy8gLk5vdFJlbGV2YW50RGF0YUVsZW1lbnRzLkRhdGFFbGVtZW50UmVmO1xyXG5cclxuICAgICAgaWYgKGRhdGEuQ29uZGl0aW9uYWxQcm9wZXJ0aWVzICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBkYXRhRWxlbWVudC5jb25kaXRpb25hbFByb3BlcnRpZXMgPSBuZXcgQXJyYXk8Q29uZGl0aW9uYWxQcm9wZXJ0eT4oKTtcclxuICAgICAgICBpZiAoZGF0YS5Db25kaXRpb25hbFByb3BlcnRpZXMuQ29uZGl0aW9uYWxQcm9wZXJ0eSBpbnN0YW5jZW9mIEFycmF5KSB7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IGNvbmRpdGlvbmFsUHJvcGVydHkgb2YgZGF0YS5Db25kaXRpb25hbFByb3BlcnRpZXMuQ29uZGl0aW9uYWxQcm9wZXJ0eSkge1xyXG4gICAgICAgICAgICBkYXRhRWxlbWVudC5jb25kaXRpb25hbFByb3BlcnRpZXMucHVzaCh0aGlzLkdldENvbmRpdGlvbmFsUHJvcGVydGllcyhjb25kaXRpb25hbFByb3BlcnR5KSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGRhdGFFbGVtZW50LmNvbmRpdGlvbmFsUHJvcGVydGllcy5wdXNoKHRoaXMuR2V0Q29uZGl0aW9uYWxQcm9wZXJ0aWVzKGRhdGEuQ29uZGl0aW9uYWxQcm9wZXJ0aWVzLkNvbmRpdGlvbmFsUHJvcGVydHkpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZGF0YUVsZW1lbnQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIEdldENvbmRpdGlvbmFsUHJvcGVydGllcyhjb25kaXRpb25hbFByb3BlcnR5KTogQ29uZGl0aW9uYWxQcm9wZXJ0eSB7XHJcbiAgICBjb25zdCBfY29uZGl0aW9uYWxQcm9wZXJ0eSA9IG5ldyBDb25kaXRpb25hbFByb3BlcnR5KCk7XHJcbiAgICBfY29uZGl0aW9uYWxQcm9wZXJ0eS5jb25kaXRpb24gPSB0aGlzLmNvbmRpdGlvbnNDcmVhdGlvblNlcnZpY2UucmV0dXJuQ29uZGl0aW9uKGNvbmRpdGlvbmFsUHJvcGVydHkpO1xyXG4gICAgLy8gdmFyIHRlc3QgPSB0aGlzLmNvbXB1dGVkVmFsdWVDcmVhdGlvblNlcnZpY2UuY3JlYXRlQ29tcHV0ZWRWYWx1ZShjb25kaXRpb25hbFByb3BlcnR5KTtcclxuICAgIGlmICh0aGlzLmNvbmRpdGlvbnNDcmVhdGlvblNlcnZpY2UuaXNDb21wb3NpdGUoY29uZGl0aW9uYWxQcm9wZXJ0eSkpIHtcclxuICAgICAgX2NvbmRpdGlvbmFsUHJvcGVydHkuY29tcG9zaXRlQ29uZGl0aW9uID0gdGhpcy5jb25kaXRpb25zQ3JlYXRpb25TZXJ2aWNlLnJldHVybkNvbXBvc2l0ZUNvbmRpdGlvbihjb25kaXRpb25hbFByb3BlcnR5KTtcclxuICAgIH1cclxuXHJcbiAgICBfY29uZGl0aW9uYWxQcm9wZXJ0eS5pc1JlbGV2YW50ID0gY29uZGl0aW9uYWxQcm9wZXJ0eS5Jc1JlbGV2YW50O1xyXG4gICAgX2NvbmRpdGlvbmFsUHJvcGVydHkuaXNSZXF1aXJlZCA9IGNvbmRpdGlvbmFsUHJvcGVydHkuSXNSZXF1aXJlZDtcclxuICAgIF9jb25kaXRpb25hbFByb3BlcnR5LkRpc3BsYXlTZXF1ZW5jZSA9IGNvbmRpdGlvbmFsUHJvcGVydHkuRGlzcGxheVNlcXVlbmNlO1xyXG4gICAgaWYgKGNvbmRpdGlvbmFsUHJvcGVydHkuQ2hvaWNlTm90UmVsZXZhbnQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBfY29uZGl0aW9uYWxQcm9wZXJ0eS5DaG9pY2VOb3RSZWxldmFudCA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XHJcbiAgICAgIGZvciAoY29uc3QgY2hvaWNlTm90UmVsZXZhbnQgb2YgY29uZGl0aW9uYWxQcm9wZXJ0eS5DaG9pY2VOb3RSZWxldmFudCkge1xyXG4gICAgICAgIF9jb25kaXRpb25hbFByb3BlcnR5LkNob2ljZU5vdFJlbGV2YW50LnB1c2goY2hvaWNlTm90UmVsZXZhbnQuQXR0ci5DaG9pY2VWYWx1ZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gX2NvbmRpdGlvbmFsUHJvcGVydHk7XHJcbiAgfVxyXG59XHJcbiJdfQ==