survey-creator-angular
Version:
Use SurveyJS Creator to create or edit JSON for SurveyJS Form Library.
79 lines • 16.6 kB
JavaScript
import { Component, ElementRef, Input, ViewChild } from "@angular/core";
import { AngularComponentFactory } from "survey-angular-ui";
import { QuestionAdornerViewModel } from "survey-creator-core";
import { CreatorModelComponent } from "./creator-model.component";
import * as i0 from "@angular/core";
import * as i1 from "survey-angular-ui";
import * as i2 from "./question-banner.component";
import * as i3 from "@angular/common";
export class QuestionDesignerComponent extends CreatorModelComponent {
constructor() {
super(...arguments);
this.adornerComponent = "";
}
get creator() {
return this.componentData.data;
}
get model() {
return this.componentData.model;
}
createModel() {
if (this.componentData) {
this.adorner = new QuestionAdornerViewModel(this.creator, this.model, null);
}
}
getPropertiesToTrack() {
return ["model", "creator"];
}
getModel() {
return this.adorner;
}
get placeholderComponent() {
return "";
}
get placeholderComponentData() {
return null;
}
get showPlaceholderComponent() {
return false;
}
selectQuestionType(event) {
var _a;
event.stopPropagation();
(_a = this.adorner.questionTypeSelectorModel) === null || _a === void 0 ? void 0 : _a.action(this.adorner.questionTypeSelectorModel, event);
}
addNewQuestion(event) {
event.stopPropagation();
this.adorner.addNewQuestion();
}
ngAfterViewChecked() {
var _a;
super.ngAfterViewChecked();
if (this.adorner && ((_a = this.container) === null || _a === void 0 ? void 0 : _a.nativeElement)) {
this.adorner.rootElement = this.container.nativeElement;
}
}
ngOnDestroy() {
super.ngOnDestroy();
this.adorner.dispose();
}
}
QuestionDesignerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: QuestionDesignerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
QuestionDesignerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: QuestionDesignerComponent, selector: "svc-question", inputs: { componentName: "componentName", componentData: "componentData" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ElementRef }], usesInheritance: true, ngImport: i0, template: "<ng-template #template>\n <div *ngIf=\"adorner\" class=\"svc-question__adorner\" [class]=\"adorner.rootCss()\" (dblclick)=\"adorner.dblclick($event)\"\n (mouseover)=\"adorner.hover($event, $event.currentTarget)\" (mouseleave)=\"adorner.hover($event, $event.currentTarget)\"\n [attr.data-sv-drop-target-survey-element]=\"adorner.element.name || null\" #container>\n <div *ngIf=\"adorner.showHiddenTitle\" [class]=\"adorner.cssCollapsedHiddenHeader\">\n <sv-ng-element-title *ngIf=\"!!model.hasTitle\" [element]=\"model\"></sv-ng-element-title>\n <div *ngIf=\"!model.hasTitle\" [class]=\"adorner.cssCollapsedHiddenTitle\">\n <span class=\"svc-fake-title\">{{model.name}}</span>\n </div>\n </div>\n <div [class]=\"adorner.css()\" [key2click]=\"{ disableTabStop: true }\" (click)=\"adorner.select(adorner, $event)\">\n <div class=\"svc-question__drop-indicator svc-question__drop-indicator--left\"></div>\n <div class=\"svc-question__drop-indicator svc-question__drop-indicator--right\"></div>\n <div class=\"svc-question__drop-indicator svc-question__drop-indicator--top\"></div>\n <div class=\"svc-question__drop-indicator svc-question__drop-indicator--bottom\"></div>\n <div *ngIf=\"adorner.allowDragging\" class=\"svc-question__drag-area\" (pointerdown)=\"adorner.onPointerDown($event)\">\n <svg class=\"svc-question__drag-element\" [iconName]=\"'icon-drag-area-indicator_24x16'\" [size]=\"'auto'\"\n sv-ng-svg-icon></svg>\n <div class=\"svc-question__top-actions\">\n <sv-action-bar [model]=\"adorner.topActionContainer\" [handleClick]=\"false\"></sv-action-bar>\n </div>\n </div>\n <ng-container *ngIf=\"adorner.needToRenderContent\">\n <ng-template [component]=\"{ name: componentName, data: componentData }\"></ng-template>\n <div *ngIf=\"adorner.isEmptyElement && !showPlaceholderComponent\" class=\"svc-panel__placeholder_frame-wrapper\">\n <div class=\"svc-panel__placeholder_frame\">\n <div class=\"svc-panel__placeholder\">{{ adorner.placeholderText }}</div>\n </div>\n </div>\n <ng-template *ngIf=\"adorner.isEmptyElement && !!showPlaceholderComponent\"\n [component]=\"{ name: placeholderComponent, data: placeholderComponentData }\">\n </ng-template>\n <ng-template *ngIf=\"adornerComponent\"\n [component]=\"{ name: adornerComponent, data: { adorner: adorner, question: model } }\">\n </ng-template>\n <svc-question-banner *ngIf=\"adorner.isBannerShowing\" [model]=\"adorner.createBannerParams()\">\n </svc-question-banner>\n <div class=\"svc-question__content-actions\" (focusin)=\"adorner.select(adorner, $event)\">\n <sv-action-bar [model]=\"adorner.actionContainer\" [handleClick]=\"false\"></sv-action-bar>\n </div>\n </ng-container>\n </div>\n </div>\n</ng-template>", styles: [":host { display: none; }"], components: [{ type: i1.ElementTitleComponent, selector: "sv-ng-element-title", inputs: ["element"] }, { type: i1.SvgIconComponent, selector: "'[sv-ng-svg-icon]'", inputs: ["size", "width", "height", "iconName", "partCss", "css", "title"] }, { type: i1.ActionBarComponent, selector: "sv-action-bar, sv-ng-action-bar", inputs: ["model", "handleClick"] }, { type: i2.QuestionBannerComponent, selector: "svc-question-banner", inputs: ["model"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.Key2ClickDirective, selector: "[key2click]", inputs: ["key2click"] }, { type: i1.DynamicComponentDirective, selector: "[component]", inputs: ["component"] }] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: QuestionDesignerComponent, decorators: [{
type: Component,
args: [{
selector: "svc-question",
templateUrl: "./question.component.html",
styles: [":host { display: none; }"]
}]
}], propDecorators: { componentName: [{
type: Input
}], componentData: [{
type: Input
}], container: [{
type: ViewChild,
args: ["container", { read: ElementRef }]
}] } });
AngularComponentFactory.Instance.registerComponent("svc-question", QuestionDesignerComponent);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3F1ZXN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uL3NyYy9xdWVzdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBdUMsTUFBTSxlQUFlLENBQUM7QUFDaEksT0FBTyxFQUFFLHVCQUF1QixFQUE2QyxNQUFNLG1CQUFtQixDQUFDO0FBRXZHLE9BQU8sRUFBc0Isd0JBQXdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7QUFPbEUsTUFBTSxPQUFPLHlCQUEwQixTQUFRLHFCQUErQztJQUw5Rjs7UUFzREUscUJBQWdCLEdBQUcsRUFBRSxDQUFDO0tBQ3ZCO0lBN0NDLElBQWMsT0FBTztRQUNuQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO0lBQ2pDLENBQUM7SUFDRCxJQUFXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDO0lBQ2xDLENBQUM7SUFDUyxXQUFXO1FBQ25CLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksd0JBQXdCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFPLElBQUksQ0FBQyxDQUFDO1NBQ2xGO0lBQ0gsQ0FBQztJQUNTLG9CQUFvQjtRQUM1QixPQUFPLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFDUyxRQUFRO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBQ0QsSUFBVyxvQkFBb0I7UUFDN0IsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBQ0QsSUFBVyx3QkFBd0I7UUFDakMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsSUFBVyx3QkFBd0I7UUFDakMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ00sa0JBQWtCLENBQUMsS0FBVTs7UUFDbEMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLE1BQUEsSUFBSSxDQUFDLE9BQU8sQ0FBQyx5QkFBeUIsMENBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMseUJBQXlCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUNNLGNBQWMsQ0FBQyxLQUFVO1FBQzlCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFDZSxrQkFBa0I7O1FBQ2hDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzNCLElBQUcsSUFBSSxDQUFDLE9BQU8sS0FBSSxNQUFBLElBQUksQ0FBQyxTQUFTLDBDQUFFLGFBQWEsQ0FBQSxFQUFFO1lBQ2hELElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDO1NBQ3pEO0lBQ0gsQ0FBQztJQUNRLFdBQVc7UUFDbEIsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDekIsQ0FBQzs7dUhBaERVLHlCQUF5QjsyR0FBekIseUJBQXlCLG1OQUdKLFVBQVUsb0RDZDVDLCsxRkEyQ2M7NEZEaENELHlCQUF5QjtrQkFMckMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsY0FBYztvQkFDeEIsV0FBVyxFQUFFLDJCQUEyQjtvQkFDeEMsTUFBTSxFQUFFLENBQUMsMEJBQTBCLENBQUM7aUJBQ3JDOzhCQUVVLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDd0MsU0FBUztzQkFBdEQsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFOztBQWlEOUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsRUFBRSx5QkFBeUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQW5ndWxhckNvbXBvbmVudEZhY3RvcnksIEJhc2VBbmd1bGFyLCBFbWJlZGRlZFZpZXdDb250ZW50Q29tcG9uZW50IH0gZnJvbSBcInN1cnZleS1hbmd1bGFyLXVpXCI7XG5pbXBvcnQgeyBQYWdlTW9kZWwsIFBhbmVsTW9kZWwsIFF1ZXN0aW9uLCBTdXJ2ZXlNb2RlbCB9IGZyb20gXCJzdXJ2ZXktY29yZVwiO1xuaW1wb3J0IHsgU3VydmV5Q3JlYXRvck1vZGVsLCBRdWVzdGlvbkFkb3JuZXJWaWV3TW9kZWwgfSBmcm9tIFwic3VydmV5LWNyZWF0b3ItY29yZVwiO1xuaW1wb3J0IHsgQ3JlYXRvck1vZGVsQ29tcG9uZW50IH0gZnJvbSBcIi4vY3JlYXRvci1tb2RlbC5jb21wb25lbnRcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcInN2Yy1xdWVzdGlvblwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL3F1ZXN0aW9uLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlczogW1wiOmhvc3QgeyBkaXNwbGF5OiBub25lOyB9XCJdXG59KVxuZXhwb3J0IGNsYXNzIFF1ZXN0aW9uRGVzaWduZXJDb21wb25lbnQgZXh0ZW5kcyBDcmVhdG9yTW9kZWxDb21wb25lbnQ8UXVlc3Rpb25BZG9ybmVyVmlld01vZGVsPiB7XG4gIEBJbnB1dCgpIGNvbXBvbmVudE5hbWUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGNvbXBvbmVudERhdGEhOiBhbnk7XG4gIEBWaWV3Q2hpbGQoXCJjb250YWluZXJcIiwgeyByZWFkOiBFbGVtZW50UmVmIH0pIGNvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+XG4gIHB1YmxpYyBhZG9ybmVyITogUXVlc3Rpb25BZG9ybmVyVmlld01vZGVsO1xuICBwcm90ZWN0ZWQgZ2V0IGNyZWF0b3IoKTogU3VydmV5Q3JlYXRvck1vZGVsIHtcbiAgICByZXR1cm4gdGhpcy5jb21wb25lbnREYXRhLmRhdGE7XG4gIH1cbiAgcHVibGljIGdldCBtb2RlbCgpOiBRdWVzdGlvbiB8IFBhbmVsTW9kZWwge1xuICAgIHJldHVybiB0aGlzLmNvbXBvbmVudERhdGEubW9kZWw7XG4gIH1cbiAgcHJvdGVjdGVkIGNyZWF0ZU1vZGVsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbXBvbmVudERhdGEpIHtcbiAgICAgIHRoaXMuYWRvcm5lciA9IG5ldyBRdWVzdGlvbkFkb3JuZXJWaWV3TW9kZWwodGhpcy5jcmVhdG9yLCB0aGlzLm1vZGVsLCA8YW55Pm51bGwpO1xuICAgIH1cbiAgfVxuICBwcm90ZWN0ZWQgZ2V0UHJvcGVydGllc1RvVHJhY2soKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbXCJtb2RlbFwiLCBcImNyZWF0b3JcIl07XG4gIH1cbiAgcHJvdGVjdGVkIGdldE1vZGVsKCk6IFF1ZXN0aW9uQWRvcm5lclZpZXdNb2RlbCB7XG4gICAgcmV0dXJuIHRoaXMuYWRvcm5lcjtcbiAgfVxuICBwdWJsaWMgZ2V0IHBsYWNlaG9sZGVyQ29tcG9uZW50KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFwiXCI7XG4gIH1cbiAgcHVibGljIGdldCBwbGFjZWhvbGRlckNvbXBvbmVudERhdGEoKTogYW55IHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBwdWJsaWMgZ2V0IHNob3dQbGFjZWhvbGRlckNvbXBvbmVudCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcHVibGljIHNlbGVjdFF1ZXN0aW9uVHlwZShldmVudDogYW55KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5hZG9ybmVyLnF1ZXN0aW9uVHlwZVNlbGVjdG9yTW9kZWw/LmFjdGlvbih0aGlzLmFkb3JuZXIucXVlc3Rpb25UeXBlU2VsZWN0b3JNb2RlbCwgZXZlbnQpO1xuICB9XG4gIHB1YmxpYyBhZGROZXdRdWVzdGlvbihldmVudDogYW55KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5hZG9ybmVyLmFkZE5ld1F1ZXN0aW9uKCk7XG4gIH1cbiAgcHVibGljIG92ZXJyaWRlIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ0FmdGVyVmlld0NoZWNrZWQoKTtcbiAgICBpZih0aGlzLmFkb3JuZXIgJiYgdGhpcy5jb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuYWRvcm5lci5yb290RWxlbWVudCA9IHRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuICB9XG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgdGhpcy5hZG9ybmVyLmRpc3Bvc2UoKTtcbiAgfVxuICBhZG9ybmVyQ29tcG9uZW50ID0gXCJcIjtcbn1cblxuQW5ndWxhckNvbXBvbmVudEZhY3RvcnkuSW5zdGFuY2UucmVnaXN0ZXJDb21wb25lbnQoXCJzdmMtcXVlc3Rpb25cIiwgUXVlc3Rpb25EZXNpZ25lckNvbXBvbmVudCk7XG5cbiIsIjxuZy10ZW1wbGF0ZSAjdGVtcGxhdGU+XG4gIDxkaXYgKm5nSWY9XCJhZG9ybmVyXCIgY2xhc3M9XCJzdmMtcXVlc3Rpb25fX2Fkb3JuZXJcIiBbY2xhc3NdPVwiYWRvcm5lci5yb290Q3NzKClcIiAoZGJsY2xpY2spPVwiYWRvcm5lci5kYmxjbGljaygkZXZlbnQpXCJcbiAgICAobW91c2VvdmVyKT1cImFkb3JuZXIuaG92ZXIoJGV2ZW50LCAkZXZlbnQuY3VycmVudFRhcmdldClcIiAobW91c2VsZWF2ZSk9XCJhZG9ybmVyLmhvdmVyKCRldmVudCwgJGV2ZW50LmN1cnJlbnRUYXJnZXQpXCJcbiAgICBbYXR0ci5kYXRhLXN2LWRyb3AtdGFyZ2V0LXN1cnZleS1lbGVtZW50XT1cImFkb3JuZXIuZWxlbWVudC5uYW1lIHx8IG51bGxcIiAjY29udGFpbmVyPlxuICAgIDxkaXYgKm5nSWY9XCJhZG9ybmVyLnNob3dIaWRkZW5UaXRsZVwiIFtjbGFzc109XCJhZG9ybmVyLmNzc0NvbGxhcHNlZEhpZGRlbkhlYWRlclwiPlxuICAgICAgPHN2LW5nLWVsZW1lbnQtdGl0bGUgKm5nSWY9XCIhIW1vZGVsLmhhc1RpdGxlXCIgW2VsZW1lbnRdPVwibW9kZWxcIj48L3N2LW5nLWVsZW1lbnQtdGl0bGU+XG4gICAgICAgIDxkaXYgKm5nSWY9XCIhbW9kZWwuaGFzVGl0bGVcIiBbY2xhc3NdPVwiYWRvcm5lci5jc3NDb2xsYXBzZWRIaWRkZW5UaXRsZVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ZjLWZha2UtdGl0bGVcIj57e21vZGVsLm5hbWV9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgW2NsYXNzXT1cImFkb3JuZXIuY3NzKClcIiBba2V5MmNsaWNrXT1cInsgZGlzYWJsZVRhYlN0b3A6IHRydWUgfVwiIChjbGljayk9XCJhZG9ybmVyLnNlbGVjdChhZG9ybmVyLCAkZXZlbnQpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic3ZjLXF1ZXN0aW9uX19kcm9wLWluZGljYXRvciBzdmMtcXVlc3Rpb25fX2Ryb3AtaW5kaWNhdG9yLS1sZWZ0XCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic3ZjLXF1ZXN0aW9uX19kcm9wLWluZGljYXRvciBzdmMtcXVlc3Rpb25fX2Ryb3AtaW5kaWNhdG9yLS1yaWdodFwiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInN2Yy1xdWVzdGlvbl9fZHJvcC1pbmRpY2F0b3Igc3ZjLXF1ZXN0aW9uX19kcm9wLWluZGljYXRvci0tdG9wXCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic3ZjLXF1ZXN0aW9uX19kcm9wLWluZGljYXRvciBzdmMtcXVlc3Rpb25fX2Ryb3AtaW5kaWNhdG9yLS1ib3R0b21cIj48L2Rpdj5cbiAgICAgIDxkaXYgKm5nSWY9XCJhZG9ybmVyLmFsbG93RHJhZ2dpbmdcIiBjbGFzcz1cInN2Yy1xdWVzdGlvbl9fZHJhZy1hcmVhXCIgKHBvaW50ZXJkb3duKT1cImFkb3JuZXIub25Qb2ludGVyRG93bigkZXZlbnQpXCI+XG4gICAgICAgIDxzdmcgY2xhc3M9XCJzdmMtcXVlc3Rpb25fX2RyYWctZWxlbWVudFwiIFtpY29uTmFtZV09XCInaWNvbi1kcmFnLWFyZWEtaW5kaWNhdG9yXzI0eDE2J1wiIFtzaXplXT1cIidhdXRvJ1wiXG4gICAgICAgICAgc3Ytbmctc3ZnLWljb24+PC9zdmc+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdmMtcXVlc3Rpb25fX3RvcC1hY3Rpb25zXCI+XG4gICAgICAgICAgPHN2LWFjdGlvbi1iYXIgW21vZGVsXT1cImFkb3JuZXIudG9wQWN0aW9uQ29udGFpbmVyXCIgW2hhbmRsZUNsaWNrXT1cImZhbHNlXCI+PC9zdi1hY3Rpb24tYmFyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFkb3JuZXIubmVlZFRvUmVuZGVyQ29udGVudFwiPlxuICAgICAgPG5nLXRlbXBsYXRlIFtjb21wb25lbnRdPVwieyBuYW1lOiBjb21wb25lbnROYW1lLCBkYXRhOiBjb21wb25lbnREYXRhIH1cIj48L25nLXRlbXBsYXRlPlxuICAgICAgPGRpdiAqbmdJZj1cImFkb3JuZXIuaXNFbXB0eUVsZW1lbnQgJiYgIXNob3dQbGFjZWhvbGRlckNvbXBvbmVudFwiIGNsYXNzPVwic3ZjLXBhbmVsX19wbGFjZWhvbGRlcl9mcmFtZS13cmFwcGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdmMtcGFuZWxfX3BsYWNlaG9sZGVyX2ZyYW1lXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN2Yy1wYW5lbF9fcGxhY2Vob2xkZXJcIj57eyBhZG9ybmVyLnBsYWNlaG9sZGVyVGV4dCB9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwiYWRvcm5lci5pc0VtcHR5RWxlbWVudCAmJiAhIXNob3dQbGFjZWhvbGRlckNvbXBvbmVudFwiXG4gICAgICAgIFtjb21wb25lbnRdPVwieyBuYW1lOiBwbGFjZWhvbGRlckNvbXBvbmVudCwgZGF0YTogcGxhY2Vob2xkZXJDb21wb25lbnREYXRhIH1cIj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJhZG9ybmVyQ29tcG9uZW50XCJcbiAgICAgICAgW2NvbXBvbmVudF09XCJ7IG5hbWU6IGFkb3JuZXJDb21wb25lbnQsIGRhdGE6IHsgYWRvcm5lcjogYWRvcm5lciwgcXVlc3Rpb246IG1vZGVsIH0gfVwiPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDxzdmMtcXVlc3Rpb24tYmFubmVyICpuZ0lmPVwiYWRvcm5lci5pc0Jhbm5lclNob3dpbmdcIiBbbW9kZWxdPVwiYWRvcm5lci5jcmVhdGVCYW5uZXJQYXJhbXMoKVwiPlxuICAgICAgPC9zdmMtcXVlc3Rpb24tYmFubmVyPlxuICAgICAgPGRpdiBjbGFzcz1cInN2Yy1xdWVzdGlvbl9fY29udGVudC1hY3Rpb25zXCIgKGZvY3VzaW4pPVwiYWRvcm5lci5zZWxlY3QoYWRvcm5lciwgJGV2ZW50KVwiPlxuICAgICAgICA8c3YtYWN0aW9uLWJhciBbbW9kZWxdPVwiYWRvcm5lci5hY3Rpb25Db250YWluZXJcIiBbaGFuZGxlQ2xpY2tdPVwiZmFsc2VcIj48L3N2LWFjdGlvbi1iYXI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+Il19