acr-assist-simulator-module
Version:
This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 1.7.4.
226 lines (225 loc) • 26.2 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
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';
var ChoiceDataElementCreationService = /** @class */ (function (_super) {
tslib_1.__extends(ChoiceDataElementCreationService, _super);
function ChoiceDataElementCreationService(diagramService, arrayCheckerService, conditionsCreationService, computedValueCreationService) {
var _this = _super.call(this, diagramService) || this;
_this.arrayCheckerService = arrayCheckerService;
_this.conditionsCreationService = conditionsCreationService;
_this.computedValueCreationService = computedValueCreationService;
_this.elementType = 'ChoiceDataElement';
return _this;
}
/**
* @param {?} choiceItem
* @return {?}
*/
ChoiceDataElementCreationService.prototype.returnChoice = /**
* @param {?} choiceItem
* @return {?}
*/
function (choiceItem) {
var /** @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 {?}
*/
ChoiceDataElementCreationService.prototype.returnArea = /**
* @param {?} areaJSON
* @return {?}
*/
function (areaJSON) {
var /** @type {?} */ area = new Area();
area.choiceValue = areaJSON.Attr.ChoiceValue;
area.coords = areaJSON.Attr.Coords;
area.shape = areaJSON.Attr.Shape;
return area;
};
/**
* @param {?} data
* @return {?}
*/
ChoiceDataElementCreationService.prototype.createElement = /**
* @param {?} data
* @return {?}
*/
function (data) {
var /** @type {?} */ dataElement = new ChoiceDataElement();
_super.prototype.populateBasicData.call(this, data, dataElement);
dataElement.allowFreetext = data.Attr.AllowFreetext ? data.Attr.AllowFreetext : false;
var /** @type {?} */ choiceItems = data.ChoiceInfo.Choice;
var /** @type {?} */ defaultValue;
if (choiceItems !== undefined) {
dataElement.choiceInfo = new Array();
if (this.arrayCheckerService.isArray(choiceItems)) {
try {
for (var choiceItems_1 = tslib_1.__values(choiceItems), choiceItems_1_1 = choiceItems_1.next(); !choiceItems_1_1.done; choiceItems_1_1 = choiceItems_1.next()) {
var choiceItem = choiceItems_1_1.value;
var /** @type {?} */ choice = this.returnChoice(choiceItem);
if (choice.default) {
defaultValue = choice.value;
}
dataElement.choiceInfo.push(choice);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (choiceItems_1_1 && !choiceItems_1_1.done && (_a = choiceItems_1.return)) _a.call(choiceItems_1);
}
finally { if (e_1) throw e_1.error; }
}
}
else {
var /** @type {?} */ choice = this.returnChoice(choiceItems);
if (choice.default) {
defaultValue = choice.value;
}
dataElement.choiceInfo.push(choice);
}
}
dataElement.defaultValue = defaultValue;
dataElement.currentValue = defaultValue;
var /** @type {?} */ imageMap = data.ImageMap;
if (imageMap !== undefined) {
dataElement.imageMap = new ImageMap();
dataElement.imageMap.location = imageMap.Location;
var /** @type {?} */ areaMaps = imageMap.Map.Area;
if (areaMaps !== undefined) {
dataElement.imageMap.map = new AreaMap();
dataElement.imageMap.map.areas = new Array();
if (this.arrayCheckerService.isArray(areaMaps)) {
try {
for (var areaMaps_1 = tslib_1.__values(areaMaps), areaMaps_1_1 = areaMaps_1.next(); !areaMaps_1_1.done; areaMaps_1_1 = areaMaps_1.next()) {
var areaMap = areaMaps_1_1.value;
dataElement.imageMap.map.areas.push(this.returnArea(areaMap));
}
}
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {
try {
if (areaMaps_1_1 && !areaMaps_1_1.done && (_b = areaMaps_1.return)) _b.call(areaMaps_1);
}
finally { if (e_2) throw e_2.error; }
}
}
else {
dataElement.imageMap.map.areas.push(this.returnArea(areaMaps));
}
}
}
var /** @type {?} */ ConditionalProperties = data.ConditionalProperties;
if (ConditionalProperties !== undefined) {
var /** @type {?} */ notRelevantDataElements = new NotRelevantDataElements();
var /** @type {?} */ dataElementRefs = data.ConditionalProperties;
// .NotRelevantDataElements.DataElementRef;
if (data.ConditionalProperties !== undefined) {
dataElement.conditionalProperties = new Array();
if (data.ConditionalProperties.ConditionalProperty instanceof Array) {
try {
for (var _c = tslib_1.__values(data.ConditionalProperties.ConditionalProperty), _d = _c.next(); !_d.done; _d = _c.next()) {
var conditionalProperty = _d.value;
dataElement.conditionalProperties.push(this.GetConditionalProperties(conditionalProperty));
}
}
catch (e_3_1) { e_3 = { error: e_3_1 }; }
finally {
try {
if (_d && !_d.done && (_e = _c.return)) _e.call(_c);
}
finally { if (e_3) throw e_3.error; }
}
}
else {
dataElement.conditionalProperties.push(this.GetConditionalProperties(data.ConditionalProperties.ConditionalProperty));
}
}
}
return dataElement;
var e_1, _a, e_2, _b, e_3, _e;
};
/**
* @param {?} conditionalProperty
* @return {?}
*/
ChoiceDataElementCreationService.prototype.GetConditionalProperties = /**
* @param {?} conditionalProperty
* @return {?}
*/
function (conditionalProperty) {
var /** @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();
try {
for (var _a = tslib_1.__values(conditionalProperty.ChoiceNotRelevant), _b = _a.next(); !_b.done; _b = _a.next()) {
var choiceNotRelevant = _b.value;
_conditionalProperty.ChoiceNotRelevant.push(choiceNotRelevant.Attr.ChoiceValue);
}
}
catch (e_4_1) { e_4 = { error: e_4_1 }; }
finally {
try {
if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
}
finally { if (e_4) throw e_4.error; }
}
}
return _conditionalProperty;
var e_4, _c;
};
ChoiceDataElementCreationService.decorators = [
{ type: Injectable },
];
/** @nocollapse */
ChoiceDataElementCreationService.ctorParameters = function () { return [
{ type: DiagramService },
{ type: ArrayCheckerService },
{ type: ConditionsCreationService },
{ type: ComputedValueCreationService }
]; };
return ChoiceDataElementCreationService;
}(DataElementCreationBaseService));
export { ChoiceDataElementCreationService };
function ChoiceDataElementCreationService_tsickle_Closure_declarations() {
/** @type {?} */
ChoiceDataElementCreationService.prototype.arrayCheckerService;
/** @type {?} */
ChoiceDataElementCreationService.prototype.conditionsCreationService;
/** @type {?} */
ChoiceDataElementCreationService.prototype.computedValueCreationService;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hvaWNlLWRhdGEtZWxlbWVudC1jcmVhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYWNyLWFzc2lzdC1zaW11bGF0b3ItbW9kdWxlLyIsInNvdXJjZXMiOlsic3JjL2FwcC9tb2R1bGVzL2Fjci1hc3Npc3Qtc2ltdWxhdG9yL3NoYXJlZC9zZXJ2aWNlcy9jaG9pY2UtZGF0YS1lbGVtZW50LWNyZWF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUU1RixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDcEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDdkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDN0YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDOUYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDMUUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7O0lBSTNCLDREQUE4QjtJQUVsRiwwQ0FBWSxjQUE4QixFQUFVLG1CQUF3QyxFQUNsRiwyQkFDQTtRQUZWLFlBSUUsa0JBQU0sY0FBYyxDQUFDLFNB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bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGF0YUVsZW1lbnRDcmVhdGlvbkJhc2VTZXJ2aWNlIH0gZnJvbSAnLi9kYXRhLWVsZW1lbnQtY3JlYXRpb24tYmFzZS1zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGlhZ3JhbVNlcnZpY2UgfSBmcm9tICcuL2RpYWdyYW0uc2VydmljZSc7XHJcbmltcG9ydCB7IENob2ljZURhdGFFbGVtZW50IH0gZnJvbSAnLi4vLi4vLi4vY29yZS9lbGVtZW50cy9tb2RlbHMvY2hvaWNlLWRhdGEtZWxlbWVudC1tb2RlbCc7XHJcbmltcG9ydCB7IEJhc2VEYXRhRWxlbWVudCB9IGZyb20gJy4uLy4uLy4uL2NvcmUvZWxlbWVudHMvbW9kZWxzL2Jhc2UtZGF0YS1lbGVtZW50Lm1vZGVsJztcclxuaW1wb3J0IHsgQ2hvaWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9lbGVtZW50cy9tb2RlbHMvY2hvaWNlLm1vZGVsJztcclxuaW1wb3J0IHsgSW1hZ2VNYXAgfSBmcm9tICcuLi8uLi8uLi9jb3JlL2VsZW1lbnRzL21vZGVscy9pbWFnZS1tYXAubW9kZWwnO1xyXG5pbXBvcnQgeyBBcmVhIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9lbGVtZW50cy9tb2RlbHMvYXJlYS1tb2RlbCc7XHJcbmltcG9ydCB7IEFyZWFNYXAgfSBmcm9tICcuLi8uLi8uLi9jb3JlL2VsZW1lbnRzL21vZGVscy9hcmVhLW1hcC5tb2RlbCc7XHJcbmltcG9ydCB7IEFycmF5Q2hlY2tlclNlcnZpY2UgfSBmcm9tICcuL2FycmF5LWNoZWNrZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IE5vdFJlbGV2YW50RGF0YUVsZW1lbnRzIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9tb2RlbHMvbm90cmVsZXZhbnRkYXRhZWxlbWVudHMubW9kZWwnO1xyXG5pbXBvcnQgeyBDb25kaXRpb25hbFByb3BlcnR5IH0gZnJvbSAnLi4vLi4vLi4vY29yZS9lbGVtZW50cy9tb2RlbHMvY29uZGl0aW9uYWxwcm9wZXJ0eS5tb2RlbCc7XHJcbmltcG9ydCB7IENvbmRpdGlvbnNDcmVhdGlvblNlcnZpY2UgfSBmcm9tICcuL2NvbmRpdGlvbnMtY3JlYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IENvbXB1dGVkVmFsdWVDcmVhdGlvblNlcnZpY2UgfSBmcm9tICcuL2NvbXB1dGVkLXZhbHVlLWNyZWF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCcmFuY2ggfSBmcm9tICcuLi8uLi8uLi9jb3JlL21vZGVscy9icmFuY2gubW9kZWwnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQ2hvaWNlRGF0YUVsZW1lbnRDcmVhdGlvblNlcnZpY2UgZXh0ZW5kcyBEYXRhRWxlbWVudENyZWF0aW9uQmFzZVNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3RvcihkaWFncmFtU2VydmljZTogRGlhZ3JhbVNlcnZpY2UsIHByaXZhdGUgYXJyYXlDaGVja2VyU2VydmljZTogQXJyYXlDaGVja2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgY29uZGl0aW9uc0NyZWF0aW9uU2VydmljZTogQ29uZGl0aW9uc0NyZWF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgY29tcHV0ZWRWYWx1ZUNyZWF0aW9uU2VydmljZTogQ29tcHV0ZWRWYWx1ZUNyZWF0aW9uU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoZGlhZ3JhbVNlcnZpY2UpO1xyXG4gICAgdGhpcy5lbGVtZW50VHlwZSA9ICdDaG9pY2VEYXRhRWxlbWVudCc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJldHVybkNob2ljZShjaG9pY2VJdGVtOiBhbnkpOiBDaG9pY2Uge1xyXG4gICAgY29uc3QgY2hvaWNlID0gbmV3IENob2ljZSgpO1xyXG4gICAgY2hvaWNlLmxhYmVsID0gY2hvaWNlSXRlbS5MYWJlbDtcclxuICAgIGNob2ljZS52YWx1ZSA9IGNob2ljZUl0ZW0uVmFsdWU7XHJcbiAgICBjaG9pY2UuaGludCA9IGNob2ljZUl0ZW0uSGludDtcclxuICAgIGNob2ljZS5yZXBvcnRUZXh0ID0gY2hvaWNlSXRlbS5SZXBvcnRUZXh0O1xyXG4gICAgY2hvaWNlLmRlZmF1bHQgPSBmYWxzZTtcclxuICAgIGlmIChjaG9pY2VJdGVtLkF0dHIgJiYgY2hvaWNlSXRlbS5BdHRyLklzRGVmYXVsdCkge1xyXG4gICAgICBjaG9pY2UuZGVmYXVsdCA9IGNob2ljZUl0ZW0uQXR0ci5Jc0RlZmF1bHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY2hvaWNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXR1cm5BcmVhKGFyZWFKU09OOiBhbnkpOiBBcmVhIHtcclxuICAgIGNvbnN0IGFyZWEgPSBuZXcgQXJlYSgpO1xyXG4gICAgYXJlYS5jaG9pY2VWYWx1ZSA9IGFyZWFKU09OLkF0dHIuQ2hvaWNlVmFsdWU7XHJcbiAgICBhcmVhLmNvb3JkcyA9IGFyZWFKU09OLkF0dHIuQ29vcmRzO1xyXG4gICAgYXJlYS5zaGFwZSA9IGFyZWFKU09OLkF0dHIuU2hhcGU7XHJcbiAgICByZXR1cm4gYXJlYTtcclxuICB9XHJcblxyXG5cclxuICBjcmVhdGVFbGVtZW50KGRhdGE6IGFueSk6IEJhc2VEYXRhRWxlbWVudCB7XHJcbiAgICBjb25zdCBkYXRhRWxlbWVudCA9IG5ldyBDaG9pY2VEYXRhRWxlbWVudCgpO1xyXG4gICAgc3VwZXIucG9wdWxhdGVCYXNpY0RhdGEoZGF0YSwgZGF0YUVsZW1lbnQpO1xyXG4gICAgZGF0YUVsZW1lbnQuYWxsb3dGcmVldGV4dCA9IGRhdGEuQXR0ci5BbGxvd0ZyZWV0ZXh0ID8gZGF0YS5BdHRyLkFsbG93RnJlZXRleHQgOiBmYWxzZTtcclxuICAgIGNvbnN0IGNob2ljZUl0ZW1zID0gZGF0YS5DaG9pY2VJbmZvLkNob2ljZTtcclxuICAgIGxldCBkZWZhdWx0VmFsdWU6IGFueTtcclxuICAgIGlmIChjaG9pY2VJdGVtcyAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGRhdGFFbGVtZW50LmNob2ljZUluZm8gPSBuZXcgQXJyYXk8Q2hvaWNlPigpO1xyXG4gICAgICBpZiAodGhpcy5hcnJheUNoZWNrZXJTZXJ2aWNlLmlzQXJyYXkoY2hvaWNlSXRlbXMpKSB7XHJcbiAgICAgICAgZm9yIChjb25zdCBjaG9pY2VJdGVtIG9mIGNob2ljZUl0ZW1zKSB7XHJcbiAgICAgICAgICBjb25zdCBjaG9pY2UgPSB0aGlzLnJldHVybkNob2ljZShjaG9pY2VJdGVtKTtcclxuICAgICAgICAgIGlmIChjaG9pY2UuZGVmYXVsdCkge1xyXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWUgPSBjaG9pY2UudmFsdWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBkYXRhRWxlbWVudC5jaG9pY2VJbmZvLnB1c2goY2hvaWNlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgY2hvaWNlID0gdGhpcy5yZXR1cm5DaG9pY2UoY2hvaWNlSXRlbXMpO1xyXG4gICAgICAgIGlmIChjaG9pY2UuZGVmYXVsdCkge1xyXG4gICAgICAgICAgZGVmYXVsdFZhbHVlID0gY2hvaWNlLnZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkYXRhRWxlbWVudC5jaG9pY2VJbmZvLnB1c2goY2hvaWNlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZGF0YUVsZW1lbnQuZGVmYXVsdFZhbHVlID0gZGVmYXVsdFZhbHVlO1xyXG4gICAgZGF0YUVsZW1lbnQuY3VycmVudFZhbHVlID0gZGVmYXVsdFZhbHVlO1xyXG4gICAgY29uc3QgaW1hZ2VNYXAgPSBkYXRhLkltYWdlTWFwO1xyXG4gICAgaWYgKGltYWdlTWFwICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgZGF0YUVsZW1lbnQuaW1hZ2VNYXAgPSBuZXcgSW1hZ2VNYXAoKTtcclxuICAgICAgZGF0YUVsZW1lbnQuaW1hZ2VNYXAubG9jYXRpb24gPSBpbWFnZU1hcC5Mb2NhdGlvbjtcclxuICAgICAgY29uc3QgYXJlYU1hcHMgPSBpbWFnZU1hcC5NYXAuQXJlYTtcclxuICAgICAgaWYgKGFyZWFNYXBzICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICBkYXRhRWxlbWVudC5pbWFnZU1hcC5tYXAgPSBuZXcgQXJlYU1hcCgpO1xyXG4gICAgICAgIGRhdGFFbGVtZW50LmltYWdlTWFwLm1hcC5hcmVhcyA9IG5ldyBBcnJheTxBcmVhPigpO1xyXG4gICAgICAgIGlmICh0aGlzLmFycmF5Q2hlY2tlclNlcnZpY2UuaXNBcnJheShhcmVhTWFwcykpIHtcclxuICAgICAgICAgIGZvciAoY29uc3QgYXJlYU1hcCBvZiBhcmVhTWFwcykge1xyXG4gICAgICAgICAgICBkYXRhRWxlbWVudC5pbWFnZU1hcC5tYXAuYXJlYXMucHVzaCh0aGlzLnJldHVybkFyZWEoYXJlYU1hcCkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBkYXRhRWxlbWVudC5pbWFnZU1hcC5tYXAuYXJlYXMucHVzaCh0aGlzLnJldHVybkFyZWEoYXJlYU1hcHMpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgY29uc3QgQ29uZGl0aW9uYWxQcm9wZXJ0aWVzID0gZGF0YS5Db25kaXRpb25hbFByb3BlcnRpZXM7XHJcbiAgICBpZiAoQ29uZGl0aW9uYWxQcm9wZXJ0aWVzICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgY29uc3Qgbm90UmVsZXZhbnREYXRhRWxlbWVudHMgPSBuZXcgTm90UmVsZXZhbnREYXRhRWxlbWVudHMoKTtcclxuICAgICAgY29uc3QgZGF0YUVsZW1lbnRSZWZzID0gZGF0YS5Db25kaXRpb25hbFByb3BlcnRpZXM7XHJcbiAgICAgIC8vIC5Ob3RSZWxldmFudERhdGFFbGVtZW50cy5EYXRhRWxlbWVudFJlZjtcclxuXHJcbiAgICAgIGlmIChkYXRhLkNvbmRpdGlvbmFsUHJvcGVydGllcyAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgZGF0YUVsZW1lbnQuY29uZGl0aW9uYWxQcm9wZXJ0aWVzID0gbmV3IEFycmF5PENvbmRpdGlvbmFsUHJvcGVydHk+KCk7XHJcbiAgICAgICAgaWYgKGRhdGEuQ29uZGl0aW9uYWxQcm9wZXJ0aWVzLkNvbmRpdGlvbmFsUHJvcGVydHkgaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgICAgICAgZm9yIChjb25zdCBjb25kaXRpb25hbFByb3BlcnR5IG9mIGRhdGEuQ29uZGl0aW9uYWxQcm9wZXJ0aWVzLkNvbmRpdGlvbmFsUHJvcGVydHkpIHtcclxuICAgICAgICAgICAgZGF0YUVsZW1lbnQuY29uZGl0aW9uYWxQcm9wZXJ0aWVzLnB1c2godGhpcy5HZXRDb25kaXRpb25hbFByb3BlcnRpZXMoY29uZGl0aW9uYWxQcm9wZXJ0eSkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBkYXRhRWxlbWVudC5jb25kaXRpb25hbFByb3BlcnRpZXMucHVzaCh0aGlzLkdldENvbmRpdGlvbmFsUHJvcGVydGllcyhkYXRhLkNvbmRpdGlvbmFsUHJvcGVydGllcy5Db25kaXRpb25hbFByb3BlcnR5KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGRhdGFFbGVtZW50O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBHZXRDb25kaXRpb25hbFByb3BlcnRpZXMoY29uZGl0aW9uYWxQcm9wZXJ0eSk6IENvbmRpdGlvbmFsUHJvcGVydHkge1xyXG4gICAgY29uc3QgX2NvbmRpdGlvbmFsUHJvcGVydHkgPSBuZXcgQ29uZGl0aW9uYWxQcm9wZXJ0eSgpO1xyXG4gICAgX2NvbmRpdGlvbmFsUHJvcGVydHkuY29uZGl0aW9uID0gdGhpcy5jb25kaXRpb25zQ3JlYXRpb25TZXJ2aWNlLnJldHVybkNvbmRpdGlvbihjb25kaXRpb25hbFByb3BlcnR5KTtcclxuICAgIC8vIHZhciB0ZXN0ID0gdGhpcy5jb21wdXRlZFZhbHVlQ3JlYXRpb25TZXJ2aWNlLmNyZWF0ZUNvbXB1dGVkVmFsdWUoY29uZGl0aW9uYWxQcm9wZXJ0eSk7XHJcbiAgICBpZiAodGhpcy5jb25kaXRpb25zQ3JlYXRpb25TZXJ2aWNlLmlzQ29tcG9zaXRlKGNvbmRpdGlvbmFsUHJvcGVydHkpKSB7XHJcbiAgICAgIF9jb25kaXRpb25hbFByb3BlcnR5LmNvbXBvc2l0ZUNvbmRpdGlvbiA9IHRoaXMuY29uZGl0aW9uc0NyZWF0aW9uU2VydmljZS5yZXR1cm5Db21wb3NpdGVDb25kaXRpb24oY29uZGl0aW9uYWxQcm9wZXJ0eSk7XHJcbiAgICB9XHJcblxyXG4gICAgX2NvbmRpdGlvbmFsUHJvcGVydHkuaXNSZWxldmFudCA9IGNvbmRpdGlvbmFsUHJvcGVydHkuSXNSZWxldmFudDtcclxuICAgIF9jb25kaXRpb25hbFByb3BlcnR5LmlzUmVxdWlyZWQgPSBjb25kaXRpb25hbFByb3BlcnR5LklzUmVxdWlyZWQ7XHJcbiAgICBfY29uZGl0aW9uYWxQcm9wZXJ0eS5EaXNwbGF5U2VxdWVuY2UgPSBjb25kaXRpb25hbFByb3BlcnR5LkRpc3BsYXlTZXF1ZW5jZTtcclxuICAgIGlmIChjb25kaXRpb25hbFByb3BlcnR5LkNob2ljZU5vdFJlbGV2YW50ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgX2NvbmRpdGlvbmFsUHJvcGVydHkuQ2hvaWNlTm90UmVsZXZhbnQgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xyXG4gICAgICBmb3IgKGNvbnN0IGNob2ljZU5vdFJlbGV2YW50IG9mIGNvbmRpdGlvbmFsUHJvcGVydHkuQ2hvaWNlTm90UmVsZXZhbnQpIHtcclxuICAgICAgICBfY29uZGl0aW9uYWxQcm9wZXJ0eS5DaG9pY2VOb3RSZWxldmFudC5wdXNoKGNob2ljZU5vdFJlbGV2YW50LkF0dHIuQ2hvaWNlVmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIF9jb25kaXRpb25hbFByb3BlcnR5O1xyXG4gIH1cclxufVxyXG4iXX0=