@eo-sdk/client 11.14.1 → 11.14.3
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/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.d.ts.map +1 -1
- package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts +7 -2
- package/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.d.ts.map +1 -1
- package/app/eo-framework-core/api/grid.service.d.ts +1 -0
- package/app/eo-framework-core/api/grid.service.d.ts.map +1 -1
- package/assets/_default/i18n/ja.json +62 -21
- package/assets/_default/i18n/ko.json +58 -17
- package/assets/_default/i18n/th.json +58 -17
- package/assets/_default/i18n/zh.json +66 -25
- package/esm2022/app/eo-client/about-state/about-state.component.mjs +3 -3
- package/esm2022/app/eo-framework/form-elements/dynamic-list/dynamic-list.component.mjs +17 -3
- package/esm2022/app/eo-framework/object-details/object-details.component.mjs +3 -3
- package/esm2022/app/eo-framework/object-form/object-form/form-element-table/form-element-table.component.mjs +114 -22
- package/esm2022/app/eo-framework/prepare-details/prepare-details.component.mjs +2 -2
- package/esm2022/app/eo-framework/result-list/result-list.component.mjs +2 -2
- package/esm2022/app/eo-framework/ui/indexdata-summary/indexdata-summary.component.mjs +3 -3
- package/esm2022/app/eo-framework-core/api/grid.service.mjs +36 -5
- package/fesm2022/eo-sdk-client.mjs +169 -33
- package/fesm2022/eo-sdk-client.mjs.map +1 -1
- package/package.json +3 -3
|
@@ -466,7 +466,7 @@ let ObjectDetailsComponent = class ObjectDetailsComponent {
|
|
|
466
466
|
}, 300);
|
|
467
467
|
}
|
|
468
468
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ObjectDetailsComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.SystemService }, { token: i3.EmptyStateService }, { token: i4.AgentService }, { token: i2.BackendService }, { token: i2.DmsService }, { token: i5.SelectionService }, { token: i6.ActionService }, { token: i2.CapabilitiesService }, { token: i2.UploadRegistryService }, { token: i2.EventService }, { token: i2.Config }, { token: i2.BpmService }, { token: i2.TranslateService }, { token: i0.ChangeDetectorRef }, { token: i2.UserService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
469
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: ObjectDetailsComponent, selector: "eo-object-details", inputs: { plugins: "plugins", searchTerm: "searchTerm", enableCompare: "enableCompare", recyclebinTabs: "recyclebinTabs", versionComponentTabs: "versionComponentTabs", enableDiff: "enableDiff", enableSync: "enableSync", cacheLayout: "cacheLayout", applySelection: "applySelection", parseDmsParams: "parseDmsParams", reference: "reference", emptyState: "emptyState", dmsParams: ["params", "dmsParams"], dmsParams2: ["params2", "dmsParams2"], dmsObject: ["item", "dmsObject"], dmsObject2: ["item2", "dmsObject2"] }, outputs: { hasContent: "hasContent" }, host: { properties: { "class.reference": "this.isReference", "attr.data-type": "this.dataType" } }, providers: [ContentPreviewService], viewQueries: [{ propertyName: "preview", first: true, predicate: ["viewer"], descendants: true }, { propertyName: "eoSplitTabs", first: true, predicate: SplitTabsComponent, descendants: true }, { propertyName: "favoriteIcon", first: true, predicate: FavoriteIconComponent, descendants: true }, { propertyName: "tabContainers", predicate: Tabs, descendants: true }], ngImport: i0, template: "<div class=\"loader-overlay__mask\" *ngIf=\"showLoader\">\n <eo-loading-spinner class=\"object-detail__loader\"></eo-loading-spinner>\n</div>\n<ng-container *ngIf=\"item && !hasError; else noItem\">\n\n <div class=\"eo-head eo-head-tabs\" [eoShortcuts]=\"shortcuts\">\n <header class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\" [objectType]=\"item.type\" [iconTitle]=\"item.type.label\"></eo-icon>\n <div class=\"eo-header-info\">\n <h2 class=\"eo-header-title\">{{item.title}}</h2>\n <h3 class=\"eo-header-subtitle\">{{item.description}}</h3>\n </div>\n\n <div class=\"eo-header-actions-container\">\n <div class=\"eo-header-actions\">\n <ng-container>\n <eo-icon class=\"button refresh-button\" *ngIf=\"!recyclebinTabs\"\n [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\" [iconTitle]=\"('eo.list.refresh' | translate)\"\n [ngClass]=\"{'disable-refresh': preventClickThrough}\" (click)=\"refreshContent()\"></eo-icon>\n <eo-icon class=\"button sync-tab-btn\" *ngIf=\"enableCompare && !recyclebinTabs\"\n [ngClass]=\"{'enabled': onEnableSync,'disable': !enableSync}\" [iconSrc]=\"'assets/_default/svg/ic_link.svg'\"\n [iconTitle]=\"'eo.versions.detail.glue.tooltip' | translate\" (click)=\"onEnableSync = !onEnableSync\"></eo-icon>\n <eo-favorite-icon [item]=\"item\"\n *ngIf=\"!enableCompare && !recyclebinTabs && capabilities.favorites && !isJournalObject(item)\">\n </eo-favorite-icon>\n <eo-icon class=\"button oc-button\" *ngIf=\"downloadAllowed && !enableCompare && item.content?.id\" (click)=\"downloadOriginalContent()\"\n [iconTitle]=\"('eo.action.download.dms.object.content.label' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_content-download.svg'\"></eo-icon>\n <eo-edit-icon [item]=\"item\"\n *ngIf=\"!enableCompare && !recyclebinTabs && item.content?.id && item.rights.edit && (agentIsConnected$ | async)\n && !item.isFinalized && item.data.yuvsigstatus !== 'signed' && item.data.yuvsigstatus !== 'inprocess' && !item.lock\">\n </eo-edit-icon>\n <eo-icon class=\"button am-button\" *ngIf=\"!recyclebinTabs\" (click)=\"showActions()\"\n [iconTitle]=\"('eo.object.details.actions.title' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_more.svg'\"></eo-icon>\n </ng-container>\n\n </div>\n\n <div class=\"eo-header-status-icons\">\n <a class=\"content-link\" [title]=\"'eo.object.contentlink.tooltip' | translate\" *ngIf=\"item.content?.linked\"\n [routerLink]=\"'/object/' + item.content.id\" [queryParams]=\"{type: item.content.type}\">\n <span>{{'eo.object.contentlink' | translate}}</span>\n </a>\n <eo-icon class=\"subscription-icon\" *ngIf=\"item.subscriptions.length\"\n [iconSrc]=\"'assets/_default/svg/ic_subscription.svg'\" [iconTitle]=\"subscriptionIconTooltip\"></eo-icon>\n <eo-icon class=\"resubmission-icon\" *ngIf=\"item.resubmissions.length\"\n [iconSrc]=\"'assets/_default/svg/ic_resubmission.svg'\"\n [iconTitle]=\"'eo.object.resubmission.tooltip' | translate: {due: item.resubmissions[0].due | localeDate, info: item.resubmissions[0].info}\"></eo-icon>\n <eo-icon class=\"shared-icon\" *ngIf=\"item.additionalvisibility.length && !recyclebinTabs\"\n [iconSrc]=\"'assets/_default/svg/ic_share.svg'\"\n [iconTitle]=\"'eo.object.shared.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"lock\" [ngClass]=\"{'myLock': item.lock.by.me}\" *ngIf=\"item.lock\"\n [iconSrc]=\"'assets/_default/svg/ic_lock.svg'\" [iconTitle]=\"lockTooltip\"></eo-icon>\n <eo-icon class=\"finalized-icon\" *ngIf=\"item.isFinalized\" [iconSrc]=\"'assets/_default/svg/ic_finalized.svg'\"\n [iconTitle]=\"'eo.object.finalized.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon inprocess\" *ngIf=\"item.data?.yuvsigstatus === 'inprocess'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.inprocess' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon signed\" *ngIf=\"item.data?.yuvsigstatus === 'signed'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.signed' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon stopped\"\n *ngIf=\"item.data?.yuvsigstatus === 'canceled'\n || item.data?.yuvsigstatus === 'revised' || item.data?.yuvsigstatus === 'error' || item.data?.yuvsigstatus === 'expired'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.stopped' | translate\"></eo-icon>\n @if (item.processcount > 0) {\n <eo-icon class=\"resubmission-icon\"\n [iconSrc]=\"'assets/_default/svg/ic_bpm.svg'\"\n [iconTitle]=\"'eo.object.processcount.tooltip' | translate : {processcount: item?.processcount, text: processTooltip}\"></eo-icon>\n }\n </div>\n </div>\n </header>\n </div>\n <div class=\"eo-body\">\n\n <yvc-split-tabs [layoutSettingsID]=\"layoutSettingsID\" [config]=\"splitTabConfig\" *ngIf=\"!item2; else tplCompare\">\n <!-- summary -->\n <ng-template [yvcTab]=\"{id: 'summary', label: 'eo.object.summary.title' | translate}\">\n <eo-indexdata-summary [indexdata]=\"indexDataPreview\" [baseparams]=\"baseparams\" [dmsObject]=\"item\"\n [enableVersions]=\"!enableCompare\"></eo-indexdata-summary>\n </ng-template>\n <!-- metadata -->\n <ng-template [yvcTab]=\"{id: 'indexdata', label: 'eo.object.indexdata.title' | translate}\">\n <eo-object-form-edit [dmsObject]=\"item\" (indexDataSaved)=\"onIndexDataSaved($event, item)\"\n [formDisabled]=\"enableCompare\"></eo-object-form-edit>\n </ng-template>\n <!-- preview -->\n <ng-template [yvcTab]=\"{id: 'preview', label: 'eo.object.content.title' | translate}\">\n <eo-media [useVersion]=\"item.id === item.content?.id\" [searchTerm]=\"searchTerm\" [dmsObject]=\"item\" (hasContentLoaded)=\"hasContentLoaded()\"\n #viewer></eo-media>\n </ng-template>\n <!-- history -->\n <ng-template [yvcTab]=\"{id: 'history', label: 'eo.object.history.title' | translate}\">\n <eo-object-history [params]=\"{id: item.id, type: item.type?.qname}\">\n </eo-object-history>\n </ng-template>\n <!-- links -->\n <ng-template [yvcTab]=\"{id: 'links', label: 'eo.object.links.title' | translate}\">\n <eo-object-links [dmsObject]=\"item\"></eo-object-links>\n </ng-template>\n <!-- signature -->\n <ng-template [yvcTab]=\"{id: 'signature', label: 'eo.object.signature-tab.title' | translate}\">\n <eo-signature-tab [dmsObject]=\"item\"></eo-signature-tab>\n </ng-template>\n\n <!-- plugin tabs -->\n <ng-template *ngFor=\"let p of plugins\" [yvcTab]=\"{id: p.id, label: p.id | translate}\">\n <eo-plugin [id]=\"p.id\" [parent]=\"this\"></eo-plugin>\n </ng-template>\n\n </yvc-split-tabs>\n\n <ng-template #tplCompare>\n <yvc-split-view>\n <ng-template yvcSplitArea [size]=\"50\">\n\n <div class=\"cmp-wrapper\">\n <div class=\"cmp-info\">\n <div class=\"version\">{{'eo.versions.details.label' | translate}}<span>{{item.version}}</span></div>\n </div>\n <ng-container\n *ngTemplateOutlet=\"tplTabs; context: {item, baseparams, indexdata: indexDataPreview, searchTerm}\"></ng-container>\n </div>\n\n </ng-template>\n <ng-template yvcSplitArea [size]=\"50\">\n\n <div class=\"cmp-wrapper\">\n <div class=\"cmp-info\">\n <div class=\"version\">{{'eo.versions.details.label' | translate}}<span>{{item2.version}}</span></div>\n </div>\n <ng-container\n *ngTemplateOutlet=\"tplTabs; context: {item: item2, baseparams: baseparams2, indexdata: indexDataPreview2, searchTerm, diff: {baseparams, baseparams2, indexdata: indexDataPreview, indexdata2: indexDataPreview2}}\"></ng-container>\n </div>\n </ng-template>\n\n </yvc-split-view>\n </ng-template>\n\n <ng-template #tplTabs let-item=\"item\" let-indexdata=\"indexdata\" let-baseparams=\"baseparams\"\n let-searchTerm=\"searchTerm\" let-diff=\"diff\">\n <yvc-tabs (tabChange)=\"onCompareTabChange($event)\" layoutSettingsID=\"{{'eo.object.details.compare.tabs' + (diff ? '.0' : '.1')}}\">\n <!-- summary -->\n <ng-template [yvcTab]=\"{id: 'summary', label: 'eo.object.summary.title' | translate}\">\n <eo-indexdata-summary [indexdata]=\"indexdata\" [baseparams]=\"baseparams\" [dmsObject]=\"item\"></eo-indexdata-summary>\n </ng-template>\n <!-- metadata -->\n <ng-template [yvcTab]=\"{id: 'indexdata', label: 'eo.object.indexdata.title' | translate}\">\n <eo-object-form-edit [dmsObject]=\"item\" (indexDataSaved)=\"onIndexDataSaved($event, item)\" [formDisabled]=\"enableCompare\"></eo-object-form-edit>\n </ng-template>\n @if (!item?.isFolder){\n <!-- preview -->\n <ng-template [yvcTab]=\"{id: 'preview', label: 'eo.object.content.title' | translate}\">\n <eo-media [useVersion]=\"true\" [searchTerm]=\"searchTerm\" [dmsObject]=\"item\" #viewer></eo-media>\n </ng-template>\n <!-- signature -->\n @if (capabilities.signing){\n <ng-template [yvcTab]=\"{id: 'signature', label: 'eo.object.signature-tab.title' | translate}\">\n <eo-signature-tab [dmsObject]=\"item\"></eo-signature-tab>\n </ng-template>\n }\n }\n <!-- changes -->\n <ng-template *ngIf=\"diff\"\n [yvcTab]=\"{id: 'changes', label: 'eo.object.changes.title' | translate}\">\n <eo-indexdata-summary [diff]=\"diff\" [enableVersions]=\"false\" [isChangesTab]=\"versionComponentTabs\" [dmsObject]=\"item\"></eo-indexdata-summary>\n </ng-template>\n\n\n </yvc-tabs>\n </ng-template>\n\n </div>\n</ng-container>\n\n<ng-template #noItem>\n <span class=\"not-found\" *ngIf=\"nodmsobject\" translate>eo.bpm.nodmsobject</span>\n <eo-error-message *ngIf=\"!showLoader\"\n [emptyState]=\"{icon: emptyState.icon, text: emptyState.text, className: emptyState.className}\">\n <ng-content select=\".error\"></ng-content>\n </eo-error-message>\n</ng-template>\n", styles: [":host{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;background:var(--panel-background-grey);height:100%;overflow-y:auto;--panel-divider-color: var(--panel-header-border-bottom-color)}:host .eo-head .eo-header .eo-header-info .eo-header-title,:host .eo-head .eo-header .eo-header-info .eo-header-subtitle{-webkit-user-select:text;user-select:text}:host .eo-body{background-color:var(--panel-background)}:host .eo-body__not-available{opacity:.4;background:rgba(var(--color-black-rgb),.4)}:host .eo-body .cmp-wrapper{height:100%;flex-flow:column;display:flex}:host .eo-body .cmp-wrapper .cmp-info{background-color:var(--panel-background);padding:2px}:host .eo-body .cmp-wrapper .cmp-info .version{margin:2px;border-radius:2px;background-color:var(--panel-background-lightgrey);border:1px dashed var(--panel-divider-color);color:var(--text-color-caption);text-align:center}:host .eo-body .cmp-wrapper .cmp-info .version>span{margin-inline-start:.5em;font-weight:700}:host .eo-body yvc-split-view,:host .eo-body yvc-split-tabs{height:100%}:host .sync-tab-btn.enabled{color:var(--color-accent)}:host .sync-tab-btn.disable{display:none}:host .lock{background:var(--color-error)!important;color:var(--color-white);width:18px;height:18px;border-radius:2px;padding:1px}:host .lock.myLock{color:var(--color-white);background:var(--state-orange)!important}:host .not-found{color:var(--panel-background);text-align:center;margin:calc(var(--app-pane-padding) / 2);padding:calc(var(--app-pane-padding) / 4);border-radius:2px;flex:0 0 auto;background:var(--color-error)}:host .eo-header-status-icons{margin-top:var(--app-pane-padding);display:flex;justify-content:flex-end}:host .eo-header-status-icons>eo-icon{width:18px;height:18px;padding:calc(var(--app-pane-padding) / 4);color:var(--color-white);margin-left:1px;background-color:var(--color-primary-2)}:host .eo-header-status-icons>eo-icon:first-child{border-top-left-radius:4px;border-bottom-left-radius:4px}:host .eo-header-status-icons>eo-icon:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}:host .eo-header-status-icons>eo-icon.finalized-icon{background-color:var(--color-success)}:host .eo-header-status-icons>eo-icon.signed-icon.inprocess{background-color:var(--color-light-gray)}:host .eo-header-status-icons>eo-icon.signed-icon.signed{background-color:var(--color-success)}:host .eo-header-status-icons>eo-icon.signed-icon.stopped{background-color:var(--color-error)}:host .eo-header-status-icons>a{margin:0 calc(var(--app-pane-padding) / 4);display:flex;align-items:center;color:var(--color-white);font-size:var(--font-hint);line-height:var(--font-hint);border-radius:2px;padding:0 4px 1px;text-decoration:none;background-color:var(--color-success)}:host .loader-overlay__mask{display:flex;width:100%;height:100%;z-index:11;position:absolute;background:rgba(var(--color-white-rgb),.8);-webkit-animation:eoFadeIn .5s;animation:eoFadeIn .5s}:host .loader-overlay__mask .object-detail__loader{margin:auto}:host ::ng-deep yvc-tabs{flex:1;height:100%}:host ::ng-deep yvc-tabs>header{background-color:var(--panel-background)}:host ::ng-deep .yvc-split-area{background-color:var(--panel-background-grey)}:host ::ng-deep .indexdata-summary,:host ::ng-deep .object-form-edit{margin:var(--app-pane-padding)}:host ::ng-deep eo-media{height:100%;overflow:hidden;display:block}:host ::ng-deep .object-form-edit{position:relative;height:100%;margin:0;overflow:hidden;background:transparent!important}:host ::ng-deep .object-form-edit eo-object-form{background:transparent;overflow:auto}:host ::ng-deep .object-form-edit eo-object-form .eo-object-form{margin:var(--app-pane-padding);background:var(--panel-background);border:1px solid rgba(var(--color-black-rgb),.1)}:host ::ng-deep .object-form-edit .form-controls{animation:eoFadeInUp .2s}:host ::ng-deep .object-form-edit .form-controls .buttons{background:var(--panel-background);border-top:1px solid var(--panel-divider-color);padding:calc(var(--app-pane-padding) / 2) var(--app-pane-padding)!important}:host ::ng-deep .refresh-button.disable-refresh{cursor:default;color:var(--color-primary-3)}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i8.ObjectFormEditComponent, selector: "eo-object-form-edit", inputs: ["formDisabled", "dmsObject"], outputs: ["indexDataSaved"] }, { kind: "component", type: i9.MediaComponent, selector: "eo-media", inputs: ["undockDisabled", "enableCloseBtn", "useVersion", "attachments", "searchTerm", "previewUri", "previewFile", "dmsObject"], outputs: ["hasContentLoaded"] }, { kind: "directive", type: i10.ShortcutsDirective, selector: "[eoShortcuts]", inputs: ["eoShortcuts"] }, { kind: "directive", type: i11.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i12.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "directive", type: i13.RouterLinkDirective, selector: "a[routerLink]" }, { kind: "component", type: i14.LoadingSpinnerComponent, selector: "eo-loading-spinner", inputs: ["size", "mode"] }, { kind: "component", type: i15.IndexdataSummaryComponent, selector: "eo-indexdata-summary", inputs: ["baseparams", "enableVersions", "isChangesTab", "indexdata", "dmsObject", "diff"] }, { kind: "component", type: i16.ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: i17.SignatureTabComponent, selector: "eo-signature-tab", inputs: ["dmsObject"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i18.Tabs, selector: "yvc-tabs", inputs: ["tabs", "layoutSettingsID", "panelOrder", "panelOrderIncludeUnmentioned", "cacheViews", "tabSplitEnabled", "tabRemoveEnabled"], outputs: ["tabSplit", "tabRemove", "tabChange"] }, { kind: "directive", type: i18.YvcTabDirective, selector: "[yvcTab]", inputs: ["yvcTab"] }, { kind: "component", type: i19.SplitTabsComponent, selector: "yvc-split-tabs", inputs: ["layoutSettingsID", "config", "panelOrder"], outputs: ["layoutSettingsChange"] }, { kind: "component", type: i20.SplitViewComponent, selector: "yvc-split-view", inputs: ["direction", "gutterSize", "restrictMove", "disabled", "gutterDblClickDuration", "layoutSettingsID"], outputs: ["layoutSettingsChange", "dragStart", "dragEnd", "gutterClick", "gutterDblClick"] }, { kind: "directive", type: i20.SplitAreaDirective, selector: "[yvcSplitArea]", inputs: ["size", "order", "minSize", "maxSize", "panelClass", "visible"] }, { kind: "component", type: i21.PluginComponent, selector: "eo-plugin", inputs: ["type", "id", "parent"] }, { kind: "component", type: i22.ObjectHistoryComponent, selector: "eo-object-history", inputs: ["params"] }, { kind: "component", type: i23.ObjectLinksComponent, selector: "eo-object-links", inputs: ["dmsObject"] }, { kind: "component", type: i24.FavoriteIconComponent, selector: "eo-favorite-icon", inputs: ["item"] }, { kind: "component", type: i25.EditIconComponent, selector: "eo-edit-icon", inputs: ["item"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }, { kind: "pipe", type: i26.LocaleDatePipe, name: "localeDate" }] }); }
|
|
469
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: ObjectDetailsComponent, selector: "eo-object-details", inputs: { plugins: "plugins", searchTerm: "searchTerm", enableCompare: "enableCompare", recyclebinTabs: "recyclebinTabs", versionComponentTabs: "versionComponentTabs", enableDiff: "enableDiff", enableSync: "enableSync", cacheLayout: "cacheLayout", applySelection: "applySelection", parseDmsParams: "parseDmsParams", reference: "reference", emptyState: "emptyState", dmsParams: ["params", "dmsParams"], dmsParams2: ["params2", "dmsParams2"], dmsObject: ["item", "dmsObject"], dmsObject2: ["item2", "dmsObject2"] }, outputs: { hasContent: "hasContent" }, host: { properties: { "class.reference": "this.isReference", "attr.data-type": "this.dataType" } }, providers: [ContentPreviewService], viewQueries: [{ propertyName: "preview", first: true, predicate: ["viewer"], descendants: true }, { propertyName: "eoSplitTabs", first: true, predicate: SplitTabsComponent, descendants: true }, { propertyName: "favoriteIcon", first: true, predicate: FavoriteIconComponent, descendants: true }, { propertyName: "tabContainers", predicate: Tabs, descendants: true }], ngImport: i0, template: "<div class=\"loader-overlay__mask\" *ngIf=\"showLoader\">\n <eo-loading-spinner class=\"object-detail__loader\"></eo-loading-spinner>\n</div>\n<ng-container *ngIf=\"item && !hasError; else noItem\">\n\n <div class=\"eo-head eo-head-tabs\" [eoShortcuts]=\"shortcuts\">\n <header class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\" [objectType]=\"item.type\" [iconTitle]=\"item.type.label\"></eo-icon>\n <div class=\"eo-header-info\">\n <h2 class=\"eo-header-title\">{{item.title}}</h2>\n <h3 class=\"eo-header-subtitle\">{{item.description}}</h3>\n </div>\n\n <div class=\"eo-header-actions-container\">\n <div class=\"eo-header-actions\">\n <ng-container>\n <eo-icon class=\"button refresh-button\" *ngIf=\"!recyclebinTabs\"\n [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\" [iconTitle]=\"('eo.list.refresh' | translate)\"\n [ngClass]=\"{'disable-refresh': preventClickThrough}\" (click)=\"refreshContent()\"></eo-icon>\n <eo-icon class=\"button sync-tab-btn\" *ngIf=\"enableCompare && !recyclebinTabs\"\n [ngClass]=\"{'enabled': onEnableSync,'disable': !enableSync}\" [iconSrc]=\"'assets/_default/svg/ic_link.svg'\"\n [iconTitle]=\"'eo.versions.detail.glue.tooltip' | translate\" (click)=\"onEnableSync = !onEnableSync\"></eo-icon>\n <eo-favorite-icon [item]=\"item\"\n *ngIf=\"!enableCompare && !recyclebinTabs && capabilities.favorites && !isJournalObject(item)\">\n </eo-favorite-icon>\n <eo-icon class=\"button oc-button\" *ngIf=\"downloadAllowed && !enableCompare && item.content?.id\" (click)=\"downloadOriginalContent()\"\n [iconTitle]=\"('eo.action.download.dms.object.content.label' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_content-download.svg'\"></eo-icon>\n <eo-edit-icon [item]=\"item\"\n *ngIf=\"!enableCompare && !recyclebinTabs && item.content?.id && item.rights.edit && (agentIsConnected$ | async)\n && !item.isFinalized && item.data?.yuvsigstatus !== 'signed' && item.data?.yuvsigstatus !== 'inprocess' && !item.lock\">\n </eo-edit-icon>\n <eo-icon class=\"button am-button\" *ngIf=\"!recyclebinTabs\" (click)=\"showActions()\"\n [iconTitle]=\"('eo.object.details.actions.title' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_more.svg'\"></eo-icon>\n </ng-container>\n\n </div>\n\n <div class=\"eo-header-status-icons\">\n <a class=\"content-link\" [title]=\"'eo.object.contentlink.tooltip' | translate\" *ngIf=\"item.content?.linked\"\n [routerLink]=\"'/object/' + item.content.id\" [queryParams]=\"{type: item.content.type}\">\n <span>{{'eo.object.contentlink' | translate}}</span>\n </a>\n <eo-icon class=\"subscription-icon\" *ngIf=\"item.subscriptions.length\"\n [iconSrc]=\"'assets/_default/svg/ic_subscription.svg'\" [iconTitle]=\"subscriptionIconTooltip\"></eo-icon>\n <eo-icon class=\"resubmission-icon\" *ngIf=\"item.resubmissions.length\"\n [iconSrc]=\"'assets/_default/svg/ic_resubmission.svg'\"\n [iconTitle]=\"'eo.object.resubmission.tooltip' | translate: {due: item.resubmissions[0].due | localeDate, info: item.resubmissions[0].info}\"></eo-icon>\n <eo-icon class=\"shared-icon\" *ngIf=\"item.additionalvisibility.length && !recyclebinTabs\"\n [iconSrc]=\"'assets/_default/svg/ic_share.svg'\"\n [iconTitle]=\"'eo.object.shared.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"lock\" [ngClass]=\"{'myLock': item.lock.by.me}\" *ngIf=\"item.lock\"\n [iconSrc]=\"'assets/_default/svg/ic_lock.svg'\" [iconTitle]=\"lockTooltip\"></eo-icon>\n <eo-icon class=\"finalized-icon\" *ngIf=\"item.isFinalized\" [iconSrc]=\"'assets/_default/svg/ic_finalized.svg'\"\n [iconTitle]=\"'eo.object.finalized.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon inprocess\" *ngIf=\"item.data?.yuvsigstatus === 'inprocess'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.inprocess' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon signed\" *ngIf=\"item.data?.yuvsigstatus === 'signed'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.signed' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon stopped\"\n *ngIf=\"item.data?.yuvsigstatus === 'canceled'\n || item.data?.yuvsigstatus === 'revised' || item.data?.yuvsigstatus === 'error' || item.data?.yuvsigstatus === 'expired'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.stopped' | translate\"></eo-icon>\n @if (item.processcount > 0) {\n <eo-icon class=\"resubmission-icon\"\n [iconSrc]=\"'assets/_default/svg/ic_bpm.svg'\"\n [iconTitle]=\"'eo.object.processcount.tooltip' | translate : {processcount: item?.processcount, text: processTooltip}\"></eo-icon>\n }\n </div>\n </div>\n </header>\n </div>\n <div class=\"eo-body\">\n\n <yvc-split-tabs [layoutSettingsID]=\"layoutSettingsID\" [config]=\"splitTabConfig\" *ngIf=\"!item2; else tplCompare\">\n <!-- summary -->\n <ng-template [yvcTab]=\"{id: 'summary', label: 'eo.object.summary.title' | translate}\">\n <eo-indexdata-summary [indexdata]=\"indexDataPreview\" [baseparams]=\"baseparams\" [dmsObject]=\"item\"\n [enableVersions]=\"!enableCompare\"></eo-indexdata-summary>\n </ng-template>\n <!-- metadata -->\n <ng-template [yvcTab]=\"{id: 'indexdata', label: 'eo.object.indexdata.title' | translate}\">\n <eo-object-form-edit [dmsObject]=\"item\" (indexDataSaved)=\"onIndexDataSaved($event, item)\"\n [formDisabled]=\"enableCompare\"></eo-object-form-edit>\n </ng-template>\n <!-- preview -->\n <ng-template [yvcTab]=\"{id: 'preview', label: 'eo.object.content.title' | translate}\">\n <eo-media [useVersion]=\"item.id === item.content?.id\" [searchTerm]=\"searchTerm\" [dmsObject]=\"item\" (hasContentLoaded)=\"hasContentLoaded()\"\n #viewer></eo-media>\n </ng-template>\n <!-- history -->\n <ng-template [yvcTab]=\"{id: 'history', label: 'eo.object.history.title' | translate}\">\n <eo-object-history [params]=\"{id: item.id, type: item.type?.qname}\">\n </eo-object-history>\n </ng-template>\n <!-- links -->\n <ng-template [yvcTab]=\"{id: 'links', label: 'eo.object.links.title' | translate}\">\n <eo-object-links [dmsObject]=\"item\"></eo-object-links>\n </ng-template>\n <!-- signature -->\n <ng-template [yvcTab]=\"{id: 'signature', label: 'eo.object.signature-tab.title' | translate}\">\n <eo-signature-tab [dmsObject]=\"item\"></eo-signature-tab>\n </ng-template>\n\n <!-- plugin tabs -->\n <ng-template *ngFor=\"let p of plugins\" [yvcTab]=\"{id: p.id, label: p.id | translate}\">\n <eo-plugin [id]=\"p.id\" [parent]=\"this\"></eo-plugin>\n </ng-template>\n\n </yvc-split-tabs>\n\n <ng-template #tplCompare>\n <yvc-split-view>\n <ng-template yvcSplitArea [size]=\"50\">\n\n <div class=\"cmp-wrapper\">\n <div class=\"cmp-info\">\n <div class=\"version\">{{'eo.versions.details.label' | translate}}<span>{{item.version}}</span></div>\n </div>\n <ng-container\n *ngTemplateOutlet=\"tplTabs; context: {item, baseparams, indexdata: indexDataPreview, searchTerm}\"></ng-container>\n </div>\n\n </ng-template>\n <ng-template yvcSplitArea [size]=\"50\">\n\n <div class=\"cmp-wrapper\">\n <div class=\"cmp-info\">\n <div class=\"version\">{{'eo.versions.details.label' | translate}}<span>{{item2.version}}</span></div>\n </div>\n <ng-container\n *ngTemplateOutlet=\"tplTabs; context: {item: item2, baseparams: baseparams2, indexdata: indexDataPreview2, searchTerm, diff: {baseparams, baseparams2, indexdata: indexDataPreview, indexdata2: indexDataPreview2}}\"></ng-container>\n </div>\n </ng-template>\n\n </yvc-split-view>\n </ng-template>\n\n <ng-template #tplTabs let-item=\"item\" let-indexdata=\"indexdata\" let-baseparams=\"baseparams\"\n let-searchTerm=\"searchTerm\" let-diff=\"diff\">\n <yvc-tabs (tabChange)=\"onCompareTabChange($event)\" layoutSettingsID=\"{{'eo.object.details.compare.tabs' + (diff ? '.0' : '.1')}}\">\n <!-- summary -->\n <ng-template [yvcTab]=\"{id: 'summary', label: 'eo.object.summary.title' | translate}\">\n <eo-indexdata-summary [indexdata]=\"indexdata\" [baseparams]=\"baseparams\" [dmsObject]=\"item\"></eo-indexdata-summary>\n </ng-template>\n <!-- metadata -->\n <ng-template [yvcTab]=\"{id: 'indexdata', label: 'eo.object.indexdata.title' | translate}\">\n <eo-object-form-edit [dmsObject]=\"item\" (indexDataSaved)=\"onIndexDataSaved($event, item)\" [formDisabled]=\"enableCompare\"></eo-object-form-edit>\n </ng-template>\n @if (!item?.isFolder){\n <!-- preview -->\n <ng-template [yvcTab]=\"{id: 'preview', label: 'eo.object.content.title' | translate}\">\n <eo-media [useVersion]=\"true\" [searchTerm]=\"searchTerm\" [dmsObject]=\"item\" #viewer></eo-media>\n </ng-template>\n <!-- signature -->\n @if (capabilities.signing){\n <ng-template [yvcTab]=\"{id: 'signature', label: 'eo.object.signature-tab.title' | translate}\">\n <eo-signature-tab [dmsObject]=\"item\"></eo-signature-tab>\n </ng-template>\n }\n }\n <!-- changes -->\n <ng-template *ngIf=\"diff\"\n [yvcTab]=\"{id: 'changes', label: 'eo.object.changes.title' | translate}\">\n <eo-indexdata-summary [diff]=\"diff\" [enableVersions]=\"false\" [isChangesTab]=\"versionComponentTabs\" [dmsObject]=\"item\"></eo-indexdata-summary>\n </ng-template>\n\n\n </yvc-tabs>\n </ng-template>\n\n </div>\n</ng-container>\n\n<ng-template #noItem>\n <span class=\"not-found\" *ngIf=\"nodmsobject\" translate>eo.bpm.nodmsobject</span>\n <eo-error-message *ngIf=\"!showLoader\"\n [emptyState]=\"{icon: emptyState.icon, text: emptyState.text, className: emptyState.className}\">\n <ng-content select=\".error\"></ng-content>\n </eo-error-message>\n</ng-template>\n", styles: [":host{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;background:var(--panel-background-grey);height:100%;overflow-y:auto;--panel-divider-color: var(--panel-header-border-bottom-color)}:host .eo-head .eo-header .eo-header-info .eo-header-title,:host .eo-head .eo-header .eo-header-info .eo-header-subtitle{-webkit-user-select:text;user-select:text}:host .eo-body{background-color:var(--panel-background)}:host .eo-body__not-available{opacity:.4;background:rgba(var(--color-black-rgb),.4)}:host .eo-body .cmp-wrapper{height:100%;flex-flow:column;display:flex}:host .eo-body .cmp-wrapper .cmp-info{background-color:var(--panel-background);padding:2px}:host .eo-body .cmp-wrapper .cmp-info .version{margin:2px;border-radius:2px;background-color:var(--panel-background-lightgrey);border:1px dashed var(--panel-divider-color);color:var(--text-color-caption);text-align:center}:host .eo-body .cmp-wrapper .cmp-info .version>span{margin-inline-start:.5em;font-weight:700}:host .eo-body yvc-split-view,:host .eo-body yvc-split-tabs{height:100%}:host .sync-tab-btn.enabled{color:var(--color-accent)}:host .sync-tab-btn.disable{display:none}:host .lock{background:var(--color-error)!important;color:var(--color-white);width:18px;height:18px;border-radius:2px;padding:1px}:host .lock.myLock{color:var(--color-white);background:var(--state-orange)!important}:host .not-found{color:var(--panel-background);text-align:center;margin:calc(var(--app-pane-padding) / 2);padding:calc(var(--app-pane-padding) / 4);border-radius:2px;flex:0 0 auto;background:var(--color-error)}:host .eo-header-status-icons{margin-top:var(--app-pane-padding);display:flex;justify-content:flex-end}:host .eo-header-status-icons>eo-icon{width:18px;height:18px;padding:calc(var(--app-pane-padding) / 4);color:var(--color-white);margin-left:1px;background-color:var(--color-primary-2)}:host .eo-header-status-icons>eo-icon:first-child{border-top-left-radius:4px;border-bottom-left-radius:4px}:host .eo-header-status-icons>eo-icon:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}:host .eo-header-status-icons>eo-icon.finalized-icon{background-color:var(--color-success)}:host .eo-header-status-icons>eo-icon.signed-icon.inprocess{background-color:var(--color-light-gray)}:host .eo-header-status-icons>eo-icon.signed-icon.signed{background-color:var(--color-success)}:host .eo-header-status-icons>eo-icon.signed-icon.stopped{background-color:var(--color-error)}:host .eo-header-status-icons>a{margin:0 calc(var(--app-pane-padding) / 4);display:flex;align-items:center;color:var(--color-white);font-size:var(--font-hint);line-height:var(--font-hint);border-radius:2px;padding:0 4px 1px;text-decoration:none;background-color:var(--color-success)}:host .loader-overlay__mask{display:flex;width:100%;height:100%;z-index:11;position:absolute;background:rgba(var(--color-white-rgb),.8);-webkit-animation:eoFadeIn .5s;animation:eoFadeIn .5s}:host .loader-overlay__mask .object-detail__loader{margin:auto}:host ::ng-deep yvc-tabs{flex:1;height:100%}:host ::ng-deep yvc-tabs>header{background-color:var(--panel-background)}:host ::ng-deep .yvc-split-area{background-color:var(--panel-background-grey)}:host ::ng-deep .indexdata-summary,:host ::ng-deep .object-form-edit{margin:var(--app-pane-padding)}:host ::ng-deep eo-media{height:100%;overflow:hidden;display:block}:host ::ng-deep .object-form-edit{position:relative;height:100%;margin:0;overflow:hidden;background:transparent!important}:host ::ng-deep .object-form-edit eo-object-form{background:transparent;overflow:auto}:host ::ng-deep .object-form-edit eo-object-form .eo-object-form{margin:var(--app-pane-padding);background:var(--panel-background);border:1px solid rgba(var(--color-black-rgb),.1)}:host ::ng-deep .object-form-edit .form-controls{animation:eoFadeInUp .2s}:host ::ng-deep .object-form-edit .form-controls .buttons{background:var(--panel-background);border-top:1px solid var(--panel-divider-color);padding:calc(var(--app-pane-padding) / 2) var(--app-pane-padding)!important}:host ::ng-deep .refresh-button.disable-refresh{cursor:default;color:var(--color-primary-3)}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i8.ObjectFormEditComponent, selector: "eo-object-form-edit", inputs: ["formDisabled", "dmsObject"], outputs: ["indexDataSaved"] }, { kind: "component", type: i9.MediaComponent, selector: "eo-media", inputs: ["undockDisabled", "enableCloseBtn", "useVersion", "attachments", "searchTerm", "previewUri", "previewFile", "dmsObject"], outputs: ["hasContentLoaded"] }, { kind: "directive", type: i10.ShortcutsDirective, selector: "[eoShortcuts]", inputs: ["eoShortcuts"] }, { kind: "directive", type: i11.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i12.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "directive", type: i13.RouterLinkDirective, selector: "a[routerLink]" }, { kind: "component", type: i14.LoadingSpinnerComponent, selector: "eo-loading-spinner", inputs: ["size", "mode"] }, { kind: "component", type: i15.IndexdataSummaryComponent, selector: "eo-indexdata-summary", inputs: ["baseparams", "enableVersions", "isChangesTab", "indexdata", "dmsObject", "diff"] }, { kind: "component", type: i16.ErrorMessageComponent, selector: "eo-error-message", inputs: ["emptyState"] }, { kind: "component", type: i17.SignatureTabComponent, selector: "eo-signature-tab", inputs: ["dmsObject"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i18.Tabs, selector: "yvc-tabs", inputs: ["tabs", "layoutSettingsID", "panelOrder", "panelOrderIncludeUnmentioned", "cacheViews", "tabSplitEnabled", "tabRemoveEnabled"], outputs: ["tabSplit", "tabRemove", "tabChange"] }, { kind: "directive", type: i18.YvcTabDirective, selector: "[yvcTab]", inputs: ["yvcTab"] }, { kind: "component", type: i19.SplitTabsComponent, selector: "yvc-split-tabs", inputs: ["layoutSettingsID", "config", "panelOrder"], outputs: ["layoutSettingsChange"] }, { kind: "component", type: i20.SplitViewComponent, selector: "yvc-split-view", inputs: ["direction", "gutterSize", "restrictMove", "disabled", "gutterDblClickDuration", "layoutSettingsID"], outputs: ["layoutSettingsChange", "dragStart", "dragEnd", "gutterClick", "gutterDblClick"] }, { kind: "directive", type: i20.SplitAreaDirective, selector: "[yvcSplitArea]", inputs: ["size", "order", "minSize", "maxSize", "panelClass", "visible"] }, { kind: "component", type: i21.PluginComponent, selector: "eo-plugin", inputs: ["type", "id", "parent"] }, { kind: "component", type: i22.ObjectHistoryComponent, selector: "eo-object-history", inputs: ["params"] }, { kind: "component", type: i23.ObjectLinksComponent, selector: "eo-object-links", inputs: ["dmsObject"] }, { kind: "component", type: i24.FavoriteIconComponent, selector: "eo-favorite-icon", inputs: ["item"] }, { kind: "component", type: i25.EditIconComponent, selector: "eo-edit-icon", inputs: ["item"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }, { kind: "pipe", type: i11.TranslatePipe, name: "translate" }, { kind: "pipe", type: i26.LocaleDatePipe, name: "localeDate" }] }); }
|
|
470
470
|
};
|
|
471
471
|
ObjectDetailsComponent = __decorate([
|
|
472
472
|
UntilDestroy()
|
|
@@ -474,7 +474,7 @@ ObjectDetailsComponent = __decorate([
|
|
|
474
474
|
export { ObjectDetailsComponent };
|
|
475
475
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: ObjectDetailsComponent, decorators: [{
|
|
476
476
|
type: Component,
|
|
477
|
-
args: [{ selector: 'eo-object-details', providers: [ContentPreviewService], template: "<div class=\"loader-overlay__mask\" *ngIf=\"showLoader\">\n <eo-loading-spinner class=\"object-detail__loader\"></eo-loading-spinner>\n</div>\n<ng-container *ngIf=\"item && !hasError; else noItem\">\n\n <div class=\"eo-head eo-head-tabs\" [eoShortcuts]=\"shortcuts\">\n <header class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\" [objectType]=\"item.type\" [iconTitle]=\"item.type.label\"></eo-icon>\n <div class=\"eo-header-info\">\n <h2 class=\"eo-header-title\">{{item.title}}</h2>\n <h3 class=\"eo-header-subtitle\">{{item.description}}</h3>\n </div>\n\n <div class=\"eo-header-actions-container\">\n <div class=\"eo-header-actions\">\n <ng-container>\n <eo-icon class=\"button refresh-button\" *ngIf=\"!recyclebinTabs\"\n [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\" [iconTitle]=\"('eo.list.refresh' | translate)\"\n [ngClass]=\"{'disable-refresh': preventClickThrough}\" (click)=\"refreshContent()\"></eo-icon>\n <eo-icon class=\"button sync-tab-btn\" *ngIf=\"enableCompare && !recyclebinTabs\"\n [ngClass]=\"{'enabled': onEnableSync,'disable': !enableSync}\" [iconSrc]=\"'assets/_default/svg/ic_link.svg'\"\n [iconTitle]=\"'eo.versions.detail.glue.tooltip' | translate\" (click)=\"onEnableSync = !onEnableSync\"></eo-icon>\n <eo-favorite-icon [item]=\"item\"\n *ngIf=\"!enableCompare && !recyclebinTabs && capabilities.favorites && !isJournalObject(item)\">\n </eo-favorite-icon>\n <eo-icon class=\"button oc-button\" *ngIf=\"downloadAllowed && !enableCompare && item.content?.id\" (click)=\"downloadOriginalContent()\"\n [iconTitle]=\"('eo.action.download.dms.object.content.label' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_content-download.svg'\"></eo-icon>\n <eo-edit-icon [item]=\"item\"\n *ngIf=\"!enableCompare && !recyclebinTabs && item.content?.id && item.rights.edit && (agentIsConnected$ | async)\n && !item.isFinalized && item.data.yuvsigstatus !== 'signed' && item.data.yuvsigstatus !== 'inprocess' && !item.lock\">\n </eo-edit-icon>\n <eo-icon class=\"button am-button\" *ngIf=\"!recyclebinTabs\" (click)=\"showActions()\"\n [iconTitle]=\"('eo.object.details.actions.title' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_more.svg'\"></eo-icon>\n </ng-container>\n\n </div>\n\n <div class=\"eo-header-status-icons\">\n <a class=\"content-link\" [title]=\"'eo.object.contentlink.tooltip' | translate\" *ngIf=\"item.content?.linked\"\n [routerLink]=\"'/object/' + item.content.id\" [queryParams]=\"{type: item.content.type}\">\n <span>{{'eo.object.contentlink' | translate}}</span>\n </a>\n <eo-icon class=\"subscription-icon\" *ngIf=\"item.subscriptions.length\"\n [iconSrc]=\"'assets/_default/svg/ic_subscription.svg'\" [iconTitle]=\"subscriptionIconTooltip\"></eo-icon>\n <eo-icon class=\"resubmission-icon\" *ngIf=\"item.resubmissions.length\"\n [iconSrc]=\"'assets/_default/svg/ic_resubmission.svg'\"\n [iconTitle]=\"'eo.object.resubmission.tooltip' | translate: {due: item.resubmissions[0].due | localeDate, info: item.resubmissions[0].info}\"></eo-icon>\n <eo-icon class=\"shared-icon\" *ngIf=\"item.additionalvisibility.length && !recyclebinTabs\"\n [iconSrc]=\"'assets/_default/svg/ic_share.svg'\"\n [iconTitle]=\"'eo.object.shared.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"lock\" [ngClass]=\"{'myLock': item.lock.by.me}\" *ngIf=\"item.lock\"\n [iconSrc]=\"'assets/_default/svg/ic_lock.svg'\" [iconTitle]=\"lockTooltip\"></eo-icon>\n <eo-icon class=\"finalized-icon\" *ngIf=\"item.isFinalized\" [iconSrc]=\"'assets/_default/svg/ic_finalized.svg'\"\n [iconTitle]=\"'eo.object.finalized.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon inprocess\" *ngIf=\"item.data?.yuvsigstatus === 'inprocess'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.inprocess' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon signed\" *ngIf=\"item.data?.yuvsigstatus === 'signed'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.signed' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon stopped\"\n *ngIf=\"item.data?.yuvsigstatus === 'canceled'\n || item.data?.yuvsigstatus === 'revised' || item.data?.yuvsigstatus === 'error' || item.data?.yuvsigstatus === 'expired'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.stopped' | translate\"></eo-icon>\n @if (item.processcount > 0) {\n <eo-icon class=\"resubmission-icon\"\n [iconSrc]=\"'assets/_default/svg/ic_bpm.svg'\"\n [iconTitle]=\"'eo.object.processcount.tooltip' | translate : {processcount: item?.processcount, text: processTooltip}\"></eo-icon>\n }\n </div>\n </div>\n </header>\n </div>\n <div class=\"eo-body\">\n\n <yvc-split-tabs [layoutSettingsID]=\"layoutSettingsID\" [config]=\"splitTabConfig\" *ngIf=\"!item2; else tplCompare\">\n <!-- summary -->\n <ng-template [yvcTab]=\"{id: 'summary', label: 'eo.object.summary.title' | translate}\">\n <eo-indexdata-summary [indexdata]=\"indexDataPreview\" [baseparams]=\"baseparams\" [dmsObject]=\"item\"\n [enableVersions]=\"!enableCompare\"></eo-indexdata-summary>\n </ng-template>\n <!-- metadata -->\n <ng-template [yvcTab]=\"{id: 'indexdata', label: 'eo.object.indexdata.title' | translate}\">\n <eo-object-form-edit [dmsObject]=\"item\" (indexDataSaved)=\"onIndexDataSaved($event, item)\"\n [formDisabled]=\"enableCompare\"></eo-object-form-edit>\n </ng-template>\n <!-- preview -->\n <ng-template [yvcTab]=\"{id: 'preview', label: 'eo.object.content.title' | translate}\">\n <eo-media [useVersion]=\"item.id === item.content?.id\" [searchTerm]=\"searchTerm\" [dmsObject]=\"item\" (hasContentLoaded)=\"hasContentLoaded()\"\n #viewer></eo-media>\n </ng-template>\n <!-- history -->\n <ng-template [yvcTab]=\"{id: 'history', label: 'eo.object.history.title' | translate}\">\n <eo-object-history [params]=\"{id: item.id, type: item.type?.qname}\">\n </eo-object-history>\n </ng-template>\n <!-- links -->\n <ng-template [yvcTab]=\"{id: 'links', label: 'eo.object.links.title' | translate}\">\n <eo-object-links [dmsObject]=\"item\"></eo-object-links>\n </ng-template>\n <!-- signature -->\n <ng-template [yvcTab]=\"{id: 'signature', label: 'eo.object.signature-tab.title' | translate}\">\n <eo-signature-tab [dmsObject]=\"item\"></eo-signature-tab>\n </ng-template>\n\n <!-- plugin tabs -->\n <ng-template *ngFor=\"let p of plugins\" [yvcTab]=\"{id: p.id, label: p.id | translate}\">\n <eo-plugin [id]=\"p.id\" [parent]=\"this\"></eo-plugin>\n </ng-template>\n\n </yvc-split-tabs>\n\n <ng-template #tplCompare>\n <yvc-split-view>\n <ng-template yvcSplitArea [size]=\"50\">\n\n <div class=\"cmp-wrapper\">\n <div class=\"cmp-info\">\n <div class=\"version\">{{'eo.versions.details.label' | translate}}<span>{{item.version}}</span></div>\n </div>\n <ng-container\n *ngTemplateOutlet=\"tplTabs; context: {item, baseparams, indexdata: indexDataPreview, searchTerm}\"></ng-container>\n </div>\n\n </ng-template>\n <ng-template yvcSplitArea [size]=\"50\">\n\n <div class=\"cmp-wrapper\">\n <div class=\"cmp-info\">\n <div class=\"version\">{{'eo.versions.details.label' | translate}}<span>{{item2.version}}</span></div>\n </div>\n <ng-container\n *ngTemplateOutlet=\"tplTabs; context: {item: item2, baseparams: baseparams2, indexdata: indexDataPreview2, searchTerm, diff: {baseparams, baseparams2, indexdata: indexDataPreview, indexdata2: indexDataPreview2}}\"></ng-container>\n </div>\n </ng-template>\n\n </yvc-split-view>\n </ng-template>\n\n <ng-template #tplTabs let-item=\"item\" let-indexdata=\"indexdata\" let-baseparams=\"baseparams\"\n let-searchTerm=\"searchTerm\" let-diff=\"diff\">\n <yvc-tabs (tabChange)=\"onCompareTabChange($event)\" layoutSettingsID=\"{{'eo.object.details.compare.tabs' + (diff ? '.0' : '.1')}}\">\n <!-- summary -->\n <ng-template [yvcTab]=\"{id: 'summary', label: 'eo.object.summary.title' | translate}\">\n <eo-indexdata-summary [indexdata]=\"indexdata\" [baseparams]=\"baseparams\" [dmsObject]=\"item\"></eo-indexdata-summary>\n </ng-template>\n <!-- metadata -->\n <ng-template [yvcTab]=\"{id: 'indexdata', label: 'eo.object.indexdata.title' | translate}\">\n <eo-object-form-edit [dmsObject]=\"item\" (indexDataSaved)=\"onIndexDataSaved($event, item)\" [formDisabled]=\"enableCompare\"></eo-object-form-edit>\n </ng-template>\n @if (!item?.isFolder){\n <!-- preview -->\n <ng-template [yvcTab]=\"{id: 'preview', label: 'eo.object.content.title' | translate}\">\n <eo-media [useVersion]=\"true\" [searchTerm]=\"searchTerm\" [dmsObject]=\"item\" #viewer></eo-media>\n </ng-template>\n <!-- signature -->\n @if (capabilities.signing){\n <ng-template [yvcTab]=\"{id: 'signature', label: 'eo.object.signature-tab.title' | translate}\">\n <eo-signature-tab [dmsObject]=\"item\"></eo-signature-tab>\n </ng-template>\n }\n }\n <!-- changes -->\n <ng-template *ngIf=\"diff\"\n [yvcTab]=\"{id: 'changes', label: 'eo.object.changes.title' | translate}\">\n <eo-indexdata-summary [diff]=\"diff\" [enableVersions]=\"false\" [isChangesTab]=\"versionComponentTabs\" [dmsObject]=\"item\"></eo-indexdata-summary>\n </ng-template>\n\n\n </yvc-tabs>\n </ng-template>\n\n </div>\n</ng-container>\n\n<ng-template #noItem>\n <span class=\"not-found\" *ngIf=\"nodmsobject\" translate>eo.bpm.nodmsobject</span>\n <eo-error-message *ngIf=\"!showLoader\"\n [emptyState]=\"{icon: emptyState.icon, text: emptyState.text, className: emptyState.className}\">\n <ng-content select=\".error\"></ng-content>\n </eo-error-message>\n</ng-template>\n", styles: [":host{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;background:var(--panel-background-grey);height:100%;overflow-y:auto;--panel-divider-color: var(--panel-header-border-bottom-color)}:host .eo-head .eo-header .eo-header-info .eo-header-title,:host .eo-head .eo-header .eo-header-info .eo-header-subtitle{-webkit-user-select:text;user-select:text}:host .eo-body{background-color:var(--panel-background)}:host .eo-body__not-available{opacity:.4;background:rgba(var(--color-black-rgb),.4)}:host .eo-body .cmp-wrapper{height:100%;flex-flow:column;display:flex}:host .eo-body .cmp-wrapper .cmp-info{background-color:var(--panel-background);padding:2px}:host .eo-body .cmp-wrapper .cmp-info .version{margin:2px;border-radius:2px;background-color:var(--panel-background-lightgrey);border:1px dashed var(--panel-divider-color);color:var(--text-color-caption);text-align:center}:host .eo-body .cmp-wrapper .cmp-info .version>span{margin-inline-start:.5em;font-weight:700}:host .eo-body yvc-split-view,:host .eo-body yvc-split-tabs{height:100%}:host .sync-tab-btn.enabled{color:var(--color-accent)}:host .sync-tab-btn.disable{display:none}:host .lock{background:var(--color-error)!important;color:var(--color-white);width:18px;height:18px;border-radius:2px;padding:1px}:host .lock.myLock{color:var(--color-white);background:var(--state-orange)!important}:host .not-found{color:var(--panel-background);text-align:center;margin:calc(var(--app-pane-padding) / 2);padding:calc(var(--app-pane-padding) / 4);border-radius:2px;flex:0 0 auto;background:var(--color-error)}:host .eo-header-status-icons{margin-top:var(--app-pane-padding);display:flex;justify-content:flex-end}:host .eo-header-status-icons>eo-icon{width:18px;height:18px;padding:calc(var(--app-pane-padding) / 4);color:var(--color-white);margin-left:1px;background-color:var(--color-primary-2)}:host .eo-header-status-icons>eo-icon:first-child{border-top-left-radius:4px;border-bottom-left-radius:4px}:host .eo-header-status-icons>eo-icon:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}:host .eo-header-status-icons>eo-icon.finalized-icon{background-color:var(--color-success)}:host .eo-header-status-icons>eo-icon.signed-icon.inprocess{background-color:var(--color-light-gray)}:host .eo-header-status-icons>eo-icon.signed-icon.signed{background-color:var(--color-success)}:host .eo-header-status-icons>eo-icon.signed-icon.stopped{background-color:var(--color-error)}:host .eo-header-status-icons>a{margin:0 calc(var(--app-pane-padding) / 4);display:flex;align-items:center;color:var(--color-white);font-size:var(--font-hint);line-height:var(--font-hint);border-radius:2px;padding:0 4px 1px;text-decoration:none;background-color:var(--color-success)}:host .loader-overlay__mask{display:flex;width:100%;height:100%;z-index:11;position:absolute;background:rgba(var(--color-white-rgb),.8);-webkit-animation:eoFadeIn .5s;animation:eoFadeIn .5s}:host .loader-overlay__mask .object-detail__loader{margin:auto}:host ::ng-deep yvc-tabs{flex:1;height:100%}:host ::ng-deep yvc-tabs>header{background-color:var(--panel-background)}:host ::ng-deep .yvc-split-area{background-color:var(--panel-background-grey)}:host ::ng-deep .indexdata-summary,:host ::ng-deep .object-form-edit{margin:var(--app-pane-padding)}:host ::ng-deep eo-media{height:100%;overflow:hidden;display:block}:host ::ng-deep .object-form-edit{position:relative;height:100%;margin:0;overflow:hidden;background:transparent!important}:host ::ng-deep .object-form-edit eo-object-form{background:transparent;overflow:auto}:host ::ng-deep .object-form-edit eo-object-form .eo-object-form{margin:var(--app-pane-padding);background:var(--panel-background);border:1px solid rgba(var(--color-black-rgb),.1)}:host ::ng-deep .object-form-edit .form-controls{animation:eoFadeInUp .2s}:host ::ng-deep .object-form-edit .form-controls .buttons{background:var(--panel-background);border-top:1px solid var(--panel-divider-color);padding:calc(var(--app-pane-padding) / 2) var(--app-pane-padding)!important}:host ::ng-deep .refresh-button.disable-refresh{cursor:default;color:var(--color-primary-3)}\n"] }]
|
|
477
|
+
args: [{ selector: 'eo-object-details', providers: [ContentPreviewService], template: "<div class=\"loader-overlay__mask\" *ngIf=\"showLoader\">\n <eo-loading-spinner class=\"object-detail__loader\"></eo-loading-spinner>\n</div>\n<ng-container *ngIf=\"item && !hasError; else noItem\">\n\n <div class=\"eo-head eo-head-tabs\" [eoShortcuts]=\"shortcuts\">\n <header class=\"eo-header\">\n <eo-icon class=\"eo-header-icon\" [objectType]=\"item.type\" [iconTitle]=\"item.type.label\"></eo-icon>\n <div class=\"eo-header-info\">\n <h2 class=\"eo-header-title\">{{item.title}}</h2>\n <h3 class=\"eo-header-subtitle\">{{item.description}}</h3>\n </div>\n\n <div class=\"eo-header-actions-container\">\n <div class=\"eo-header-actions\">\n <ng-container>\n <eo-icon class=\"button refresh-button\" *ngIf=\"!recyclebinTabs\"\n [iconSrc]=\"'assets/_default/svg/ic_refresh.svg'\" [iconTitle]=\"('eo.list.refresh' | translate)\"\n [ngClass]=\"{'disable-refresh': preventClickThrough}\" (click)=\"refreshContent()\"></eo-icon>\n <eo-icon class=\"button sync-tab-btn\" *ngIf=\"enableCompare && !recyclebinTabs\"\n [ngClass]=\"{'enabled': onEnableSync,'disable': !enableSync}\" [iconSrc]=\"'assets/_default/svg/ic_link.svg'\"\n [iconTitle]=\"'eo.versions.detail.glue.tooltip' | translate\" (click)=\"onEnableSync = !onEnableSync\"></eo-icon>\n <eo-favorite-icon [item]=\"item\"\n *ngIf=\"!enableCompare && !recyclebinTabs && capabilities.favorites && !isJournalObject(item)\">\n </eo-favorite-icon>\n <eo-icon class=\"button oc-button\" *ngIf=\"downloadAllowed && !enableCompare && item.content?.id\" (click)=\"downloadOriginalContent()\"\n [iconTitle]=\"('eo.action.download.dms.object.content.label' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_content-download.svg'\"></eo-icon>\n <eo-edit-icon [item]=\"item\"\n *ngIf=\"!enableCompare && !recyclebinTabs && item.content?.id && item.rights.edit && (agentIsConnected$ | async)\n && !item.isFinalized && item.data?.yuvsigstatus !== 'signed' && item.data?.yuvsigstatus !== 'inprocess' && !item.lock\">\n </eo-edit-icon>\n <eo-icon class=\"button am-button\" *ngIf=\"!recyclebinTabs\" (click)=\"showActions()\"\n [iconTitle]=\"('eo.object.details.actions.title' | translate)\"\n [iconSrc]=\"'assets/_default/svg/ic_more.svg'\"></eo-icon>\n </ng-container>\n\n </div>\n\n <div class=\"eo-header-status-icons\">\n <a class=\"content-link\" [title]=\"'eo.object.contentlink.tooltip' | translate\" *ngIf=\"item.content?.linked\"\n [routerLink]=\"'/object/' + item.content.id\" [queryParams]=\"{type: item.content.type}\">\n <span>{{'eo.object.contentlink' | translate}}</span>\n </a>\n <eo-icon class=\"subscription-icon\" *ngIf=\"item.subscriptions.length\"\n [iconSrc]=\"'assets/_default/svg/ic_subscription.svg'\" [iconTitle]=\"subscriptionIconTooltip\"></eo-icon>\n <eo-icon class=\"resubmission-icon\" *ngIf=\"item.resubmissions.length\"\n [iconSrc]=\"'assets/_default/svg/ic_resubmission.svg'\"\n [iconTitle]=\"'eo.object.resubmission.tooltip' | translate: {due: item.resubmissions[0].due | localeDate, info: item.resubmissions[0].info}\"></eo-icon>\n <eo-icon class=\"shared-icon\" *ngIf=\"item.additionalvisibility.length && !recyclebinTabs\"\n [iconSrc]=\"'assets/_default/svg/ic_share.svg'\"\n [iconTitle]=\"'eo.object.shared.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"lock\" [ngClass]=\"{'myLock': item.lock.by.me}\" *ngIf=\"item.lock\"\n [iconSrc]=\"'assets/_default/svg/ic_lock.svg'\" [iconTitle]=\"lockTooltip\"></eo-icon>\n <eo-icon class=\"finalized-icon\" *ngIf=\"item.isFinalized\" [iconSrc]=\"'assets/_default/svg/ic_finalized.svg'\"\n [iconTitle]=\"'eo.object.finalized.tooltip' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon inprocess\" *ngIf=\"item.data?.yuvsigstatus === 'inprocess'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.inprocess' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon signed\" *ngIf=\"item.data?.yuvsigstatus === 'signed'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.signed' | translate\"></eo-icon>\n <eo-icon class=\"signed-icon stopped\"\n *ngIf=\"item.data?.yuvsigstatus === 'canceled'\n || item.data?.yuvsigstatus === 'revised' || item.data?.yuvsigstatus === 'error' || item.data?.yuvsigstatus === 'expired'\"\n [iconSrc]=\"'assets/_default/svg/ic_signature.svg'\"\n [iconTitle]=\"'eo.object.signature.tooltip.stopped' | translate\"></eo-icon>\n @if (item.processcount > 0) {\n <eo-icon class=\"resubmission-icon\"\n [iconSrc]=\"'assets/_default/svg/ic_bpm.svg'\"\n [iconTitle]=\"'eo.object.processcount.tooltip' | translate : {processcount: item?.processcount, text: processTooltip}\"></eo-icon>\n }\n </div>\n </div>\n </header>\n </div>\n <div class=\"eo-body\">\n\n <yvc-split-tabs [layoutSettingsID]=\"layoutSettingsID\" [config]=\"splitTabConfig\" *ngIf=\"!item2; else tplCompare\">\n <!-- summary -->\n <ng-template [yvcTab]=\"{id: 'summary', label: 'eo.object.summary.title' | translate}\">\n <eo-indexdata-summary [indexdata]=\"indexDataPreview\" [baseparams]=\"baseparams\" [dmsObject]=\"item\"\n [enableVersions]=\"!enableCompare\"></eo-indexdata-summary>\n </ng-template>\n <!-- metadata -->\n <ng-template [yvcTab]=\"{id: 'indexdata', label: 'eo.object.indexdata.title' | translate}\">\n <eo-object-form-edit [dmsObject]=\"item\" (indexDataSaved)=\"onIndexDataSaved($event, item)\"\n [formDisabled]=\"enableCompare\"></eo-object-form-edit>\n </ng-template>\n <!-- preview -->\n <ng-template [yvcTab]=\"{id: 'preview', label: 'eo.object.content.title' | translate}\">\n <eo-media [useVersion]=\"item.id === item.content?.id\" [searchTerm]=\"searchTerm\" [dmsObject]=\"item\" (hasContentLoaded)=\"hasContentLoaded()\"\n #viewer></eo-media>\n </ng-template>\n <!-- history -->\n <ng-template [yvcTab]=\"{id: 'history', label: 'eo.object.history.title' | translate}\">\n <eo-object-history [params]=\"{id: item.id, type: item.type?.qname}\">\n </eo-object-history>\n </ng-template>\n <!-- links -->\n <ng-template [yvcTab]=\"{id: 'links', label: 'eo.object.links.title' | translate}\">\n <eo-object-links [dmsObject]=\"item\"></eo-object-links>\n </ng-template>\n <!-- signature -->\n <ng-template [yvcTab]=\"{id: 'signature', label: 'eo.object.signature-tab.title' | translate}\">\n <eo-signature-tab [dmsObject]=\"item\"></eo-signature-tab>\n </ng-template>\n\n <!-- plugin tabs -->\n <ng-template *ngFor=\"let p of plugins\" [yvcTab]=\"{id: p.id, label: p.id | translate}\">\n <eo-plugin [id]=\"p.id\" [parent]=\"this\"></eo-plugin>\n </ng-template>\n\n </yvc-split-tabs>\n\n <ng-template #tplCompare>\n <yvc-split-view>\n <ng-template yvcSplitArea [size]=\"50\">\n\n <div class=\"cmp-wrapper\">\n <div class=\"cmp-info\">\n <div class=\"version\">{{'eo.versions.details.label' | translate}}<span>{{item.version}}</span></div>\n </div>\n <ng-container\n *ngTemplateOutlet=\"tplTabs; context: {item, baseparams, indexdata: indexDataPreview, searchTerm}\"></ng-container>\n </div>\n\n </ng-template>\n <ng-template yvcSplitArea [size]=\"50\">\n\n <div class=\"cmp-wrapper\">\n <div class=\"cmp-info\">\n <div class=\"version\">{{'eo.versions.details.label' | translate}}<span>{{item2.version}}</span></div>\n </div>\n <ng-container\n *ngTemplateOutlet=\"tplTabs; context: {item: item2, baseparams: baseparams2, indexdata: indexDataPreview2, searchTerm, diff: {baseparams, baseparams2, indexdata: indexDataPreview, indexdata2: indexDataPreview2}}\"></ng-container>\n </div>\n </ng-template>\n\n </yvc-split-view>\n </ng-template>\n\n <ng-template #tplTabs let-item=\"item\" let-indexdata=\"indexdata\" let-baseparams=\"baseparams\"\n let-searchTerm=\"searchTerm\" let-diff=\"diff\">\n <yvc-tabs (tabChange)=\"onCompareTabChange($event)\" layoutSettingsID=\"{{'eo.object.details.compare.tabs' + (diff ? '.0' : '.1')}}\">\n <!-- summary -->\n <ng-template [yvcTab]=\"{id: 'summary', label: 'eo.object.summary.title' | translate}\">\n <eo-indexdata-summary [indexdata]=\"indexdata\" [baseparams]=\"baseparams\" [dmsObject]=\"item\"></eo-indexdata-summary>\n </ng-template>\n <!-- metadata -->\n <ng-template [yvcTab]=\"{id: 'indexdata', label: 'eo.object.indexdata.title' | translate}\">\n <eo-object-form-edit [dmsObject]=\"item\" (indexDataSaved)=\"onIndexDataSaved($event, item)\" [formDisabled]=\"enableCompare\"></eo-object-form-edit>\n </ng-template>\n @if (!item?.isFolder){\n <!-- preview -->\n <ng-template [yvcTab]=\"{id: 'preview', label: 'eo.object.content.title' | translate}\">\n <eo-media [useVersion]=\"true\" [searchTerm]=\"searchTerm\" [dmsObject]=\"item\" #viewer></eo-media>\n </ng-template>\n <!-- signature -->\n @if (capabilities.signing){\n <ng-template [yvcTab]=\"{id: 'signature', label: 'eo.object.signature-tab.title' | translate}\">\n <eo-signature-tab [dmsObject]=\"item\"></eo-signature-tab>\n </ng-template>\n }\n }\n <!-- changes -->\n <ng-template *ngIf=\"diff\"\n [yvcTab]=\"{id: 'changes', label: 'eo.object.changes.title' | translate}\">\n <eo-indexdata-summary [diff]=\"diff\" [enableVersions]=\"false\" [isChangesTab]=\"versionComponentTabs\" [dmsObject]=\"item\"></eo-indexdata-summary>\n </ng-template>\n\n\n </yvc-tabs>\n </ng-template>\n\n </div>\n</ng-container>\n\n<ng-template #noItem>\n <span class=\"not-found\" *ngIf=\"nodmsobject\" translate>eo.bpm.nodmsobject</span>\n <eo-error-message *ngIf=\"!showLoader\"\n [emptyState]=\"{icon: emptyState.icon, text: emptyState.text, className: emptyState.className}\">\n <ng-content select=\".error\"></ng-content>\n </eo-error-message>\n</ng-template>\n", styles: [":host{display:flex;flex:1;flex-direction:column;min-height:0;min-width:0;background:var(--panel-background-grey);height:100%;overflow-y:auto;--panel-divider-color: var(--panel-header-border-bottom-color)}:host .eo-head .eo-header .eo-header-info .eo-header-title,:host .eo-head .eo-header .eo-header-info .eo-header-subtitle{-webkit-user-select:text;user-select:text}:host .eo-body{background-color:var(--panel-background)}:host .eo-body__not-available{opacity:.4;background:rgba(var(--color-black-rgb),.4)}:host .eo-body .cmp-wrapper{height:100%;flex-flow:column;display:flex}:host .eo-body .cmp-wrapper .cmp-info{background-color:var(--panel-background);padding:2px}:host .eo-body .cmp-wrapper .cmp-info .version{margin:2px;border-radius:2px;background-color:var(--panel-background-lightgrey);border:1px dashed var(--panel-divider-color);color:var(--text-color-caption);text-align:center}:host .eo-body .cmp-wrapper .cmp-info .version>span{margin-inline-start:.5em;font-weight:700}:host .eo-body yvc-split-view,:host .eo-body yvc-split-tabs{height:100%}:host .sync-tab-btn.enabled{color:var(--color-accent)}:host .sync-tab-btn.disable{display:none}:host .lock{background:var(--color-error)!important;color:var(--color-white);width:18px;height:18px;border-radius:2px;padding:1px}:host .lock.myLock{color:var(--color-white);background:var(--state-orange)!important}:host .not-found{color:var(--panel-background);text-align:center;margin:calc(var(--app-pane-padding) / 2);padding:calc(var(--app-pane-padding) / 4);border-radius:2px;flex:0 0 auto;background:var(--color-error)}:host .eo-header-status-icons{margin-top:var(--app-pane-padding);display:flex;justify-content:flex-end}:host .eo-header-status-icons>eo-icon{width:18px;height:18px;padding:calc(var(--app-pane-padding) / 4);color:var(--color-white);margin-left:1px;background-color:var(--color-primary-2)}:host .eo-header-status-icons>eo-icon:first-child{border-top-left-radius:4px;border-bottom-left-radius:4px}:host .eo-header-status-icons>eo-icon:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}:host .eo-header-status-icons>eo-icon.finalized-icon{background-color:var(--color-success)}:host .eo-header-status-icons>eo-icon.signed-icon.inprocess{background-color:var(--color-light-gray)}:host .eo-header-status-icons>eo-icon.signed-icon.signed{background-color:var(--color-success)}:host .eo-header-status-icons>eo-icon.signed-icon.stopped{background-color:var(--color-error)}:host .eo-header-status-icons>a{margin:0 calc(var(--app-pane-padding) / 4);display:flex;align-items:center;color:var(--color-white);font-size:var(--font-hint);line-height:var(--font-hint);border-radius:2px;padding:0 4px 1px;text-decoration:none;background-color:var(--color-success)}:host .loader-overlay__mask{display:flex;width:100%;height:100%;z-index:11;position:absolute;background:rgba(var(--color-white-rgb),.8);-webkit-animation:eoFadeIn .5s;animation:eoFadeIn .5s}:host .loader-overlay__mask .object-detail__loader{margin:auto}:host ::ng-deep yvc-tabs{flex:1;height:100%}:host ::ng-deep yvc-tabs>header{background-color:var(--panel-background)}:host ::ng-deep .yvc-split-area{background-color:var(--panel-background-grey)}:host ::ng-deep .indexdata-summary,:host ::ng-deep .object-form-edit{margin:var(--app-pane-padding)}:host ::ng-deep eo-media{height:100%;overflow:hidden;display:block}:host ::ng-deep .object-form-edit{position:relative;height:100%;margin:0;overflow:hidden;background:transparent!important}:host ::ng-deep .object-form-edit eo-object-form{background:transparent;overflow:auto}:host ::ng-deep .object-form-edit eo-object-form .eo-object-form{margin:var(--app-pane-padding);background:var(--panel-background);border:1px solid rgba(var(--color-black-rgb),.1)}:host ::ng-deep .object-form-edit .form-controls{animation:eoFadeInUp .2s}:host ::ng-deep .object-form-edit .form-controls .buttons{background:var(--panel-background);border-top:1px solid var(--panel-divider-color);padding:calc(var(--app-pane-padding) / 2) var(--app-pane-padding)!important}:host ::ng-deep .refresh-button.disable-refresh{cursor:default;color:var(--color-primary-3)}\n"] }]
|
|
478
478
|
}], ctorParameters: () => [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.SystemService }, { type: i3.EmptyStateService }, { type: i4.AgentService }, { type: i2.BackendService }, { type: i2.DmsService }, { type: i5.SelectionService }, { type: i6.ActionService }, { type: i2.CapabilitiesService }, { type: i2.UploadRegistryService }, { type: i2.EventService }, { type: i2.Config }, { type: i2.BpmService }, { type: i2.TranslateService }, { type: i0.ChangeDetectorRef }, { type: i2.UserService }], propDecorators: { preview: [{
|
|
479
479
|
type: ViewChild,
|
|
480
480
|
args: ['viewer']
|
|
@@ -532,4 +532,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
532
532
|
type: Input,
|
|
533
533
|
args: ['item2']
|
|
534
534
|
}] } });
|
|
535
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWRldGFpbHMvb2JqZWN0LWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWRldGFpbHMvb2JqZWN0LWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsRUFDVCxZQUFZLEVBQ2IsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQVVMLFVBQVUsRUFFVixnQkFBZ0IsRUFJaEIsWUFBWSxFQUVaLEtBQUssR0FDTixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQWEsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBQyxHQUFHLEVBQUUsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFakQsT0FBTyxFQUFDLFlBQVksRUFBRSxjQUFjLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUduRSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQUMxRixPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFHOUUsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFHdkUsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBRXpELE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsa0JBQWtCLEVBQTBCLE1BQU0sK0JBQStCLENBQUM7QUFDMUYsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0seUNB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YixLQUFLO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDaGlsZHJlblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25FeHRyYXMsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIEJhY2tlbmRTZXJ2aWNlLFxuICBCYXNlUGFyYW1zLFxuICBCcG1TZXJ2aWNlLFxuICBDYXBhYmlsaXRpZXMsXG4gIENhcGFiaWxpdGllc1NlcnZpY2UsXG4gIENvbmZpZyxcbiAgRG1zT2JqZWN0LFxuICBEbXNQYXJhbXMsXG4gIERtc1NlcnZpY2UsXG4gIEVuYWlvRXZlbnQsXG4gIEV2ZW50U2VydmljZSxcbiAgU3Vic2NyaXB0aW9uTW9kZSxcbiAgU3lzdGVtU2VydmljZSxcbiAgVHJhbnNsYXRlU2VydmljZSxcbiAgVXBsb2FkUmVnaXN0cnlTZXJ2aWNlLFxuICBVcGxvYWRUYXJnZXQsXG4gIFVzZXJTZXJ2aWNlLFxuICBVdGlscyxcbn0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXAsIHRocm90dGxlVGltZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1VudGlsRGVzdHJveSwgdW50aWxEZXN0cm95ZWR9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSc7XG5pbXBvcnQge0FnZW50U2VydmljZX0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvYWdlbnQvYWdlbnQuc2VydmljZSc7XG5pbXBvcnQge0VtcHR5U3RhdGV9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmludGVyZmFjZSc7XG5pbXBvcnQge0VtcHR5U3RhdGVTZXJ2aWNlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7TG9jYWxlRGF0ZVBpcGV9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3BpcGVzL2xvY2FsZS1kYXRlLnBpcGUnO1xuaW1wb3J0IHtTZWxlY3Rpb25Db25maWcsIFNlbGVjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3NlbGVjdGlvbi9zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQge0FjdGlvblNlcnZpY2V9IGZyb20gJy4uL2FjdGlvbnMvYWN0aW9uLXNlcnZpY2UvYWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtDb250ZW50UHJldmlld1NlcnZpY2V9IGZyb20gJy4uL21lZGlhL2NvbnRlbnQtcHJldmlldy5zZXJ2aWNlJztcbmltcG9ydCB7TWVkaWFDb21wb25lbnR9IGZyb20gJy4uL21lZGlhL21lZGlhLmNvbXBvbmVudCc7XG5pbXBvcnQge0dsb2JhbFNob3J0Y3V0Q29tcG9uZW50fSBmcm9tICcuLi9zaG9ydGN1dHMvZ2xvYmFsLXNob3J0Y3V0LWNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHtTaG9ydGN1dH0gZnJvbSAnLi4vc2hvcnRjdXRzL3Nob3J0Y3V0LmludGVyZmFjZSc7XG5pbXBvcnQge0luZGV4RGF0YX0gZnJvbSAnLi4vdWkvaW5kZXhkYXRhLXN1bW1hcnkvaW5kZXhkYXRhLXN1bW1hcnkuY29tcG9uZW50JztcbmltcG9ydCB7VGFic30gZnJvbSAnQHl1dXZpcy9jb21wb25lbnRzL3RhYnMnO1xuaW1wb3J0IHtTcGxpdFRhYnNDb21wb25lbnQsIFNwbGl0VGFic0xheW91dFNldHRpbmdzfSBmcm9tICdAeXV1dmlzL2NvbXBvbmVudHMvc3BsaXQtdGFicyc7XG5pbXBvcnQge0Zhdm9yaXRlSWNvbkNvbXBvbmVudH0gZnJvbSAnLi9mYXZvcml0ZS1pY29uL2Zhdm9yaXRlLWljb24uY29tcG9uZW50JztcblxuQFVudGlsRGVzdHJveSgpXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlby1vYmplY3QtZGV0YWlscycsXG4gIHRlbXBsYXRlVXJsOiAnLi9vYmplY3QtZGV0YWlscy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL29iamVjdC1kZXRhaWxzLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW0NvbnRlbnRQcmV2aWV3U2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgT2JqZWN0RGV0YWlsc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBAVmlld0NoaWxkKCd2aWV3ZXInKSBwcmV2aWV3OiBNZWRpYUNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZChTcGxpdFRhYnNDb21wb25lbnQpIGVvU3BsaXRUYWJzOiBTcGxpdFRhYnNDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoRmF2b3JpdGVJY29uQ29tcG9uZW50KSBmYXZvcml0ZUljb24hOiBGYXZvcml0ZUljb25Db21wb25lbnQ7XG4gIEBWaWV3Q2hpbGRyZW4oVGFicykgdGFiQ29udGFpbmVyczogUXVlcnlMaXN0PFRhYnM+O1xuXG4gIEBJbnB1dCgpIHBsdWdpbnM6IGFueVtdO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucmVmZXJlbmNlJykgaXNSZWZlcmVuY2U6IGJvb2xlYW47XG5cbiAgQElucHV0KCkgc2VhcmNoVGVybTogc3RyaW5nO1xuICBASW5wdXQoKSBlbmFibGVDb21wYXJlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHJlY3ljbGViaW5UYWJzID0gZmFsc2U7XG4gIEBJbnB1dCgpIHZlcnNpb25Db21wb25lbnRUYWJzID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVuYWJsZURpZmYgPSB0cnVlO1xuICBASW5wdXQoKSBlbmFibGVTeW5jID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNhY2hlTGF5b3V0OiBhbnk7XG5cbiAgQElucHV0KCkgYXBwbHlTZWxlY3Rpb246IFNlbGVjdGlvbkNvbmZpZztcbiAgQElucHV0KCkgcGFyc2VEbXNQYXJhbXM6IChkYXRhKSA9PiB7fSA9IHRoaXMuZ2V0RG1zUGFyYW1zO1xuICBAT3V0cHV0KCkgaGFzQ29udGVudDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIGl0ZW06IERtc09iamVjdDtcbiAgaW5kZXhEYXRhUHJldmlldzogSW5kZXhEYXRhO1xuICBiYXNlcGFyYW1zOiBCYXNlUGFyYW1zO1xuICBoYXNFcnJvciA9IGZhbHNlO1xuICBsb2NrVG9vbHRpcDogc3RyaW5nO1xuICBub2Rtc29iamVjdCA9IGZhbHNlO1xuICBzaG93TG9hZGVyID0gZmFsc2U7XG4gIHByb2Nlc3NUb29sdGlwID0gJyc7XG4gIHBhbmVsT3JkZXIgPSB7J21hc3Rlcic6IFsnc3VtbWFyeScsICdpbmRleGRhdGEnLCAnaGlzdG9yeScsICdsaW5rcycsICdzaWduYXR1cmUnXSwgJ3NsYXZlJzogWydwcmV2aWV3J119O1xuXG4gIGFnZW50SXNDb25uZWN0ZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5hZ2VudFNlcnZpY2UuaXNDb25uZWN0ZWQkO1xuICBzdWJzY3JpcHRpb25JY29uVG9vbHRpcDogc3RyaW5nO1xuICBzcGxpdCA9IGZhbHNlO1xuICBzcGxpdFRhYkNvbmZpZzogU3BsaXRUYWJzTGF5b3V0U2V0dGluZ3M7XG5cbiAgaXRlbTI6IERtc09iamVjdDtcbiAgb25FbmFibGVTeW5jID0gdHJ1ZTtcbiAgdGFicyA9IFtdO1xuICBpbmRleERhdGFQcmV2aWV3MjogSW5kZXhEYXRhO1xuICBiYXNlcGFyYW1zMjogQmFzZVBhcmFtcztcblxuICBjYXBhYmlsaXRpZXM6IENhcGFiaWxpdGllcztcbiAgcHJldmVudENsaWNrVGhyb3VnaCA9IGZhbHNlO1xuXG4gIGRvd25sb2FkQWxsb3dlZDogYm9vbGVhbjtcblxuICBsYXlvdXRTZXR0aW5nc0lEID0gJyc7XG5cbiAgLy8gc2hvcnRjdXQgYWN0aW9uc1xuICBzaG9ydGN1dHM6IEdsb2JhbFNob3J0Y3V0Q29tcG9uZW50ID0ge1xuICAgIGlkOiAnZW8ub2JqZWN0LWRldGFpbHMnLFxuICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zaG9ydGN1dHMuZW8tb2JqZWN0LWRldGFpbHMudGl0bGUnKSxcbiAgICBsYWJlbEtleTogJ2VvLnNob3J0Y3V0cy5lby1vYmplY3QtZGV0YWlscy50aXRsZScsXG4gICAgYWN0aW9uczogW1xuICAgICAge1xuICAgICAgICBuYW1lOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zaG9ydGN1dHMuYWN0aW9uLm9wZW4uY29udGV4dCcpLFxuICAgICAgICBuYW1lS2V5OiAnZW8uc2hvcnRjdXRzLmFjdGlvbi5vcGVuLmNvbnRleHQnLFxuICAgICAgICBzaG9ydGN1dDogbmV3IFNob3J0Y3V0KCdPJywgZmFsc2UsIGZhbHNlKSxcbiAgICAgICAgb25FeGVjdXRlQWN0aW9uOiAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgdGhpcy5vcGVuT2JqZWN0KHRoaXMuaXRlbS5pZCwgdGhpcy5pdGVtLnR5cGVOYW1lKTtcbiAgICAgICAgfSxcbiAgICAgICAgaXNIaWRkZW46ICgpOiBib29sZWFuID0+IHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLm9iamVjdC5kZXRhaWxzLmFjdGlvbnMudGl0bGUnKSxcbiAgICAgICAgbmFtZUtleTogJ2VvLm9iamVjdC5kZXRhaWxzLmFjdGlvbnMudGl0bGUnLFxuICAgICAgICBzaG9ydGN1dDogbmV3IFNob3J0Y3V0KCdBJywgZmFsc2UsIGZhbHNlKSxcbiAgICAgICAgb25FeGVjdXRlQWN0aW9uOiAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgdGhpcy5zaG93QWN0aW9ucygpO1xuICAgICAgICB9LFxuICAgICAgICBpc0hpZGRlbjogKCk6IGJvb2xlYW4gPT4ge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uYWN0aW9uLmRvd25sb2FkLmRtcy5vYmplY3QuY29udGVudC5sYWJlbCcpLFxuICAgICAgICBuYW1lS2V5OiAnZW8uYWN0aW9uLmRvd25sb2FkLmRtcy5vYmplY3QuY29udGVudC5sYWJlbCcsXG4gICAgICAgIHNob3J0Y3V0OiBuZXcgU2hvcnRjdXQoJ0gnLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgICBvbkV4ZWN1dGVBY3Rpb246ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICB0aGlzLmRvd25sb2FkT3JpZ2luYWxDb250ZW50KCk7XG4gICAgICAgIH0sXG4gICAgICAgIGlzSGlkZGVuOiAoKTogYm9vbGVhbiA9PiB7XG4gICAgICAgICAgcmV0dXJuICEoIXRoaXMuZW5hYmxlQ29tcGFyZSAmJiB0aGlzLml0ZW0uY29udGVudD8uaWQpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5mYXZvcml0ZS5pY29uLmRpYWxvZy50aXRsZScpLFxuICAgICAgICBuYW1lS2V5OiAnZW8uZmF2b3JpdGUuaWNvbi5kaWFsb2cudGl0bGUnLFxuICAgICAgICBzaG9ydGN1dDogbmV3IFNob3J0Y3V0KCdOJywgZmFsc2UsIGZhbHNlKSxcbiAgICAgICAgb25FeGVjdXRlQWN0aW9uOiAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgdGhpcy5mYXZvcml0ZUljb24udG9nZ2xlKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGlzSGlkZGVuOiAoKTogYm9vbGVhbiA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5saXN0LnJlZnJlc2gnKSxcbiAgICAgICAgbmFtZUtleTogJ2VvLmxpc3QucmVmcmVzaCcsXG4gICAgICAgIHNob3J0Y3V0OiBuZXcgU2hvcnRjdXQoJ0InLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgICBvbkV4ZWN1dGVBY3Rpb246ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICB0aGlzLnJlZnJlc2hDb250ZW50KCk7XG4gICAgICAgIH0sXG4gICAgICAgIGlzSGlkZGVuOiAoKTogYm9vbGVhbiA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgXVxuICB9O1xuXG4gIC8vIGdlbmVyYXRlIHVuaXF1ZSBpZCB0byBwYXNzIHRvIHVwbG9hZCByZWdpc3RyeVxuICBwcml2YXRlIHVwbG9hZFRhcmdldCA9IG5ldyBVcGxvYWRUYXJnZXQoVXRpbHMudXVpZCgpLCBVcGxvYWRUYXJnZXQuT0JKRUNUKTtcbiAgcHJpdmF0ZSBfZW1wdHlTdGF0ZTogRW1wdHlTdGF0ZSA9IHtpY29uOiAnaWNfbm8tZmlsZS5zdmcnLCB0ZXh0OiAnJywgY2xhc3NOYW1lOiAnJ307XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICAgICAgICAgIHByaXZhdGUgc3lzdGVtOiBTeXN0ZW1TZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIGVtcHR5OiBFbXB0eVN0YXRlU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBhZ2VudFNlcnZpY2U6IEFnZW50U2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBiYWNrZW5kOiBCYWNrZW5kU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBkbXNTZXJ2aWNlOiBEbXNTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIHNlbGVjdGlvbjogU2VsZWN0aW9uU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBhY3Rpb25TZXJ2aWNlOiBBY3Rpb25TZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIGNhcGFiaWxpdHlTZXJ2aWNlOiBDYXBhYmlsaXRpZXNTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIHVwbG9hZFJlZ2lzdHJ5OiBVcGxvYWRSZWdpc3RyeVNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudFNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlnLFxuICAgICAgICAgICAgICBwcml2YXRlIGJwbVNlcnZpY2U6IEJwbVNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgICAgICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlKSB7XG5cbiAgICB0aGlzLnBhbmVsT3JkZXIgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0UmF3KCdvYmplY3REZXRhaWxzVGFicycpIHx8IHRoaXMucGFuZWxPcmRlcjtcblxuICAgIGNvbnN0IHJlcXVpcmVkUm9sZXMgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0UmF3KCdyZXF1aXJlZFJvbGVzRXhwb3J0Jyk7XG4gICAgdGhpcy5kb3dubG9hZEFsbG93ZWQgPSAhcmVxdWlyZWRSb2xlcyB8fCB0aGlzLnVzZXJTZXJ2aWNlLmdldEN1cnJlbnRVc2VyKCkucm9sZXMuc29tZShyb2xlID0+IHJlcXVpcmVkUm9sZXMuaW5jbHVkZXMocm9sZS5uYW1lKSk7XG5cbiAgICB0aGlzLmFnZW50U2VydmljZS5zZXRBZ2VudFN0YXR1cyh0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zWydjb25uZWN0YWdlbnQnXSkuc3Vic2NyaWJlKChoYXNTdGF0dXM6IGJvb2xlYW4pID0+IHtcbiAgICAgIGlmIChoYXNTdGF0dXMpIHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHtxdWVyeVBhcmFtczoge2Nvbm5lY3RhZ2VudDogbnVsbH0sIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZSd9KS50aGVuKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS10eXBlJykgZ2V0IGRhdGFUeXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbSA/IHRoaXMuaXRlbS50eXBlTmFtZSA6ICdub25lJztcbiAgfVxuXG4gIGdldCBlbXB0eVN0YXRlKCk6IEVtcHR5U3RhdGUge1xuICAgIHJldHVybiB0aGlzLl9lbXB0eVN0YXRlO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHJlZmVyZW5jZShpc1JlZjogYm9vbGVhbikge1xuICAgIHRoaXMuaXNSZWZlcmVuY2UgPSBpc1JlZjtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBlbXB0eVN0YXRlKGU6IEVtcHR5U3RhdGUpIHtcbiAgICB0aGlzLl9lbXB0eVN0YXRlID0gZSB8fCBFbXB0eVN0YXRlU2VydmljZS5kZWZhdWx0RW1wdHlTdGF0ZSgpO1xuICB9XG5cbiAgQElucHV0KCdwYXJhbXMnKVxuICBzZXQgZG1zUGFyYW1zKHBhcmFtczogRG1zUGFyYW1zKSB7XG4gICAgdGhpcy5sb2FkRG1zT2JqZWN0KHBhcmFtcykuc3Vic2NyaWJlKChyZXM6IERtc09iamVjdCkgPT4ge1xuICAgICAgdGhpcy5kbXNPYmplY3QgPSByZXM7XG4gICAgfSxcbiAgICAgIFV0aWxzLnRocm93KCgpID0+IHRoaXMub25IYXNFcnJvcih0cnVlLCB0cnVlLCBmYWxzZSkpXG4gICAgKTtcbiAgfVxuXG4gIEBJbnB1dCgncGFyYW1zMicpXG4gIHNldCBkbXNQYXJhbXMyKHBhcmFtczogRG1zUGFyYW1zKSB7XG4gICAgdGhpcy5sb2FkRG1zT2JqZWN0KHBhcmFtcylcbiAgICAgIC5zdWJzY3JpYmUoKHJlczogRG1zT2JqZWN0KSA9PiB7XG4gICAgICAgIHRoaXMuZG1zT2JqZWN0MiA9IHJlcztcbiAgICAgIH0sIFV0aWxzLnRocm93KCgpID0+IHRoaXMub25IYXNFcnJvcih0cnVlLCB0cnVlLCBmYWxzZSkpKTtcbiAgfVxuXG4gIEBJbnB1dCgnaXRlbScpXG4gIHNldCBkbXNPYmplY3QodjogRG1zT2JqZWN0KSB7XG4gICAgLy8gc2hvdyBsb2FkZXIgaWYgb2JqZWN0IGlzIGRpZmZlcmVudCBhbmQgZm9yY2UgY2hhbmdlIGRldGVjdGlvbiB0byBzaG93IGxvYWRlclxuICAgIHRoaXMuc2hvd0xvYWRlciA9IHRydWU7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgY29uc3QgaXNEaWZmZXJlbnQgPSB0aGlzLml0ZW0/LmlkICE9PSB2Py5pZDtcbiAgICB0aGlzLml0ZW0gPSB2O1xuICAgIHRoaXMub25IYXNFcnJvcigpO1xuICAgIHRoaXMubGF5b3V0U2V0dGluZ3NJRCA9IHRoaXMuY2FjaGVMYXlvdXQgKyAnLS0nICsgdj8udHlwZU5hbWUgKyAnLm9iamVjdC1kZXRhaWxzJztcbiAgICB0aGlzLnNldHVwQ2FwYWJpbGl0aWVzKCk7XG4gICAgaWYgKHRoaXMuaXRlbT8uaWQpIHtcbiAgICAgIHRoaXMuZmV0Y2hBdGl2ZVByb2Nlc3NEYXRhKHRoaXMuaXRlbT8uaWQpO1xuICAgIH1cbiAgICAvLyBwcmVwYXJlIGluZGV4ZGF0YSBwcmV2aWV3XG4gICAgdGhpcy5vbkluZGV4RGF0YVNhdmVkKG51bGwsIHRoaXMuaXRlbSk7XG4gICAgdGhpcy5ldmVudFNlcnZpY2UudHJpZ2dlcihFbmFpb0V2ZW50LkRNU19PQkpFQ1RfTE9BREVELCB0aGlzLml0ZW0pO1xuXG4gICAgaWYgKHRoaXMuaXRlbSkge1xuICAgICAgaWYgKGlzRGlmZmVyZW50ICYmIHRoaXMuaXRlbS5pc0FjdGl2ZVZlcnNpb24gJiYgIXRoaXMuZW5hYmxlQ29tcGFyZSkge1xuICAgICAgICB0aGlzLnVwbG9hZFRhcmdldC5yZWZlcmVuY2VPYmplY3QgPSB0aGlzLml0ZW07XG4gICAgICAgIHRoaXMudXBsb2FkVGFyZ2V0Lm9uVXBsb2FkU3VjY2VzcyA9ICgpID0+IHRoaXMuZG1zUGFyYW1zID0ge2lkOiB2LmlkLCB0eXBlOiB2LnR5cGVOYW1lfTtcbiAgICAgICAgdGhpcy51cGxvYWRSZWdpc3RyeS5yZWdpc3Rlcih0aGlzLnVwbG9hZFRhcmdldCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnVwbG9hZFJlZ2lzdHJ5LnVucmVnaXN0ZXIodGhpcy51cGxvYWRUYXJnZXQuaWQpO1xuICAgICAgICB0aGlzLnVwbG9hZFRhcmdldC5yZWZlcmVuY2VPYmplY3QgPSB0aGlzLml0ZW07XG4gICAgICAgIHRoaXMudXBsb2FkVGFyZ2V0Lm9uVXBsb2FkU3VjY2VzcyA9ICgpID0+IHRoaXMuZG1zUGFyYW1zID0ge2lkOiB2LmlkLCB0eXBlOiB2LnR5cGVOYW1lfTtcbiAgICAgICAgdGhpcy51cGxvYWRSZWdpc3RyeS5yZWdpc3Rlcih0aGlzLnVwbG9hZFRhcmdldCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLml0ZW0ubG9jaykge1xuICAgICAgICB0aGlzLmxvY2tUb29sdGlwID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ub2JqZWN0LmxvY2snKSArICcgJ1xuICAgICAgICAgICsgKG5ldyBMb2NhbGVEYXRlUGlwZSh0aGlzLnRyYW5zbGF0ZSkudHJhbnNmb3JtKHRoaXMuaXRlbS5sb2NrLm9uKSlcbiAgICAgICAgICArICcsICcgKyB0aGlzLml0ZW0ubG9jay5ieS5sYWJlbCArICcgKCcgKyB0aGlzLml0ZW0ubG9jay5ieS5uYW1lICsgJyknO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVtcHR5U3RhdGUgPSB0aGlzLmVtcHR5LmdldEVtcHR5U3RhdGUoMCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXRlbT8uc3Vic2NyaXB0aW9ucy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uSWNvblRvb2x0aXAgPSB0aGlzLmNyZWF0ZVN1YnNjcmlwdGlvbkljb25Ub29sdGlwKCk7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KCdpdGVtMicpXG4gIHNldCBkbXNPYmplY3QyKHY6IERtc09iamVjdCkge1xuICAgIHRoaXMuaXRlbTIgPSB2O1xuICAgIHRoaXMuZW5hYmxlU3luYyA9ICEhdGhpcy5pdGVtMj8udmVyc2lvbjtcbiAgICB0aGlzLm9uSGFzRXJyb3IoKTtcbiAgICB0aGlzLm9uSW5kZXhEYXRhU2F2ZWQobnVsbCwgdGhpcy5pdGVtMik7XG4gIH1cblxuICByZWZyZXNoQ29udGVudCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucHJldmVudENsaWNrVGhyb3VnaCkge1xuICAgICAgdGhpcy5wcmV2ZW50Q2xpY2tUaHJvdWdoID0gdHJ1ZTtcbiAgICAgIHRoaXMudXBkYXRlQ29udGVudCgpO1xuICAgIH1cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMucHJldmVudENsaWNrVGhyb3VnaCA9IGZhbHNlO1xuICAgIH0sIDUwMDApO1xuICB9XG5cbiAgbG9hZERtc09iamVjdChwYXJhbXM6IERtc1BhcmFtcyk6IE9ic2VydmFibGU8RG1zT2JqZWN0PiB7XG4gICAgaWYgKCF0aGlzLmVuYWJsZUNvbXBhcmUgJiYgcGFyYW1zKSB7XG4gICAgICBkZWxldGUgcGFyYW1zLnZlcnNpb247XG4gICAgfVxuICAgIC8vIGNoZWNrIGZvciB2YWxpZCBpZFxuICAgIHJldHVybiBwYXJhbXM/LmlkPy5sZW5ndGggPT09IDMyID8gdGhpcy5kbXNTZXJ2aWNlLmdldERtc09iamVjdEJ5UGFyYW1zKHBhcmFtcykgOiBvZihudWxsKTtcbiAgfVxuXG4gIGRvd25sb2FkT3JpZ2luYWxDb250ZW50KCk6IHZvaWQge1xuICAgIHRoaXMuYmFja2VuZC5kb3dubG9hZENvbnRlbnQoW3RoaXMuaXRlbV0pO1xuICB9XG5cbiAgc2hvd0FjdGlvbnMoKTogdm9pZCB7XG4gICAgY29uc3QgYWN0aW9ucyA9IFt0aGlzLml0ZW0sIHRoaXMuaXRlbTJdLmZpbHRlcih2ID0+IHYpO1xuICAgIHRoaXMuYWN0aW9uU2VydmljZS5zaG93QWN0aW9ucyhhY3Rpb25zLCAnRE1TX09CSkVDVCcpO1xuICB9XG5cbiAgb3Blbk9iamVjdChpZDogc3RyaW5nLCBfdHlwZT86IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zOiBOYXZpZ2F0aW9uRXh0cmFzID0ge3F1ZXJ5UGFyYW1zOiB7J3R5cGUnOiBfdHlwZX19O1xuICAgIHJldHVybiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9vYmplY3QnLCBpZF0sIHF1ZXJ5UGFyYW1zKTtcbiAgfVxuXG4gIC8vIGV4ZWN1dGVkIHdoZW4gdGhlIGRtcyBvYmplY3QgY2hhbmdlZCBkdWUgdG8gc2F2aW5nIGl0cyBpbmRleGRhdGFcbiAgb25JbmRleERhdGFTYXZlZChmb3JtRGF0YTogYW55LCBpdGVtOiBEbXNPYmplY3QpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXRlbSkge1xuICAgICAgdGhpcy5pbmRleERhdGFQcmV2aWV3ID0gbnVsbDtcbiAgICAgIHRoaXMuYmFzZXBhcmFtcyA9IG51bGw7XG4gICAgfVxuICAgIGlmICghdGhpcy5pdGVtMikge1xuICAgICAgdGhpcy5pbmRleERhdGFQcmV2aWV3MiA9IG51bGw7XG4gICAgICB0aGlzLmJhc2VwYXJhbXMyID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIHRoaXMucHJlcGFyZUluZGV4RGF0YVByZXZpZXcoaXRlbSwgZm9ybURhdGEpXG4gICAgICAgIC5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgICAgaWYgKGl0ZW0gPT09IHRoaXMuaXRlbSkge1xuICAgICAgICAgICAgdGhpcy5pbmRleERhdGFQcmV2aWV3ID0gZGF0YS5pbmRleERhdGFQcmV2aWV3O1xuICAgICAgICAgICAgdGhpcy5iYXNlcGFyYW1zID0gZGF0YS5iYXNlcGFyYW1zO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmluZGV4RGF0YVByZXZpZXcyID0gZGF0YS5pbmRleERhdGFQcmV2aWV3O1xuICAgICAgICAgICAgdGhpcy5iYXNlcGFyYW1zMiA9IGRhdGEuYmFzZXBhcmFtcztcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGZldGNoQXRpdmVQcm9jZXNzRGF0YShvYmplY3RJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5icG1TZXJ2aWNlLmdldFByb2Nlc3NEYXRhKG9iamVjdElkKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgbGV0IGNvbnRlbnQgPSB7XG4gICAgICAgIG1vZGVsbmFtZTogcmVzLm1hcChpdGVtID0+IGl0ZW0ubW9kZWxuYW1lKSxcbiAgICAgICAgc3RhcnR0aW1lOiByZXMubWFwKGl0ZW0gPT4gbmV3IExvY2FsZURhdGVQaXBlKHRoaXMudHJhbnNsYXRlKS50cmFuc2Zvcm0oaXRlbS5zdGFydHRpbWUsICcnKSksXG4gICAgICAgIGVuZHRpbWU6IHJlcy5tYXAoaXRlbSA9PiBuZXcgTG9jYWxlRGF0ZVBpcGUodGhpcy50cmFuc2xhdGUpLnRyYW5zZm9ybShpdGVtLmVuZHRpbWUsICcnKSlcbiAgICAgIH07XG4gICAgICB0aGlzLnByb2Nlc3NUb29sdGlwID0gJ1xcbic7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbnRlbnQubW9kZWxuYW1lLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChjb250ZW50LmVuZHRpbWVbaV0pIHtcbiAgICAgICAgICB0aGlzLnByb2Nlc3NUb29sdGlwICs9IGNvbnRlbnQubW9kZWxuYW1lW2ldICsgJyB8ICcgKyBjb250ZW50LnN0YXJ0dGltZVtpXSArICcgLSAnICsgY29udGVudC5lbmR0aW1lW2ldICsgJ1xcbic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzVG9vbHRpcCArPSBjb250ZW50Lm1vZGVsbmFtZVtpXSArICcgfCAnICsgY29udGVudC5zdGFydHRpbWVbaV0gKyAnXFxuJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb25Db21wYXJlVGFiQ2hhbmdlKGV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZW5hYmxlU3luYyAmJiB0aGlzLm9uRW5hYmxlU3luYykge1xuICAgICAgdGhpcy50YWJDb250YWluZXJzLmZvckVhY2godCA9PiB7XG4gICAgICAgIGlmICh0LnNlbGVjdGVkVGFiICE9PSBldmVudCkge1xuICAgICAgICAgIHQuc2VsZWN0QnlJZChldmVudCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGlzSm91cm5hbE9iamVjdChpdGVtOiBEbXNPYmplY3QpOiBzdHJpbmcge1xuICAgIHJldHVybiBpdGVtLnR5cGUuc3VwZXJ0eXBlcy5maW5kKHNUID0+IHNUID09PSAnc3lzam91cm5hbG9iamVjdCcpO1xuICB9XG5cbiAgLy8gY3VzdG9tIGV2ZW50IGhhbmRsZXIgZm9yIGxheW91dCBzZXR0aW5ncyB0byBtYWtlIHN1cmUgcGx1Z2luIHRhYnMgYXJlIHNhdmVkXG4gIG9uTGF5b3V0U2V0dGluZ3NDaGFuZ2VkKGV2ZW50OiBTcGxpdFRhYnNMYXlvdXRTZXR0aW5ncyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxheW91dFNldHRpbmdzSUQpIHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMubGF5b3V0U2V0dGluZ3NJRCwgSlNPTi5zdHJpbmdpZnkoZXZlbnQpKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNhcGFiaWxpdGllcyA9IHRoaXMuY2FwYWJpbGl0eVNlcnZpY2UuZ2V0Q2FwYWJpbGl0aWVzKCk7XG4gICAgdGhpcy51cGRhdGVDb250ZW50KCk7XG5cbiAgICB0aGlzLmV2ZW50U2VydmljZVxuICAgICAgLm9uKEVuYWlvRXZlbnQuRE1TX09CSkVDVF9VUERBVEVEKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogYW55KSA9PiB7XG4gICAgICAgIGlmIChldmVudC5kYXRhICYmIHRoaXMuaXRlbSAmJiB0aGlzLml0ZW0uaWQgPT09IGV2ZW50LmRhdGEuaWQpIHtcbiAgICAgICAgICB0aGlzLmRtc09iamVjdCA9IHRoaXMuZG1zU2VydmljZS5jcmVhdGVMb2NhbENvcHlPZkRNU09iamVjdChldmVudC5kYXRhKTtcbiAgICAgICAgICBpZiAodGhpcy5wcmV2aWV3KSB7XG4gICAgICAgICAgICB0aGlzLnByZXZpZXcucmVmcmVzaCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB0aGlzLmV2ZW50U2VydmljZVxuICAgICAgLm9uKEVuYWlvRXZlbnQuSU5CT1hfSVRFTV9DT05GSVJNRUQpXG4gICAgICAucGlwZShcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaXRlbSAmJiB0aGlzLml0ZW0uaWQgPT09IGV2ZW50LmRhdGEudGFyZ2V0LmlkKSB7XG4gICAgICAgICAgdGhpcy5kbXNQYXJhbXMgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBgaGFzQ29udGVudExvYWRlZGAgZXZlbnQgZW1pdHRlZCBieSB0aGUgYGVvLW1lZGlhYCBjb21wb25lbnQuXG4gICAqIEl0IHNldHMgdGhlIGBzaG93TG9hZGVyYCBwcm9wZXJ0eSB0byBmYWxzZSwgaW5kaWNhdGluZyB0aGF0IHRoZSBjb250ZW50IGhhcyBmaW5pc2hlZCBsb2FkaW5nLlxuICAgKi9cbiAgaGFzQ29udGVudExvYWRlZCgpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dMb2FkZXIgPSBmYWxzZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudXBsb2FkUmVnaXN0cnkudW5yZWdpc3Rlcih0aGlzLnVwbG9hZFRhcmdldC5pZCk7XG4gIH1cblxuICBwcml2YXRlIGdldERtc1BhcmFtcyhkYXRhOiBhbnkpOiBEbXNQYXJhbXMge1xuICAgIHJldHVybiBkYXRhID8gey4uLmRhdGEsIHR5cGU6IGRhdGEudHlwZU5hbWUgfHwgZGF0YS50eXBlfSA6IG51bGw7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNvbnRlbnQoKSB7XG5cbiAgICBpZiAodGhpcy5hcHBseVNlbGVjdGlvbikge1xuICAgICAgaWYgKHRoaXMuZW5hYmxlQ29tcGFyZSkge1xuICAgICAgICB0aGlzLnNlbGVjdGlvblxuICAgICAgICAgIC5maW5kKHRoaXMuYXBwbHlTZWxlY3Rpb24uaW4pXG4gICAgICAgICAgLnNlbGVjdGlvbiRcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpLFxuICAgICAgICAgICAgdGhyb3R0bGVUaW1lKDUwMClcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZSgocmVzOiBhbnlbXSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kbXNQYXJhbXMgPSB0aGlzLnBhcnNlRG1zUGFyYW1zKHJlc1swXSkgYXMgRG1zUGFyYW1zO1xuICAgICAgICAgICAgdGhpcy5kbXNQYXJhbXMyID0gdGhpcy5wYXJzZURtc1BhcmFtcyhyZXNbMV0pIGFzIERtc1BhcmFtcztcbiAgICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25cbiAgICAgICAgICAuZmluZCh0aGlzLmFwcGx5U2VsZWN0aW9uLmluKVxuICAgICAgICAgIC5mb2N1cyRcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZERtc09iamVjdCh0aGlzLnBhcnNlRG1zUGFyYW1zKHJlcykgYXMgRG1zUGFyYW1zKS5zdWJzY3JpYmUoKHJlczI6IERtc09iamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIHJlZnJlc2hpbmcgb2JqZWN0IGRldGFpbHMgbWF5IHJlc3VsdCBpbiBhbiB1cGRhdGVkIHZlcnNpb24gb2YgdGhlIG9iamVjdFxuICAgICAgICAgICAgICAgIC8vIHNvIHdlJ2xsIHVzZSB0aGlzIHRyaWdnZXIgdG8gYWxzbyBlbWl0dCB0aG9zZSBjaGFuZ2VzIHRvIG90aGVyIGxpc3RlbmluZyBjb21wb25lbnRzXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXRlbSAmJiByZXMyICYmICh0aGlzLml0ZW0uaWQgPT09IHJlczIuaWQpKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLmV2ZW50U2VydmljZS50cmlnZ2VyKEVuYWlvRXZlbnQuRE1TX09CSkVDVF9VUERBVEVELCByZXMyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5kbXNPYmplY3QgPSByZXMyO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBVdGlscy50aHJvdygoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZFJlZ2lzdHJ5LnVucmVnaXN0ZXIodGhpcy51cGxvYWRUYXJnZXQuaWQpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9uSGFzRXJyb3IodHJ1ZSwgdHJ1ZSwgZmFsc2UpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHByZXBhcmVJbmRleERhdGFQcmV2aWV3KGl0ZW06IERtc09iamVjdCwgZm9ybURhdGE/OiBhbnkpIHtcbiAgICBjb25zdCB7aWQsIGRhdGEsIHR5cGUsIGNyZWF0ZWQsIG1vZGlmaWVkLCBjb250ZW50LCBjb250ZW50RmlsZU5hbWUsIGNvbnRlbnRGaWxlU2l6ZSwgdmVyc2lvbn0gPSBpdGVtO1xuICAgIHJldHVybiB0aGlzLnN5c3RlbVxuICAgICAgLmdldE9iamVjdFR5cGVGb3JtKHR5cGUubmFtZSwgJ0VESVQnKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChmb3JtID0+IHtcbiAgICAgICAgICBsZXQgaW5kZXhEYXRhUHJldmlldyA9IHtcbiAgICAgICAgICAgIGZvcm0sXG4gICAgICAgICAgICBkYXRhOiBmb3JtRGF0YSB8fCBkYXRhXG4gICAgICAgICAgfTtcbiAgICAgICAgICBsZXQgYmFzZXBhcmFtczogQmFzZVBhcmFtcyA9IHtcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgdHlwZTogdHlwZS5uYW1lLFxuICAgICAgICAgICAgY3JlYXRlZE9uOiBuZXcgRGF0ZShjcmVhdGVkLm9uKSxcbiAgICAgICAgICAgIG1vZGlmaWVkT246IG5ldyBEYXRlKG1vZGlmaWVkLm9uKSxcbiAgICAgICAgICAgIGNyZWF0ZWRCeTogYCR7Y3JlYXRlZC5ieS50aXRsZX0gKCR7Y3JlYXRlZC5ieS5uYW1lfSlgLFxuICAgICAgICAgICAgbW9kaWZpZWRCeTogYCR7bW9kaWZpZWQuYnkudGl0bGV9ICgke21vZGlmaWVkLmJ5Lm5hbWV9KWAsXG4gICAgICAgICAgICBjb250ZW50RmlsZU5hbWU6IGNvbnRlbnRGaWxlTmFtZSA/IGNvbnRlbnRGaWxlTmFtZSA6IG51bGwsXG4gICAgICAgICAgICBjb250ZW50RmlsZVNpemU6IGNvbnRlbnRGaWxlU2l6ZSA/IE51bWJlcihjb250ZW50RmlsZVNpemUpIDogbnVsbCxcbiAgICAgICAgICAgIHZlcnNpb246IHZlcnNpb24gfHwgMCxcbiAgICAgICAgICAgIG1pbWVHcm91cDogY29udGVudCA/IGNvbnRlbnQuY29udGVudHMgPyBjb250ZW50LmNvbnRlbnRzWzBdLm1pbWVncm91cCA6IG51bGwgOiBudWxsLFxuICAgICAgICAgICAgZGlnZXN0OiBjb250ZW50ID8gY29udGVudC5jb250ZW50cyA/IGNvbnRlbnQuY29udGVudHNbMF0uZGlnZXN0IDogbnVsbCA6IG51bGwsXG4gICAgICAgICAgICBjb250ZW50SWQ6IGNvbnRlbnQgPyBjb250ZW50LmNvbnRlbnRzID8gY29udGVudC5pZCA6IG51bGwgOiBudWxsLFxuICAgICAgICAgICAgbWltZVR5cGU6IGNvbnRlbnQgPyBjb250ZW50LmNvbnRlbnRzID8gY29udGVudC5jb250ZW50c1swXS5taW1ldHlwZSA6IG51bGwgOiBudWxsLFxuICAgICAgICAgIH07XG4gICAgICAgICAgcmV0dXJuIHtpbmRleERhdGFQcmV2aWV3LCBiYXNlcGFyYW1zfTtcbiAgICAgICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkhhc0Vycm9yKGhhc0Vycm9yID0gZmFsc2UsIG5vZG1zb2JqZWN0ID0gZmFsc2UsIHNob3dMb2FkZXIgPSBmYWxzZSkge1xuICAgIHRoaXMuaGFzRXJyb3IgPSBoYXNFcnJvcjtcbiAgICB0aGlzLm5vZG1zb2JqZWN0ID0gbm9kbXNvYmplY3Q7XG4gICAgdGhpcy5zaG93TG9hZGVyID0gc2hvd0xvYWRlcjtcbiAgICB0aGlzLmhhc0NvbnRlbnQuZW1pdCghaGFzRXJyb3IpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVTdWJzY3JpcHRpb25JY29uVG9vbHRpcCgpOiBzdHJpbmcge1xuICAgIGxldCB0b29sdGlwID0gJyc7XG4gICAgY29uc3QgbW9kZXMgPSB0aGlzLml0ZW0uc3Vic2NyaXB0aW9ucy5tYXAoc3Vic2NyaXB0aW9uID0+IHN1YnNjcmlwdGlvbi5tb2RlKTtcbiAgICBjb25zdCBzdWJzY3JpYmVkVG9BbGxDaGFuZ2VzID0gbW9kZXMuaW5jbHVkZXMoU3Vic2NyaXB0aW9uTW9kZS5ETVNfT0JKRUNUX0NIQU5HRUQpXG4gICAgICB8fCAobW9kZXMuaW5jbHVkZXMoU3Vic2NyaXB0aW9uTW9kZS5PTkxZX0RPQ1VNRU5UX0NPTlRFTlRfQ0hBTkdFRCkgJiYgbW9kZXMuaW5jbHVkZXMoU3Vic2NyaXB0aW9uTW9kZS5PTkxZX0lOREVYX0RBVEFfQ0hBTkdFRCkpO1xuICAgIGNvbnN0IHN1YnNjcmliZWRUb01ldGFDaGFuZ2VzT25seSA9IG1vZGVzLmluY2x1ZGVzKFN1YnNjcmlwdGlvbk1vZGUuT05MWV9JTkRFWF9EQVRBX0NIQU5HRUQpXG4gICAgICAmJiAhbW9kZXMuaW5jbHVkZXMoU3Vic2NyaXB0aW9uTW9kZS5PTkxZX0RPQ1VNRU5UX0NPTlRFTlRfQ0hBTkdFRClcbiAgICAgICYmICFtb2Rlcy5pbmNsdWRlcyhTdWJzY3JpcHRpb25Nb2RlLkRNU19PQkpFQ1RfQ0hBTkdFRCk7XG4gICAgY29uc3Qgc3Vic2NyaWJlZFRvQ29udGVudENoYW5nZXNPbmx5ID0gbW9kZXMuaW5jbHVkZXMoU3Vic2NyaXB0aW9uTW9kZS5PTkxZX0RPQ1VNRU5UX0NPTlRFTlRfQ0hBTkdFRClcbiAgICAgICYmICFtb2Rlcy5pbmNsdWRlcyhTdWJzY3JpcHRpb25Nb2RlLk9OTFlfSU5ERVhfREFUQV9DSEFOR0VEKVxuICAgICAgJiYgIW1vZGVzLmluY2x1ZGVzKFN1YnNjcmlwdGlvbk1vZGUuRE1TX09CSkVDVF9DSEFOR0VEKTtcbiAgICBpZiAoc3Vic2NyaWJlZFRvQWxsQ2hhbmdlcykge1xuICAgICAgdG9vbHRpcCA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLm9iamVjdC5zdWJzY3JpcHRpb24uaWNvbi50b29sdGlwLmFsbENoYW5nZXMnKTtcbiAgICB9IGVsc2UgaWYgKHN1YnNjcmliZWRUb01ldGFDaGFuZ2VzT25seSkge1xuICAgICAgdG9vbHRpcCA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLm9iamVjdC5zdWJzY3JpcHRpb24uaWNvbi50b29sdGlwLm1ldGEnKTtcbiAgICB9IGVsc2UgaWYgKHN1YnNjcmliZWRUb0NvbnRlbnRDaGFuZ2VzT25seSkge1xuICAgICAgdG9vbHRpcCA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLm9iamVjdC5zdWJzY3JpcHRpb24uaWNvbi50b29sdGlwLmNvbnRlbnQnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRvb2x0aXA7XG4gIH1cblxuICBwcml2YXRlIHNldHVwQ2FwYWJpbGl0aWVzKCkge1xuICAgIGNvbnN0IGJsb2NrID0gdGhpcy5jYXBhYmlsaXRpZXMgJiYgIXRoaXMuY2FwYWJpbGl0aWVzLnNpZ25pbmcgPyBbJ3NpZ25hdHVyZSddIDogW107XG4gICAgY29uc3QgY2FjaGVkT3JkZXIgPSB0aGlzLmxheW91dFNldHRpbmdzSUQgJiYgSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmxheW91dFNldHRpbmdzSUQpKTtcbiAgICBjb25zdCBwcmltYXJ5ID0gY2FjaGVkT3JkZXI/LnByaW1hcnk/LnRhYnM7XG4gICAgY29uc3Qgc2Vjb25kYXJ5ID0gY2FjaGVkT3JkZXI/LnNlY29uZGFyeT8udGFicztcbiAgICBjb25zdCBwcmkgPSB0aGlzLnBhbmVsT3JkZXIubWFzdGVyIHx8IFtdO1xuICAgIGNvbnN0IHNlYyA9IHRoaXMucGFuZWxPcmRlci5zbGF2ZSB8fCBbXTtcbiAgICBjb25zdCBwbHVnaW5zID0gdGhpcy5wbHVnaW5zPy5tYXAocGwgPT4gcGwuaWQpIHx8IFtdO1xuXG4gICAgdGhpcy50YWJzID0gWy4uLnByaSwgLi4uc2VjLCAuLi5wbHVnaW5zXS5maWx0ZXIodCA9PiAhYmxvY2suaW5jbHVkZXModCkpO1xuXG4gICAgaWYgKHRoaXMudmVyc2lvbkNvbXBvbmVudFRhYnMpIHtcbiAgICAgIGlmICh0aGlzLml0ZW0/LmlzRm9sZGVyKSB7XG4gICAgICAgIHRoaXMudGFicyA9IHRoaXMudGFicy5maWx0ZXIodGFiID0+IFsnc3VtbWFyeScsICdpbmRleGRhdGEnXS5pbmNsdWRlcyh0YWIpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudGFicyA9IHRoaXMudGFicy5maWx0ZXIodGFiID0+IFsnc3VtbWFyeScsICdpbmRleGRhdGEnLCAncHJldmlldycsICdzaWduYXR1cmUnXS5pbmNsdWRlcyh0YWIpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBkaWZmID0gdGhpcy50YWJzLmZpbHRlcih0ID0+ICFwcmltYXJ5Py5pbmNsdWRlcyh0KSAmJiAhc2Vjb25kYXJ5Py5pbmNsdWRlcyh0KSk7XG4gICAgY29uc3QgcFRhYnNUZW1wID0gWy4uLnByaSwgLi4ucGx1Z2lucy5maWx0ZXIocGwgPT4gIXByaS5pbmNsdWRlcyhwbCkpXTtcbiAgICBjb25zdCBwVGFicyA9IHByaW1hcnkgPyBbLi4ucHJpbWFyeSwgLi4uZGlmZl0gOiBwVGFic1RlbXA7XG4gICAgY29uc3Qgc1RhYnMgPSBzZWNvbmRhcnkgfHwgc2VjO1xuXG4gICAgY29uc3QgcCA9IHBUYWJzLmZpbHRlcih0ID0+IHRoaXMudGFicy5pbmNsdWRlcyh0KSk7XG4gICAgY29uc3QgcyA9IHNUYWJzLmZpbHRlcih0ID0+IHRoaXMudGFicy5pbmNsdWRlcyh0KSk7XG5cbiAgICB0aGlzLnNwbGl0VGFiQ29uZmlnID0ge1xuICAgICAgcHJpbWFyeToge3RhYnM6IHAsIGFjdGl2ZTogcC5pbmNsdWRlcyhjYWNoZWRPcmRlcj8ucHJpbWFyeT8uYWN0aXZlKSA/IGNhY2hlZE9yZGVyPy5wcmltYXJ5Py5hY3RpdmUgOiBwWzBdIHx8ICcnfSxcbiAgICAgIHNlY29uZGFyeToge3RhYnM6IHMsIGFjdGl2ZTogcy5pbmNsdWRlcyhjYWNoZWRPcmRlcj8uc2Vjb25kYXJ5Py5hY3RpdmUpID8gY2FjaGVkT3JkZXI/LnNlY29uZGFyeT8uYWN0aXZlIDogc1swXSB8fCAnJ30sXG4gICAgICBzcGxpdDogY2FjaGVkT3JkZXI/LnNwbGl0XG4gICAgfTtcblxuICAgIC8vIGZvcmNlIHNhdmUgb2YgbGF5b3V0IHNldHRpbmdzIHRvIGluY2x1ZGUgcGx1Z2luIHRhYnNcbiAgICB0aGlzLm9uTGF5b3V0U2V0dGluZ3NDaGFuZ2VkKHRoaXMuc3BsaXRUYWJDb25maWcpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5lb1NwbGl0VGFicz8uYXBwbHlMYXlvdXRTZXR0aW5ncygpO1xuICAgIH0sIDMwMCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJsb2FkZXItb3ZlcmxheV9fbWFza1wiICpuZ0lmPVwic2hvd0xvYWRlclwiPlxuICA8ZW8tbG9hZGluZy1zcGlubmVyIGNsYXNzPVwib2JqZWN0LWRldGFpbF9fbG9hZGVyXCI+PC9lby1sb2FkaW5nLXNwaW5uZXI+XG48L2Rpdj5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtICYmICFoYXNFcnJvcjsgZWxzZSBub0l0ZW1cIj5cblxuICA8ZGl2IGNsYXNzPVwiZW8taGVhZCBlby1oZWFkLXRhYnNcIiBbZW9TaG9ydGN1dHNdPVwic2hvcnRjdXRzXCI+XG4gICAgPGhlYWRlciBjbGFzcz1cImVvLWhlYWRlclwiPlxuICAgICAgPGVvLWljb24gY2xhc3M9XCJlby1oZWFkZXItaWNvblwiIFtvYmplY3RUeXBlXT1cIml0ZW0udHlwZVwiIFtpY29uVGl0bGVdPVwiaXRlbS50eXBlLmxhYmVsXCI+PC9lby1pY29uPlxuICAgICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlci1pbmZvXCI+XG4gICAgICAgIDxoMiBjbGFzcz1cImVvLWhlYWRlci10aXRsZVwiPnt7aXRlbS50aXRsZX19PC9oMj5cbiAgICAgICAgPGgzIGNsYXNzPVwiZW8taGVhZGVyLXN1YnRpdGxlXCI+e3tpdGVtLmRlc2NyaXB0aW9ufX08L2gzPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJlby1oZWFkZXItYWN0aW9ucy1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlci1hY3Rpb25zXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwiYnV0dG9uIHJlZnJlc2gtYnV0dG9uXCIgKm5nSWY9XCIhcmVjeWNsZWJpblRhYnNcIlxuICAgICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19yZWZyZXNoLnN2ZydcIiBbaWNvblRpdGxlXT1cIignZW8ubGlzdC5yZWZyZXNoJyB8IHRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2Rpc2FibGUtcmVmcmVzaCc6IHByZXZlbnRDbGlja1Rocm91Z2h9XCIgKGNsaWNrKT1cInJlZnJlc2hDb250ZW50KClcIj48L2VvLWljb24+XG4gICAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImJ1dHRvbiBzeW5jLXRhYi1idG5cIiAqbmdJZj1cImVuYWJsZUNvbXBhcmUgJiYgIXJlY3ljbGViaW5UYWJzXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydlbmFibGVkJzogb25FbmFibGVTeW5jLCdkaXNhYmxlJzogIWVuYWJsZVN5bmN9XCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfbGluay5zdmcnXCJcbiAgICAgICAgICAgICAgW2ljb25UaXRsZV09XCInZW8udmVyc2lvbnMuZGV0YWlsLmdsdWUudG9vbHRpcCcgfCB0cmFuc2xhdGVcIiAoY2xpY2spPVwib25FbmFibGVTeW5jID0gIW9uRW5hYmxlU3luY1wiPjwvZW8taWNvbj5cbiAgICAgICAgICAgIDxlby1mYXZvcml0ZS1pY29uIFtpdGVtXT1cIml0ZW1cIlxuICAgICAgICAgICAgICAqbmdJZj1cIiFlbmFibGVDb21wYXJlICYmICFyZWN5Y2xlYmluVGFicyAmJiBjYXBhYmlsaXRpZXMuZmF2b3JpdGVzICYmICFpc0pvdXJuYWxPYmplY3QoaXRlbSlcIj5cbiAgICAgICAgICAgIDwvZW8tZmF2b3JpdGUtaWNvbj5cbiAgICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwiYnV0dG9uIG9jLWJ1dHRvblwiICpuZ0lmPVwiZG93bmxvYWRBbGxvd2VkICYmICFlbmFibGVDb21wYXJlICYmIGl0ZW0uY29udGVudD8uaWRcIiAoY2xpY2spPVwiZG93bmxvYWRPcmlnaW5hbENvbnRlbnQoKVwiXG4gICAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiKCdlby5hY3Rpb24uZG93bmxvYWQuZG1zLm9iamVjdC5jb250ZW50LmxhYmVsJyB8IHRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19jb250ZW50LWRvd25sb2FkLnN2ZydcIj48L2VvLWljb24+XG4gICAgICAgICAgICA8ZW8tZWRpdC1pY29uIFtpdGVtXT1cIml0ZW1cIlxuICAgICAgICAgICAgICAqbmdJZj1cIiFlbmFibGVDb21wYXJlICYmICFyZWN5Y2xlYmluVGFicyAmJiBpdGVtLmNvbnRlbnQ/LmlkICYmIGl0ZW0ucmlnaHRzLmVkaXQgJiYgKGFnZW50SXNDb25uZWN0ZWQkIHwgYXN5bmMpXG4gICAgICAgICAgICAgICYmICFpdGVtLmlzRmluYWxpemVkICYmIGl0ZW0uZGF0YS55dXZzaWdzdGF0dXMgIT09ICdzaWduZWQnICYmIGl0ZW0uZGF0YS55dXZzaWdzdGF0dXMgIT09ICdpbnByb2Nlc3MnICYmICFpdGVtLmxvY2tcIj5cbiAgICAgICAgICAgIDwvZW8tZWRpdC1pY29uPlxuICAgICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJidXR0b24gYW0tYnV0dG9uXCIgKm5nSWY9XCIhcmVjeWNsZWJpblRhYnNcIiAoY2xpY2spPVwic2hvd0FjdGlvbnMoKVwiXG4gICAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiKCdlby5vYmplY3QuZGV0YWlscy5hY3Rpb25zLnRpdGxlJyB8IHRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19tb3JlLnN2ZydcIj48L2VvLWljb24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlci1zdGF0dXMtaWNvbnNcIj5cbiAgICAgICAgICA8YSBjbGFzcz1cImNvbnRlbnQtbGlua1wiIFt0aXRsZV09XCInZW8ub2JqZWN0LmNvbnRlbnRsaW5rLnRvb2x0aXAnIHwgdHJhbnNsYXRlXCIgKm5nSWY9XCJpdGVtLmNvbnRlbnQ/LmxpbmtlZFwiXG4gICAgICAgICAgICBbcm91dGVyTGlua109XCInL29iamVjdC8nICsgaXRlbS5jb250ZW50LmlkXCIgW3F1ZXJ5UGFyYW1zXT1cInt0eXBlOiBpdGVtLmNvbnRlbnQudHlwZX1cIj5cbiAgICAgICAgICAgIDxzcGFuPnt7J2VvLm9iamVjdC5jb250ZW50bGluaycgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJzdWJzY3JpcHRpb24taWNvblwiICpuZ0lmPVwiaXRlbS5zdWJzY3JpcHRpb25zLmxlbmd0aFwiXG4gICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19zdWJzY3JpcHRpb24uc3ZnJ1wiIFtpY29uVGl0bGVdPVwic3Vic2NyaXB0aW9uSWNvblRvb2x0aXBcIj48L2VvLWljb24+XG4gICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJyZXN1Ym1pc3Npb24taWNvblwiICpuZ0lmPVwiaXRlbS5yZXN1Ym1pc3Npb25zLmxlbmd0aFwiXG4gICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19yZXN1Ym1pc3Npb24uc3ZnJ1wiXG4gICAgICAgICAgICBbaWNvblRpdGxlXT1cIidlby5vYmplY3QucmVzdWJtaXNzaW9uLnRvb2x0aXAnIHwgdHJhbnNsYXRlOiB7ZHVlOiBpdGVtLnJlc3VibWlzc2lvbnNbMF0uZHVlIHwgbG9jYWxlRGF0ZSwgaW5mbzogaXRlbS5yZXN1Ym1pc3Npb25zWzBdLmluZm99XCI+PC9lby1pY29uPlxuICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwic2hhcmVkLWljb25cIiAqbmdJZj1cIml0ZW0uYWRkaXRpb25hbHZpc2liaWxpdHkubGVuZ3RoICYmICFyZWN5Y2xlYmluVGFic1wiXG4gICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19zaGFyZS5zdmcnXCJcbiAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiJ2VvLm9iamVjdC5zaGFyZWQudG9vbHRpcCcgfCB0cmFuc2xhdGVcIj48L2VvLWljb24+XG4gICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJsb2NrXCIgW25nQ2xhc3NdPVwieydteUxvY2snOiBpdGVtLmxvY2suYnkubWV9XCIgKm5nSWY9XCJpdGVtLmxvY2tcIlxuICAgICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfbG9jay5zdmcnXCIgW2ljb25UaXRsZV09XCJsb2NrVG9vbHRpcFwiPjwvZW8taWNvbj5cbiAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImZpbmFsaXplZC1pY29uXCIgKm5nSWY9XCJpdGVtLmlzRmluYWxpemVkXCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfZmluYWxpemVkLnN2ZydcIlxuICAgICAgICAgICAgW2ljb25UaXRsZV09XCInZW8ub2JqZWN0LmZpbmFsaXplZC50b29sdGlwJyB8IHRyYW5zbGF0ZVwiPjwvZW8taWNvbj5cbiAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cInNpZ25lZC1pY29uIGlucHJvY2Vzc1wiICpuZ0lmPVwiaXRlbS5kYXRhPy55dXZzaWdzdGF0dXMgPT09ICdpbnByb2Nlc3MnXCJcbiAgICAgICAgICAgIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3NpZ25hdHVyZS5zdmcnXCJcbiAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiJ2VvLm9iamVjdC5zaWduYXR1cmUudG9vbHRpcC5pbnByb2Nlc3MnIHwgdHJhbnNsYXRlXCI+PC9lby1pY29uPlxuICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwic2lnbmVkLWljb24gc2lnbmVkXCIgKm5nSWY9XCJpdGVtLmRhdGE/Lnl1dnNpZ3N0YXR1cyA9PT0gJ3NpZ25lZCdcIlxuICAgICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfc2lnbmF0dXJlLnN2ZydcIlxuICAgICAgICAgICAgW2ljb25UaXRsZV09XCInZW8ub2JqZWN0LnNpZ25hdHVyZS50b29sdGlwLnNpZ25lZCcgfCB0cmFuc2xhdGVcIj48L2VvLWljb24+XG4gICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJzaWduZWQtaWNvbiBzdG9wcGVkXCJcbiAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5kYXRhPy55dXZzaWdzdGF0dXMgPT09ICdjYW5jZWxlZCdcbiAgICAgICAgICAgICAgICAgICAgfHwgaXRlbS5kYXRhPy55dXZzaWdzdGF0dXMgPT09ICdyZXZpc2VkJyB8fCBpdGVtLmRhdGE/Lnl1dnNpZ3N0YXR1cyA9PT0gJ2Vycm9yJyB8fCBpdGVtLmRhdGE/Lnl1dnNpZ3N0YXR1cyA9PT0gJ2V4cGlyZWQnXCJcbiAgICAgICAgICAgIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3NpZ25hdHVyZS5zdmcnXCJcbiAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiJ2VvLm9iamVjdC5zaWduYXR1cmUudG9vbHRpcC5zdG9wcGVkJyB8IHRyYW5zbGF0ZVwiPjwvZW8taWNvbj5cbiAgICAgICAgICAgIEBpZiAoaXRlbS5wcm9jZXNzY291bnQgPiAwKSB7XG4gICAgICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwicmVzdWJtaXNzaW9uLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2JwbS5zdmcnXCJcbiAgICAgICAgICAgICAgICAgICAgICBbaWNvblRpdGxlXT1cIidlby5vYmplY3QucHJvY2Vzc2NvdW50LnRvb2x0aXAnIHwgdHJhbnNsYXRlIDoge3Byb2Nlc3Njb3VudDogaXRlbT8ucHJvY2Vzc2NvdW50LCB0ZXh0OiBwcm9jZXNzVG9vbHRpcH1cIj48L2VvLWljb24+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9oZWFkZXI+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZW8tYm9keVwiPlxuXG4gICAgPHl2Yy1zcGxpdC10YWJzIFtsYXlvdXRTZXR0aW5nc0lEXT1cImxheW91dFNldHRpbmdzSURcIiBbY29uZmlnXT1cInNwbGl0VGFiQ29uZmlnXCIgKm5nSWY9XCIhaXRlbTI7IGVsc2UgdHBsQ29tcGFyZVwiPlxuICAgICAgPCEtLSBzdW1tYXJ5IC0tPlxuICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwie2lkOiAnc3VtbWFyeScsIGxhYmVsOiAnZW8ub2JqZWN0LnN1bW1hcnkudGl0bGUnIHwgdHJhbnNsYXRlfVwiPlxuICAgICAgICA8ZW8taW5kZXhkYXRhLXN1bW1hcnkgW2luZGV4ZGF0YV09XCJpbmRleERhdGFQcmV2aWV3XCIgW2Jhc2VwYXJhbXNdPVwiYmFzZXBhcmFtc1wiIFtkbXNPYmplY3RdPVwiaXRlbVwiXG4gICAgICAgICAgW2VuYWJsZVZlcnNpb25zXT1cIiFlbmFibGVDb21wYXJlXCI+PC9lby1pbmRleGRhdGEtc3VtbWFyeT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8IS0tIG1ldGFkYXRhIC0tPlxuICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwie2lkOiAnaW5kZXhkYXRhJywgbGFiZWw6ICdlby5vYmplY3QuaW5kZXhkYXRhLnRpdGxlJyB8IHRyYW5zbGF0ZX1cIj5cbiAgICAgICAgPGVvLW9iamVjdC1mb3JtLWVkaXQgW2Rtc09iamVjdF09XCJpdGVtXCIgKGluZGV4RGF0YVNhdmVkKT1cIm9uSW5kZXhEYXRhU2F2ZWQoJGV2ZW50LCBpdGVtKVwiXG4gICAgICAgICAgW2Zvcm1EaXNhYmxlZF09XCJlbmFibGVDb21wYXJlXCI+PC9lby1vYmplY3QtZm9ybS1lZGl0PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwhLS0gcHJldmlldyAtLT5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbeXZjVGFiXT1cIntpZDogJ3ByZXZpZXcnLCBsYWJlbDogJ2VvLm9iamVjdC5jb250ZW50LnRpdGxlJyB8IHRyYW5zbGF0ZX1cIj5cbiAgICAgICAgPGVvLW1lZGlhIFt1c2VWZXJzaW9uXT1cIml0ZW0uaWQgPT09IGl0ZW0uY29udGVudD8uaWRcIiBbc2VhcmNoVGVybV09XCJzZWFyY2hUZXJtXCIgW2Rtc09iamVjdF09XCJpdGVtXCIgKGhhc0NvbnRlbnRMb2FkZWQpPVwiaGFzQ29udGVudExvYWRlZCgpXCJcbiAgICAgICAgICAjdmlld2VyPjwvZW8tbWVkaWE+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPCEtLSBoaXN0b3J5IC0tPlxuICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwie2lkOiAnaGlzdG9yeScsIGxhYmVsOiAnZW8ub2JqZWN0Lmhpc3RvcnkudGl0bGUnIHwgdHJhbnNsYXRlfVwiPlxuICAgICAgICA8ZW8tb2JqZWN0LWhpc3RvcnkgW3BhcmFtc109XCJ7aWQ6IGl0ZW0uaWQsIHR5cGU6IGl0ZW0udHlwZT8ucW5hbWV9XCI+XG4gICAgICAgIDwvZW8tb2JqZWN0LWhpc3Rvcnk+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPCEtLSBsaW5rcyAtLT5cbiAgICAgIDxuZy10ZW1wbGF0ZSBbeXZjVGFiXT1cIntpZDogJ2xpbmtzJywgbGFiZWw6ICdlby5vYmplY3QubGlua3MudGl0bGUnIHwgdHJhbnNsYXRlfVwiPlxuICAgICAgICA8ZW8tb2JqZWN0LWxpbmtzIFtkbXNPYmplY3RdPVwiaXRlbVwiPjwvZW8tb2JqZWN0LWxpbmtzPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwhLS0gc2lnbmF0dXJlIC0tPlxuICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwie2lkOiAnc2lnbmF0dXJlJywgbGFiZWw6ICdlby5vYmplY3Quc2lnbmF0dXJlLXRhYi50aXRsZScgfCB0cmFuc2xhdGV9XCI+XG4gICAgICAgIDxlby1zaWduYXR1cmUtdGFiIFtkbXNPYmplY3RdPVwiaXRlbVwiPjwvZW8tc2lnbmF0dXJlLXRhYj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDwhLS0gcGx1Z2luIHRhYnMgLS0+XG4gICAgICA8bmctdGVtcGxhdGUgKm5nRm9yPVwibGV0IHAgb2YgcGx1Z2luc1wiIFt5dmNUYWJdPVwie2lkOiBwLmlkLCBsYWJlbDogcC5pZCB8IHRyYW5zbGF0ZX1cIj5cbiAgICAgICAgPGVvLXBsdWdpbiBbaWRdPVwicC5pZFwiIFtwYXJlbnRdPVwidGhpc1wiPjwvZW8tcGx1Z2luPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgIDwveXZjLXNwbGl0LXRhYnM+XG5cbiAgICA8bmctdGVtcGxhdGUgI3RwbENvbXBhcmU+XG4gICAgICA8eXZjLXNwbGl0LXZpZXc+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSB5dmNTcGxpdEFyZWEgW3NpemVdPVwiNTBcIj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbXAtd3JhcHBlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNtcC1pbmZvXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2ZXJzaW9uXCI+e3snZW8udmVyc2lvbnMuZGV0YWlscy5sYWJlbCcgfCB0cmFuc2xhdGV9fTxzcGFuPnt7aXRlbS52ZXJzaW9ufX08L3NwYW4+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0cGxUYWJzOyBjb250ZXh0OiB7aXRlbSwgYmFzZXBhcmFtcywgaW5kZXhkYXRhOiBpbmRleERhdGFQcmV2aWV3LCBzZWFyY2hUZXJtfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSB5dmNTcGxpdEFyZWEgW3NpemVdPVwiNTBcIj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjbXAtd3JhcHBlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNtcC1pbmZvXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2ZXJzaW9uXCI+e3snZW8udmVyc2lvbnMuZGV0YWlscy5sYWJlbCcgfCB0cmFuc2xhdGV9fTxzcGFuPnt7aXRlbTIudmVyc2lvbn19PC9zcGFuPjwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidHBsVGFiczsgY29udGV4dDoge2l0ZW06IGl0ZW0yLCBiYXNlcGFyYW1zOiBiYXNlcGFyYW1zMiwgaW5kZXhkYXRhOiBpbmRleERhdGFQcmV2aWV3Miwgc2VhcmNoVGVybSwgZGlmZjoge2Jhc2VwYXJhbXMsIGJhc2VwYXJhbXMyLCBpbmRleGRhdGE6IGluZGV4RGF0YVByZXZpZXcsIGluZGV4ZGF0YTI6IGluZGV4RGF0YVByZXZpZXcyfX1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPC95dmMtc3BsaXQtdmlldz5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPG5nLXRlbXBsYXRlICN0cGxUYWJzIGxldC1pdGVtPVwiaXRlbVwiIGxldC1pbmRleGRhdGE9XCJpbmRleGRhdGFcIiBsZXQtYmFzZXBhcmFtcz1cImJhc2VwYXJhbXNcIlxuICAgICAgbGV0LXNlYXJjaFRlcm09XCJzZWFyY2hUZXJtXCIgbGV0LWRpZmY9XCJkaWZmXCI+XG4gICAgICA8eXZjLXRhYnMgKHRhYkNoYW5nZSk9XCJvbkNvbXBhcmVUYWJDaGFuZ2UoJGV2ZW50KVwiIGxheW91dFNldHRpbmdzSUQ9XCJ7eydlby5vYmplY3QuZGV0YWlscy5jb21wYXJlLnRhYnMnICsgKGRpZmYgPyAnLjAnIDogJy4xJyl9fVwiPlxuICAgICAgICA8IS0tIHN1bW1hcnkgLS0+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbeXZjVGFiXT1cIntpZDogJ3N1bW1hcnknLCBsYWJlbDogJ2VvLm9iamVjdC5zdW1tYXJ5LnRpdGxlJyB8IHRyYW5zbGF0ZX1cIj5cbiAgICAgICAgICA8ZW8taW5kZXhkYXRhLXN1bW1hcnkgW2luZGV4ZGF0YV09XCJpbmRleGRhdGFcIiBbYmFzZXBhcmFtc109XCJiYXNlcGFyYW1zXCIgW2Rtc09iamVjdF09XCJpdGVtXCI+PC9lby1pbmRleGRhdGEtc3VtbWFyeT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPCEtLSBtZXRhZGF0YSAtLT5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwie2lkOiAnaW5kZXhkYXRhJywgbGFiZWw6ICdlby5vYmplY3QuaW5kZXhkYXRhLnRpdGxlJyB8IHRyYW5zbGF0ZX1cIj5cbiAgICAgICAgICA8ZW8tb2JqZWN0LWZvcm0tZWRpdCBbZG1zT2JqZWN0XT1cIml0ZW1cIiAoaW5kZXhEYXRhU2F2ZWQpPVwib25JbmRleERhdGFTYXZlZCgkZXZlbnQsIGl0ZW0pXCIgW2Zvcm1EaXNhYmxlZF09XCJlbmFibGVDb21wYXJlXCI+PC9lby1vYmplY3QtZm9ybS1lZGl0PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICBAaWYgKCFpdGVtPy5pc0ZvbGRlcil7XG4gICAgICAgICAgPCEtLSBwcmV2aWV3IC0tPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbeXZjVGFiXT1cIntpZDogJ3ByZXZpZXcnLCBsYWJlbDogJ2VvLm9iamVjdC5jb250ZW50LnRpdGxlJyB8IHRyYW5zbGF0ZX1cIj5cbiAgICAgICAgICAgIDxlby1tZWRpYSBbdXNlVmVyc2lvbl09XCJ0cnVlXCIgW3NlYXJjaFRlcm1dPVwic2VhcmNoVGVybVwiIFtkbXNPYmplY3RdPVwiaXRlbVwiICN2aWV3ZXI+PC9lby1tZWRpYT5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwhLS0gc2lnbmF0dXJlIC0tPlxuICAgICAgICAgIEBpZiAoY2FwYWJpbGl0aWVzLnNpZ25pbmcpe1xuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwie2lkOiAnc2lnbmF0dXJlJywgbGFiZWw6ICdlby5vYmplY3Quc2lnbmF0dXJlLXRhYi50aXRsZScgfCB0cmFuc2xhdGV9XCI+XG4gICAgICAgICAgICAgIDxlby1zaWduYXR1cmUtdGFiIFtkbXNPYmplY3RdPVwiaXRlbVwiPjwvZW8tc2lnbmF0dXJlLXRhYj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIDwhLS0gY2hhbmdlcyAtLT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwiZGlmZlwiXG4gICAgICAgICAgW3l2Y1RhYl09XCJ7aWQ6ICdjaGFuZ2VzJywgbGFiZWw6ICdlby5vYmplY3QuY2hhbmdlcy50aXRsZScgfCB0cmFuc2xhdGV9XCI+XG4gICAgICAgICAgPGVvLWluZGV4ZGF0YS1zdW1tYXJ5IFtkaWZmXT1cImRpZmZcIiBbZW5hYmxlVmVyc2lvbnNdPVwiZmFsc2VcIiBbaXNDaGFuZ2VzVGFiXT1cInZlcnNpb25Db21wb25lbnRUYWJzXCIgW2Rtc09iamVjdF09XCJpdGVtXCI+PC9lby1pbmRleGRhdGEtc3VtbWFyeT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuXG4gICAgICA8L3l2Yy10YWJzPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNub0l0ZW0+XG4gIDxzcGFuIGNsYXNzPVwibm90LWZvdW5kXCIgKm5nSWY9XCJub2Rtc29iamVjdFwiIHRyYW5zbGF0ZT5lby5icG0ubm9kbXNvYmplY3Q8L3NwYW4+XG4gIDxlby1lcnJvci1tZXNzYWdlICpuZ0lmPVwiIXNob3dMb2FkZXJcIlxuICAgIFtlbXB0eVN0YXRlXT1cIntpY29uOiBlbXB0eVN0YXRlLmljb24sIHRleHQ6IGVtcHR5U3RhdGUudGV4dCwgY2xhc3NOYW1lOiBlbXB0eVN0YXRlLmNsYXNzTmFtZX1cIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCIuZXJyb3JcIj48L25nLWNvbnRlbnQ+XG4gIDwvZW8tZXJyb3ItbWVzc2FnZT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
535
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWRldGFpbHMvb2JqZWN0LWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWRldGFpbHMvb2JqZWN0LWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsRUFDVCxZQUFZLEVBQ2IsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQVVMLFVBQVUsRUFFVixnQkFBZ0IsRUFJaEIsWUFBWSxFQUVaLEtBQUssR0FDTixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQWEsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBQyxHQUFHLEVBQUUsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFakQsT0FBTyxFQUFDLFlBQVksRUFBRSxjQUFjLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUduRSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSx5REFBeUQsQ0FBQztBQUMxRixPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFHOUUsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFHdkUsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBRXpELE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsa0JBQWtCLEVBQTBCLE1BQU0sK0JBQStCLENBQUM7QUFDMUYsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0seUNB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YixLQUFLO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDaGlsZHJlblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25FeHRyYXMsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIEJhY2tlbmRTZXJ2aWNlLFxuICBCYXNlUGFyYW1zLFxuICBCcG1TZXJ2aWNlLFxuICBDYXBhYmlsaXRpZXMsXG4gIENhcGFiaWxpdGllc1NlcnZpY2UsXG4gIENvbmZpZyxcbiAgRG1zT2JqZWN0LFxuICBEbXNQYXJhbXMsXG4gIERtc1NlcnZpY2UsXG4gIEVuYWlvRXZlbnQsXG4gIEV2ZW50U2VydmljZSxcbiAgU3Vic2NyaXB0aW9uTW9kZSxcbiAgU3lzdGVtU2VydmljZSxcbiAgVHJhbnNsYXRlU2VydmljZSxcbiAgVXBsb2FkUmVnaXN0cnlTZXJ2aWNlLFxuICBVcGxvYWRUYXJnZXQsXG4gIFVzZXJTZXJ2aWNlLFxuICBVdGlscyxcbn0gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXAsIHRocm90dGxlVGltZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1VudGlsRGVzdHJveSwgdW50aWxEZXN0cm95ZWR9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSc7XG5pbXBvcnQge0FnZW50U2VydmljZX0gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvYWdlbnQvYWdlbnQuc2VydmljZSc7XG5pbXBvcnQge0VtcHR5U3RhdGV9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmludGVyZmFjZSc7XG5pbXBvcnQge0VtcHR5U3RhdGVTZXJ2aWNlfSBmcm9tICcuLi8uLi9lby1mcmFtZXdvcmstY29yZS9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7TG9jYWxlRGF0ZVBpcGV9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3BpcGVzL2xvY2FsZS1kYXRlLnBpcGUnO1xuaW1wb3J0IHtTZWxlY3Rpb25Db25maWcsIFNlbGVjdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3NlbGVjdGlvbi9zZWxlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQge0FjdGlvblNlcnZpY2V9IGZyb20gJy4uL2FjdGlvbnMvYWN0aW9uLXNlcnZpY2UvYWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtDb250ZW50UHJldmlld1NlcnZpY2V9IGZyb20gJy4uL21lZGlhL2NvbnRlbnQtcHJldmlldy5zZXJ2aWNlJztcbmltcG9ydCB7TWVkaWFDb21wb25lbnR9IGZyb20gJy4uL21lZGlhL21lZGlhLmNvbXBvbmVudCc7XG5pbXBvcnQge0dsb2JhbFNob3J0Y3V0Q29tcG9uZW50fSBmcm9tICcuLi9zaG9ydGN1dHMvZ2xvYmFsLXNob3J0Y3V0LWNvbXBvbmVudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHtTaG9ydGN1dH0gZnJvbSAnLi4vc2hvcnRjdXRzL3Nob3J0Y3V0LmludGVyZmFjZSc7XG5pbXBvcnQge0luZGV4RGF0YX0gZnJvbSAnLi4vdWkvaW5kZXhkYXRhLXN1bW1hcnkvaW5kZXhkYXRhLXN1bW1hcnkuY29tcG9uZW50JztcbmltcG9ydCB7VGFic30gZnJvbSAnQHl1dXZpcy9jb21wb25lbnRzL3RhYnMnO1xuaW1wb3J0IHtTcGxpdFRhYnNDb21wb25lbnQsIFNwbGl0VGFic0xheW91dFNldHRpbmdzfSBmcm9tICdAeXV1dmlzL2NvbXBvbmVudHMvc3BsaXQtdGFicyc7XG5pbXBvcnQge0Zhdm9yaXRlSWNvbkNvbXBvbmVudH0gZnJvbSAnLi9mYXZvcml0ZS1pY29uL2Zhdm9yaXRlLWljb24uY29tcG9uZW50JztcblxuQFVudGlsRGVzdHJveSgpXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlby1vYmplY3QtZGV0YWlscycsXG4gIHRlbXBsYXRlVXJsOiAnLi9vYmplY3QtZGV0YWlscy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL29iamVjdC1kZXRhaWxzLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW0NvbnRlbnRQcmV2aWV3U2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgT2JqZWN0RGV0YWlsc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBAVmlld0NoaWxkKCd2aWV3ZXInKSBwcmV2aWV3OiBNZWRpYUNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZChTcGxpdFRhYnNDb21wb25lbnQpIGVvU3BsaXRUYWJzOiBTcGxpdFRhYnNDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoRmF2b3JpdGVJY29uQ29tcG9uZW50KSBmYXZvcml0ZUljb24hOiBGYXZvcml0ZUljb25Db21wb25lbnQ7XG4gIEBWaWV3Q2hpbGRyZW4oVGFicykgdGFiQ29udGFpbmVyczogUXVlcnlMaXN0PFRhYnM+O1xuXG4gIEBJbnB1dCgpIHBsdWdpbnM6IGFueVtdO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MucmVmZXJlbmNlJykgaXNSZWZlcmVuY2U6IGJvb2xlYW47XG5cbiAgQElucHV0KCkgc2VhcmNoVGVybTogc3RyaW5nO1xuICBASW5wdXQoKSBlbmFibGVDb21wYXJlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHJlY3ljbGViaW5UYWJzID0gZmFsc2U7XG4gIEBJbnB1dCgpIHZlcnNpb25Db21wb25lbnRUYWJzID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVuYWJsZURpZmYgPSB0cnVlO1xuICBASW5wdXQoKSBlbmFibGVTeW5jID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNhY2hlTGF5b3V0OiBhbnk7XG5cbiAgQElucHV0KCkgYXBwbHlTZWxlY3Rpb246IFNlbGVjdGlvbkNvbmZpZztcbiAgQElucHV0KCkgcGFyc2VEbXNQYXJhbXM6IChkYXRhKSA9PiB7fSA9IHRoaXMuZ2V0RG1zUGFyYW1zO1xuICBAT3V0cHV0KCkgaGFzQ29udGVudDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIGl0ZW06IERtc09iamVjdDtcbiAgaW5kZXhEYXRhUHJldmlldzogSW5kZXhEYXRhO1xuICBiYXNlcGFyYW1zOiBCYXNlUGFyYW1zO1xuICBoYXNFcnJvciA9IGZhbHNlO1xuICBsb2NrVG9vbHRpcDogc3RyaW5nO1xuICBub2Rtc29iamVjdCA9IGZhbHNlO1xuICBzaG93TG9hZGVyID0gZmFsc2U7XG4gIHByb2Nlc3NUb29sdGlwID0gJyc7XG4gIHBhbmVsT3JkZXIgPSB7J21hc3Rlcic6IFsnc3VtbWFyeScsICdpbmRleGRhdGEnLCAnaGlzdG9yeScsICdsaW5rcycsICdzaWduYXR1cmUnXSwgJ3NsYXZlJzogWydwcmV2aWV3J119O1xuXG4gIGFnZW50SXNDb25uZWN0ZWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5hZ2VudFNlcnZpY2UuaXNDb25uZWN0ZWQkO1xuICBzdWJzY3JpcHRpb25JY29uVG9vbHRpcDogc3RyaW5nO1xuICBzcGxpdCA9IGZhbHNlO1xuICBzcGxpdFRhYkNvbmZpZzogU3BsaXRUYWJzTGF5b3V0U2V0dGluZ3M7XG5cbiAgaXRlbTI6IERtc09iamVjdDtcbiAgb25FbmFibGVTeW5jID0gdHJ1ZTtcbiAgdGFicyA9IFtdO1xuICBpbmRleERhdGFQcmV2aWV3MjogSW5kZXhEYXRhO1xuICBiYXNlcGFyYW1zMjogQmFzZVBhcmFtcztcblxuICBjYXBhYmlsaXRpZXM6IENhcGFiaWxpdGllcztcbiAgcHJldmVudENsaWNrVGhyb3VnaCA9IGZhbHNlO1xuXG4gIGRvd25sb2FkQWxsb3dlZDogYm9vbGVhbjtcblxuICBsYXlvdXRTZXR0aW5nc0lEID0gJyc7XG5cbiAgLy8gc2hvcnRjdXQgYWN0aW9uc1xuICBzaG9ydGN1dHM6IEdsb2JhbFNob3J0Y3V0Q29tcG9uZW50ID0ge1xuICAgIGlkOiAnZW8ub2JqZWN0LWRldGFpbHMnLFxuICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zaG9ydGN1dHMuZW8tb2JqZWN0LWRldGFpbHMudGl0bGUnKSxcbiAgICBsYWJlbEtleTogJ2VvLnNob3J0Y3V0cy5lby1vYmplY3QtZGV0YWlscy50aXRsZScsXG4gICAgYWN0aW9uczogW1xuICAgICAge1xuICAgICAgICBuYW1lOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zaG9ydGN1dHMuYWN0aW9uLm9wZW4uY29udGV4dCcpLFxuICAgICAgICBuYW1lS2V5OiAnZW8uc2hvcnRjdXRzLmFjdGlvbi5vcGVuLmNvbnRleHQnLFxuICAgICAgICBzaG9ydGN1dDogbmV3IFNob3J0Y3V0KCdPJywgZmFsc2UsIGZhbHNlKSxcbiAgICAgICAgb25FeGVjdXRlQWN0aW9uOiAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgdGhpcy5vcGVuT2JqZWN0KHRoaXMuaXRlbS5pZCwgdGhpcy5pdGVtLnR5cGVOYW1lKTtcbiAgICAgICAgfSxcbiAgICAgICAgaXNIaWRkZW46ICgpOiBib29sZWFuID0+IHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLm9iamVjdC5kZXRhaWxzLmFjdGlvbnMudGl0bGUnKSxcbiAgICAgICAgbmFtZUtleTogJ2VvLm9iamVjdC5kZXRhaWxzLmFjdGlvbnMudGl0bGUnLFxuICAgICAgICBzaG9ydGN1dDogbmV3IFNob3J0Y3V0KCdBJywgZmFsc2UsIGZhbHNlKSxcbiAgICAgICAgb25FeGVjdXRlQWN0aW9uOiAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgdGhpcy5zaG93QWN0aW9ucygpO1xuICAgICAgICB9LFxuICAgICAgICBpc0hpZGRlbjogKCk6IGJvb2xlYW4gPT4ge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uYWN0aW9uLmRvd25sb2FkLmRtcy5vYmplY3QuY29udGVudC5sYWJlbCcpLFxuICAgICAgICBuYW1lS2V5OiAnZW8uYWN0aW9uLmRvd25sb2FkLmRtcy5vYmplY3QuY29udGVudC5sYWJlbCcsXG4gICAgICAgIHNob3J0Y3V0OiBuZXcgU2hvcnRjdXQoJ0gnLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgICBvbkV4ZWN1dGVBY3Rpb246ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICB0aGlzLmRvd25sb2FkT3JpZ2luYWxDb250ZW50KCk7XG4gICAgICAgIH0sXG4gICAgICAgIGlzSGlkZGVuOiAoKTogYm9vbGVhbiA9PiB7XG4gICAgICAgICAgcmV0dXJuICEoIXRoaXMuZW5hYmxlQ29tcGFyZSAmJiB0aGlzLml0ZW0uY29udGVudD8uaWQpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5mYXZvcml0ZS5pY29uLmRpYWxvZy50aXRsZScpLFxuICAgICAgICBuYW1lS2V5OiAnZW8uZmF2b3JpdGUuaWNvbi5kaWFsb2cudGl0bGUnLFxuICAgICAgICBzaG9ydGN1dDogbmV3IFNob3J0Y3V0KCdOJywgZmFsc2UsIGZhbHNlKSxcbiAgICAgICAgb25FeGVjdXRlQWN0aW9uOiAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgdGhpcy5mYXZvcml0ZUljb24udG9nZ2xlKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGlzSGlkZGVuOiAoKTogYm9vbGVhbiA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5saXN0LnJlZnJlc2gnKSxcbiAgICAgICAgbmFtZUtleTogJ2VvLmxpc3QucmVmcmVzaCcsXG4gICAgICAgIHNob3J0Y3V0OiBuZXcgU2hvcnRjdXQoJ0InLCBmYWxzZSwgZmFsc2UpLFxuICAgICAgICBvbkV4ZWN1dGVBY3Rpb246ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICB0aGlzLnJlZnJlc2hDb250ZW50KCk7XG4gICAgICAgIH0sXG4gICAgICAgIGlzSGlkZGVuOiAoKTogYm9vbGVhbiA9PiB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgXVxuICB9O1xuXG4gIC8vIGdlbmVyYXRlIHVuaXF1ZSBpZCB0byBwYXNzIHRvIHVwbG9hZCByZWdpc3RyeVxuICBwcml2YXRlIHVwbG9hZFRhcmdldCA9IG5ldyBVcGxvYWRUYXJnZXQoVXRpbHMudXVpZCgpLCBVcGxvYWRUYXJnZXQuT0JKRUNUKTtcbiAgcHJpdmF0ZSBfZW1wdHlTdGF0ZTogRW1wdHlTdGF0ZSA9IHtpY29uOiAnaWNfbm8tZmlsZS5zdmcnLCB0ZXh0OiAnJywgY2xhc3NOYW1lOiAnJ307XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICAgICAgICAgIHByaXZhdGUgc3lzdGVtOiBTeXN0ZW1TZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIGVtcHR5OiBFbXB0eVN0YXRlU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBhZ2VudFNlcnZpY2U6IEFnZW50U2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBiYWNrZW5kOiBCYWNrZW5kU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBkbXNTZXJ2aWNlOiBEbXNTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIHNlbGVjdGlvbjogU2VsZWN0aW9uU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBhY3Rpb25TZXJ2aWNlOiBBY3Rpb25TZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIGNhcGFiaWxpdHlTZXJ2aWNlOiBDYXBhYmlsaXRpZXNTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIHVwbG9hZFJlZ2lzdHJ5OiBVcGxvYWRSZWdpc3RyeVNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgZXZlbnRTZXJ2aWNlOiBFdmVudFNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlnLFxuICAgICAgICAgICAgICBwcml2YXRlIGJwbVNlcnZpY2U6IEJwbVNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgICAgICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlKSB7XG5cbiAgICB0aGlzLnBhbmVsT3JkZXIgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0UmF3KCdvYmplY3REZXRhaWxzVGFicycpIHx8IHRoaXMucGFuZWxPcmRlcjtcblxuICAgIGNvbnN0IHJlcXVpcmVkUm9sZXMgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0UmF3KCdyZXF1aXJlZFJvbGVzRXhwb3J0Jyk7XG4gICAgdGhpcy5kb3dubG9hZEFsbG93ZWQgPSAhcmVxdWlyZWRSb2xlcyB8fCB0aGlzLnVzZXJTZXJ2aWNlLmdldEN1cnJlbnRVc2VyKCkucm9sZXMuc29tZShyb2xlID0+IHJlcXVpcmVkUm9sZXMuaW5jbHVkZXMocm9sZS5uYW1lKSk7XG5cbiAgICB0aGlzLmFnZW50U2VydmljZS5zZXRBZ2VudFN0YXR1cyh0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1zWydjb25uZWN0YWdlbnQnXSkuc3Vic2NyaWJlKChoYXNTdGF0dXM6IGJvb2xlYW4pID0+IHtcbiAgICAgIGlmIChoYXNTdGF0dXMpIHtcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHtxdWVyeVBhcmFtczoge2Nvbm5lY3RhZ2VudDogbnVsbH0sIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZSd9KS50aGVuKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS10eXBlJykgZ2V0IGRhdGFUeXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbSA/IHRoaXMuaXRlbS50eXBlTmFtZSA6ICdub25lJztcbiAgfVxuXG4gIGdldCBlbXB0eVN0YXRlKCk6IEVtcHR5U3RhdGUge1xuICAgIHJldHVybiB0aGlzLl9lbXB0eVN0YXRlO1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHJlZmVyZW5jZShpc1JlZjogYm9vbGVhbikge1xuICAgIHRoaXMuaXNSZWZlcmVuY2UgPSBpc1JlZjtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBlbXB0eVN0YXRlKGU6IEVtcHR5U3RhdGUpIHtcbiAgICB0aGlzLl9lbXB0eVN0YXRlID0gZSB8fCBFbXB0eVN0YXRlU2VydmljZS5kZWZhdWx0RW1wdHlTdGF0ZSgpO1xuICB9XG5cbiAgQElucHV0KCdwYXJhbXMnKVxuICBzZXQgZG1zUGFyYW1zKHBhcmFtczogRG1zUGFyYW1zKSB7XG4gICAgdGhpcy5sb2FkRG1zT2JqZWN0KHBhcmFtcykuc3Vic2NyaWJlKChyZXM6IERtc09iamVjdCkgPT4ge1xuICAgICAgdGhpcy5kbXNPYmplY3QgPSByZXM7XG4gICAgfSxcbiAgICAgIFV0aWxzLnRocm93KCgpID0+IHRoaXMub25IYXNFcnJvcih0cnVlLCB0cnVlLCBmYWxzZSkpXG4gICAgKTtcbiAgfVxuXG4gIEBJbnB1dCgncGFyYW1zMicpXG4gIHNldCBkbXNQYXJhbXMyKHBhcmFtczogRG1zUGFyYW1zKSB7XG4gICAgdGhpcy5sb2FkRG1zT2JqZWN0KHBhcmFtcylcbiAgICAgIC5zdWJzY3JpYmUoKHJlczogRG1zT2JqZWN0KSA9PiB7XG4gICAgICAgIHRoaXMuZG1zT2JqZWN0MiA9IHJlcztcbiAgICAgIH0sIFV0aWxzLnRocm93KCgpID0+IHRoaXMub25IYXNFcnJvcih0cnVlLCB0cnVlLCBmYWxzZSkpKTtcbiAgfVxuXG4gIEBJbnB1dCgnaXRlbScpXG4gIHNldCBkbXNPYmplY3QodjogRG1zT2JqZWN0KSB7XG4gICAgLy8gc2hvdyBsb2FkZXIgaWYgb2JqZWN0IGlzIGRpZmZlcmVudCBhbmQgZm9yY2UgY2hhbmdlIGRldGVjdGlvbiB0byBzaG93IGxvYWRlclxuICAgIHRoaXMuc2hvd0xvYWRlciA9IHRydWU7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgY29uc3QgaXNEaWZmZXJlbnQgPSB0aGlzLml0ZW0/LmlkICE9PSB2Py5pZDtcbiAgICB0aGlzLml0ZW0gPSB2O1xuICAgIHRoaXMub25IYXNFcnJvcigpO1xuICAgIHRoaXMubGF5b3V0U2V0dGluZ3NJRCA9IHRoaXMuY2FjaGVMYXlvdXQgKyAnLS0nICsgdj8udHlwZU5hbWUgKyAnLm9iamVjdC1kZXRhaWxzJztcbiAgICB0aGlzLnNldHVwQ2FwYWJpbGl0aWVzKCk7XG4gICAgaWYgKHRoaXMuaXRlbT8uaWQpIHtcbiAgICAgIHRoaXMuZmV0Y2hBdGl2ZVByb2Nlc3NEYXRhKHRoaXMuaXRlbT8uaWQpO1xuICAgIH1cbiAgICAvLyBwcmVwYXJlIGluZGV4ZGF0YSBwcmV2aWV3XG4gICAgdGhpcy5vbkluZGV4RGF0YVNhdmVkKG51bGwsIHRoaXMuaXRlbSk7XG4gICAgdGhpcy5ldmVudFNlcnZpY2UudHJpZ2dlcihFbmFpb0V2ZW50LkRNU19PQkpFQ1RfTE9BREVELCB0aGlzLml0ZW0pO1xuXG4gICAgaWYgKHRoaXMuaXRlbSkge1xuICAgICAgaWYgKGlzRGlmZmVyZW50ICYmIHRoaXMuaXRlbS5pc0FjdGl2ZVZlcnNpb24gJiYgIXRoaXMuZW5hYmxlQ29tcGFyZSkge1xuICAgICAgICB0aGlzLnVwbG9hZFRhcmdldC5yZWZlcmVuY2VPYmplY3QgPSB0aGlzLml0ZW07XG4gICAgICAgIHRoaXMudXBsb2FkVGFyZ2V0Lm9uVXBsb2FkU3VjY2VzcyA9ICgpID0+IHRoaXMuZG1zUGFyYW1zID0ge2lkOiB2LmlkLCB0eXBlOiB2LnR5cGVOYW1lfTtcbiAgICAgICAgdGhpcy51cGxvYWRSZWdpc3RyeS5yZWdpc3Rlcih0aGlzLnVwbG9hZFRhcmdldCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnVwbG9hZFJlZ2lzdHJ5LnVucmVnaXN0ZXIodGhpcy51cGxvYWRUYXJnZXQuaWQpO1xuICAgICAgICB0aGlzLnVwbG9hZFRhcmdldC5yZWZlcmVuY2VPYmplY3QgPSB0aGlzLml0ZW07XG4gICAgICAgIHRoaXMudXBsb2FkVGFyZ2V0Lm9uVXBsb2FkU3VjY2VzcyA9ICgpID0+IHRoaXMuZG1zUGFyYW1zID0ge2lkOiB2LmlkLCB0eXBlOiB2LnR5cGVOYW1lfTtcbiAgICAgICAgdGhpcy51cGxvYWRSZWdpc3RyeS5yZWdpc3Rlcih0aGlzLnVwbG9hZFRhcmdldCk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLml0ZW0ubG9jaykge1xuICAgICAgICB0aGlzLmxvY2tUb29sdGlwID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8ub2JqZWN0LmxvY2snKSArICcgJ1xuICAgICAgICAgICsgKG5ldyBMb2NhbGVEYXRlUGlwZSh0aGlzLnRyYW5zbGF0ZSkudHJhbnNmb3JtKHRoaXMuaXRlbS5sb2NrLm9uKSlcbiAgICAgICAgICArICcsICcgKyB0aGlzLml0ZW0ubG9jay5ieS5sYWJlbCArICcgKCcgKyB0aGlzLml0ZW0ubG9jay5ieS5uYW1lICsgJyknO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVtcHR5U3RhdGUgPSB0aGlzLmVtcHR5LmdldEVtcHR5U3RhdGUoMCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXRlbT8uc3Vic2NyaXB0aW9ucy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uSWNvblRvb2x0aXAgPSB0aGlzLmNyZWF0ZVN1YnNjcmlwdGlvbkljb25Ub29sdGlwKCk7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KCdpdGVtMicpXG4gIHNldCBkbXNPYmplY3QyKHY6IERtc09iamVjdCkge1xuICAgIHRoaXMuaXRlbTIgPSB2O1xuICAgIHRoaXMuZW5hYmxlU3luYyA9ICEhdGhpcy5pdGVtMj8udmVyc2lvbjtcbiAgICB0aGlzLm9uSGFzRXJyb3IoKTtcbiAgICB0aGlzLm9uSW5kZXhEYXRhU2F2ZWQobnVsbCwgdGhpcy5pdGVtMik7XG4gIH1cblxuICByZWZyZXNoQ29udGVudCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucHJldmVudENsaWNrVGhyb3VnaCkge1xuICAgICAgdGhpcy5wcmV2ZW50Q2xpY2tUaHJvdWdoID0gdHJ1ZTtcbiAgICAgIHRoaXMudXBkYXRlQ29udGVudCgpO1xuICAgIH1cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMucHJldmVudENsaWNrVGhyb3VnaCA9IGZhbHNlO1xuICAgIH0sIDUwMDApO1xuICB9XG5cbiAgbG9hZERtc09iamVjdChwYXJhbXM6IERtc1BhcmFtcyk6IE9ic2VydmFibGU8RG1zT2JqZWN0PiB7XG4gICAgaWYgKCF0aGlzLmVuYWJsZUNvbXBhcmUgJiYgcGFyYW1zKSB7XG4gICAgICBkZWxldGUgcGFyYW1zLnZlcnNpb247XG4gICAgfVxuICAgIC8vIGNoZWNrIGZvciB2YWxpZCBpZFxuICAgIHJldHVybiBwYXJhbXM/LmlkPy5sZW5ndGggPT09IDMyID8gdGhpcy5kbXNTZXJ2aWNlLmdldERtc09iamVjdEJ5UGFyYW1zKHBhcmFtcykgOiBvZihudWxsKTtcbiAgfVxuXG4gIGRvd25sb2FkT3JpZ2luYWxDb250ZW50KCk6IHZvaWQge1xuICAgIHRoaXMuYmFja2VuZC5kb3dubG9hZENvbnRlbnQoW3RoaXMuaXRlbV0pO1xuICB9XG5cbiAgc2hvd0FjdGlvbnMoKTogdm9pZCB7XG4gICAgY29uc3QgYWN0aW9ucyA9IFt0aGlzLml0ZW0sIHRoaXMuaXRlbTJdLmZpbHRlcih2ID0+IHYpO1xuICAgIHRoaXMuYWN0aW9uU2VydmljZS5zaG93QWN0aW9ucyhhY3Rpb25zLCAnRE1TX09CSkVDVCcpO1xuICB9XG5cbiAgb3Blbk9iamVjdChpZDogc3RyaW5nLCBfdHlwZT86IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zOiBOYXZpZ2F0aW9uRXh0cmFzID0ge3F1ZXJ5UGFyYW1zOiB7J3R5cGUnOiBfdHlwZX19O1xuICAgIHJldHVybiB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9vYmplY3QnLCBpZF0sIHF1ZXJ5UGFyYW1zKTtcbiAgfVxuXG4gIC8vIGV4ZWN1dGVkIHdoZW4gdGhlIGRtcyBvYmplY3QgY2hhbmdlZCBkdWUgdG8gc2F2aW5nIGl0cyBpbmRleGRhdGFcbiAgb25JbmRleERhdGFTYXZlZChmb3JtRGF0YTogYW55LCBpdGVtOiBEbXNPYmplY3QpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXRlbSkge1xuICAgICAgdGhpcy5pbmRleERhdGFQcmV2aWV3ID0gbnVsbDtcbiAgICAgIHRoaXMuYmFzZXBhcmFtcyA9IG51bGw7XG4gICAgfVxuICAgIGlmICghdGhpcy5pdGVtMikge1xuICAgICAgdGhpcy5pbmRleERhdGFQcmV2aWV3MiA9IG51bGw7XG4gICAgICB0aGlzLmJhc2VwYXJhbXMyID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIHRoaXMucHJlcGFyZUluZGV4RGF0YVByZXZpZXcoaXRlbSwgZm9ybURhdGEpXG4gICAgICAgIC5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgICAgaWYgKGl0ZW0gPT09IHRoaXMuaXRlbSkge1xuICAgICAgICAgICAgdGhpcy5pbmRleERhdGFQcmV2aWV3ID0gZGF0YS5pbmRleERhdGFQcmV2aWV3O1xuICAgICAgICAgICAgdGhpcy5iYXNlcGFyYW1zID0gZGF0YS5iYXNlcGFyYW1zO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmluZGV4RGF0YVByZXZpZXcyID0gZGF0YS5pbmRleERhdGFQcmV2aWV3O1xuICAgICAgICAgICAgdGhpcy5iYXNlcGFyYW1zMiA9IGRhdGEuYmFzZXBhcmFtcztcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGZldGNoQXRpdmVQcm9jZXNzRGF0YShvYmplY3RJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5icG1TZXJ2aWNlLmdldFByb2Nlc3NEYXRhKG9iamVjdElkKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgbGV0IGNvbnRlbnQgPSB7XG4gICAgICAgIG1vZGVsbmFtZTogcmVzLm1hcChpdGVtID0+IGl0ZW0ubW9kZWxuYW1lKSxcbiAgICAgICAgc3RhcnR0aW1lOiByZXMubWFwKGl0ZW0gPT4gbmV3IExvY2FsZURhdGVQaXBlKHRoaXMudHJhbnNsYXRlKS50cmFuc2Zvcm0oaXRlbS5zdGFydHRpbWUsICcnKSksXG4gICAgICAgIGVuZHRpbWU6IHJlcy5tYXAoaXRlbSA9PiBuZXcgTG9jYWxlRGF0ZVBpcGUodGhpcy50cmFuc2xhdGUpLnRyYW5zZm9ybShpdGVtLmVuZHRpbWUsICcnKSlcbiAgICAgIH07XG4gICAgICB0aGlzLnByb2Nlc3NUb29sdGlwID0gJ1xcbic7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbnRlbnQubW9kZWxuYW1lLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChjb250ZW50LmVuZHRpbWVbaV0pIHtcbiAgICAgICAgICB0aGlzLnByb2Nlc3NUb29sdGlwICs9IGNvbnRlbnQubW9kZWxuYW1lW2ldICsgJyB8ICcgKyBjb250ZW50LnN0YXJ0dGltZVtpXSArICcgLSAnICsgY29udGVudC5lbmR0aW1lW2ldICsgJ1xcbic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzVG9vbHRpcCArPSBjb250ZW50Lm1vZGVsbmFtZVtpXSArICcgfCAnICsgY29udGVudC5zdGFydHRpbWVbaV0gKyAnXFxuJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb25Db21wYXJlVGFiQ2hhbmdlKGV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZW5hYmxlU3luYyAmJiB0aGlzLm9uRW5hYmxlU3luYykge1xuICAgICAgdGhpcy50YWJDb250YWluZXJzLmZvckVhY2godCA9PiB7XG4gICAgICAgIGlmICh0LnNlbGVjdGVkVGFiICE9PSBldmVudCkge1xuICAgICAgICAgIHQuc2VsZWN0QnlJZChldmVudCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGlzSm91cm5hbE9iamVjdChpdGVtOiBEbXNPYmplY3QpOiBzdHJpbmcge1xuICAgIHJldHVybiBpdGVtLnR5cGUuc3VwZXJ0eXBlcy5maW5kKHNUID0+IHNUID09PSAnc3lzam91cm5hbG9iamVjdCcpO1xuICB9XG5cbiAgLy8gY3VzdG9tIGV2ZW50IGhhbmRsZXIgZm9yIGxheW91dCBzZXR0aW5ncyB0byBtYWtlIHN1cmUgcGx1Z2luIHRhYnMgYXJlIHNhdmVkXG4gIG9uTGF5b3V0U2V0dGluZ3NDaGFuZ2VkKGV2ZW50OiBTcGxpdFRhYnNMYXlvdXRTZXR0aW5ncyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxheW91dFNldHRpbmdzSUQpIHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMubGF5b3V0U2V0dGluZ3NJRCwgSlNPTi5zdHJpbmdpZnkoZXZlbnQpKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNhcGFiaWxpdGllcyA9IHRoaXMuY2FwYWJpbGl0eVNlcnZpY2UuZ2V0Q2FwYWJpbGl0aWVzKCk7XG4gICAgdGhpcy51cGRhdGVDb250ZW50KCk7XG5cbiAgICB0aGlzLmV2ZW50U2VydmljZVxuICAgICAgLm9uKEVuYWlvRXZlbnQuRE1TX09CSkVDVF9VUERBVEVEKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogYW55KSA9PiB7XG4gICAgICAgIGlmIChldmVudC5kYXRhICYmIHRoaXMuaXRlbSAmJiB0aGlzLml0ZW0uaWQgPT09IGV2ZW50LmRhdGEuaWQpIHtcbiAgICAgICAgICB0aGlzLmRtc09iamVjdCA9IHRoaXMuZG1zU2VydmljZS5jcmVhdGVMb2NhbENvcHlPZkRNU09iamVjdChldmVudC5kYXRhKTtcbiAgICAgICAgICBpZiAodGhpcy5wcmV2aWV3KSB7XG4gICAgICAgICAgICB0aGlzLnByZXZpZXcucmVmcmVzaCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB0aGlzLmV2ZW50U2VydmljZVxuICAgICAgLm9uKEVuYWlvRXZlbnQuSU5CT1hfSVRFTV9DT05GSVJNRUQpXG4gICAgICAucGlwZShcbiAgICAgICAgdW50aWxEZXN0cm95ZWQodGhpcylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuaXRlbSAmJiB0aGlzLml0ZW0uaWQgPT09IGV2ZW50LmRhdGEudGFyZ2V0LmlkKSB7XG4gICAgICAgICAgdGhpcy5kbXNQYXJhbXMgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBgaGFzQ29udGVudExvYWRlZGAgZXZlbnQgZW1pdHRlZCBieSB0aGUgYGVvLW1lZGlhYCBjb21wb25lbnQuXG4gICAqIEl0IHNldHMgdGhlIGBzaG93TG9hZGVyYCBwcm9wZXJ0eSB0byBmYWxzZSwgaW5kaWNhdGluZyB0aGF0IHRoZSBjb250ZW50IGhhcyBmaW5pc2hlZCBsb2FkaW5nLlxuICAgKi9cbiAgaGFzQ29udGVudExvYWRlZCgpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dMb2FkZXIgPSBmYWxzZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudXBsb2FkUmVnaXN0cnkudW5yZWdpc3Rlcih0aGlzLnVwbG9hZFRhcmdldC5pZCk7XG4gIH1cblxuICBwcml2YXRlIGdldERtc1BhcmFtcyhkYXRhOiBhbnkpOiBEbXNQYXJhbXMge1xuICAgIHJldHVybiBkYXRhID8gey4uLmRhdGEsIHR5cGU6IGRhdGEudHlwZU5hbWUgfHwgZGF0YS50eXBlfSA6IG51bGw7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNvbnRlbnQoKSB7XG5cbiAgICBpZiAodGhpcy5hcHBseVNlbGVjdGlvbikge1xuICAgICAgaWYgKHRoaXMuZW5hYmxlQ29tcGFyZSkge1xuICAgICAgICB0aGlzLnNlbGVjdGlvblxuICAgICAgICAgIC5maW5kKHRoaXMuYXBwbHlTZWxlY3Rpb24uaW4pXG4gICAgICAgICAgLnNlbGVjdGlvbiRcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpLFxuICAgICAgICAgICAgdGhyb3R0bGVUaW1lKDUwMClcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZSgocmVzOiBhbnlbXSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kbXNQYXJhbXMgPSB0aGlzLnBhcnNlRG1zUGFyYW1zKHJlc1swXSkgYXMgRG1zUGFyYW1zO1xuICAgICAgICAgICAgdGhpcy5kbXNQYXJhbXMyID0gdGhpcy5wYXJzZURtc1BhcmFtcyhyZXNbMV0pIGFzIERtc1BhcmFtcztcbiAgICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25cbiAgICAgICAgICAuZmluZCh0aGlzLmFwcGx5U2VsZWN0aW9uLmluKVxuICAgICAgICAgIC5mb2N1cyRcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHVudGlsRGVzdHJveWVkKHRoaXMpXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZERtc09iamVjdCh0aGlzLnBhcnNlRG1zUGFyYW1zKHJlcykgYXMgRG1zUGFyYW1zKS5zdWJzY3JpYmUoKHJlczI6IERtc09iamVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIHJlZnJlc2hpbmcgb2JqZWN0IGRldGFpbHMgbWF5IHJlc3VsdCBpbiBhbiB1cGRhdGVkIHZlcnNpb24gb2YgdGhlIG9iamVjdFxuICAgICAgICAgICAgICAgIC8vIHNvIHdlJ2xsIHVzZSB0aGlzIHRyaWdnZXIgdG8gYWxzbyBlbWl0dCB0aG9zZSBjaGFuZ2VzIHRvIG90aGVyIGxpc3RlbmluZyBjb21wb25lbnRzXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXRlbSAmJiByZXMyICYmICh0aGlzLml0ZW0uaWQgPT09IHJlczIuaWQpKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLmV2ZW50U2VydmljZS50cmlnZ2VyKEVuYWlvRXZlbnQuRE1TX09CSkVDVF9VUERBVEVELCByZXMyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5kbXNPYmplY3QgPSByZXMyO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBVdGlscy50aHJvdygoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwbG9hZFJlZ2lzdHJ5LnVucmVnaXN0ZXIodGhpcy51cGxvYWRUYXJnZXQuaWQpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9uSGFzRXJyb3IodHJ1ZSwgdHJ1ZSwgZmFsc2UpO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHByZXBhcmVJbmRleERhdGFQcmV2aWV3KGl0ZW06IERtc09iamVjdCwgZm9ybURhdGE/OiBhbnkpIHtcbiAgICBjb25zdCB7aWQsIGRhdGEsIHR5cGUsIGNyZWF0ZWQsIG1vZGlmaWVkLCBjb250ZW50LCBjb250ZW50RmlsZU5hbWUsIGNvbnRlbnRGaWxlU2l6ZSwgdmVyc2lvbn0gPSBpdGVtO1xuICAgIHJldHVybiB0aGlzLnN5c3RlbVxuICAgICAgLmdldE9iamVjdFR5cGVGb3JtKHR5cGUubmFtZSwgJ0VESVQnKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChmb3JtID0+IHtcbiAgICAgICAgICBsZXQgaW5kZXhEYXRhUHJldmlldyA9IHtcbiAgICAgICAgICAgIGZvcm0sXG4gICAgICAgICAgICBkYXRhOiBmb3JtRGF0YSB8fCBkYXRhXG4gICAgICAgICAgfTtcbiAgICAgICAgICBsZXQgYmFzZXBhcmFtczogQmFzZVBhcmFtcyA9IHtcbiAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgdHlwZTogdHlwZS5uYW1lLFxuICAgICAgICAgICAgY3JlYXRlZE9uOiBuZXcgRGF0ZShjcmVhdGVkLm9uKSxcbiAgICAgICAgICAgIG1vZGlmaWVkT246IG5ldyBEYXRlKG1vZGlmaWVkLm9uKSxcbiAgICAgICAgICAgIGNyZWF0ZWRCeTogYCR7Y3JlYXRlZC5ieS50aXRsZX0gKCR7Y3JlYXRlZC5ieS5uYW1lfSlgLFxuICAgICAgICAgICAgbW9kaWZpZWRCeTogYCR7bW9kaWZpZWQuYnkudGl0bGV9ICgke21vZGlmaWVkLmJ5Lm5hbWV9KWAsXG4gICAgICAgICAgICBjb250ZW50RmlsZU5hbWU6IGNvbnRlbnRGaWxlTmFtZSA/IGNvbnRlbnRGaWxlTmFtZSA6IG51bGwsXG4gICAgICAgICAgICBjb250ZW50RmlsZVNpemU6IGNvbnRlbnRGaWxlU2l6ZSA/IE51bWJlcihjb250ZW50RmlsZVNpemUpIDogbnVsbCxcbiAgICAgICAgICAgIHZlcnNpb246IHZlcnNpb24gfHwgMCxcbiAgICAgICAgICAgIG1pbWVHcm91cDogY29udGVudCA/IGNvbnRlbnQuY29udGVudHMgPyBjb250ZW50LmNvbnRlbnRzWzBdLm1pbWVncm91cCA6IG51bGwgOiBudWxsLFxuICAgICAgICAgICAgZGlnZXN0OiBjb250ZW50ID8gY29udGVudC5jb250ZW50cyA/IGNvbnRlbnQuY29udGVudHNbMF0uZGlnZXN0IDogbnVsbCA6IG51bGwsXG4gICAgICAgICAgICBjb250ZW50SWQ6IGNvbnRlbnQgPyBjb250ZW50LmNvbnRlbnRzID8gY29udGVudC5pZCA6IG51bGwgOiBudWxsLFxuICAgICAgICAgICAgbWltZVR5cGU6IGNvbnRlbnQgPyBjb250ZW50LmNvbnRlbnRzID8gY29udGVudC5jb250ZW50c1swXS5taW1ldHlwZSA6IG51bGwgOiBudWxsLFxuICAgICAgICAgIH07XG4gICAgICAgICAgcmV0dXJuIHtpbmRleERhdGFQcmV2aWV3LCBiYXNlcGFyYW1zfTtcbiAgICAgICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkhhc0Vycm9yKGhhc0Vycm9yID0gZmFsc2UsIG5vZG1zb2JqZWN0ID0gZmFsc2UsIHNob3dMb2FkZXIgPSBmYWxzZSkge1xuICAgIHRoaXMuaGFzRXJyb3IgPSBoYXNFcnJvcjtcbiAgICB0aGlzLm5vZG1zb2JqZWN0ID0gbm9kbXNvYmplY3Q7XG4gICAgdGhpcy5zaG93TG9hZGVyID0gc2hvd0xvYWRlcjtcbiAgICB0aGlzLmhhc0NvbnRlbnQuZW1pdCghaGFzRXJyb3IpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVTdWJzY3JpcHRpb25JY29uVG9vbHRpcCgpOiBzdHJpbmcge1xuICAgIGxldCB0b29sdGlwID0gJyc7XG4gICAgY29uc3QgbW9kZXMgPSB0aGlzLml0ZW0uc3Vic2NyaXB0aW9ucy5tYXAoc3Vic2NyaXB0aW9uID0+IHN1YnNjcmlwdGlvbi5tb2RlKTtcbiAgICBjb25zdCBzdWJzY3JpYmVkVG9BbGxDaGFuZ2VzID0gbW9kZXMuaW5jbHVkZXMoU3Vic2NyaXB0aW9uTW9kZS5ETVNfT0JKRUNUX0NIQU5HRUQpXG4gICAgICB8fCAobW9kZXMuaW5jbHVkZXMoU3Vic2NyaXB0aW9uTW9kZS5PTkxZX0RPQ1VNRU5UX0NPTlRFTlRfQ0hBTkdFRCkgJiYgbW9kZXMuaW5jbHVkZXMoU3Vic2NyaXB0aW9uTW9kZS5PTkxZX0lOREVYX0RBVEFfQ0hBTkdFRCkpO1xuICAgIGNvbnN0IHN1YnNjcmliZWRUb01ldGFDaGFuZ2VzT25seSA9IG1vZGVzLmluY2x1ZGVzKFN1YnNjcmlwdGlvbk1vZGUuT05MWV9JTkRFWF9EQVRBX0NIQU5HRUQpXG4gICAgICAmJiAhbW9kZXMuaW5jbHVkZXMoU3Vic2NyaXB0aW9uTW9kZS5PTkxZX0RPQ1VNRU5UX0NPTlRFTlRfQ0hBTkdFRClcbiAgICAgICYmICFtb2Rlcy5pbmNsdWRlcyhTdWJzY3JpcHRpb25Nb2RlLkRNU19PQkpFQ1RfQ0hBTkdFRCk7XG4gICAgY29uc3Qgc3Vic2NyaWJlZFRvQ29udGVudENoYW5nZXNPbmx5ID0gbW9kZXMuaW5jbHVkZXMoU3Vic2NyaXB0aW9uTW9kZS5PTkxZX0RPQ1VNRU5UX0NPTlRFTlRfQ0hBTkdFRClcbiAgICAgICYmICFtb2Rlcy5pbmNsdWRlcyhTdWJzY3JpcHRpb25Nb2RlLk9OTFlfSU5ERVhfREFUQV9DSEFOR0VEKVxuICAgICAgJiYgIW1vZGVzLmluY2x1ZGVzKFN1YnNjcmlwdGlvbk1vZGUuRE1TX09CSkVDVF9DSEFOR0VEKTtcbiAgICBpZiAoc3Vic2NyaWJlZFRvQWxsQ2hhbmdlcykge1xuICAgICAgdG9vbHRpcCA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLm9iamVjdC5zdWJzY3JpcHRpb24uaWNvbi50b29sdGlwLmFsbENoYW5nZXMnKTtcbiAgICB9IGVsc2UgaWYgKHN1YnNjcmliZWRUb01ldGFDaGFuZ2VzT25seSkge1xuICAgICAgdG9vbHRpcCA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLm9iamVjdC5zdWJzY3JpcHRpb24uaWNvbi50b29sdGlwLm1ldGEnKTtcbiAgICB9IGVsc2UgaWYgKHN1YnNjcmliZWRUb0NvbnRlbnRDaGFuZ2VzT25seSkge1xuICAgICAgdG9vbHRpcCA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLm9iamVjdC5zdWJzY3JpcHRpb24uaWNvbi50b29sdGlwLmNvbnRlbnQnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRvb2x0aXA7XG4gIH1cblxuICBwcml2YXRlIHNldHVwQ2FwYWJpbGl0aWVzKCkge1xuICAgIGNvbnN0IGJsb2NrID0gdGhpcy5jYXBhYmlsaXRpZXMgJiYgIXRoaXMuY2FwYWJpbGl0aWVzLnNpZ25pbmcgPyBbJ3NpZ25hdHVyZSddIDogW107XG4gICAgY29uc3QgY2FjaGVkT3JkZXIgPSB0aGlzLmxheW91dFNldHRpbmdzSUQgJiYgSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLmxheW91dFNldHRpbmdzSUQpKTtcbiAgICBjb25zdCBwcmltYXJ5ID0gY2FjaGVkT3JkZXI/LnByaW1hcnk/LnRhYnM7XG4gICAgY29uc3Qgc2Vjb25kYXJ5ID0gY2FjaGVkT3JkZXI/LnNlY29uZGFyeT8udGFicztcbiAgICBjb25zdCBwcmkgPSB0aGlzLnBhbmVsT3JkZXIubWFzdGVyIHx8IFtdO1xuICAgIGNvbnN0IHNlYyA9IHRoaXMucGFuZWxPcmRlci5zbGF2ZSB8fCBbXTtcbiAgICBjb25zdCBwbHVnaW5zID0gdGhpcy5wbHVnaW5zPy5tYXAocGwgPT4gcGwuaWQpIHx8IFtdO1xuXG4gICAgdGhpcy50YWJzID0gWy4uLnByaSwgLi4uc2VjLCAuLi5wbHVnaW5zXS5maWx0ZXIodCA9PiAhYmxvY2suaW5jbHVkZXModCkpO1xuXG4gICAgaWYgKHRoaXMudmVyc2lvbkNvbXBvbmVudFRhYnMpIHtcbiAgICAgIGlmICh0aGlzLml0ZW0/LmlzRm9sZGVyKSB7XG4gICAgICAgIHRoaXMudGFicyA9IHRoaXMudGFicy5maWx0ZXIodGFiID0+IFsnc3VtbWFyeScsICdpbmRleGRhdGEnXS5pbmNsdWRlcyh0YWIpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudGFicyA9IHRoaXMudGFicy5maWx0ZXIodGFiID0+IFsnc3VtbWFyeScsICdpbmRleGRhdGEnLCAncHJldmlldycsICdzaWduYXR1cmUnXS5pbmNsdWRlcyh0YWIpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBkaWZmID0gdGhpcy50YWJzLmZpbHRlcih0ID0+ICFwcmltYXJ5Py5pbmNsdWRlcyh0KSAmJiAhc2Vjb25kYXJ5Py5pbmNsdWRlcyh0KSk7XG4gICAgY29uc3QgcFRhYnNUZW1wID0gWy4uLnByaSwgLi4ucGx1Z2lucy5maWx0ZXIocGwgPT4gIXByaS5pbmNsdWRlcyhwbCkpXTtcbiAgICBjb25zdCBwVGFicyA9IHByaW1hcnkgPyBbLi4ucHJpbWFyeSwgLi4uZGlmZl0gOiBwVGFic1RlbXA7XG4gICAgY29uc3Qgc1RhYnMgPSBzZWNvbmRhcnkgfHwgc2VjO1xuXG4gICAgY29uc3QgcCA9IHBUYWJzLmZpbHRlcih0ID0+IHRoaXMudGFicy5pbmNsdWRlcyh0KSk7XG4gICAgY29uc3QgcyA9IHNUYWJzLmZpbHRlcih0ID0+IHRoaXMudGFicy5pbmNsdWRlcyh0KSk7XG5cbiAgICB0aGlzLnNwbGl0VGFiQ29uZmlnID0ge1xuICAgICAgcHJpbWFyeToge3RhYnM6IHAsIGFjdGl2ZTogcC5pbmNsdWRlcyhjYWNoZWRPcmRlcj8ucHJpbWFyeT8uYWN0aXZlKSA/IGNhY2hlZE9yZGVyPy5wcmltYXJ5Py5hY3RpdmUgOiBwWzBdIHx8ICcnfSxcbiAgICAgIHNlY29uZGFyeToge3RhYnM6IHMsIGFjdGl2ZTogcy5pbmNsdWRlcyhjYWNoZWRPcmRlcj8uc2Vjb25kYXJ5Py5hY3RpdmUpID8gY2FjaGVkT3JkZXI/LnNlY29uZGFyeT8uYWN0aXZlIDogc1swXSB8fCAnJ30sXG4gICAgICBzcGxpdDogY2FjaGVkT3JkZXI/LnNwbGl0XG4gICAgfTtcblxuICAgIC8vIGZvcmNlIHNhdmUgb2YgbGF5b3V0IHNldHRpbmdzIHRvIGluY2x1ZGUgcGx1Z2luIHRhYnNcbiAgICB0aGlzLm9uTGF5b3V0U2V0dGluZ3NDaGFuZ2VkKHRoaXMuc3BsaXRUYWJDb25maWcpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5lb1NwbGl0VGFicz8uYXBwbHlMYXlvdXRTZXR0aW5ncygpO1xuICAgIH0sIDMwMCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJsb2FkZXItb3ZlcmxheV9fbWFza1wiICpuZ0lmPVwic2hvd0xvYWRlclwiPlxuICA8ZW8tbG9hZGluZy1zcGlubmVyIGNsYXNzPVwib2JqZWN0LWRldGFpbF9fbG9hZGVyXCI+PC9lby1sb2FkaW5nLXNwaW5uZXI+XG48L2Rpdj5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtICYmICFoYXNFcnJvcjsgZWxzZSBub0l0ZW1cIj5cblxuICA8ZGl2IGNsYXNzPVwiZW8taGVhZCBlby1oZWFkLXRhYnNcIiBbZW9TaG9ydGN1dHNdPVwic2hvcnRjdXRzXCI+XG4gICAgPGhlYWRlciBjbGFzcz1cImVvLWhlYWRlclwiPlxuICAgICAgPGVvLWljb24gY2xhc3M9XCJlby1oZWFkZXItaWNvblwiIFtvYmplY3RUeXBlXT1cIml0ZW0udHlwZVwiIFtpY29uVGl0bGVdPVwiaXRlbS50eXBlLmxhYmVsXCI+PC9lby1pY29uPlxuICAgICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlci1pbmZvXCI+XG4gICAgICAgIDxoMiBjbGFzcz1cImVvLWhlYWRlci10aXRsZVwiPnt7aXRlbS50aXRsZX19PC9oMj5cbiAgICAgICAgPGgzIGNsYXNzPVwiZW8taGVhZGVyLXN1YnRpdGxlXCI+e3tpdGVtLmRlc2NyaXB0aW9ufX08L2gzPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJlby1oZWFkZXItYWN0aW9ucy1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVvLWhlYWRlci1hY3Rpb25zXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwiYnV0dG9uIHJlZnJlc2gtYnV0dG9uXCIgKm5nSWY9XCIhcmVjeWNsZWJpblRhYnNcIlxuICAgICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19yZWZyZXNoLnN2ZydcIiBbaWNvblRpdGxlXT1cIignZW8ubGlzdC5yZWZyZXNoJyB8IHRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2Rpc2FibGUtcmVmcmVzaCc6IHByZXZlbnRDbGlja1Rocm91Z2h9XCIgKGNsaWNrKT1cInJlZnJlc2hDb250ZW50KClcIj48L2VvLWljb24+XG4gICAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImJ1dHRvbiBzeW5jLXRhYi1idG5cIiAqbmdJZj1cImVuYWJsZUNvbXBhcmUgJiYgIXJlY3ljbGViaW5UYWJzXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydlbmFibGVkJzogb25FbmFibGVTeW5jLCdkaXNhYmxlJzogIWVuYWJsZVN5bmN9XCIgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfbGluay5zdmcnXCJcbiAgICAgICAgICAgICAgW2ljb25UaXRsZV09XCInZW8udmVyc2lvbnMuZGV0YWlsLmdsdWUudG9vbHRpcCcgfCB0cmFuc2xhdGVcIiAoY2xpY2spPVwib25FbmFibGVTeW5jID0gIW9uRW5hYmxlU3luY1wiPjwvZW8taWNvbj5cbiAgICAgICAgICAgIDxlby1mYXZvcml0ZS1pY29uIFtpdGVtXT1cIml0ZW1cIlxuICAgICAgICAgICAgICAqbmdJZj1cIiFlbmFibGVDb21wYXJlICYmICFyZWN5Y2xlYmluVGFicyAmJiBjYXBhYmlsaXRpZXMuZmF2b3JpdGVzICYmICFpc0pvdXJuYWxPYmplY3QoaXRlbSlcIj5cbiAgICAgICAgICAgIDwvZW8tZmF2b3JpdGUtaWNvbj5cbiAgICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwiYnV0dG9uIG9jLWJ1dHRvblwiICpuZ0lmPVwiZG93bmxvYWRBbGxvd2VkICYmICFlbmFibGVDb21wYXJlICYmIGl0ZW0uY29udGVudD8uaWRcIiAoY2xpY2spPVwiZG93bmxvYWRPcmlnaW5hbENvbnRlbnQoKVwiXG4gICAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiKCdlby5hY3Rpb24uZG93bmxvYWQuZG1zLm9iamVjdC5jb250ZW50LmxhYmVsJyB8IHRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19jb250ZW50LWRvd25sb2FkLnN2ZydcIj48L2VvLWljb24+XG4gICAgICAgICAgICA8ZW8tZWRpdC1pY29uIFtpdGVtXT1cIml0ZW1cIlxuICAgICAgICAgICAgICAqbmdJZj1cIiFlbmFibGVDb21wYXJlICYmICFyZWN5Y2xlYmluVGFicyAmJiBpdGVtLmNvbnRlbnQ/LmlkICYmIGl0ZW0ucmlnaHRzLmVkaXQgJiYgKGFnZW50SXNDb25uZWN0ZWQkIHwgYXN5bmMpXG4gICAgICAgICAgICAgICYmICFpdGVtLmlzRmluYWxpemVkICYmIGl0ZW0uZGF0YT8ueXV2c2lnc3RhdHVzICE9PSAnc2lnbmVkJyAmJiBpdGVtLmRhdGE/Lnl1dnNpZ3N0YXR1cyAhPT0gJ2lucHJvY2VzcycgJiYgIWl0ZW0ubG9ja1wiPlxuICAgICAgICAgICAgPC9lby1lZGl0LWljb24+XG4gICAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImJ1dHRvbiBhbS1idXR0b25cIiAqbmdJZj1cIiFyZWN5Y2xlYmluVGFic1wiIChjbGljayk9XCJzaG93QWN0aW9ucygpXCJcbiAgICAgICAgICAgICAgW2ljb25UaXRsZV09XCIoJ2VvLm9iamVjdC5kZXRhaWxzLmFjdGlvbnMudGl0bGUnIHwgdHJhbnNsYXRlKVwiXG4gICAgICAgICAgICAgIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX21vcmUuc3ZnJ1wiPjwvZW8taWNvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiZW8taGVhZGVyLXN0YXR1cy1pY29uc1wiPlxuICAgICAgICAgIDxhIGNsYXNzPVwiY29udGVudC1saW5rXCIgW3RpdGxlXT1cIidlby5vYmplY3QuY29udGVudGxpbmsudG9vbHRpcCcgfCB0cmFuc2xhdGVcIiAqbmdJZj1cIml0ZW0uY29udGVudD8ubGlua2VkXCJcbiAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIicvb2JqZWN0LycgKyBpdGVtLmNvbnRlbnQuaWRcIiBbcXVlcnlQYXJhbXNdPVwie3R5cGU6IGl0ZW0uY29udGVudC50eXBlfVwiPlxuICAgICAgICAgICAgPHNwYW4+e3snZW8ub2JqZWN0LmNvbnRlbnRsaW5rJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cInN1YnNjcmlwdGlvbi1pY29uXCIgKm5nSWY9XCJpdGVtLnN1YnNjcmlwdGlvbnMubGVuZ3RoXCJcbiAgICAgICAgICAgIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3N1YnNjcmlwdGlvbi5zdmcnXCIgW2ljb25UaXRsZV09XCJzdWJzY3JpcHRpb25JY29uVG9vbHRpcFwiPjwvZW8taWNvbj5cbiAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cInJlc3VibWlzc2lvbi1pY29uXCIgKm5nSWY9XCJpdGVtLnJlc3VibWlzc2lvbnMubGVuZ3RoXCJcbiAgICAgICAgICAgIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3Jlc3VibWlzc2lvbi5zdmcnXCJcbiAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiJ2VvLm9iamVjdC5yZXN1Ym1pc3Npb24udG9vbHRpcCcgfCB0cmFuc2xhdGU6IHtkdWU6IGl0ZW0ucmVzdWJtaXNzaW9uc1swXS5kdWUgfCBsb2NhbGVEYXRlLCBpbmZvOiBpdGVtLnJlc3VibWlzc2lvbnNbMF0uaW5mb31cIj48L2VvLWljb24+XG4gICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJzaGFyZWQtaWNvblwiICpuZ0lmPVwiaXRlbS5hZGRpdGlvbmFsdmlzaWJpbGl0eS5sZW5ndGggJiYgIXJlY3ljbGViaW5UYWJzXCJcbiAgICAgICAgICAgIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3NoYXJlLnN2ZydcIlxuICAgICAgICAgICAgW2ljb25UaXRsZV09XCInZW8ub2JqZWN0LnNoYXJlZC50b29sdGlwJyB8IHRyYW5zbGF0ZVwiPjwvZW8taWNvbj5cbiAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImxvY2tcIiBbbmdDbGFzc109XCJ7J215TG9jayc6IGl0ZW0ubG9jay5ieS5tZX1cIiAqbmdJZj1cIml0ZW0ubG9ja1wiXG4gICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19sb2NrLnN2ZydcIiBbaWNvblRpdGxlXT1cImxvY2tUb29sdGlwXCI+PC9lby1pY29uPlxuICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwiZmluYWxpemVkLWljb25cIiAqbmdJZj1cIml0ZW0uaXNGaW5hbGl6ZWRcIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19maW5hbGl6ZWQuc3ZnJ1wiXG4gICAgICAgICAgICBbaWNvblRpdGxlXT1cIidlby5vYmplY3QuZmluYWxpemVkLnRvb2x0aXAnIHwgdHJhbnNsYXRlXCI+PC9lby1pY29uPlxuICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwic2lnbmVkLWljb24gaW5wcm9jZXNzXCIgKm5nSWY9XCJpdGVtLmRhdGE/Lnl1dnNpZ3N0YXR1cyA9PT0gJ2lucHJvY2VzcydcIlxuICAgICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfc2lnbmF0dXJlLnN2ZydcIlxuICAgICAgICAgICAgW2ljb25UaXRsZV09XCInZW8ub2JqZWN0LnNpZ25hdHVyZS50b29sdGlwLmlucHJvY2VzcycgfCB0cmFuc2xhdGVcIj48L2VvLWljb24+XG4gICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJzaWduZWQtaWNvbiBzaWduZWRcIiAqbmdJZj1cIml0ZW0uZGF0YT8ueXV2c2lnc3RhdHVzID09PSAnc2lnbmVkJ1wiXG4gICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19zaWduYXR1cmUuc3ZnJ1wiXG4gICAgICAgICAgICBbaWNvblRpdGxlXT1cIidlby5vYmplY3Quc2lnbmF0dXJlLnRvb2x0aXAuc2lnbmVkJyB8IHRyYW5zbGF0ZVwiPjwvZW8taWNvbj5cbiAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cInNpZ25lZC1pY29uIHN0b3BwZWRcIlxuICAgICAgICAgICAgKm5nSWY9XCJpdGVtLmRhdGE/Lnl1dnNpZ3N0YXR1cyA9PT0gJ2NhbmNlbGVkJ1xuICAgICAgICAgICAgICAgICAgICB8fCBpdGVtLmRhdGE/Lnl1dnNpZ3N0YXR1cyA9PT0gJ3JldmlzZWQnIHx8IGl0ZW0uZGF0YT8ueXV2c2lnc3RhdHVzID09PSAnZXJyb3InIHx8IGl0ZW0uZGF0YT8ueXV2c2lnc3RhdHVzID09PSAnZXhwaXJlZCdcIlxuICAgICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfc2lnbmF0dXJlLnN2ZydcIlxuICAgICAgICAgICAgW2ljb25UaXRsZV09XCInZW8ub2JqZWN0LnNpZ25hdHVyZS50b29sdGlwLnN0b3BwZWQnIHwgdHJhbnNsYXRlXCI+PC9lby1pY29uPlxuICAgICAgICAgICAgQGlmIChpdGVtLnByb2Nlc3Njb3VudCA+IDApIHtcbiAgICAgICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJyZXN1Ym1pc3Npb24taWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfYnBtLnN2ZydcIlxuICAgICAgICAgICAgICAgICAgICAgIFtpY29uVGl0bGVdPVwiJ2VvLm9iamVjdC5wcm9jZXNzY291bnQudG9vbHRpcCcgfCB0cmFuc2xhdGUgOiB7cHJvY2Vzc2NvdW50OiBpdGVtPy5wcm9jZXNzY291bnQsIHRleHQ6IHByb2Nlc3NUb29sdGlwfVwiPjwvZW8taWNvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2hlYWRlcj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJlby1ib2R5XCI+XG5cbiAgICA8eXZjLXNwbGl0LXRhYnMgW2xheW91dFNldHRpbmdzSURdPVwibGF5b3V0U2V0dGluZ3NJRFwiIFtjb25maWddPVwic3BsaXRUYWJDb25maWdcIiAqbmdJZj1cIiFpdGVtMjsgZWxzZSB0cGxDb21wYXJlXCI+XG4gICAgICA8IS0tIHN1bW1hcnkgLS0+XG4gICAgICA8bmctdGVtcGxhdGUgW3l2Y1RhYl09XCJ7aWQ6ICdzdW1tYXJ5JywgbGFiZWw6ICdlby5vYmplY3Quc3VtbWFyeS50aXRsZScgfCB0cmFuc2xhdGV9XCI+XG4gICAgICAgIDxlby1pbmRleGRhdGEtc3VtbWFyeSBbaW5kZXhkYXRhXT1cImluZGV4RGF0YVByZXZpZXdcIiBbYmFzZXBhcmFtc109XCJiYXNlcGFyYW1zXCIgW2Rtc09iamVjdF09XCJpdGVtXCJcbiAgICAgICAgICBbZW5hYmxlVmVyc2lvbnNdPVwiIWVuYWJsZUNvbXBhcmVcIj48L2VvLWluZGV4ZGF0YS1zdW1tYXJ5PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwhLS0gbWV0YWRhdGEgLS0+XG4gICAgICA8bmctdGVtcGxhdGUgW3l2Y1RhYl09XCJ7aWQ6ICdpbmRleGRhdGEnLCBsYWJlbDogJ2VvLm9iamVjdC5pbmRleGRhdGEudGl0bGUnIHwgdHJhbnNsYXRlfVwiPlxuICAgICAgICA8ZW8tb2JqZWN0LWZvcm0tZWRpdCBbZG1zT2JqZWN0XT1cIml0ZW1cIiAoaW5kZXhEYXRhU2F2ZWQpPVwib25JbmRleERhdGFTYXZlZCgkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICBbZm9ybURpc2FibGVkXT1cImVuYWJsZUNvbXBhcmVcIj48L2VvLW9iamVjdC1mb3JtLWVkaXQ+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPCEtLSBwcmV2aWV3IC0tPlxuICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwie2lkOiAncHJldmlldycsIGxhYmVsOiAnZW8ub2JqZWN0LmNvbnRlbnQudGl0bGUnIHwgdHJhbnNsYXRlfVwiPlxuICAgICAgICA8ZW8tbWVkaWEgW3VzZVZlcnNpb25dPVwiaXRlbS5pZCA9PT0gaXRlbS5jb250ZW50Py5pZFwiIFtzZWFyY2hUZXJtXT1cInNlYXJjaFRlcm1cIiBbZG1zT2JqZWN0XT1cIml0ZW1cIiAoaGFzQ29udGVudExvYWRlZCk9XCJoYXNDb250ZW50TG9hZGVkKClcIlxuICAgICAgICAgICN2aWV3ZXI+PC9lby1tZWRpYT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8IS0tIGhpc3RvcnkgLS0+XG4gICAgICA8bmctdGVtcGxhdGUgW3l2Y1RhYl09XCJ7aWQ6ICdoaXN0b3J5JywgbGFiZWw6ICdlby5vYmplY3QuaGlzdG9yeS50aXRsZScgfCB0cmFuc2xhdGV9XCI+XG4gICAgICAgIDxlby1vYmplY3QtaGlzdG9yeSBbcGFyYW1zXT1cIntpZDogaXRlbS5pZCwgdHlwZTogaXRlbS50eXBlPy5xbmFtZX1cIj5cbiAgICAgICAgPC9lby1vYmplY3QtaGlzdG9yeT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8IS0tIGxpbmtzIC0tPlxuICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwie2lkOiAnbGlua3MnLCBsYWJlbDogJ2VvLm9iamVjdC5saW5rcy50aXRsZScgfCB0cmFuc2xhdGV9XCI+XG4gICAgICAgIDxlby1vYmplY3QtbGlua3MgW2Rtc09iamVjdF09XCJpdGVtXCI+PC9lby1vYmplY3QtbGlua3M+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPCEtLSBzaWduYXR1cmUgLS0+XG4gICAgICA8bmctdGVtcGxhdGUgW3l2Y1RhYl09XCJ7aWQ6ICdzaWduYXR1cmUnLCBsYWJlbDogJ2VvLm9iamVjdC5zaWduYXR1cmUtdGFiLnRpdGxlJyB8IHRyYW5zbGF0ZX1cIj5cbiAgICAgICAgPGVvLXNpZ25hdHVyZS10YWIgW2Rtc09iamVjdF09XCJpdGVtXCI+PC9lby1zaWduYXR1cmUtdGFiPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPCEtLSBwbHVnaW4gdGFicyAtLT5cbiAgICAgIDxuZy10ZW1wbGF0ZSAqbmdGb3I9XCJsZXQgcCBvZiBwbHVnaW5zXCIgW3l2Y1RhYl09XCJ7aWQ6IHAuaWQsIGxhYmVsOiBwLmlkIHwgdHJhbnNsYXRlfVwiPlxuICAgICAgICA8ZW8tcGx1Z2luIFtpZF09XCJwLmlkXCIgW3BhcmVudF09XCJ0aGlzXCI+PC9lby1wbHVnaW4+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPC95dmMtc3BsaXQtdGFicz5cblxuICAgIDxuZy10ZW1wbGF0ZSAjdHBsQ29tcGFyZT5cbiAgICAgIDx5dmMtc3BsaXQtdmlldz5cbiAgICAgICAgPG5nLXRlbXBsYXRlIHl2Y1NwbGl0QXJlYSBbc2l6ZV09XCI1MFwiPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNtcC13cmFwcGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY21wLWluZm9cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZlcnNpb25cIj57eydlby52ZXJzaW9ucy5kZXRhaWxzLmxhYmVsJyB8IHRyYW5zbGF0ZX19PHNwYW4+e3tpdGVtLnZlcnNpb259fTwvc3Bhbj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRwbFRhYnM7IGNvbnRleHQ6IHtpdGVtLCBiYXNlcGFyYW1zLCBpbmRleGRhdGE6IGluZGV4RGF0YVByZXZpZXcsIHNlYXJjaFRlcm19XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlIHl2Y1NwbGl0QXJlYSBbc2l6ZV09XCI1MFwiPlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNtcC13cmFwcGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY21wLWluZm9cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZlcnNpb25cIj57eydlby52ZXJzaW9ucy5kZXRhaWxzLmxhYmVsJyB8IHRyYW5zbGF0ZX19PHNwYW4+e3tpdGVtMi52ZXJzaW9ufX08L3NwYW4+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0cGxUYWJzOyBjb250ZXh0OiB7aXRlbTogaXRlbTIsIGJhc2VwYXJhbXM6IGJhc2VwYXJhbXMyLCBpbmRleGRhdGE6IGluZGV4RGF0YVByZXZpZXcyLCBzZWFyY2hUZXJtLCBkaWZmOiB7YmFzZXBhcmFtcywgYmFzZXBhcmFtczIsIGluZGV4ZGF0YTogaW5kZXhEYXRhUHJldmlldywgaW5kZXhkYXRhMjogaW5kZXhEYXRhUHJldmlldzJ9fVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8L3l2Yy1zcGxpdC12aWV3PlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8bmctdGVtcGxhdGUgI3RwbFRhYnMgbGV0LWl0ZW09XCJpdGVtXCIgbGV0LWluZGV4ZGF0YT1cImluZGV4ZGF0YVwiIGxldC1iYXNlcGFyYW1zPVwiYmFzZXBhcmFtc1wiXG4gICAgICBsZXQtc2VhcmNoVGVybT1cInNlYXJjaFRlcm1cIiBsZXQtZGlmZj1cImRpZmZcIj5cbiAgICAgIDx5dmMtdGFicyAodGFiQ2hhbmdlKT1cIm9uQ29tcGFyZVRhYkNoYW5nZSgkZXZlbnQpXCIgbGF5b3V0U2V0dGluZ3NJRD1cInt7J2VvLm9iamVjdC5kZXRhaWxzLmNvbXBhcmUudGFicycgKyAoZGlmZiA/ICcuMCcgOiAnLjEnKX19XCI+XG4gICAgICAgIDwhLS0gc3VtbWFyeSAtLT5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwie2lkOiAnc3VtbWFyeScsIGxhYmVsOiAnZW8ub2JqZWN0LnN1bW1hcnkudGl0bGUnIHwgdHJhbnNsYXRlfVwiPlxuICAgICAgICAgIDxlby1pbmRleGRhdGEtc3VtbWFyeSBbaW5kZXhkYXRhXT1cImluZGV4ZGF0YVwiIFtiYXNlcGFyYW1zXT1cImJhc2VwYXJhbXNcIiBbZG1zT2JqZWN0XT1cIml0ZW1cIj48L2VvLWluZGV4ZGF0YS1zdW1tYXJ5PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8IS0tIG1ldGFkYXRhIC0tPlxuICAgICAgICA8bmctdGVtcGxhdGUgW3l2Y1RhYl09XCJ7aWQ6ICdpbmRleGRhdGEnLCBsYWJlbDogJ2VvLm9iamVjdC5pbmRleGRhdGEudGl0bGUnIHwgdHJhbnNsYXRlfVwiPlxuICAgICAgICAgIDxlby1vYmplY3QtZm9ybS1lZGl0IFtkbXNPYmplY3RdPVwiaXRlbVwiIChpbmRleERhdGFTYXZlZCk9XCJvbkluZGV4RGF0YVNhdmVkKCRldmVudCwgaXRlbSlcIiBbZm9ybURpc2FibGVkXT1cImVuYWJsZUNvbXBhcmVcIj48L2VvLW9iamVjdC1mb3JtLWVkaXQ+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIEBpZiAoIWl0ZW0/LmlzRm9sZGVyKXtcbiAgICAgICAgICA8IS0tIHByZXZpZXcgLS0+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFt5dmNUYWJdPVwie2lkOiAncHJldmlldycsIGxhYmVsOiAnZW8ub2JqZWN0LmNvbnRlbnQudGl0bGUnIHwgdHJhbnNsYXRlfVwiPlxuICAgICAgICAgICAgPGVvLW1lZGlhIFt1c2VWZXJzaW9uXT1cInRydWVcIiBbc2VhcmNoVGVybV09XCJzZWFyY2hUZXJtXCIgW2Rtc09iamVjdF09XCJpdGVtXCIgI3ZpZXdlcj48L2VvLW1lZGlhPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPCEtLSBzaWduYXR1cmUgLS0+XG4gICAgICAgICAgQGlmIChjYXBhYmlsaXRpZXMuc2lnbmluZyl7XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgW3l2Y1RhYl09XCJ7aWQ6ICdzaWduYXR1cmUnLCBsYWJlbDogJ2VvLm9iamVjdC5zaWduYXR1cmUtdGFiLnRpdGxlJyB8IHRyYW5zbGF0ZX1cIj5cbiAgICAgICAgICAgICAgPGVvLXNpZ25hdHVyZS10YWIgW2Rtc09iamVjdF09XCJpdGVtXCI+PC9lby1zaWduYXR1cmUtdGFiPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgPCEtLSBjaGFuZ2VzIC0tPlxuICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJkaWZmXCJcbiAgICAgICAgICBbeXZjVGFiXT1cIntpZDogJ2NoYW5nZXMnLCBsYWJlbDogJ2VvLm9iamVjdC5jaGFuZ2VzLnRpdGxlJyB8IHRyYW5zbGF0ZX1cIj5cbiAgICAgICAgICA8ZW8taW5kZXhkYXRhLXN1bW1hcnkgW2RpZmZdPVwiZGlmZlwiIFtlbmFibGVWZXJzaW9uc109XCJmYWxzZVwiIFtpc0NoYW5nZXNUYWJdPVwidmVyc2lvbkNvbXBvbmVudFRhYnNcIiBbZG1zT2JqZWN0XT1cIml0ZW1cIj48L2VvLWluZGV4ZGF0YS1zdW1tYXJ5PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG5cbiAgICAgIDwveXZjLXRhYnM+XG4gICAgPC9uZy10ZW1wbGF0ZT5cblxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI25vSXRlbT5cbiAgPHNwYW4gY2xhc3M9XCJub3QtZm91bmRcIiAqbmdJZj1cIm5vZG1zb2JqZWN0XCIgdHJhbnNsYXRlPmVvLmJwbS5ub2Rtc29iamVjdDwvc3Bhbj5cbiAgPGVvLWVycm9yLW1lc3NhZ2UgKm5nSWY9XCIhc2hvd0xvYWRlclwiXG4gICAgW2VtcHR5U3RhdGVdPVwie2ljb246IGVtcHR5U3RhdGUuaWNvbiwgdGV4dDogZW1wdHlTdGF0ZS50ZXh0LCBjbGFzc05hbWU6IGVtcHR5U3RhdGUuY2xhc3NOYW1lfVwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIi5lcnJvclwiPjwvbmctY29udGVudD5cbiAgPC9lby1lcnJvci1tZXNzYWdlPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|