@provoly/hypervisor 0.0.64 → 0.0.66
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.
- package/esm2022/src/lib/event/detail/event-detail.component.mjs +3 -3
- package/esm2022/src/lib/general/i18n/en.translations.mjs +7 -1
- package/esm2022/src/lib/general/i18n/fr.translations.mjs +7 -1
- package/esm2022/src/lib/general/procedure-actions/action-menu.component.mjs +28 -0
- package/esm2022/src/lib/general/procedure-actions/action-parameters/action-parameter.component.mjs +42 -0
- package/esm2022/src/lib/general/procedure-actions/action-parameters/base-parameter-action.component.mjs +20 -0
- package/esm2022/src/lib/general/procedure-actions/action-parameters/other/other-action-parameter.component.mjs +16 -0
- package/esm2022/src/lib/general/procedure-actions/actions-types.constant.mjs +12 -0
- package/esm2022/src/lib/general/procedure-actions/procedure-actions.component.mjs +78 -23
- package/esm2022/src/lib/general/public-api.mjs +7 -1
- package/esm2022/src/lib/hypervisor.module.mjs +20 -4
- package/esm2022/src/lib/model/entites.constant.mjs +4 -0
- package/esm2022/src/lib/model/procedure/hyp-action.interface.mjs +1 -1
- package/esm2022/src/lib/model/public-api.mjs +2 -1
- package/esm2022/src/lib/procedure/model-detail/procedure-model-detail.component.mjs +14 -12
- package/esm2022/src/lib/store/event/event.effects.mjs +2 -2
- package/esm2022/src/lib/store/event/event.service.mjs +2 -2
- package/fesm2022/provoly-hypervisor.mjs +236 -52
- package/fesm2022/provoly-hypervisor.mjs.map +1 -1
- package/package.json +1 -1
- package/src/lib/general/i18n/en.translations.d.ts +6 -0
- package/src/lib/general/i18n/fr.translations.d.ts +6 -0
- package/src/lib/general/procedure-actions/action-menu.component.d.ts +19 -0
- package/src/lib/general/procedure-actions/action-parameters/action-parameter.component.d.ts +15 -0
- package/src/lib/general/procedure-actions/action-parameters/base-parameter-action.component.d.ts +12 -0
- package/src/lib/general/procedure-actions/action-parameters/other/other-action-parameter.component.d.ts +7 -0
- package/src/lib/general/procedure-actions/actions-types.constant.d.ts +7 -0
- package/src/lib/general/procedure-actions/procedure-actions.component.d.ts +14 -9
- package/src/lib/general/public-api.d.ts +6 -0
- package/src/lib/hypervisor.module.d.ts +13 -9
- package/src/lib/model/entites.constant.d.ts +3 -0
- package/src/lib/model/procedure/hyp-action.interface.d.ts +2 -1
- package/src/lib/model/public-api.d.ts +1 -0
- package/src/lib/store/event/event.service.d.ts +1 -1
- package/styles/components/_index.scss +1 -0
- package/styles/components/_o-hvy-action-menu.scss +9 -0
- package/styles/components/_o-hvy-event-detail.scss +11 -1
|
@@ -338,11 +338,11 @@ export class EventDetailComponent extends SubscriptionnerDirective {
|
|
|
338
338
|
this._outputModifications();
|
|
339
339
|
}
|
|
340
340
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: EventDetailComponent, deps: [{ token: i1.EquipmentService }, { token: i2.Store }, { token: i3.Overlay }, { token: i0.ViewContainerRef }, { token: i4.PrySnackbarService }, { token: i4.PryI18nService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
341
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.4", type: EventDetailComponent, selector: "hvy-event-detail", inputs: { title: "title", events: "events", procedure: "procedure", cancelModifications: "cancelModifications", equipmentName: "equipmentName" }, outputs: { modifiedEvents: "modifiedEvents", modifiedProcedure: "modifiedProcedure", eventErrors: "eventErrors" }, viewQueries: [{ propertyName: "confirmDialog", first: true, predicate: ["confirmDialog"], descendants: true, read: TemplateRef }], usesInheritance: true, ngImport: i0, template: "<div class=\"o-hvy-events-detail\">\n <div class=\"o-hvy-events-detail__header\">\n <div class=\"o-hvy-events-detail__header__split\">\n <h1>{{ title ?? '@hvy.event.detail' | i18n }}</h1>\n @if (events.length > 1) {\n @if (canCloseSome) {\n <button class=\"a-btn a-btn--secondary -fix-right\" [disabled]=\"!canCloseSome\" (click)=\"closeAll()\">\n {{ (canCloseSome ? '@hvy.event.log.event.close' : '@hvy.event.log.event.closed') | i18n }}\n </button>\n }\n @if (!canCloseSome) {\n <div\n class=\"a-tooltip\"\n [attr.data-tooltip]=\"'... TODO: get closing comment ...'\"\n data-tooltip-position=\"bottom\"\n >\n <pry-icon iconSvg=\"i\" [height]=\"18\" [width]=\"18\">i</pry-icon>\n </div>\n }\n }\n </div>\n <div class=\"o-hvy-events-detail__header__split\">\n @if (canCloseSome) {\n <button class=\"a-btn a-btn--secondary\">{{ '@hvy.event.log.procedure.delete' | i18n }}</button>\n }\n </div>\n </div>\n <div class=\"o-hvy-events-detail__container\">\n <div class=\"o-hvy-events-detail__container__scrollable\">\n <div class=\"o-hvy-events-detail__events\">\n @for (event of events; track event.id; let idx = $index) {\n <div class=\"o-hvy-events-detail__events__event\">\n <div class=\"o-hvy-events-detail__events__event__header\">\n <pry-icon\n iconSvg=\"arrow_down_rounded\"\n [class.-rotated]=\"opened[idx]\"\n (click)=\"toggle(idx)\"\n [width]=\"10\"\n [height]=\"10\"\n ></pry-icon>\n <hvy-icon-display [event]=\"event\"></hvy-icon-display>\n <h2>{{ event.name }}</h2>\n <hvy-status-display\n [item]=\"event\"\n [modifiable]=\"event.status !== 'DONE'\"\n (modified)=\"changeStatus($event, event)\"\n ></hvy-status-display>\n </div>\n <div class=\"o-hvy-events-detail__events__event__content\">\n @if (!opened[idx]) {\n <div>{{ '@hvy.event.log.event.description' | i18n }} : {{ event.description }}</div>\n <div>{{ '@hvy.event.log.event.address' | i18n }} : {{ event.address }}</div>\n } @else {\n @if (access(event); as accessValue) {\n <div class=\"o-hvy-events-detail__events__event__content__header\">\n <h3>{{ '@hvy.event.log.event.detail' | i18n }}</h3>\n <span class=\"required\">{{ '@hvy.event.log.event.mandatory' | i18n }}</span>\n </div>\n <table>\n <tbody>\n <tr>\n <td>{{ '@hvy.event.log.event.name' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('name', idx)\"\n [value]=\"event.name\"\n (change)=\"modifyEvent(idx, 'name', $event)\"\n [readonly]=\"accessValue.name\"\n />\n </td>\n </tr>\n @if (event.id > 0) {\n <tr>\n <td>{{ '@hvy.event.log.event.id' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input type=\"text\" class=\"a-form-field\" [value]=\"padId.fn(event.id)\" [readonly]=\"true\" />\n </td>\n </tr>\n }\n <tr>\n <td>{{ '@hvy.event.log.event.category' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <pry-select\n [ngModel]=\"event.category\"\n [items]=\"categories(event)\"\n [class.-error]=\"hasError('category', idx)\"\n (ngModelChange)=\"modifyEvent(idx, 'category', $event)\"\n i18nPrefix=\"@hvy.event.category.\"\n [disabled]=\"accessValue.category\"\n ></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.criticality.name' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <pry-select\n [ngModel]=\"event.criticality\"\n [items]=\"criticalities\"\n [class.-error]=\"hasError('criticality', idx)\"\n i18nPrefix=\"@hvy.event.criticality.\"\n [disabled]=\"accessValue.criticality\"\n (ngModelChange)=\"modifyEvent(idx, 'criticality', $event)\"\n ></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.description' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <textarea\n [ngModel]=\"event.description\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('description', idx)\"\n [readonly]=\"accessValue.description\"\n (ngModelChange)=\"modifyEvent(idx, 'description', $event)\"\n ></textarea>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.address' | i18n }} :</td>\n <td>\n <textarea\n [ngModel]=\"event.address\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('address', idx)\"\n [readonly]=\"accessValue.address\"\n (ngModelChange)=\"modifyEvent(idx, 'address', $event)\"\n ></textarea>\n </td>\n </tr>\n @if (['ALERT', 'REPORT'].includes(event.type)) {\n <tr>\n <td>{{ '@hvy.event.source' | i18n }} :</td>\n <td>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [value]=\"event.externalSourceRef ?? ''\"\n [class.-error]=\"hasError('source', idx)\"\n [readonly]=\"accessValue.source\"\n (change)=\"modifyEvent(idx, 'source', $event)\"\n />\n </td>\n </tr>\n }\n <tr>\n <td>{{ '@hvy.event.equipment' | i18n }} :</td>\n <td>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [value]=\"event.equipment?.name ?? ''\"\n [class.-error]=\"hasError('equipment', idx)\"\n [readonly]=\"accessValue.eqName\"\n (change)=\"changeEquipment(idx, $event)\"\n />\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.equipmentEntity' | i18n }} :</td>\n <td>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('equipment', idx)\"\n [value]=\"event.equipment?.entity ?? ''\"\n readonly\n />\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.domain.name' | i18n }} :</td>\n <td>\n <pry-select\n [items]=\"DOMAINS\"\n [ngModel]=\"event.domain\"\n i18nPrefix=\"@hvy.event.domain.\"\n [class.-error]=\"hasError('domain', idx)\"\n (ngModelChange)=\"modifyEvent(idx, 'domain', $event)\"\n [disabled]=\"accessValue.domain\"\n ></pry-select>\n </td>\n </tr>\n <tr>\n <td>\n {{ '@hvy.event.startDate' | i18n }}\n @if (event.category === 'MANIFESTATION') {\n <span class=\"required\">*</span>\n }\n :\n </td>\n <td>\n <input\n type=\"datetime-local\"\n step=\"1\"\n class=\"a-form-field\"\n [value]=\"event.startDate | forDateTimeLocal\"\n [class.-error]=\"hasError('startDate', idx)\"\n [readonly]=\"accessValue.startDate\"\n (change)=\"modifyEvent(idx, 'startDate', $event)\"\n />\n </td>\n </tr>\n <tr>\n <td>\n {{ '@hvy.event.endDate' | i18n }}\n @if (event.category === 'MANIFESTATION') {\n <span class=\"required\">*</span>\n }\n :\n </td>\n <td>\n <input\n type=\"datetime-local\"\n step=\"1\"\n class=\"a-form-field\"\n [value]=\"event.endDate | forDateTimeLocal\"\n [class.-error]=\"hasError('endDate', idx)\"\n [readonly]=\"accessValue.endDate\"\n (change)=\"modifyEvent(idx, 'endDate', $event)\"\n />\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.creationDate' | i18n }} :</td>\n <td>\n <input\n type=\"datetime-local\"\n step=\"1\"\n class=\"a-form-field\"\n [value]=\"event.creationDate | forDateTimeLocal\"\n readonly\n />\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.lastModificationDate' | i18n }} :</td>\n <td>\n <input\n type=\"datetime-local\"\n step=\"1\"\n class=\"a-form-field\"\n [value]=\"event.lastModificationDate | forDateTimeLocal\"\n readonly\n />\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.closeDate' | i18n }} :</td>\n <td>\n <input\n type=\"datetime-local\"\n step=\"1\"\n class=\"a-form-field\"\n [value]=\"event.closeDate | forDateTimeLocal\"\n readonly\n />\n </td>\n </tr>\n </tbody>\n </table>\n <div class=\"o-hvy-events-detail__events__event__content__comments\">\n <h3>{{ '@hvy.event.log.event.comments.name' | i18n }} :</h3>\n <textarea\n [placeholder]=\"('@hvy.event.log.event.comments.placeholder' | i18n) + '...'\"\n [(ngModel)]=\"newComentContent\"\n ></textarea>\n <div class=\"o-hvy-events-detail__events__event__content__comments__button\">\n <button class=\"a-btn a-btn--primary\" [disabled]=\"newComentContent.length === 0\">\n {{ '@hvy.action.comment' | i18n }}\n </button>\n </div>\n </div>\n }\n }\n </div>\n </div>\n }\n </div>\n <div class=\"o-hvy-events-detail__procedure\">\n <div class=\"o-hvy-events-detail__procedure__header\">\n <h2>\n {{ (events.length === 1 ? '@hvy.event.log.procedure.name1' : '@hvy.event.log.procedure.name') | i18n }}\n </h2>\n </div>\n @if (procedure) {\n <div class=\"o-hvy-events-detail__procedure__description\">\n <p>{{ procedure.description }}</p>\n </div>\n <div class=\"o-hvy-events-detail__procedure__progress\">\n <p>{{ '@hvy.event.log.procedure.progress' | i18n }}</p>\n <hvy-progress-display [progress]=\"calculatedProgress\"></hvy-progress-display>\n </div>\n <hvy-procedure-actions\n [actions]=\"procedure.actions\"\n (modified)=\"modifiedActions($event)\"\n ></hvy-procedure-actions>\n } @else {\n <button class=\"a-btn a-btn--secondary\" [disabled]=\"!canAssociateProcedure\">\n {{ '@hvy.action.associate' | i18n }}\n </button>\n }\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #confirmDialog>\n <div\n class=\"o-hvy-close-confirm__dialog\"\n aria-labelledby=\"confirm\"\n tabindex=\"-1\"\n id=\"choice\"\n role=\"dialog\"\n aria-modal=\"true\"\n >\n <h2>\n {{\n (changeStatusContext.events.length === 1 ? '@hvy.event.close.oneTitle' : '@hvy.event.close.multiTitle') | i18n\n }}\n </h2>\n <p>{{ (changeStatusContext.events.length === 1 ? '@hvy.event.close.one' : '@hvy.event.close.multi') | i18n }}</p>\n <ul>\n @for (event of changeStatusContext.events; track event.id) {\n <li>{{ event.name }}</li>\n }\n </ul>\n <p class=\"o-hvy-close-confirm__dialog__comment-title\">\n {{ '@hvy.event.close.comment' | i18n }}<span class=\"required\">*</span> :\n </p>\n <div class=\"o-hvy-close-confirm__dialog__comment\">\n <textarea [(ngModel)]=\"changeStatusContext.comment\" class=\"a-form-field\" [maxLength]=\"255\"></textarea>\n </div>\n <div class=\"o-hvy-close-confirm__dialog__actions\">\n <button class=\"a-btn a-btn--primary\" (click)=\"confirmedClose()\" [disabled]=\"confirmDisabled()\">\n {{ '@hvy.action.validate' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"toggleConfirm()\">{{ '@hvy.action.cancel' | i18n }}</button>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i4.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked"] }, { kind: "component", type: i6.IconDisplayComponent, selector: "hvy-icon-display", inputs: ["event"] }, { kind: "component", type: i7.StatusDisplayComponent, selector: "hvy-status-display", inputs: ["item", "modifiable"], outputs: ["modified"] }, { kind: "component", type: i8.ProgressDisplayComponent, selector: "hvy-progress-display", inputs: ["progress"] }, { kind: "component", type: i9.ProcedureActionsComponent, selector: "hvy-procedure-actions", inputs: ["actions"], outputs: ["modified"] }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }, { kind: "pipe", type: i10.ForDatetimeLocalPipe, name: "forDateTimeLocal" }] }); }
|
|
341
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.4", type: EventDetailComponent, selector: "hvy-event-detail", inputs: { title: "title", events: "events", procedure: "procedure", cancelModifications: "cancelModifications", equipmentName: "equipmentName" }, outputs: { modifiedEvents: "modifiedEvents", modifiedProcedure: "modifiedProcedure", eventErrors: "eventErrors" }, viewQueries: [{ propertyName: "confirmDialog", first: true, predicate: ["confirmDialog"], descendants: true, read: TemplateRef }], usesInheritance: true, ngImport: i0, template: "<div class=\"o-hvy-events-detail\">\n <div class=\"o-hvy-events-detail__header\">\n <div class=\"o-hvy-events-detail__header__split\">\n <h1>{{ title ?? '@hvy.event.detail' | i18n }}</h1>\n @if (events.length > 1) {\n @if (canCloseSome) {\n <button class=\"a-btn a-btn--secondary -fix-right\" [disabled]=\"!canCloseSome\" (click)=\"closeAll()\">\n {{ (canCloseSome ? '@hvy.event.log.event.close' : '@hvy.event.log.event.closed') | i18n }}\n </button>\n }\n @if (!canCloseSome) {\n <div\n class=\"a-tooltip\"\n [attr.data-tooltip]=\"'... TODO: get closing comment ...'\"\n data-tooltip-position=\"bottom\"\n >\n <pry-icon iconSvg=\"i\" [height]=\"18\" [width]=\"18\">i</pry-icon>\n </div>\n }\n }\n </div>\n <div class=\"o-hvy-events-detail__header__split\">\n @if (canCloseSome) {\n <button class=\"a-btn a-btn--secondary\">{{ '@hvy.event.log.procedure.delete' | i18n }}</button>\n }\n </div>\n </div>\n <div class=\"o-hvy-events-detail__container\">\n <div class=\"o-hvy-events-detail__container__scrollable\">\n <div class=\"o-hvy-events-detail__events\">\n @for (event of events; track event.id; let idx = $index) {\n <div class=\"o-hvy-events-detail__events__event\">\n <div class=\"o-hvy-events-detail__events__event__header\">\n <pry-icon\n iconSvg=\"arrow_down_rounded\"\n [class.-rotated]=\"opened[idx]\"\n (click)=\"toggle(idx)\"\n [width]=\"10\"\n [height]=\"10\"\n ></pry-icon>\n <hvy-icon-display [event]=\"event\"></hvy-icon-display>\n <h2>{{ event.name }}</h2>\n <hvy-status-display\n [item]=\"event\"\n [modifiable]=\"event.status !== 'DONE'\"\n (modified)=\"changeStatus($event, event)\"\n ></hvy-status-display>\n </div>\n <div class=\"o-hvy-events-detail__events__event__content\">\n @if (!opened[idx]) {\n <div>{{ '@hvy.event.log.event.description' | i18n }} : {{ event.description }}</div>\n <div>{{ '@hvy.event.log.event.address' | i18n }} : {{ event.address }}</div>\n } @else {\n @if (access(event); as accessValue) {\n <div class=\"o-hvy-events-detail__events__event__content__header\">\n <h3>{{ '@hvy.event.log.event.detail' | i18n }}</h3>\n <span class=\"required\">{{ '@hvy.event.log.event.mandatory' | i18n }}</span>\n </div>\n <table>\n <tbody>\n <tr>\n <td>{{ '@hvy.event.log.event.name' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('name', idx)\"\n [value]=\"event.name\"\n (change)=\"modifyEvent(idx, 'name', $event)\"\n [readonly]=\"accessValue.name\"\n />\n </td>\n </tr>\n @if (event.id > 0) {\n <tr>\n <td>{{ '@hvy.event.log.event.id' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input type=\"text\" class=\"a-form-field\" [value]=\"padId.fn(event.id)\" [readonly]=\"true\" />\n </td>\n </tr>\n }\n <tr>\n <td>{{ '@hvy.event.log.event.category' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <pry-select\n [ngModel]=\"event.category\"\n [items]=\"categories(event)\"\n [class.-error]=\"hasError('category', idx)\"\n (ngModelChange)=\"modifyEvent(idx, 'category', $event)\"\n i18nPrefix=\"@hvy.event.category.\"\n [disabled]=\"accessValue.category\"\n ></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.criticality.name' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <pry-select\n [ngModel]=\"event.criticality\"\n [items]=\"criticalities\"\n [class.-error]=\"hasError('criticality', idx)\"\n i18nPrefix=\"@hvy.event.criticality.\"\n [disabled]=\"accessValue.criticality\"\n (ngModelChange)=\"modifyEvent(idx, 'criticality', $event)\"\n ></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.description' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <textarea\n [ngModel]=\"event.description\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('description', idx)\"\n [readonly]=\"accessValue.description\"\n (ngModelChange)=\"modifyEvent(idx, 'description', $event)\"\n ></textarea>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.address' | i18n }} :</td>\n <td>\n <textarea\n [ngModel]=\"event.address\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('address', idx)\"\n [readonly]=\"accessValue.address\"\n (ngModelChange)=\"modifyEvent(idx, 'address', $event)\"\n ></textarea>\n </td>\n </tr>\n @if (['ALERT', 'REPORT'].includes(event.type)) {\n <tr>\n <td>{{ '@hvy.event.source' | i18n }} :</td>\n <td>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [value]=\"event.externalSourceRef ?? ''\"\n [class.-error]=\"hasError('source', idx)\"\n [readonly]=\"accessValue.source\"\n (change)=\"modifyEvent(idx, 'source', $event)\"\n />\n </td>\n </tr>\n }\n <tr>\n <td>{{ '@hvy.event.equipment' | i18n }} :</td>\n <td>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [value]=\"event.equipment?.name ?? ''\"\n [class.-error]=\"hasError('equipment', idx)\"\n [readonly]=\"accessValue.eqName\"\n (change)=\"changeEquipment(idx, $event)\"\n />\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.equipmentEntity' | i18n }} :</td>\n <td>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('equipment', idx)\"\n [value]=\"\n (event.equipment?.entity ? '@hvy.event.entity.' + event.equipment?.entity : '') | i18n\n \"\n readonly\n />\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.domain.name' | i18n }} :</td>\n <td>\n <pry-select\n [items]=\"DOMAINS\"\n [ngModel]=\"event.domain\"\n i18nPrefix=\"@hvy.event.domain.\"\n [class.-error]=\"hasError('domain', idx)\"\n (ngModelChange)=\"modifyEvent(idx, 'domain', $event)\"\n [disabled]=\"accessValue.domain\"\n ></pry-select>\n </td>\n </tr>\n <tr>\n <td>\n {{ '@hvy.event.startDate' | i18n }}\n @if (event.category === 'MANIFESTATION') {\n <span class=\"required\">*</span>\n }\n :\n </td>\n <td>\n <input\n type=\"datetime-local\"\n step=\"1\"\n class=\"a-form-field\"\n [value]=\"event.startDate | forDateTimeLocal\"\n [class.-error]=\"hasError('startDate', idx)\"\n [readonly]=\"accessValue.startDate\"\n (change)=\"modifyEvent(idx, 'startDate', $event)\"\n />\n </td>\n </tr>\n <tr>\n <td>\n {{ '@hvy.event.endDate' | i18n }}\n @if (event.category === 'MANIFESTATION') {\n <span class=\"required\">*</span>\n }\n :\n </td>\n <td>\n <input\n type=\"datetime-local\"\n step=\"1\"\n class=\"a-form-field\"\n [value]=\"event.endDate | forDateTimeLocal\"\n [class.-error]=\"hasError('endDate', idx)\"\n [readonly]=\"accessValue.endDate\"\n (change)=\"modifyEvent(idx, 'endDate', $event)\"\n />\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.creationDate' | i18n }} :</td>\n <td>\n <input\n type=\"datetime-local\"\n step=\"1\"\n class=\"a-form-field\"\n [value]=\"event.creationDate | forDateTimeLocal\"\n readonly\n />\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.lastModificationDate' | i18n }} :</td>\n <td>\n <input\n type=\"datetime-local\"\n step=\"1\"\n class=\"a-form-field\"\n [value]=\"event.lastModificationDate | forDateTimeLocal\"\n readonly\n />\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.closeDate' | i18n }} :</td>\n <td>\n <input\n type=\"datetime-local\"\n step=\"1\"\n class=\"a-form-field\"\n [value]=\"event.closeDate | forDateTimeLocal\"\n readonly\n />\n </td>\n </tr>\n </tbody>\n </table>\n <div class=\"o-hvy-events-detail__events__event__content__comments\">\n <h3>{{ '@hvy.event.log.event.comments.name' | i18n }} :</h3>\n <textarea\n [placeholder]=\"('@hvy.event.log.event.comments.placeholder' | i18n) + '...'\"\n [(ngModel)]=\"newComentContent\"\n ></textarea>\n <div class=\"o-hvy-events-detail__events__event__content__comments__button\">\n <button class=\"a-btn a-btn--primary\" [disabled]=\"newComentContent.length === 0\">\n {{ '@hvy.action.comment' | i18n }}\n </button>\n </div>\n </div>\n }\n }\n </div>\n </div>\n }\n </div>\n <div class=\"o-hvy-events-detail__procedure\">\n <div class=\"o-hvy-events-detail__procedure__header\">\n <h2>\n {{ (events.length === 1 ? '@hvy.event.log.procedure.name1' : '@hvy.event.log.procedure.name') | i18n }}\n </h2>\n </div>\n @if (procedure) {\n <div class=\"o-hvy-events-detail__procedure__description\">\n <p>{{ procedure.description }}</p>\n </div>\n <div class=\"o-hvy-events-detail__procedure__progress\">\n <p>{{ '@hvy.event.log.procedure.progress' | i18n }}</p>\n <hvy-progress-display [progress]=\"calculatedProgress\"></hvy-progress-display>\n </div>\n <hvy-procedure-actions\n [actions]=\"procedure.actions\"\n (modified)=\"modifiedActions($event)\"\n ></hvy-procedure-actions>\n } @else {\n <button class=\"a-btn a-btn--secondary\" [disabled]=\"!canAssociateProcedure\">\n {{ '@hvy.action.associate' | i18n }}\n </button>\n }\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #confirmDialog>\n <div\n class=\"o-hvy-close-confirm__dialog\"\n aria-labelledby=\"confirm\"\n tabindex=\"-1\"\n id=\"choice\"\n role=\"dialog\"\n aria-modal=\"true\"\n >\n <h2>\n {{\n (changeStatusContext.events.length === 1 ? '@hvy.event.close.oneTitle' : '@hvy.event.close.multiTitle') | i18n\n }}\n </h2>\n <p>{{ (changeStatusContext.events.length === 1 ? '@hvy.event.close.one' : '@hvy.event.close.multi') | i18n }}</p>\n <ul>\n @for (event of changeStatusContext.events; track event.id) {\n <li>{{ event.name }}</li>\n }\n </ul>\n <p class=\"o-hvy-close-confirm__dialog__comment-title\">\n {{ '@hvy.event.close.comment' | i18n }}<span class=\"required\">*</span> :\n </p>\n <div class=\"o-hvy-close-confirm__dialog__comment\">\n <textarea [(ngModel)]=\"changeStatusContext.comment\" class=\"a-form-field\" [maxLength]=\"255\"></textarea>\n </div>\n <div class=\"o-hvy-close-confirm__dialog__actions\">\n <button class=\"a-btn a-btn--primary\" (click)=\"confirmedClose()\" [disabled]=\"confirmDisabled()\">\n {{ '@hvy.action.validate' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"toggleConfirm()\">{{ '@hvy.action.cancel' | i18n }}</button>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i4.PrySelectComponent, selector: "pry-select", inputs: ["items", "clearable", "multiple", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "autocomplete", "alwaysShowAutosuggestedValues", "externalAutocompleteService", "bindValue", "bindLabel", "iconSize", "bindIcon", "template", "i18nPrefix", "bindClasses", "loading", "elementRef"], outputs: ["searched", "cleared", "clicked"] }, { kind: "component", type: i6.IconDisplayComponent, selector: "hvy-icon-display", inputs: ["event"] }, { kind: "component", type: i7.StatusDisplayComponent, selector: "hvy-status-display", inputs: ["item", "modifiable"], outputs: ["modified"] }, { kind: "component", type: i8.ProgressDisplayComponent, selector: "hvy-progress-display", inputs: ["progress"] }, { kind: "component", type: i9.ProcedureActionsComponent, selector: "hvy-procedure-actions", inputs: ["mode", "actions"], outputs: ["modified"] }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }, { kind: "pipe", type: i10.ForDatetimeLocalPipe, name: "forDateTimeLocal" }] }); }
|
|
342
342
|
}
|
|
343
343
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: EventDetailComponent, decorators: [{
|
|
344
344
|
type: Component,
|
|
345
|
-
args: [{ selector: 'hvy-event-detail', template: "<div class=\"o-hvy-events-detail\">\n <div class=\"o-hvy-events-detail__header\">\n <div class=\"o-hvy-events-detail__header__split\">\n <h1>{{ title ?? '@hvy.event.detail' | i18n }}</h1>\n @if (events.length > 1) {\n @if (canCloseSome) {\n <button class=\"a-btn a-btn--secondary -fix-right\" [disabled]=\"!canCloseSome\" (click)=\"closeAll()\">\n {{ (canCloseSome ? '@hvy.event.log.event.close' : '@hvy.event.log.event.closed') | i18n }}\n </button>\n }\n @if (!canCloseSome) {\n <div\n class=\"a-tooltip\"\n [attr.data-tooltip]=\"'... TODO: get closing comment ...'\"\n data-tooltip-position=\"bottom\"\n >\n <pry-icon iconSvg=\"i\" [height]=\"18\" [width]=\"18\">i</pry-icon>\n </div>\n }\n }\n </div>\n <div class=\"o-hvy-events-detail__header__split\">\n @if (canCloseSome) {\n <button class=\"a-btn a-btn--secondary\">{{ '@hvy.event.log.procedure.delete' | i18n }}</button>\n }\n </div>\n </div>\n <div class=\"o-hvy-events-detail__container\">\n <div class=\"o-hvy-events-detail__container__scrollable\">\n <div class=\"o-hvy-events-detail__events\">\n @for (event of events; track event.id; let idx = $index) {\n <div class=\"o-hvy-events-detail__events__event\">\n <div class=\"o-hvy-events-detail__events__event__header\">\n <pry-icon\n iconSvg=\"arrow_down_rounded\"\n [class.-rotated]=\"opened[idx]\"\n (click)=\"toggle(idx)\"\n [width]=\"10\"\n [height]=\"10\"\n ></pry-icon>\n <hvy-icon-display [event]=\"event\"></hvy-icon-display>\n <h2>{{ event.name }}</h2>\n <hvy-status-display\n [item]=\"event\"\n [modifiable]=\"event.status !== 'DONE'\"\n (modified)=\"changeStatus($event, event)\"\n ></hvy-status-display>\n </div>\n <div class=\"o-hvy-events-detail__events__event__content\">\n @if (!opened[idx]) {\n <div>{{ '@hvy.event.log.event.description' | i18n }} : {{ event.description }}</div>\n <div>{{ '@hvy.event.log.event.address' | i18n }} : {{ event.address }}</div>\n } @else {\n @if (access(event); as accessValue) {\n <div class=\"o-hvy-events-detail__events__event__content__header\">\n <h3>{{ '@hvy.event.log.event.detail' | i18n }}</h3>\n <span class=\"required\">{{ '@hvy.event.log.event.mandatory' | i18n }}</span>\n </div>\n <table>\n <tbody>\n <tr>\n <td>{{ '@hvy.event.log.event.name' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('name', idx)\"\n [value]=\"event.name\"\n (change)=\"modifyEvent(idx, 'name', $event)\"\n [readonly]=\"accessValue.name\"\n />\n </td>\n </tr>\n @if (event.id > 0) {\n <tr>\n <td>{{ '@hvy.event.log.event.id' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input type=\"text\" class=\"a-form-field\" [value]=\"padId.fn(event.id)\" [readonly]=\"true\" />\n </td>\n </tr>\n }\n <tr>\n <td>{{ '@hvy.event.log.event.category' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <pry-select\n [ngModel]=\"event.category\"\n [items]=\"categories(event)\"\n [class.-error]=\"hasError('category', idx)\"\n (ngModelChange)=\"modifyEvent(idx, 'category', $event)\"\n i18nPrefix=\"@hvy.event.category.\"\n [disabled]=\"accessValue.category\"\n ></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.criticality.name' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <pry-select\n [ngModel]=\"event.criticality\"\n [items]=\"criticalities\"\n [class.-error]=\"hasError('criticality', idx)\"\n i18nPrefix=\"@hvy.event.criticality.\"\n [disabled]=\"accessValue.criticality\"\n (ngModelChange)=\"modifyEvent(idx, 'criticality', $event)\"\n ></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.description' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <textarea\n [ngModel]=\"event.description\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('description', idx)\"\n [readonly]=\"accessValue.description\"\n (ngModelChange)=\"modifyEvent(idx, 'description', $event)\"\n ></textarea>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.address' | i18n }} :</td>\n <td>\n <textarea\n [ngModel]=\"event.address\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('address', idx)\"\n [readonly]=\"accessValue.address\"\n (ngModelChange)=\"modifyEvent(idx, 'address', $event)\"\n ></textarea>\n </td>\n </tr>\n @if (['ALERT', 'REPORT'].includes(event.type)) {\n <tr>\n <td>{{ '@hvy.event.source' | i18n }} :</td>\n <td>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [value]=\"event.externalSourceRef ?? ''\"\n [class.-error]=\"hasError('source', idx)\"\n [readonly]=\"accessValue.source\"\n (change)=\"modifyEvent(idx, 'source', $event)\"\n />\n </td>\n </tr>\n }\n <tr>\n <td>{{ '@hvy.event.equipment' | i18n }} :</td>\n <td>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [value]=\"event.equipment?.name ?? ''\"\n [class.-error]=\"hasError('equipment', idx)\"\n [readonly]=\"accessValue.eqName\"\n (change)=\"changeEquipment(idx, $event)\"\n />\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.equipmentEntity' | i18n }} :</td>\n <td>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('equipment', idx)\"\n [value]=\"event.equipment?.entity ?? ''\"\n readonly\n />\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.domain.name' | i18n }} :</td>\n <td>\n <pry-select\n [items]=\"DOMAINS\"\n [ngModel]=\"event.domain\"\n i18nPrefix=\"@hvy.event.domain.\"\n [class.-error]=\"hasError('domain', idx)\"\n (ngModelChange)=\"modifyEvent(idx, 'domain', $event)\"\n [disabled]=\"accessValue.domain\"\n ></pry-select>\n </td>\n </tr>\n <tr>\n <td>\n {{ '@hvy.event.startDate' | i18n }}\n @if (event.category === 'MANIFESTATION') {\n <span class=\"required\">*</span>\n }\n :\n </td>\n <td>\n <input\n type=\"datetime-local\"\n step=\"1\"\n class=\"a-form-field\"\n [value]=\"event.startDate | forDateTimeLocal\"\n [class.-error]=\"hasError('startDate', idx)\"\n [readonly]=\"accessValue.startDate\"\n (change)=\"modifyEvent(idx, 'startDate', $event)\"\n />\n </td>\n </tr>\n <tr>\n <td>\n {{ '@hvy.event.endDate' | i18n }}\n @if (event.category === 'MANIFESTATION') {\n <span class=\"required\">*</span>\n }\n :\n </td>\n <td>\n <input\n type=\"datetime-local\"\n step=\"1\"\n class=\"a-form-field\"\n [value]=\"event.endDate | forDateTimeLocal\"\n [class.-error]=\"hasError('endDate', idx)\"\n [readonly]=\"accessValue.endDate\"\n (change)=\"modifyEvent(idx, 'endDate', $event)\"\n />\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.creationDate' | i18n }} :</td>\n <td>\n <input\n type=\"datetime-local\"\n step=\"1\"\n class=\"a-form-field\"\n [value]=\"event.creationDate | forDateTimeLocal\"\n readonly\n />\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.lastModificationDate' | i18n }} :</td>\n <td>\n <input\n type=\"datetime-local\"\n step=\"1\"\n class=\"a-form-field\"\n [value]=\"event.lastModificationDate | forDateTimeLocal\"\n readonly\n />\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.closeDate' | i18n }} :</td>\n <td>\n <input\n type=\"datetime-local\"\n step=\"1\"\n class=\"a-form-field\"\n [value]=\"event.closeDate | forDateTimeLocal\"\n readonly\n />\n </td>\n </tr>\n </tbody>\n </table>\n <div class=\"o-hvy-events-detail__events__event__content__comments\">\n <h3>{{ '@hvy.event.log.event.comments.name' | i18n }} :</h3>\n <textarea\n [placeholder]=\"('@hvy.event.log.event.comments.placeholder' | i18n) + '...'\"\n [(ngModel)]=\"newComentContent\"\n ></textarea>\n <div class=\"o-hvy-events-detail__events__event__content__comments__button\">\n <button class=\"a-btn a-btn--primary\" [disabled]=\"newComentContent.length === 0\">\n {{ '@hvy.action.comment' | i18n }}\n </button>\n </div>\n </div>\n }\n }\n </div>\n </div>\n }\n </div>\n <div class=\"o-hvy-events-detail__procedure\">\n <div class=\"o-hvy-events-detail__procedure__header\">\n <h2>\n {{ (events.length === 1 ? '@hvy.event.log.procedure.name1' : '@hvy.event.log.procedure.name') | i18n }}\n </h2>\n </div>\n @if (procedure) {\n <div class=\"o-hvy-events-detail__procedure__description\">\n <p>{{ procedure.description }}</p>\n </div>\n <div class=\"o-hvy-events-detail__procedure__progress\">\n <p>{{ '@hvy.event.log.procedure.progress' | i18n }}</p>\n <hvy-progress-display [progress]=\"calculatedProgress\"></hvy-progress-display>\n </div>\n <hvy-procedure-actions\n [actions]=\"procedure.actions\"\n (modified)=\"modifiedActions($event)\"\n ></hvy-procedure-actions>\n } @else {\n <button class=\"a-btn a-btn--secondary\" [disabled]=\"!canAssociateProcedure\">\n {{ '@hvy.action.associate' | i18n }}\n </button>\n }\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #confirmDialog>\n <div\n class=\"o-hvy-close-confirm__dialog\"\n aria-labelledby=\"confirm\"\n tabindex=\"-1\"\n id=\"choice\"\n role=\"dialog\"\n aria-modal=\"true\"\n >\n <h2>\n {{\n (changeStatusContext.events.length === 1 ? '@hvy.event.close.oneTitle' : '@hvy.event.close.multiTitle') | i18n\n }}\n </h2>\n <p>{{ (changeStatusContext.events.length === 1 ? '@hvy.event.close.one' : '@hvy.event.close.multi') | i18n }}</p>\n <ul>\n @for (event of changeStatusContext.events; track event.id) {\n <li>{{ event.name }}</li>\n }\n </ul>\n <p class=\"o-hvy-close-confirm__dialog__comment-title\">\n {{ '@hvy.event.close.comment' | i18n }}<span class=\"required\">*</span> :\n </p>\n <div class=\"o-hvy-close-confirm__dialog__comment\">\n <textarea [(ngModel)]=\"changeStatusContext.comment\" class=\"a-form-field\" [maxLength]=\"255\"></textarea>\n </div>\n <div class=\"o-hvy-close-confirm__dialog__actions\">\n <button class=\"a-btn a-btn--primary\" (click)=\"confirmedClose()\" [disabled]=\"confirmDisabled()\">\n {{ '@hvy.action.validate' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"toggleConfirm()\">{{ '@hvy.action.cancel' | i18n }}</button>\n </div>\n </div>\n</ng-template>\n" }]
|
|
345
|
+
args: [{ selector: 'hvy-event-detail', template: "<div class=\"o-hvy-events-detail\">\n <div class=\"o-hvy-events-detail__header\">\n <div class=\"o-hvy-events-detail__header__split\">\n <h1>{{ title ?? '@hvy.event.detail' | i18n }}</h1>\n @if (events.length > 1) {\n @if (canCloseSome) {\n <button class=\"a-btn a-btn--secondary -fix-right\" [disabled]=\"!canCloseSome\" (click)=\"closeAll()\">\n {{ (canCloseSome ? '@hvy.event.log.event.close' : '@hvy.event.log.event.closed') | i18n }}\n </button>\n }\n @if (!canCloseSome) {\n <div\n class=\"a-tooltip\"\n [attr.data-tooltip]=\"'... TODO: get closing comment ...'\"\n data-tooltip-position=\"bottom\"\n >\n <pry-icon iconSvg=\"i\" [height]=\"18\" [width]=\"18\">i</pry-icon>\n </div>\n }\n }\n </div>\n <div class=\"o-hvy-events-detail__header__split\">\n @if (canCloseSome) {\n <button class=\"a-btn a-btn--secondary\">{{ '@hvy.event.log.procedure.delete' | i18n }}</button>\n }\n </div>\n </div>\n <div class=\"o-hvy-events-detail__container\">\n <div class=\"o-hvy-events-detail__container__scrollable\">\n <div class=\"o-hvy-events-detail__events\">\n @for (event of events; track event.id; let idx = $index) {\n <div class=\"o-hvy-events-detail__events__event\">\n <div class=\"o-hvy-events-detail__events__event__header\">\n <pry-icon\n iconSvg=\"arrow_down_rounded\"\n [class.-rotated]=\"opened[idx]\"\n (click)=\"toggle(idx)\"\n [width]=\"10\"\n [height]=\"10\"\n ></pry-icon>\n <hvy-icon-display [event]=\"event\"></hvy-icon-display>\n <h2>{{ event.name }}</h2>\n <hvy-status-display\n [item]=\"event\"\n [modifiable]=\"event.status !== 'DONE'\"\n (modified)=\"changeStatus($event, event)\"\n ></hvy-status-display>\n </div>\n <div class=\"o-hvy-events-detail__events__event__content\">\n @if (!opened[idx]) {\n <div>{{ '@hvy.event.log.event.description' | i18n }} : {{ event.description }}</div>\n <div>{{ '@hvy.event.log.event.address' | i18n }} : {{ event.address }}</div>\n } @else {\n @if (access(event); as accessValue) {\n <div class=\"o-hvy-events-detail__events__event__content__header\">\n <h3>{{ '@hvy.event.log.event.detail' | i18n }}</h3>\n <span class=\"required\">{{ '@hvy.event.log.event.mandatory' | i18n }}</span>\n </div>\n <table>\n <tbody>\n <tr>\n <td>{{ '@hvy.event.log.event.name' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('name', idx)\"\n [value]=\"event.name\"\n (change)=\"modifyEvent(idx, 'name', $event)\"\n [readonly]=\"accessValue.name\"\n />\n </td>\n </tr>\n @if (event.id > 0) {\n <tr>\n <td>{{ '@hvy.event.log.event.id' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <input type=\"text\" class=\"a-form-field\" [value]=\"padId.fn(event.id)\" [readonly]=\"true\" />\n </td>\n </tr>\n }\n <tr>\n <td>{{ '@hvy.event.log.event.category' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <pry-select\n [ngModel]=\"event.category\"\n [items]=\"categories(event)\"\n [class.-error]=\"hasError('category', idx)\"\n (ngModelChange)=\"modifyEvent(idx, 'category', $event)\"\n i18nPrefix=\"@hvy.event.category.\"\n [disabled]=\"accessValue.category\"\n ></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.criticality.name' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <pry-select\n [ngModel]=\"event.criticality\"\n [items]=\"criticalities\"\n [class.-error]=\"hasError('criticality', idx)\"\n i18nPrefix=\"@hvy.event.criticality.\"\n [disabled]=\"accessValue.criticality\"\n (ngModelChange)=\"modifyEvent(idx, 'criticality', $event)\"\n ></pry-select>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.description' | i18n }}<span class=\"required\">*</span> :</td>\n <td>\n <textarea\n [ngModel]=\"event.description\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('description', idx)\"\n [readonly]=\"accessValue.description\"\n (ngModelChange)=\"modifyEvent(idx, 'description', $event)\"\n ></textarea>\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.log.event.address' | i18n }} :</td>\n <td>\n <textarea\n [ngModel]=\"event.address\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('address', idx)\"\n [readonly]=\"accessValue.address\"\n (ngModelChange)=\"modifyEvent(idx, 'address', $event)\"\n ></textarea>\n </td>\n </tr>\n @if (['ALERT', 'REPORT'].includes(event.type)) {\n <tr>\n <td>{{ '@hvy.event.source' | i18n }} :</td>\n <td>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [value]=\"event.externalSourceRef ?? ''\"\n [class.-error]=\"hasError('source', idx)\"\n [readonly]=\"accessValue.source\"\n (change)=\"modifyEvent(idx, 'source', $event)\"\n />\n </td>\n </tr>\n }\n <tr>\n <td>{{ '@hvy.event.equipment' | i18n }} :</td>\n <td>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [value]=\"event.equipment?.name ?? ''\"\n [class.-error]=\"hasError('equipment', idx)\"\n [readonly]=\"accessValue.eqName\"\n (change)=\"changeEquipment(idx, $event)\"\n />\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.equipmentEntity' | i18n }} :</td>\n <td>\n <input\n type=\"text\"\n class=\"a-form-field\"\n [class.-error]=\"hasError('equipment', idx)\"\n [value]=\"\n (event.equipment?.entity ? '@hvy.event.entity.' + event.equipment?.entity : '') | i18n\n \"\n readonly\n />\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.domain.name' | i18n }} :</td>\n <td>\n <pry-select\n [items]=\"DOMAINS\"\n [ngModel]=\"event.domain\"\n i18nPrefix=\"@hvy.event.domain.\"\n [class.-error]=\"hasError('domain', idx)\"\n (ngModelChange)=\"modifyEvent(idx, 'domain', $event)\"\n [disabled]=\"accessValue.domain\"\n ></pry-select>\n </td>\n </tr>\n <tr>\n <td>\n {{ '@hvy.event.startDate' | i18n }}\n @if (event.category === 'MANIFESTATION') {\n <span class=\"required\">*</span>\n }\n :\n </td>\n <td>\n <input\n type=\"datetime-local\"\n step=\"1\"\n class=\"a-form-field\"\n [value]=\"event.startDate | forDateTimeLocal\"\n [class.-error]=\"hasError('startDate', idx)\"\n [readonly]=\"accessValue.startDate\"\n (change)=\"modifyEvent(idx, 'startDate', $event)\"\n />\n </td>\n </tr>\n <tr>\n <td>\n {{ '@hvy.event.endDate' | i18n }}\n @if (event.category === 'MANIFESTATION') {\n <span class=\"required\">*</span>\n }\n :\n </td>\n <td>\n <input\n type=\"datetime-local\"\n step=\"1\"\n class=\"a-form-field\"\n [value]=\"event.endDate | forDateTimeLocal\"\n [class.-error]=\"hasError('endDate', idx)\"\n [readonly]=\"accessValue.endDate\"\n (change)=\"modifyEvent(idx, 'endDate', $event)\"\n />\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.creationDate' | i18n }} :</td>\n <td>\n <input\n type=\"datetime-local\"\n step=\"1\"\n class=\"a-form-field\"\n [value]=\"event.creationDate | forDateTimeLocal\"\n readonly\n />\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.lastModificationDate' | i18n }} :</td>\n <td>\n <input\n type=\"datetime-local\"\n step=\"1\"\n class=\"a-form-field\"\n [value]=\"event.lastModificationDate | forDateTimeLocal\"\n readonly\n />\n </td>\n </tr>\n <tr>\n <td>{{ '@hvy.event.closeDate' | i18n }} :</td>\n <td>\n <input\n type=\"datetime-local\"\n step=\"1\"\n class=\"a-form-field\"\n [value]=\"event.closeDate | forDateTimeLocal\"\n readonly\n />\n </td>\n </tr>\n </tbody>\n </table>\n <div class=\"o-hvy-events-detail__events__event__content__comments\">\n <h3>{{ '@hvy.event.log.event.comments.name' | i18n }} :</h3>\n <textarea\n [placeholder]=\"('@hvy.event.log.event.comments.placeholder' | i18n) + '...'\"\n [(ngModel)]=\"newComentContent\"\n ></textarea>\n <div class=\"o-hvy-events-detail__events__event__content__comments__button\">\n <button class=\"a-btn a-btn--primary\" [disabled]=\"newComentContent.length === 0\">\n {{ '@hvy.action.comment' | i18n }}\n </button>\n </div>\n </div>\n }\n }\n </div>\n </div>\n }\n </div>\n <div class=\"o-hvy-events-detail__procedure\">\n <div class=\"o-hvy-events-detail__procedure__header\">\n <h2>\n {{ (events.length === 1 ? '@hvy.event.log.procedure.name1' : '@hvy.event.log.procedure.name') | i18n }}\n </h2>\n </div>\n @if (procedure) {\n <div class=\"o-hvy-events-detail__procedure__description\">\n <p>{{ procedure.description }}</p>\n </div>\n <div class=\"o-hvy-events-detail__procedure__progress\">\n <p>{{ '@hvy.event.log.procedure.progress' | i18n }}</p>\n <hvy-progress-display [progress]=\"calculatedProgress\"></hvy-progress-display>\n </div>\n <hvy-procedure-actions\n [actions]=\"procedure.actions\"\n (modified)=\"modifiedActions($event)\"\n ></hvy-procedure-actions>\n } @else {\n <button class=\"a-btn a-btn--secondary\" [disabled]=\"!canAssociateProcedure\">\n {{ '@hvy.action.associate' | i18n }}\n </button>\n }\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #confirmDialog>\n <div\n class=\"o-hvy-close-confirm__dialog\"\n aria-labelledby=\"confirm\"\n tabindex=\"-1\"\n id=\"choice\"\n role=\"dialog\"\n aria-modal=\"true\"\n >\n <h2>\n {{\n (changeStatusContext.events.length === 1 ? '@hvy.event.close.oneTitle' : '@hvy.event.close.multiTitle') | i18n\n }}\n </h2>\n <p>{{ (changeStatusContext.events.length === 1 ? '@hvy.event.close.one' : '@hvy.event.close.multi') | i18n }}</p>\n <ul>\n @for (event of changeStatusContext.events; track event.id) {\n <li>{{ event.name }}</li>\n }\n </ul>\n <p class=\"o-hvy-close-confirm__dialog__comment-title\">\n {{ '@hvy.event.close.comment' | i18n }}<span class=\"required\">*</span> :\n </p>\n <div class=\"o-hvy-close-confirm__dialog__comment\">\n <textarea [(ngModel)]=\"changeStatusContext.comment\" class=\"a-form-field\" [maxLength]=\"255\"></textarea>\n </div>\n <div class=\"o-hvy-close-confirm__dialog__actions\">\n <button class=\"a-btn a-btn--primary\" (click)=\"confirmedClose()\" [disabled]=\"confirmDisabled()\">\n {{ '@hvy.action.validate' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary\" (click)=\"toggleConfirm()\">{{ '@hvy.action.cancel' | i18n }}</button>\n </div>\n </div>\n</ng-template>\n" }]
|
|
346
346
|
}], ctorParameters: () => [{ type: i1.EquipmentService }, { type: i2.Store }, { type: i3.Overlay }, { type: i0.ViewContainerRef }, { type: i4.PrySnackbarService }, { type: i4.PryI18nService }], propDecorators: { modifiedEvents: [{
|
|
347
347
|
type: Output
|
|
348
348
|
}], modifiedProcedure: [{
|
|
@@ -363,4 +363,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
363
363
|
}], equipmentName: [{
|
|
364
364
|
type: Input
|
|
365
365
|
}] } });
|
|
366
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtZGV0YWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvaHlwZXJ2aXNvci9zcmMvbGliL2V2ZW50L2RldGFpbC9ldmVudC1kZXRhaWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9oeXBlcnZpc29yL3NyYy9saWIvZXZlbnQvZGV0YWlsL2V2ZW50LWRldGFpbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBR2pILE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ25GLE9BQU8sRUFBc0Msd0JBQXdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUdsRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRS9ELE9BQU8sRUFBVyxhQUFhLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3RELE9BQU8sS0FBSyxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7Ozs7Ozs7QUFNeEMsTUFBTSxPQUFPLG9CQUFxQixTQUFRLHdCQUF3QjtJQTZCaEUsSUFBYSxNQUFNLENBQUMsTUFB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QWtCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FDZixDQUFDLElBQUksQ0FBQyxTQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQzVHLEdBQUcsQ0FDTixDQUFDO0lBQ0osQ0FBQztJQUlELGVBQWUsQ0FBQyxNQUFXO1FBQ3pCLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDNUMsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDO1FBQzdDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDL0MsQ0FBQztRQUNELElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7OEdBdldVLG9CQUFvQjtrR0FBcEIsb0JBQW9CLHdaQTJCSyxXQUFXLG9EQ2hEakQscWtmQXNWQTs7MkZEalVhLG9CQUFvQjtrQkFKaEMsU0FBUzsrQkFDRSxrQkFBa0I7NE5BUWxCLGNBQWM7c0JBQXZCLE1BQU07Z0JBR0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUVHLFdBQVc7c0JBQXBCLE1BQU07Z0JBZUUsS0FBSztzQkFBYixLQUFLO2dCQUU2QyxhQUFhO3NCQUEvRCxTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBRXBDLE1BQU07c0JBQWxCLEtBQUs7Z0JBT08sU0FBUztzQkFBckIsS0FBSztnQkFLTyxtQkFBbUI7c0JBQS9CLEtBQUs7Z0JBTU8sYUFBYTtzQkFBekIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIeXBQcm9jZWR1cmUgfSBmcm9tICcuLi8uLi9tb2RlbC9wcm9jZWR1cmUvaHlwLXByb2NlZHVyZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSHlwRXZlbnREZXRhaWxzIH0gZnJvbSAnLi4vLi4vbW9kZWwvZXZlbnQvaHlwLWV2ZW50LWRldGFpbC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSHlwRXZlbnRDcml0aWNhbGl0eSB9IGZyb20gJy4uLy4uL21vZGVsL2V2ZW50L2h5cC1ldmVudC1jcml0aWNhbGl0eS50eXBlJztcbmltcG9ydCB7IFByeUkxOG5TZXJ2aWNlLCBQcnlTbmFja2JhclNlcnZpY2UsIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBIeXBFcXVpcG1lbnQgfSBmcm9tICcuLi8uLi9tb2RlbC9oeXAtZXF1aXBtZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBFcXVpcG1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc3RvcmUvZXF1aXBtZW50L2VxdWlwbWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IERPTUFJTlMgfSBmcm9tICcuLi8uLi9tb2RlbC9kb21haW5zLmNvbnN0YW50JztcbmltcG9ydCB7IENBVEVHT1JJRVNfQllfVFlQRSB9IGZyb20gJy4uLy4uL21vZGVsL2V2ZW50L2h5cC1ldmVudC1jYXRlZ29yeS50eXBlJztcbmltcG9ydCB7IEV2ZW50QWN0aW9ucyB9IGZyb20gJy4uLy4uL3N0b3JlL2V2ZW50L2V2ZW50LmFjdGlvbnMnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBwYWRJZCB9IGZyb20gJy4uLy4uL2dlbmVyYWwvcGFkLWlkLmZ1bmN0aW9uJztcbmltcG9ydCBlcXVhbCBmcm9tICdmYXN0LWRlZXAtZXF1YWwvZXM2JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaHZ5LWV2ZW50LWRldGFpbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9ldmVudC1kZXRhaWwuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEV2ZW50RGV0YWlsQ29tcG9uZW50IGV4dGVuZHMgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIHtcbiAgb3BlbmVkOiBib29sZWFuW10gPSBbXTtcbiAgY3JpdGljYWxpdGllcyA9IEh5cEV2ZW50Q3JpdGljYWxpdHkudmFsdWVzO1xuICBfZXZlbnRzOiBIeXBFdmVudERldGFpbHNbXSA9IFtdO1xuICBldmVudE1vZGlmaWNhdGlvbnM6IFBhcnRpYWw8SHlwRXZlbnREZXRhaWxzPltdID0gW107XG4gIEBPdXRwdXQoKSBtb2RpZmllZEV2ZW50cyA9IG5ldyBFdmVudEVtaXR0ZXI8W1BhcnRpYWw8SHlwRXZlbnREZXRhaWxzPiwgSHlwRXZlbnREZXRhaWxzXVtdPigpO1xuICBfcHJvY2VkdXJlPzogSHlwUHJvY2VkdXJlO1xuICBwcm9jZWR1cmVNb2RpZmljYXRpb25zOiBQYXJ0aWFsPEh5cFByb2NlZHVyZT4gPSB7fTtcbiAgQE91dHB1dCgpIG1vZGlmaWVkUHJvY2VkdXJlID0gbmV3IEV2ZW50RW1pdHRlcjxbUGFydGlhbDxIeXBQcm9jZWR1cmU+LCBIeXBQcm9jZWR1cmVdIHwgdW5kZWZpbmVkPigpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgRE9NQUlOUyA9IERPTUFJTlMudmFsdWVzO1xuICBAT3V0cHV0KCkgZXZlbnRFcnJvcnMgPSBuZXcgRXZlbnRFbWl0dGVyPHsgZmllbGQ6IHN0cmluZzsgY29kZTogc3RyaW5nIH1bXVtdPigpO1xuICBlcnJvcnM6IHsgZmllbGQ6IHN0cmluZzsgY29kZTogc3RyaW5nIH1bXVtdID0gW107XG4gIGNhbkNsb3NlU29tZSA9IGZhbHNlO1xuICBuZXdDb21lbnRDb250ZW50ID0gJyc7XG4gIGNoYW5nZVN0YXR1c0NvbnRleHQ6IHtcbiAgICBjb21tZW50OiBzdHJpbmc7XG4gICAgZXZlbnRzOiBIeXBFdmVudERldGFpbHNbXTtcbiAgICBzdGF0dXM6IHN0cmluZztcbiAgICBhbGw6IGJvb2xlYW47XG4gIH0gPSB7XG4gICAgY29tbWVudDogJycsXG4gICAgZXZlbnRzOiBbXSxcbiAgICBzdGF0dXM6ICdET05FJyxcbiAgICBhbGw6IGZhbHNlXG4gIH07XG4gIEBJbnB1dCgpIHRpdGxlPzogc3RyaW5nO1xuICBvdmVybGF5UmVmPzogT3ZlcmxheVJlZjtcbiAgQFZpZXdDaGlsZCgnY29uZmlybURpYWxvZycsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgY29uZmlybURpYWxvZyE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQElucHV0KCkgc2V0IGV2ZW50cyhldmVudHM6IEh5cEV2ZW50RGV0YWlsc1tdKSB7XG4gICAgdGhpcy5fZXZlbnRzID0gZXZlbnRzLmZpbHRlcigoZXYpID0+ICEhZXYpO1xuICAgIHRoaXMuZXZlbnRNb2RpZmljYXRpb25zID0gbmV3IEFycmF5KHRoaXMuX2V2ZW50cy5sZW5ndGgpO1xuICAgIHRoaXMub3BlbmVkID0gdGhpcy5fZXZlbnRzLmxlbmd0aCA9PT0gMSA/IFt0cnVlXSA6IFtdO1xuICAgIHRoaXMuY2FuQ2xvc2VTb21lID0gdGhpcy5fZXZlbnRzLmZpbHRlcigoZXYpID0+IGV2LnN0YXR1cyAhPT0gJ0RPTkUnKS5sZW5ndGggPiAwO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHByb2NlZHVyZShwcm9jZWR1cmU6IEh5cFByb2NlZHVyZSkge1xuICAgIHRoaXMuX3Byb2NlZHVyZSA9IHByb2NlZHVyZTtcbiAgICB0aGlzLnByb2NlZHVyZU1vZGlmaWNhdGlvbnMgPSB7fTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBjYW5jZWxNb2RpZmljYXRpb25zKGV2dDogYW55KSB7XG4gICAgdGhpcy5ldmVudE1vZGlmaWNhdGlvbnMgPSBuZXcgQXJyYXkodGhpcy5fZXZlbnRzLmxlbmd0aCk7XG4gICAgdGhpcy5wcm9jZWR1cmVNb2RpZmljYXRpb25zID0ge307XG4gICAgdGhpcy5fb3V0cHV0TW9kaWZpY2F0aW9ucygpO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGVxdWlwbWVudE5hbWUocmVxdWVzdDogeyBpbmRleDogbnVtYmVyOyBlcXVpcG1lbnROYW1lPzogc3RyaW5nIH0pIHtcbiAgICBpZiAocmVxdWVzdC5lcXVpcG1lbnROYW1lKSB7XG4gICAgICB0aGlzLmNoYW5nZUVxdWlwbWVudChyZXF1ZXN0LmluZGV4LCByZXF1ZXN0LmVxdWlwbWVudE5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZXF1aXBtZW50U2VydmljZTogRXF1aXBtZW50U2VydmljZSxcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZSxcbiAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHByaXZhdGUgc25hY2tCYXI6IFByeVNuYWNrYmFyU2VydmljZSxcbiAgICBwcml2YXRlIGkxOG5TZXJ2aWNlOiBQcnlJMThuU2VydmljZVxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZ2V0IGV2ZW50cygpIHtcbiAgICByZXR1cm4gdGhpcy5fZXZlbnRzLm1hcCgoZXZ0LCBpZHgpID0+ICh7IC4uLmV2dCwgLi4uKHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2lkeF0gPz8ge30pIH0pKTtcbiAgfVxuXG4gIGdldCBjYW5Bc3NvY2lhdGVQcm9jZWR1cmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50cy5ldmVyeSgoZXZ0KSA9PiBldnQuc3RhdHVzID09PSAnTkVXJyk7XG4gIH1cblxuICBnZXQgcHJvY2VkdXJlKCk6IEh5cFByb2NlZHVyZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3Byb2NlZHVyZVxuICAgICAgPyB7XG4gICAgICAgICAgLi4udGhpcy5fcHJvY2VkdXJlLFxuICAgICAgICAgIC4uLih0aGlzLnByb2NlZHVyZU1vZGlmaWNhdGlvbnMgPz8ge30pLFxuICAgICAgICAgIGV2ZW50czogdGhpcy5ldmVudHNcbiAgICAgICAgfVxuICAgICAgOiB1bmRlZmluZWQ7XG4gIH1cblxuICB0b2dnbGUoaTogbnVtYmVyKSB7XG4gICAgdGhpcy5vcGVuZWRbaV0gPSAhdGhpcy5vcGVuZWRbaV07XG4gIH1cblxuICBtb2RpZnlFdmVudChpbmRleDogbnVtYmVyLCBwcm9wOiBzdHJpbmcsICRldmVudDogRXZlbnQgfCBzdHJpbmcpIHtcbiAgICBjb25zdCBpc0RhdGUgPSBwcm9wLmluZGV4T2YoJ0RhdGUnKSA+IC0xO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBuZXdWYWx1ZSA9ICRldmVudCBpbnN0YW5jZW9mIEV2ZW50ID8gJGV2ZW50LnRhcmdldD8udmFsdWUgOiAkZXZlbnQ7XG5cbiAgICBjb25zdCBjb3JyZWN0ZWRWYWx1ZSA9ICFpc0RhdGUgPyBuZXdWYWx1ZSA6IGAke25ld1ZhbHVlfS4wMDAwMDBaYDtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKHRoaXMuX2V2ZW50c1tpbmRleF1bcHJvcF0gIT09IGNvcnJlY3RlZFZhbHVlKSB7XG4gICAgICBpZiAoIXRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XSkge1xuICAgICAgICB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0gPSB7fTtcbiAgICAgIH1cbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XVtwcm9wXSA9IGNvcnJlY3RlZFZhbHVlO1xuXG4gICAgICB0aGlzLl9vdXRwdXRNb2RpZmljYXRpb25zKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghIXRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XSkge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGRlbGV0ZSB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF1bcHJvcF07XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0pLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIGRlbGV0ZSB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fb3V0cHV0TW9kaWZpY2F0aW9ucygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFjY2VzcyhldmVudDogSHlwRXZlbnREZXRhaWxzKSB7XG4gICAgaWYgKGV2ZW50LnN0YXR1cyA9PT0gJ0RPTkUnKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiB0cnVlLFxuICAgICAgICBjYXRlZ29yeTogdHJ1ZSxcbiAgICAgICAgY3JpdGljYWxpdHk6IHRydWUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiB0cnVlLFxuICAgICAgICBhZGRyZXNzOiB0cnVlLFxuICAgICAgICBzb3VyY2U6IHRydWUsXG4gICAgICAgIGRvbWFpbjogdHJ1ZSxcbiAgICAgICAgZXFOYW1lOiB0cnVlLFxuICAgICAgICBlcUVudGl0eTogdHJ1ZSxcbiAgICAgICAgc3RhcnREYXRlOiB0cnVlLFxuICAgICAgICBlbmREYXRlOiB0cnVlXG4gICAgICB9O1xuICAgIH1cbiAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcbiAgICAgIGNhc2UgJ0FMRVJUJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbmFtZTogdHJ1ZSxcbiAgICAgICAgICBjYXRlZ29yeTogdHJ1ZSxcbiAgICAgICAgICBjcml0aWNhbGl0eTogdHJ1ZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdHJ1ZSxcbiAgICAgICAgICBhZGRyZXNzOiB0cnVlLFxuICAgICAgICAgIHNvdXJjZTogdHJ1ZSxcbiAgICAgICAgICBkb21haW46IHRydWUsXG4gICAgICAgICAgZXFOYW1lOiB0cnVlLFxuICAgICAgICAgIGVxRW50aXR5OiB0cnVlLFxuICAgICAgICAgIHN0YXJ0RGF0ZTogdHJ1ZSxcbiAgICAgICAgICBlbmREYXRlOiB0cnVlXG4gICAgICAgIH07XG4gICAgICBjYXNlICdSRVBPUlQnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5hbWU6IGZhbHNlLFxuICAgICAgICAgIGNhdGVnb3J5OiB0cnVlLFxuICAgICAgICAgIGNyaXRpY2FsaXR5OiBmYWxzZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdHJ1ZSxcbiAgICAgICAgICBhZGRyZXNzOiBmYWxzZSxcbiAgICAgICAgICBzb3VyY2U6IHRydWUsXG4gICAgICAgICAgZG9tYWluOiBmYWxzZSxcbiAgICAgICAgICBlcU5hbWU6IGZhbHNlLFxuICAgICAgICAgIGVxRW50aXR5OiB0cnVlLFxuICAgICAgICAgIHN0YXJ0RGF0ZTogdHJ1ZSxcbiAgICAgICAgICBlbmREYXRlOiB0cnVlXG4gICAgICAgIH07XG4gICAgICBjYXNlICdPUEVSQVRPUic6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbmFtZTogZmFsc2UsXG4gICAgICAgICAgY2F0ZWdvcnk6IGZhbHNlLFxuICAgICAgICAgIGNyaXRpY2FsaXR5OiBmYWxzZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogZmFsc2UsXG4gICAgICAgICAgYWRkcmVzczogZmFsc2UsXG4gICAgICAgICAgc291cmNlOiBmYWxzZSxcbiAgICAgICAgICBkb21haW46IGZhbHNlLFxuICAgICAgICAgIGVxTmFtZTogZmFsc2UsXG4gICAgICAgICAgZXFFbnRpdHk6IGZhbHNlLFxuICAgICAgICAgIHN0YXJ0RGF0ZTogZmFsc2UsXG4gICAgICAgICAgZW5kRGF0ZTogZmFsc2VcbiAgICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBfY2hhbmdlRXF1aXBtZW50UHJvcGVydHkoaW5kZXg6IG51bWJlciwgdmFsdWU6IEh5cEVxdWlwbWVudCB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh0aGlzLl9ldmVudHNbaW5kZXhdLmVxdWlwbWVudD8ubmFtZSAhPT0gdmFsdWU/Lm5hbWUpIHtcbiAgICAgIGlmICghdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdKSB7XG4gICAgICAgIHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XSA9IHt9O1xuICAgICAgfVxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdLmVxdWlwbWVudCA9IHZhbHVlO1xuICAgICAgdGhpcy5fb3V0cHV0TW9kaWZpY2F0aW9ucygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoISF0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0pIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBkZWxldGUgdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdLmVxdWlwbWVudDtcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XSkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgZGVsZXRlIHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9vdXRwdXRNb2RpZmljYXRpb25zKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlRXF1aXBtZW50KGluZGV4OiBudW1iZXIsICRldmVudDogYW55KSB7XG4gICAgY29uc3QgdmFsdWUgPSAhISRldmVudCAmJiAhISRldmVudC50YXJnZXQgJiYgISEkZXZlbnQudGFyZ2V0LnZhbHVlID8gJGV2ZW50LnRhcmdldC52YWx1ZSA6ICRldmVudDtcblxuICAgIGlmICh2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmVxdWlwbWVudFNlcnZpY2VcbiAgICAgICAgLmZpbmRCeU5hbWUodmFsdWUpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRXF1aXBtZW50UHJvcGVydHkoaW5kZXgsIHtcbiAgICAgICAgICAgICAgaWQ6ICdub3QtZm91bmQnLFxuICAgICAgICAgICAgICBuYW1lOiB2YWx1ZSxcbiAgICAgICAgICAgICAgZW50aXR5OiB0aGlzLmkxOG5TZXJ2aWNlLmluc3RhbnQoJ0BodnkuZXZlbnQubm90Rm91bmQnKSxcbiAgICAgICAgICAgICAgZmFtaWx5OiAnJ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oeyB0eXBlOiAnZXJyb3InLCBtZXNzYWdlOiB0aGlzLmkxOG5TZXJ2aWNlLmluc3RhbnQoJ0BodnkuZXZlbnQubm90Rm91bmQnKSB9KTtcbiAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKGVxdWlwbWVudDogSHlwRXF1aXBtZW50IHwgbnVsbCkgPT4ge1xuICAgICAgICAgIGlmIChlcXVpcG1lbnQgJiYgdGhpcy5fZXZlbnRzW2luZGV4XS5uYW1lICE9PSBlcXVpcG1lbnQubmFtZSkge1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRXF1aXBtZW50UHJvcGVydHkoaW5kZXgsIGVxdWlwbWVudCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fY2hhbmdlRXF1aXBtZW50UHJvcGVydHkoaW5kZXgsIHVuZGVmaW5lZCk7XG4gICAgfVxuICB9XG5cbiAgX291dHB1dE1vZGlmaWNhdGlvbnMoKSB7XG4gICAgdGhpcy52YWxpZGF0ZUV2ZW50cyh0aGlzLmV2ZW50cyk7XG4gICAgdGhpcy5tb2RpZmllZEV2ZW50cy5uZXh0KHRoaXMuZXZlbnRzLm1hcCgoZXYsIGlkeCkgPT4gW3RoaXMuZXZlbnRNb2RpZmljYXRpb25zW2lkeF0sIGV2XSkpO1xuICAgIHRoaXMubW9kaWZpZWRQcm9jZWR1cmUubmV4dCh0aGlzLnByb2NlZHVyZSA/IFt0aGlzLnByb2NlZHVyZU1vZGlmaWNhdGlvbnMsIHRoaXMucHJvY2VkdXJlIV0gOiB1bmRlZmluZWQpO1xuICB9XG5cbiAgdmFsaWRhdGVFdmVudHMoZXZlbnRzOiBIeXBFdmVudERldGFpbHNbXSkge1xuICAgIHRoaXMuZXJyb3JzID0gW107XG4gICAgZXZlbnRzLmZvckVhY2goKGV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBldmVudEVycm9ycyA9IFtdO1xuICAgICAgaWYgKCFldmVudC5uYW1lIHx8IGV2ZW50Lm5hbWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGV2ZW50RXJyb3JzLnB1c2goeyBmaWVsZDogJ25hbWUnLCBjb2RlOiAncmVxdWlyZWQnIH0pO1xuICAgICAgfVxuICAgICAgaWYgKCFldmVudC5jYXRlZ29yeSB8fCBldmVudC5jYXRlZ29yeS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgZXZlbnRFcnJvcnMucHVzaCh7IGZpZWxkOiAnY2F0ZWdvcnknLCBjb2RlOiAncmVxdWlyZWQnIH0pO1xuICAgICAgfVxuICAgICAgaWYgKCFldmVudC5jcml0aWNhbGl0eSB8fCBldmVudC5jcml0aWNhbGl0eS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgZXZlbnRFcnJvcnMucHVzaCh7IGZpZWxkOiAnY3JpdGljYWxpdHknLCBjb2RlOiAncmVxdWlyZWQnIH0pO1xuICAgICAgfVxuICAgICAgaWYgKCFldmVudC5kZXNjcmlwdGlvbiB8fCBldmVudC5kZXNjcmlwdGlvbi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgZXZlbnRFcnJvcnMucHVzaCh7IGZpZWxkOiAnZGVzY3JpcHRpb24nLCBjb2RlOiAncmVxdWlyZWQnIH0pO1xuICAgICAgfVxuICAgICAgaWYgKCEhZXZlbnQuZXF1aXBtZW50ICYmIGV2ZW50LmVxdWlwbWVudC5pZCA9PT0gJ25vdC1mb3VuZCcpIHtcbiAgICAgICAgZXZlbnRFcnJvcnMucHVzaCh7IGZpZWxkOiAnZXF1aXBtZW50JywgY29kZTogJ25vdC1mb3VuZCcgfSk7XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQuY2F0ZWdvcnkgPT09ICdNQU5JRkVTVEFUSU9OJykge1xuICAgICAgICBpZiAoIWV2ZW50LnN0YXJ0RGF0ZSB8fCBldmVudC5zdGFydERhdGUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgZXZlbnRFcnJvcnMucHVzaCh7IGZpZWxkOiAnc3RhcnREYXRlJywgY29kZTogJ3JlcXVpcmVkJyB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWV2ZW50LmVuZERhdGUgfHwgZXZlbnQuZW5kRGF0ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBldmVudEVycm9ycy5wdXNoKHsgZmllbGQ6ICdlbmREYXRlJywgY29kZTogJ3JlcXVpcmVkJyB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKGV2ZW50LnN0YXJ0RGF0ZT8ubG9jYWxlQ29tcGFyZShldmVudC5lbmREYXRlID8/ICcnKSA/PyAwKSA+IDApIHtcbiAgICAgICAgICBldmVudEVycm9ycy5wdXNoKHsgZmllbGQ6ICdzdGFydERhdGUnLCBjb2RlOiAnYmVmb3JlJyB9KTtcbiAgICAgICAgICBldmVudEVycm9ycy5wdXNoKHsgZmllbGQ6ICdlbmREYXRlJywgY29kZTogJ2FmdGVyJyB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5lcnJvcnMucHVzaChldmVudEVycm9ycyk7XG4gICAgfSk7XG4gICAgdGhpcy5ldmVudEVycm9ycy5uZXh0KHRoaXMuZXJyb3JzKTtcbiAgfVxuXG4gIGhhc0Vycm9yKHByb3A6IHN0cmluZywgaWR4OiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5lcnJvcnNbaWR4XT8uZmluZCgoZXJyKSA9PiBlcnIuZmllbGQgPT09IHByb3ApID8/IGZhbHNlO1xuICB9XG5cbiAgY2F0ZWdvcmllcyhldmVudDogSHlwRXZlbnREZXRhaWxzKSB7XG4gICAgcmV0dXJuIENBVEVHT1JJRVNfQllfVFlQRS52YWx1ZXNbZXZlbnQudHlwZV07XG4gIH1cblxuICBjaGFuZ2VTdGF0dXMoJGV2ZW50OiBzdHJpbmcsIGV2ZW50OiBIeXBFdmVudERldGFpbHMpIHtcbiAgICB0aGlzLmNoYW5nZVN0YXR1c0NvbnRleHQuZXZlbnRzID0gW2V2ZW50XTtcbiAgICB0aGlzLmNoYW5nZVN0YXR1c0NvbnRleHQuc3RhdHVzID0gJGV2ZW50O1xuICAgIHRoaXMuY2hhbmdlU3RhdHVzQ29udGV4dC5hbGwgPSBmYWxzZTtcbiAgICB0aGlzLnRvZ2dsZUNvbmZpcm0oKTtcbiAgfVxuXG4gIGNsb3NlQWxsKCkge1xuICAgIHRoaXMuY2hhbmdlU3RhdHVzQ29udGV4dC5hbGwgPSB0cnVlO1xuICAgIHRoaXMuY2hhbmdlU3RhdHVzQ29udGV4dC5ldmVudHMgPSB0aGlzLmV2ZW50cztcbiAgICB0aGlzLmNoYW5nZVN0YXR1c0NvbnRleHQuc3RhdHVzID0gJ0RPTkUnO1xuICAgIHRoaXMudG9nZ2xlQ29uZmlybSgpO1xuICB9XG5cbiAgY29uZmlybWVkQ2xvc2UoKSB7XG4gICAgaWYgKHRoaXMuY2hhbmdlU3RhdHVzQ29udGV4dC5hbGwpIHtcbiAgICAgIGlmICghdGhpcy5wcm9jZWR1cmUpIHtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgICBFdmVudEFjdGlvbnMuc3RhdHVzKHtcbiAgICAgICAgICAgIHRhcmdldFN0YXR1czogdGhpcy5jaGFuZ2VTdGF0dXNDb250ZXh0LnN0YXR1cyxcbiAgICAgICAgICAgIGV2ZW50OiB0aGlzLmNoYW5nZVN0YXR1c0NvbnRleHQuZXZlbnRzWzBdLFxuICAgICAgICAgICAgcHJvY2VkdXJlOiB0aGlzLnByb2NlZHVyZSxcbiAgICAgICAgICAgIGNvbW1lbnQ6IHRoaXMuY2hhbmdlU3RhdHVzQ29udGV4dC5jb21tZW50XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgICAgRXZlbnRBY3Rpb25zLnN0YXR1cyh7XG4gICAgICAgICAgICB0YXJnZXRTdGF0dXM6IHRoaXMuY2hhbmdlU3RhdHVzQ29udGV4dC5zdGF0dXMsXG4gICAgICAgICAgICBwcm9jZWR1cmU6IHRoaXMucHJvY2VkdXJlLFxuICAgICAgICAgICAgY29tbWVudDogdGhpcy5jaGFuZ2VTdGF0dXNDb250ZXh0LmNvbW1lbnRcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICBFdmVudEFjdGlvbnMuc3RhdHVzKHtcbiAgICAgICAgICB0YXJnZXRTdGF0dXM6IHRoaXMuY2hhbmdlU3RhdHVzQ29udGV4dC5zdGF0dXMsXG4gICAgICAgICAgZXZlbnQ6IHRoaXMuY2hhbmdlU3RhdHVzQ29udGV4dC5ldmVudHNbMF0sXG4gICAgICAgICAgcHJvY2VkdXJlOiB0aGlzLnByb2NlZHVyZSxcbiAgICAgICAgICBjb21tZW50OiB0aGlzLmNoYW5nZVN0YXR1c0NvbnRleHQuY29tbWVudFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy50b2dnbGVDb25maXJtKCk7XG4gIH1cblxuICB0b2dnbGVDb25maXJtKCkge1xuICAgIGlmICghdGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKFxuICAgICAgICBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICAgICAgYmFja2Ryb3BDbGFzczogJ2JhY2tkcm9wLWRhcmsnLFxuICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnby1odnktY2xvc2UtY29uZmlybSddXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgdGhpcy5vdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy50b2dnbGVDb25maXJtKCkpO1xuICAgICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaChuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5jb25maXJtRGlhbG9nLCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdGhpcy5jaGFuZ2VTdGF0dXNDb250ZXh0LmNvbW1lbnQgPSAnJztcbiAgfVxuXG4gIGNvbmZpcm1EaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5jaGFuZ2VTdGF0dXNDb250ZXh0LmNvbW1lbnQubGVuZ3RoID09PSAwO1xuICB9XG5cbiAgZ2V0IGNhbGN1bGF0ZWRQcm9ncmVzcygpIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZChcbiAgICAgICh0aGlzLnByb2NlZHVyZSEuYWN0aW9ucy5maWx0ZXIoKGFjdGlvbikgPT4gYWN0aW9uLnN0YXR1cyA9PT0gJ0RPTkUnKS5sZW5ndGggLyB0aGlzLnByb2NlZHVyZSEuYWN0aW9ucy5sZW5ndGgpICpcbiAgICAgICAgMTAwXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkb25seSBwYWRJZCA9IHBhZElkO1xuXG4gIG1vZGlmaWVkQWN0aW9ucygkZXZlbnQ6IGFueSkge1xuICAgIGlmIChlcXVhbCgkZXZlbnQsIHRoaXMuX3Byb2NlZHVyZSEuYWN0aW9ucykpIHtcbiAgICAgIGRlbGV0ZSB0aGlzLnByb2NlZHVyZU1vZGlmaWNhdGlvbnMuYWN0aW9ucztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcm9jZWR1cmVNb2RpZmljYXRpb25zLmFjdGlvbnMgPSAkZXZlbnQ7XG4gICAgfVxuICAgIHRoaXMuX291dHB1dE1vZGlmaWNhdGlvbnMoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxcIj5cbiAgPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX2hlYWRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19oZWFkZXJfX3NwbGl0XCI+XG4gICAgICA8aDE+e3sgdGl0bGUgPz8gJ0BodnkuZXZlbnQuZGV0YWlsJyB8IGkxOG4gfX08L2gxPlxuICAgICAgQGlmIChldmVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICBAaWYgKGNhbkNsb3NlU29tZSkge1xuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5IC1maXgtcmlnaHRcIiBbZGlzYWJsZWRdPVwiIWNhbkNsb3NlU29tZVwiIChjbGljayk9XCJjbG9zZUFsbCgpXCI+XG4gICAgICAgICAgICB7eyAoY2FuQ2xvc2VTb21lID8gJ0BodnkuZXZlbnQubG9nLmV2ZW50LmNsb3NlJyA6ICdAaHZ5LmV2ZW50LmxvZy5ldmVudC5jbG9zZWQnKSB8IGkxOG4gfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKCFjYW5DbG9zZVNvbWUpIHtcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImEtdG9vbHRpcFwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXRvb2x0aXBdPVwiJy4uLiBUT0RPOiBnZXQgY2xvc2luZyBjb21tZW50IC4uLidcIlxuICAgICAgICAgICAgZGF0YS10b29sdGlwLXBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImlcIiBbaGVpZ2h0XT1cIjE4XCIgW3dpZHRoXT1cIjE4XCI+aTwvcHJ5LWljb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9faGVhZGVyX19zcGxpdFwiPlxuICAgICAgQGlmIChjYW5DbG9zZVNvbWUpIHtcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnlcIj57eyAnQGh2eS5ldmVudC5sb2cucHJvY2VkdXJlLmRlbGV0ZScgfCBpMThuIH19PC9idXR0b24+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX2NvbnRhaW5lcl9fc2Nyb2xsYWJsZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX2V2ZW50c1wiPlxuICAgICAgICBAZm9yIChldmVudCBvZiBldmVudHM7IHRyYWNrIGV2ZW50LmlkOyBsZXQgaWR4ID0gJGluZGV4KSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX2V2ZW50c19fZXZlbnRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19ldmVudHNfX2V2ZW50X19oZWFkZXJcIj5cbiAgICAgICAgICAgICAgPHByeS1pY29uXG4gICAgICAgICAgICAgICAgaWNvblN2Zz1cImFycm93X2Rvd25fcm91bmRlZFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLi1yb3RhdGVkXT1cIm9wZW5lZFtpZHhdXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlKGlkeClcIlxuICAgICAgICAgICAgICAgIFt3aWR0aF09XCIxMFwiXG4gICAgICAgICAgICAgICAgW2hlaWdodF09XCIxMFwiXG4gICAgICAgICAgICAgID48L3ByeS1pY29uPlxuICAgICAgICAgICAgICA8aHZ5LWljb24tZGlzcGxheSBbZXZlbnRdPVwiZXZlbnRcIj48L2h2eS1pY29uLWRpc3BsYXk+XG4gICAgICAgICAgICAgIDxoMj57eyBldmVudC5uYW1lIH19PC9oMj5cbiAgICAgICAgICAgICAgPGh2eS1zdGF0dXMtZGlzcGxheVxuICAgICAgICAgICAgICAgIFtpdGVtXT1cImV2ZW50XCJcbiAgICAgICAgICAgICAgICBbbW9kaWZpYWJsZV09XCJldmVudC5zdGF0dXMgIT09ICdET05FJ1wiXG4gICAgICAgICAgICAgICAgKG1vZGlmaWVkKT1cImNoYW5nZVN0YXR1cygkZXZlbnQsIGV2ZW50KVwiXG4gICAgICAgICAgICAgID48L2h2eS1zdGF0dXMtZGlzcGxheT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX2V2ZW50c19fZXZlbnRfX2NvbnRlbnRcIj5cbiAgICAgICAgICAgICAgQGlmICghb3BlbmVkW2lkeF0pIHtcbiAgICAgICAgICAgICAgICA8ZGl2Pnt7ICdAaHZ5LmV2ZW50LmxvZy5ldmVudC5kZXNjcmlwdGlvbicgfCBpMThuIH19IDoge3sgZXZlbnQuZGVzY3JpcHRpb24gfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2Pnt7ICdAaHZ5LmV2ZW50LmxvZy5ldmVudC5hZGRyZXNzJyB8IGkxOG4gfX0gOiB7eyBldmVudC5hZGRyZXNzIH19PC9kaXY+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIEBpZiAoYWNjZXNzKGV2ZW50KTsgYXMgYWNjZXNzVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19ldmVudHNfX2V2ZW50X19jb250ZW50X19oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGgzPnt7ICdAaHZ5LmV2ZW50LmxvZy5ldmVudC5kZXRhaWwnIHwgaTE4biB9fTwvaDM+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj57eyAnQGh2eS5ldmVudC5sb2cuZXZlbnQubWFuZGF0b3J5JyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDx0YWJsZT5cbiAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5sb2cuZXZlbnQubmFtZScgfCBpMThuIH19PHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+IDo8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy4tZXJyb3JdPVwiaGFzRXJyb3IoJ25hbWUnLCBpZHgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZXZlbnQubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJtb2RpZnlFdmVudChpZHgsICduYW1lJywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImFjY2Vzc1ZhbHVlLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZXZlbnQuaWQgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5sb2cuZXZlbnQuaWQnIHwgaTE4biB9fTxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPiA6PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCIgW3ZhbHVlXT1cInBhZElkLmZuKGV2ZW50LmlkKVwiIFtyZWFkb25seV09XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5sb2cuZXZlbnQuY2F0ZWdvcnknIHwgaTE4biB9fTxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPiA6PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJldmVudC5jYXRlZ29yeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cImNhdGVnb3JpZXMoZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuLWVycm9yXT1cImhhc0Vycm9yKCdjYXRlZ29yeScsIGlkeClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm1vZGlmeUV2ZW50KGlkeCwgJ2NhdGVnb3J5JywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaTE4blByZWZpeD1cIkBodnkuZXZlbnQuY2F0ZWdvcnkuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWNjZXNzVmFsdWUuY2F0ZWdvcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5jcml0aWNhbGl0eS5uYW1lJyB8IGkxOG4gfX08c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj4gOjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZXZlbnQuY3JpdGljYWxpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJjcml0aWNhbGl0aWVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuLWVycm9yXT1cImhhc0Vycm9yKCdjcml0aWNhbGl0eScsIGlkeClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkxOG5QcmVmaXg9XCJAaHZ5LmV2ZW50LmNyaXRpY2FsaXR5LlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFjY2Vzc1ZhbHVlLmNyaXRpY2FsaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJtb2RpZnlFdmVudChpZHgsICdjcml0aWNhbGl0eScsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5sb2cuZXZlbnQuZGVzY3JpcHRpb24nIHwgaTE4biB9fTxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPiA6PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZXZlbnQuZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuLWVycm9yXT1cImhhc0Vycm9yKCdkZXNjcmlwdGlvbicsIGlkeClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJhY2Nlc3NWYWx1ZS5kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwibW9kaWZ5RXZlbnQoaWR4LCAnZGVzY3JpcHRpb24nLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ICdAaHZ5LmV2ZW50LmxvZy5ldmVudC5hZGRyZXNzJyB8IGkxOG4gfX0gOjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImV2ZW50LmFkZHJlc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuLWVycm9yXT1cImhhc0Vycm9yKCdhZGRyZXNzJywgaWR4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImFjY2Vzc1ZhbHVlLmFkZHJlc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm1vZGlmeUV2ZW50KGlkeCwgJ2FkZHJlc3MnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChbJ0FMRVJUJywgJ1JFUE9SVCddLmluY2x1ZGVzKGV2ZW50LnR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5zb3VyY2UnIHwgaTE4biB9fSA6PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImV2ZW50LmV4dGVybmFsU291cmNlUmVmID8/ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy4tZXJyb3JdPVwiaGFzRXJyb3IoJ3NvdXJjZScsIGlkeClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImFjY2Vzc1ZhbHVlLnNvdXJjZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm1vZGlmeUV2ZW50KGlkeCwgJ3NvdXJjZScsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgJ0BodnkuZXZlbnQuZXF1aXBtZW50JyB8IGkxOG4gfX0gOjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImV2ZW50LmVxdWlwbWVudD8ubmFtZSA/PyAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLi1lcnJvcl09XCJoYXNFcnJvcignZXF1aXBtZW50JywgaWR4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImFjY2Vzc1ZhbHVlLmVxTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJjaGFuZ2VFcXVpcG1lbnQoaWR4LCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgJ0BodnkuZXZlbnQuZXF1aXBtZW50RW50aXR5JyB8IGkxOG4gfX0gOjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLi1lcnJvcl09XCJoYXNFcnJvcignZXF1aXBtZW50JywgaWR4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImV2ZW50LmVxdWlwbWVudD8uZW50aXR5ID8/ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5kb21haW4ubmFtZScgfCBpMThuIH19IDo8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJ5LXNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJET01BSU5TXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJldmVudC5kb21haW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkxOG5QcmVmaXg9XCJAaHZ5LmV2ZW50LmRvbWFpbi5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy4tZXJyb3JdPVwiaGFzRXJyb3IoJ2RvbWFpbicsIGlkeClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm1vZGlmeUV2ZW50KGlkeCwgJ2RvbWFpbicsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhY2Nlc3NWYWx1ZS5kb21haW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ0BodnkuZXZlbnQuc3RhcnREYXRlJyB8IGkxOG4gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChldmVudC5jYXRlZ29yeSA9PT0gJ01BTklGRVNUQVRJT04nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGVwPVwiMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJldmVudC5zdGFydERhdGUgfCBmb3JEYXRlVGltZUxvY2FsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuLWVycm9yXT1cImhhc0Vycm9yKCdzdGFydERhdGUnLCBpZHgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiYWNjZXNzVmFsdWUuc3RhcnREYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm1vZGlmeUV2ZW50KGlkeCwgJ3N0YXJ0RGF0ZScsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ0BodnkuZXZlbnQuZW5kRGF0ZScgfCBpMThuIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZXZlbnQuY2F0ZWdvcnkgPT09ICdNQU5JRkVTVEFUSU9OJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJkYXRldGltZS1sb2NhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RlcD1cIjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZXZlbnQuZW5kRGF0ZSB8IGZvckRhdGVUaW1lTG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy4tZXJyb3JdPVwiaGFzRXJyb3IoJ2VuZERhdGUnLCBpZHgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiYWNjZXNzVmFsdWUuZW5kRGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJtb2RpZnlFdmVudChpZHgsICdlbmREYXRlJywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ICdAaHZ5LmV2ZW50LmNyZWF0aW9uRGF0ZScgfCBpMThuIH19IDo8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXA9XCIxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImV2ZW50LmNyZWF0aW9uRGF0ZSB8IGZvckRhdGVUaW1lTG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ICdAaHZ5LmV2ZW50Lmxhc3RNb2RpZmljYXRpb25EYXRlJyB8IGkxOG4gfX0gOjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJkYXRldGltZS1sb2NhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RlcD1cIjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZXZlbnQubGFzdE1vZGlmaWNhdGlvbkRhdGUgfCBmb3JEYXRlVGltZUxvY2FsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5jbG9zZURhdGUnIHwgaTE4biB9fSA6PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGVwPVwiMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJldmVudC5jbG9zZURhdGUgfCBmb3JEYXRlVGltZUxvY2FsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19ldmVudHNfX2V2ZW50X19jb250ZW50X19jb21tZW50c1wiPlxuICAgICAgICAgICAgICAgICAgICA8aDM+e3sgJ0BodnkuZXZlbnQubG9nLmV2ZW50LmNvbW1lbnRzLm5hbWUnIHwgaTE4biB9fSA6PC9oMz5cbiAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIignQGh2eS5ldmVudC5sb2cuZXZlbnQuY29tbWVudHMucGxhY2Vob2xkZXInIHwgaTE4bikgKyAnLi4uJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJuZXdDb21lbnRDb250ZW50XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19ldmVudHNfX2V2ZW50X19jb250ZW50X19jb21tZW50c19fYnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5XCIgW2Rpc2FibGVkXT1cIm5ld0NvbWVudENvbnRlbnQubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAnQGh2eS5hY3Rpb24uY29tbWVudCcgfCBpMThuIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fcHJvY2VkdXJlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19wcm9jZWR1cmVfX2hlYWRlclwiPlxuICAgICAgICAgIDxoMj5cbiAgICAgICAgICAgIHt7IChldmVudHMubGVuZ3RoID09PSAxID8gJ0BodnkuZXZlbnQubG9nLnByb2NlZHVyZS5uYW1lMScgOiAnQGh2eS5ldmVudC5sb2cucHJvY2VkdXJlLm5hbWUnKSB8IGkxOG4gfX1cbiAgICAgICAgICA8L2gyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgQGlmIChwcm9jZWR1cmUpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fcHJvY2VkdXJlX19kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgPHA+e3sgcHJvY2VkdXJlLmRlc2NyaXB0aW9uIH19PC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19wcm9jZWR1cmVfX3Byb2dyZXNzXCI+XG4gICAgICAgICAgICA8cD57eyAnQGh2eS5ldmVudC5sb2cucHJvY2VkdXJlLnByb2dyZXNzJyB8IGkxOG4gfX08L3A+XG4gICAgICAgICAgICA8aHZ5LXByb2dyZXNzLWRpc3BsYXkgW3Byb2dyZXNzXT1cImNhbGN1bGF0ZWRQcm9ncmVzc1wiPjwvaHZ5LXByb2dyZXNzLWRpc3BsYXk+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGh2eS1wcm9jZWR1cmUtYWN0aW9uc1xuICAgICAgICAgICAgW2FjdGlvbnNdPVwicHJvY2VkdXJlLmFjdGlvbnNcIlxuICAgICAgICAgICAgKG1vZGlmaWVkKT1cIm1vZGlmaWVkQWN0aW9ucygkZXZlbnQpXCJcbiAgICAgICAgICA+PC9odnktcHJvY2VkdXJlLWFjdGlvbnM+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5XCIgW2Rpc2FibGVkXT1cIiFjYW5Bc3NvY2lhdGVQcm9jZWR1cmVcIj5cbiAgICAgICAgICAgIHt7ICdAaHZ5LmFjdGlvbi5hc3NvY2lhdGUnIHwgaTE4biB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNjb25maXJtRGlhbG9nPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJvLWh2eS1jbG9zZS1jb25maXJtX19kaWFsb2dcIlxuICAgIGFyaWEtbGFiZWxsZWRieT1cImNvbmZpcm1cIlxuICAgIHRhYmluZGV4PVwiLTFcIlxuICAgIGlkPVwiY2hvaWNlXCJcbiAgICByb2xlPVwiZGlhbG9nXCJcbiAgICBhcmlhLW1vZGFsPVwidHJ1ZVwiXG4gID5cbiAgICA8aDI+XG4gICAgICB7e1xuICAgICAgICAoY2hhbmdlU3RhdHVzQ29udGV4dC5ldmVudHMubGVuZ3RoID09PSAxID8gJ0BodnkuZXZlbnQuY2xvc2Uub25lVGl0bGUnIDogJ0BodnkuZXZlbnQuY2xvc2UubXVsdGlUaXRsZScpIHwgaTE4blxuICAgICAgfX1cbiAgICA8L2gyPlxuICAgIDxwPnt7IChjaGFuZ2VTdGF0dXNDb250ZXh0LmV2ZW50cy5sZW5ndGggPT09IDEgPyAnQGh2eS5ldmVudC5jbG9zZS5vbmUnIDogJ0BodnkuZXZlbnQuY2xvc2UubXVsdGknKSB8IGkxOG4gfX08L3A+XG4gICAgPHVsPlxuICAgICAgQGZvciAoZXZlbnQgb2YgY2hhbmdlU3RhdHVzQ29udGV4dC5ldmVudHM7IHRyYWNrIGV2ZW50LmlkKSB7XG4gICAgICAgIDxsaT57eyBldmVudC5uYW1lIH19PC9saT5cbiAgICAgIH1cbiAgICA8L3VsPlxuICAgIDxwIGNsYXNzPVwiby1odnktY2xvc2UtY29uZmlybV9fZGlhbG9nX19jb21tZW50LXRpdGxlXCI+XG4gICAgICB7eyAnQGh2eS5ldmVudC5jbG9zZS5jb21tZW50JyB8IGkxOG4gfX08c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj4gOlxuICAgIDwvcD5cbiAgICA8ZGl2IGNsYXNzPVwiby1odnktY2xvc2UtY29uZmlybV9fZGlhbG9nX19jb21tZW50XCI+XG4gICAgICA8dGV4dGFyZWEgWyhuZ01vZGVsKV09XCJjaGFuZ2VTdGF0dXNDb250ZXh0LmNvbW1lbnRcIiBjbGFzcz1cImEtZm9ybS1maWVsZFwiIFttYXhMZW5ndGhdPVwiMjU1XCI+PC90ZXh0YXJlYT5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiby1odnktY2xvc2UtY29uZmlybV9fZGlhbG9nX19hY3Rpb25zXCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIiAoY2xpY2spPVwiY29uZmlybWVkQ2xvc2UoKVwiIFtkaXNhYmxlZF09XCJjb25maXJtRGlzYWJsZWQoKVwiPlxuICAgICAgICB7eyAnQGh2eS5hY3Rpb24udmFsaWRhdGUnIHwgaTE4biB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYS1idG4gYS1idG4tLXNlY29uZGFyeVwiIChjbGljayk9XCJ0b2dnbGVDb25maXJtKClcIj57eyAnQGh2eS5hY3Rpb24uY2FuY2VsJyB8IGkxOG4gfX08L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
366
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtZGV0YWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvaHlwZXJ2aXNvci9zcmMvbGliL2V2ZW50L2RldGFpbC9ldmVudC1kZXRhaWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9oeXBlcnZpc29yL3NyYy9saWIvZXZlbnQvZGV0YWlsL2V2ZW50LWRldGFpbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBR2pILE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ25GLE9BQU8sRUFBc0Msd0JBQXdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUdsRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRS9ELE9BQU8sRUFBVyxhQUFhLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3RELE9BQU8sS0FBSyxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7Ozs7Ozs7QUFNeEMsTUFBTSxPQUFPLG9CQUFxQixTQUFRLHdCQUF3QjtJQTZCaEUsSUFBYSxNQUFNLENBQUMsTUFBeUI7UUFDM0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN0RCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVELElBQWEsU0FBUyxDQUFDLFNBQXVCO1FBQzVDLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQzVCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQWEsbUJBQW1CLENBQUMsR0FBUTtRQUN2QyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFhLGFBQWEsQ0FBQyxPQUFrRDtRQUMzRSxJQUFJLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzdELENBQUM7SUFDSCxDQUFDO0lBRUQsWUFDVSxnQkFBa0MsRUFDbEMsS0FBWSxFQUNaLE9BQWdCLEVBQ2hCLGdCQUFrQyxFQUNsQyxRQUE0QixFQUM1QixXQUEyQjtRQUVuQyxLQUFLLEVBQUUsQ0FBQztRQVBBLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsVUFBSyxHQUFMLEtBQUssQ0FBTztRQUNaLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDaEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxhQUFRLEdBQVIsUUFBUSxDQUFvQjtRQUM1QixnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUExRHJDLFdBQU0sR0FBYyxFQUFFLENBQUM7UUFDdkIsa0JBQWEsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLENBQUM7UUFDM0MsWUFBTyxHQUFzQixFQUFFLENBQUM7UUFDaEMsdUJBQWtCLEdBQStCLEVBQUUsQ0FBQztRQUMxQyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFpRCxDQUFDO1FBRTdGLDJCQUFzQixHQUEwQixFQUFFLENBQUM7UUFDekMsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQXFELENBQUM7UUFDakYsWUFBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDbEMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBdUMsQ0FBQztRQUNoRixXQUFNLEdBQXdDLEVBQUUsQ0FBQztRQUNqRCxpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDdEIsd0JBQW1CLEdBS2Y7WUFDRixPQUFPLEVBQUUsRUFBRTtZQUNYLE1BQU0sRUFBRSxFQUFFO1lBQ1YsTUFBTSxFQUFFLE1BQU07WUFDZCxHQUFHLEVBQUUsS0FBSztTQUNYLENBQUM7UUFzVWlCLFVBQUssR0FBRyxLQUFLLENBQUM7SUFoU2pDLENBQUM7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVELElBQUkscUJBQXFCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEtBQUssS0FBSyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVU7WUFDcEIsQ0FBQyxDQUFDO2dCQUNFLEdBQUcsSUFBSSxDQUFDLFVBQVU7Z0JBQ2xCLEdBQUcsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLElBQUksRUFBRSxDQUFDO2dCQUN0QyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07YUFDcEI7WUFDSCxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLENBQUMsQ0FBUztRQUNkLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBYSxFQUFFLElBQVksRUFBRSxNQUFzQjtRQUM3RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLGFBQWE7UUFDYixNQUFNLFFBQVEsR0FBRyxNQUFNLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBRXpFLE1BQU0sY0FBYyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxVQUFVLENBQUM7UUFDbEUsYUFBYTtRQUNiLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxjQUFjLEVBQUUsQ0FBQztZQUNqRCxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDdEMsQ0FBQztZQUNELGFBQWE7WUFDYixJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsY0FBYyxDQUFDO1lBRXRELElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzlCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3JDLGFBQWE7Z0JBQ2IsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzVDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQzdELE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN4QyxDQUFDO2dCQUNELElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzlCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFzQjtRQUMzQixJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDNUIsT0FBTztnQkFDTCxJQUFJLEVBQUUsSUFBSTtnQkFDVixRQUFRLEVBQUUsSUFBSTtnQkFDZCxXQUFXLEVBQUUsSUFBSTtnQkFDakIsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLE9BQU8sRUFBRSxJQUFJO2dCQUNiLE1BQU0sRUFBRSxJQUFJO2dCQUNaLE1BQU0sRUFBRSxJQUFJO2dCQUNaLE1BQU0sRUFBRSxJQUFJO2dCQUNaLFFBQVEsRUFBRSxJQUFJO2dCQUNkLFNBQVMsRUFBRSxJQUFJO2dCQUNmLE9BQU8sRUFBRSxJQUFJO2FBQ2QsQ0FBQztRQUNKLENBQUM7UUFDRCxRQUFRLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNuQixLQUFLLE9BQU8sQ0FBQztZQUNiO2dCQUNFLE9BQU87b0JBQ0wsSUFBSSxFQUFFLElBQUk7b0JBQ1YsUUFBUSxFQUFFLElBQUk7b0JBQ2QsV0FBVyxFQUFFLElBQUk7b0JBQ2pCLFdBQVcsRUFBRSxJQUFJO29CQUNqQixPQUFPLEVBQUUsSUFBSTtvQkFDYixNQUFNLEVBQUUsSUFBSTtvQkFDWixNQUFNLEVBQUUsSUFBSTtvQkFDWixNQUFNLEVBQUUsSUFBSTtvQkFDWixRQUFRLEVBQUUsSUFBSTtvQkFDZCxTQUFTLEVBQUUsSUFBSTtvQkFDZixPQUFPLEVBQUUsSUFBSTtpQkFDZCxDQUFDO1lBQ0osS0FBSyxRQUFRO2dCQUNYLE9BQU87b0JBQ0wsSUFBSSxFQUFFLEtBQUs7b0JBQ1gsUUFBUSxFQUFFLElBQUk7b0JBQ2QsV0FBVyxFQUFFLEtBQUs7b0JBQ2xCLFdBQVcsRUFBRSxJQUFJO29CQUNqQixPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUsSUFBSTtvQkFDWixNQUFNLEVBQUUsS0FBSztvQkFDYixNQUFNLEVBQUUsS0FBSztvQkFDYixRQUFRLEVBQUUsSUFBSTtvQkFDZCxTQUFTLEVBQUUsSUFBSTtvQkFDZixPQUFPLEVBQUUsSUFBSTtpQkFDZCxDQUFDO1lBQ0osS0FBSyxVQUFVO2dCQUNiLE9BQU87b0JBQ0wsSUFBSSxFQUFFLEtBQUs7b0JBQ1gsUUFBUSxFQUFFLEtBQUs7b0JBQ2YsV0FBVyxFQUFFLEtBQUs7b0JBQ2xCLFdBQVcsRUFBRSxLQUFLO29CQUNsQixPQUFPLEVBQUUsS0FBSztvQkFDZCxNQUFNLEVBQUUsS0FBSztvQkFDYixNQUFNLEVBQUUsS0FBSztvQkFDYixNQUFNLEVBQUUsS0FBSztvQkFDYixRQUFRLEVBQUUsS0FBSztvQkFDZixTQUFTLEVBQUUsS0FBSztvQkFDaEIsT0FBTyxFQUFFLEtBQUs7aUJBQ2YsQ0FBQztRQUNOLENBQUM7SUFDSCxDQUFDO0lBRUQsd0JBQXdCLENBQUMsS0FBYSxFQUFFLEtBQStCO1FBQ3JFLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxLQUFLLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUN4RCxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDdEMsQ0FBQztZQUNELGFBQWE7WUFDYixJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUNqRCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM5QixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNyQyxhQUFhO2dCQUNiLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDaEQsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDN0QsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3hDLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDOUIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWEsRUFBRSxNQUFXO1FBQ3hDLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBRWxHLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsZ0JBQWdCO2lCQUNsQixVQUFVLENBQUMsS0FBSyxDQUFDO2lCQUNqQixJQUFJLENBQ0gsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsd0JBQXdCLENBQUMsS0FBSyxFQUFFO29CQUNuQyxFQUFFLEVBQUUsV0FBVztvQkFDZixJQUFJLEVBQUUsS0FBSztvQkFDWCxNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUM7b0JBQ3ZELE1BQU0sRUFBRSxFQUFFO2lCQUNYLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNoRyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQixDQUFDLENBQUMsQ0FDSDtpQkFDQSxTQUFTLENBQUMsQ0FBQyxTQUE4QixFQUFFLEVBQUU7Z0JBQzVDLElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDN0QsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDbEQsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsd0JBQXdCLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ2xELENBQUM7SUFDSCxDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLFNBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMzRyxDQUFDO0lBRUQsY0FBYyxDQUFDLE1BQXlCO1FBQ3RDLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUN2QixNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzNDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQ3hELENBQUM7WUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDbkQsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7WUFDNUQsQ0FBQztZQUNELElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN6RCxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztZQUMvRCxDQUFDO1lBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3pELFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQy9ELENBQUM7WUFDRCxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLFdBQVcsRUFBRSxDQUFDO2dCQUM1RCxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUM5RCxDQUFDO1lBQ0QsSUFBSSxLQUFLLENBQUMsUUFBUSxLQUFLLGVBQWUsRUFBRSxDQUFDO2dCQUN2QyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDckQsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7Z0JBQzdELENBQUM7Z0JBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ2pELFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO2dCQUMzRCxDQUFDO2dCQUNELElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUNuRSxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztvQkFDekQsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7Z0JBQ3hELENBQUM7WUFDSCxDQUFDO1lBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFZLEVBQUUsR0FBVztRQUNoQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUN0RSxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQXNCO1FBQy9CLE9BQU8sa0JBQWtCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQWMsRUFBRSxLQUFzQjtRQUNqRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDekMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7UUFDckMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUM7UUFDcEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzlDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUNqQixZQUFZLENBQUMsTUFBTSxDQUFDO29CQUNsQixZQUFZLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU07b0JBQzdDLEtBQUssRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztvQkFDekMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO29CQUN6QixPQUFPLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU87aUJBQzFDLENBQUMsQ0FDSCxDQUFDO1lBQ0osQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUNqQixZQUFZLENBQUMsTUFBTSxDQUFDO29CQUNsQixZQUFZLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU07b0JBQzdDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztvQkFDekIsT0FBTyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPO2lCQUMxQyxDQUFDLENBQ0gsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUNqQixZQUFZLENBQUMsTUFBTSxDQUFDO2dCQUNsQixZQUFZLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU07Z0JBQzdDLEtBQUssRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDekMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO2dCQUN6QixPQUFPLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU87YUFDMUMsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUNuQyxJQUFJLGFBQWEsQ0FBQztnQkFDaEIsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLGFBQWEsRUFBRSxlQUFlO2dCQUM5QixVQUFVLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQzthQUNwQyxDQUFDLENBQ0gsQ0FBQztZQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1lBQ3RFLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztRQUN4RixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDOUIsQ0FBQztRQUNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FDZixDQUFDLElBQUksQ0FBQyxTQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQzVHLEdBQUcsQ0FDTixDQUFDO0lBQ0osQ0FBQztJQUlELGVBQWUsQ0FBQyxNQUFXO1FBQ3pCLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDNUMsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDO1FBQzdDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDL0MsQ0FBQztRQUNELElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7OEdBdldVLG9CQUFvQjtrR0FBcEIsb0JBQW9CLHdaQTJCSyxXQUFXLG9EQ2hEakQsNHJmQXdWQTs7MkZEblVhLG9CQUFvQjtrQkFKaEMsU0FBUzsrQkFDRSxrQkFBa0I7NE5BUWxCLGNBQWM7c0JBQXZCLE1BQU07Z0JBR0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUVHLFdBQVc7c0JBQXBCLE1BQU07Z0JBZUUsS0FBSztzQkFBYixLQUFLO2dCQUU2QyxhQUFhO3NCQUEvRCxTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBRXBDLE1BQU07c0JBQWxCLEtBQUs7Z0JBT08sU0FBUztzQkFBckIsS0FBSztnQkFLTyxtQkFBbUI7c0JBQS9CLEtBQUs7Z0JBTU8sYUFBYTtzQkFBekIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIeXBQcm9jZWR1cmUgfSBmcm9tICcuLi8uLi9tb2RlbC9wcm9jZWR1cmUvaHlwLXByb2NlZHVyZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSHlwRXZlbnREZXRhaWxzIH0gZnJvbSAnLi4vLi4vbW9kZWwvZXZlbnQvaHlwLWV2ZW50LWRldGFpbC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSHlwRXZlbnRDcml0aWNhbGl0eSB9IGZyb20gJy4uLy4uL21vZGVsL2V2ZW50L2h5cC1ldmVudC1jcml0aWNhbGl0eS50eXBlJztcbmltcG9ydCB7IFByeUkxOG5TZXJ2aWNlLCBQcnlTbmFja2JhclNlcnZpY2UsIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBIeXBFcXVpcG1lbnQgfSBmcm9tICcuLi8uLi9tb2RlbC9oeXAtZXF1aXBtZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBFcXVpcG1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc3RvcmUvZXF1aXBtZW50L2VxdWlwbWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IERPTUFJTlMgfSBmcm9tICcuLi8uLi9tb2RlbC9kb21haW5zLmNvbnN0YW50JztcbmltcG9ydCB7IENBVEVHT1JJRVNfQllfVFlQRSB9IGZyb20gJy4uLy4uL21vZGVsL2V2ZW50L2h5cC1ldmVudC1jYXRlZ29yeS50eXBlJztcbmltcG9ydCB7IEV2ZW50QWN0aW9ucyB9IGZyb20gJy4uLy4uL3N0b3JlL2V2ZW50L2V2ZW50LmFjdGlvbnMnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBwYWRJZCB9IGZyb20gJy4uLy4uL2dlbmVyYWwvcGFkLWlkLmZ1bmN0aW9uJztcbmltcG9ydCBlcXVhbCBmcm9tICdmYXN0LWRlZXAtZXF1YWwvZXM2JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaHZ5LWV2ZW50LWRldGFpbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9ldmVudC1kZXRhaWwuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEV2ZW50RGV0YWlsQ29tcG9uZW50IGV4dGVuZHMgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIHtcbiAgb3BlbmVkOiBib29sZWFuW10gPSBbXTtcbiAgY3JpdGljYWxpdGllcyA9IEh5cEV2ZW50Q3JpdGljYWxpdHkudmFsdWVzO1xuICBfZXZlbnRzOiBIeXBFdmVudERldGFpbHNbXSA9IFtdO1xuICBldmVudE1vZGlmaWNhdGlvbnM6IFBhcnRpYWw8SHlwRXZlbnREZXRhaWxzPltdID0gW107XG4gIEBPdXRwdXQoKSBtb2RpZmllZEV2ZW50cyA9IG5ldyBFdmVudEVtaXR0ZXI8W1BhcnRpYWw8SHlwRXZlbnREZXRhaWxzPiwgSHlwRXZlbnREZXRhaWxzXVtdPigpO1xuICBfcHJvY2VkdXJlPzogSHlwUHJvY2VkdXJlO1xuICBwcm9jZWR1cmVNb2RpZmljYXRpb25zOiBQYXJ0aWFsPEh5cFByb2NlZHVyZT4gPSB7fTtcbiAgQE91dHB1dCgpIG1vZGlmaWVkUHJvY2VkdXJlID0gbmV3IEV2ZW50RW1pdHRlcjxbUGFydGlhbDxIeXBQcm9jZWR1cmU+LCBIeXBQcm9jZWR1cmVdIHwgdW5kZWZpbmVkPigpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgRE9NQUlOUyA9IERPTUFJTlMudmFsdWVzO1xuICBAT3V0cHV0KCkgZXZlbnRFcnJvcnMgPSBuZXcgRXZlbnRFbWl0dGVyPHsgZmllbGQ6IHN0cmluZzsgY29kZTogc3RyaW5nIH1bXVtdPigpO1xuICBlcnJvcnM6IHsgZmllbGQ6IHN0cmluZzsgY29kZTogc3RyaW5nIH1bXVtdID0gW107XG4gIGNhbkNsb3NlU29tZSA9IGZhbHNlO1xuICBuZXdDb21lbnRDb250ZW50ID0gJyc7XG4gIGNoYW5nZVN0YXR1c0NvbnRleHQ6IHtcbiAgICBjb21tZW50OiBzdHJpbmc7XG4gICAgZXZlbnRzOiBIeXBFdmVudERldGFpbHNbXTtcbiAgICBzdGF0dXM6IHN0cmluZztcbiAgICBhbGw6IGJvb2xlYW47XG4gIH0gPSB7XG4gICAgY29tbWVudDogJycsXG4gICAgZXZlbnRzOiBbXSxcbiAgICBzdGF0dXM6ICdET05FJyxcbiAgICBhbGw6IGZhbHNlXG4gIH07XG4gIEBJbnB1dCgpIHRpdGxlPzogc3RyaW5nO1xuICBvdmVybGF5UmVmPzogT3ZlcmxheVJlZjtcbiAgQFZpZXdDaGlsZCgnY29uZmlybURpYWxvZycsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgY29uZmlybURpYWxvZyE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQElucHV0KCkgc2V0IGV2ZW50cyhldmVudHM6IEh5cEV2ZW50RGV0YWlsc1tdKSB7XG4gICAgdGhpcy5fZXZlbnRzID0gZXZlbnRzLmZpbHRlcigoZXYpID0+ICEhZXYpO1xuICAgIHRoaXMuZXZlbnRNb2RpZmljYXRpb25zID0gbmV3IEFycmF5KHRoaXMuX2V2ZW50cy5sZW5ndGgpO1xuICAgIHRoaXMub3BlbmVkID0gdGhpcy5fZXZlbnRzLmxlbmd0aCA9PT0gMSA/IFt0cnVlXSA6IFtdO1xuICAgIHRoaXMuY2FuQ2xvc2VTb21lID0gdGhpcy5fZXZlbnRzLmZpbHRlcigoZXYpID0+IGV2LnN0YXR1cyAhPT0gJ0RPTkUnKS5sZW5ndGggPiAwO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHByb2NlZHVyZShwcm9jZWR1cmU6IEh5cFByb2NlZHVyZSkge1xuICAgIHRoaXMuX3Byb2NlZHVyZSA9IHByb2NlZHVyZTtcbiAgICB0aGlzLnByb2NlZHVyZU1vZGlmaWNhdGlvbnMgPSB7fTtcbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBjYW5jZWxNb2RpZmljYXRpb25zKGV2dDogYW55KSB7XG4gICAgdGhpcy5ldmVudE1vZGlmaWNhdGlvbnMgPSBuZXcgQXJyYXkodGhpcy5fZXZlbnRzLmxlbmd0aCk7XG4gICAgdGhpcy5wcm9jZWR1cmVNb2RpZmljYXRpb25zID0ge307XG4gICAgdGhpcy5fb3V0cHV0TW9kaWZpY2F0aW9ucygpO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IGVxdWlwbWVudE5hbWUocmVxdWVzdDogeyBpbmRleDogbnVtYmVyOyBlcXVpcG1lbnROYW1lPzogc3RyaW5nIH0pIHtcbiAgICBpZiAocmVxdWVzdC5lcXVpcG1lbnROYW1lKSB7XG4gICAgICB0aGlzLmNoYW5nZUVxdWlwbWVudChyZXF1ZXN0LmluZGV4LCByZXF1ZXN0LmVxdWlwbWVudE5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZXF1aXBtZW50U2VydmljZTogRXF1aXBtZW50U2VydmljZSxcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZSxcbiAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHByaXZhdGUgc25hY2tCYXI6IFByeVNuYWNrYmFyU2VydmljZSxcbiAgICBwcml2YXRlIGkxOG5TZXJ2aWNlOiBQcnlJMThuU2VydmljZVxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgZ2V0IGV2ZW50cygpIHtcbiAgICByZXR1cm4gdGhpcy5fZXZlbnRzLm1hcCgoZXZ0LCBpZHgpID0+ICh7IC4uLmV2dCwgLi4uKHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2lkeF0gPz8ge30pIH0pKTtcbiAgfVxuXG4gIGdldCBjYW5Bc3NvY2lhdGVQcm9jZWR1cmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50cy5ldmVyeSgoZXZ0KSA9PiBldnQuc3RhdHVzID09PSAnTkVXJyk7XG4gIH1cblxuICBnZXQgcHJvY2VkdXJlKCk6IEh5cFByb2NlZHVyZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3Byb2NlZHVyZVxuICAgICAgPyB7XG4gICAgICAgICAgLi4udGhpcy5fcHJvY2VkdXJlLFxuICAgICAgICAgIC4uLih0aGlzLnByb2NlZHVyZU1vZGlmaWNhdGlvbnMgPz8ge30pLFxuICAgICAgICAgIGV2ZW50czogdGhpcy5ldmVudHNcbiAgICAgICAgfVxuICAgICAgOiB1bmRlZmluZWQ7XG4gIH1cblxuICB0b2dnbGUoaTogbnVtYmVyKSB7XG4gICAgdGhpcy5vcGVuZWRbaV0gPSAhdGhpcy5vcGVuZWRbaV07XG4gIH1cblxuICBtb2RpZnlFdmVudChpbmRleDogbnVtYmVyLCBwcm9wOiBzdHJpbmcsICRldmVudDogRXZlbnQgfCBzdHJpbmcpIHtcbiAgICBjb25zdCBpc0RhdGUgPSBwcm9wLmluZGV4T2YoJ0RhdGUnKSA+IC0xO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBuZXdWYWx1ZSA9ICRldmVudCBpbnN0YW5jZW9mIEV2ZW50ID8gJGV2ZW50LnRhcmdldD8udmFsdWUgOiAkZXZlbnQ7XG5cbiAgICBjb25zdCBjb3JyZWN0ZWRWYWx1ZSA9ICFpc0RhdGUgPyBuZXdWYWx1ZSA6IGAke25ld1ZhbHVlfS4wMDAwMDBaYDtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKHRoaXMuX2V2ZW50c1tpbmRleF1bcHJvcF0gIT09IGNvcnJlY3RlZFZhbHVlKSB7XG4gICAgICBpZiAoIXRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XSkge1xuICAgICAgICB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0gPSB7fTtcbiAgICAgIH1cbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XVtwcm9wXSA9IGNvcnJlY3RlZFZhbHVlO1xuXG4gICAgICB0aGlzLl9vdXRwdXRNb2RpZmljYXRpb25zKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghIXRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XSkge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGRlbGV0ZSB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF1bcHJvcF07XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0pLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIGRlbGV0ZSB0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fb3V0cHV0TW9kaWZpY2F0aW9ucygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFjY2VzcyhldmVudDogSHlwRXZlbnREZXRhaWxzKSB7XG4gICAgaWYgKGV2ZW50LnN0YXR1cyA9PT0gJ0RPTkUnKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiB0cnVlLFxuICAgICAgICBjYXRlZ29yeTogdHJ1ZSxcbiAgICAgICAgY3JpdGljYWxpdHk6IHRydWUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiB0cnVlLFxuICAgICAgICBhZGRyZXNzOiB0cnVlLFxuICAgICAgICBzb3VyY2U6IHRydWUsXG4gICAgICAgIGRvbWFpbjogdHJ1ZSxcbiAgICAgICAgZXFOYW1lOiB0cnVlLFxuICAgICAgICBlcUVudGl0eTogdHJ1ZSxcbiAgICAgICAgc3RhcnREYXRlOiB0cnVlLFxuICAgICAgICBlbmREYXRlOiB0cnVlXG4gICAgICB9O1xuICAgIH1cbiAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcbiAgICAgIGNhc2UgJ0FMRVJUJzpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbmFtZTogdHJ1ZSxcbiAgICAgICAgICBjYXRlZ29yeTogdHJ1ZSxcbiAgICAgICAgICBjcml0aWNhbGl0eTogdHJ1ZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdHJ1ZSxcbiAgICAgICAgICBhZGRyZXNzOiB0cnVlLFxuICAgICAgICAgIHNvdXJjZTogdHJ1ZSxcbiAgICAgICAgICBkb21haW46IHRydWUsXG4gICAgICAgICAgZXFOYW1lOiB0cnVlLFxuICAgICAgICAgIGVxRW50aXR5OiB0cnVlLFxuICAgICAgICAgIHN0YXJ0RGF0ZTogdHJ1ZSxcbiAgICAgICAgICBlbmREYXRlOiB0cnVlXG4gICAgICAgIH07XG4gICAgICBjYXNlICdSRVBPUlQnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5hbWU6IGZhbHNlLFxuICAgICAgICAgIGNhdGVnb3J5OiB0cnVlLFxuICAgICAgICAgIGNyaXRpY2FsaXR5OiBmYWxzZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdHJ1ZSxcbiAgICAgICAgICBhZGRyZXNzOiBmYWxzZSxcbiAgICAgICAgICBzb3VyY2U6IHRydWUsXG4gICAgICAgICAgZG9tYWluOiBmYWxzZSxcbiAgICAgICAgICBlcU5hbWU6IGZhbHNlLFxuICAgICAgICAgIGVxRW50aXR5OiB0cnVlLFxuICAgICAgICAgIHN0YXJ0RGF0ZTogdHJ1ZSxcbiAgICAgICAgICBlbmREYXRlOiB0cnVlXG4gICAgICAgIH07XG4gICAgICBjYXNlICdPUEVSQVRPUic6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbmFtZTogZmFsc2UsXG4gICAgICAgICAgY2F0ZWdvcnk6IGZhbHNlLFxuICAgICAgICAgIGNyaXRpY2FsaXR5OiBmYWxzZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogZmFsc2UsXG4gICAgICAgICAgYWRkcmVzczogZmFsc2UsXG4gICAgICAgICAgc291cmNlOiBmYWxzZSxcbiAgICAgICAgICBkb21haW46IGZhbHNlLFxuICAgICAgICAgIGVxTmFtZTogZmFsc2UsXG4gICAgICAgICAgZXFFbnRpdHk6IGZhbHNlLFxuICAgICAgICAgIHN0YXJ0RGF0ZTogZmFsc2UsXG4gICAgICAgICAgZW5kRGF0ZTogZmFsc2VcbiAgICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBfY2hhbmdlRXF1aXBtZW50UHJvcGVydHkoaW5kZXg6IG51bWJlciwgdmFsdWU6IEh5cEVxdWlwbWVudCB8IHVuZGVmaW5lZCkge1xuICAgIGlmICh0aGlzLl9ldmVudHNbaW5kZXhdLmVxdWlwbWVudD8ubmFtZSAhPT0gdmFsdWU/Lm5hbWUpIHtcbiAgICAgIGlmICghdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdKSB7XG4gICAgICAgIHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XSA9IHt9O1xuICAgICAgfVxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdLmVxdWlwbWVudCA9IHZhbHVlO1xuICAgICAgdGhpcy5fb3V0cHV0TW9kaWZpY2F0aW9ucygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoISF0aGlzLmV2ZW50TW9kaWZpY2F0aW9uc1tpbmRleF0pIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBkZWxldGUgdGhpcy5ldmVudE1vZGlmaWNhdGlvbnNbaW5kZXhdLmVxdWlwbWVudDtcbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XSkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgZGVsZXRlIHRoaXMuZXZlbnRNb2RpZmljYXRpb25zW2luZGV4XTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9vdXRwdXRNb2RpZmljYXRpb25zKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlRXF1aXBtZW50KGluZGV4OiBudW1iZXIsICRldmVudDogYW55KSB7XG4gICAgY29uc3QgdmFsdWUgPSAhISRldmVudCAmJiAhISRldmVudC50YXJnZXQgJiYgISEkZXZlbnQudGFyZ2V0LnZhbHVlID8gJGV2ZW50LnRhcmdldC52YWx1ZSA6ICRldmVudDtcblxuICAgIGlmICh2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmVxdWlwbWVudFNlcnZpY2VcbiAgICAgICAgLmZpbmRCeU5hbWUodmFsdWUpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRXF1aXBtZW50UHJvcGVydHkoaW5kZXgsIHtcbiAgICAgICAgICAgICAgaWQ6ICdub3QtZm91bmQnLFxuICAgICAgICAgICAgICBuYW1lOiB2YWx1ZSxcbiAgICAgICAgICAgICAgZW50aXR5OiB0aGlzLmkxOG5TZXJ2aWNlLmluc3RhbnQoJ0BodnkuZXZlbnQubm90Rm91bmQnKSxcbiAgICAgICAgICAgICAgZmFtaWx5OiAnJ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oeyB0eXBlOiAnZXJyb3InLCBtZXNzYWdlOiB0aGlzLmkxOG5TZXJ2aWNlLmluc3RhbnQoJ0BodnkuZXZlbnQubm90Rm91bmQnKSB9KTtcbiAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKGVxdWlwbWVudDogSHlwRXF1aXBtZW50IHwgbnVsbCkgPT4ge1xuICAgICAgICAgIGlmIChlcXVpcG1lbnQgJiYgdGhpcy5fZXZlbnRzW2luZGV4XS5uYW1lICE9PSBlcXVpcG1lbnQubmFtZSkge1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRXF1aXBtZW50UHJvcGVydHkoaW5kZXgsIGVxdWlwbWVudCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fY2hhbmdlRXF1aXBtZW50UHJvcGVydHkoaW5kZXgsIHVuZGVmaW5lZCk7XG4gICAgfVxuICB9XG5cbiAgX291dHB1dE1vZGlmaWNhdGlvbnMoKSB7XG4gICAgdGhpcy52YWxpZGF0ZUV2ZW50cyh0aGlzLmV2ZW50cyk7XG4gICAgdGhpcy5tb2RpZmllZEV2ZW50cy5uZXh0KHRoaXMuZXZlbnRzLm1hcCgoZXYsIGlkeCkgPT4gW3RoaXMuZXZlbnRNb2RpZmljYXRpb25zW2lkeF0sIGV2XSkpO1xuICAgIHRoaXMubW9kaWZpZWRQcm9jZWR1cmUubmV4dCh0aGlzLnByb2NlZHVyZSA/IFt0aGlzLnByb2NlZHVyZU1vZGlmaWNhdGlvbnMsIHRoaXMucHJvY2VkdXJlIV0gOiB1bmRlZmluZWQpO1xuICB9XG5cbiAgdmFsaWRhdGVFdmVudHMoZXZlbnRzOiBIeXBFdmVudERldGFpbHNbXSkge1xuICAgIHRoaXMuZXJyb3JzID0gW107XG4gICAgZXZlbnRzLmZvckVhY2goKGV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBldmVudEVycm9ycyA9IFtdO1xuICAgICAgaWYgKCFldmVudC5uYW1lIHx8IGV2ZW50Lm5hbWUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGV2ZW50RXJyb3JzLnB1c2goeyBmaWVsZDogJ25hbWUnLCBjb2RlOiAncmVxdWlyZWQnIH0pO1xuICAgICAgfVxuICAgICAgaWYgKCFldmVudC5jYXRlZ29yeSB8fCBldmVudC5jYXRlZ29yeS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgZXZlbnRFcnJvcnMucHVzaCh7IGZpZWxkOiAnY2F0ZWdvcnknLCBjb2RlOiAncmVxdWlyZWQnIH0pO1xuICAgICAgfVxuICAgICAgaWYgKCFldmVudC5jcml0aWNhbGl0eSB8fCBldmVudC5jcml0aWNhbGl0eS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgZXZlbnRFcnJvcnMucHVzaCh7IGZpZWxkOiAnY3JpdGljYWxpdHknLCBjb2RlOiAncmVxdWlyZWQnIH0pO1xuICAgICAgfVxuICAgICAgaWYgKCFldmVudC5kZXNjcmlwdGlvbiB8fCBldmVudC5kZXNjcmlwdGlvbi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgZXZlbnRFcnJvcnMucHVzaCh7IGZpZWxkOiAnZGVzY3JpcHRpb24nLCBjb2RlOiAncmVxdWlyZWQnIH0pO1xuICAgICAgfVxuICAgICAgaWYgKCEhZXZlbnQuZXF1aXBtZW50ICYmIGV2ZW50LmVxdWlwbWVudC5pZCA9PT0gJ25vdC1mb3VuZCcpIHtcbiAgICAgICAgZXZlbnRFcnJvcnMucHVzaCh7IGZpZWxkOiAnZXF1aXBtZW50JywgY29kZTogJ25vdC1mb3VuZCcgfSk7XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQuY2F0ZWdvcnkgPT09ICdNQU5JRkVTVEFUSU9OJykge1xuICAgICAgICBpZiAoIWV2ZW50LnN0YXJ0RGF0ZSB8fCBldmVudC5zdGFydERhdGUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgZXZlbnRFcnJvcnMucHVzaCh7IGZpZWxkOiAnc3RhcnREYXRlJywgY29kZTogJ3JlcXVpcmVkJyB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWV2ZW50LmVuZERhdGUgfHwgZXZlbnQuZW5kRGF0ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBldmVudEVycm9ycy5wdXNoKHsgZmllbGQ6ICdlbmREYXRlJywgY29kZTogJ3JlcXVpcmVkJyB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKGV2ZW50LnN0YXJ0RGF0ZT8ubG9jYWxlQ29tcGFyZShldmVudC5lbmREYXRlID8/ICcnKSA/PyAwKSA+IDApIHtcbiAgICAgICAgICBldmVudEVycm9ycy5wdXNoKHsgZmllbGQ6ICdzdGFydERhdGUnLCBjb2RlOiAnYmVmb3JlJyB9KTtcbiAgICAgICAgICBldmVudEVycm9ycy5wdXNoKHsgZmllbGQ6ICdlbmREYXRlJywgY29kZTogJ2FmdGVyJyB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5lcnJvcnMucHVzaChldmVudEVycm9ycyk7XG4gICAgfSk7XG4gICAgdGhpcy5ldmVudEVycm9ycy5uZXh0KHRoaXMuZXJyb3JzKTtcbiAgfVxuXG4gIGhhc0Vycm9yKHByb3A6IHN0cmluZywgaWR4OiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5lcnJvcnNbaWR4XT8uZmluZCgoZXJyKSA9PiBlcnIuZmllbGQgPT09IHByb3ApID8/IGZhbHNlO1xuICB9XG5cbiAgY2F0ZWdvcmllcyhldmVudDogSHlwRXZlbnREZXRhaWxzKSB7XG4gICAgcmV0dXJuIENBVEVHT1JJRVNfQllfVFlQRS52YWx1ZXNbZXZlbnQudHlwZV07XG4gIH1cblxuICBjaGFuZ2VTdGF0dXMoJGV2ZW50OiBzdHJpbmcsIGV2ZW50OiBIeXBFdmVudERldGFpbHMpIHtcbiAgICB0aGlzLmNoYW5nZVN0YXR1c0NvbnRleHQuZXZlbnRzID0gW2V2ZW50XTtcbiAgICB0aGlzLmNoYW5nZVN0YXR1c0NvbnRleHQuc3RhdHVzID0gJGV2ZW50O1xuICAgIHRoaXMuY2hhbmdlU3RhdHVzQ29udGV4dC5hbGwgPSBmYWxzZTtcbiAgICB0aGlzLnRvZ2dsZUNvbmZpcm0oKTtcbiAgfVxuXG4gIGNsb3NlQWxsKCkge1xuICAgIHRoaXMuY2hhbmdlU3RhdHVzQ29udGV4dC5hbGwgPSB0cnVlO1xuICAgIHRoaXMuY2hhbmdlU3RhdHVzQ29udGV4dC5ldmVudHMgPSB0aGlzLmV2ZW50cztcbiAgICB0aGlzLmNoYW5nZVN0YXR1c0NvbnRleHQuc3RhdHVzID0gJ0RPTkUnO1xuICAgIHRoaXMudG9nZ2xlQ29uZmlybSgpO1xuICB9XG5cbiAgY29uZmlybWVkQ2xvc2UoKSB7XG4gICAgaWYgKHRoaXMuY2hhbmdlU3RhdHVzQ29udGV4dC5hbGwpIHtcbiAgICAgIGlmICghdGhpcy5wcm9jZWR1cmUpIHtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgICBFdmVudEFjdGlvbnMuc3RhdHVzKHtcbiAgICAgICAgICAgIHRhcmdldFN0YXR1czogdGhpcy5jaGFuZ2VTdGF0dXNDb250ZXh0LnN0YXR1cyxcbiAgICAgICAgICAgIGV2ZW50OiB0aGlzLmNoYW5nZVN0YXR1c0NvbnRleHQuZXZlbnRzWzBdLFxuICAgICAgICAgICAgcHJvY2VkdXJlOiB0aGlzLnByb2NlZHVyZSxcbiAgICAgICAgICAgIGNvbW1lbnQ6IHRoaXMuY2hhbmdlU3RhdHVzQ29udGV4dC5jb21tZW50XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgICAgRXZlbnRBY3Rpb25zLnN0YXR1cyh7XG4gICAgICAgICAgICB0YXJnZXRTdGF0dXM6IHRoaXMuY2hhbmdlU3RhdHVzQ29udGV4dC5zdGF0dXMsXG4gICAgICAgICAgICBwcm9jZWR1cmU6IHRoaXMucHJvY2VkdXJlLFxuICAgICAgICAgICAgY29tbWVudDogdGhpcy5jaGFuZ2VTdGF0dXNDb250ZXh0LmNvbW1lbnRcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICBFdmVudEFjdGlvbnMuc3RhdHVzKHtcbiAgICAgICAgICB0YXJnZXRTdGF0dXM6IHRoaXMuY2hhbmdlU3RhdHVzQ29udGV4dC5zdGF0dXMsXG4gICAgICAgICAgZXZlbnQ6IHRoaXMuY2hhbmdlU3RhdHVzQ29udGV4dC5ldmVudHNbMF0sXG4gICAgICAgICAgcHJvY2VkdXJlOiB0aGlzLnByb2NlZHVyZSxcbiAgICAgICAgICBjb21tZW50OiB0aGlzLmNoYW5nZVN0YXR1c0NvbnRleHQuY29tbWVudFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy50b2dnbGVDb25maXJtKCk7XG4gIH1cblxuICB0b2dnbGVDb25maXJtKCkge1xuICAgIGlmICghdGhpcy5vdmVybGF5UmVmKSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKFxuICAgICAgICBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICAgICAgYmFja2Ryb3BDbGFzczogJ2JhY2tkcm9wLWRhcmsnLFxuICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnby1odnktY2xvc2UtY29uZmlybSddXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgdGhpcy5vdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy50b2dnbGVDb25maXJtKCkpO1xuICAgICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaChuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5jb25maXJtRGlhbG9nLCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgdGhpcy5jaGFuZ2VTdGF0dXNDb250ZXh0LmNvbW1lbnQgPSAnJztcbiAgfVxuXG4gIGNvbmZpcm1EaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5jaGFuZ2VTdGF0dXNDb250ZXh0LmNvbW1lbnQubGVuZ3RoID09PSAwO1xuICB9XG5cbiAgZ2V0IGNhbGN1bGF0ZWRQcm9ncmVzcygpIHtcbiAgICByZXR1cm4gTWF0aC5yb3VuZChcbiAgICAgICh0aGlzLnByb2NlZHVyZSEuYWN0aW9ucy5maWx0ZXIoKGFjdGlvbikgPT4gYWN0aW9uLnN0YXR1cyA9PT0gJ0RPTkUnKS5sZW5ndGggLyB0aGlzLnByb2NlZHVyZSEuYWN0aW9ucy5sZW5ndGgpICpcbiAgICAgICAgMTAwXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkb25seSBwYWRJZCA9IHBhZElkO1xuXG4gIG1vZGlmaWVkQWN0aW9ucygkZXZlbnQ6IGFueSkge1xuICAgIGlmIChlcXVhbCgkZXZlbnQsIHRoaXMuX3Byb2NlZHVyZSEuYWN0aW9ucykpIHtcbiAgICAgIGRlbGV0ZSB0aGlzLnByb2NlZHVyZU1vZGlmaWNhdGlvbnMuYWN0aW9ucztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wcm9jZWR1cmVNb2RpZmljYXRpb25zLmFjdGlvbnMgPSAkZXZlbnQ7XG4gICAgfVxuICAgIHRoaXMuX291dHB1dE1vZGlmaWNhdGlvbnMoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxcIj5cbiAgPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX2hlYWRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19oZWFkZXJfX3NwbGl0XCI+XG4gICAgICA8aDE+e3sgdGl0bGUgPz8gJ0BodnkuZXZlbnQuZGV0YWlsJyB8IGkxOG4gfX08L2gxPlxuICAgICAgQGlmIChldmVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICBAaWYgKGNhbkNsb3NlU29tZSkge1xuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5IC1maXgtcmlnaHRcIiBbZGlzYWJsZWRdPVwiIWNhbkNsb3NlU29tZVwiIChjbGljayk9XCJjbG9zZUFsbCgpXCI+XG4gICAgICAgICAgICB7eyAoY2FuQ2xvc2VTb21lID8gJ0BodnkuZXZlbnQubG9nLmV2ZW50LmNsb3NlJyA6ICdAaHZ5LmV2ZW50LmxvZy5ldmVudC5jbG9zZWQnKSB8IGkxOG4gfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKCFjYW5DbG9zZVNvbWUpIHtcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImEtdG9vbHRpcFwiXG4gICAgICAgICAgICBbYXR0ci5kYXRhLXRvb2x0aXBdPVwiJy4uLiBUT0RPOiBnZXQgY2xvc2luZyBjb21tZW50IC4uLidcIlxuICAgICAgICAgICAgZGF0YS10b29sdGlwLXBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImlcIiBbaGVpZ2h0XT1cIjE4XCIgW3dpZHRoXT1cIjE4XCI+aTwvcHJ5LWljb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9faGVhZGVyX19zcGxpdFwiPlxuICAgICAgQGlmIChjYW5DbG9zZVNvbWUpIHtcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnlcIj57eyAnQGh2eS5ldmVudC5sb2cucHJvY2VkdXJlLmRlbGV0ZScgfCBpMThuIH19PC9idXR0b24+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiby1odnktZXZlbnRzLWRldGFpbF9fY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX2NvbnRhaW5lcl9fc2Nyb2xsYWJsZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX2V2ZW50c1wiPlxuICAgICAgICBAZm9yIChldmVudCBvZiBldmVudHM7IHRyYWNrIGV2ZW50LmlkOyBsZXQgaWR4ID0gJGluZGV4KSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX2V2ZW50c19fZXZlbnRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19ldmVudHNfX2V2ZW50X19oZWFkZXJcIj5cbiAgICAgICAgICAgICAgPHByeS1pY29uXG4gICAgICAgICAgICAgICAgaWNvblN2Zz1cImFycm93X2Rvd25fcm91bmRlZFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLi1yb3RhdGVkXT1cIm9wZW5lZFtpZHhdXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlKGlkeClcIlxuICAgICAgICAgICAgICAgIFt3aWR0aF09XCIxMFwiXG4gICAgICAgICAgICAgICAgW2hlaWdodF09XCIxMFwiXG4gICAgICAgICAgICAgID48L3ByeS1pY29uPlxuICAgICAgICAgICAgICA8aHZ5LWljb24tZGlzcGxheSBbZXZlbnRdPVwiZXZlbnRcIj48L2h2eS1pY29uLWRpc3BsYXk+XG4gICAgICAgICAgICAgIDxoMj57eyBldmVudC5uYW1lIH19PC9oMj5cbiAgICAgICAgICAgICAgPGh2eS1zdGF0dXMtZGlzcGxheVxuICAgICAgICAgICAgICAgIFtpdGVtXT1cImV2ZW50XCJcbiAgICAgICAgICAgICAgICBbbW9kaWZpYWJsZV09XCJldmVudC5zdGF0dXMgIT09ICdET05FJ1wiXG4gICAgICAgICAgICAgICAgKG1vZGlmaWVkKT1cImNoYW5nZVN0YXR1cygkZXZlbnQsIGV2ZW50KVwiXG4gICAgICAgICAgICAgID48L2h2eS1zdGF0dXMtZGlzcGxheT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX2V2ZW50c19fZXZlbnRfX2NvbnRlbnRcIj5cbiAgICAgICAgICAgICAgQGlmICghb3BlbmVkW2lkeF0pIHtcbiAgICAgICAgICAgICAgICA8ZGl2Pnt7ICdAaHZ5LmV2ZW50LmxvZy5ldmVudC5kZXNjcmlwdGlvbicgfCBpMThuIH19IDoge3sgZXZlbnQuZGVzY3JpcHRpb24gfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2Pnt7ICdAaHZ5LmV2ZW50LmxvZy5ldmVudC5hZGRyZXNzJyB8IGkxOG4gfX0gOiB7eyBldmVudC5hZGRyZXNzIH19PC9kaXY+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIEBpZiAoYWNjZXNzKGV2ZW50KTsgYXMgYWNjZXNzVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19ldmVudHNfX2V2ZW50X19jb250ZW50X19oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGgzPnt7ICdAaHZ5LmV2ZW50LmxvZy5ldmVudC5kZXRhaWwnIHwgaTE4biB9fTwvaDM+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj57eyAnQGh2eS5ldmVudC5sb2cuZXZlbnQubWFuZGF0b3J5JyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDx0YWJsZT5cbiAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5sb2cuZXZlbnQubmFtZScgfCBpMThuIH19PHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+IDo8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy4tZXJyb3JdPVwiaGFzRXJyb3IoJ25hbWUnLCBpZHgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZXZlbnQubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJtb2RpZnlFdmVudChpZHgsICduYW1lJywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImFjY2Vzc1ZhbHVlLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoZXZlbnQuaWQgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5sb2cuZXZlbnQuaWQnIHwgaTE4biB9fTxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPiA6PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCIgW3ZhbHVlXT1cInBhZElkLmZuKGV2ZW50LmlkKVwiIFtyZWFkb25seV09XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5sb2cuZXZlbnQuY2F0ZWdvcnknIHwgaTE4biB9fTxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPiA6PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHByeS1zZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJldmVudC5jYXRlZ29yeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cImNhdGVnb3JpZXMoZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuLWVycm9yXT1cImhhc0Vycm9yKCdjYXRlZ29yeScsIGlkeClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm1vZGlmeUV2ZW50KGlkeCwgJ2NhdGVnb3J5JywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaTE4blByZWZpeD1cIkBodnkuZXZlbnQuY2F0ZWdvcnkuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWNjZXNzVmFsdWUuY2F0ZWdvcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5jcml0aWNhbGl0eS5uYW1lJyB8IGkxOG4gfX08c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj4gOjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZXZlbnQuY3JpdGljYWxpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJjcml0aWNhbGl0aWVzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuLWVycm9yXT1cImhhc0Vycm9yKCdjcml0aWNhbGl0eScsIGlkeClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkxOG5QcmVmaXg9XCJAaHZ5LmV2ZW50LmNyaXRpY2FsaXR5LlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFjY2Vzc1ZhbHVlLmNyaXRpY2FsaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJtb2RpZnlFdmVudChpZHgsICdjcml0aWNhbGl0eScsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9wcnktc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5sb2cuZXZlbnQuZGVzY3JpcHRpb24nIHwgaTE4biB9fTxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPiA6PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZXZlbnQuZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuLWVycm9yXT1cImhhc0Vycm9yKCdkZXNjcmlwdGlvbicsIGlkeClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJhY2Nlc3NWYWx1ZS5kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwibW9kaWZ5RXZlbnQoaWR4LCAnZGVzY3JpcHRpb24nLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ICdAaHZ5LmV2ZW50LmxvZy5ldmVudC5hZGRyZXNzJyB8IGkxOG4gfX0gOjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImV2ZW50LmFkZHJlc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuLWVycm9yXT1cImhhc0Vycm9yKCdhZGRyZXNzJywgaWR4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImFjY2Vzc1ZhbHVlLmFkZHJlc3NcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm1vZGlmeUV2ZW50KGlkeCwgJ2FkZHJlc3MnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgQGlmIChbJ0FMRVJUJywgJ1JFUE9SVCddLmluY2x1ZGVzKGV2ZW50LnR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57eyAnQGh2eS5ldmVudC5zb3VyY2UnIHwgaTE4biB9fSA6PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImV2ZW50LmV4dGVybmFsU291cmNlUmVmID8/ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy4tZXJyb3JdPVwiaGFzRXJyb3IoJ3NvdXJjZScsIGlkeClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImFjY2Vzc1ZhbHVlLnNvdXJjZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm1vZGlmeUV2ZW50KGlkeCwgJ3NvdXJjZScsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgJ0BodnkuZXZlbnQuZXF1aXBtZW50JyB8IGkxOG4gfX0gOjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImV2ZW50LmVxdWlwbWVudD8ubmFtZSA/PyAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLi1lcnJvcl09XCJoYXNFcnJvcignZXF1aXBtZW50JywgaWR4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImFjY2Vzc1ZhbHVlLmVxTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJjaGFuZ2VFcXVpcG1lbnQoaWR4LCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgJ0BodnkuZXZlbnQuZXF1aXBtZW50RW50aXR5JyB8IGkxOG4gfX0gOjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLi1lcnJvcl09XCJoYXNFcnJvcignZXF1aXBtZW50JywgaWR4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV2ZW50LmVxdWlwbWVudD8uZW50aXR5ID8gJ0BodnkuZXZlbnQuZW50aXR5LicgKyBldmVudC5lcXVpcG1lbnQ/LmVudGl0eSA6ICcnKSB8IGkxOG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ICdAaHZ5LmV2ZW50LmRvbWFpbi5uYW1lJyB8IGkxOG4gfX0gOjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwcnktc2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1zXT1cIkRPTUFJTlNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImV2ZW50LmRvbWFpblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaTE4blByZWZpeD1cIkBodnkuZXZlbnQuZG9tYWluLlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLi1lcnJvcl09XCJoYXNFcnJvcignZG9tYWluJywgaWR4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwibW9kaWZ5RXZlbnQoaWR4LCAnZG9tYWluJywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFjY2Vzc1ZhbHVlLmRvbWFpblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgID48L3ByeS1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnQGh2eS5ldmVudC5zdGFydERhdGUnIHwgaTE4biB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGV2ZW50LmNhdGVnb3J5ID09PSAnTUFOSUZFU1RBVElPTicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXA9XCIxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImV2ZW50LnN0YXJ0RGF0ZSB8IGZvckRhdGVUaW1lTG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy4tZXJyb3JdPVwiaGFzRXJyb3IoJ3N0YXJ0RGF0ZScsIGlkeClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJhY2Nlc3NWYWx1ZS5zdGFydERhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwibW9kaWZ5RXZlbnQoaWR4LCAnc3RhcnREYXRlJywgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnQGh2eS5ldmVudC5lbmREYXRlJyB8IGkxOG4gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChldmVudC5jYXRlZ29yeSA9PT0gJ01BTklGRVNUQVRJT04nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGVwPVwiMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJldmVudC5lbmREYXRlIHwgZm9yRGF0ZVRpbWVMb2NhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLi1lcnJvcl09XCJoYXNFcnJvcignZW5kRGF0ZScsIGlkeClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJhY2Nlc3NWYWx1ZS5lbmREYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm1vZGlmeUV2ZW50KGlkeCwgJ2VuZERhdGUnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgJ0BodnkuZXZlbnQuY3JlYXRpb25EYXRlJyB8IGkxOG4gfX0gOjwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJkYXRldGltZS1sb2NhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RlcD1cIjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZXZlbnQuY3JlYXRpb25EYXRlIHwgZm9yRGF0ZVRpbWVMb2NhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3sgJ0BodnkuZXZlbnQubGFzdE1vZGlmaWNhdGlvbkRhdGUnIHwgaTE4biB9fSA6PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImRhdGV0aW1lLWxvY2FsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGVwPVwiMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJldmVudC5sYXN0TW9kaWZpY2F0aW9uRGF0ZSB8IGZvckRhdGVUaW1lTG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7ICdAaHZ5LmV2ZW50LmNsb3NlRGF0ZScgfCBpMThuIH19IDo8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiZGF0ZXRpbWUtbG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXA9XCIxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImV2ZW50LmNsb3NlRGF0ZSB8IGZvckRhdGVUaW1lTG9jYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX2V2ZW50c19fZXZlbnRfX2NvbnRlbnRfX2NvbW1lbnRzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxoMz57eyAnQGh2eS5ldmVudC5sb2cuZXZlbnQuY29tbWVudHMubmFtZScgfCBpMThuIH19IDo8L2gzPlxuICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiKCdAaHZ5LmV2ZW50LmxvZy5ldmVudC5jb21tZW50cy5wbGFjZWhvbGRlcicgfCBpMThuKSArICcuLi4nXCJcbiAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm5ld0NvbWVudENvbnRlbnRcIlxuICAgICAgICAgICAgICAgICAgICA+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX2V2ZW50c19fZXZlbnRfX2NvbnRlbnRfX2NvbW1lbnRzX19idXR0b25cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIiBbZGlzYWJsZWRdPVwibmV3Q29tZW50Q29udGVudC5sZW5ndGggPT09IDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdAaHZ5LmFjdGlvbi5jb21tZW50JyB8IGkxOG4gfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19wcm9jZWR1cmVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX3Byb2NlZHVyZV9faGVhZGVyXCI+XG4gICAgICAgICAgPGgyPlxuICAgICAgICAgICAge3sgKGV2ZW50cy5sZW5ndGggPT09IDEgPyAnQGh2eS5ldmVudC5sb2cucHJvY2VkdXJlLm5hbWUxJyA6ICdAaHZ5LmV2ZW50LmxvZy5wcm9jZWR1cmUubmFtZScpIHwgaTE4biB9fVxuICAgICAgICAgIDwvaDI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICBAaWYgKHByb2NlZHVyZSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1ldmVudHMtZGV0YWlsX19wcm9jZWR1cmVfX2Rlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICA8cD57eyBwcm9jZWR1cmUuZGVzY3JpcHRpb24gfX08L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm8taHZ5LWV2ZW50cy1kZXRhaWxfX3Byb2NlZHVyZV9fcHJvZ3Jlc3NcIj5cbiAgICAgICAgICAgIDxwPnt7ICdAaHZ5LmV2ZW50LmxvZy5wcm9jZWR1cmUucHJvZ3Jlc3MnIHwgaTE4biB9fTwvcD5cbiAgICAgICAgICAgIDxodnktcHJvZ3Jlc3MtZGlzcGxheSBbcHJvZ3Jlc3NdPVwiY2FsY3VsYXRlZFByb2dyZXNzXCI+PC9odnktcHJvZ3Jlc3MtZGlzcGxheT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8aHZ5LXByb2NlZHVyZS1hY3Rpb25zXG4gICAgICAgICAgICBbYWN0aW9uc109XCJwcm9jZWR1cmUuYWN0aW9uc1wiXG4gICAgICAgICAgICAobW9kaWZpZWQpPVwibW9kaWZpZWRBY3Rpb25zKCRldmVudClcIlxuICAgICAgICAgID48L2h2eS1wcm9jZWR1cmUtYWN0aW9ucz5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnlcIiBbZGlzYWJsZWRdPVwiIWNhbkFzc29jaWF0ZVByb2NlZHVyZVwiPlxuICAgICAgICAgICAge3sgJ0BodnkuYWN0aW9uLmFzc29jaWF0ZScgfCBpMThuIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2NvbmZpcm1EaWFsb2c+XG4gIDxkaXZcbiAgICBjbGFzcz1cIm8taHZ5LWNsb3NlLWNvbmZpcm1fX2RpYWxvZ1wiXG4gICAgYXJpYS1sYWJlbGxlZGJ5PVwiY29uZmlybVwiXG4gICAgdGFiaW5kZXg9XCItMVwiXG4gICAgaWQ9XCJjaG9pY2VcIlxuICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgIGFyaWEtbW9kYWw9XCJ0cnVlXCJcbiAgPlxuICAgIDxoMj5cbiAgICAgIHt7XG4gICAgICAgIChjaGFuZ2VTdGF0dXNDb250ZXh0LmV2ZW50cy5sZW5ndGggPT09IDEgPyAnQGh2eS5ldmVudC5jbG9zZS5vbmVUaXRsZScgOiAnQGh2eS5ldmVudC5jbG9zZS5tdWx0aVRpdGxlJykgfCBpMThuXG4gICAgICB9fVxuICAgIDwvaDI+XG4gICAgPHA+e3sgKGNoYW5nZVN0YXR1c0NvbnRleHQuZXZlbnRzLmxlbmd0aCA9PT0gMSA/ICdAaHZ5LmV2ZW50LmNsb3NlLm9uZScgOiAnQGh2eS5ldmVudC5jbG9zZS5tdWx0aScpIHwgaTE4biB9fTwvcD5cbiAgICA8dWw+XG4gICAgICBAZm9yIChldmVudCBvZiBjaGFuZ2VTdGF0dXNDb250ZXh0LmV2ZW50czsgdHJhY2sgZXZlbnQuaWQpIHtcbiAgICAgICAgPGxpPnt7IGV2ZW50Lm5hbWUgfX08L2xpPlxuICAgICAgfVxuICAgIDwvdWw+XG4gICAgPHAgY2xhc3M9XCJvLWh2eS1jbG9zZS1jb25maXJtX19kaWFsb2dfX2NvbW1lbnQtdGl0bGVcIj5cbiAgICAgIHt7ICdAaHZ5LmV2ZW50LmNsb3NlLmNvbW1lbnQnIHwgaTE4biB9fTxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPiA6XG4gICAgPC9wPlxuICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1jbG9zZS1jb25maXJtX19kaWFsb2dfX2NvbW1lbnRcIj5cbiAgICAgIDx0ZXh0YXJlYSBbKG5nTW9kZWwpXT1cImNoYW5nZVN0YXR1c0NvbnRleHQuY29tbWVudFwiIGNsYXNzPVwiYS1mb3JtLWZpZWxkXCIgW21heExlbmd0aF09XCIyNTVcIj48L3RleHRhcmVhPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJvLWh2eS1jbG9zZS1jb25maXJtX19kaWFsb2dfX2FjdGlvbnNcIj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeVwiIChjbGljayk9XCJjb25maXJtZWRDbG9zZSgpXCIgW2Rpc2FibGVkXT1cImNvbmZpcm1EaXNhYmxlZCgpXCI+XG4gICAgICAgIHt7ICdAaHZ5LmFjdGlvbi52YWxpZGF0ZScgfCBpMThuIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cInRvZ2dsZUNvbmZpcm0oKVwiPnt7ICdAaHZ5LmFjdGlvbi5jYW5jZWwnIHwgaTE4biB9fTwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -126,6 +126,12 @@ export const enTranslations = {
|
|
|
126
126
|
creator: 'Creator',
|
|
127
127
|
action: {
|
|
128
128
|
add: 'Add new Action',
|
|
129
|
+
create: 'Add action to procedure',
|
|
130
|
+
modify: 'Update action',
|
|
131
|
+
comment: 'Comment',
|
|
132
|
+
delete: 'Delete',
|
|
133
|
+
update: 'Update',
|
|
134
|
+
done: 'Mark done',
|
|
129
135
|
CSU: 'Call CSU',
|
|
130
136
|
DOUTE: 'Ask for doubt removal',
|
|
131
137
|
SMS: 'Send a SMS',
|
|
@@ -155,4 +161,4 @@ export const enTranslations = {
|
|
|
155
161
|
}
|
|
156
162
|
}
|
|
157
163
|
};
|
|
158
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW4udHJhbnNsYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9oeXBlcnZpc29yL3NyYy9saWIvZ2VuZXJhbC9pMThuL2VuLnRyYW5zbGF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsTUFBTSxFQUFFO1FBQ04sS0FBSyxFQUFFO1lBQ0wsSUFBSSxFQUFFLE9BQU87WUFDYixJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLFlBQVk7Z0JBQ2xCLEtBQUssRUFBRSxPQUFPO2dCQUNkLE1BQU0sRUFBRSxRQUFRO2dCQUNoQixRQUFRLEVBQUUsVUFBVTthQUNyQjtZQUNELE1BQU0sRUFBRTtnQkFDTixJQUFJLEVBQUUsUUFBUTtnQkFDZCxHQUFHLEVBQUUsTUFBTTtnQkFDWCxXQUFXLEVBQUUsYUFBYTtnQkFDMUIsSUFBSSxFQUFFLE1BQU07Z0JBQ1osS0FBSyxFQUFFLE9BQU87YUFDZjtZQUNELE9BQU8sRUFBRSxTQUFTO1lBQ2xCLE1BQU0sRUFBRSxvQkFBb0I7WUFDNUIsU0FBUyxFQUFFLHFCQUFxQjtZQUNoQyxlQUFlLEVBQUUsa0JBQWtCO1lBQ25DLFFBQVEsRUFBRSxxQkFBcUI7WUFDL0IsTUFBTSxFQUFFO2dCQUNOLElBQUksRUFBRSxRQUFRO2FBQ2Y7WUFDRCxTQUFTLEVBQUUsWUFBWTtZQUN2QixPQUFPLEVBQUUsVUFBVTtZQUNuQixZQUFZLEVBQUUsZUFBZTtZQUM3QixvQkFBb0IsRUFBRSxtQkFBbUI7WUFDekMsU0FBUyxFQUFFLFlBQVk7WUFDdkIsTUFBTSxFQUFFLG9CQUFvQjtZQUM1QixHQUFHLEVBQUU7Z0JBQ0gsSUFBSSxFQUFFLFlBQVk7Z0JBQ2xCLEtBQUssRUFBRSxrQkFBa0I7Z0JBQ3pCLEtBQUssRUFBRTtvQkFDTCxXQUFXLEVBQUUsYUFBYTtvQkFDMUIsT0FBTyxFQUFF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RSxhQUFhO2dCQUN0QixLQUFLLEVBQUUsZUFBZTthQUN2QjtTQUNGO1FBQ0QsZ0JBQWdCLEVBQUU7WUFDaEIsS0FBSyxFQUFFLGtCQUFrQjtZQUN6QixXQUFXLEVBQ1QsbUhBQW1IO1lBQ3JILFlBQVksRUFBRSxlQUFlO1lBQzdCLGNBQWMsRUFBRSxvQkFBb0I7WUFDcEMsZUFBZSxFQUFFLG1CQUFtQjtZQUNwQyxpQkFBaUIsRUFBRSxpQkFBaUI7WUFDcEMsb0JBQW9CLEVBQUUsdUJBQXVCO1NBQzlDO1FBQ0QsTUFBTSxFQUFFO1lBQ04sT0FBTyxFQUFFLFNBQVM7WUFDbEIsS0FBSyxFQUFFLE9BQU87WUFDZCxJQUFJLEVBQUUsTUFBTTtZQUNaLE9BQU8sRUFBRSxTQUFTO1lBQ2xCLFNBQVMsRUFBRSxtQkFBbUI7WUFDOUIsUUFBUSxFQUFFLFVBQVU7WUFDcEIsTUFBTSxFQUFFLFFBQVE7WUFDaEIsTUFBTSxFQUFFLFFBQVE7U0FDakI7S0FDRjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZW5UcmFuc2xhdGlvbnMgPSB7XG4gICdAaHZ5Jzoge1xuICAgIGV2ZW50OiB7XG4gICAgICBuYW1lOiAnRXZlbnQnLFxuICAgICAgdHlwZToge1xuICAgICAgICBuYW1lOiAnRXZlbnQgdHlwZScsXG4gICAgICAgIEFMRVJUOiAnQWxlcnQnLFxuICAgICAgICBSRVBPUlQ6ICdSZXBvcnQnLFxuICAgICAgICBPUEVSQVRPUjogJ09wZXJhdG9yJ1xuICAgICAgfSxcbiAgICAgIHN0YXR1czoge1xuICAgICAgICBuYW1lOiAnU3RhdHVzJyxcbiAgICAgICAgTkVXOiAnT3BlbicsXG4gICAgICAgIElOX1BST0dSRVNTOiAnSW4gcHJvZ3Jlc3MnLFxuICAgICAgICBET05FOiAnRG9uZScsXG4gICAgICAgIEFTS0VEOiAnQXNrZWQnXG4gICAgICB9LFxuICAgICAgYWRkcmVzczogJ0FkZHJlc3MnLFxuICAgICAgc291cmNlOiAnRXh0ZXJuYWwgcmVmZXJlbmNlJyxcbiAgICAgIGVxdWlwbWVudDogJ0VxdWlwbWVudCByZWZlcmVuY2UnLFxuICAgICAgZXF1aXBtZW50RW50aXR5OiAnRXF1aXBtZW50IGVudGl0eScsXG4gICAgICBub3RGb3VuZDogJ0VxdWlwbWVudCBub3QgZm91bmQnLFxuICAgICAgZG9tYWluOiB7XG4gICAgICAgIG5hbWU6ICdNw6l0aWVyJ1xuICAgICAgfSxcbiAgICAgIHN0YXJ0RGF0ZTogJ1N0YXJ0IGRhdGUnLFxuICAgICAgZW5kRGF0ZTogJ0VuZCBkYXRlJyxcbiAgICAgIGNyZWF0aW9uRGF0ZTogJ0NyZWF0aW9uIGRhdGUnLFxuICAgICAgbGFzdE1vZGlmaWNhdGlvbkRhdGU6ICdNb2RpZmljYXRpb24gZGF0ZScsXG4gICAgICBjbG9zZURhdGU6ICdDbG9zZSBkYXRlJyxcbiAgICAgIGRldGFpbDogJ0V2ZW50cyBkZXNjcmlwdGlvbicsXG4gICAgICBsb2c6IHtcbiAgICAgICAgbmFtZTogJ0V2ZW50cyBsb2cnLFxuICAgICAgICBlbXB0eTogJ05vIGV2ZW50IGNyZWF0ZWQnLFxuICAgICAgICBldmVudDoge1xuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRGVzY3JpcHRpb24nLFxuICAgICAgICAgIGFkZHJlc3M6ICdBZGRyZXNzJyxcbiAgICAgICAgICBkZXRhaWw6ICdJbmZvcm1hdGlvbicsXG4gICAgICAgICAgbWFuZGF0b3J5OiAnKiBNYW5kYXRvcnkgZmllbGRzJyxcbiAgICAgICAgICBuYW1lOiAnTmFtZScsXG4gICAgICAgICAgaWQ6ICdJZGVudGlmaWVyJyxcbiAgICAgICAgICBjYXRlZ29yeTogJ0NhdGVnb3J5JyxcbiAgICAgICAgICBjbG9zZTogJ0Nsb3NlIGFsbCBldmVudHMnLFxuICAgICAgICAgIGNsb3NlZDogJ0FsbCBjbG9zZWQnLFxuICAgICAgICAgIGNvbW1lbnRzOiB7XG4gICAgICAgICAgICBuYW1lOiAnRXZlbnQgY29tbWVudHMnLFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdXcml0ZSB5b3VyIGNvbW1lbnQnXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBwcm9jZWR1cmU6IHtcbiAgICAgICAgICBkZWxldGU6ICdEZWxldGUgcHJvY2VkdXJlJyxcbiAgICAgICAgICBwcm9ncmVzczogJ1Byb2dyZXNzJyxcbiAgICAgICAgICBub0FjdGlvbjogJ05vIGFjdGlvbnMnLFxuICAgICAgICAgIG5hbWU6ICdDb21tb24gcHJvY2VkdXJlJyxcbiAgICAgICAgICBuYW1lMTogJ1Byb2NlZHVyZSdcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGNhdGVnb3J5OiB7XG4gICAgICAgIG5hbWU6ICdFdmVudCBjYXRlZ29yeScsXG4gICAgICAgIE1BTEZVTkNUSU9OOiAnRHlzZnVuY3Rpb24gYWxlcnQnLFxuICAgICAgICBSRVBPUlQ6ICdHUkMgcmVwb3J0JyxcbiAgICAgICAgT1BFUkFUT1I6ICdPcGVyYXRvciBldmVudCcsXG4gICAgICAgIExJTUlUOiAnTGltaXQgYWxlcnQnLFxuICAgICAgICBNQU5JRkVTVEFUSU9OOiAnTWFuaWZlc3RhdGlvbidcbiAgICAgIH0sXG4gICAgICBjcml0aWNhbGl0eToge1xuICAgICAgICBuYW1lOiAnQ3JpdGljYWxpdHknLFxuICAgICAgICBMT1c6ICdMb3cnLFxuICAgICAgICBNRURJVU06ICdNaWRkbGUnLFxuICAgICAgICBISUdIOiAnSGlnaCdcbiAgICAgIH0sXG4gICAgICBmaWx0ZXI6IHtcbiAgICAgICAgbmFtZTogJ0ZpbHRlcicsXG4gICAgICAgIGNob2ljZToge1xuICAgICAgICAgIGFsbDogJ0FsbCdcbiAgICAgICAgfSxcbiAgICAgICAgcmVzZXQ6ICdSZXNldCdcbiAgICAgIH0sXG4gICAgICBjbG9zZToge1xuICAgICAgICBvbmVUaXRsZTogJ0Nsb3NlIGV2ZW50JyxcbiAgICAgICAgbXVsdGlUaXRsZTogJ0Nsb3NlIGV2ZW50cycsXG4gICAgICAgIG9uZTogJ0Nsb3NlIGV2ZW50JyxcbiAgICAgICAgbXVsdGk6ICdDbG9zZSBldmVudHMnLFxuICAgICAgICBjb21tZW50OiAnQ2xvc2UgY29tbWVudCdcbiAgICAgIH0sXG4gICAgICBpbnN0YWxsRGF0ZTogJ0luc3RhbGxhdGlvbiBkYXRlJyxcbiAgICAgIG1hbmFnZWQ6ICdNYW5hZ2VkIGVxdWlwbWVudCcsXG4gICAgICBwcm06ICdQUk0gY29udHJhY3QgbnVtYmVyJyxcbiAgICAgIHByZXNlbmNlU2Vuc29yOiAnUHJlc2VuY2Ugc2Vuc29yJyxcbiAgICAgIHBhcmVudDogJ1BhcmVudCcsXG4gICAgICBjb25zdWx0OiAnQ29uc3VsdCB7e2hvd01hbnl9fSBldmVudHt7cGx1cmFsfX0nXG4gICAgfSxcbiAgICBldmVudFN1bW1hcnk6IHtcbiAgICAgIGZyb206ICdGcm9tJyxcbiAgICAgIHRvOiAndG8nLFxuICAgICAgbm9Db250ZW50OiB7XG4gICAgICAgIE5FVzogJ05vIGV2ZW50cyBjcmVhdGVkLicsXG4gICAgICAgIElOX1BST0dSRVNTOiAnTm8gZXZlbnRzIGluIHByb2dyZXNzLicsXG4gICAgICAgIERPTkU6ICdObyBldmVudCBkb25lLidcbiAgICAgIH0sXG4gICAgICBzdGF0dXNMYWJlbHM6IHtcbiAgICAgICAgTkVXOiAnT3BlbicsXG4gICAgICAgIElOX1BST0dSRVNTOiAnSW4gcHJvZ3Jlc3MnLFxuICAgICAgICBET05FOiAnRG9uZSdcbiAgICAgIH0sXG4gICAgICBjcml0aWNhbGl0eUxhYmVsczoge1xuICAgICAgICBMT1c6ICdMb3cnLFxuICAgICAgICBNRURJVU06ICdNZWRpdW0nLFxuICAgICAgICBISUdIOiAnSGlnaCcsXG4gICAgICAgIEFMTDogJ0FsbCdcbiAgICAgIH1cbiAgICB9LFxuICAgIHByb2NlZHVyZToge1xuICAgICAgbmFtZTogJ1Byb2NlZHVyZScsXG4gICAgICBwcm9ncmVzczogJ1Byb2NlZHVyZSBwcm9ncmVzcyAlJyxcbiAgICAgIHVzZUNvdW50OiAnVXNhZ2UnLFxuICAgICAgdGl0bGU6ICdUaXRsZScsXG4gICAgICBjYXRlZ29yeTogJ0NhdGVnb3J5JyxcbiAgICAgIGF1dGhvcjogJ0F1dGhvcicsXG4gICAgICBpZDogJ0lkJyxcbiAgICAgIG1pc3NpbmdQcm9wZXJ0eTogJ01pc3NpbmcgcHJvcGVydHknLFxuICAgICAgbm9Db250ZW50OiAnTm8gZXhpc3RpbmcgcHJvY2VkdXJlcyBmb3VuZCcsXG4gICAgICBkb21haW46ICdEb21haW4nLFxuICAgICAgY2F0YWxvZzogJ1Byb2NlZHVyZSBjYXRhbG9nJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRGVzY3JpcHRpb24nLFxuICAgICAgY3JlYXRvcjogJ0NyZWF0b3InLFxuICAgICAgYWN0aW9uOiB7XG4gICAgICAgIGFkZDogJ0FkZCBuZXcgQWN0aW9uJyxcbiAgICAgICAgQ1NVOiAnQ2FsbCBDU1UnLFxuICAgICAgICBET1VURTogJ0FzayBmb3IgZG91YnQgcmVtb3ZhbCcsXG4gICAgICAgIFNNUzogJ1NlbmQgYSBTTVMnLFxuICAgICAgICBBVVRSRTogJ090aGVyJyxcbiAgICAgICAgU0VSVklDRTogJ0FzayBzZXJ2aWNlJyxcbiAgICAgICAgRU1BSUw6ICdTZW5kIGFuIGVtYWlsJ1xuICAgICAgfVxuICAgIH0sXG4gICAgYXNzb2NpYXRpb25Nb2RhbDoge1xuICAgICAgdGl0bGU6ICdMaW5rIGEgcHJvY2VkdXJlJyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnQWRkaW5nIGEgcHJvY2VkdXJlIHRvIHNlbGVjdGVkIGV2ZW50cyBhbGxvd3MgZm9yIHNlbGVjdGluZyBhIGxpc3Qgb2YgYWN0aW9ucyB0byBiZSBwZXJmb3JtZWQgdG8gdHJlYXQgdGhlIGV2ZW50cy4nLFxuICAgICAgbGlua2VkRXZlbnRzOiAnTGlua2VkIGV2ZW50cycsXG4gICAgICBjYXRlZ29yeUZpbHRlcjogJ0ZpbHRlciBieSBjYXRlZ29yeScsXG4gICAgICBzZWFyY2hQcm9jZWR1cmU6ICdTZWFyY2ggcHJvY2VkdXJlcycsXG4gICAgICBkb21haW5QbGFjZWhvbGRlcjogJ1NlbGVjdCBhIGRvbWFpbicsXG4gICAgICBwcm9jZWR1cmVQbGFjZWhvbGRlcjogJ0lucHV0IHByb2NlZHVyZSB0aXRsZSdcbiAgICB9LFxuICAgIGFjdGlvbjoge1xuICAgICAgY29uc3VsdDogJ0NvbnN1bHQnLFxuICAgICAgY2xvc2U6ICdDbG9zZScsXG4gICAgICBzZW5kOiAnU2VuZCcsXG4gICAgICBjb21tZW50OiAnQ29tbWVudCcsXG4gICAgICBhc3NvY2lhdGU6ICdMaW5rIHRvIHByb2NlZHVyZScsXG4gICAgICB2YWxpZGF0ZTogJ1ZhbGlkYXRlJyxcbiAgICAgIGNhbmNlbDogJ0NhbmNlbCcsXG4gICAgICBzZWFyY2g6ICdTZWFyY2gnXG4gICAgfVxuICB9XG59O1xuIl19
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW4udHJhbnNsYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9oeXBlcnZpc29yL3NyYy9saWIvZ2VuZXJhbC9pMThuL2VuLnRyYW5zbGF0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsTUFBTSxFQUFFO1FBQ04sS0FBSyxFQUFFO1lBQ0wsSUFBSSxFQUFFLE9BQU87WUFDYixJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLFlBQVk7Z0JBQ2xCLEtBQUssRUFBRSxPQUFPO2dCQUNkLE1BQU0sRUFBRSxRQUFRO2dCQUNoQixRQUFRLEVBQUUsVUFBVTthQUNyQjtZQUNELE1BQU0sRUFBRTtnQkFDTixJQUFJLEVBQUUsUUFBUTtnQkFDZCxHQUFHLEVBQUUsTUFBTTtnQkFDWCxXQUFXLEVBQUUsYUFBYTtnQkFDMUIsSUFBSSxFQUFFLE1BQU07Z0JBQ1osS0FBSyxFQUFFLE9BQU87YUFDZjtZQUNELE9BQU8sRUFBRSxTQUFTO1lBQ2xCLE1BQU0sRUFBRSxvQkFBb0I7WUFDNUIsU0FBUyxFQUFFLHFCQUFxQjtZQUNoQyxlQUFlLEVBQUUsa0JBQWtCO1lBQ25DLFFBQVEsRUFBRSxxQkFBcUI7WUFDL0IsTUFBTSxFQUFFO2dCQUNOLElBQUksRUFBRSxRQUFRO2FBQ2Y7WUFDRCxTQUFTLEVBQUUsWUFBWTtZQUN2QixPQUFPLEVBQUUsVUFBVTtZQUNuQixZQUFZLEVBQUUsZUFBZTtZQUM3QixvQkFBb0IsRUFBRSxtQkFBbUI7WUFDekMsU0FBUyxFQUFFLFlBQVk7WUFDdkIsTUFBTSxFQUFFLG9CQUFvQjtZQUM1QixHQUFHLEVBQUU7Z0JBQ0gsSUFBSSxFQUFFLFlBQVk7Z0JBQ2xCLEtBQUssRUFBRSxrQkFBa0I7Z0JBQ3pCLEtBQUssRUFBRTtvQkFDTCxXQUFXLEVBQUUsYUFBYTtvQkFDMUIsT0FBTyxFQUFF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QUFFLFFBQVE7Z0JBQ2hCLElBQUksRUFBRSxXQUFXO2dCQUNqQixHQUFHLEVBQUUsVUFBVTtnQkFDZixLQUFLLEVBQUUsdUJBQXVCO2dCQUM5QixHQUFHLEVBQUUsWUFBWTtnQkFDakIsS0FBSyxFQUFFLE9BQU87Z0JBQ2QsT0FBTyxFQUFFLGFBQWE7Z0JBQ3RCLEtBQUssRUFBRSxlQUFlO2FBQ3ZCO1NBQ0Y7UUFDRCxnQkFBZ0IsRUFBRTtZQUNoQixLQUFLLEVBQUUsa0JBQWtCO1lBQ3pCLFdBQVcsRUFDVCxtSEFBbUg7WUFDckgsWUFBWSxFQUFFLGVBQWU7WUFDN0IsY0FBYyxFQUFFLG9CQUFvQjtZQUNwQyxlQUFlLEVBQUUsbUJBQW1CO1lBQ3BDLGlCQUFpQixFQUFFLGlCQUFpQjtZQUNwQyxvQkFBb0IsRUFBRSx1QkFBdUI7U0FDOUM7UUFDRCxNQUFNLEVBQUU7WUFDTixPQUFPLEVBQUUsU0FBUztZQUNsQixLQUFLLEVBQUUsT0FBTztZQUNkLElBQUksRUFBRSxNQUFNO1lBQ1osT0FBTyxFQUFFLFNBQVM7WUFDbEIsU0FBUyxFQUFFLG1CQUFtQjtZQUM5QixRQUFRLEVBQUUsVUFBVTtZQUNwQixNQUFNLEVBQUUsUUFBUTtZQUNoQixNQUFNLEVBQUUsUUFBUTtTQUNqQjtLQUNGO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBlblRyYW5zbGF0aW9ucyA9IHtcbiAgJ0BodnknOiB7XG4gICAgZXZlbnQ6IHtcbiAgICAgIG5hbWU6ICdFdmVudCcsXG4gICAgICB0eXBlOiB7XG4gICAgICAgIG5hbWU6ICdFdmVudCB0eXBlJyxcbiAgICAgICAgQUxFUlQ6ICdBbGVydCcsXG4gICAgICAgIFJFUE9SVDogJ1JlcG9ydCcsXG4gICAgICAgIE9QRVJBVE9SOiAnT3BlcmF0b3InXG4gICAgICB9LFxuICAgICAgc3RhdHVzOiB7XG4gICAgICAgIG5hbWU6ICdTdGF0dXMnLFxuICAgICAgICBORVc6ICdPcGVuJyxcbiAgICAgICAgSU5fUFJPR1JFU1M6ICdJbiBwcm9ncmVzcycsXG4gICAgICAgIERPTkU6ICdEb25lJyxcbiAgICAgICAgQVNLRUQ6ICdBc2tlZCdcbiAgICAgIH0sXG4gICAgICBhZGRyZXNzOiAnQWRkcmVzcycsXG4gICAgICBzb3VyY2U6ICdFeHRlcm5hbCByZWZlcmVuY2UnLFxuICAgICAgZXF1aXBtZW50OiAnRXF1aXBtZW50IHJlZmVyZW5jZScsXG4gICAgICBlcXVpcG1lbnRFbnRpdHk6ICdFcXVpcG1lbnQgZW50aXR5JyxcbiAgICAgIG5vdEZvdW5kOiAnRXF1aXBtZW50IG5vdCBmb3VuZCcsXG4gICAgICBkb21haW46IHtcbiAgICAgICAgbmFtZTogJ03DqXRpZXInXG4gICAgICB9LFxuICAgICAgc3RhcnREYXRlOiAnU3RhcnQgZGF0ZScsXG4gICAgICBlbmREYXRlOiAnRW5kIGRhdGUnLFxuICAgICAgY3JlYXRpb25EYXRlOiAnQ3JlYXRpb24gZGF0ZScsXG4gICAgICBsYXN0TW9kaWZpY2F0aW9uRGF0ZTogJ01vZGlmaWNhdGlvbiBkYXRlJyxcbiAgICAgIGNsb3NlRGF0ZTogJ0Nsb3NlIGRhdGUnLFxuICAgICAgZGV0YWlsOiAnRXZlbnRzIGRlc2NyaXB0aW9uJyxcbiAgICAgIGxvZzoge1xuICAgICAgICBuYW1lOiAnRXZlbnRzIGxvZycsXG4gICAgICAgIGVtcHR5OiAnTm8gZXZlbnQgY3JlYXRlZCcsXG4gICAgICAgIGV2ZW50OiB7XG4gICAgICAgICAgZGVzY3JpcHRpb246ICdEZXNjcmlwdGlvbicsXG4gICAgICAgICAgYWRkcmVzczogJ0FkZHJlc3MnLFxuICAgICAgICAgIGRldGFpbDogJ0luZm9ybWF0aW9uJyxcbiAgICAgICAgICBtYW5kYXRvcnk6ICcqIE1hbmRhdG9yeSBmaWVsZHMnLFxuICAgICAgICAgIG5hbWU6ICdOYW1lJyxcbiAgICAgICAgICBpZDogJ0lkZW50aWZpZXInLFxuICAgICAgICAgIGNhdGVnb3J5OiAnQ2F0ZWdvcnknLFxuICAgICAgICAgIGNsb3NlOiAnQ2xvc2UgYWxsIGV2ZW50cycsXG4gICAgICAgICAgY2xvc2VkOiAnQWxsIGNsb3NlZCcsXG4gICAgICAgICAgY29tbWVudHM6IHtcbiAgICAgICAgICAgIG5hbWU6ICdFdmVudCBjb21tZW50cycsXG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogJ1dyaXRlIHlvdXIgY29tbWVudCdcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHByb2NlZHVyZToge1xuICAgICAgICAgIGRlbGV0ZTogJ0RlbGV0ZSBwcm9jZWR1cmUnLFxuICAgICAgICAgIHByb2dyZXNzOiAnUHJvZ3Jlc3MnLFxuICAgICAgICAgIG5vQWN0aW9uOiAnTm8gYWN0aW9ucycsXG4gICAgICAgICAgbmFtZTogJ0NvbW1vbiBwcm9jZWR1cmUnLFxuICAgICAgICAgIG5hbWUxOiAnUHJvY2VkdXJlJ1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgY2F0ZWdvcnk6IHtcbiAgICAgICAgbmFtZTogJ0V2ZW50IGNhdGVnb3J5JyxcbiAgICAgICAgTUFMRlVOQ1RJT046ICdEeXNmdW5jdGlvbiBhbGVydCcsXG4gICAgICAgIFJFUE9SVDogJ0dSQyByZXBvcnQnLFxuICAgICAgICBPUEVSQVRPUjogJ09wZXJhdG9yIGV2ZW50JyxcbiAgICAgICAgTElNSVQ6ICdMaW1pdCBhbGVydCcsXG4gICAgICAgIE1BTklGRVNUQVRJT046ICdNYW5pZmVzdGF0aW9uJ1xuICAgICAgfSxcbiAgICAgIGNyaXRpY2FsaXR5OiB7XG4gICAgICAgIG5hbWU6ICdDcml0aWNhbGl0eScsXG4gICAgICAgIExPVzogJ0xvdycsXG4gICAgICAgIE1FRElVTTogJ01pZGRsZScsXG4gICAgICAgIEhJR0g6ICdIaWdoJ1xuICAgICAgfSxcbiAgICAgIGZpbHRlcjoge1xuICAgICAgICBuYW1lOiAnRmlsdGVyJyxcbiAgICAgICAgY2hvaWNlOiB7XG4gICAgICAgICAgYWxsOiAnQWxsJ1xuICAgICAgICB9LFxuICAgICAgICByZXNldDogJ1Jlc2V0J1xuICAgICAgfSxcbiAgICAgIGNsb3NlOiB7XG4gICAgICAgIG9uZVRpdGxlOiAnQ2xvc2UgZXZlbnQnLFxuICAgICAgICBtdWx0aVRpdGxlOiAnQ2xvc2UgZXZlbnRzJyxcbiAgICAgICAgb25lOiAnQ2xvc2UgZXZlbnQnLFxuICAgICAgICBtdWx0aTogJ0Nsb3NlIGV2ZW50cycsXG4gICAgICAgIGNvbW1lbnQ6ICdDbG9zZSBjb21tZW50J1xuICAgICAgfSxcbiAgICAgIGluc3RhbGxEYXRlOiAnSW5zdGFsbGF0aW9uIGRhdGUnLFxuICAgICAgbWFuYWdlZDogJ01hbmFnZWQgZXF1aXBtZW50JyxcbiAgICAgIHBybTogJ1BSTSBjb250cmFjdCBudW1iZXInLFxuICAgICAgcHJlc2VuY2VTZW5zb3I6ICdQcmVzZW5jZSBzZW5zb3InLFxuICAgICAgcGFyZW50OiAnUGFyZW50JyxcbiAgICAgIGNvbnN1bHQ6ICdDb25zdWx0IHt7aG93TWFueX19IGV2ZW50e3twbHVyYWx9fSdcbiAgICB9LFxuICAgIGV2ZW50U3VtbWFyeToge1xuICAgICAgZnJvbTogJ0Zyb20nLFxuICAgICAgdG86ICd0bycsXG4gICAgICBub0NvbnRlbnQ6IHtcbiAgICAgICAgTkVXOiAnTm8gZXZlbnRzIGNyZWF0ZWQuJyxcbiAgICAgICAgSU5fUFJPR1JFU1M6ICdObyBldmVudHMgaW4gcHJvZ3Jlc3MuJyxcbiAgICAgICAgRE9ORTogJ05vIGV2ZW50IGRvbmUuJ1xuICAgICAgfSxcbiAgICAgIHN0YXR1c0xhYmVsczoge1xuICAgICAgICBORVc6ICdPcGVuJyxcbiAgICAgICAgSU5fUFJPR1JFU1M6ICdJbiBwcm9ncmVzcycsXG4gICAgICAgIERPTkU6ICdEb25lJ1xuICAgICAgfSxcbiAgICAgIGNyaXRpY2FsaXR5TGFiZWxzOiB7XG4gICAgICAgIExPVzogJ0xvdycsXG4gICAgICAgIE1FRElVTTogJ01lZGl1bScsXG4gICAgICAgIEhJR0g6ICdIaWdoJyxcbiAgICAgICAgQUxMOiAnQWxsJ1xuICAgICAgfVxuICAgIH0sXG4gICAgcHJvY2VkdXJlOiB7XG4gICAgICBuYW1lOiAnUHJvY2VkdXJlJyxcbiAgICAgIHByb2dyZXNzOiAnUHJvY2VkdXJlIHByb2dyZXNzICUnLFxuICAgICAgdXNlQ291bnQ6ICdVc2FnZScsXG4gICAgICB0aXRsZTogJ1RpdGxlJyxcbiAgICAgIGNhdGVnb3J5OiAnQ2F0ZWdvcnknLFxuICAgICAgYXV0aG9yOiAnQXV0aG9yJyxcbiAgICAgIGlkOiAnSWQnLFxuICAgICAgbWlzc2luZ1Byb3BlcnR5OiAnTWlzc2luZyBwcm9wZXJ0eScsXG4gICAgICBub0NvbnRlbnQ6ICdObyBleGlzdGluZyBwcm9jZWR1cmVzIGZvdW5kJyxcbiAgICAgIGRvbWFpbjogJ0RvbWFpbicsXG4gICAgICBjYXRhbG9nOiAnUHJvY2VkdXJlIGNhdGFsb2cnLFxuICAgICAgZGVzY3JpcHRpb246ICdEZXNjcmlwdGlvbicsXG4gICAgICBjcmVhdG9yOiAnQ3JlYXRvcicsXG4gICAgICBhY3Rpb246IHtcbiAgICAgICAgYWRkOiAnQWRkIG5ldyBBY3Rpb24nLFxuICAgICAgICBjcmVhdGU6ICdBZGQgYWN0aW9uIHRvIHByb2NlZHVyZScsXG4gICAgICAgIG1vZGlmeTogJ1VwZGF0ZSBhY3Rpb24nLFxuICAgICAgICBjb21tZW50OiAnQ29tbWVudCcsXG4gICAgICAgIGRlbGV0ZTogJ0RlbGV0ZScsXG4gICAgICAgIHVwZGF0ZTogJ1VwZGF0ZScsXG4gICAgICAgIGRvbmU6ICdNYXJrIGRvbmUnLFxuICAgICAgICBDU1U6ICdDYWxsIENTVScsXG4gICAgICAgIERPVVRFOiAnQXNrIGZvciBkb3VidCByZW1vdmFsJyxcbiAgICAgICAgU01TOiAnU2VuZCBhIFNNUycsXG4gICAgICAgIEFVVFJFOiAnT3RoZXInLFxuICAgICAgICBTRVJWSUNFOiAnQXNrIHNlcnZpY2UnLFxuICAgICAgICBFTUFJTDogJ1NlbmQgYW4gZW1haWwnXG4gICAgICB9XG4gICAgfSxcbiAgICBhc3NvY2lhdGlvbk1vZGFsOiB7XG4gICAgICB0aXRsZTogJ0xpbmsgYSBwcm9jZWR1cmUnLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdBZGRpbmcgYSBwcm9jZWR1cmUgdG8gc2VsZWN0ZWQgZXZlbnRzIGFsbG93cyBmb3Igc2VsZWN0aW5nIGEgbGlzdCBvZiBhY3Rpb25zIHRvIGJlIHBlcmZvcm1lZCB0byB0cmVhdCB0aGUgZXZlbnRzLicsXG4gICAgICBsaW5rZWRFdmVudHM6ICdMaW5rZWQgZXZlbnRzJyxcbiAgICAgIGNhdGVnb3J5RmlsdGVyOiAnRmlsdGVyIGJ5IGNhdGVnb3J5JyxcbiAgICAgIHNlYXJjaFByb2NlZHVyZTogJ1NlYXJjaCBwcm9jZWR1cmVzJyxcbiAgICAgIGRvbWFpblBsYWNlaG9sZGVyOiAnU2VsZWN0IGEgZG9tYWluJyxcbiAgICAgIHByb2NlZHVyZVBsYWNlaG9sZGVyOiAnSW5wdXQgcHJvY2VkdXJlIHRpdGxlJ1xuICAgIH0sXG4gICAgYWN0aW9uOiB7XG4gICAgICBjb25zdWx0OiAnQ29uc3VsdCcsXG4gICAgICBjbG9zZTogJ0Nsb3NlJyxcbiAgICAgIHNlbmQ6ICdTZW5kJyxcbiAgICAgIGNvbW1lbnQ6ICdDb21tZW50JyxcbiAgICAgIGFzc29jaWF0ZTogJ0xpbmsgdG8gcHJvY2VkdXJlJyxcbiAgICAgIHZhbGlkYXRlOiAnVmFsaWRhdGUnLFxuICAgICAgY2FuY2VsOiAnQ2FuY2VsJyxcbiAgICAgIHNlYXJjaDogJ1NlYXJjaCdcbiAgICB9XG4gIH1cbn07XG4iXX0=
|