@versatiledatakit/data-pipelines
Version:
Data Pipelines help Data Engineers develop, deploy, run, and manage data processing workloads (called 'Data Job')
133 lines • 18.7 kB
JavaScript
/*
* Copyright 2023-2025 Broadcom
* SPDX-License-Identifier: Apache-2.0
*/
import { Component, Input } from '@angular/core';
import { DataJobExecutionStatus } from '../../../../../model';
import * as i0 from "@angular/core";
import * as i1 from "@clr/angular";
import * as i2 from "@angular/common";
import * as i3 from "@versatiledatakit/shared";
function DataJobExecutionStatusComponent_div_2_clr_signpost_content_1_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "clr-signpost-content", 6);
i0.ɵɵtext(1);
i0.ɵɵelement(2, "vdk-copy-to-clipboard-button", 7);
i0.ɵɵelementEnd();
} if (rf & 2) {
const ctx_r2 = i0.ɵɵnextContext(2);
i0.ɵɵproperty("clrPosition", "right-bottom");
i0.ɵɵadvance(1);
i0.ɵɵtextInterpolate1(" ", ctx_r2.jobMessage, " ");
i0.ɵɵadvance(1);
i0.ɵɵproperty("tooltip", "Copy to clipboard")("tooltipDirection", "right")("value", ctx_r2.jobMessage);
} }
function DataJobExecutionStatusComponent_div_2_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "div");
i0.ɵɵtemplate(1, DataJobExecutionStatusComponent_div_2_clr_signpost_content_1_Template, 3, 5, "clr-signpost-content", 5);
i0.ɵɵelementEnd();
} }
function DataJobExecutionStatusComponent_button_6_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "button", 8);
i0.ɵɵtext(1, " details ");
i0.ɵɵelementEnd();
} }
export class DataJobExecutionStatusComponent {
constructor() {
this.jobMessage = '';
this.showErrorMessage = false;
this.clrOpen = false;
this.statusPropertiesMapping = {
[DataJobExecutionStatus.SUBMITTED]: {
shape: 'hourglass',
status: '',
direction: '',
text: 'Submitted'
},
[DataJobExecutionStatus.RUNNING]: {
shape: 'play',
status: '',
direction: '',
text: 'Running'
},
[DataJobExecutionStatus.SUCCEEDED]: {
shape: 'success-standard',
status: 'is-success',
direction: '',
text: 'Success'
},
[DataJobExecutionStatus.CANCELLED]: {
shape: 'ban',
status: '',
direction: '',
text: 'Canceled'
},
[DataJobExecutionStatus.SKIPPED]: {
shape: 'angle-double',
status: '',
direction: 'right',
text: 'Skipped'
},
[DataJobExecutionStatus.USER_ERROR]: {
shape: 'error-standard',
status: 'is-danger',
direction: '',
text: 'User Error'
},
[DataJobExecutionStatus.PLATFORM_ERROR]: {
shape: 'error-standard',
status: 'is-warning',
direction: '',
text: 'Platform Error'
},
[DataJobExecutionStatus.FAILED]: {
shape: 'error-standard',
status: 'is-danger',
direction: '',
text: 'Error'
}
};
}
get executionStatusProperties() {
return this.statusPropertiesMapping[this.jobStatus] ?? {};
}
isJobStatusSuitableForMessageTooltip() {
return (this.jobStatus === DataJobExecutionStatus.PLATFORM_ERROR ||
this.jobStatus === DataJobExecutionStatus.USER_ERROR ||
this.jobStatus === DataJobExecutionStatus.SKIPPED);
}
isJobMessageDifferentFromStatus() {
const message = this.jobMessage?.toLowerCase();
return message !== 'user error' && message !== 'platform error' && message !== 'skipped' && message !== '';
}
}
DataJobExecutionStatusComponent.ɵfac = function DataJobExecutionStatusComponent_Factory(t) { return new (t || DataJobExecutionStatusComponent)(); };
DataJobExecutionStatusComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DataJobExecutionStatusComponent, selectors: [["lib-data-job-execution-status"]], inputs: { jobStatus: "jobStatus", jobMessage: "jobMessage", showErrorMessage: "showErrorMessage" }, decls: 7, vars: 7, consts: [[1, "job-execution-signpost"], [4, "ngIf"], [1, "job-execution-status__container"], ["data-cy", "data-pipelines-job-executions-status-filters", "clrSignpostTrigger", "", 1, "job-execution-status__text"], ["class", "btn btn-link btn-icon btn-sm job-execution-status__btn", "clrSignpostTrigger", "", 4, "ngIf"], [3, "clrPosition", 4, "clrIfOpen"], [3, "clrPosition"], [3, "tooltip", "tooltipDirection", "value"], ["clrSignpostTrigger", "", 1, "btn", "btn-link", "btn-icon", "btn-sm", "job-execution-status__btn"]], template: function DataJobExecutionStatusComponent_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelement(0, "clr-icon");
i0.ɵɵelementStart(1, "clr-signpost", 0);
i0.ɵɵtemplate(2, DataJobExecutionStatusComponent_div_2_Template, 2, 0, "div", 1);
i0.ɵɵelementStart(3, "div", 2)(4, "span", 3);
i0.ɵɵtext(5);
i0.ɵɵelementEnd();
i0.ɵɵtemplate(6, DataJobExecutionStatusComponent_button_6_Template, 2, 0, "button", 4);
i0.ɵɵelementEnd()();
} if (rf & 2) {
i0.ɵɵclassMap(ctx.executionStatusProperties.status);
i0.ɵɵattribute("shape", ctx.executionStatusProperties.shape)("dir", ctx.executionStatusProperties.direction);
i0.ɵɵadvance(2);
i0.ɵɵproperty("ngIf", ctx.showErrorMessage && ctx.isJobStatusSuitableForMessageTooltip() && ctx.isJobMessageDifferentFromStatus());
i0.ɵɵadvance(3);
i0.ɵɵtextInterpolate1("", ctx.executionStatusProperties.text, " ");
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", ctx.showErrorMessage && ctx.isJobStatusSuitableForMessageTooltip() && ctx.isJobMessageDifferentFromStatus());
} }, directives: [i1.ClrIconCustomTag, i1.ClrSignpost, i2.NgIf, i1.ClrIfOpen, i1.ClrSignpostContent, i3.VdkCopyToClipboardButtonComponent, i1.ClrSignpostTrigger], styles: [".job-execution-status__container[_ngcontent-%COMP%]{display:flex;align-items:baseline;flex-direction:column}.job-execution-status__container[_ngcontent-%COMP%] .job-execution-status__text[_ngcontent-%COMP%]{margin-left:.25rem}.job-execution-status__container[_ngcontent-%COMP%] .job-execution-status__btn[_ngcontent-%COMP%]{padding:0;margin-left:5px;text-transform:lowercase;font-size:12px;outline-color:transparent}[_nghost-%COMP%]{display:block;width:100%;height:100%}.job-execution-signpost[_ngcontent-%COMP%]{cursor:auto}"] });
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DataJobExecutionStatusComponent, [{
type: Component,
args: [{ selector: 'lib-data-job-execution-status', template: "<!--\n ~ Copyright 2023-2025 Broadcom\n ~ SPDX-License-Identifier: Apache-2.0\n -->\n\n<clr-icon\n [attr.shape]=\"executionStatusProperties.shape\"\n [class]=\"executionStatusProperties.status\"\n [attr.dir]=\"executionStatusProperties.direction\"\n></clr-icon>\n\n<clr-signpost class=\"job-execution-signpost\">\n <div\n *ngIf=\"\n showErrorMessage &&\n isJobStatusSuitableForMessageTooltip() &&\n isJobMessageDifferentFromStatus()\n \"\n >\n <clr-signpost-content [clrPosition]=\"'right-bottom'\" *clrIfOpen>\n {{ jobMessage }}\n <vdk-copy-to-clipboard-button\n [tooltip]=\"'Copy to clipboard'\"\n [tooltipDirection]=\"'right'\"\n [value]=\"jobMessage\"\n ></vdk-copy-to-clipboard-button>\n </clr-signpost-content>\n </div>\n <div class=\"job-execution-status__container\">\n <span\n class=\"job-execution-status__text\"\n data-cy=\"data-pipelines-job-executions-status-filters\"\n clrSignpostTrigger\n >{{ executionStatusProperties.text }}\n </span>\n <button\n *ngIf=\"showErrorMessage && isJobStatusSuitableForMessageTooltip() && isJobMessageDifferentFromStatus()\"\n class=\"btn btn-link btn-icon btn-sm job-execution-status__btn\"\n clrSignpostTrigger\n >\n details\n </button>\n </div>\n</clr-signpost>\n", styles: ["/*!\n * Copyright 2023-2025 Broadcom\n * SPDX-License-Identifier: Apache-2.0\n */.job-execution-status__container{display:flex;align-items:baseline;flex-direction:column}.job-execution-status__container .job-execution-status__text{margin-left:.25rem}.job-execution-status__container .job-execution-status__btn{padding:0;margin-left:5px;text-transform:lowercase;font-size:12px;outline-color:transparent}:host{display:block;width:100%;height:100%}.job-execution-signpost{cursor:auto}\n"] }]
}], null, { jobStatus: [{
type: Input
}], jobMessage: [{
type: Input
}], showErrorMessage: [{
type: Input
}] }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1qb2ItZXhlY3V0aW9uLXN0YXR1cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhLXBpcGVsaW5lcy9zcmMvbGliL2NvbXBvbmVudHMvZGF0YS1qb2IvcGFnZXMvZXhlY3V0aW9ucy9kYXRhLWpvYi1leGVjdXRpb24tc3RhdHVzL2RhdGEtam9iLWV4ZWN1dGlvbi1zdGF0dXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS1waXBlbGluZXMvc3JjL2xpYi9jb21wb25lbnRzL2RhdGEtam9iL3BhZ2VzL2V4ZWN1dGlvbnMvZGF0YS1qb2ItZXhlY3V0aW9uLXN0YXR1cy9kYXRhLWpvYi1leGVjdXRpb24tc3RhdHVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7SUNZdEQsK0NBQWdFO0lBQzVELFlBQ0E7SUFBQSxrREFJZ0M7SUFDcEMsaUJBQXVCOzs7SUFQRCw0Q0FBOEI7SUFDaEQsZUFDQTtJQURBLGtEQUNBO0lBQ0ksZUFBK0I7SUFBL0IsNkNBQStCLDZCQUFBLDRCQUFBOzs7SUFWM0MsMkJBTUM7SUFDRyx3SEFPdUI7SUFDM0IsaUJBQU07OztJQVFGLGlDQUlDO0lBQ0cseUJBQ0o7SUFBQSxpQkFBUzs7QURwQmpCLE1BQU0sT0FBTywrQkFBK0I7SUFMNUM7UUFPYSxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUNsQyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRWhCLDRCQUF1QixHQUErQztZQUNsRSxDQUFDLHNCQUFzQixDQUFDLFNB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LGdCQUFnQjtrQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAyMy0yMDI1IEJyb2FkY29tXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRGF0YUpvYkV4ZWN1dGlvblN0YXR1cyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL21vZGVsJztcblxudHlwZSBTdGF0dXNQcm9wZXJ0aWVzTWFwcGluZyA9IHtcbiAgICBzaGFwZTogc3RyaW5nO1xuICAgIHN0YXR1czogc3RyaW5nO1xuICAgIGRpcmVjdGlvbjogc3RyaW5nO1xuICAgIHRleHQ6IHN0cmluZztcbn07XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbGliLWRhdGEtam9iLWV4ZWN1dGlvbi1zdGF0dXMnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kYXRhLWpvYi1leGVjdXRpb24tc3RhdHVzLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9kYXRhLWpvYi1leGVjdXRpb24tc3RhdHVzLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRGF0YUpvYkV4ZWN1dGlvblN0YXR1c0NvbXBvbmVudCB7XG4gICAgQElucHV0KCkgam9iU3RhdHVzOiBEYXRhSm9iRXhlY3V0aW9uU3RhdHVzO1xuICAgIEBJbnB1dCgpIGpvYk1lc3NhZ2UgPSAnJztcbiAgICBASW5wdXQoKSBzaG93RXJyb3JNZXNzYWdlID0gZmFsc2U7XG4gICAgY2xyT3BlbiA9IGZhbHNlO1xuXG4gICAgc3RhdHVzUHJvcGVydGllc01hcHBpbmc6IHsgW2tleTogc3RyaW5nXTogU3RhdHVzUHJvcGVydGllc01hcHBpbmcgfSA9IHtcbiAgICAgICAgW0RhdGFKb2JFeGVjdXRpb25TdGF0dXMuU1VCTUlUVEVEXToge1xuICAgICAgICAgICAgc2hhcGU6ICdob3VyZ2xhc3MnLFxuICAgICAgICAgICAgc3RhdHVzOiAnJyxcbiAgICAgICAgICAgIGRpcmVjdGlvbjogJycsXG4gICAgICAgICAgICB0ZXh0OiAnU3VibWl0dGVkJ1xuICAgICAgICB9LFxuICAgICAgICBbRGF0YUpvYkV4ZWN1dGlvblN0YXR1cy5SVU5OSU5HXToge1xuICAgICAgICAgICAgc2hhcGU6ICdwbGF5JyxcbiAgICAgICAgICAgIHN0YXR1czogJycsXG4gICAgICAgICAgICBkaXJlY3Rpb246ICcnLFxuICAgICAgICAgICAgdGV4dDogJ1J1bm5pbmcnXG4gICAgICAgIH0sXG4gICAgICAgIFtEYXRhSm9iRXhlY3V0aW9uU3RhdHVzLlNVQ0NFRURFRF06IHtcbiAgICAgICAgICAgIHNoYXBlOiAnc3VjY2Vzcy1zdGFuZGFyZCcsXG4gICAgICAgICAgICBzdGF0dXM6ICdpcy1zdWNjZXNzJyxcbiAgICAgICAgICAgIGRpcmVjdGlvbjogJycsXG4gICAgICAgICAgICB0ZXh0OiAnU3VjY2VzcydcbiAgICAgICAgfSxcbiAgICAgICAgW0RhdGFKb2JFeGVjdXRpb25TdGF0dXMuQ0FOQ0VMTEVEXToge1xuICAgICAgICAgICAgc2hhcGU6ICdiYW4nLFxuICAgICAgICAgICAgc3RhdHVzOiAnJyxcbiAgICAgICAgICAgIGRpcmVjdGlvbjogJycsXG4gICAgICAgICAgICB0ZXh0OiAnQ2FuY2VsZWQnXG4gICAgICAgIH0sXG4gICAgICAgIFtEYXRhSm9iRXhlY3V0aW9uU3RhdHVzLlNLSVBQRURdOiB7XG4gICAgICAgICAgICBzaGFwZTogJ2FuZ2xlLWRvdWJsZScsXG4gICAgICAgICAgICBzdGF0dXM6ICcnLFxuICAgICAgICAgICAgZGlyZWN0aW9uOiAncmlnaHQnLFxuICAgICAgICAgICAgdGV4dDogJ1NraXBwZWQnXG4gICAgICAgIH0sXG4gICAgICAgIFtEYXRhSm9iRXhlY3V0aW9uU3RhdHVzLlVTRVJfRVJST1JdOiB7XG4gICAgICAgICAgICBzaGFwZTogJ2Vycm9yLXN0YW5kYXJkJyxcbiAgICAgICAgICAgIHN0YXR1czogJ2lzLWRhbmdlcicsXG4gICAgICAgICAgICBkaXJlY3Rpb246ICcnLFxuICAgICAgICAgICAgdGV4dDogJ1VzZXIgRXJyb3InXG4gICAgICAgIH0sXG4gICAgICAgIFtEYXRhSm9iRXhlY3V0aW9uU3RhdHVzLlBMQVRGT1JNX0VSUk9SXToge1xuICAgICAgICAgICAgc2hhcGU6ICdlcnJvci1zdGFuZGFyZCcsXG4gICAgICAgICAgICBzdGF0dXM6ICdpcy13YXJuaW5nJyxcbiAgICAgICAgICAgIGRpcmVjdGlvbjogJycsXG4gICAgICAgICAgICB0ZXh0OiAnUGxhdGZvcm0gRXJyb3InXG4gICAgICAgIH0sXG4gICAgICAgIFtEYXRhSm9iRXhlY3V0aW9uU3RhdHVzLkZBSUxFRF06IHtcbiAgICAgICAgICAgIHNoYXBlOiAnZXJyb3Itc3RhbmRhcmQnLFxuICAgICAgICAgICAgc3RhdHVzOiAnaXMtZGFuZ2VyJyxcbiAgICAgICAgICAgIGRpcmVjdGlvbjogJycsXG4gICAgICAgICAgICB0ZXh0OiAnRXJyb3InXG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgZ2V0IGV4ZWN1dGlvblN0YXR1c1Byb3BlcnRpZXMoKTogU3RhdHVzUHJvcGVydGllc01hcHBpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0dXNQcm9wZXJ0aWVzTWFwcGluZ1t0aGlzLmpvYlN0YXR1c10gPz8gKHt9IGFzIFN0YXR1c1Byb3BlcnRpZXNNYXBwaW5nKTtcbiAgICB9XG5cbiAgICBpc0pvYlN0YXR1c1N1aXRhYmxlRm9yTWVzc2FnZVRvb2x0aXAoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLmpvYlN0YXR1cyA9PT0gRGF0YUpvYkV4ZWN1dGlvblN0YXR1cy5QTEFURk9STV9FUlJPUiB8fFxuICAgICAgICAgICAgdGhpcy5qb2JTdGF0dXMgPT09IERhdGFKb2JFeGVjdXRpb25TdGF0dXMuVVNFUl9FUlJPUiB8fFxuICAgICAgICAgICAgdGhpcy5qb2JTdGF0dXMgPT09IERhdGFKb2JFeGVjdXRpb25TdGF0dXMuU0tJUFBFRFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGlzSm9iTWVzc2FnZURpZmZlcmVudEZyb21TdGF0dXMoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLmpvYk1lc3NhZ2U/LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIHJldHVybiBtZXNzYWdlICE9PSAndXNlciBlcnJvcicgJiYgbWVzc2FnZSAhPT0gJ3BsYXRmb3JtIGVycm9yJyAmJiBtZXNzYWdlICE9PSAnc2tpcHBlZCcgJiYgbWVzc2FnZSAhPT0gJyc7XG4gICAgfVxufVxuIiwiPCEtLVxuICAgfiBDb3B5cmlnaHQgMjAyMy0yMDI1IEJyb2FkY29tXG4gICB+IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG4gIC0tPlxuXG48Y2xyLWljb25cbiAgICBbYXR0ci5zaGFwZV09XCJleGVjdXRpb25TdGF0dXNQcm9wZXJ0aWVzLnNoYXBlXCJcbiAgICBbY2xhc3NdPVwiZXhlY3V0aW9uU3RhdHVzUHJvcGVydGllcy5zdGF0dXNcIlxuICAgIFthdHRyLmRpcl09XCJleGVjdXRpb25TdGF0dXNQcm9wZXJ0aWVzLmRpcmVjdGlvblwiXG4+PC9jbHItaWNvbj5cblxuPGNsci1zaWducG9zdCBjbGFzcz1cImpvYi1leGVjdXRpb24tc2lnbnBvc3RcIj5cbiAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICBzaG93RXJyb3JNZXNzYWdlICYmXG4gICAgICAgICAgICBpc0pvYlN0YXR1c1N1aXRhYmxlRm9yTWVzc2FnZVRvb2x0aXAoKSAmJlxuICAgICAgICAgICAgaXNKb2JNZXNzYWdlRGlmZmVyZW50RnJvbVN0YXR1cygpXG4gICAgICAgIFwiXG4gICAgPlxuICAgICAgICA8Y2xyLXNpZ25wb3N0LWNvbnRlbnQgW2NsclBvc2l0aW9uXT1cIidyaWdodC1ib3R0b20nXCIgKmNscklmT3Blbj5cbiAgICAgICAgICAgIHt7IGpvYk1lc3NhZ2UgfX1cbiAgICAgICAgICAgIDx2ZGstY29weS10by1jbGlwYm9hcmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBdPVwiJ0NvcHkgdG8gY2xpcGJvYXJkJ1wiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBEaXJlY3Rpb25dPVwiJ3JpZ2h0J1wiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cImpvYk1lc3NhZ2VcIlxuICAgICAgICAgICAgPjwvdmRrLWNvcHktdG8tY2xpcGJvYXJkLWJ1dHRvbj5cbiAgICAgICAgPC9jbHItc2lnbnBvc3QtY29udGVudD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiam9iLWV4ZWN1dGlvbi1zdGF0dXNfX2NvbnRhaW5lclwiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJqb2ItZXhlY3V0aW9uLXN0YXR1c19fdGV4dFwiXG4gICAgICAgICAgICBkYXRhLWN5PVwiZGF0YS1waXBlbGluZXMtam9iLWV4ZWN1dGlvbnMtc3RhdHVzLWZpbHRlcnNcIlxuICAgICAgICAgICAgY2xyU2lnbnBvc3RUcmlnZ2VyXG4gICAgICAgICAgICA+e3sgZXhlY3V0aW9uU3RhdHVzUHJvcGVydGllcy50ZXh0IH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJzaG93RXJyb3JNZXNzYWdlICYmIGlzSm9iU3RhdHVzU3VpdGFibGVGb3JNZXNzYWdlVG9vbHRpcCgpICYmIGlzSm9iTWVzc2FnZURpZmZlcmVudEZyb21TdGF0dXMoKVwiXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayBidG4taWNvbiBidG4tc20gam9iLWV4ZWN1dGlvbi1zdGF0dXNfX2J0blwiXG4gICAgICAgICAgICBjbHJTaWducG9zdFRyaWdnZXJcbiAgICAgICAgPlxuICAgICAgICAgICAgZGV0YWlsc1xuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvY2xyLXNpZ25wb3N0PlxuIl19