kwikid-forms 0.6.11 → 0.6.12
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/bundles/kwikid-forms.umd.js +31 -12
- package/bundles/kwikid-forms.umd.js.map +1 -1
- package/esm2015/lib/builder/builder-form-editor/builder-form-editor.component.js +2 -2
- package/esm2015/lib/builder/builder-form-editor/builder.form-editor.constants.js +6 -4
- package/esm2015/lib/builder/builder-form-list/builder-forms-list.component.js +1 -1
- package/esm2015/lib/builder/builder.component.js +1 -1
- package/esm2015/lib/renderer/config-converter/config-converter.constants.js +7 -3
- package/esm2015/lib/renderer/form-view/definitions/form-view.fields.definition.js +1 -1
- package/esm2015/lib/renderer/form-view/form-view.component.js +18 -5
- package/fesm2015/kwikid-forms.js +31 -12
- package/fesm2015/kwikid-forms.js.map +1 -1
- package/lib/builder/builder-form-editor/builder.form-editor.constants.d.ts +8 -0
- package/lib/renderer/config-converter/config-converter.constants.d.ts +4 -0
- package/lib/renderer/form-view/definitions/form-view.fields.definition.d.ts +4 -0
- package/package.json +1 -1
|
@@ -357,7 +357,7 @@ export class KwikIDBuilderFormEditorComponent {
|
|
|
357
357
|
}
|
|
358
358
|
}
|
|
359
359
|
/** @nocollapse */ KwikIDBuilderFormEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDBuilderFormEditorComponent, deps: [{ token: i1.KwikUILoaderService }, { token: i2.KwikIDFormBuilderFormEditorService }], target: i0.ɵɵFactoryTarget.Component });
|
|
360
|
-
/** @nocollapse */ KwikIDBuilderFormEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: KwikIDBuilderFormEditorComponent, selector: "kwikid-builder-form-editor", inputs: { activeFormConfig: "activeFormConfig" }, outputs: { onClickSaveActiveFormConfig: "onClickSaveActiveFormConfig" }, usesOnChanges: true, ngImport: i0, template: "<!-- Component Loader -->\n<kwikui-loader></kwikui-loader>\n\n<!-- Component Main View -->\n<div class=\"container\">\n <ng-container *ngIf=\"activeFormConfig; else noFormSelectedTemplate\">\n <header>\n <div>\n Editing Config of Form: <b>{{ activeFormConfig.props.title }}</b>\n </div>\n <div class=\"header-form-editor-btns\">\n <button (click)=\"handleOnClickPreview()\">preview</button>\n <div>Editor Type:</div>\n <select (change)=\"handleOnClickChangeActiveEditor($event.target.value)\">\n <option\n *ngFor=\"let option of editorTypeOptions\"\n [value]=\"option.key\"\n [selected]=\"option.key === activeEditorType\"\n >\n {{ option.label }}\n </option>\n </select>\n </div>\n </header>\n <main>\n <div\n class=\"form-config-fields\"\n *ngIf=\"activeEditorType == 'FIELDS'; else nonFieldsEditorTemplate\"\n >\n <ng-container *ngIf=\"rows.length <= 0\">\n <div class=\"no-fields disclaimer\">\n <div><p>Please add field to get started</p></div>\n <div class=\"icon\"><h1>+</h1></div>\n <button (click)=\"handleOnClickAddField()\">add field</button>\n </div>\n </ng-container>\n <table>\n <thead>\n <tr>\n <th *ngFor=\"let column of columns\">\n {{ column }}\n </th>\n </tr>\n </thead>\n <tbody>\n <ng-container\n *ngFor=\"let row of rows; let i = index; trackBy: trackByFn\"\n >\n <tr>\n <ng-container *ngFor=\"let column of columns; let j = index\">\n <td>\n <div [class]=\"column\">\n <ng-container\n *ngIf=\"\n column !== 'delete' &&\n column !== 'validators' &&\n column !== 'properties' &&\n column !== 'type' &&\n column !== 'disabled' &&\n column !== 'options'\n \"\n [ngTemplateOutlet]=\"getFieldTemplate\"\n [ngTemplateOutletContext]=\"{\n index: i,\n fieldValue: row[column],\n fieldKey: column,\n parentPath: ''\n }\"\n ></ng-container>\n <ng-container *ngIf=\"column === 'type'\">\n <ng-container\n [ngTemplateOutlet]=\"optionFieldTemplate\"\n [ngTemplateOutletContext]=\"{\n index: i,\n key: column,\n value: row[column],\n path: '',\n options: memoizedGetOptions(\n i,\n row[column],\n column,\n ''\n )\n }\"\n ></ng-container>\n </ng-container>\n <ng-container *ngIf=\"column === 'disabled'\">\n <ng-container\n [ngTemplateOutlet]=\"booleanFieldTemplate\"\n [ngTemplateOutletContext]=\"{\n index: i,\n key: column,\n value: row[column],\n path: '',\n options: memoizedGetOptions(\n i,\n row[column],\n column,\n ''\n )\n }\"\n ></ng-container>\n </ng-container>\n <ng-container *ngIf=\"column === 'delete'\">\n <button\n (click)=\"\n handleOnClickDeleteField({\n index: i,\n key: row['key']\n })\n \"\n [disabled]=\"rows.length === 1\"\n >\n delete\n </button>\n </ng-container>\n <ng-container *ngIf=\"column === 'validators'\">\n <button\n (click)=\"\n handleOnClickEditValidators({\n index: i,\n key: row['key'],\n type: row['type']\n })\n \"\n >\n edit\n </button>\n </ng-container>\n <ng-container *ngIf=\"column === 'properties'\">\n <button\n (click)=\"\n handleOnClickEditProperties({\n index: i,\n key: row['key'],\n type: row['type']\n })\n \"\n >\n edit\n </button>\n </ng-container>\n <ng-container\n *ngIf=\"row['type'] === 'radio' && column === 'options'\"\n >\n <button\n (click)=\"\n handleOnClickEditOptions({\n index: i,\n key: row['key'],\n type: row['type']\n })\n \"\n >\n add\n </button>\n </ng-container>\n <ng-container\n *ngIf=\"row['type'] === 'select' && column === 'options'\"\n >\n <button\n (click)=\"\n handleOnClickEditOptions({\n index: i,\n key: row['key'],\n type: row['type']\n })\n \"\n >\n add\n </button>\n </ng-container>\n </div>\n </td>\n </ng-container>\n </tr>\n </ng-container>\n </tbody>\n </table>\n <div class=\"add-field-btn-container\"> </div>\n </div>\n <ng-template #nonFieldsEditorTemplate>\n <div class=\"form-config-no-fields\">\n <div\n class=\"json-editor\"\n contenteditable=\"true\"\n (keyup)=\"\n handleOnClickSaveActiveFormConfig_NoFields(\n $event.target.innerHTML\n )\n \"\n >\n {{ activeFormConfig_NoFields | json }}\n </div>\n </div>\n </ng-template>\n </main>\n <footer>\n <button\n *ngIf=\"rows.length > 0\"\n (click)=\"handleOnClickAddField()\"\n >\n add field\n </button>\n <button\n (click)=\"handleOnClickSaveActiveFormConfig()\"\n [class.secondary]=\"!savedConfig\"\n >\n {{ savedConfig ? \"saved\" : \"unsaved\" }}\n </button>\n </footer>\n </ng-container>\n <ng-template #noFormSelectedTemplate>\n <div class=\"no-form-selected disclaimer\">\n <div class=\"icon\"><h1>➦</h1></div>\n <div><p>Please select a form to edit it's fields</p></div>\n </div>\n </ng-template>\n</div>\n\n<!-- Component Dialog -->\n<div\n class=\"modal\"\n [class.error]=\"dialogError === true\"\n *ngIf=\"\n dialogOpen ||\n showFieldConfigValidatorsConfigEditor ||\n showFieldConfigPropertiesConfigEditor ||\n showFieldConfigOptionsConfigEditor\n \"\n [@panelInOut]\n>\n <div class=\"modal-box\">\n <div\n class=\"modal-content\"\n *ngIf=\"dialogOpen\"\n >\n <div class=\"modal-heading\">\n <div class=\"modal-title\">\n {{ activeFormConfig.props.title }}'s Config Preview\n </div>\n <div class=\"modal-actions\">\n <button (click)=\"convertToMinifiedJson()\">minify</button>\n <button (click)=\"convertToCompleteJson()\">full</button>\n <button (click)=\"downloadJSON()\">download</button>\n <button (click)=\"copyToClipboard()\">copy</button>\n <button (click)=\"closeJSONPopup()\">close</button>\n </div>\n </div>\n <div class=\"modal-body\">\n <div class=\"json-editor\">\n <code>{{ activeFormConfig | json }}</code>\n </div>\n </div>\n </div>\n <div\n class=\"modal-content\"\n *ngIf=\"showFieldConfigValidatorsConfigEditor\"\n >\n <div class=\"modal-heading\">\n <div class=\"modal-title\">\n {{ activeFormConfig.props.title }}'s Validator Config Editor\n </div>\n <div class=\"modal-actions\">\n <button (click)=\"closeJSONPopup()\">close</button>\n </div>\n </div>\n <div class=\"modal-body\">\n <div\n class=\"json-editor\"\n contenteditable=\"true\"\n (keyup)=\"\n handleOnInputFieldConfigValidatorsConfig($event.target.innerHTML)\n \"\n >\n {{ this.activeFieldConfigValidatorsConfig | json }}\n </div>\n </div>\n </div>\n <div\n class=\"modal-content\"\n *ngIf=\"showFieldConfigPropertiesConfigEditor\"\n >\n <div class=\"modal-heading\">\n <div class=\"modal-title\">\n {{ activeFormConfig.props.title }}'s Properties Config Editor\n </div>\n <div class=\"modal-actions\">\n <button (click)=\"closeJSONPopup()\">close</button>\n </div>\n </div>\n <div class=\"modal-body\">\n <div\n class=\"json-editor\"\n contenteditable=\"true\"\n (keyup)=\"\n handleOnInputFieldConfigPropertiesConfig($event.target.innerHTML)\n \"\n >\n {{ this.activeFieldConfigPropertiesConfig | json }}\n </div>\n </div>\n </div>\n <div\n class=\"modal-content\"\n *ngIf=\"showFieldConfigOptionsConfigEditor\"\n >\n <div class=\"modal-heading\">\n <div class=\"modal-title\">\n {{ activeFormConfig.props.title }}'s Options Config Editor\n </div>\n <div class=\"modal-actions\">\n <button (click)=\"closeJSONPopup()\">close</button>\n </div>\n </div>\n <div class=\"modal-body\">\n <div\n class=\"json-editor\"\n contenteditable=\"true\"\n (keyup)=\"\n handleOnInputFieldConfigOptionsConfig($event.target.innerHTML)\n \"\n >\n {{ this.activeFieldConfigOptionsConfig | json }}\n </div>\n </div>\n </div>\n </div>\n</div>\n<!-- END -->\n\n<!-- Template for rendering different field types -->\n<!-- General Field Template -->\n<ng-template\n #getFieldTemplate\n let-index=\"index\"\n let-value=\"fieldValue\"\n let-key=\"fieldKey\"\n let-path=\"parentPath\"\n>\n <div>\n <ng-container\n [ngTemplateOutlet]=\"\n isObject(value) ? objectFieldTemplate : notObjectFieldTemplate\n \"\n [ngTemplateOutletContext]=\"{\n index: index,\n fieldValue: value,\n fieldKey: key,\n parentPath: path\n }\"\n >\n </ng-container>\n </div>\n</ng-template>\n\n<!-- Object Type Field Template -->\n<ng-template\n #objectFieldTemplate\n let-index=\"index\"\n let-value=\"fieldValue\"\n let-key=\"fieldKey\"\n let-path=\"parentPath\"\n>\n <ng-container *ngFor=\"let item of value | keyvalue\">\n <ng-container\n [ngTemplateOutlet]=\"getFieldTemplate\"\n [ngTemplateOutletContext]=\"{\n index: index,\n fieldValue: item.value,\n fieldKey: item.key,\n parentPath: path === '' ? key : path + '.' + key\n }\"\n >\n </ng-container>\n </ng-container>\n</ng-template>\n\n<!-- Non Object Type Field Template -->\n<ng-template\n #notObjectFieldTemplate\n let-index=\"index\"\n let-value=\"fieldValue\"\n let-key=\"fieldKey\"\n let-path=\"parentPath\"\n>\n <div>\n <ng-container *ngIf=\"isOptions(index, value, key, path)\">\n <ng-container\n [ngTemplateOutlet]=\"optionFieldTemplate\"\n [ngTemplateOutletContext]=\"{\n index: index,\n key: key,\n value: value,\n path: path,\n options: memoizedGetOptions(index, value, key, path)\n }\"\n ></ng-container>\n </ng-container>\n <ng-container\n *ngIf=\"!isOptions(index, value, key, path) && isString(value)\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n textFieldTemplate;\n context: { index: index, key: key, value: value, path: path }\n \"\n ></ng-container>\n </ng-container>\n <ng-container\n *ngIf=\"!isOptions(index, value, key, path) && isNumber(value)\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n numberFieldTemplate;\n context: { index: index, key: key, value: value, path: path }\n \"\n ></ng-container>\n </ng-container>\n </div>\n</ng-template>\n\n<!-- Non Object Type Field :: Options Field Template -->\n<ng-template\n #optionFieldTemplate\n let-index=\"index\"\n let-key=\"key\"\n let-value=\"value\"\n let-path=\"path\"\n let-options=\"options\"\n>\n <div class=\"field-container options\">\n <select\n (change)=\"handleOnInput({ index, key, value: { previous: value, new: $event.target.value }, path })\"\n >\n <option\n *ngFor=\"let option of options\"\n [value]=\"option\"\n [selected]=\"option === value\"\n >{{ option }}</option\n >\n </select>\n </div>\n</ng-template>\n\n<!-- Non Object Type Field :: Boolean Field Template -->\n<ng-template\n #booleanFieldTemplate\n let-index=\"index\"\n let-key=\"key\"\n let-value=\"value\"\n let-path=\"path\"\n>\n <div class=\"field-container checkbox\">\n <input\n type=\"checkbox\"\n [checked]=\"value\"\n (change)=\"handleOnInput({ index, key, value: { previous: value, new: $event.target.checked }, path })\"\n />\n </div>\n</ng-template>\n\n<!-- Non Object Type Field :: Text Field Template -->\n<ng-template\n #textFieldTemplate\n let-index=\"index\"\n let-key=\"key\"\n let-value=\"value\"\n let-path=\"path\"\n>\n <div class=\"field-container text\">\n <input\n placeholder=\"Enter {{ key }}\"\n type=\"text\"\n [value]=\"value\"\n (blur)=\"handleOnInput({ index, key, value: { previous: value, new: $event.target.value }, path })\"\n />\n </div>\n</ng-template>\n\n<!-- Non Object Type Field :: Number Field Template -->\n<ng-template\n #numberFieldTemplate\n let-index=\"index\"\n let-key=\"key\"\n let-value=\"value\"\n let-path=\"path\"\n>\n <div class=\"field-container number\">\n <input\n placeholder=\"Enter {{ key }}\"\n type=\"number\"\n [value]=\"value\"\n (blur)=\"handleOnInput({ index, key, value: { previous: value, new: $event.target.value }, path })\"\n />\n </div>\n</ng-template>\n<!-- END -->\n", styles: ["::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{border-radius:10px}::-webkit-scrollbar-thumb{background:lightgray;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:gray}input[type=text],input[type=number]{width:100%;padding:8px 12px;border:1px solid #ccc;border-radius:4px;box-sizing:border-box;-webkit-appearance:auto!important;appearance:auto!important}input[type=checkbox]{-webkit-appearance:auto!important;appearance:auto!important;width:1rem;height:1rem}select{width:100%;padding:8px 12px;border:1px solid #ccc;border-radius:4px;box-sizing:border-box}textarea{overflow-wrap:anywhere;resize:none;unicode-bidi:embed;white-space:pre-wrap}button{display:inline-block;padding:8px 12px;background-color:#007bff;color:#fff;text-decoration:none;border-radius:4px;border:none;cursor:pointer}button:hover{background-color:#0069d9}button:active{background-color:#0056b3}button:focus{outline:none}button.secondary{padding:7px 11px;border:1px solid #007bff;background-color:#fff;color:#007bff}button.secondary:hover{background-color:#b7daff}button.secondary:active{background-color:#b7daff}button.secondary:focus{outline:none}.field-container{display:flex}.field-container label{color:gray}.field-container.checkbox{flex-direction:row;align-items:center;justify-content:center;padding:8px 12px;margin:auto}.field-container.options,.field-container.number,.field-container.text{flex-direction:column}.disclaimer{display:flex;flex-direction:column;align-content:center;justify-content:center;align-items:center;color:#121212;width:100%;height:100%}.disclaimer>*:not(:last-child){margin-bottom:1.5rem}.disclaimer .icon{width:3rem;height:3rem;display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center}.disclaimer.no-form-selected h1{transform:scaleX(-1)}.disclaimer h1{font-size:5rem;font-weight:100}.disclaimer p{font-size:1rem}\n", ":host{all:unset;position:relative;width:100%;height:100%;overflow:auto}.container{display:flex;flex-direction:column;justify-content:space-between;align-items:stretch;height:100%;border:1px solid #ccc}.container header{padding:.5rem;display:flex;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;border-bottom:1px solid #ccc}.container header .header-form-editor-btns{display:flex;flex-direction:row;align-content:center;justify-content:space-between;align-items:center}.container header .header-form-editor-btns>*:not(:last-child){margin-right:1rem}.container main{padding:.5rem;flex-grow:1;overflow:auto;display:flex;flex-direction:row;justify-content:flex-start;align-items:stretch;white-space:nowrap;position:relative}.container main>*:not(:last-child){margin-right:1rem}.container main .no-fields{position:absolute;top:0;left:0;background:white}.container main .form-config-no-fields{overflow:auto;width:100%}.container main .form-config-fields{overflow:auto;width:100%}.container main .form-config-fields .add-field-btn-container{width:100%;text-align:center}.container main .validators,.container main .properties{display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch}.container main .validators>*:not(:last-child),.container main .properties>*:not(:last-child){margin-bottom:.5rem}.container main .input-checkbox-container{display:flex;flex-direction:row}.container footer{padding:.5rem;display:flex;flex-direction:row;justify-content:flex-end;align-items:stretch;border-top:1px solid lightgray}.container footer>*:not(:last-child){margin-right:1rem}.modal{position:absolute;top:0;background-color:#0000004d;width:100%;height:100%;display:flex;justify-content:center;align-items:center;left:0;flex-direction:row}.modal.error{background-color:#ff00004d}.modal-box{width:75%;height:75%;margin:auto;background-color:#fff;border-radius:1rem;box-shadow:#64646f33 0 7px 29px}.modal-content{display:flex;flex-direction:column;align-content:center;justify-content:flex-start;align-items:stretch;width:100%;height:100%}.modal-heading{padding:.5rem 1rem;width:100%;display:flex;flex-direction:row;justify-content:space-between;border-bottom:1px solid lightgray;align-items:center}.modal-title{font-weight:bold;font-size:1rem}.modal-actions{display:flex;flex-direction:row;cursor:pointer}.modal-actions>*:not(:last-child){margin-right:1rem}.modal-body{overflow:auto;flex:1}.modal-body .json-editor{font-family:monospace;white-space:pre-wrap;border:none;padding:0;background-color:#f5f5f5;height:100%;outline:none;overflow:auto}.json-editor{font-family:monospace;white-space:pre-wrap;border:none;padding:0;background-color:#f5f5f5;height:100%;outline:none;overflow:auto}table{width:100%;border-collapse:collapse;margin-bottom:20px}table th,table td{padding:8px;text-align:left;border:1px solid #ccc;vertical-align:top}table th{background-color:#f2f2f2}table tr:nth-child(even){background-color:#f9f9f9}table tr:hover{background-color:#eaeaea}\n"], components: [{ type: i1.KwikUILoaderComponent, selector: "kwikui-loader" }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "json": i3.JsonPipe, "keyvalue": i3.KeyValuePipe }, animations: [
|
|
360
|
+
/** @nocollapse */ KwikIDBuilderFormEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: KwikIDBuilderFormEditorComponent, selector: "kwikid-builder-form-editor", inputs: { activeFormConfig: "activeFormConfig" }, outputs: { onClickSaveActiveFormConfig: "onClickSaveActiveFormConfig" }, usesOnChanges: true, ngImport: i0, template: "<!-- Component Loader -->\n<kwikui-loader></kwikui-loader>\n\n<!-- Component Main View -->\n<div class=\"container\">\n <ng-container *ngIf=\"activeFormConfig; else noFormSelectedTemplate\">\n <header>\n <div>\n Editing Config of Form: <b>{{ activeFormConfig.props.title }}</b>\n </div>\n <div class=\"header-form-editor-btns\">\n <button (click)=\"handleOnClickPreview()\">preview</button>\n <div>Editor Type:</div>\n <select (change)=\"handleOnClickChangeActiveEditor($event.target.value)\">\n <option\n *ngFor=\"let option of editorTypeOptions\"\n [value]=\"option.key\"\n [selected]=\"option.key === activeEditorType\"\n >\n {{ option.label }}\n </option>\n </select>\n </div>\n </header>\n <main>\n <div\n class=\"form-config-fields\"\n *ngIf=\"activeEditorType == 'FIELDS'; else nonFieldsEditorTemplate\"\n >\n <ng-container *ngIf=\"rows.length <= 0\">\n <div class=\"no-fields disclaimer\">\n <div><p>Please add field to get started</p></div>\n <div class=\"icon\"><h1>+</h1></div>\n <button (click)=\"handleOnClickAddField()\">add field</button>\n </div>\n </ng-container>\n <table>\n <thead>\n <tr>\n <th *ngFor=\"let column of columns\">\n {{ column }}\n </th>\n </tr>\n </thead>\n <tbody>\n <ng-container\n *ngFor=\"let row of rows; let i = index; trackBy: trackByFn\"\n >\n <tr>\n <ng-container *ngFor=\"let column of columns; let j = index\">\n <td>\n <div [class]=\"column\">\n <ng-container\n *ngIf=\"\n column !== 'delete' &&\n column !== 'validators' &&\n column !== 'properties' &&\n column !== 'type' &&\n column !== 'disabled' &&\n column !== 'options'\n \"\n [ngTemplateOutlet]=\"getFieldTemplate\"\n [ngTemplateOutletContext]=\"{\n index: i,\n fieldValue: row[column],\n fieldKey: column,\n parentPath: ''\n }\"\n ></ng-container>\n <ng-container *ngIf=\"column === 'type'\">\n <ng-container\n [ngTemplateOutlet]=\"optionFieldTemplate\"\n [ngTemplateOutletContext]=\"{\n index: i,\n key: column,\n value: row[column],\n path: '',\n options: memoizedGetOptions(\n i,\n row[column],\n column,\n ''\n )\n }\"\n ></ng-container>\n </ng-container>\n <ng-container *ngIf=\"column === 'disabled'\">\n <ng-container\n [ngTemplateOutlet]=\"booleanFieldTemplate\"\n [ngTemplateOutletContext]=\"{\n index: i,\n key: column,\n value: row[column],\n path: '',\n options: memoizedGetOptions(\n i,\n row[column],\n column,\n ''\n )\n }\"\n ></ng-container>\n </ng-container>\n <ng-container *ngIf=\"column === 'delete'\">\n <button\n (click)=\"\n handleOnClickDeleteField({\n index: i,\n key: row['key']\n })\n \"\n [disabled]=\"rows.length === 1\"\n >\n delete\n </button>\n </ng-container>\n <ng-container *ngIf=\"column === 'validators'\">\n <button\n (click)=\"\n handleOnClickEditValidators({\n index: i,\n key: row['key'],\n type: row['type']\n })\n \"\n >\n edit\n </button>\n </ng-container>\n <ng-container *ngIf=\"column === 'properties'\">\n <button\n (click)=\"\n handleOnClickEditProperties({\n index: i,\n key: row['key'],\n type: row['type']\n })\n \"\n >\n edit\n </button>\n </ng-container>\n <ng-container\n *ngIf=\"row['type'] === 'radio' && column === 'options'\"\n >\n <button\n (click)=\"\n handleOnClickEditOptions({\n index: i,\n key: row['key'],\n type: row['type']\n })\n \"\n >\n add\n </button>\n </ng-container>\n <ng-container\n *ngIf=\"row['type'] === 'select' && column === 'options'\"\n >\n <button\n (click)=\"\n handleOnClickEditOptions({\n index: i,\n key: row['key'],\n type: row['type']\n })\n \"\n >\n add\n </button>\n </ng-container>\n </div>\n </td>\n </ng-container>\n </tr>\n </ng-container>\n </tbody>\n </table>\n <div class=\"add-field-btn-container\"> </div>\n </div>\n <ng-template #nonFieldsEditorTemplate>\n <div class=\"form-config-no-fields\">\n <div\n class=\"json-editor\"\n contenteditable=\"true\"\n (keyup)=\"\n handleOnClickSaveActiveFormConfig_NoFields(\n $event.target.innerHTML\n )\n \"\n >\n {{ activeFormConfig_NoFields | json }}\n </div>\n </div>\n </ng-template>\n </main>\n <footer>\n <button\n *ngIf=\"rows.length > 0\"\n (click)=\"handleOnClickAddField()\"\n >\n add field\n </button>\n <button\n (click)=\"handleOnClickSaveActiveFormConfig()\"\n [class.secondary]=\"!savedConfig\"\n >\n {{ savedConfig ? \"saved\" : \"unsaved\" }}\n </button>\n </footer>\n </ng-container>\n <ng-template #noFormSelectedTemplate>\n <div class=\"no-form-selected disclaimer\">\n <div class=\"icon\"><h1>➦</h1></div>\n <div><p>Please select a form to edit it's fields</p></div>\n </div>\n </ng-template>\n</div>\n\n<!-- Component Dialog -->\n<div\n class=\"modal\"\n [class.error]=\"dialogError === true\"\n *ngIf=\"\n dialogOpen ||\n showFieldConfigValidatorsConfigEditor ||\n showFieldConfigPropertiesConfigEditor ||\n showFieldConfigOptionsConfigEditor\n \"\n [@panelInOut]\n>\n <div class=\"modal-box\">\n <div\n class=\"modal-content\"\n *ngIf=\"dialogOpen\"\n >\n <div class=\"modal-heading\">\n <div class=\"modal-title\">\n {{ activeFormConfig.props.title }}'s Config Preview\n </div>\n <div class=\"modal-actions\">\n <button (click)=\"convertToMinifiedJson()\">minify</button>\n <button (click)=\"convertToCompleteJson()\">full</button>\n <button (click)=\"downloadJSON()\">download</button>\n <button (click)=\"copyToClipboard()\">copy</button>\n <button (click)=\"closeJSONPopup()\">close</button>\n </div>\n </div>\n <div class=\"modal-body\">\n <div class=\"json-editor\">\n <code>{{ activeFormConfig | json }}</code>\n </div>\n </div>\n </div>\n <div\n class=\"modal-content\"\n *ngIf=\"showFieldConfigValidatorsConfigEditor\"\n >\n <div class=\"modal-heading\">\n <div class=\"modal-title\">\n {{ activeFormConfig.props.title }}'s Validator Config Editor\n </div>\n <div class=\"modal-actions\">\n <button (click)=\"closeJSONPopup()\">close</button>\n </div>\n </div>\n <div class=\"modal-body\">\n <div\n class=\"json-editor\"\n contenteditable=\"true\"\n (keyup)=\"\n handleOnInputFieldConfigValidatorsConfig($event.target.innerHTML)\n \"\n >\n {{ this.activeFieldConfigValidatorsConfig | json }}\n </div>\n </div>\n </div>\n <div\n class=\"modal-content\"\n *ngIf=\"showFieldConfigPropertiesConfigEditor\"\n >\n <div class=\"modal-heading\">\n <div class=\"modal-title\">\n {{ activeFormConfig.props.title }}'s Properties Config Editor\n </div>\n <div class=\"modal-actions\">\n <button (click)=\"closeJSONPopup()\">close</button>\n </div>\n </div>\n <div class=\"modal-body\">\n <div\n class=\"json-editor\"\n contenteditable=\"true\"\n (keyup)=\"\n handleOnInputFieldConfigPropertiesConfig($event.target.innerHTML)\n \"\n >\n {{ this.activeFieldConfigPropertiesConfig | json }}\n </div>\n </div>\n </div>\n <div\n class=\"modal-content\"\n *ngIf=\"showFieldConfigOptionsConfigEditor\"\n >\n <div class=\"modal-heading\">\n <div class=\"modal-title\">\n {{ activeFormConfig.props.title }}'s Options Config Editor\n </div>\n <div class=\"modal-actions\">\n <button (click)=\"closeJSONPopup()\">close</button>\n </div>\n </div>\n <div class=\"modal-body\">\n <div\n class=\"json-editor\"\n contenteditable=\"true\"\n (keyup)=\"\n handleOnInputFieldConfigOptionsConfig($event.target.innerHTML)\n \"\n >\n {{ this.activeFieldConfigOptionsConfig | json }}\n </div>\n </div>\n </div>\n </div>\n</div>\n<!-- END -->\n\n<!-- Template for rendering different field types -->\n<!-- General Field Template -->\n<ng-template\n #getFieldTemplate\n let-index=\"index\"\n let-value=\"fieldValue\"\n let-key=\"fieldKey\"\n let-path=\"parentPath\"\n>\n <div>\n <ng-container\n [ngTemplateOutlet]=\"\n isObject(value) ? objectFieldTemplate : notObjectFieldTemplate\n \"\n [ngTemplateOutletContext]=\"{\n index: index,\n fieldValue: value,\n fieldKey: key,\n parentPath: path\n }\"\n >\n </ng-container>\n </div>\n</ng-template>\n\n<!-- Object Type Field Template -->\n<ng-template\n #objectFieldTemplate\n let-index=\"index\"\n let-value=\"fieldValue\"\n let-key=\"fieldKey\"\n let-path=\"parentPath\"\n>\n <ng-container *ngFor=\"let item of value | keyvalue\">\n <ng-container\n [ngTemplateOutlet]=\"getFieldTemplate\"\n [ngTemplateOutletContext]=\"{\n index: index,\n fieldValue: item.value,\n fieldKey: item.key,\n parentPath: path === '' ? key : path + '.' + key\n }\"\n >\n </ng-container>\n </ng-container>\n</ng-template>\n\n<!-- Non Object Type Field Template -->\n<ng-template\n #notObjectFieldTemplate\n let-index=\"index\"\n let-value=\"fieldValue\"\n let-key=\"fieldKey\"\n let-path=\"parentPath\"\n>\n <div>\n <ng-container *ngIf=\"isOptions(index, value, key, path)\">\n <ng-container\n [ngTemplateOutlet]=\"optionFieldTemplate\"\n [ngTemplateOutletContext]=\"{\n index: index,\n key: key,\n value: value,\n path: path,\n options: memoizedGetOptions(index, value, key, path)\n }\"\n ></ng-container>\n </ng-container>\n <ng-container\n *ngIf=\"!isOptions(index, value, key, path) && isString(value)\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n textFieldTemplate;\n context: { index: index, key: key, value: value, path: path }\n \"\n ></ng-container>\n </ng-container>\n <ng-container\n *ngIf=\"!isOptions(index, value, key, path) && isNumber(value)\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n numberFieldTemplate;\n context: { index: index, key: key, value: value, path: path }\n \"\n ></ng-container>\n </ng-container>\n </div>\n</ng-template>\n\n<!-- Non Object Type Field :: Options Field Template -->\n<ng-template\n #optionFieldTemplate\n let-index=\"index\"\n let-key=\"key\"\n let-value=\"value\"\n let-path=\"path\"\n let-options=\"options\"\n>\n <div class=\"field-container options\">\n <select\n (change)=\"handleOnInput({ index, key, value: { previous: value, new: $event.target.value }, path })\"\n >\n <option\n *ngFor=\"let option of options\"\n [value]=\"option\"\n [selected]=\"option === value\"\n >{{ option }}</option\n >\n </select>\n </div>\n</ng-template>\n\n<!-- Non Object Type Field :: Boolean Field Template -->\n<ng-template\n #booleanFieldTemplate\n let-index=\"index\"\n let-key=\"key\"\n let-value=\"value\"\n let-path=\"path\"\n>\n <div class=\"field-container checkbox\">\n <input\n type=\"checkbox\"\n [checked]=\"value\"\n (change)=\"handleOnInput({ index, key, value: { previous: value, new: $event.target.checked }, path })\"\n />\n </div>\n</ng-template>\n\n<!-- Non Object Type Field :: Text Field Template -->\n<ng-template\n #textFieldTemplate\n let-index=\"index\"\n let-key=\"key\"\n let-value=\"value\"\n let-path=\"path\"\n>\n <div class=\"field-container text\">\n <input\n placeholder=\"Enter {{ key }}\"\n type=\"text\"\n [value]=\"value\"\n (blur)=\"handleOnInput({ index, key, value: { previous: value, new: $event.target.value }, path })\"\n />\n </div>\n</ng-template>\n\n<!-- Non Object Type Field :: Number Field Template -->\n<ng-template\n #numberFieldTemplate\n let-index=\"index\"\n let-key=\"key\"\n let-value=\"value\"\n let-path=\"path\"\n>\n <div class=\"field-container number\">\n <input\n placeholder=\"Enter {{ key }}\"\n type=\"number\"\n [value]=\"value\"\n (blur)=\"handleOnInput({ index, key, value: { previous: value, new: $event.target.value }, path })\"\n />\n </div>\n</ng-template>\n<!-- END -->\n", styles: ["::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{border-radius:10px}::-webkit-scrollbar-thumb{background:lightgray;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:gray}input[type=text],input[type=number]{width:100%;padding:8px 12px;border:1px solid #ccc;border-radius:4px;box-sizing:border-box;appearance:auto!important}input[type=checkbox]{appearance:auto!important;width:1rem;height:1rem}select{width:100%;padding:8px 12px;border:1px solid #ccc;border-radius:4px;box-sizing:border-box}textarea{overflow-wrap:anywhere;resize:none;unicode-bidi:embed;white-space:pre-wrap}button{display:inline-block;padding:8px 12px;background-color:#007bff;color:#fff;text-decoration:none;border-radius:4px;border:none;cursor:pointer}button:hover{background-color:#0069d9}button:active{background-color:#0056b3}button:focus{outline:none}button.secondary{padding:7px 11px;border:1px solid #007bff;background-color:#fff;color:#007bff}button.secondary:hover{background-color:#b7daff}button.secondary:active{background-color:#b7daff}button.secondary:focus{outline:none}.field-container{display:flex}.field-container label{color:gray}.field-container.checkbox{flex-direction:row;align-items:center;justify-content:center;padding:8px 12px;margin:auto}.field-container.options,.field-container.number,.field-container.text{flex-direction:column}.disclaimer{display:flex;flex-direction:column;align-content:center;justify-content:center;align-items:center;color:#121212;width:100%;height:100%}.disclaimer>*:not(:last-child){margin-bottom:1.5rem}.disclaimer .icon{width:3rem;height:3rem;display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center}.disclaimer.no-form-selected h1{transform:scaleX(-1)}.disclaimer h1{font-size:5rem;font-weight:100}.disclaimer p{font-size:1rem}\n", ":host{all:unset;position:relative;width:100%;height:100%;overflow:auto}.container{display:flex;flex-direction:column;justify-content:space-between;align-items:stretch;height:100%;border:1px solid #ccc}.container header{padding:.5rem;display:flex;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;border-bottom:1px solid #ccc}.container header .header-form-editor-btns{display:flex;flex-direction:row;align-content:center;justify-content:space-between;align-items:center}.container header .header-form-editor-btns>*:not(:last-child){margin-right:1rem}.container main{padding:.5rem;flex-grow:1;overflow:auto;display:flex;flex-direction:row;justify-content:flex-start;align-items:stretch;white-space:nowrap;position:relative}.container main>*:not(:last-child){margin-right:1rem}.container main .no-fields{position:absolute;top:0;left:0;background:white}.container main .form-config-no-fields{overflow:auto;width:100%}.container main .form-config-fields{overflow:auto;width:100%}.container main .form-config-fields .add-field-btn-container{width:100%;text-align:center}.container main .validators,.container main .properties{display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch}.container main .validators>*:not(:last-child),.container main .properties>*:not(:last-child){margin-bottom:.5rem}.container main .input-checkbox-container{display:flex;flex-direction:row}.container footer{padding:.5rem;display:flex;flex-direction:row;justify-content:flex-end;align-items:stretch;border-top:1px solid lightgray}.container footer>*:not(:last-child){margin-right:1rem}.modal{position:absolute;top:0;background-color:#0000004d;width:100%;height:100%;display:flex;justify-content:center;align-items:center;left:0;flex-direction:row}.modal.error{background-color:#ff00004d}.modal-box{width:75%;height:75%;margin:auto;background-color:#fff;border-radius:1rem;box-shadow:#64646f33 0 7px 29px}.modal-content{display:flex;flex-direction:column;align-content:center;justify-content:flex-start;align-items:stretch;width:100%;height:100%}.modal-heading{padding:.5rem 1rem;width:100%;display:flex;flex-direction:row;justify-content:space-between;border-bottom:1px solid lightgray;align-items:center}.modal-title{font-weight:bold;font-size:1rem}.modal-actions{display:flex;flex-direction:row;cursor:pointer}.modal-actions>*:not(:last-child){margin-right:1rem}.modal-body{overflow:auto;flex:1}.modal-body .json-editor{font-family:monospace;white-space:pre-wrap;border:none;padding:0;background-color:#f5f5f5;height:100%;outline:none;overflow:auto}.json-editor{font-family:monospace;white-space:pre-wrap;border:none;padding:0;background-color:#f5f5f5;height:100%;outline:none;overflow:auto}table{width:100%;border-collapse:collapse;margin-bottom:20px}table th,table td{padding:8px;text-align:left;border:1px solid #ccc;vertical-align:top}table th{background-color:#f2f2f2}table tr:nth-child(even){background-color:#f9f9f9}table tr:hover{background-color:#eaeaea}\n"], components: [{ type: i1.KwikUILoaderComponent, selector: "kwikui-loader" }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "json": i3.JsonPipe, "keyvalue": i3.KeyValuePipe }, animations: [
|
|
361
361
|
trigger("panelInOut", [
|
|
362
362
|
transition(":enter", [
|
|
363
363
|
style({ transform: "translateY(100%)" }),
|
|
@@ -458,4 +458,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
458
458
|
}], onClickSaveActiveFormConfig: [{
|
|
459
459
|
type: Output
|
|
460
460
|
}], ngOnInit: [], ngOnChanges: [], initFormEditor: [], handleOnClickChangeActiveEditor: [], handleOnClickSaveActiveFormConfig: [], handleOnClickAddField: [], handleOnClickEditValidators: [], handleOnClickEditProperties: [], handleOnClickEditOptions: [], handleOnInput: [], handleOnInputFieldConfigValidatorsConfig: [], handleOnInputFieldConfigPropertiesConfig: [], handleOnInputFieldConfigOptionsConfig: [], handleOnClickDeleteField: [], handleOnClickSaveActiveFormConfig_NoFields: [], handleOnClickPreview: [], toggleLoader: [], closeJSONPopup: [], copyToClipboard: [], convertToMinifiedJson: [], convertToCompleteJson: [], downloadJSON: [] } });
|
|
461
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci1mb3JtLWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9idWlsZGVyL2J1aWxkZXItZm9ybS1lZGl0b3IvYnVpbGRlci1mb3JtLWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9idWlsZGVyL2J1aWxkZXItZm9ybS1lZGl0b3IvYnVpbGRlci1mb3JtLWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFFLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixpQkFBaUIsRUFDakIsc0JBQXNCLEVBQ3RCLFNBQVMsRUFDVCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3JCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM3RSxPQUFPLEVBQ0wsZUFBZSxFQUVoQixNQUFNLG1DQUFtQyxDQUFDO0FBQzNDLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLFdBQVcsRUFDWixNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFDTCxZQUFZLEVBQ1osdUJBQXVCLEVBQ3ZCLHVCQUF1QixFQUN2QixjQUFjLEVBQ2QsT0FBTyxFQUNQ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QUFRLEVBQUUsNEJBQTRCO29CQUN0QyxXQUFXLEVBQUUsc0NBQXNDO29CQUNuRCxTQUFTLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxzQ0FBc0MsQ0FBQztvQkFDckUsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFVBQVUsRUFBRTt3QkFDVixPQUFPLENBQUMsWUFBWSxFQUFFOzRCQUNwQixVQUFVLENBQUMsUUFBUSxFQUFFO2dDQUNuQixLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztnQ0FDeEMsT0FBTyxDQUFDLEdBQUcsQ0FBQzs2QkFDYixDQUFDOzRCQUNGLFVBQVUsQ0FBQyxRQUFRLEVBQUU7Z0NBQ25CLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQzs2QkFDdkQsQ0FBQzt5QkFDSCxDQUFDO3FCQUNIO2lCQUNGOzJKQU1DLGdCQUFnQjtzQkFEZixLQUFLO2dCQU9OLDJCQUEyQjtzQkFEMUIsTUFBTTtnQkFnRVAsUUFBUSxNQUdSLFdBQVcsTUFnQlgsY0FBYyxNQWlDZCwrQkFBK0IsTUFLL0IsaUNBQWlDLE1BaUJqQyxxQkFBcUIsTUF3QnJCLDJCQUEyQixNQWUzQiwyQkFBMkIsTUFlM0Isd0JBQXdCLE1BZXhCLGFBQWEsTUErQ2Isd0NBQXdDLE1BaUN4Qyx3Q0FBd0MsTUFpQ3hDLHFDQUFxQyxNQW9DckMsd0JBQXdCLE1BZ0J4QiwwQ0FBMEMsTUFRMUMsb0JBQW9CLE1BS3BCLFlBQVksTUFZWixjQUFjLE1BV2QsZUFBZSxNQUtmLHFCQUFxQixNQStCckIscUJBQXFCLE1BU3JCLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gXCJAYW5ndWxhci9hbmltYXRpb25zXCI7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQge1xuICBjaGVja09iamVjdEtleUV4aXN0cyxcbiAgZ2V0T2JqZWN0RGVlcENvcHksXG4gIGdldE9iamVjdFZhbHVlRnJvbVBhdGgsXG4gIGxvZ01ldGhvZCxcbiAgbWVyZ2VPYmplY3RzLFxuICBzZXRWYWx1ZVRvT2JqZWN0UGF0aFxufSBmcm9tIFwia3dpa2lkLXRvb2xraXRcIjtcbmltcG9ydCB7IEt3aWtVSUxvYWRlclNlcnZpY2UgfSBmcm9tIFwia3dpa3VpXCI7XG5pbXBvcnQgXyBmcm9tIFwibG9kYXNoXCI7XG5pbXBvcnQgeyBDb252ZXJ0ZXIgfSBmcm9tIFwiLi4vLi4vcmVuZGVyZXIvY29uZmlnLWNvbnZlcnRlci9jb25maWctY29udmVydGVyXCI7XG5pbXBvcnQge1xuICBFRm9ybUVkaXRvclR5cGUsXG4gIFRGb3JtRWRpdG9yVHlwZVxufSBmcm9tIFwiLi9idWlsZGVyLWZvcm0tZWRpdG9yLmRlZmluaXRpb25zXCI7XG5pbXBvcnQge1xuICBmaW5kTW9kaWZpZWRLZXlzLFxuICBnZXRGaWVsZEluZGV4LFxuICByZW1vdmVGaWVsZFxufSBmcm9tIFwiLi9idWlsZGVyLWZvcm0tZWRpdG9yLmhlbHBlclwiO1xuaW1wb3J0IHtcbiAgRklFTERfQ09ORklHLFxuICBGSUVMRF9QUk9QRVJUSUVTX0NPTkZJRyxcbiAgRklFTERfVkFMSURBVE9SU19DT05GSUcsXG4gIE5PRklFTERfQ09ORklHLFxuICBPUFRJT05TLFxuICBUQUJMRV9DT0xVTU5TXG59IGZyb20gXCIuL2J1aWxkZXIuZm9ybS1lZGl0b3IuY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBLd2lrSURGb3JtQnVpbGRlckZvcm1FZGl0b3JTZXJ2aWNlIH0gZnJvbSBcIi4vYnVpbGRlci5mb3JtLWVkaXRvci5zZXJ2aWNlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJrd2lraWQtYnVpbGRlci1mb3JtLWVkaXRvclwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2J1aWxkZXItZm9ybS1lZGl0b3IuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuLi9zaGFyZWQuc2Nzc1wiLCBcIi4vYnVpbGRlci1mb3JtLWVkaXRvci5jb21wb25lbnQuc2Nzc1wiXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKFwicGFuZWxJbk91dFwiLCBbXG4gICAgICB0cmFuc2l0aW9uKFwiOmVudGVyXCIsIFtcbiAgICAgICAgc3R5bGUoeyB0cmFuc2Zvcm06IFwidHJhbnNsYXRlWSgxMDAlKVwiIH0pLFxuICAgICAgICBhbmltYXRlKDE1MClcbiAgICAgIF0pLFxuICAgICAgdHJhbnNpdGlvbihcIjpsZWF2ZVwiLCBbXG4gICAgICAgIGFuaW1hdGUoMTAwLCBzdHlsZSh7IHRyYW5zZm9ybTogXCJ0cmFuc2xhdGVZKDEwMCUpXCIgfSkpXG4gICAgICBdKVxuICAgIF0pXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgS3dpa0lEQnVpbGRlckZvcm1FZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBDb21wb25lbnRzIElucHV0c1xuICAgKi9cbiAgQElucHV0KClcbiAgYWN0aXZlRm9ybUNvbmZpZzogYW55ID0ge307XG5cbiAgLyoqXG4gICAqIENvbXBvbmVudCBPdXRwdXRzIChFdmVudCBFbWl0dGVycylcbiAgICovXG4gIEBPdXRwdXQoKVxuICBvbkNsaWNrU2F2ZUFjdGl2ZUZvcm1Db25maWc6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLyoqXG4gICAqIENvbXBvbmVudCBWYXJpYWJsZXNcbiAgICovXG4gIC8vIEZpZWxkIEVkaXRvciBWYXJpYWJsZXNcbiAgcm93czogYW55W10gPSBbXTtcbiAgY29sdW1uczogYW55W10gPSBUQUJMRV9DT0xVTU5TO1xuICBhY3RpdmVGaWVsZENvbmZpZ0VkaXRpbmc6IGFueSA9IHt9O1xuICBzaG93RmllbGRDb25maWdWYWxpZGF0b3JzQ29uZmlnRWRpdG9yOiBib29sZWFuID0gZmFsc2U7XG4gIGFjdGl2ZUZpZWxkQ29uZmlnVmFsaWRhdG9yc0NvbmZpZzogYW55ID0ge307XG4gIHNob3dGaWVsZENvbmZpZ1Byb3BlcnRpZXNDb25maWdFZGl0b3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgYWN0aXZlRmllbGRDb25maWdQcm9wZXJ0aWVzQ29uZmlnOiBhbnkgPSB7fTtcbiAgc2hvd0ZpZWxkQ29uZmlnT3B0aW9uc0NvbmZpZ0VkaXRvcjogYm9vbGVhbiA9IGZhbHNlO1xuICBhY3RpdmVGaWVsZENvbmZpZ09wdGlvbnNDb25maWc6IGFueSA9IFtdO1xuXG4gIC8vIEdlbmVyYWwgRWRpdG9yIFZhcmlhYmxlc1xuICBlZGl0b3JUeXBlT3B0aW9uczogYW55W10gPSBbXG4gICAgeyBrZXk6IFwiRklFTERTXCIsIGxhYmVsOiBcImZpZWxkc1wiIH0sXG4gICAgeyBrZXk6IFwiTk9OX0ZJRUxEU1wiLCBsYWJlbDogXCJvdGhlciBjb25maWdcIiB9XG4gIF07XG4gIGFjdGl2ZUVkaXRvclR5cGU6IFRGb3JtRWRpdG9yVHlwZSA9IEVGb3JtRWRpdG9yVHlwZS5GSUVMRFM7XG4gIGFjdGl2ZUZvcm1Db25maWdfRmllbGRzOiBhbnlbXSA9IFtdO1xuICBhY3RpdmVGb3JtQ29uZmlnX05vRmllbGRzOiBhbnkgPSB7fTtcbiAgc2hvd0NvbmZpZ1ByZXZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBGb3Jtc1xuICBmb3JtR3JvdXA6IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xuXG4gIC8vIEZvcm0gU2F2ZWQgU3RhdGVcbiAgc2F2ZWRDb25maWc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgbWFya1NhdmVkKCk6IHZvaWQge1xuICAgIHRoaXMuc2F2ZWRDb25maWcgPSB0cnVlO1xuICB9XG4gIG1hcmtVbnNhdmVkKCk6IHZvaWQge1xuICAgIHRoaXMuc2F2ZWRDb25maWcgPSBmYWxzZTtcbiAgfVxuXG4gIC8vIERpYWxvZ1xuICBkaWFsb2dPcGVuOiBib29sZWFuID0gZmFsc2U7XG4gIHNob3dEaWFsb2coKTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2dPcGVuID0gdHJ1ZTtcbiAgfVxuICBoaWRlRGlhbG9nKCk6IHZvaWQge1xuICAgIHRoaXMuZGlhbG9nT3BlbiA9IGZhbHNlO1xuICB9XG4gIGRpYWxvZ0Vycm9yOiBib29sZWFuID0gZmFsc2U7XG4gIHNob3dEaWFsb2dFcnJvcigpOiB2b2lkIHtcbiAgICB0aGlzLmRpYWxvZ0Vycm9yID0gdHJ1ZTtcbiAgfVxuICBoaWRlRGlhbG9nRXJyb3IoKTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2dFcnJvciA9IGZhbHNlO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGxvYWRlclNlcnZpY2U6IEt3aWtVSUxvYWRlclNlcnZpY2UsXG4gICAgcHVibGljIGt3aWtpZEJ1aWxkZXJGb3JtRWRpdG9yU2VydmljZTogS3dpa0lERm9ybUJ1aWxkZXJGb3JtRWRpdG9yU2VydmljZVxuICApIHt9XG5cbiAgLyoqXG4gICAqIEFuZ3VsYXIgTGlmZWN5Y2xlIE1ldGhvZHNcbiAgICovXG4gIEBsb2dNZXRob2RcbiAgbmdPbkluaXQoKTogdm9pZCB7fVxuXG4gIEBsb2dNZXRob2RcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IHZlcmlmeUNoYW5nZSA9IChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIGNoZWNrT2JqZWN0S2V5RXhpc3RzKGNoYW5nZXMsIGtleSkgJiYgIWNoYW5nZXNba2V5XS5maXJzdENoYW5nZTtcbiAgICB9O1xuICAgIGlmICh2ZXJpZnlDaGFuZ2UoXCJhY3RpdmVGb3JtQ29uZmlnXCIpKSB7XG4gICAgICBsZXQgZm9ybUNvbmZpZyA9IG5ldyBDb252ZXJ0ZXIoKS5jb252ZXJ0Rm9ybUNvbmZpZyhcbiAgICAgICAgY2hhbmdlcy5hY3RpdmVGb3JtQ29uZmlnLmN1cnJlbnRWYWx1ZVxuICAgICAgKTtcbiAgICAgIGZvcm1Db25maWcgPSBuZXcgQ29udmVydGVyKCkudXBkYXRlRm9ybUNvbmZpZ1Byb3BlcnRpZXMoZm9ybUNvbmZpZyk7XG4gICAgICB0aGlzLmFjdGl2ZUZvcm1Db25maWcgPSBmb3JtQ29uZmlnO1xuXG4gICAgICB0aGlzLmluaXRGb3JtRWRpdG9yKHRoaXMuYWN0aXZlRm9ybUNvbmZpZyk7XG4gICAgfVxuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBpbml0Rm9ybUVkaXRvcihhY3RpdmVGb3JtQ29uZmlnOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnRvZ2dsZUxvYWRlcih0cnVlKTtcblxuICAgIHRoaXMuYWN0aXZlRm9ybUNvbmZpZ19GaWVsZHMgPSBnZXRPYmplY3REZWVwQ29weShhY3RpdmVGb3JtQ29uZmlnLmZpZWxkcyk7XG4gICAgdGhpcy5hY3RpdmVGb3JtQ29uZmlnX05vRmllbGRzID0gZ2V0T2JqZWN0RGVlcENvcHkoYWN0aXZlRm9ybUNvbmZpZyk7XG4gICAgZGVsZXRlIHRoaXMuYWN0aXZlRm9ybUNvbmZpZ19Ob0ZpZWxkcy5maWVsZHM7XG5cbiAgICB0aGlzLnJvd3MgPSB0aGlzLmFjdGl2ZUZvcm1Db25maWdfRmllbGRzLm1hcCgoZmllbGQ6IGFueSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAga2V5OiBmaWVsZC5rZXksXG4gICAgICAgIGxhYmVsOiBmaWVsZC5sYWJlbCxcbiAgICAgICAgdHlwZTogZmllbGQudHlwZSxcbiAgICAgICAgZGlzYWJsZWQ6IGZpZWxkLmRpc2FibGVkLFxuICAgICAgICB2YWxpZGF0b3JzOiB7IC4uLkZJRUxEX1ZBTElEQVRPUlNfQ09ORklHLCAuLi5maWVsZC52YWxpZGF0b3JzIH0sXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAuLi5GSUVMRF9QUk9QRVJUSUVTX0NPTkZJR1tmaWVsZC50eXBlXSxcbiAgICAgICAgICAuLi5maWVsZC5wcm9wZXJ0aWVzXG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnM6IGZpZWxkPy5vcHRpb25zID8/IFtdXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgdGhpcy5mb3JtR3JvdXAgPSB0aGlzLmt3aWtpZEJ1aWxkZXJGb3JtRWRpdG9yU2VydmljZS5jcmVhdGVOZXN0ZWRGb3JtR3JvdXAoXG4gICAgICB0aGlzLnJvd3NcbiAgICApO1xuXG4gICAgdGhpcy50b2dnbGVMb2FkZXIoZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYWwgRWRpdG9yIENvbW1vbiBNZXRob2RzXG4gICAqL1xuICBAbG9nTWV0aG9kXG4gIGhhbmRsZU9uQ2xpY2tDaGFuZ2VBY3RpdmVFZGl0b3IoZWRpdG9yVHlwZTogc3RyaW5nKSB7XG4gICAgdGhpcy5hY3RpdmVFZGl0b3JUeXBlID0gZWRpdG9yVHlwZSBhcyBURm9ybUVkaXRvclR5cGU7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGhhbmRsZU9uQ2xpY2tTYXZlQWN0aXZlRm9ybUNvbmZpZygpIHtcbiAgICB0aGlzLmNvbnZlcnRUb01pbmlmaWVkSnNvbigpO1xuXG4gICAgdGhpcy5tYXJrU2F2ZWQoKTtcblxuICAgIHRoaXMub25DbGlja1NhdmVBY3RpdmVGb3JtQ29uZmlnLmVtaXQoXG4gICAgICBnZXRPYmplY3REZWVwQ29weSh0aGlzLmFjdGl2ZUZvcm1Db25maWcpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaWVsZHMgRWRpdG9yIFJlbGF0ZWQgTWV0aG9kc1xuICAgKi9cbiAgLyoqXG4gICAqIE1ldGhvZHMgdG8gaGFuZGxlIGFkZGl0aW9uIG9mIG5ldyBmaWVsZFxuICAgKi9cbiAgQGxvZ01ldGhvZFxuICBoYW5kbGVPbkNsaWNrQWRkRmllbGQoKSB7XG4gICAgdGhpcy5tYXJrVW5zYXZlZCgpO1xuICAgIHRoaXMudG9nZ2xlTG9hZGVyKHRydWUpO1xuXG4gICAgY29uc3QgbmV3SW5kZXggPSB0aGlzLnJvd3MubGVuZ3RoO1xuICAgIGNvbnN0IGZpZWxkQ29uZmlnID0gZ2V0T2JqZWN0RGVlcENvcHkoXG4gICAgICBtZXJnZU9iamVjdHMoRklFTERfQ09ORklHLnRleHQsIHtcbiAgICAgICAga2V5OiBTdHJpbmcobmV3SW5kZXgpXG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnJvd3NbbmV3SW5kZXhdID0gZmllbGRDb25maWc7XG5cbiAgICBjb25zdCBmb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChmaWVsZENvbmZpZyk7XG5cbiAgICB0aGlzLmZvcm1Hcm91cC5hZGRDb250cm9sKFN0cmluZyhuZXdJbmRleCksIGZvcm1Db250cm9sKTtcblxuICAgIHRoaXMudG9nZ2xlTG9hZGVyKGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2RzIHRvIGhhbmRsZSBlZGl0aW5nIG9mIGZpZWxkIGtleS12YWx1ZXNcbiAgICovXG4gIEBsb2dNZXRob2RcbiAgaGFuZGxlT25DbGlja0VkaXRWYWxpZGF0b3JzKGU6IGFueSkge1xuICAgIGNvbnN0IGZpZWxkQ29uZmlnID0gdGhpcy5mb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKVtlLmluZGV4XTtcblxuICAgIGNvbnN0IGZpZWxkQ29uZmlnVmFsaWRhdG9ycyA9IGZpZWxkQ29uZmlnW1widmFsaWRhdG9yc1wiXTtcblxuICAgIHRoaXMuYWN0aXZlRmllbGRDb25maWdWYWxpZGF0b3JzQ29uZmlnID0gbWVyZ2VPYmplY3RzKFxuICAgICAgRklFTERfVkFMSURBVE9SU19DT05GSUcsXG4gICAgICBmaWVsZENvbmZpZ1ZhbGlkYXRvcnNcbiAgICApO1xuXG4gICAgdGhpcy5zaG93RmllbGRDb25maWdWYWxpZGF0b3JzQ29uZmlnRWRpdG9yID0gdHJ1ZTtcbiAgICB0aGlzLmFjdGl2ZUZpZWxkQ29uZmlnRWRpdGluZyA9IGZpZWxkQ29uZmlnO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBoYW5kbGVPbkNsaWNrRWRpdFByb3BlcnRpZXMoZTogYW55KSB7XG4gICAgY29uc3QgZmllbGRDb25maWcgPSB0aGlzLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpW2UuaW5kZXhdO1xuXG4gICAgY29uc3QgZmllbGRDb25maWdQcm9wZXJ0aWVzID0gZmllbGRDb25maWdbXCJwcm9wZXJ0aWVzXCJdO1xuXG4gICAgdGhpcy5hY3RpdmVGaWVsZENvbmZpZ1Byb3BlcnRpZXNDb25maWcgPSBtZXJnZU9iamVjdHMoXG4gICAgICBGSUVMRF9QUk9QRVJUSUVTX0NPTkZJR1tlLnR5cGVdLFxuICAgICAgZmllbGRDb25maWdQcm9wZXJ0aWVzXG4gICAgKTtcblxuICAgIHRoaXMuc2hvd0ZpZWxkQ29uZmlnUHJvcGVydGllc0NvbmZpZ0VkaXRvciA9IHRydWU7XG4gICAgdGhpcy5hY3RpdmVGaWVsZENvbmZpZ0VkaXRpbmcgPSBmaWVsZENvbmZpZztcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgaGFuZGxlT25DbGlja0VkaXRPcHRpb25zKGU6IGFueSkge1xuICAgIGNvbnN0IGZpZWxkQ29uZmlnID0gdGhpcy5mb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKVtlLmluZGV4XTtcblxuICAgIGNvbnN0IGZpZWxkQ29uZmlnT3B0aW9ucyA9IGZpZWxkQ29uZmlnW1wib3B0aW9uc1wiXTtcblxuICAgIHRoaXMuYWN0aXZlRmllbGRDb25maWdPcHRpb25zQ29uZmlnID0gbWVyZ2VPYmplY3RzKFtdLCBmaWVsZENvbmZpZ09wdGlvbnMpO1xuXG4gICAgdGhpcy5zaG93RmllbGRDb25maWdPcHRpb25zQ29uZmlnRWRpdG9yID0gdHJ1ZTtcbiAgICB0aGlzLmFjdGl2ZUZpZWxkQ29uZmlnRWRpdGluZyA9IGZpZWxkQ29uZmlnO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZHMgdG8gaGFuZGxlIGNoYW5nZSBpbiBpbnB1dCB2YWx1ZXMgZm9yIEZpZWxkcyBLZXlzXG4gICAqL1xuICBAbG9nTWV0aG9kXG4gIGhhbmRsZU9uSW5wdXQoZTogYW55KSB7XG4gICAgdGhpcy5tYXJrVW5zYXZlZCgpO1xuXG4gICAgY29uc3QgZmllbGRDb25maWcgPSB0aGlzLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpW2UuaW5kZXhdO1xuICAgIGNvbnN0IGZpbmFsUGF0aCA9IGUucGF0aCAhPT0gXCJcIiA/IGAke2UucGF0aH0uJHtlLmtleX1gIDogZS5rZXk7XG5cbiAgICBpZiAoZmluYWxQYXRoLmluY2x1ZGVzKFwiZGlzYWJsZWRcIikpIHtcbiAgICAgIGUudmFsdWUubmV3ID0gQm9vbGVhbihlLnZhbHVlLm5ldyk7XG4gICAgfVxuXG4gICAgbGV0IG5ld0ZpZWxkQ29uZmlnID0gc2V0VmFsdWVUb09iamVjdFBhdGgoXG4gICAgICBnZXRPYmplY3REZWVwQ29weShmaWVsZENvbmZpZyksXG4gICAgICBmaW5hbFBhdGgsXG4gICAgICBlLnZhbHVlLm5ld1xuICAgICk7XG5cbiAgICBpZiAoZmluYWxQYXRoLmluY2x1ZGVzKFwidHlwZVwiKSkge1xuICAgICAgdGhpcy50b2dnbGVMb2FkZXIodHJ1ZSk7XG5cbiAgICAgIG5ld0ZpZWxkQ29uZmlnID0gc2V0VmFsdWVUb09iamVjdFBhdGgoXG4gICAgICAgIG5ld0ZpZWxkQ29uZmlnLFxuICAgICAgICBcInZhbGlkYXRvcnNcIixcbiAgICAgICAgRklFTERfVkFMSURBVE9SU19DT05GSUdcbiAgICAgICk7XG5cbiAgICAgIG5ld0ZpZWxkQ29uZmlnID0gc2V0VmFsdWVUb09iamVjdFBhdGgoXG4gICAgICAgIG5ld0ZpZWxkQ29uZmlnLFxuICAgICAgICBcInByb3BlcnRpZXNcIixcbiAgICAgICAgRklFTERfUFJPUEVSVElFU19DT05GSUdbbmV3RmllbGRDb25maWcudHlwZV1cbiAgICAgICk7XG5cbiAgICAgIHRoaXMudG9nZ2xlTG9hZGVyKGZhbHNlKTtcbiAgICB9XG5cbiAgICB0aGlzLnJvd3MgPSB0aGlzLnJvd3MubWFwKChyb3cpID0+IHtcbiAgICAgIGlmIChyb3cua2V5ID09PSBmaWVsZENvbmZpZy5rZXkpIHtcbiAgICAgICAgcmV0dXJuIGdldE9iamVjdERlZXBDb3B5KG5ld0ZpZWxkQ29uZmlnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBnZXRPYmplY3REZWVwQ29weShyb3cpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5mb3JtR3JvdXAuY29udHJvbHNbZS5pbmRleF0uc2V0VmFsdWUobmV3RmllbGRDb25maWcsIHtcbiAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICB9KTtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgaGFuZGxlT25JbnB1dEZpZWxkQ29uZmlnVmFsaWRhdG9yc0NvbmZpZyhlOiBhbnkpIHtcbiAgICB0aGlzLm1hcmtVbnNhdmVkKCk7XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5oaWRlRGlhbG9nRXJyb3IoKTtcblxuICAgICAgY29uc3QgdmFsaWRhdG9yQ29uZmlnID0gSlNPTi5wYXJzZShlKTtcblxuICAgICAgY29uc3Qgcm93SW5kZXggPSBnZXRGaWVsZEluZGV4KFxuICAgICAgICB0aGlzLnJvd3MsXG4gICAgICAgIHRoaXMuYWN0aXZlRmllbGRDb25maWdFZGl0aW5nLmtleVxuICAgICAgKTtcbiAgICAgIGlmIChyb3dJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgdGhpcy5yb3dzW3Jvd0luZGV4XS52YWxpZGF0b3JzID0gdmFsaWRhdG9yQ29uZmlnO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmFjdGl2ZUZpZWxkQ29uZmlnRWRpdGluZyA9IG1lcmdlT2JqZWN0cyhcbiAgICAgICAgdGhpcy5hY3RpdmVGaWVsZENvbmZpZ0VkaXRpbmcsXG4gICAgICAgIHsgdmFsaWRhdG9yczogdmFsaWRhdG9yQ29uZmlnIH1cbiAgICAgICk7XG5cbiAgICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzW3Jvd0luZGV4XS5zZXRWYWx1ZShcbiAgICAgICAgdGhpcy5hY3RpdmVGaWVsZENvbmZpZ0VkaXRpbmcsXG4gICAgICAgIHtcbiAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLnNob3dEaWFsb2dFcnJvcigpO1xuICAgIH1cbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgaGFuZGxlT25JbnB1dEZpZWxkQ29uZmlnUHJvcGVydGllc0NvbmZpZyhlOiBhbnkpIHtcbiAgICB0aGlzLm1hcmtVbnNhdmVkKCk7XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5oaWRlRGlhbG9nRXJyb3IoKTtcblxuICAgICAgY29uc3QgcHJvcGVydGllc0NvbmZpZyA9IEpTT04ucGFyc2UoZSk7XG5cbiAgICAgIGNvbnN0IHJvd0luZGV4ID0gZ2V0RmllbGRJbmRleChcbiAgICAgICAgdGhpcy5yb3dzLFxuICAgICAgICB0aGlzLmFjdGl2ZUZpZWxkQ29uZmlnRWRpdGluZy5rZXlcbiAgICAgICk7XG4gICAgICBpZiAocm93SW5kZXggIT09IC0xKSB7XG4gICAgICAgIHRoaXMucm93c1tyb3dJbmRleF0ucHJvcGVydGllcyA9IHByb3BlcnRpZXNDb25maWc7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYWN0aXZlRmllbGRDb25maWdFZGl0aW5nID0gbWVyZ2VPYmplY3RzKFxuICAgICAgICB0aGlzLmFjdGl2ZUZpZWxkQ29uZmlnRWRpdGluZyxcbiAgICAgICAgeyBwcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzQ29uZmlnIH1cbiAgICAgICk7XG5cbiAgICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzW3Jvd0luZGV4XS5zZXRWYWx1ZShcbiAgICAgICAgdGhpcy5hY3RpdmVGaWVsZENvbmZpZ0VkaXRpbmcsXG4gICAgICAgIHtcbiAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLnNob3dEaWFsb2dFcnJvcigpO1xuICAgIH1cbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgaGFuZGxlT25JbnB1dEZpZWxkQ29uZmlnT3B0aW9uc0NvbmZpZyhlOiBhbnkpIHtcbiAgICB0aGlzLm1hcmtVbnNhdmVkKCk7XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5oaWRlRGlhbG9nRXJyb3IoKTtcblxuICAgICAgY29uc3Qgb3B0aW9uc0NvbmZpZyA9IEpTT04ucGFyc2UoZSk7XG5cbiAgICAgIGNvbnN0IHJvd0luZGV4ID0gZ2V0RmllbGRJbmRleChcbiAgICAgICAgdGhpcy5yb3dzLFxuICAgICAgICB0aGlzLmFjdGl2ZUZpZWxkQ29uZmlnRWRpdGluZy5rZXlcbiAgICAgICk7XG4gICAgICBpZiAocm93SW5kZXggIT09IC0xKSB7XG4gICAgICAgIHRoaXMucm93c1tyb3dJbmRleF0ub3B0aW9ucyA9IG9wdGlvbnNDb25maWc7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYWN0aXZlRmllbGRDb25maWdFZGl0aW5nID0gbWVyZ2VPYmplY3RzKFxuICAgICAgICB0aGlzLmFjdGl2ZUZpZWxkQ29uZmlnRWRpdGluZyxcbiAgICAgICAgeyBvcHRpb25zOiBvcHRpb25zQ29uZmlnIH1cbiAgICAgICk7XG5cbiAgICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzW3Jvd0luZGV4XS5zZXRWYWx1ZShcbiAgICAgICAgdGhpcy5hY3RpdmVGaWVsZENvbmZpZ0VkaXRpbmcsXG4gICAgICAgIHtcbiAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLnNob3dEaWFsb2dFcnJvcigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2RzIHRvIGhhbmRsZSBkZWxldGlvbiBvZiBmaWVsZFxuICAgKi9cbiAgQGxvZ01ldGhvZFxuICBoYW5kbGVPbkNsaWNrRGVsZXRlRmllbGQoZTogYW55KSB7XG4gICAgdGhpcy5tYXJrVW5zYXZlZCgpO1xuXG4gICAgdGhpcy5yb3dzID0gcmVtb3ZlRmllbGQodGhpcy5yb3dzLCBlLmtleSk7XG5cbiAgICB0aGlzLmZvcm1Hcm91cCA9IHRoaXMua3dpa2lkQnVpbGRlckZvcm1FZGl0b3JTZXJ2aWNlLmNyZWF0ZU5lc3RlZEZvcm1Hcm91cChcbiAgICAgIHRoaXMucm93c1xuICAgICk7XG5cbiAgICB0aGlzLmZvcm1Hcm91cC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gIH1cblxuICAvKipcbiAgICogTm9uIEZpZWxkcyBFZGl0b3IgUmVsYXRlZCBNZXRob2RzXG4gICAqL1xuICBAbG9nTWV0aG9kXG4gIGhhbmRsZU9uQ2xpY2tTYXZlQWN0aXZlRm9ybUNvbmZpZ19Ob0ZpZWxkcyhlOiBhbnkpIHtcbiAgICB0aGlzLmFjdGl2ZUZvcm1Db25maWdfTm9GaWVsZHMgPSBKU09OLnBhcnNlKGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE90aGVyIENvbXBvbmVudCBNZXRob2RzXG4gICAqL1xuICBAbG9nTWV0aG9kXG4gIGhhbmRsZU9uQ2xpY2tQcmV2aWV3KCkge1xuICAgIHRoaXMuc2hvd0RpYWxvZygpO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICB0b2dnbGVMb2FkZXIobG9hZGVyKSB7XG4gICAgaWYgKGxvYWRlcikge1xuICAgICAgdGhpcy5sb2FkZXJTZXJ2aWNlLnNob3coe1xuICAgICAgICBmdWxsc2NyZWVuOiB0cnVlLFxuICAgICAgICBsb2FkZXJUZXh0OiBcIlBsZWFzZSB3YWl0XCJcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvYWRlclNlcnZpY2UuaGlkZSgpO1xuICAgIH1cbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgY2xvc2VKU09OUG9wdXAoKSB7XG4gICAgdGhpcy5oaWRlRGlhbG9nKCk7XG4gICAgdGhpcy5zaG93RmllbGRDb25maWdWYWxpZGF0b3JzQ29uZmlnRWRpdG9yID0gZmFsc2U7XG4gICAgdGhpcy5zaG93RmllbGRDb25maWdQcm9wZXJ0aWVzQ29uZmlnRWRpdG9yID0gZmFsc2U7XG4gICAgdGhpcy5zaG93RmllbGRDb25maWdPcHRpb25zQ29uZmlnRWRpdG9yID0gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogT3RoZXIgSGVscGVyIE1ldGhvZHNcbiAgICovXG4gIEBsb2dNZXRob2RcbiAgY29weVRvQ2xpcGJvYXJkKCkge1xuICAgIHRoaXMua3dpa2lkQnVpbGRlckZvcm1FZGl0b3JTZXJ2aWNlLmNvcHlUb0NsaXBib2FyZCh0aGlzLmFjdGl2ZUZvcm1Db25maWcpO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBjb252ZXJ0VG9NaW5pZmllZEpzb24oKSB7XG4gICAgY29uc3QgZmllbGRzID0gW107XG5cbiAgICBmb3IgKGxldCBmaWVsZCBvZiBPYmplY3QudmFsdWVzKFxuICAgICAgZ2V0T2JqZWN0RGVlcENvcHkodGhpcy5mb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKSlcbiAgICApKSB7XG4gICAgICBmaWVsZHMucHVzaChcbiAgICAgICAgc2V0VmFsdWVUb09iamVjdFBhdGgoXG4gICAgICAgICAgZmluZE1vZGlmaWVkS2V5cyhGSUVMRF9DT05GSUdbZmllbGRbXCJ0eXBlXCJdXSwgZmllbGQsIFwiXCIpLFxuICAgICAgICAgIFwidHlwZVwiLFxuICAgICAgICAgIGZpZWxkW1widHlwZVwiXVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGFjdGl2ZUZvcm1Db25maWdfTm9GaWVsZHNfTWluaWZpZWQgPSBmaW5kTW9kaWZpZWRLZXlzKFxuICAgICAgTk9GSUVMRF9DT05GSUcsXG4gICAgICBnZXRPYmplY3REZWVwQ29weSh0aGlzLmFjdGl2ZUZvcm1Db25maWdfTm9GaWVsZHMpLFxuICAgICAgXCJcIlxuICAgICk7XG5cbiAgICB0aGlzLmFjdGl2ZUZvcm1Db25maWcgPSBtZXJnZU9iamVjdHMoXG4gICAgICB7fSxcbiAgICAgIGFjdGl2ZUZvcm1Db25maWdfTm9GaWVsZHNfTWluaWZpZWQsXG4gICAgICB7XG4gICAgICAgIGZpZWxkczogZmllbGRzXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgY29udmVydFRvQ29tcGxldGVKc29uKCkge1xuICAgIGxldCBmb3JtQ29uZmlnID0gbmV3IENvbnZlcnRlcigpLmNvbnZlcnRGb3JtQ29uZmlnKFxuICAgICAgZ2V0T2JqZWN0RGVlcENvcHkodGhpcy5hY3RpdmVGb3JtQ29uZmlnKVxuICAgICk7XG4gICAgZm9ybUNvbmZpZyA9IG5ldyBDb252ZXJ0ZXIoKS51cGRhdGVGb3JtQ29uZmlnUHJvcGVydGllcyhmb3JtQ29uZmlnKTtcbiAgICB0aGlzLmFjdGl2ZUZvcm1Db25maWcgPSBmb3JtQ29uZmlnO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBkb3dubG9hZEpTT04oKSB7XG4gICAgdGhpcy5rd2lraWRCdWlsZGVyRm9ybUVkaXRvclNlcnZpY2UuZG93bmxvYWRKU09OKHRoaXMuYWN0aXZlRm9ybUNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogTWlzYyBNZXRob2RzXG4gICAqL1xuICBnZXRPcHRpb25zKGluZGV4LCB2YWx1ZSwga2V5LCBwYXRoKSB7XG4gICAgaWYgKHBhdGguaW5jbHVkZXMoXCJwcm9wZXJ0aWVzXCIpKSB7XG4gICAgICBjb25zdCBmaWVsZFR5cGUgPSB0aGlzLnJvd3NbaW5kZXhdLnR5cGU7XG5cbiAgICAgIGNvbnN0IGZpbmFsUGF0aCA9IGAke3BhdGh9Wycke2ZpZWxkVHlwZX0nXS4ke2tleX1gO1xuXG4gICAgICByZXR1cm4gZ2V0T2JqZWN0VmFsdWVGcm9tUGF0aChPUFRJT05TLCBmaW5hbFBhdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBmaW5hbFBhdGggPSBwYXRoICE9PSBcIlwiID8gYCR7cGF0aH0uJHtrZXl9YCA6IGtleTtcblxuICAgICAgcmV0dXJuIGdldE9iamVjdFZhbHVlRnJvbVBhdGgoT1BUSU9OUywgZmluYWxQYXRoKTtcbiAgICB9XG4gIH1cbiAgbWVtb2l6ZWRHZXRPcHRpb25zID0gXy5tZW1vaXplKHRoaXMuZ2V0T3B0aW9ucyk7XG5cbiAgaXNPcHRpb25zKGluZGV4LCB2YWx1ZSwga2V5LCBwYXRoKSB7XG4gICAgaWYgKHBhdGguaW5jbHVkZXMoXCJwcm9wZXJ0aWVzXCIpKSB7XG4gICAgICBjb25zdCBmaWVsZFR5cGUgPSB0aGlzLnJvd3NbaW5kZXhdLnR5cGU7XG5cbiAgICAgIGNvbnN0IGZpbmFsUGF0aCA9IGAke3BhdGh9Wycke2ZpZWxkVHlwZX0nXS4ke2tleX1gO1xuXG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShnZXRPYmplY3RWYWx1ZUZyb21QYXRoKE9QVElPTlMsIGZpbmFsUGF0aCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBmaW5hbFBhdGggPSBwYXRoICE9PSBcIlwiID8gYCR7cGF0aH0uJHtrZXl9YCA6IGtleTtcblxuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZ2V0T2JqZWN0VmFsdWVGcm9tUGF0aChPUFRJT05TLCBmaW5hbFBhdGgpKTtcbiAgICB9XG4gIH1cblxuICBpc0Jvb2xlYW4odmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwiYm9vbGVhblwiO1xuICB9XG5cbiAgaXNTdHJpbmcodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCI7XG4gIH1cblxuICBpc051bWJlcih2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIjtcbiAgfVxuXG4gIGlzT2JqZWN0KHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmIHZhbHVlICE9PSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEFuZ3VsYXIgU3BlY2lmaWMgTWV0aG9kc1xuICAgKi9cbiAgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSk6IGFueSB7XG4gICAgY29uc3Qga2V5ID0gaXRlbT8ua2V5IHx8IFwiXCI7XG4gICAgY29uc3QgdmFsdWUgPSBpdGVtPy52YWx1ZSB8fCBcIlwiO1xuXG4gICAgaWYgKHR5cGVvZiBpdGVtID09PSBcInN0cmluZ1wiKSB7XG4gICAgICByZXR1cm4gYCR7U3RyaW5nKGluZGV4KX1fJHtpdGVtfV8ke25ldyBEYXRlKCkuZ2V0VGltZSgpfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBgJHtTdHJpbmcoaW5kZXgpfV8ke2tleX1fJHt2YWx1ZX1fJHtuZXcgRGF0ZSgpLmdldFRpbWUoKX1gO1xuICAgIH1cbiAgfVxufVxuIiwiPCEtLSBDb21wb25lbnQgTG9hZGVyIC0tPlxuPGt3aWt1aS1sb2FkZXI+PC9rd2lrdWktbG9hZGVyPlxuXG48IS0tIENvbXBvbmVudCBNYWluIFZpZXcgLS0+XG48ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3RpdmVGb3JtQ29uZmlnOyBlbHNlIG5vRm9ybVNlbGVjdGVkVGVtcGxhdGVcIj5cbiAgICA8aGVhZGVyPlxuICAgICAgPGRpdj5cbiAgICAgICAgJm5ic3A7RWRpdGluZyBDb25maWcgb2YgRm9ybTogPGI+e3sgYWN0aXZlRm9ybUNvbmZpZy5wcm9wcy50aXRsZSB9fTwvYj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1mb3JtLWVkaXRvci1idG5zXCI+XG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cImhhbmRsZU9uQ2xpY2tQcmV2aWV3KClcIj5wcmV2aWV3PC9idXR0b24+XG4gICAgICAgIDxkaXY+RWRpdG9yJm5ic3A7VHlwZTo8L2Rpdj5cbiAgICAgICAgPHNlbGVjdCAoY2hhbmdlKT1cImhhbmRsZU9uQ2xpY2tDaGFuZ2VBY3RpdmVFZGl0b3IoJGV2ZW50LnRhcmdldC52YWx1ZSlcIj5cbiAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGVkaXRvclR5cGVPcHRpb25zXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb24ua2V5XCJcbiAgICAgICAgICAgIFtzZWxlY3RlZF09XCJvcHRpb24ua2V5ID09PSBhY3RpdmVFZGl0b3JUeXBlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBvcHRpb24ubGFiZWwgfX1cbiAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICA8L2Rpdj5cbiAgICA8L2hlYWRlcj5cbiAgICA8bWFpbj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbmZpZy1maWVsZHNcIlxuICAgICAgICAqbmdJZj1cImFjdGl2ZUVkaXRvclR5cGUgPT0gJ0ZJRUxEUyc7IGVsc2Ugbm9uRmllbGRzRWRpdG9yVGVtcGxhdGVcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicm93cy5sZW5ndGggPD0gMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJuby1maWVsZHMgZGlzY2xhaW1lclwiPlxuICAgICAgICAgICAgPGRpdj48cD5QbGVhc2UgYWRkIGZpZWxkIHRvIGdldCBzdGFydGVkPC9wPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb25cIj48aDE+JnBsdXM7PC9oMT48L2Rpdj5cbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImhhbmRsZU9uQ2xpY2tBZGRGaWVsZCgpXCI+YWRkIGZpZWxkPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8dGFibGU+XG4gICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zXCI+XG4gICAgICAgICAgICAgICAge3sgY29sdW1uIH19XG4gICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcm93IG9mIHJvd3M7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlGblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uczsgbGV0IGogPSBpbmRleFwiPlxuICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzc109XCJjb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4gIT09ICdkZWxldGUnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbiAhPT0gJ3ZhbGlkYXRvcnMnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbiAhPT0gJ3Byb3BlcnRpZXMnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbiAhPT0gJ3R5cGUnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbiAhPT0gJ2Rpc2FibGVkJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4gIT09ICdvcHRpb25zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImdldEZpZWxkVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkVmFsdWU6IHJvd1tjb2x1bW5dLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZEtleTogY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRQYXRoOiAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4gPT09ICd0eXBlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJvcHRpb25GaWVsZFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcm93W2NvbHVtbl0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogbWVtb2l6ZWRHZXRPcHRpb25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd1tjb2x1bW5dLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4gPT09ICdkaXNhYmxlZCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYm9vbGVhbkZpZWxkVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiByb3dbY29sdW1uXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBtZW1vaXplZEdldE9wdGlvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93W2NvbHVtbl0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbiA9PT0gJ2RlbGV0ZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZU9uQ2xpY2tEZWxldGVGaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogcm93WydrZXknXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyb3dzLmxlbmd0aCA9PT0gMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbiA9PT0gJ3ZhbGlkYXRvcnMnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVPbkNsaWNrRWRpdFZhbGlkYXRvcnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IHJvd1sna2V5J10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiByb3dbJ3R5cGUnXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4gPT09ICdwcm9wZXJ0aWVzJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlT25DbGlja0VkaXRQcm9wZXJ0aWVzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiByb3dbJ2tleSddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogcm93Wyd0eXBlJ11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInJvd1sndHlwZSddID09PSAncmFkaW8nICYmIGNvbHVtbiA9PT0gJ29wdGlvbnMnXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVPbkNsaWNrRWRpdE9wdGlvbnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IHJvd1sna2V5J10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiByb3dbJ3R5cGUnXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJyb3dbJ3R5cGUnXSA9PT0gJ3NlbGVjdCcgJiYgY29sdW1uID09PSAnb3B0aW9ucydcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZU9uQ2xpY2tFZGl0T3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogcm93WydrZXknXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHJvd1sndHlwZSddXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgPC90YWJsZT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFkZC1maWVsZC1idG4tY29udGFpbmVyXCI+IDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctdGVtcGxhdGUgI25vbkZpZWxkc0VkaXRvclRlbXBsYXRlPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jb25maWctbm8tZmllbGRzXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJqc29uLWVkaXRvclwiXG4gICAgICAgICAgICBjb250ZW50ZWRpdGFibGU9XCJ0cnVlXCJcbiAgICAgICAgICAgIChrZXl1cCk9XCJcbiAgICAgICAgICAgICAgaGFuZGxlT25DbGlja1NhdmVBY3RpdmVGb3JtQ29uZmlnX05vRmllbGRzKFxuICAgICAgICAgICAgICAgICRldmVudC50YXJnZXQuaW5uZXJIVE1MXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgYWN0aXZlRm9ybUNvbmZpZ19Ob0ZpZWxkcyB8IGpzb24gfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbWFpbj5cbiAgICA8Zm9vdGVyPlxuICAgICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cInJvd3MubGVuZ3RoID4gMFwiXG4gICAgICAgIChjbGljayk9XCJoYW5kbGVPbkNsaWNrQWRkRmllbGQoKVwiXG4gICAgICA+XG4gICAgICAgIGFkZCBmaWVsZFxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIChjbGljayk9XCJoYW5kbGVPbkNsaWNrU2F2ZUFjdGl2ZUZvcm1Db25maWcoKVwiXG4gICAgICAgIFtjbGFzcy5zZWNvbmRhcnldPVwiIXNhdmVkQ29uZmlnXCJcbiAgICAgID5cbiAgICAgICAge3sgc2F2ZWRDb25maWcgPyBcInNhdmVkXCIgOiBcInVuc2F2ZWRcIiB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9mb290ZXI+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctdGVtcGxhdGUgI25vRm9ybVNlbGVjdGVkVGVtcGxhdGU+XG4gICAgPGRpdiBjbGFzcz1cIm5vLWZvcm0tc2VsZWN0ZWQgZGlzY2xhaW1lclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImljb25cIj48aDE+JiMxMDE1MDs8L2gxPjwvZGl2PlxuICAgICAgPGRpdj48cD5QbGVhc2Ugc2VsZWN0IGEgZm9ybSB0byBlZGl0IGl0J3MgZmllbGRzPC9wPjwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG5cbjwhLS0gQ29tcG9uZW50IERpYWxvZyAtLT5cbjxkaXZcbiAgY2xhc3M9XCJtb2RhbFwiXG4gIFtjbGFzcy5lcnJvcl09XCJkaWFsb2dFcnJvciA9PT0gdHJ1ZVwiXG4gICpuZ0lmPVwiXG4gICAgZGlhbG9nT3BlbiB8fFxuICAgIHNob3dGaWVsZENvbmZpZ1ZhbGlkYXRvcnNDb25maWdFZGl0b3IgfHxcbiAgICBzaG93RmllbGRDb25maWdQcm9wZXJ0aWVzQ29uZmlnRWRpdG9yIHx8XG4gICAgc2hvd0ZpZWxkQ29uZmlnT3B0aW9uc0NvbmZpZ0VkaXRvclxuICBcIlxuICBbQHBhbmVsSW5PdXRdXG4+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib3hcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIlxuICAgICAgKm5nSWY9XCJkaWFsb2dPcGVuXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGluZ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtdGl0bGVcIj5cbiAgICAgICAgICB7eyBhY3RpdmVGb3JtQ29uZmlnLnByb3BzLnRpdGxlIH19J3MgQ29uZmlnIFByZXZpZXdcbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1hY3Rpb25zXCI+XG4gICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY29udmVydFRvTWluaWZpZWRKc29uKClcIj5taW5pZnk8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjb252ZXJ0VG9Db21wbGV0ZUpzb24oKVwiPmZ1bGw8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJkb3dubG9hZEpTT04oKVwiPmRvd25sb2FkPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY29weVRvQ2xpcGJvYXJkKClcIj5jb3B5PC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY2xvc2VKU09OUG9wdXAoKVwiPmNsb3NlPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwianNvbi1lZGl0b3JcIj5cbiAgICAgICAgICA8Y29kZT57eyBhY3RpdmVGb3JtQ29uZmlnIHwganNvbiB9fTwvY29kZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIlxuICAgICAgKm5nSWY9XCJzaG93RmllbGRDb25maWdWYWxpZGF0b3JzQ29uZmlnRWRpdG9yXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGluZ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtdGl0bGVcIj5cbiAgICAgICAgICB7eyBhY3RpdmVGb3JtQ29uZmlnLnByb3BzLnRpdGxlIH19J3MgVmFsaWRhdG9yIENvbmZpZyBFZGl0b3JcbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1hY3Rpb25zXCI+XG4gICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY2xvc2VKU09OUG9wdXAoKVwiPmNsb3NlPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJqc29uLWVkaXRvclwiXG4gICAgICAgICAgY29udGVudGVkaXRhYmxlPVwidHJ1ZVwiXG4gICAgICAgICAgKGtleXVwKT1cIlxuICAgICAgICAgICAgaGFuZGxlT25JbnB1dEZpZWxkQ29uZmlnVmFsaWRhdG9yc0NvbmZpZygkZXZlbnQudGFyZ2V0LmlubmVySFRNTClcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgdGhpcy5hY3RpdmVGaWVsZENvbmZpZ1ZhbGlkYXRvcnNDb25maWcgfCBqc29uIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJtb2RhbC1jb250ZW50XCJcbiAgICAgICpuZ0lmPVwic2hvd0ZpZWxkQ29uZmlnUHJvcGVydGllc0NvbmZpZ0VkaXRvclwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRpbmdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+XG4gICAgICAgICAge3sgYWN0aXZlRm9ybUNvbmZpZy5wcm9wcy50aXRsZSB9fSdzIFByb3BlcnRpZXMgQ29uZmlnIEVkaXRvclxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWFjdGlvbnNcIj5cbiAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjbG9zZUpTT05Qb3B1cCgpXCI+Y2xvc2U8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImpzb24tZWRpdG9yXCJcbiAgICAgICAgICBjb250ZW50ZWRpdGFibGU9XCJ0cnVlXCJcbiAgICAgICAgICAoa2V5dXApPVwiXG4gICAgICAgICAgICBoYW5kbGVPbklucHV0RmllbGRDb25maWdQcm9wZXJ0aWVzQ29uZmlnKCRldmVudC50YXJnZXQuaW5uZXJIVE1MKVxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyB0aGlzLmFjdGl2ZUZpZWxkQ29uZmlnUHJvcGVydGllc0NvbmZpZyB8IGpzb24gfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIlxuICAgICAgKm5nSWY9XCJzaG93RmllbGRDb25maWdPcHRpb25zQ29uZmlnRWRpdG9yXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGluZ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtdGl0bGVcIj5cbiAgICAgICAgICB7eyBhY3RpdmVGb3JtQ29uZmlnLnByb3BzLnRpdGxlIH19J3MgT3B0aW9ucyBDb25maWcgRWRpdG9yXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYWN0aW9uc1wiPlxuICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImNsb3NlSlNPTlBvcHVwKClcIj5jbG9zZTwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwianNvbi1lZGl0b3JcIlxuICAgICAgICAgIGNvbnRlbnRlZGl0YWJsZT1cInRydWVcIlxuICAgICAgICAgIChrZXl1cCk9XCJcbiAgICAgICAgICAgIGhhbmRsZU9uSW5wdXRGaWVsZENvbmZpZ09wdGlvbnNDb25maWcoJGV2ZW50LnRhcmdldC5pbm5lckhUTUwpXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHRoaXMuYWN0aXZlRmllbGRDb25maWdPcHRpb25zQ29uZmlnIHwganNvbiB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPCEtLSBFTkQgLS0+XG5cbjwhLS0gVGVtcGxhdGUgZm9yIHJlbmRlcmluZyBkaWZmZXJlbnQgZmllbGQgdHlwZXMgLS0+XG48IS0tIEdlbmVyYWwgRmllbGQgVGVtcGxhdGUgLS0+XG48bmctdGVtcGxhdGVcbiAgI2dldEZpZWxkVGVtcGxhdGVcbiAgbGV0LWluZGV4PVwiaW5kZXhcIlxuICBsZXQtdmFsdWU9XCJmaWVsZFZhbHVlXCJcbiAgbGV0LWtleT1cImZpZWxkS2V5XCJcbiAgbGV0LXBhdGg9XCJwYXJlbnRQYXRoXCJcbj5cbiAgPGRpdj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJcbiAgICAgICAgaXNPYmplY3QodmFsdWUpID8gb2JqZWN0RmllbGRUZW1wbGF0ZSA6IG5vdE9iamVjdEZpZWxkVGVtcGxhdGVcbiAgICAgIFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICBpbmRleDogaW5kZXgsXG4gICAgICAgIGZpZWxkVmFsdWU6IHZhbHVlLFxuICAgICAgICBmaWVsZEtleToga2V5LFxuICAgICAgICBwYXJlbnRQYXRoOiBwYXRoXG4gICAgICB9XCJcbiAgICA+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBPYmplY3QgVHlwZSBGaWVsZCBUZW1wbGF0ZSAtLT5cbjxuZy10ZW1wbGF0ZVxuICAjb2JqZWN0RmllbGRUZW1wbGF0ZVxuICBsZXQtaW5kZXg9XCJpbmRleFwiXG4gIGxldC12YWx1ZT1cImZpZWxkVmFsdWVcIlxuICBsZXQta2V5PVwiZmllbGRLZXlcIlxuICBsZXQtcGF0aD1cInBhcmVudFBhdGhcIlxuPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIHZhbHVlIHwga2V5dmFsdWVcIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJnZXRGaWVsZFRlbXBsYXRlXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgICAgZmllbGRWYWx1ZTogaXRlbS52YWx1ZSxcbiAgICAgICAgZmllbGRLZXk6IGl0ZW0ua2V5LFxuICAgICAgICBwYXJlbnRQYXRoOiBwYXRoID09PSAnJyA/IGtleSA6IHBhdGggKyAnLicgKyBrZXlcbiAgICAgIH1cIlxuICAgID5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIE5vbiBPYmplY3QgVHlwZSBGaWVsZCBUZW1wbGF0ZSAtLT5cbjxuZy10ZW1wbGF0ZVxuICAjbm90T2JqZWN0RmllbGRUZW1wbGF0ZVxuICBsZXQtaW5kZXg9XCJpbmRleFwiXG4gIGxldC12YWx1ZT1cImZpZWxkVmFsdWVcIlxuICBsZXQta2V5PVwiZmllbGRLZXlcIlxuICBsZXQtcGF0aD1cInBhcmVudFBhdGhcIlxuPlxuICA8ZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc09wdGlvbnMoaW5kZXgsIHZhbHVlLCBrZXksIHBhdGgpXCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm9wdGlvbkZpZWxkVGVtcGxhdGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgcGF0aDogcGF0aCxcbiAgICAgICAgICBvcHRpb25zOiBtZW1vaXplZEdldE9wdGlvbnMoaW5kZXgsIHZhbHVlLCBrZXksIHBhdGgpXG4gICAgICAgIH1cIlxuICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiIWlzT3B0aW9ucyhpbmRleCwgdmFsdWUsIGtleSwgcGF0aCkgJiYgaXNTdHJpbmcodmFsdWUpXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgdGV4dEZpZWxkVGVtcGxhdGU7XG4gICAgICAgICAgY29udGV4dDogeyBpbmRleDogaW5kZXgsIGtleToga2V5LCB2YWx1ZTogdmFsdWUsIHBhdGg6IHBhdGggfVxuICAgICAgICBcIlxuICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiIWlzT3B0aW9ucyhpbmRleCwgdmFsdWUsIGtleSwgcGF0aCkgJiYgaXNOdW1iZXIodmFsdWUpXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgbnVtYmVyRmllbGRUZW1wbGF0ZTtcbiAgICAgICAgICBjb250ZXh0OiB7IGluZGV4OiBpbmRleCwga2V5OiBrZXksIHZhbHVlOiB2YWx1ZSwgcGF0aDogcGF0aCB9XG4gICAgICAgIFwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBOb24gT2JqZWN0IFR5cGUgRmllbGQgOjogT3B0aW9ucyBGaWVsZCBUZW1wbGF0ZSAtLT5cbjxuZy10ZW1wbGF0ZVxuICAjb3B0aW9uRmllbGRUZW1wbGF0ZVxuICBsZXQtaW5kZXg9XCJpbmRleFwiXG4gIGxldC1rZXk9XCJrZXlcIlxuICBsZXQtdmFsdWU9XCJ2YWx1ZVwiXG4gIGxldC1wYXRoPVwicGF0aFwiXG4gIGxldC1vcHRpb25zPVwib3B0aW9uc1wiXG4+XG4gIDxkaXYgY2xhc3M9XCJmaWVsZC1jb250YWluZXIgb3B0aW9uc1wiPlxuICAgIDxzZWxlY3RcbiAgICAgIChjaGFuZ2UpPVwiaGFuZGxlT25JbnB1dCh7IGluZGV4LCBrZXksIHZhbHVlOiB7IHByZXZpb3VzOiB2YWx1ZSwgbmV3OiAkZXZlbnQudGFyZ2V0LnZhbHVlIH0sIHBhdGggfSlcIlxuICAgID5cbiAgICAgIDxvcHRpb25cbiAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zXCJcbiAgICAgICAgW3ZhbHVlXT1cIm9wdGlvblwiXG4gICAgICAgIFtzZWxlY3RlZF09XCJvcHRpb24gPT09IHZhbHVlXCJcbiAgICAgICAgPnt7IG9wdGlvbiB9fTwvb3B0aW9uXG4gICAgICA+XG4gICAgPC9zZWxlY3Q+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBOb24gT2JqZWN0IFR5cGUgRmllbGQgOjogQm9vbGVhbiBGaWVsZCBUZW1wbGF0ZSAtLT5cbjxuZy10ZW1wbGF0ZVxuICAjYm9vbGVhbkZpZWxkVGVtcGxhdGVcbiAgbGV0LWluZGV4PVwiaW5kZXhcIlxuICBsZXQta2V5PVwia2V5XCJcbiAgbGV0LXZhbHVlPVwidmFsdWVcIlxuICBsZXQtcGF0aD1cInBhdGhcIlxuPlxuICA8ZGl2IGNsYXNzPVwiZmllbGQtY29udGFpbmVyIGNoZWNrYm94XCI+XG4gICAgPGlucHV0XG4gICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgW2NoZWNrZWRdPVwidmFsdWVcIlxuICAgICAgKGNoYW5nZSk9XCJoYW5kbGVPbklucHV0KHsgaW5kZXgsIGtleSwgdmFsdWU6IHsgcHJldmlvdXM6IHZhbHVlLCBuZXc6ICRldmVudC50YXJnZXQuY2hlY2tlZCB9LCBwYXRoIH0pXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gTm9uIE9iamVjdCBUeXBlIEZpZWxkIDo6IFRleHQgRmllbGQgVGVtcGxhdGUgLS0+XG48bmctdGVtcGxhdGVcbiAgI3RleHRGaWVsZFRlbXBsYXRlXG4gIGxldC1pbmRleD1cImluZGV4XCJcbiAgbGV0LWtleT1cImtleVwiXG4gIGxldC12YWx1ZT1cInZhbHVlXCJcbiAgbGV0LXBhdGg9XCJwYXRoXCJcbj5cbiAgPGRpdiBjbGFzcz1cImZpZWxkLWNvbnRhaW5lciB0ZXh0XCI+XG4gICAgPGlucHV0XG4gICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHt7IGtleSB9fVwiXG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgICAgKGJsdXIpPVwiaGFuZGxlT25JbnB1dCh7IGluZGV4LCBrZXksIHZhbHVlOiB7IHByZXZpb3VzOiB2YWx1ZSwgbmV3OiAkZXZlbnQudGFyZ2V0LnZhbHVlIH0sIHBhdGggfSlcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBOb24gT2JqZWN0IFR5cGUgRmllbGQgOjogTnVtYmVyIEZpZWxkIFRlbXBsYXRlIC0tPlxuPG5nLXRlbXBsYXRlXG4gICNudW1iZXJGaWVsZFRlbXBsYXRlXG4gIGxldC1pbmRleD1cImluZGV4XCJcbiAgbGV0LWtleT1cImtleVwiXG4gIGxldC12YWx1ZT1cInZhbHVlXCJcbiAgbGV0LXBhdGg9XCJwYXRoXCJcbj5cbiAgPGRpdiBjbGFzcz1cImZpZWxkLWNvbnRhaW5lciBudW1iZXJcIj5cbiAgICA8aW5wdXRcbiAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIge3sga2V5IH19XCJcbiAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgIChibHVyKT1cImhhbmRsZU9uSW5wdXQoeyBpbmRleCwga2V5LCB2YWx1ZTogeyBwcmV2aW91czogdmFsdWUsIG5ldzogJGV2ZW50LnRhcmdldC52YWx1ZSB9LCBwYXRoIH0pXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48IS0tIEVORCAtLT5cbiJdfQ==
|
|
461
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci1mb3JtLWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9idWlsZGVyL2J1aWxkZXItZm9ybS1lZGl0b3IvYnVpbGRlci1mb3JtLWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9idWlsZGVyL2J1aWxkZXItZm9ybS1lZGl0b3IvYnVpbGRlci1mb3JtLWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFFLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixpQkFBaUIsRUFDakIsc0JBQXNCLEVBQ3RCLFNBQVMsRUFDVCxZQUFZLEVBQ1osb0JBQW9CLEVBQ3JCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM3RSxPQUFPLEVBQ0wsZUFBZSxFQUVoQixNQUFNLG1DQUFtQyxDQUFDO0FBQzNDLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLFdBQVcsRUFDWixNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFDTCxZQUFZLEVBQ1osdUJBQXVCLEVBQ3ZCLHVCQUF1QixFQUN2QixjQUFjLEVBQ2QsT0FBTyxFQUNQ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QUFRLEVBQUUsNEJBQTRCO29CQUN0QyxXQUFXLEVBQUUsc0NBQXNDO29CQUNuRCxTQUFTLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxzQ0FBc0MsQ0FBQztvQkFDckUsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFVBQVUsRUFBRTt3QkFDVixPQUFPLENBQUMsWUFBWSxFQUFFOzRCQUNwQixVQUFVLENBQUMsUUFBUSxFQUFFO2dDQUNuQixLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztnQ0FDeEMsT0FBTyxDQUFDLEdBQUcsQ0FBQzs2QkFDYixDQUFDOzRCQUNGLFVBQVUsQ0FBQyxRQUFRLEVBQUU7Z0NBQ25CLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQzs2QkFDdkQsQ0FBQzt5QkFDSCxDQUFDO3FCQUNIO2lCQUNGOzJKQU1DLGdCQUFnQjtzQkFEZixLQUFLO2dCQU9OLDJCQUEyQjtzQkFEMUIsTUFBTTtnQkFnRVAsUUFBUSxNQUdSLFdBQVcsTUFnQlgsY0FBYyxNQWlDZCwrQkFBK0IsTUFLL0IsaUNBQWlDLE1BaUJqQyxxQkFBcUIsTUF3QnJCLDJCQUEyQixNQWUzQiwyQkFBMkIsTUFlM0Isd0JBQXdCLE1BZXhCLGFBQWEsTUErQ2Isd0NBQXdDLE1BaUN4Qyx3Q0FBd0MsTUFpQ3hDLHFDQUFxQyxNQW9DckMsd0JBQXdCLE1BZ0J4QiwwQ0FBMEMsTUFRMUMsb0JBQW9CLE1BS3BCLFlBQVksTUFZWixjQUFjLE1BV2QsZUFBZSxNQUtmLHFCQUFxQixNQStCckIscUJBQXFCLE1BU3JCLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gXCJAYW5ndWxhci9hbmltYXRpb25zXCI7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQge1xuICBjaGVja09iamVjdEtleUV4aXN0cyxcbiAgZ2V0T2JqZWN0RGVlcENvcHksXG4gIGdldE9iamVjdFZhbHVlRnJvbVBhdGgsXG4gIGxvZ01ldGhvZCxcbiAgbWVyZ2VPYmplY3RzLFxuICBzZXRWYWx1ZVRvT2JqZWN0UGF0aFxufSBmcm9tIFwia3dpa2lkLXRvb2xraXRcIjtcbmltcG9ydCB7IEt3aWtVSUxvYWRlclNlcnZpY2UgfSBmcm9tIFwia3dpa3VpXCI7XG5pbXBvcnQgXyBmcm9tIFwibG9kYXNoXCI7XG5pbXBvcnQgeyBDb252ZXJ0ZXIgfSBmcm9tIFwiLi4vLi4vcmVuZGVyZXIvY29uZmlnLWNvbnZlcnRlci9jb25maWctY29udmVydGVyXCI7XG5pbXBvcnQge1xuICBFRm9ybUVkaXRvclR5cGUsXG4gIFRGb3JtRWRpdG9yVHlwZVxufSBmcm9tIFwiLi9idWlsZGVyLWZvcm0tZWRpdG9yLmRlZmluaXRpb25zXCI7XG5pbXBvcnQge1xuICBmaW5kTW9kaWZpZWRLZXlzLFxuICBnZXRGaWVsZEluZGV4LFxuICByZW1vdmVGaWVsZFxufSBmcm9tIFwiLi9idWlsZGVyLWZvcm0tZWRpdG9yLmhlbHBlclwiO1xuaW1wb3J0IHtcbiAgRklFTERfQ09ORklHLFxuICBGSUVMRF9QUk9QRVJUSUVTX0NPTkZJRyxcbiAgRklFTERfVkFMSURBVE9SU19DT05GSUcsXG4gIE5PRklFTERfQ09ORklHLFxuICBPUFRJT05TLFxuICBUQUJMRV9DT0xVTU5TXG59IGZyb20gXCIuL2J1aWxkZXIuZm9ybS1lZGl0b3IuY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBLd2lrSURGb3JtQnVpbGRlckZvcm1FZGl0b3JTZXJ2aWNlIH0gZnJvbSBcIi4vYnVpbGRlci5mb3JtLWVkaXRvci5zZXJ2aWNlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJrd2lraWQtYnVpbGRlci1mb3JtLWVkaXRvclwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2J1aWxkZXItZm9ybS1lZGl0b3IuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuLi9zaGFyZWQuc2Nzc1wiLCBcIi4vYnVpbGRlci1mb3JtLWVkaXRvci5jb21wb25lbnQuc2Nzc1wiXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKFwicGFuZWxJbk91dFwiLCBbXG4gICAgICB0cmFuc2l0aW9uKFwiOmVudGVyXCIsIFtcbiAgICAgICAgc3R5bGUoeyB0cmFuc2Zvcm06IFwidHJhbnNsYXRlWSgxMDAlKVwiIH0pLFxuICAgICAgICBhbmltYXRlKDE1MClcbiAgICAgIF0pLFxuICAgICAgdHJhbnNpdGlvbihcIjpsZWF2ZVwiLCBbXG4gICAgICAgIGFuaW1hdGUoMTAwLCBzdHlsZSh7IHRyYW5zZm9ybTogXCJ0cmFuc2xhdGVZKDEwMCUpXCIgfSkpXG4gICAgICBdKVxuICAgIF0pXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgS3dpa0lEQnVpbGRlckZvcm1FZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBDb21wb25lbnRzIElucHV0c1xuICAgKi9cbiAgQElucHV0KClcbiAgYWN0aXZlRm9ybUNvbmZpZzogYW55ID0ge307XG5cbiAgLyoqXG4gICAqIENvbXBvbmVudCBPdXRwdXRzIChFdmVudCBFbWl0dGVycylcbiAgICovXG4gIEBPdXRwdXQoKVxuICBvbkNsaWNrU2F2ZUFjdGl2ZUZvcm1Db25maWc6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgLyoqXG4gICAqIENvbXBvbmVudCBWYXJpYWJsZXNcbiAgICovXG4gIC8vIEZpZWxkIEVkaXRvciBWYXJpYWJsZXNcbiAgcm93czogYW55W10gPSBbXTtcbiAgY29sdW1uczogYW55W10gPSBUQUJMRV9DT0xVTU5TO1xuICBhY3RpdmVGaWVsZENvbmZpZ0VkaXRpbmc6IGFueSA9IHt9O1xuICBzaG93RmllbGRDb25maWdWYWxpZGF0b3JzQ29uZmlnRWRpdG9yOiBib29sZWFuID0gZmFsc2U7XG4gIGFjdGl2ZUZpZWxkQ29uZmlnVmFsaWRhdG9yc0NvbmZpZzogYW55ID0ge307XG4gIHNob3dGaWVsZENvbmZpZ1Byb3BlcnRpZXNDb25maWdFZGl0b3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgYWN0aXZlRmllbGRDb25maWdQcm9wZXJ0aWVzQ29uZmlnOiBhbnkgPSB7fTtcbiAgc2hvd0ZpZWxkQ29uZmlnT3B0aW9uc0NvbmZpZ0VkaXRvcjogYm9vbGVhbiA9IGZhbHNlO1xuICBhY3RpdmVGaWVsZENvbmZpZ09wdGlvbnNDb25maWc6IGFueSA9IFtdO1xuXG4gIC8vIEdlbmVyYWwgRWRpdG9yIFZhcmlhYmxlc1xuICBlZGl0b3JUeXBlT3B0aW9uczogYW55W10gPSBbXG4gICAgeyBrZXk6IFwiRklFTERTXCIsIGxhYmVsOiBcImZpZWxkc1wiIH0sXG4gICAgeyBrZXk6IFwiTk9OX0ZJRUxEU1wiLCBsYWJlbDogXCJvdGhlciBjb25maWdcIiB9XG4gIF07XG4gIGFjdGl2ZUVkaXRvclR5cGU6IFRGb3JtRWRpdG9yVHlwZSA9IEVGb3JtRWRpdG9yVHlwZS5GSUVMRFM7XG4gIGFjdGl2ZUZvcm1Db25maWdfRmllbGRzOiBhbnlbXSA9IFtdO1xuICBhY3RpdmVGb3JtQ29uZmlnX05vRmllbGRzOiBhbnkgPSB7fTtcbiAgc2hvd0NvbmZpZ1ByZXZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyBGb3Jtc1xuICBmb3JtR3JvdXA6IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xuXG4gIC8vIEZvcm0gU2F2ZWQgU3RhdGVcbiAgc2F2ZWRDb25maWc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgbWFya1NhdmVkKCk6IHZvaWQge1xuICAgIHRoaXMuc2F2ZWRDb25maWcgPSB0cnVlO1xuICB9XG4gIG1hcmtVbnNhdmVkKCk6IHZvaWQge1xuICAgIHRoaXMuc2F2ZWRDb25maWcgPSBmYWxzZTtcbiAgfVxuXG4gIC8vIERpYWxvZ1xuICBkaWFsb2dPcGVuOiBib29sZWFuID0gZmFsc2U7XG4gIHNob3dEaWFsb2coKTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2dPcGVuID0gdHJ1ZTtcbiAgfVxuICBoaWRlRGlhbG9nKCk6IHZvaWQge1xuICAgIHRoaXMuZGlhbG9nT3BlbiA9IGZhbHNlO1xuICB9XG4gIGRpYWxvZ0Vycm9yOiBib29sZWFuID0gZmFsc2U7XG4gIHNob3dEaWFsb2dFcnJvcigpOiB2b2lkIHtcbiAgICB0aGlzLmRpYWxvZ0Vycm9yID0gdHJ1ZTtcbiAgfVxuICBoaWRlRGlhbG9nRXJyb3IoKTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2dFcnJvciA9IGZhbHNlO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGxvYWRlclNlcnZpY2U6IEt3aWtVSUxvYWRlclNlcnZpY2UsXG4gICAgcHVibGljIGt3aWtpZEJ1aWxkZXJGb3JtRWRpdG9yU2VydmljZTogS3dpa0lERm9ybUJ1aWxkZXJGb3JtRWRpdG9yU2VydmljZVxuICApIHt9XG5cbiAgLyoqXG4gICAqIEFuZ3VsYXIgTGlmZWN5Y2xlIE1ldGhvZHNcbiAgICovXG4gIEBsb2dNZXRob2RcbiAgbmdPbkluaXQoKTogdm9pZCB7fVxuXG4gIEBsb2dNZXRob2RcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IHZlcmlmeUNoYW5nZSA9IChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIGNoZWNrT2JqZWN0S2V5RXhpc3RzKGNoYW5nZXMsIGtleSkgJiYgIWNoYW5nZXNba2V5XS5maXJzdENoYW5nZTtcbiAgICB9O1xuICAgIGlmICh2ZXJpZnlDaGFuZ2UoXCJhY3RpdmVGb3JtQ29uZmlnXCIpKSB7XG4gICAgICBsZXQgZm9ybUNvbmZpZyA9IG5ldyBDb252ZXJ0ZXIoKS5jb252ZXJ0Rm9ybUNvbmZpZyhcbiAgICAgICAgY2hhbmdlcy5hY3RpdmVGb3JtQ29uZmlnLmN1cnJlbnRWYWx1ZVxuICAgICAgKTtcbiAgICAgIGZvcm1Db25maWcgPSBuZXcgQ29udmVydGVyKCkudXBkYXRlRm9ybUNvbmZpZ1Byb3BlcnRpZXMoZm9ybUNvbmZpZyk7XG4gICAgICB0aGlzLmFjdGl2ZUZvcm1Db25maWcgPSBmb3JtQ29uZmlnO1xuXG4gICAgICB0aGlzLmluaXRGb3JtRWRpdG9yKHRoaXMuYWN0aXZlRm9ybUNvbmZpZyk7XG4gICAgfVxuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBpbml0Rm9ybUVkaXRvcihhY3RpdmVGb3JtQ29uZmlnOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnRvZ2dsZUxvYWRlcih0cnVlKTtcblxuICAgIHRoaXMuYWN0aXZlRm9ybUNvbmZpZ19GaWVsZHMgPSBnZXRPYmplY3REZWVwQ29weShhY3RpdmVGb3JtQ29uZmlnLmZpZWxkcyk7XG4gICAgdGhpcy5hY3RpdmVGb3JtQ29uZmlnX05vRmllbGRzID0gZ2V0T2JqZWN0RGVlcENvcHkoYWN0aXZlRm9ybUNvbmZpZyk7XG4gICAgZGVsZXRlIHRoaXMuYWN0aXZlRm9ybUNvbmZpZ19Ob0ZpZWxkcy5maWVsZHM7XG5cbiAgICB0aGlzLnJvd3MgPSB0aGlzLmFjdGl2ZUZvcm1Db25maWdfRmllbGRzLm1hcCgoZmllbGQ6IGFueSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAga2V5OiBmaWVsZC5rZXksXG4gICAgICAgIGxhYmVsOiBmaWVsZC5sYWJlbCxcbiAgICAgICAgdHlwZTogZmllbGQudHlwZSxcbiAgICAgICAgZGlzYWJsZWQ6IGZpZWxkLmRpc2FibGVkLFxuICAgICAgICB2YWxpZGF0b3JzOiB7IC4uLkZJRUxEX1ZBTElEQVRPUlNfQ09ORklHLCAuLi5maWVsZC52YWxpZGF0b3JzIH0sXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAuLi5GSUVMRF9QUk9QRVJUSUVTX0NPTkZJR1tmaWVsZC50eXBlXSxcbiAgICAgICAgICAuLi5maWVsZC5wcm9wZXJ0aWVzXG4gICAgICAgIH0sXG4gICAgICAgIG9wdGlvbnM6IGZpZWxkPy5vcHRpb25zID8/IFtdXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgdGhpcy5mb3JtR3JvdXAgPSB0aGlzLmt3aWtpZEJ1aWxkZXJGb3JtRWRpdG9yU2VydmljZS5jcmVhdGVOZXN0ZWRGb3JtR3JvdXAoXG4gICAgICB0aGlzLnJvd3NcbiAgICApO1xuXG4gICAgdGhpcy50b2dnbGVMb2FkZXIoZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYWwgRWRpdG9yIENvbW1vbiBNZXRob2RzXG4gICAqL1xuICBAbG9nTWV0aG9kXG4gIGhhbmRsZU9uQ2xpY2tDaGFuZ2VBY3RpdmVFZGl0b3IoZWRpdG9yVHlwZTogc3RyaW5nKSB7XG4gICAgdGhpcy5hY3RpdmVFZGl0b3JUeXBlID0gZWRpdG9yVHlwZSBhcyBURm9ybUVkaXRvclR5cGU7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGhhbmRsZU9uQ2xpY2tTYXZlQWN0aXZlRm9ybUNvbmZpZygpIHtcbiAgICB0aGlzLmNvbnZlcnRUb01pbmlmaWVkSnNvbigpO1xuXG4gICAgdGhpcy5tYXJrU2F2ZWQoKTtcblxuICAgIHRoaXMub25DbGlja1NhdmVBY3RpdmVGb3JtQ29uZmlnLmVtaXQoXG4gICAgICBnZXRPYmplY3REZWVwQ29weSh0aGlzLmFjdGl2ZUZvcm1Db25maWcpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaWVsZHMgRWRpdG9yIFJlbGF0ZWQgTWV0aG9kc1xuICAgKi9cbiAgLyoqXG4gICAqIE1ldGhvZHMgdG8gaGFuZGxlIGFkZGl0aW9uIG9mIG5ldyBmaWVsZFxuICAgKi9cbiAgQGxvZ01ldGhvZFxuICBoYW5kbGVPbkNsaWNrQWRkRmllbGQoKSB7XG4gICAgdGhpcy5tYXJrVW5zYXZlZCgpO1xuICAgIHRoaXMudG9nZ2xlTG9hZGVyKHRydWUpO1xuXG4gICAgY29uc3QgbmV3SW5kZXggPSB0aGlzLnJvd3MubGVuZ3RoO1xuICAgIGNvbnN0IGZpZWxkQ29uZmlnID0gZ2V0T2JqZWN0RGVlcENvcHkoXG4gICAgICBtZXJnZU9iamVjdHMoRklFTERfQ09ORklHLnRleHQsIHtcbiAgICAgICAga2V5OiBTdHJpbmcobmV3SW5kZXgpXG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnJvd3NbbmV3SW5kZXhdID0gZmllbGRDb25maWc7XG5cbiAgICBjb25zdCBmb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChmaWVsZENvbmZpZyk7XG5cbiAgICB0aGlzLmZvcm1Hcm91cC5hZGRDb250cm9sKFN0cmluZyhuZXdJbmRleCksIGZvcm1Db250cm9sKTtcblxuICAgIHRoaXMudG9nZ2xlTG9hZGVyKGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2RzIHRvIGhhbmRsZSBlZGl0aW5nIG9mIGZpZWxkIGtleS12YWx1ZXNcbiAgICovXG4gIEBsb2dNZXRob2RcbiAgaGFuZGxlT25DbGlja0VkaXRWYWxpZGF0b3JzKGU6IGFueSkge1xuICAgIGNvbnN0IGZpZWxkQ29uZmlnID0gdGhpcy5mb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKVtlLmluZGV4XTtcblxuICAgIGNvbnN0IGZpZWxkQ29uZmlnVmFsaWRhdG9ycyA9IGZpZWxkQ29uZmlnW1widmFsaWRhdG9yc1wiXTtcblxuICAgIHRoaXMuYWN0aXZlRmllbGRDb25maWdWYWxpZGF0b3JzQ29uZmlnID0gbWVyZ2VPYmplY3RzKFxuICAgICAgRklFTERfVkFMSURBVE9SU19DT05GSUcsXG4gICAgICBmaWVsZENvbmZpZ1ZhbGlkYXRvcnNcbiAgICApO1xuXG4gICAgdGhpcy5zaG93RmllbGRDb25maWdWYWxpZGF0b3JzQ29uZmlnRWRpdG9yID0gdHJ1ZTtcbiAgICB0aGlzLmFjdGl2ZUZpZWxkQ29uZmlnRWRpdGluZyA9IGZpZWxkQ29uZmlnO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBoYW5kbGVPbkNsaWNrRWRpdFByb3BlcnRpZXMoZTogYW55KSB7XG4gICAgY29uc3QgZmllbGRDb25maWcgPSB0aGlzLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpW2UuaW5kZXhdO1xuXG4gICAgY29uc3QgZmllbGRDb25maWdQcm9wZXJ0aWVzID0gZmllbGRDb25maWdbXCJwcm9wZXJ0aWVzXCJdO1xuXG4gICAgdGhpcy5hY3RpdmVGaWVsZENvbmZpZ1Byb3BlcnRpZXNDb25maWcgPSBtZXJnZU9iamVjdHMoXG4gICAgICBGSUVMRF9QUk9QRVJUSUVTX0NPTkZJR1tlLnR5cGVdLFxuICAgICAgZmllbGRDb25maWdQcm9wZXJ0aWVzXG4gICAgKTtcblxuICAgIHRoaXMuc2hvd0ZpZWxkQ29uZmlnUHJvcGVydGllc0NvbmZpZ0VkaXRvciA9IHRydWU7XG4gICAgdGhpcy5hY3RpdmVGaWVsZENvbmZpZ0VkaXRpbmcgPSBmaWVsZENvbmZpZztcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgaGFuZGxlT25DbGlja0VkaXRPcHRpb25zKGU6IGFueSkge1xuICAgIGNvbnN0IGZpZWxkQ29uZmlnID0gdGhpcy5mb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKVtlLmluZGV4XTtcblxuICAgIGNvbnN0IGZpZWxkQ29uZmlnT3B0aW9ucyA9IGZpZWxkQ29uZmlnW1wib3B0aW9uc1wiXTtcblxuICAgIHRoaXMuYWN0aXZlRmllbGRDb25maWdPcHRpb25zQ29uZmlnID0gbWVyZ2VPYmplY3RzKFtdLCBmaWVsZENvbmZpZ09wdGlvbnMpO1xuXG4gICAgdGhpcy5zaG93RmllbGRDb25maWdPcHRpb25zQ29uZmlnRWRpdG9yID0gdHJ1ZTtcbiAgICB0aGlzLmFjdGl2ZUZpZWxkQ29uZmlnRWRpdGluZyA9IGZpZWxkQ29uZmlnO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ldGhvZHMgdG8gaGFuZGxlIGNoYW5nZSBpbiBpbnB1dCB2YWx1ZXMgZm9yIEZpZWxkcyBLZXlzXG4gICAqL1xuICBAbG9nTWV0aG9kXG4gIGhhbmRsZU9uSW5wdXQoZTogYW55KSB7XG4gICAgdGhpcy5tYXJrVW5zYXZlZCgpO1xuXG4gICAgY29uc3QgZmllbGRDb25maWcgPSB0aGlzLmZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpW2UuaW5kZXhdO1xuICAgIGNvbnN0IGZpbmFsUGF0aCA9IGUucGF0aCAhPT0gXCJcIiA/IGAke2UucGF0aH0uJHtlLmtleX1gIDogZS5rZXk7XG5cbiAgICBpZiAoZmluYWxQYXRoLmluY2x1ZGVzKFwiZGlzYWJsZWRcIikpIHtcbiAgICAgIGUudmFsdWUubmV3ID0gQm9vbGVhbihlLnZhbHVlLm5ldyk7XG4gICAgfVxuXG4gICAgbGV0IG5ld0ZpZWxkQ29uZmlnID0gc2V0VmFsdWVUb09iamVjdFBhdGgoXG4gICAgICBnZXRPYmplY3REZWVwQ29weShmaWVsZENvbmZpZyksXG4gICAgICBmaW5hbFBhdGgsXG4gICAgICBlLnZhbHVlLm5ld1xuICAgICk7XG5cbiAgICBpZiAoZmluYWxQYXRoLmluY2x1ZGVzKFwidHlwZVwiKSkge1xuICAgICAgdGhpcy50b2dnbGVMb2FkZXIodHJ1ZSk7XG5cbiAgICAgIG5ld0ZpZWxkQ29uZmlnID0gc2V0VmFsdWVUb09iamVjdFBhdGgoXG4gICAgICAgIG5ld0ZpZWxkQ29uZmlnLFxuICAgICAgICBcInZhbGlkYXRvcnNcIixcbiAgICAgICAgRklFTERfVkFMSURBVE9SU19DT05GSUdcbiAgICAgICk7XG5cbiAgICAgIG5ld0ZpZWxkQ29uZmlnID0gc2V0VmFsdWVUb09iamVjdFBhdGgoXG4gICAgICAgIG5ld0ZpZWxkQ29uZmlnLFxuICAgICAgICBcInByb3BlcnRpZXNcIixcbiAgICAgICAgRklFTERfUFJPUEVSVElFU19DT05GSUdbbmV3RmllbGRDb25maWcudHlwZV1cbiAgICAgICk7XG5cbiAgICAgIHRoaXMudG9nZ2xlTG9hZGVyKGZhbHNlKTtcbiAgICB9XG5cbiAgICB0aGlzLnJvd3MgPSB0aGlzLnJvd3MubWFwKChyb3cpID0+IHtcbiAgICAgIGlmIChyb3cua2V5ID09PSBmaWVsZENvbmZpZy5rZXkpIHtcbiAgICAgICAgcmV0dXJuIGdldE9iamVjdERlZXBDb3B5KG5ld0ZpZWxkQ29uZmlnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBnZXRPYmplY3REZWVwQ29weShyb3cpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5mb3JtR3JvdXAuY29udHJvbHNbZS5pbmRleF0uc2V0VmFsdWUobmV3RmllbGRDb25maWcsIHtcbiAgICAgIGVtaXRFdmVudDogZmFsc2VcbiAgICB9KTtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgaGFuZGxlT25JbnB1dEZpZWxkQ29uZmlnVmFsaWRhdG9yc0NvbmZpZyhlOiBhbnkpIHtcbiAgICB0aGlzLm1hcmtVbnNhdmVkKCk7XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5oaWRlRGlhbG9nRXJyb3IoKTtcblxuICAgICAgY29uc3QgdmFsaWRhdG9yQ29uZmlnID0gSlNPTi5wYXJzZShlKTtcblxuICAgICAgY29uc3Qgcm93SW5kZXggPSBnZXRGaWVsZEluZGV4KFxuICAgICAgICB0aGlzLnJvd3MsXG4gICAgICAgIHRoaXMuYWN0aXZlRmllbGRDb25maWdFZGl0aW5nLmtleVxuICAgICAgKTtcbiAgICAgIGlmIChyb3dJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgdGhpcy5yb3dzW3Jvd0luZGV4XS52YWxpZGF0b3JzID0gdmFsaWRhdG9yQ29uZmlnO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmFjdGl2ZUZpZWxkQ29uZmlnRWRpdGluZyA9IG1lcmdlT2JqZWN0cyhcbiAgICAgICAgdGhpcy5hY3RpdmVGaWVsZENvbmZpZ0VkaXRpbmcsXG4gICAgICAgIHsgdmFsaWRhdG9yczogdmFsaWRhdG9yQ29uZmlnIH1cbiAgICAgICk7XG5cbiAgICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzW3Jvd0luZGV4XS5zZXRWYWx1ZShcbiAgICAgICAgdGhpcy5hY3RpdmVGaWVsZENvbmZpZ0VkaXRpbmcsXG4gICAgICAgIHtcbiAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLnNob3dEaWFsb2dFcnJvcigpO1xuICAgIH1cbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgaGFuZGxlT25JbnB1dEZpZWxkQ29uZmlnUHJvcGVydGllc0NvbmZpZyhlOiBhbnkpIHtcbiAgICB0aGlzLm1hcmtVbnNhdmVkKCk7XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5oaWRlRGlhbG9nRXJyb3IoKTtcblxuICAgICAgY29uc3QgcHJvcGVydGllc0NvbmZpZyA9IEpTT04ucGFyc2UoZSk7XG5cbiAgICAgIGNvbnN0IHJvd0luZGV4ID0gZ2V0RmllbGRJbmRleChcbiAgICAgICAgdGhpcy5yb3dzLFxuICAgICAgICB0aGlzLmFjdGl2ZUZpZWxkQ29uZmlnRWRpdGluZy5rZXlcbiAgICAgICk7XG4gICAgICBpZiAocm93SW5kZXggIT09IC0xKSB7XG4gICAgICAgIHRoaXMucm93c1tyb3dJbmRleF0ucHJvcGVydGllcyA9IHByb3BlcnRpZXNDb25maWc7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYWN0aXZlRmllbGRDb25maWdFZGl0aW5nID0gbWVyZ2VPYmplY3RzKFxuICAgICAgICB0aGlzLmFjdGl2ZUZpZWxkQ29uZmlnRWRpdGluZyxcbiAgICAgICAgeyBwcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzQ29uZmlnIH1cbiAgICAgICk7XG5cbiAgICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzW3Jvd0luZGV4XS5zZXRWYWx1ZShcbiAgICAgICAgdGhpcy5hY3RpdmVGaWVsZENvbmZpZ0VkaXRpbmcsXG4gICAgICAgIHtcbiAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLnNob3dEaWFsb2dFcnJvcigpO1xuICAgIH1cbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgaGFuZGxlT25JbnB1dEZpZWxkQ29uZmlnT3B0aW9uc0NvbmZpZyhlOiBhbnkpIHtcbiAgICB0aGlzLm1hcmtVbnNhdmVkKCk7XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5oaWRlRGlhbG9nRXJyb3IoKTtcblxuICAgICAgY29uc3Qgb3B0aW9uc0NvbmZpZyA9IEpTT04ucGFyc2UoZSk7XG5cbiAgICAgIGNvbnN0IHJvd0luZGV4ID0gZ2V0RmllbGRJbmRleChcbiAgICAgICAgdGhpcy5yb3dzLFxuICAgICAgICB0aGlzLmFjdGl2ZUZpZWxkQ29uZmlnRWRpdGluZy5rZXlcbiAgICAgICk7XG4gICAgICBpZiAocm93SW5kZXggIT09IC0xKSB7XG4gICAgICAgIHRoaXMucm93c1tyb3dJbmRleF0ub3B0aW9ucyA9IG9wdGlvbnNDb25maWc7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYWN0aXZlRmllbGRDb25maWdFZGl0aW5nID0gbWVyZ2VPYmplY3RzKFxuICAgICAgICB0aGlzLmFjdGl2ZUZpZWxkQ29uZmlnRWRpdGluZyxcbiAgICAgICAgeyBvcHRpb25zOiBvcHRpb25zQ29uZmlnIH1cbiAgICAgICk7XG5cbiAgICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzW3Jvd0luZGV4XS5zZXRWYWx1ZShcbiAgICAgICAgdGhpcy5hY3RpdmVGaWVsZENvbmZpZ0VkaXRpbmcsXG4gICAgICAgIHtcbiAgICAgICAgICBlbWl0RXZlbnQ6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLnNob3dEaWFsb2dFcnJvcigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2RzIHRvIGhhbmRsZSBkZWxldGlvbiBvZiBmaWVsZFxuICAgKi9cbiAgQGxvZ01ldGhvZFxuICBoYW5kbGVPbkNsaWNrRGVsZXRlRmllbGQoZTogYW55KSB7XG4gICAgdGhpcy5tYXJrVW5zYXZlZCgpO1xuXG4gICAgdGhpcy5yb3dzID0gcmVtb3ZlRmllbGQodGhpcy5yb3dzLCBlLmtleSk7XG5cbiAgICB0aGlzLmZvcm1Hcm91cCA9IHRoaXMua3dpa2lkQnVpbGRlckZvcm1FZGl0b3JTZXJ2aWNlLmNyZWF0ZU5lc3RlZEZvcm1Hcm91cChcbiAgICAgIHRoaXMucm93c1xuICAgICk7XG5cbiAgICB0aGlzLmZvcm1Hcm91cC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gIH1cblxuICAvKipcbiAgICogTm9uIEZpZWxkcyBFZGl0b3IgUmVsYXRlZCBNZXRob2RzXG4gICAqL1xuICBAbG9nTWV0aG9kXG4gIGhhbmRsZU9uQ2xpY2tTYXZlQWN0aXZlRm9ybUNvbmZpZ19Ob0ZpZWxkcyhlOiBhbnkpIHtcbiAgICB0aGlzLmFjdGl2ZUZvcm1Db25maWdfTm9GaWVsZHMgPSBKU09OLnBhcnNlKGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE90aGVyIENvbXBvbmVudCBNZXRob2RzXG4gICAqL1xuICBAbG9nTWV0aG9kXG4gIGhhbmRsZU9uQ2xpY2tQcmV2aWV3KCkge1xuICAgIHRoaXMuc2hvd0RpYWxvZygpO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICB0b2dnbGVMb2FkZXIobG9hZGVyKSB7XG4gICAgaWYgKGxvYWRlcikge1xuICAgICAgdGhpcy5sb2FkZXJTZXJ2aWNlLnNob3coe1xuICAgICAgICBmdWxsc2NyZWVuOiB0cnVlLFxuICAgICAgICBsb2FkZXJUZXh0OiBcIlBsZWFzZSB3YWl0XCJcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvYWRlclNlcnZpY2UuaGlkZSgpO1xuICAgIH1cbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgY2xvc2VKU09OUG9wdXAoKSB7XG4gICAgdGhpcy5oaWRlRGlhbG9nKCk7XG4gICAgdGhpcy5zaG93RmllbGRDb25maWdWYWxpZGF0b3JzQ29uZmlnRWRpdG9yID0gZmFsc2U7XG4gICAgdGhpcy5zaG93RmllbGRDb25maWdQcm9wZXJ0aWVzQ29uZmlnRWRpdG9yID0gZmFsc2U7XG4gICAgdGhpcy5zaG93RmllbGRDb25maWdPcHRpb25zQ29uZmlnRWRpdG9yID0gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogT3RoZXIgSGVscGVyIE1ldGhvZHNcbiAgICovXG4gIEBsb2dNZXRob2RcbiAgY29weVRvQ2xpcGJvYXJkKCkge1xuICAgIHRoaXMua3dpa2lkQnVpbGRlckZvcm1FZGl0b3JTZXJ2aWNlLmNvcHlUb0NsaXBib2FyZCh0aGlzLmFjdGl2ZUZvcm1Db25maWcpO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBjb252ZXJ0VG9NaW5pZmllZEpzb24oKSB7XG4gICAgY29uc3QgZmllbGRzID0gW107XG5cbiAgICBmb3IgKGxldCBmaWVsZCBvZiBPYmplY3QudmFsdWVzKFxuICAgICAgZ2V0T2JqZWN0RGVlcENvcHkodGhpcy5mb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKSlcbiAgICApKSB7XG4gICAgICBmaWVsZHMucHVzaChcbiAgICAgICAgc2V0VmFsdWVUb09iamVjdFBhdGgoXG4gICAgICAgICAgZmluZE1vZGlmaWVkS2V5cyhGSUVMRF9DT05GSUdbZmllbGRbXCJ0eXBlXCJdXSwgZmllbGQsIFwiXCIpLFxuICAgICAgICAgIFwidHlwZVwiLFxuICAgICAgICAgIGZpZWxkW1widHlwZVwiXVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGFjdGl2ZUZvcm1Db25maWdfTm9GaWVsZHNfTWluaWZpZWQgPSBmaW5kTW9kaWZpZWRLZXlzKFxuICAgICAgTk9GSUVMRF9DT05GSUcsXG4gICAgICBnZXRPYmplY3REZWVwQ29weSh0aGlzLmFjdGl2ZUZvcm1Db25maWdfTm9GaWVsZHMpLFxuICAgICAgXCJcIlxuICAgICk7XG5cbiAgICB0aGlzLmFjdGl2ZUZvcm1Db25maWcgPSBtZXJnZU9iamVjdHMoXG4gICAgICB7fSxcbiAgICAgIGFjdGl2ZUZvcm1Db25maWdfTm9GaWVsZHNfTWluaWZpZWQsXG4gICAgICB7XG4gICAgICAgIGZpZWxkczogZmllbGRzXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgY29udmVydFRvQ29tcGxldGVKc29uKCkge1xuICAgIGxldCBmb3JtQ29uZmlnID0gbmV3IENvbnZlcnRlcigpLmNvbnZlcnRGb3JtQ29uZmlnKFxuICAgICAgZ2V0T2JqZWN0RGVlcENvcHkodGhpcy5hY3RpdmVGb3JtQ29uZmlnKVxuICAgICk7XG4gICAgZm9ybUNvbmZpZyA9IG5ldyBDb252ZXJ0ZXIoKS51cGRhdGVGb3JtQ29uZmlnUHJvcGVydGllcyhmb3JtQ29uZmlnKTtcbiAgICB0aGlzLmFjdGl2ZUZvcm1Db25maWcgPSBmb3JtQ29uZmlnO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBkb3dubG9hZEpTT04oKSB7XG4gICAgdGhpcy5rd2lraWRCdWlsZGVyRm9ybUVkaXRvclNlcnZpY2UuZG93bmxvYWRKU09OKHRoaXMuYWN0aXZlRm9ybUNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogTWlzYyBNZXRob2RzXG4gICAqL1xuICBnZXRPcHRpb25zKGluZGV4LCB2YWx1ZSwga2V5LCBwYXRoKSB7XG4gICAgaWYgKHBhdGguaW5jbHVkZXMoXCJwcm9wZXJ0aWVzXCIpKSB7XG4gICAgICBjb25zdCBmaWVsZFR5cGUgPSB0aGlzLnJvd3NbaW5kZXhdLnR5cGU7XG5cbiAgICAgIGNvbnN0IGZpbmFsUGF0aCA9IGAke3BhdGh9Wycke2ZpZWxkVHlwZX0nXS4ke2tleX1gO1xuXG4gICAgICByZXR1cm4gZ2V0T2JqZWN0VmFsdWVGcm9tUGF0aChPUFRJT05TLCBmaW5hbFBhdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBmaW5hbFBhdGggPSBwYXRoICE9PSBcIlwiID8gYCR7cGF0aH0uJHtrZXl9YCA6IGtleTtcblxuICAgICAgcmV0dXJuIGdldE9iamVjdFZhbHVlRnJvbVBhdGgoT1BUSU9OUywgZmluYWxQYXRoKTtcbiAgICB9XG4gIH1cbiAgbWVtb2l6ZWRHZXRPcHRpb25zID0gXy5tZW1vaXplKHRoaXMuZ2V0T3B0aW9ucyk7XG5cbiAgaXNPcHRpb25zKGluZGV4LCB2YWx1ZSwga2V5LCBwYXRoKSB7XG4gICAgaWYgKHBhdGguaW5jbHVkZXMoXCJwcm9wZXJ0aWVzXCIpKSB7XG4gICAgICBjb25zdCBmaWVsZFR5cGUgPSB0aGlzLnJvd3NbaW5kZXhdLnR5cGU7XG5cbiAgICAgIGNvbnN0IGZpbmFsUGF0aCA9IGAke3BhdGh9Wycke2ZpZWxkVHlwZX0nXS4ke2tleX1gO1xuXG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShnZXRPYmplY3RWYWx1ZUZyb21QYXRoKE9QVElPTlMsIGZpbmFsUGF0aCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBmaW5hbFBhdGggPSBwYXRoICE9PSBcIlwiID8gYCR7cGF0aH0uJHtrZXl9YCA6IGtleTtcblxuICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZ2V0T2JqZWN0VmFsdWVGcm9tUGF0aChPUFRJT05TLCBmaW5hbFBhdGgpKTtcbiAgICB9XG4gIH1cblxuICBpc0Jvb2xlYW4odmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwiYm9vbGVhblwiO1xuICB9XG5cbiAgaXNTdHJpbmcodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCI7XG4gIH1cblxuICBpc051bWJlcih2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIjtcbiAgfVxuXG4gIGlzT2JqZWN0KHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmIHZhbHVlICE9PSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEFuZ3VsYXIgU3BlY2lmaWMgTWV0aG9kc1xuICAgKi9cbiAgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSk6IGFueSB7XG4gICAgY29uc3Qga2V5ID0gaXRlbT8ua2V5IHx8IFwiXCI7XG4gICAgY29uc3QgdmFsdWUgPSBpdGVtPy52YWx1ZSB8fCBcIlwiO1xuXG4gICAgaWYgKHR5cGVvZiBpdGVtID09PSBcInN0cmluZ1wiKSB7XG4gICAgICByZXR1cm4gYCR7U3RyaW5nKGluZGV4KX1fJHtpdGVtfV8ke25ldyBEYXRlKCkuZ2V0VGltZSgpfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBgJHtTdHJpbmcoaW5kZXgpfV8ke2tleX1fJHt2YWx1ZX1fJHtuZXcgRGF0ZSgpLmdldFRpbWUoKX1gO1xuICAgIH1cbiAgfVxufVxuIiwiPCEtLSBDb21wb25lbnQgTG9hZGVyIC0tPlxuPGt3aWt1aS1sb2FkZXI+PC9rd2lrdWktbG9hZGVyPlxuXG48IS0tIENvbXBvbmVudCBNYWluIFZpZXcgLS0+XG48ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3RpdmVGb3JtQ29uZmlnOyBlbHNlIG5vRm9ybVNlbGVjdGVkVGVtcGxhdGVcIj5cbiAgICA8aGVhZGVyPlxuICAgICAgPGRpdj5cbiAgICAgICAgJm5ic3A7RWRpdGluZyBDb25maWcgb2YgRm9ybTogPGI+e3sgYWN0aXZlRm9ybUNvbmZpZy5wcm9wcy50aXRsZSB9fTwvYj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1mb3JtLWVkaXRvci1idG5zXCI+XG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cImhhbmRsZU9uQ2xpY2tQcmV2aWV3KClcIj5wcmV2aWV3PC9idXR0b24+XG4gICAgICAgIDxkaXY+RWRpdG9yJm5ic3A7VHlwZTo8L2Rpdj5cbiAgICAgICAgPHNlbGVjdCAoY2hhbmdlKT1cImhhbmRsZU9uQ2xpY2tDaGFuZ2VBY3RpdmVFZGl0b3IoJGV2ZW50LnRhcmdldC52YWx1ZSlcIj5cbiAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGVkaXRvclR5cGVPcHRpb25zXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb24ua2V5XCJcbiAgICAgICAgICAgIFtzZWxlY3RlZF09XCJvcHRpb24ua2V5ID09PSBhY3RpdmVFZGl0b3JUeXBlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBvcHRpb24ubGFiZWwgfX1cbiAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICA8L2Rpdj5cbiAgICA8L2hlYWRlcj5cbiAgICA8bWFpbj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJmb3JtLWNvbmZpZy1maWVsZHNcIlxuICAgICAgICAqbmdJZj1cImFjdGl2ZUVkaXRvclR5cGUgPT0gJ0ZJRUxEUyc7IGVsc2Ugbm9uRmllbGRzRWRpdG9yVGVtcGxhdGVcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicm93cy5sZW5ndGggPD0gMFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJuby1maWVsZHMgZGlzY2xhaW1lclwiPlxuICAgICAgICAgICAgPGRpdj48cD5QbGVhc2UgYWRkIGZpZWxkIHRvIGdldCBzdGFydGVkPC9wPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb25cIj48aDE+JnBsdXM7PC9oMT48L2Rpdj5cbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImhhbmRsZU9uQ2xpY2tBZGRGaWVsZCgpXCI+YWRkIGZpZWxkPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8dGFibGU+XG4gICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zXCI+XG4gICAgICAgICAgICAgICAge3sgY29sdW1uIH19XG4gICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgcm93IG9mIHJvd3M7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlGblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1uczsgbGV0IGogPSBpbmRleFwiPlxuICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzc109XCJjb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4gIT09ICdkZWxldGUnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbiAhPT0gJ3ZhbGlkYXRvcnMnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbiAhPT0gJ3Byb3BlcnRpZXMnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbiAhPT0gJ3R5cGUnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbiAhPT0gJ2Rpc2FibGVkJyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4gIT09ICdvcHRpb25zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImdldEZpZWxkVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkVmFsdWU6IHJvd1tjb2x1bW5dLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZEtleTogY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnRQYXRoOiAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4gPT09ICd0eXBlJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJvcHRpb25GaWVsZFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGNvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcm93W2NvbHVtbl0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogbWVtb2l6ZWRHZXRPcHRpb25zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd1tjb2x1bW5dLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4gPT09ICdkaXNhYmxlZCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYm9vbGVhbkZpZWxkVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiByb3dbY29sdW1uXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBtZW1vaXplZEdldE9wdGlvbnMoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93W2NvbHVtbl0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbiA9PT0gJ2RlbGV0ZSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZU9uQ2xpY2tEZWxldGVGaWVsZCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogcm93WydrZXknXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyb3dzLmxlbmd0aCA9PT0gMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbHVtbiA9PT0gJ3ZhbGlkYXRvcnMnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVPbkNsaWNrRWRpdFZhbGlkYXRvcnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IHJvd1sna2V5J10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiByb3dbJ3R5cGUnXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4gPT09ICdwcm9wZXJ0aWVzJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlT25DbGlja0VkaXRQcm9wZXJ0aWVzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiByb3dbJ2tleSddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogcm93Wyd0eXBlJ11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInJvd1sndHlwZSddID09PSAncmFkaW8nICYmIGNvbHVtbiA9PT0gJ29wdGlvbnMnXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVPbkNsaWNrRWRpdE9wdGlvbnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IHJvd1sna2V5J10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiByb3dbJ3R5cGUnXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJyb3dbJ3R5cGUnXSA9PT0gJ3NlbGVjdCcgJiYgY29sdW1uID09PSAnb3B0aW9ucydcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZU9uQ2xpY2tFZGl0T3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogcm93WydrZXknXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHJvd1sndHlwZSddXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgPC90YWJsZT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFkZC1maWVsZC1idG4tY29udGFpbmVyXCI+IDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctdGVtcGxhdGUgI25vbkZpZWxkc0VkaXRvclRlbXBsYXRlPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jb25maWctbm8tZmllbGRzXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJqc29uLWVkaXRvclwiXG4gICAgICAgICAgICBjb250ZW50ZWRpdGFibGU9XCJ0cnVlXCJcbiAgICAgICAgICAgIChrZXl1cCk9XCJcbiAgICAgICAgICAgICAgaGFuZGxlT25DbGlja1NhdmVBY3RpdmVGb3JtQ29uZmlnX05vRmllbGRzKFxuICAgICAgICAgICAgICAgICRldmVudC50YXJnZXQuaW5uZXJIVE1MXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgYWN0aXZlRm9ybUNvbmZpZ19Ob0ZpZWxkcyB8IGpzb24gfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbWFpbj5cbiAgICA8Zm9vdGVyPlxuICAgICAgPGJ1dHRvblxuICAgICAgICAqbmdJZj1cInJvd3MubGVuZ3RoID4gMFwiXG4gICAgICAgIChjbGljayk9XCJoYW5kbGVPbkNsaWNrQWRkRmllbGQoKVwiXG4gICAgICA+XG4gICAgICAgIGFkZCBmaWVsZFxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIChjbGljayk9XCJoYW5kbGVPbkNsaWNrU2F2ZUFjdGl2ZUZvcm1Db25maWcoKVwiXG4gICAgICAgIFtjbGFzcy5zZWNvbmRhcnldPVwiIXNhdmVkQ29uZmlnXCJcbiAgICAgID5cbiAgICAgICAge3sgc2F2ZWRDb25maWcgPyBcInNhdmVkXCIgOiBcInVuc2F2ZWRcIiB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9mb290ZXI+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctdGVtcGxhdGUgI25vRm9ybVNlbGVjdGVkVGVtcGxhdGU+XG4gICAgPGRpdiBjbGFzcz1cIm5vLWZvcm0tc2VsZWN0ZWQgZGlzY2xhaW1lclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImljb25cIj48aDE+JiMxMDE1MDs8L2gxPjwvZGl2PlxuICAgICAgPGRpdj48cD5QbGVhc2Ugc2VsZWN0IGEgZm9ybSB0byBlZGl0IGl0J3MgZmllbGRzPC9wPjwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG5cbjwhLS0gQ29tcG9uZW50IERpYWxvZyAtLT5cbjxkaXZcbiAgY2xhc3M9XCJtb2RhbFwiXG4gIFtjbGFzcy5lcnJvcl09XCJkaWFsb2dFcnJvciA9PT0gdHJ1ZVwiXG4gICpuZ0lmPVwiXG4gICAgZGlhbG9nT3BlbiB8fFxuICAgIHNob3dGaWVsZENvbmZpZ1ZhbGlkYXRvcnNDb25maWdFZGl0b3IgfHxcbiAgICBzaG93RmllbGRDb25maWdQcm9wZXJ0aWVzQ29uZmlnRWRpdG9yIHx8XG4gICAgc2hvd0ZpZWxkQ29uZmlnT3B0aW9uc0NvbmZpZ0VkaXRvclxuICBcIlxuICBbQHBhbmVsSW5PdXRdXG4+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib3hcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIlxuICAgICAgKm5nSWY9XCJkaWFsb2dPcGVuXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGluZ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtdGl0bGVcIj5cbiAgICAgICAgICB7eyBhY3RpdmVGb3JtQ29uZmlnLnByb3BzLnRpdGxlIH19J3MgQ29uZmlnIFByZXZpZXdcbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1hY3Rpb25zXCI+XG4gICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY29udmVydFRvTWluaWZpZWRKc29uKClcIj5taW5pZnk8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjb252ZXJ0VG9Db21wbGV0ZUpzb24oKVwiPmZ1bGw8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJkb3dubG9hZEpTT04oKVwiPmRvd25sb2FkPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY29weVRvQ2xpcGJvYXJkKClcIj5jb3B5PC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY2xvc2VKU09OUG9wdXAoKVwiPmNsb3NlPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwianNvbi1lZGl0b3JcIj5cbiAgICAgICAgICA8Y29kZT57eyBhY3RpdmVGb3JtQ29uZmlnIHwganNvbiB9fTwvY29kZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIlxuICAgICAgKm5nSWY9XCJzaG93RmllbGRDb25maWdWYWxpZGF0b3JzQ29uZmlnRWRpdG9yXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGluZ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtdGl0bGVcIj5cbiAgICAgICAgICB7eyBhY3RpdmVGb3JtQ29uZmlnLnByb3BzLnRpdGxlIH19J3MgVmFsaWRhdG9yIENvbmZpZyBFZGl0b3JcbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1hY3Rpb25zXCI+XG4gICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY2xvc2VKU09OUG9wdXAoKVwiPmNsb3NlPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJqc29uLWVkaXRvclwiXG4gICAgICAgICAgY29udGVudGVkaXRhYmxlPVwidHJ1ZVwiXG4gICAgICAgICAgKGtleXVwKT1cIlxuICAgICAgICAgICAgaGFuZGxlT25JbnB1dEZpZWxkQ29uZmlnVmFsaWRhdG9yc0NvbmZpZygkZXZlbnQudGFyZ2V0LmlubmVySFRNTClcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgdGhpcy5hY3RpdmVGaWVsZENvbmZpZ1ZhbGlkYXRvcnNDb25maWcgfCBqc29uIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJtb2RhbC1jb250ZW50XCJcbiAgICAgICpuZ0lmPVwic2hvd0ZpZWxkQ29uZmlnUHJvcGVydGllc0NvbmZpZ0VkaXRvclwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRpbmdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+XG4gICAgICAgICAge3sgYWN0aXZlRm9ybUNvbmZpZy5wcm9wcy50aXRsZSB9fSdzIFByb3BlcnRpZXMgQ29uZmlnIEVkaXRvclxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWFjdGlvbnNcIj5cbiAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjbG9zZUpTT05Qb3B1cCgpXCI+Y2xvc2U8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImpzb24tZWRpdG9yXCJcbiAgICAgICAgICBjb250ZW50ZWRpdGFibGU9XCJ0cnVlXCJcbiAgICAgICAgICAoa2V5dXApPVwiXG4gICAgICAgICAgICBoYW5kbGVPbklucHV0RmllbGRDb25maWdQcm9wZXJ0aWVzQ29uZmlnKCRldmVudC50YXJnZXQuaW5uZXJIVE1MKVxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyB0aGlzLmFjdGl2ZUZpZWxkQ29uZmlnUHJvcGVydGllc0NvbmZpZyB8IGpzb24gfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIlxuICAgICAgKm5nSWY9XCJzaG93RmllbGRDb25maWdPcHRpb25zQ29uZmlnRWRpdG9yXCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGluZ1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtdGl0bGVcIj5cbiAgICAgICAgICB7eyBhY3RpdmVGb3JtQ29uZmlnLnByb3BzLnRpdGxlIH19J3MgT3B0aW9ucyBDb25maWcgRWRpdG9yXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYWN0aW9uc1wiPlxuICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImNsb3NlSlNPTlBvcHVwKClcIj5jbG9zZTwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwianNvbi1lZGl0b3JcIlxuICAgICAgICAgIGNvbnRlbnRlZGl0YWJsZT1cInRydWVcIlxuICAgICAgICAgIChrZXl1cCk9XCJcbiAgICAgICAgICAgIGhhbmRsZU9uSW5wdXRGaWVsZENvbmZpZ09wdGlvbnNDb25maWcoJGV2ZW50LnRhcmdldC5pbm5lckhUTUwpXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHRoaXMuYWN0aXZlRmllbGRDb25maWdPcHRpb25zQ29uZmlnIHwganNvbiB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPCEtLSBFTkQgLS0+XG5cbjwhLS0gVGVtcGxhdGUgZm9yIHJlbmRlcmluZyBkaWZmZXJlbnQgZmllbGQgdHlwZXMgLS0+XG48IS0tIEdlbmVyYWwgRmllbGQgVGVtcGxhdGUgLS0+XG48bmctdGVtcGxhdGVcbiAgI2dldEZpZWxkVGVtcGxhdGVcbiAgbGV0LWluZGV4PVwiaW5kZXhcIlxuICBsZXQtdmFsdWU9XCJmaWVsZFZhbHVlXCJcbiAgbGV0LWtleT1cImZpZWxkS2V5XCJcbiAgbGV0LXBhdGg9XCJwYXJlbnRQYXRoXCJcbj5cbiAgPGRpdj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJcbiAgICAgICAgaXNPYmplY3QodmFsdWUpID8gb2JqZWN0RmllbGRUZW1wbGF0ZSA6IG5vdE9iamVjdEZpZWxkVGVtcGxhdGVcbiAgICAgIFwiXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICBpbmRleDogaW5kZXgsXG4gICAgICAgIGZpZWxkVmFsdWU6IHZhbHVlLFxuICAgICAgICBmaWVsZEtleToga2V5LFxuICAgICAgICBwYXJlbnRQYXRoOiBwYXRoXG4gICAgICB9XCJcbiAgICA+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBPYmplY3QgVHlwZSBGaWVsZCBUZW1wbGF0ZSAtLT5cbjxuZy10ZW1wbGF0ZVxuICAjb2JqZWN0RmllbGRUZW1wbGF0ZVxuICBsZXQtaW5kZXg9XCJpbmRleFwiXG4gIGxldC12YWx1ZT1cImZpZWxkVmFsdWVcIlxuICBsZXQta2V5PVwiZmllbGRLZXlcIlxuICBsZXQtcGF0aD1cInBhcmVudFBhdGhcIlxuPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIHZhbHVlIHwga2V5dmFsdWVcIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJnZXRGaWVsZFRlbXBsYXRlXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgICAgZmllbGRWYWx1ZTogaXRlbS52YWx1ZSxcbiAgICAgICAgZmllbGRLZXk6IGl0ZW0ua2V5LFxuICAgICAgICBwYXJlbnRQYXRoOiBwYXRoID09PSAnJyA/IGtleSA6IHBhdGggKyAnLicgKyBrZXlcbiAgICAgIH1cIlxuICAgID5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tIE5vbiBPYmplY3QgVHlwZSBGaWVsZCBUZW1wbGF0ZSAtLT5cbjxuZy10ZW1wbGF0ZVxuICAjbm90T2JqZWN0RmllbGRUZW1wbGF0ZVxuICBsZXQtaW5kZXg9XCJpbmRleFwiXG4gIGxldC12YWx1ZT1cImZpZWxkVmFsdWVcIlxuICBsZXQta2V5PVwiZmllbGRLZXlcIlxuICBsZXQtcGF0aD1cInBhcmVudFBhdGhcIlxuPlxuICA8ZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc09wdGlvbnMoaW5kZXgsIHZhbHVlLCBrZXksIHBhdGgpXCI+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm9wdGlvbkZpZWxkVGVtcGxhdGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgIGluZGV4OiBpbmRleCxcbiAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgcGF0aDogcGF0aCxcbiAgICAgICAgICBvcHRpb25zOiBtZW1vaXplZEdldE9wdGlvbnMoaW5kZXgsIHZhbHVlLCBrZXksIHBhdGgpXG4gICAgICAgIH1cIlxuICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiIWlzT3B0aW9ucyhpbmRleCwgdmFsdWUsIGtleSwgcGF0aCkgJiYgaXNTdHJpbmcodmFsdWUpXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgdGV4dEZpZWxkVGVtcGxhdGU7XG4gICAgICAgICAgY29udGV4dDogeyBpbmRleDogaW5kZXgsIGtleToga2V5LCB2YWx1ZTogdmFsdWUsIHBhdGg6IHBhdGggfVxuICAgICAgICBcIlxuICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiIWlzT3B0aW9ucyhpbmRleCwgdmFsdWUsIGtleSwgcGF0aCkgJiYgaXNOdW1iZXIodmFsdWUpXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgbnVtYmVyRmllbGRUZW1wbGF0ZTtcbiAgICAgICAgICBjb250ZXh0OiB7IGluZGV4OiBpbmRleCwga2V5OiBrZXksIHZhbHVlOiB2YWx1ZSwgcGF0aDogcGF0aCB9XG4gICAgICAgIFwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBOb24gT2JqZWN0IFR5cGUgRmllbGQgOjogT3B0aW9ucyBGaWVsZCBUZW1wbGF0ZSAtLT5cbjxuZy10ZW1wbGF0ZVxuICAjb3B0aW9uRmllbGRUZW1wbGF0ZVxuICBsZXQtaW5kZXg9XCJpbmRleFwiXG4gIGxldC1rZXk9XCJrZXlcIlxuICBsZXQtdmFsdWU9XCJ2YWx1ZVwiXG4gIGxldC1wYXRoPVwicGF0aFwiXG4gIGxldC1vcHRpb25zPVwib3B0aW9uc1wiXG4+XG4gIDxkaXYgY2xhc3M9XCJmaWVsZC1jb250YWluZXIgb3B0aW9uc1wiPlxuICAgIDxzZWxlY3RcbiAgICAgIChjaGFuZ2UpPVwiaGFuZGxlT25JbnB1dCh7IGluZGV4LCBrZXksIHZhbHVlOiB7IHByZXZpb3VzOiB2YWx1ZSwgbmV3OiAkZXZlbnQudGFyZ2V0LnZhbHVlIH0sIHBhdGggfSlcIlxuICAgID5cbiAgICAgIDxvcHRpb25cbiAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zXCJcbiAgICAgICAgW3ZhbHVlXT1cIm9wdGlvblwiXG4gICAgICAgIFtzZWxlY3RlZF09XCJvcHRpb24gPT09IHZhbHVlXCJcbiAgICAgICAgPnt7IG9wdGlvbiB9fTwvb3B0aW9uXG4gICAgICA+XG4gICAgPC9zZWxlY3Q+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBOb24gT2JqZWN0IFR5cGUgRmllbGQgOjogQm9vbGVhbiBGaWVsZCBUZW1wbGF0ZSAtLT5cbjxuZy10ZW1wbGF0ZVxuICAjYm9vbGVhbkZpZWxkVGVtcGxhdGVcbiAgbGV0LWluZGV4PVwiaW5kZXhcIlxuICBsZXQta2V5PVwia2V5XCJcbiAgbGV0LXZhbHVlPVwidmFsdWVcIlxuICBsZXQtcGF0aD1cInBhdGhcIlxuPlxuICA8ZGl2IGNsYXNzPVwiZmllbGQtY29udGFpbmVyIGNoZWNrYm94XCI+XG4gICAgPGlucHV0XG4gICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgW2NoZWNrZWRdPVwidmFsdWVcIlxuICAgICAgKGNoYW5nZSk9XCJoYW5kbGVPbklucHV0KHsgaW5kZXgsIGtleSwgdmFsdWU6IHsgcHJldmlvdXM6IHZhbHVlLCBuZXc6ICRldmVudC50YXJnZXQuY2hlY2tlZCB9LCBwYXRoIH0pXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gTm9uIE9iamVjdCBUeXBlIEZpZWxkIDo6IFRleHQgRmllbGQgVGVtcGxhdGUgLS0+XG48bmctdGVtcGxhdGVcbiAgI3RleHRGaWVsZFRlbXBsYXRlXG4gIGxldC1pbmRleD1cImluZGV4XCJcbiAgbGV0LWtleT1cImtleVwiXG4gIGxldC12YWx1ZT1cInZhbHVlXCJcbiAgbGV0LXBhdGg9XCJwYXRoXCJcbj5cbiAgPGRpdiBjbGFzcz1cImZpZWxkLWNvbnRhaW5lciB0ZXh0XCI+XG4gICAgPGlucHV0XG4gICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHt7IGtleSB9fVwiXG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgICAgKGJsdXIpPVwiaGFuZGxlT25JbnB1dCh7IGluZGV4LCBrZXksIHZhbHVlOiB7IHByZXZpb3VzOiB2YWx1ZSwgbmV3OiAkZXZlbnQudGFyZ2V0LnZhbHVlIH0sIHBhdGggfSlcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBOb24gT2JqZWN0IFR5cGUgRmllbGQgOjogTnVtYmVyIEZpZWxkIFRlbXBsYXRlIC0tPlxuPG5nLXRlbXBsYXRlXG4gICNudW1iZXJGaWVsZFRlbXBsYXRlXG4gIGxldC1pbmRleD1cImluZGV4XCJcbiAgbGV0LWtleT1cImtleVwiXG4gIGxldC12YWx1ZT1cInZhbHVlXCJcbiAgbGV0LXBhdGg9XCJwYXRoXCJcbj5cbiAgPGRpdiBjbGFzcz1cImZpZWxkLWNvbnRhaW5lciBudW1iZXJcIj5cbiAgICA8aW5wdXRcbiAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIge3sga2V5IH19XCJcbiAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgIChibHVyKT1cImhhbmRsZU9uSW5wdXQoeyBpbmRleCwga2V5LCB2YWx1ZTogeyBwcmV2aW91czogdmFsdWUsIG5ldzogJGV2ZW50LnRhcmdldC52YWx1ZSB9LCBwYXRoIH0pXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48IS0tIEVORCAtLT5cbiJdfQ==
|
|
@@ -163,7 +163,7 @@ export const FIELD_PROPERTIES_CONFIG = {
|
|
|
163
163
|
"preview-image": Object.assign(Object.assign({}, FIELD_PROPERTIES_COMMON_CONFIG), { altText: "", html: { before: "", after: "" }, imageType: "url", loadingType: "auto", styles: "", class: "" }),
|
|
164
164
|
html: Object.assign({}, FIELD_PROPERTIES_COMMON_CONFIG),
|
|
165
165
|
file: Object.assign(Object.assign({}, FIELD_PROPERTIES_COMMON_CONFIG), { accept: "application/pdf", containerStyles: "", label: "drop a file or", link: "click to upload", maxFileSize: 1000000, multiple: true, size: "m", uploadFileToServer: true }),
|
|
166
|
-
capture: Object.assign(Object.assign({}, FIELD_PROPERTIES_COMMON_CONFIG), { containerStyles: "", buttonText: "Camera", icon: "tuiIconCameraLarge", showMediaFiles: true, uploadFileToServer: false, cameraConfig: {
|
|
166
|
+
capture: Object.assign(Object.assign({}, FIELD_PROPERTIES_COMMON_CONFIG), { containerStyles: "", buttonText: "Camera", icon: "tuiIconCameraLarge", showMediaFiles: true, uploadFileToServer: false, isCroppedImage: false, isMaskedImage: false, cameraConfig: {
|
|
167
167
|
header: {
|
|
168
168
|
title: "Camera",
|
|
169
169
|
isBack: false,
|
|
@@ -172,10 +172,12 @@ export const FIELD_PROPERTIES_CONFIG = {
|
|
|
172
172
|
},
|
|
173
173
|
footer: {
|
|
174
174
|
isUpload: true,
|
|
175
|
-
isFlip:
|
|
175
|
+
isFlip: false,
|
|
176
|
+
isSwitch: true
|
|
176
177
|
},
|
|
177
178
|
others: {
|
|
178
|
-
|
|
179
|
+
isFrontCamera: false,
|
|
180
|
+
flipHorizontal: false,
|
|
179
181
|
mask: {
|
|
180
182
|
shape: ""
|
|
181
183
|
},
|
|
@@ -252,4 +254,4 @@ export const NOFIELD_CONFIG = {
|
|
|
252
254
|
},
|
|
253
255
|
fieldGroups: {}
|
|
254
256
|
};
|
|
255
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5mb3JtLWVkaXRvci5jb25zdGFudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9idWlsZGVyL2J1aWxkZXItZm9ybS1lZGl0b3IvYnVpbGRlci5mb3JtLWVkaXRvci5jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHO0lBQzNCLEtBQUs7SUFDTCxPQUFPO0lBQ1AsTUFBTTtJQUNOLFVBQVU7SUFDVixZQUFZO0lBQ1osWUFBWTtJQUNaLFNBQVM7SUFDVCxRQUFRO0NBQ1QsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRztJQUNyQixJQUFJLEVBQUU7UUFDSixPQUFPO1FBQ1AsTUFBTTtRQUNOLFVBQVU7UUFDVixVQUFVO1FBQ1YsUUFBUTtRQUNSLE1BQU07UUFDTixPQUFPO1FBQ1AsT0FBTztRQUNQLFlBQVk7UUFDWixzQkFBc0I7UUFDdEIsUUFBUTtRQUNSLFFBQVE7UUFDUixLQUFLO1FBQ0wsUUFBUTtRQUNSLEtBQUs7UUFDTCxVQUFVO1FBQ1YsZ0JBQWdCO1FBQ2hCLGVBQWU7UUFDZixPQUFPO1FBQ1AsZUFBZTtRQUNmLE1BQU07UUFDTixNQUFNO1FBQ04sU0FBUztLQUNWO0lBQ0QsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztJQUN2QixVQUFVLEVBQUU7UUFDVixNQUFNLEVBQUUsRUFBRTtRQUNWLElBQUksRUFBRTtZQUNKLElBQUksRUFBRSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDO1NBQ3BDO1FBQ0QsUUFBUSxFQUFFO1lBQ1IsWUFBWSxFQUFFLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQztZQUMvQixJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO1lBQ2hCLE9BQU8sRUFBRSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDO1NBQ3ZDO1FBQ0QsTUFBTSxFQUFFO1lBQ04sT0FBTyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztTQUN2QjtRQUNELEtBQUssRUFBRTtZQUNMLDBCQUEwQixFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztTQUMxQztRQUNELEtBQUssRUFBRTtZQUNMLFdBQVcsRUFBRSxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUM7WUFDdkMsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQztTQUNqQjtRQUNELFlBQVksRUFBRTtZQUNaLFdBQVcsRUFBRSxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUM7WUFDdkMsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQztTQUNqQjtRQUNELE1BQU0sRUFBRTtZQUNOLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO1NBQ3RCO1FBQ0QsR0FBRyxFQUFFO1lBQ0gsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7WUFDckIsSUFBSSxFQUFFLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQztTQUM3QjtRQUNELEtBQUssRUFBRTtZQUNMLFNBQVMsRUFBRSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUM7WUFDNUIsV0FBVyxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUM7U0FDdkM7UUFDRCxlQUFlLEVBQUU7WUFDZixTQUFTLEVBQUUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDO1lBQzVCLFdBQVcsRUFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDO1NBQ3ZDO1FBQ0QsSUFBSSxFQUFFLEVBQUU7UUFDUixPQUFPLEVBQUUsRUFBRTtLQUNaO0lBQ0QsVUFBVSxFQUFFO1FBQ1YsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztRQUN2QixPQUFPLEVBQUU7WUFDUCxHQUFHLEVBQUU7Z0JBQ0gsbUJBQW1CO2dCQUNuQixvQkFBb0I7Z0JBQ3BCLG9CQUFvQjtnQkFDcEIseUJBQXlCO2dCQUN6QixjQUFjO2dCQUNkLFFBQVE7Z0JBQ1IsbUJBQW1CO2dCQUNuQixZQUFZO2dCQUNaLG9CQUFvQjtnQkFDcEIsVUFBVTtnQkFDVixZQUFZO2dCQUNaLGNBQWM7Z0JBQ2QsY0FBYztnQkFDZCxvQkFBb0I7Z0JBQ3BCLGVBQWU7Z0JBQ2YsYUFBYTtnQkFDYixhQUFhO2dCQUNiLFlBQVk7Z0JBQ1osc0JBQXNCO2dCQUN0QixtQkFBbUI7Z0JBQ25CLG1CQUFtQjtnQkFDbkIsdUJBQXVCO2dCQUN2QixpQ0FBaUM7Z0JBQ2pDLGVBQWU7Z0JBQ2YsNEJBQTRCO2dCQUM1QixhQUFhO2dCQUNiLFVBQVU7Z0JBQ1YsaUJBQWlCO2dCQUNqQixZQUFZO2dCQUNaLFVBQVU7Z0JBQ1YsVUFBVTtnQkFDVixVQUFVO2dCQUNWLFNBQVM7Z0JBQ1QsWUFBWTtnQkFDWixTQUFTO2dCQUNULGNBQWM7Z0JBQ2QsY0FBYztnQkFDZCxXQUFXO2dCQUNYLFNBQVM7Z0JBQ1QsY0FBYztnQkFDZCxRQUFRO2FBQ1Q7U0FDRjtLQUNGO0NBQ0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHO0lBQ3JDLFFBQVEsRUFBRSxLQUFLO0lBQ2YsU0FBUyxFQUFFLENBQUM7SUFDWixTQUFTLEVBQUUsQ0FBQztJQUNaLE9BQU8sRUFBRTtRQUNQLEdBQUcsRUFBRSxRQUFRO1FBQ2IsT0FBTyxFQUFFLEVBQUU7S0FDWjtJQUNELEdBQUcsRUFBRSxDQUFDO0lBQ04sR0FBRyxFQUFFLENBQUM7Q0FDUCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUc7SUFDNUMsUUFBUSxFQUFFLEtBQUs7SUFDZixXQUFXLEVBQUUsRUFBRTtDQUNoQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUc7SUFDckMsTUFBTSxvQkFDRCw4QkFBOEIsQ0FDbEM7SUFDRCxLQUFLLG9CQUNBLDhCQUE4QixDQUNsQztJQUNELElBQUksa0NBQ0MsOEJBQThCLEtBQ2pDLElBQUksRUFBRSxTQUFTLEdBQ2hCO0lBQ0QsUUFBUSxvQkFDSCw4QkFBOEIsQ0FDbEM7SUFDRCxRQUFRLGtDQUNILDhCQUE4QixLQUNqQyxZQUFZLEVBQUUsT0FBTyxFQUNyQixJQUFJLEVBQUUsR0FBRyxFQUNULE9BQU8sRUFBRSxTQUFTLEdBQ25CO0lBQ0QsTUFBTSxrQ0FDRCw4QkFBOEIsS0FDakMsT0FBTyxFQUFFLEtBQUssRUFDZCxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQ2QsR0FBRyxFQUFFLFFBQVEsRUFDYixPQUFPLEVBQUUsRUFBRSxFQUNYLE1BQU0sRUFBRSxFQUFFLEVBQ1YsU0FBUyxFQUFFLENBQUMsR0FDYjtJQUNELElBQUksa0NBQ0MsOEJBQThCLEtBQ2pDLEdBQUcsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQ2xDLEdBQUcsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQ2xDLGFBQWEsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQzVDLGFBQWEsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQzdDO0lBQ0QsS0FBSyxrQ0FDQSw4QkFBOEIsS0FDakMsV0FBVyxFQUFFLEtBQUssRUFDbEIseUJBQXlCLEVBQUUsRUFBRSxFQUM3QiwwQkFBMEIsRUFBRSxJQUFJLEdBQ2pDO0lBQ0QsS0FBSyxrQ0FDQSw4QkFBOEIsS0FDakMsV0FBVyxFQUFFLFVBQVUsRUFDdkIsSUFBSSxFQUFFLEdBQUcsR0FDVjtJQUNELFlBQVksa0NBQ1AsOEJBQThCLEtBQ2pDLFdBQVcsRUFBRSxVQUFVLEVBQ3ZCLElBQUksRUFBRSxHQUFHLEdBQ1Y7SUFDRCxNQUFNLG9CQUNELDhCQUE4QixDQUNsQztJQUNELE1BQU0sa0NBQ0QsOEJBQThCLEtBQ2pDLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFDZCxHQUFHLEVBQUUsUUFBUSxFQUNiLE9BQU8sRUFBRSxDQUFDLEVBQ1YsSUFBSSxFQUFFLEdBQUcsRUFDVCxLQUFLLEVBQUUsQ0FBQyxHQUNUO0lBQ0QsR0FBRyxrQ0FDRSw4QkFBOEIsS0FDakMsSUFBSSxFQUFFLEVBQUUsRUFDUixJQUFJLEVBQUUsR0FBRyxFQUNULElBQUksRUFBRSxVQUFVLEVBQ2hCLFNBQVMsRUFBRSxDQUFDLEdBQ2I7SUFDRCxHQUFHLG9CQUNFLDhCQUE4QixDQUNsQztJQUNELFVBQVUsb0JBQ0wsOEJBQThCLENBQ2xDO0lBQ0QsZ0JBQWdCLG9CQUNYLDhCQUE4QixDQUNsQztJQUNELGVBQWUsb0JBQ1YsOEJBQThCLENBQ2xDO0lBQ0QsS0FBSyxrQ0FDQSw4QkFBOEIsS0FDakMsT0FBTyxFQUFFLEVBQUUsRUFDWCxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFDL0IsU0FBUyxFQUFFLEtBQUssRUFDaEIsV0FBVyxFQUFFLE1BQU0sRUFDbkIsTUFBTSxFQUFFLEVBQUUsRUFDVixLQUFLLEVBQUUsRUFBRSxHQUNWO0lBQ0QsZUFBZSxrQ0FDViw4QkFBOEIsS0FDakMsT0FBTyxFQUFFLEVBQUUsRUFDWCxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFDL0IsU0FBUyxFQUFFLEtBQUssRUFDaEIsV0FBVyxFQUFFLE1BQU0sRUFDbkIsTUFBTSxFQUFFLEVBQUUsRUFDVixLQUFLLEVBQUUsRUFBRSxHQUNWO0lBQ0QsSUFBSSxvQkFDQyw4QkFBOEIsQ0FDbEM7SUFDRCxJQUFJLGtDQUNDLDhCQUE4QixLQUNqQyxNQUFNLEVBQUUsaUJBQWlCLEVBQ3pCLGVBQWUsRUFBRSxFQUFFLEVBQ25CLEtBQUssRUFBRSxnQkFBZ0IsRUFDdkIsSUFBSSxFQUFFLGlCQUFpQixFQUN2QixXQUFXLEVBQUUsT0FBTyxFQUNwQixRQUFRLEVBQUUsSUFBSSxFQUNkLElBQUksRUFBRSxHQUFHLEVBQ1Qsa0JBQWtCLEVBQUUsSUFBSSxHQUN6QjtJQUNELE9BQU8sa0NBQ0YsOEJBQThCLEtBQ2pDLGVBQWUsRUFBRSxFQUFFLEVBQ25CLFVBQVUsRUFBRSxRQUFRLEVBQ3BCLElBQUksRUFBRSxvQkFBb0IsRUFDMUIsY0FBYyxFQUFFLElBQUksRUFDcEIsa0JBQWtCLEVBQUUsS0FBSyxFQUN6QixZQUFZLEVBQUU7WUFDWixNQUFNLEVBQUU7Z0JBQ04sS0FBSyxFQUFFLFFBQVE7Z0JBQ2YsTUFBTSxFQUFFLEtBQUs7Z0JBQ2IsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsT0FBTyxFQUFFLElBQUk7YUFDZDtZQUNELE1BQU0sRUFBRTtnQkFDTixRQUFRLEVBQUUsSUFBSTtnQkFDZCxNQUFNLEVBQUUsSUFBSTthQUNiO1lBQ0QsTUFBTSxFQUFFO2dCQUNOLGNBQWMsRUFBRSxJQUFJO2dCQUNwQixJQUFJLEVBQUU7b0JBQ0osS0FBSyxFQUFFLEVBQUU7aUJBQ1Y7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLElBQUksRUFBRSxLQUFLO29CQUNYLE1BQU0sRUFBRTt3QkFDTixNQUFNLEVBQUUsS0FBSzt3QkFDYixPQUFPLEVBQUUsS0FBSztxQkFDZjtpQkFDRjthQUNGO1NBQ0YsR0FDRjtDQUNGLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRztJQUNqQyxHQUFHLEVBQUUsRUFBRTtJQUNQLEtBQUssRUFBRSxFQUFFO0lBQ1QsUUFBUSxFQUFFLEtBQUs7SUFDZixVQUFVLG9CQUNMLHVCQUF1QixDQUMzQjtDQUNGLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUc7SUFDMUIsS0FBSyxrQ0FDQSxtQkFBbUIsS0FDdEIsSUFBSSxFQUFFLE9BQU8sRUFDYixVQUFVLG9CQUNMLHVCQUF1QixDQUFDLEtBQUssSUFFbkM7SUFDRCxJQUFJLGtDQUNDLG1CQUFtQixLQUN0QixJQUFJLEVBQUUsTUFBTSxFQUNaLFVBQVUsb0JBQ0wsdUJBQXVCLENBQUMsSUFBSSxJQUVsQztJQUNELE1BQU0sa0NBQ0QsbUJBQW1CLEtBQ3RCLElBQUksRUFBRSxRQUFRLEVBQ2QsVUFBVSxvQkFDTCx1QkFBdUIsQ0FBQyxNQUFNLElBRXBDO0lBQ0QsUUFBUSxrQ0FDSCxtQkFBbUIsS0FDdEIsSUFBSSxFQUFFLFVBQVUsRUFDaEIsVUFBVSxvQkFDTCx1QkFBdUIsQ0FBQyxRQUFRLElBRXRDO0lBQ0QsUUFBUSxrQ0FDSCxtQkFBbUIsS0FDdEIsSUFBSSxFQUFFLFVBQVUsRUFDaEIsVUFBVSxvQkFDTCx1QkFBdUIsQ0FBQyxRQUFRLElBRXRDO0lBQ0QsTUFBTSxrQ0FDRCxtQkFBbUIsS0FDdEIsSUFBSSxFQUFFLFFBQVEsRUFDZCxVQUFVLG9CQUNMLHVCQUF1QixDQUFDLE1BQU0sSUFFcEM7SUFDRCxJQUFJLGtDQUNDLG1CQUFtQixLQUN0QixJQUFJLEVBQUUsTUFBTSxFQUNaLFVBQVUsb0JBQ0wsdUJBQXVCLENBQUMsSUFBSSxJQUVsQztJQUNELEtBQUssa0NBQ0EsbUJBQW1CLEtBQ3RCLElBQUksRUFBRSxPQUFPLEVBQ2IsVUFBVSxvQkFDTCx1QkFBdUIsQ0FBQyxLQUFLLElBRW5DO0lBQ0QsS0FBSyxrQ0FDQSxtQkFBbUIsS0FDdEIsSUFBSSxFQUFFLE9BQU8sRUFDYixVQUFVLG9CQUNMLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxHQUVyQyxPQUFPLEVBQUUsRUFBRSxHQUNaO0lBQ0QsWUFBWSxrQ0FDUCxtQkFBbUIsS0FDdEIsSUFBSSxFQUFFLFlBQVksRUFDbEIsVUFBVSxvQkFDTCx1QkFBdUIsQ0FBQyxZQUFZLENBQUMsR0FFMUMsT0FBTyxFQUFFLEVBQUUsR0FDWjtJQUNELE1BQU0sa0NBQ0QsbUJBQW1CLEtBQ3RCLElBQUksRUFBRSxRQUFRLEVBQ2QsVUFBVSxvQkFDTCx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsR0FFdEMsT0FBTyxFQUFFLEVBQUUsR0FDWjtJQUNELE1BQU0sa0NBQ0QsbUJBQW1CLEtBQ3RCLElBQUksRUFBRSxRQUFRLEVBQ2QsVUFBVSxvQkFDTCx1QkFBdUIsQ0FBQyxNQUFNLElBRXBDO0lBQ0QsR0FBRyxrQ0FDRSxtQkFBbUIsS0FDdEIsSUFBSSxFQUFFLEtBQUssRUFDWCxVQUFVLG9CQUNMLHVCQUF1QixDQUFDLEdBQUcsSUFFakM7SUFDRCxHQUFHLGtDQUNFLG1CQUFtQixLQUN0QixJQUFJLEVBQUUsS0FBSyxFQUNYLFVBQVUsb0JBQ0wsdUJBQXVCLENBQUMsS0FBSyxDQUFDLElBRXBDO0lBQ0QsVUFBVSxrQ0FDTCxtQkFBbUIsS0FDdEIsSUFBSSxFQUFFLFVBQVUsRUFDaEIsVUFBVSxvQkFDTCx1QkFBdUIsQ0FBQyxVQUFVLENBQUMsSUFFekM7SUFDRCxnQkFBZ0Isa0NBQ1gsbUJBQW1CLEtBQ3RCLElBQUksRUFBRSxnQkFBZ0IsRUFDdEIsVUFBVSxvQkFDTCx1QkFBdUIsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUUvQztJQUNELGVBQWUsa0NBQ1YsbUJBQW1CLEtBQ3RCLElBQUksRUFBRSxlQUFlLEVBQ3JCLFVBQVUsb0JBQ0wsdUJBQXVCLENBQUMsZUFBZSxDQUFDLElBRTlDO0lBQ0QsS0FBSyxrQ0FDQSxtQkFBbUIsS0FDdEIsSUFBSSxFQUFFLE9BQU8sRUFDYixVQUFVLG9CQUNMLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxJQUV0QztJQUNELGVBQWUsa0NBQ1YsbUJBQW1CLEtBQ3RCLElBQUksRUFBRSxlQUFlLEVBQ3JCLFVBQVUsb0JBQ0wsdUJBQXVCLENBQUMsZUFBZSxDQUFDLElBRTlDO0lBQ0QsSUFBSSxrQ0FDQyxtQkFBbUIsS0FDdEIsSUFBSSxFQUFFLE1BQU0sRUFDWixVQUFVLG9CQUNMLHVCQUF1QixDQUFDLElBQUksR0FFakMsSUFBSSxFQUFFO1lBQ0osTUFBTSxFQUFFLEVBQUU7WUFDVixLQUFLLEVBQUUsRUFBRTtTQUNWLEdBQ0Y7SUFDRCxJQUFJLGtDQUNDLG1CQUFtQixLQUN0QixJQUFJLEVBQUUsTUFBTSxFQUNaLFVBQVUsb0JBQ0wsdUJBQXVCLENBQUMsSUFBSSxJQUVsQztJQUNELE9BQU8sa0NBQ0YsbUJBQW1CLEtBQ3RCLElBQUksRUFBRSxTQUFTLEVBQ2YsVUFBVSxvQkFDTCx1QkFBdUIsQ0FBQyxPQUFPLElBRXJDO0NBQ0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUM1QixRQUFRLEVBQUUsSUFBSTtJQUNkLElBQUksRUFBRSxNQUFNO0lBQ1osS0FBSyxFQUFFO1FBQ0wsR0FBRyxFQUFFLEVBQUU7UUFDUCxLQUFLLEVBQUUsRUFBRTtLQUNWO0lBQ0QsTUFBTSxFQUFFLEtBQUs7SUFDYixRQUFRLEVBQUUsS0FBSztJQUNmLFdBQVcsRUFBRSxFQUFFO0lBQ2YsS0FBSyxFQUFFLEVBQUU7SUFDVCxVQUFVLEVBQUU7UUFDVixNQUFNLEVBQUU7WUFDTixJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUM3QyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBQ3ZFLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNuQyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1NBQ3pCO1FBQ0QsTUFBTSxFQUFFO1lBQ04sZUFBZSxFQUFFO2dCQUNmLGtCQUFrQixFQUFFLEtBQUs7Z0JBQ3pCLE1BQU0sRUFBRSxLQUFLO2dCQUNiLEtBQUssRUFBRSxNQUFNO2FBQ2Q7WUFDRCxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7U0FDN0M7UUFDRCx5QkFBeUIsRUFBRSxLQUFLO0tBQ2pDO0lBQ0QsV0FBVyxFQUFFLEVBQUU7Q0FDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBUQUJMRV9DT0xVTU5TID0gW1xuICBcImtleVwiLFxuICBcImxhYmVsXCIsXG4gIFwidHlwZVwiLFxuICBcImRpc2FibGVkXCIsXG4gIFwidmFsaWRhdG9yc1wiLFxuICBcInByb3BlcnRpZXNcIixcbiAgXCJvcHRpb25zXCIsXG4gIFwiZGVsZXRlXCJcbl07XG5cbmV4cG9ydCBjb25zdCBPUFRJT05TID0ge1xuICB0eXBlOiBbXG4gICAgXCJ0aXRsZVwiLFxuICAgIFwidGV4dFwiLFxuICAgIFwidGV4dGFyZWFcIixcbiAgICBcImNoZWNrYm94XCIsXG4gICAgXCJudW1iZXJcIixcbiAgICBcImRhdGVcIixcbiAgICBcInBob25lXCIsXG4gICAgXCJyYWRpb1wiLFxuICAgIFwicmFkaW8tbGlzdFwiLFxuICAgIFwiZHJvcGRvd24td2l0aC1zZWFyY2hcIixcbiAgICBcInNlbGVjdFwiLFxuICAgIFwic2xpZGVyXCIsXG4gICAgXCJvdHBcIixcbiAgICBcImJ1dHRvblwiLFxuICAgIFwiYXBpXCIsXG4gICAgXCJhcGktY2FsbFwiLFxuICAgIFwiYWFkaGFhci1udW1iZXJcIixcbiAgICBcImlucHV0LWFhZGhhYXJcIixcbiAgICBcImltYWdlXCIsXG4gICAgXCJwcmV2aWV3LWltYWdlXCIsXG4gICAgXCJodG1sXCIsXG4gICAgXCJmaWxlXCIsXG4gICAgXCJjYXB0dXJlXCJcbiAgXSxcbiAgZGlzYWJsZWQ6IFt0cnVlLCBmYWxzZV0sXG4gIHByb3BlcnRpZXM6IHtcbiAgICBidXR0b246IHt9LFxuICAgIHRleHQ6IHtcbiAgICAgIGNhc2U6IFtcImRlZmF1bHRcIiwgXCJ1cHBlclwiLCBcImxvd2VyXCJdXG4gICAgfSxcbiAgICBjaGVja2JveDoge1xuICAgICAgY29udGVudEFsaWduOiBbXCJsZWZ0XCIsIFwicmlnaHRcIl0sXG4gICAgICBzaXplOiBbXCJtXCIsIFwibFwiXSxcbiAgICAgIHZhcmlhbnQ6IFtcImJhc2ljXCIsIFwiYmxvY2tcIiwgXCJsYWJlbGVkXCJdXG4gICAgfSxcbiAgICBudW1iZXI6IHtcbiAgICAgIGRlY2ltYWw6IFt0cnVlLCBmYWxzZV1cbiAgICB9LFxuICAgIHBob25lOiB7XG4gICAgICByZW1vdmVDb3VudHJ5Q29kZUZyb21WYWx1ZTogW3RydWUsIGZhbHNlXVxuICAgIH0sXG4gICAgcmFkaW86IHtcbiAgICAgIG9yaWVudGF0aW9uOiBbXCJob3Jpem9udGFsXCIsIFwidmVydGljYWxcIl0sXG4gICAgICBzaXplOiBbXCJsXCIsIFwibVwiXVxuICAgIH0sXG4gICAgXCJyYWRpby1saXN0XCI6IHtcbiAgICAgIG9yaWVudGF0aW9uOiBbXCJob3Jpem9udGFsXCIsIFwidmVydGljYWxcIl0sXG4gICAgICBzaXplOiBbXCJsXCIsIFwibVwiXVxuICAgIH0sXG4gICAgc2xpZGVyOiB7XG4gICAgICBzaXplOiBbXCJzXCIsIFwibVwiLCBcImxcIl1cbiAgICB9LFxuICAgIG90cDoge1xuICAgICAgc2l6ZTogW1wic1wiLCBcIm1cIiwgXCJsXCJdLFxuICAgICAgbW9kZTogW1wic2luZ2xlXCIsIFwibXVsdGlwbGVcIl1cbiAgICB9LFxuICAgIGltYWdlOiB7XG4gICAgICBpbWFnZVR5cGU6IFtcImJhc2U2NFwiLCBcInVybFwiXSxcbiAgICAgIGxvYWRpbmdUeXBlOiBbXCJhdXRvXCIsIFwibGF6eVwiLCBcImVhZ2VyXCJdXG4gICAgfSxcbiAgICBcInByZXZpZXctaW1hZ2VcIjoge1xuICAgICAgaW1hZ2VUeXBlOiBbXCJiYXNlNjRcIiwgXCJ1cmxcIl0sXG4gICAgICBsb2FkaW5nVHlwZTogW1wiYXV0b1wiLCBcImxhenlcIiwgXCJlYWdlclwiXVxuICAgIH0sXG4gICAgZmlsZToge30sXG4gICAgY2FwdHVyZToge31cbiAgfSxcbiAgdmFsaWRhdG9yczoge1xuICAgIHJlcXVpcmVkOiBbdHJ1ZSwgZmFsc2VdLFxuICAgIHBhdHRlcm46IHtcbiAgICAgIGtleTogW1xuICAgICAgICBcIklTX0FBREhBQVJfTlVNQkVSXCIsXG4gICAgICAgIFwiSVNfQkFOS19BQ0NPVU5UX05PXCIsXG4gICAgICAgIFwiSVNfQkFOS19TV0lGVF9DT0RFXCIsXG4gICAgICAgIFwiSVNfQklSVEhfQ0VSVElGSUNBVEVfTk9cIixcbiAgICAgICAgXCJJU19DSEVRVUVfTk9cIixcbiAgICAgICAgXCJJU19DSU5cIixcbiAgICAgICAgXCJJU19DUkVESVRfQ0FSRF9OT1wiLFxuICAgICAgICBcIklTX0NLWUNfTk9cIixcbiAgICAgICAgXCJJU19EUklWSU5HX0xJQ0VOU0VcIixcbiAgICAgICAgXCJJU19HU1RJTlwiLFxuICAgICAgICBcIklTX0lGU0NfTk9cIixcbiAgICAgICAgXCJJU19NSUNSX0NPREVcIixcbiAgICAgICAgXCJJU19NT0JJTEVfTk9cIixcbiAgICAgICAgXCJJU19ORUZUX09SX1JUR1NfTk9cIixcbiAgICAgICAgXCJJU19QQU5fTlVNQkVSXCIsXG4gICAgICAgIFwiSVNfUEFTU1BPUlRcIixcbiAgICAgICAgXCJJU19QSE9ORV9OT1wiLFxuICAgICAgICBcIklTX1BJTkNPREVcIixcbiAgICAgICAgXCJJU19QVVJDSEFTRV9PUkRFUl9OT1wiLFxuICAgICAgICBcIklTX1JBVElPTl9DQVJEX05PXCIsXG4gICAgICAgIFwiSVNfU0VSVklDRV9UQVhfTk9cIixcbiAgICAgICAgXCJJU19TT0NJQUxfU0VDVVJJVFlfTk9cIixcbiAgICAgICAgXCJJU19VUElfVFJBTlNBQ1RJT05fUkVGRVJFTkNFX05PXCIsXG4gICAgICAgIFwiSVNfVkFUX1RJTl9OT1wiLFxuICAgICAgICBcIklTX1ZFSElDTEVfUkVHSVNUUkFUSU9OX05PXCIsXG4gICAgICAgIFwiSVNfVk9URVJfSURcIixcbiAgICAgICAgXCJJU19BTFBIQVwiLFxuICAgICAgICBcIklTX0FMUEhBTlVNRVJJQ1wiLFxuICAgICAgICBcIklTX0JPT0xFQU5cIixcbiAgICAgICAgXCJJU19FTUFJTFwiLFxuICAgICAgICBcIklTX0VNUFRZXCIsXG4gICAgICAgIFwiSVNfRkFMU0VcIixcbiAgICAgICAgXCJJU19IVE1MXCIsXG4gICAgICAgIFwiSVNfSU5URUdFUlwiLFxuICAgICAgICBcIklTX0pTT05cIixcbiAgICAgICAgXCJJU19MT1dFUkNBU0VcIixcbiAgICAgICAgXCJJU19OT1RfRU1QVFlcIixcbiAgICAgICAgXCJJU19OVU1CRVJcIixcbiAgICAgICAgXCJJU19UUlVFXCIsXG4gICAgICAgIFwiSVNfVVBQRVJDQVNFXCIsXG4gICAgICAgIFwiQ1VTVE9NXCJcbiAgICAgIF1cbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBGSUVMRF9WQUxJREFUT1JTX0NPTkZJRyA9IHtcbiAgcmVxdWlyZWQ6IGZhbHNlLFxuICBtaW5MZW5ndGg6IDAsXG4gIG1heExlbmd0aDogMCxcbiAgcGF0dGVybjoge1xuICAgIGtleTogXCJDVVNUT01cIixcbiAgICBwYXR0ZXJuOiBcIlwiXG4gIH0sXG4gIG1pbjogMCxcbiAgbWF4OiAwXG59O1xuXG5leHBvcnQgY29uc3QgRklFTERfUFJPUEVSVElFU19DT01NT05fQ09ORklHID0ge1xuICByZWFkT25seTogZmFsc2UsXG4gIHBsYWNlaG9sZGVyOiBcIlwiXG59O1xuXG5leHBvcnQgY29uc3QgRklFTERfUFJPUEVSVElFU19DT05GSUcgPSB7XG4gIGJ1dHRvbjoge1xuICAgIC4uLkZJRUxEX1BST1BFUlRJRVNfQ09NTU9OX0NPTkZJR1xuICB9LFxuICB0aXRsZToge1xuICAgIC4uLkZJRUxEX1BST1BFUlRJRVNfQ09NTU9OX0NPTkZJR1xuICB9LFxuICB0ZXh0OiB7XG4gICAgLi4uRklFTERfUFJPUEVSVElFU19DT01NT05fQ09ORklHLFxuICAgIGNhc2U6IFwiZGVmYXVsdFwiXG4gIH0sXG4gIHRleHRhcmVhOiB7XG4gICAgLi4uRklFTERfUFJPUEVSVElFU19DT01NT05fQ09ORklHXG4gIH0sXG4gIGNoZWNrYm94OiB7XG4gICAgLi4uRklFTERfUFJPUEVSVElFU19DT01NT05fQ09ORklHLFxuICAgIGNvbnRlbnRBbGlnbjogXCJyaWdodFwiLFxuICAgIHNpemU6IFwibFwiLFxuICAgIHZhcmlhbnQ6IFwibGFiZWxlZFwiXG4gIH0sXG4gIG51bWJlcjoge1xuICAgIC4uLkZJRUxEX1BST1BFUlRJRVNfQ09NTU9OX0NPTkZJRyxcbiAgICBkZWNpbWFsOiBmYWxzZSxcbiAgICBtaW46IC1JbmZpbml0eSxcbiAgICBtYXg6IEluZmluaXR5LFxuICAgIHBvc3RmaXg6IFwiXCIsXG4gICAgcHJlZml4OiBcIlwiLFxuICAgIHByZWNpc2lvbjogMFxuICB9LFxuICBkYXRlOiB7XG4gICAgLi4uRklFTERfUFJPUEVSVElFU19DT01NT05fQ09ORklHLFxuICAgIG1pbjogeyBtb250aDogMCwgZGF5OiAwLCB5ZWFyOiAwIH0sXG4gICAgbWF4OiB7IG1vbnRoOiAwLCBkYXk6IDAsIHllYXI6IDAgfSxcbiAgICBtaW5DYWxjdWxhdGVkOiB7IG1vbnRoOiAwLCBkYXk6IDAsIHllYXI6IDAgfSxcbiAgICBtYXhDYWxjdWxhdGVkOiB7IG1vbnRoOiAwLCBkYXk6IDAsIHllYXI6IDAgfVxuICB9LFxuICBwaG9uZToge1xuICAgIC4uLkZJRUxEX1BST1BFUlRJRVNfQ09NTU9OX0NPTkZJRyxcbiAgICBjb3VudHJ5Q29kZTogXCIrOTFcIixcbiAgICBwaG9uZU1hc2tBZnRlckNvdW50cnlDb2RlOiBcIlwiLFxuICAgIHJlbW92ZUNvdW50cnlDb2RlRnJvbVZhbHVlOiB0cnVlXG4gIH0sXG4gIHJhZGlvOiB7XG4gICAgLi4uRklFTERfUFJPUEVSVElFU19DT01NT05fQ09ORklHLFxuICAgIG9yaWVudGF0aW9uOiBcInZlcnRpY2FsXCIsXG4gICAgc2l6ZTogXCJsXCJcbiAgfSxcbiAgXCJyYWRpby1saXN0XCI6IHtcbiAgICAuLi5GSUVMRF9QUk9QRVJUSUVTX0NPTU1PTl9DT05GSUcsXG4gICAgb3JpZW50YXRpb246IFwidmVydGljYWxcIixcbiAgICBzaXplOiBcImxcIlxuICB9LFxuICBzZWxlY3Q6IHtcbiAgICAuLi5GSUVMRF9QUk9QRVJUSUVTX0NPTU1PTl9DT05GSUdcbiAgfSxcbiAgc2xpZGVyOiB7XG4gICAgLi4uRklFTERfUFJPUEVSVElFU19DT01NT05fQ09ORklHLFxuICAgIG1pbjogLUluZmluaXR5LFxuICAgIG1heDogSW5maW5pdHksXG4gICAgcXVhbnR1bTogMCxcbiAgICBzaXplOiBcIm1cIixcbiAgICBzdGVwczogMVxuICB9LFxuICBvdHA6IHtcbiAgICAuLi5GSUVMRF9QUk9QRVJUSUVTX0NPTU1PTl9DT05GSUcsXG4gICAgbWFzazogXCJcIixcbiAgICBzaXplOiBcIm1cIixcbiAgICBtb2RlOiBcIm11bHRpcGxlXCIsXG4gICAgb3RwTGVuZ3RoOiA2XG4gIH0sXG4gIGFwaToge1xuICAgIC4uLkZJRUxEX1BST1BFUlRJRVNfQ09NTU9OX0NPTkZJR1xuICB9LFxuICBcImFwaS1jYWxsXCI6IHtcbiAgICAuLi5GSUVMRF9QUk9QRVJUSUVTX0NPTU1PTl9DT05GSUdcbiAgfSxcbiAgXCJhYWRoYWFyLW51bWJlclwiOiB7XG4gICAgLi4uRklFTERfUFJPUEVSVElFU19DT01NT05fQ09ORklHXG4gIH0sXG4gIFwiaW5wdXQtYWFkaGFhclwiOiB7XG4gICAgLi4uRklFTERfUFJPUEVSVElFU19DT01NT05fQ09ORklHXG4gIH0sXG4gIGltYWdlOiB7XG4gICAgLi4uRklFTERfUFJPUEVSVElFU19DT01NT05fQ09ORklHLFxuICAgIGFsdFRleHQ6IFwiXCIsXG4gICAgaHRtbDogeyBiZWZvcmU6IFwiXCIsIGFmdGVyOiBcIlwiIH0sXG4gICAgaW1hZ2VUeXBlOiBcInVybFwiLFxuICAgIGxvYWRpbmdUeXBlOiBcImF1dG9cIixcbiAgICBzdHlsZXM6IFwiXCIsXG4gICAgY2xhc3M6IFwiXCJcbiAgfSxcbiAgXCJwcmV2aWV3LWltYWdlXCI6IHtcbiAgICAuLi5GSUVMRF9QUk9QRVJUSUVTX0NPTU1PTl9DT05GSUcsXG4gICAgYWx0VGV4dDogXCJcIixcbiAgICBodG1sOiB7IGJlZm9yZTogXCJcIiwgYWZ0ZXI6IFwiXCIgfSxcbiAgICBpbWFnZVR5cGU6IFwidXJsXCIsXG4gICAgbG9hZGluZ1R5cGU6IFwiYXV0b1wiLFxuICAgIHN0eWxlczogXCJcIixcbiAgICBjbGFzczogXCJcIlxuICB9LFxuICBodG1sOiB7XG4gICAgLi4uRklFTERfUFJPUEVSVElFU19DT01NT05fQ09ORklHXG4gIH0sXG4gIGZpbGU6IHtcbiAgICAuLi5GSUVMRF9QUk9QRVJUSUVTX0NPTU1PTl9DT05GSUcsXG4gICAgYWNjZXB0OiBcImFwcGxpY2F0aW9uL3BkZlwiLFxuICAgIGNvbnRhaW5lclN0eWxlczogXCJcIixcbiAgICBsYWJlbDogXCJkcm9wIGEgZmlsZSBvclwiLFxuICAgIGxpbms6IFwiY2xpY2sgdG8gdXBsb2FkXCIsXG4gICAgbWF4RmlsZVNpemU6IDEwMDAwMDAsXG4gICAgbXVsdGlwbGU6IHRydWUsXG4gICAgc2l6ZTogXCJtXCIsXG4gICAgdXBsb2FkRmlsZVRvU2VydmVyOiB0cnVlXG4gIH0sXG4gIGNhcHR1cmU6IHtcbiAgICAuLi5GSUVMRF9QUk9QRVJUSUVTX0NPTU1PTl9DT05GSUcsXG4gICAgY29udGFpbmVyU3R5bGVzOiBcIlwiLFxuICAgIGJ1dHRvblRleHQ6IFwiQ2FtZXJhXCIsXG4gICAgaWNvbjogXCJ0dWlJY29uQ2FtZXJhTGFyZ2VcIixcbiAgICBzaG93TWVkaWFGaWxlczogdHJ1ZSxcbiAgICB1cGxvYWRGaWxlVG9TZXJ2ZXI6IGZhbHNlLFxuICAgIGNhbWVyYUNvbmZpZzoge1xuICAgICAgaGVhZGVyOiB7XG4gICAgICAgIHRpdGxlOiBcIkNhbWVyYVwiLFxuICAgICAgICBpc0JhY2s6IGZhbHNlLFxuICAgICAgICBpc0V4cGFuZDogdHJ1ZSxcbiAgICAgICAgaXNDbG9zZTogdHJ1ZVxuICAgICAgfSxcbiAgICAgIGZvb3Rlcjoge1xuICAgICAgICBpc1VwbG9hZDogdHJ1ZSxcbiAgICAgICAgaXNGbGlwOiB0cnVlXG4gICAgICB9LFxuICAgICAgb3RoZXJzOiB7XG4gICAgICAgIGZsaXBIb3Jpem9udGFsOiB0cnVlLFxuICAgICAgICBtYXNrOiB7XG4gICAgICAgICAgc2hhcGU6IFwiXCJcbiAgICAgICAgfSxcbiAgICAgICAgcHJldmlldzoge1xuICAgICAgICAgIHNob3c6IGZhbHNlLFxuICAgICAgICAgIGhlYWRlcjoge1xuICAgICAgICAgICAgaXNCYWNrOiBmYWxzZSxcbiAgICAgICAgICAgIGlzQ2xvc2U6IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgRklFTERfQ09NTU9OX0NPTkZJRyA9IHtcbiAga2V5OiBcIlwiLFxuICBsYWJlbDogXCJcIixcbiAgZGlzYWJsZWQ6IGZhbHNlLFxuICB2YWxpZGF0b3JzOiB7XG4gICAgLi4uRklFTERfVkFMSURBVE9SU19DT05GSUdcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IEZJRUxEX0NPTkZJRyA9IHtcbiAgdGl0bGU6IHtcbiAgICAuLi5GSUVMRF9DT01NT05fQ09ORklHLFxuICAgIHR5cGU6IFwidGl0bGVcIixcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAuLi5GSUVMRF9QUk9QRVJUSUVTX0NPTkZJRy50aXRsZVxuICAgIH1cbiAgfSxcbiAgdGV4dDoge1xuICAgIC4uLkZJRUxEX0NPTU1PTl9DT05GSUcsXG4gICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgcHJvcGVydGllczoge1xuICAgICAgLi4uRklFTERfUFJPUEVSVElFU19DT05GSUcudGV4dFxuICAgIH1cbiAgfSxcbiAgYnV0dG9uOiB7XG4gICAgLi4uRklFTERfQ09NTU9OX0NPTkZJRyxcbiAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgIC4uLkZJRUxEX1BST1BFUlRJRVNfQ09ORklHLmJ1dHRvblxuICAgIH1cbiAgfSxcbiAgdGV4dGFyZWE6IHtcbiAgICAuLi5GSUVMRF9DT01NT05fQ09ORklHLFxuICAgIHR5cGU6IFwidGV4dGFyZWFcIixcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAuLi5GSUVMRF9QUk9QRVJUSUVTX0NPTkZJRy50ZXh0YXJlYVxuICAgIH1cbiAgfSxcbiAgY2hlY2tib3g6IHtcbiAgICAuLi5GSUVMRF9DT01NT05fQ09ORklHLFxuICAgIHR5cGU6IFwiY2hlY2tib3hcIixcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAuLi5GSUVMRF9QUk9QRVJUSUVTX0NPTkZJRy5jaGVja2JveFxuICAgIH1cbiAgfSxcbiAgbnVtYmVyOiB7XG4gICAgLi4uRklFTERfQ09NTU9OX0NPTkZJRyxcbiAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgIC4uLkZJRUxEX1BST1BFUlRJRVNfQ09ORklHLm51bWJlclxuICAgIH1cbiAgfSxcbiAgZGF0ZToge1xuICAgIC4uLkZJRUxEX0NPTU1PTl9DT05GSUcsXG4gICAgdHlwZTogXCJkYXRlXCIsXG4gICAgcHJvcGVydGllczoge1xuICAgICAgLi4uRklFTERfUFJPUEVSVElFU19DT05GSUcuZGF0ZVxuICAgIH1cbiAgfSxcbiAgcGhvbmU6IHtcbiAgICAuLi5GSUVMRF9DT01NT05fQ09ORklHLFxuICAgIHR5cGU6IFwicGhvbmVcIixcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAuLi5GSUVMRF9QUk9QRVJUSUVTX0NPTkZJRy5waG9uZVxuICAgIH1cbiAgfSxcbiAgcmFkaW86IHtcbiAgICAuLi5GSUVMRF9DT01NT05fQ09ORklHLFxuICAgIHR5cGU6IFwicmFkaW9cIixcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAuLi5GSUVMRF9QUk9QRVJUSUVTX0NPTkZJR1tcInJhZGlvXCJdXG4gICAgfSxcbiAgICBvcHRpb25zOiBbXVxuICB9LFxuICBcInJhZGlvLWxpc3RcIjoge1xuICAgIC4uLkZJRUxEX0NPTU1PTl9DT05GSUcsXG4gICAgdHlwZTogXCJyYWRpby1saXN0XCIsXG4gICAgcHJvcGVydGllczoge1xuICAgICAgLi4uRklFTERfUFJPUEVSVElFU19DT05GSUdbXCJyYWRpby1saXN0XCJdXG4gICAgfSxcbiAgICBvcHRpb25zOiBbXVxuICB9LFxuICBzZWxlY3Q6IHtcbiAgICAuLi5GSUVMRF9DT01NT05fQ09ORklHLFxuICAgIHR5cGU6IFwic2VsZWN0XCIsXG4gICAgcHJvcGVydGllczoge1xuICAgICAgLi4uRklFTERfUFJPUEVSVElFU19DT05GSUdbXCJzZWxlY3RcIl1cbiAgICB9LFxuICAgIG9wdGlvbnM6IFtdXG4gIH0sXG4gIHNsaWRlcjoge1xuICAgIC4uLkZJRUxEX0NPTU1PTl9DT05GSUcsXG4gICAgdHlwZTogXCJzbGlkZXJcIixcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAuLi5GSUVMRF9QUk9QRVJUSUVTX0NPTkZJRy5zbGlkZXJcbiAgICB9XG4gIH0sXG4gIG90cDoge1xuICAgIC4uLkZJRUxEX0NPTU1PTl9DT05GSUcsXG4gICAgdHlwZTogXCJvdHBcIixcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAuLi5GSUVMRF9QUk9QRVJUSUVTX0NPTkZJRy5vdHBcbiAgICB9XG4gIH0sXG4gIGFwaToge1xuICAgIC4uLkZJRUxEX0NPTU1PTl9DT05GSUcsXG4gICAgdHlwZTogXCJhcGlcIixcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAuLi5GSUVMRF9QUk9QRVJUSUVTX0NPTkZJR1tcImFwaVwiXVxuICAgIH1cbiAgfSxcbiAgXCJhcGktY2FsbFwiOiB7XG4gICAgLi4uRklFTERfQ09NTU9OX0NPTkZJRyxcbiAgICB0eXBlOiBcImFwaS1jYWxsXCIsXG4gICAgcHJvcGVydGllczoge1xuICAgICAgLi4uRklFTERfUFJPUEVSVElFU19DT05GSUdbXCJhcGktY2FsbFwiXVxuICAgIH1cbiAgfSxcbiAgXCJhYWRoYWFyLW51bWJlclwiOiB7XG4gICAgLi4uRklFTERfQ09NTU9OX0NPTkZJRyxcbiAgICB0eXBlOiBcImFhZGhhYXItbnVtYmVyXCIsXG4gICAgcHJvcGVydGllczoge1xuICAgICAgLi4uRklFTERfUFJPUEVSVElFU19DT05GSUdbXCJhYWRoYWFyLW51bWJlclwiXVxuICAgIH1cbiAgfSxcbiAgXCJpbnB1dC1hYWRoYWFyXCI6IHtcbiAgICAuLi5GSUVMRF9DT01NT05fQ09ORklHLFxuICAgIHR5cGU6IFwiaW5wdXQtYWFkaGFhclwiLFxuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgIC4uLkZJRUxEX1BST1BFUlRJRVNfQ09ORklHW1wiaW5wdXQtYWFkaGFhclwiXVxuICAgIH1cbiAgfSxcbiAgaW1hZ2U6IHtcbiAgICAuLi5GSUVMRF9DT01NT05fQ09ORklHLFxuICAgIHR5cGU6IFwiaW1hZ2VcIixcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAuLi5GSUVMRF9QUk9QRVJUSUVTX0NPTkZJR1tcImltYWdlXCJdXG4gICAgfVxuICB9LFxuICBcInByZXZpZXctaW1hZ2VcIjoge1xuICAgIC4uLkZJRUxEX0NPTU1PTl9DT05GSUcsXG4gICAgdHlwZTogXCJwcmV2aWV3LWltYWdlXCIsXG4gICAgcHJvcGVydGllczoge1xuICAgICAgLi4uRklFTERfUFJPUEVSVElFU19DT05GSUdbXCJwcmV2aWV3LWltYWdlXCJdXG4gICAgfVxuICB9LFxuICBodG1sOiB7XG4gICAgLi4uRklFTERfQ09NTU9OX0NPTkZJRyxcbiAgICB0eXBlOiBcImh0bWxcIixcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAuLi5GSUVMRF9QUk9QRVJUSUVTX0NPTkZJRy5odG1sXG4gICAgfSxcbiAgICBodG1sOiB7XG4gICAgICBiZWZvcmU6IFwiXCIsXG4gICAgICBhZnRlcjogXCJcIlxuICAgIH1cbiAgfSxcbiAgZmlsZToge1xuICAgIC4uLkZJRUxEX0NPTU1PTl9DT05GSUcsXG4gICAgdHlwZTogXCJmaWxlXCIsXG4gICAgcHJvcGVydGllczoge1xuICAgICAgLi4uRklFTERfUFJPUEVSVElFU19DT05GSUcuZmlsZVxuICAgIH1cbiAgfSxcbiAgY2FwdHVyZToge1xuICAgIC4uLkZJRUxEX0NPTU1PTl9DT05GSUcsXG4gICAgdHlwZTogXCJjYXB0dXJlXCIsXG4gICAgcHJvcGVydGllczoge1xuICAgICAgLi4uRklFTERfUFJPUEVSVElFU19DT05GSUcuY2FwdHVyZVxuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IE5PRklFTERfQ09ORklHID0ge1xuICByZXF1aXJlZDogdHJ1ZSxcbiAgdHlwZTogXCJGT1JNXCIsXG4gIHByb3BzOiB7XG4gICAgdXJsOiBcIlwiLFxuICAgIHRpdGxlOiBcIlwiXG4gIH0sXG4gIGhpZGRlbjogZmFsc2UsXG4gIGRpc2FibGVkOiBmYWxzZSxcbiAgZGVwZW5kZW50T246IFtdLFxuICB0aXRsZTogXCJcIixcbiAgcHJvcGVydGllczoge1xuICAgIGhlYWRlcjoge1xuICAgICAgbG9nbzogeyBzcmM6IFwiXCIsIGFsdDogXCJMb2dvXCIsIGhpZGRlbjogZmFsc2UgfSxcbiAgICAgIGJhY2tCdXR0b246IHsgbW9kZTogXCJUQUJCRURcIiwgYnlwYXNzQ29uZmlybWF0aW9uOiBmYWxzZSwgaGlkZGVuOiB0cnVlIH0sXG4gICAgICB0aXRsZTogeyBoaWRkZW46IGZhbHNlLCBsYWJlbDogXCJcIiB9LFxuICAgICAgc3RlcHM6IHsgaGlkZGVuOiBmYWxzZSB9XG4gICAgfSxcbiAgICBmb290ZXI6IHtcbiAgICAgIHZpZXdGb3Jtc0J1dHRvbjoge1xuICAgICAgICBieXBhc3NDb25maXJtYXRpb246IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBsYWJlbDogXCJCYWNrXCJcbiAgICAgIH0sXG4gICAgICBzYXZlQnV0dG9uOiB7IGhpZGRlbjogZmFsc2UsIGxhYmVsOiBcIlNhdmVcIiB9XG4gICAgfSxcbiAgICBpc1Vuc2F2ZWREYXRhQWxlcnRFbmFibGVkOiBmYWxzZVxuICB9LFxuICBmaWVsZEdyb3Vwczoge31cbn07XG4iXX0=
|
|
257
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5mb3JtLWVkaXRvci5jb25zdGFudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9idWlsZGVyL2J1aWxkZXItZm9ybS1lZGl0b3IvYnVpbGRlci5mb3JtLWVkaXRvci5jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHO0lBQzNCLEtBQUs7SUFDTCxPQUFPO0lBQ1AsTUFBTTtJQUNOLFVBQVU7SUFDVixZQUFZO0lBQ1osWUFBWTtJQUNaLFNBQVM7SUFDVCxRQUFRO0NBQ1QsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRztJQUNyQixJQUFJLEVBQUU7UUFDSixPQUFPO1FBQ1AsTUFBTTtRQUNOLFVBQVU7UUFDVixVQUFVO1FBQ1YsUUFBUTtRQUNSLE1BQU07UUFDTixPQUFPO1FBQ1AsT0FBTztRQUNQLFlBQVk7UUFDWixzQkFBc0I7UUFDdEIsUUFBUTtRQUNSLFFBQVE7UUFDUixLQUFLO1FBQ0wsUUFBUTtRQUNSLEtBQUs7UUFDTCxVQUFVO1FBQ1YsZ0JBQWdCO1FBQ2hCLGVBQWU7UUFDZixPQUFPO1FBQ1AsZUFBZTtRQUNmLE1BQU07UUFDTixNQUFNO1FBQ04sU0FBUztLQUNWO0lBQ0QsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztJQUN2QixVQUFVLEVBQUU7UUFDVixNQUFNLEVBQUUsRUFBRTtRQUNWLElBQUksRUFBRTtZQUNKLElBQUksRUFBRSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDO1NBQ3BDO1FBQ0QsUUFBUSxFQUFFO1lBQ1IsWUFBWSxFQUFFLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQztZQUMvQixJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO1lBQ2hCLE9BQU8sRUFBRSxDQUFDLE9BQU8sRUFBRSxP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QztJQUNELFdBQVcsRUFBRSxFQUFFO0NBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgVEFCTEVfQ09MVU1OUyA9IFtcbiAgXCJrZXlcIixcbiAgXCJsYWJlbFwiLFxuICBcInR5cGVcIixcbiAgXCJkaXNhYmxlZFwiLFxuICBcInZhbGlkYXRvcnNcIixcbiAgXCJwcm9wZXJ0aWVzXCIsXG4gIFwib3B0aW9uc1wiLFxuICBcImRlbGV0ZVwiXG5dO1xuXG5leHBvcnQgY29uc3QgT1BUSU9OUyA9IHtcbiAgdHlwZTogW1xuICAgIFwidGl0bGVcIixcbiAgICBcInRleHRcIixcbiAgICBcInRleHRhcmVhXCIsXG4gICAgXCJjaGVja2JveFwiLFxuICAgIFwibnVtYmVyXCIsXG4gICAgXCJkYXRlXCIsXG4gICAgXCJwaG9uZVwiLFxuICAgIFwicmFkaW9cIixcbiAgICBcInJhZGlvLWxpc3RcIixcbiAgICBcImRyb3Bkb3duLXdpdGgtc2VhcmNoXCIsXG4gICAgXCJzZWxlY3RcIixcbiAgICBcInNsaWRlclwiLFxuICAgIFwib3RwXCIsXG4gICAgXCJidXR0b25cIixcbiAgICBcImFwaVwiLFxuICAgIFwiYXBpLWNhbGxcIixcbiAgICBcImFhZGhhYXItbnVtYmVyXCIsXG4gICAgXCJpbnB1dC1hYWRoYWFyXCIsXG4gICAgXCJpbWFnZVwiLFxuICAgIFwicHJldmlldy1pbWFnZVwiLFxuICAgIFwiaHRtbFwiLFxuICAgIFwiZmlsZVwiLFxuICAgIFwiY2FwdHVyZVwiXG4gIF0sXG4gIGRpc2FibGVkOiBbdHJ1ZSwgZmFsc2VdLFxuICBwcm9wZXJ0aWVzOiB7XG4gICAgYnV0dG9uOiB7fSxcbiAgICB0ZXh0OiB7XG4gICAgICBjYXNlOiBbXCJkZWZhdWx0XCIsIFwidXBwZXJcIiwgXCJsb3dlclwiXVxuICAgIH0sXG4gICAgY2hlY2tib3g6IHtcbiAgICAgIGNvbnRlbnRBbGlnbjogW1wibGVmdFwiLCBcInJpZ2h0XCJdLFxuICAgICAgc2l6ZTogW1wibVwiLCBcImxcIl0sXG4gICAgICB2YXJpYW50OiBbXCJiYXNpY1wiLCBcImJsb2NrXCIsIFwibGFiZWxlZFwiXVxuICAgIH0sXG4gICAgbnVtYmVyOiB7XG4gICAgICBkZWNpbWFsOiBbdHJ1ZSwgZmFsc2VdXG4gICAgfSxcbiAgICBwaG9uZToge1xuICAgICAgcmVtb3ZlQ291bnRyeUNvZGVGcm9tVmFsdWU6IFt0cnVlLCBmYWxzZV1cbiAgICB9LFxuICAgIHJhZGlvOiB7XG4gICAgICBvcmllbnRhdGlvbjogW1wiaG9yaXpvbnRhbFwiLCBcInZlcnRpY2FsXCJdLFxuICAgICAgc2l6ZTogW1wibFwiLCBcIm1cIl1cbiAgICB9LFxuICAgIFwicmFkaW8tbGlzdFwiOiB7XG4gICAgICBvcmllbnRhdGlvbjogW1wiaG9yaXpvbnRhbFwiLCBcInZlcnRpY2FsXCJdLFxuICAgICAgc2l6ZTogW1wibFwiLCBcIm1cIl1cbiAgICB9LFxuICAgIHNsaWRlcjoge1xuICAgICAgc2l6ZTogW1wic1wiLCBcIm1cIiwgXCJsXCJdXG4gICAgfSxcbiAgICBvdHA6IHtcbiAgICAgIHNpemU6IFtcInNcIiwgXCJtXCIsIFwibFwiXSxcbiAgICAgIG1vZGU6IFtcInNpbmdsZVwiLCBcIm11bHRpcGxlXCJdXG4gICAgfSxcbiAgICBpbWFnZToge1xuICAgICAgaW1hZ2VUeXBlOiBbXCJiYXNlNjRcIiwgXCJ1cmxcIl0sXG4gICAgICBsb2FkaW5nVHlwZTogW1wiYXV0b1wiLCBcImxhenlcIiwgXCJlYWdlclwiXVxuICAgIH0sXG4gICAgXCJwcmV2aWV3LWltYWdlXCI6IHtcbiAgICAgIGltYWdlVHlwZTogW1wiYmFzZTY0XCIsIFwidXJsXCJdLFxuICAgICAgbG9hZGluZ1R5cGU6IFtcImF1dG9cIiwgXCJsYXp5XCIsIFwiZWFnZXJcIl1cbiAgICB9LFxuICAgIGZpbGU6IHt9LFxuICAgIGNhcHR1cmU6IHt9XG4gIH0sXG4gIHZhbGlkYXRvcnM6IHtcbiAgICByZXF1aXJlZDogW3RydWUsIGZhbHNlXSxcbiAgICBwYXR0ZXJuOiB7XG4gICAgICBrZXk6IFtcbiAgICAgICAgXCJJU19BQURIQUFSX05VTUJFUlwiLFxuICAgICAgICBcIklTX0JBTktfQUNDT1VOVF9OT1wiLFxuICAgICAgICBcIklTX0JBTktfU1dJRlRfQ09ERVwiLFxuICAgICAgICBcIklTX0JJUlRIX0NFUlRJRklDQVRFX05PXCIsXG4gICAgICAgIFwiSVNfQ0hFUVVFX05PXCIsXG4gICAgICAgIFwiSVNfQ0lOXCIsXG4gICAgICAgIFwiSVNfQ1JFRElUX0NBUkRfTk9cIixcbiAgICAgICAgXCJJU19DS1lDX05PXCIsXG4gICAgICAgIFwiSVNfRFJJVklOR19MSUNFTlNFXCIsXG4gICAgICAgIFwiSVNfR1NUSU5cIixcbiAgICAgICAgXCJJU19JRlNDX05PXCIsXG4gICAgICAgIFwiSVNfTUlDUl9DT0RFXCIsXG4gICAgICAgIFwiSVNfTU9CSUxFX05PXCIsXG4gICAgICAgIFwiSVNfTkVGVF9PUl9SVEdTX05PXCIsXG4gICAgICAgIFwiSVNfUEFOX05VTUJFUlwiLFxuICAgICAgICBcIklTX1BBU1NQT1JUXCIsXG4gICAgICAgIFwiSVNfUEhPTkVfTk9cIixcbiAgICAgICAgXCJJU19QSU5DT0RFXCIsXG4gICAgICAgIFwiSVNfUFVSQ0hBU0VfT1JERVJfTk9cIixcbiAgICAgICAgXCJJU19SQVRJT05fQ0FSRF9OT1wiLFxuICAgICAgICBcIklTX1NFUlZJQ0VfVEFYX05PXCIsXG4gICAgICAgIFwiSVNfU09DSUFMX1NFQ1VSSVRZX05PXCIsXG4gICAgICAgIFwiSVNfVVBJX1RSQU5TQUNUSU9OX1JFRkVSRU5DRV9OT1wiLFxuICAgICAgICBcIklTX1ZBVF9USU5fTk9cIixcbiAgICAgICAgXCJJU19WRUhJQ0xFX1JFR0lTVFJBVElPTl9OT1wiLFxuICAgICAgICBcIklTX1ZPVEVSX0lEXCIsXG4gICAgICAgIFwiSVNfQUxQSEFcIixcbiAgICAgICAgXCJJU19BTFBIQU5VTUVSSUNcIixcbiAgICAgICAgXCJJU19CT09MRUFOXCIsXG4gICAgICAgIFwiSVNfRU1BSUxcIixcbiAgICAgICAgXCJJU19FTVBUWVwiLFxuICAgICAgICBcIklTX0ZBTFNFXCIsXG4gICAgICAgIFwiSVNfSFRNTFwiLFxuICAgICAgICBcIklTX0lOVEVHRVJcIixcbiAgICAgICAgXCJJU19KU09OXCIsXG4gICAgICAgIFwiSVNfTE9XRVJDQVNFXCIsXG4gICAgICAgIFwiSVNfTk9UX0VNUFRZXCIsXG4gICAgICAgIFwiSVNfTlVNQkVSXCIsXG4gICAgICAgIFwiSVNfVFJVRVwiLFxuICAgICAgICBcIklTX1VQUEVSQ0FTRVwiLFxuICAgICAgICBcIkNVU1RPTVwiXG4gICAgICBdXG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgRklFTERfVkFMSURBVE9SU19DT05GSUcgPSB7XG4gIHJlcXVpcmVkOiBmYWxzZSxcbiAgbWluTGVuZ3RoOiAwLFxuICBtYXhMZW5ndGg6IDAsXG4gIHBhdHRlcm46IHtcbiAgICBrZXk6IFwiQ1VTVE9NXCIsXG4gICAgcGF0dGVybjogXCJcIlxuICB9LFxuICBtaW46IDAsXG4gIG1heDogMFxufTtcblxuZXhwb3J0IGNvbnN0IEZJRUxEX1BST1BFUlRJRVNfQ09NTU9OX0NPTkZJRyA9IHtcbiAgcmVhZE9ubHk6IGZhbHNlLFxuICBwbGFjZWhvbGRlcjogXCJcIlxufTtcblxuZXhwb3J0IGNvbnN0IEZJRUxEX1BST1BFUlRJRVNfQ09ORklHID0ge1xuICBidXR0b246IHtcbiAgICAuLi5GSUVMRF9QUk9QRVJUSUVTX0NPTU1PTl9DT05GSUdcbiAgfSxcbiAgdGl0bGU6IHtcbiAgICAuLi5GSUVMRF9QUk9QRVJUSUVTX0NPTU1PTl9DT05GSUdcbiAgfSxcbiAgdGV4dDoge1xuICAgIC4uLkZJRUxEX1BST1BFUlRJRVNfQ09NTU9OX0NPTkZJRyxcbiAgICBjYXNlOiBcImRlZmF1bHRcIlxuICB9LFxuICB0ZXh0YXJlYToge1xuICAgIC4uLkZJRUxEX1BST1BFUlRJRVNfQ09NTU9OX0NPTkZJR1xuICB9LFxuICBjaGVja2JveDoge1xuICAgIC4uLkZJRUxEX1BST1BFUlRJRVNfQ09NTU9OX0NPTkZJRyxcbiAgICBjb250ZW50QWxpZ246IFwicmlnaHRcIixcbiAgICBzaXplOiBcImxcIixcbiAgICB2YXJpYW50OiBcImxhYmVsZWRcIlxuICB9LFxuICBudW1iZXI6IHtcbiAgICAuLi5GSUVMRF9QUk9QRVJUSUVTX0NPTU1PTl9DT05GSUcsXG4gICAgZGVjaW1hbDogZmFsc2UsXG4gICAgbWluOiAtSW5maW5pdHksXG4gICAgbWF4OiBJbmZpbml0eSxcbiAgICBwb3N0Zml4OiBcIlwiLFxuICAgIHByZWZpeDogXCJcIixcbiAgICBwcmVjaXNpb246IDBcbiAgfSxcbiAgZGF0ZToge1xuICAgIC4uLkZJRUxEX1BST1BFUlRJRVNfQ09NTU9OX0NPTkZJRyxcbiAgICBtaW46IHsgbW9udGg6IDAsIGRheTogMCwgeWVhcjogMCB9LFxuICAgIG1heDogeyBtb250aDogMCwgZGF5OiAwLCB5ZWFyOiAwIH0sXG4gICAgbWluQ2FsY3VsYXRlZDogeyBtb250aDogMCwgZGF5OiAwLCB5ZWFyOiAwIH0sXG4gICAgbWF4Q2FsY3VsYXRlZDogeyBtb250aDogMCwgZGF5OiAwLCB5ZWFyOiAwIH1cbiAgfSxcbiAgcGhvbmU6IHtcbiAgICAuLi5GSUVMRF9QUk9QRVJUSUVTX0NPTU1PTl9DT05GSUcsXG4gICAgY291bnRyeUNvZGU6IFwiKzkxXCIsXG4gICAgcGhvbmVNYXNrQWZ0ZXJDb3VudHJ5Q29kZTogXCJcIixcbiAgICByZW1vdmVDb3VudHJ5Q29kZUZyb21WYWx1ZTogdHJ1ZVxuICB9LFxuICByYWRpbzoge1xuICAgIC4uLkZJRUxEX1BST1BFUlRJRVNfQ09NTU9OX0NPTkZJRyxcbiAgICBvcmllbnRhdGlvbjogXCJ2ZXJ0aWNhbFwiLFxuICAgIHNpemU6IFwibFwiXG4gIH0sXG4gIFwicmFkaW8tbGlzdFwiOiB7XG4gICAgLi4uRklFTERfUFJPUEVSVElFU19DT01NT05fQ09ORklHLFxuICAgIG9yaWVudGF0aW9uOiBcInZlcnRpY2FsXCIsXG4gICAgc2l6ZTogXCJsXCJcbiAgfSxcbiAgc2VsZWN0OiB7XG4gICAgLi4uRklFTERfUFJPUEVSVElFU19DT01NT05fQ09ORklHXG4gIH0sXG4gIHNsaWRlcjoge1xuICAgIC4uLkZJRUxEX1BST1BFUlRJRVNfQ09NTU9OX0NPTkZJRyxcbiAgICBtaW46IC1JbmZpbml0eSxcbiAgICBtYXg6IEluZmluaXR5LFxuICAgIHF1YW50dW06IDAsXG4gICAgc2l6ZTogXCJtXCIsXG4gICAgc3RlcHM6IDFcbiAgfSxcbiAgb3RwOiB7XG4gICAgLi4uRklFTERfUFJPUEVSVElFU19DT01NT05fQ09ORklHLFxuICAgIG1hc2s6IFwiXCIsXG4gICAgc2l6ZTogXCJtXCIsXG4gICAgbW9kZTogXCJtdWx0aXBsZVwiLFxuICAgIG90cExlbmd0aDogNlxuICB9LFxuICBhcGk6IHtcbiAgICAuLi5GSUVMRF9QUk9QRVJUSUVTX0NPTU1PTl9DT05GSUdcbiAgfSxcbiAgXCJhcGktY2FsbFwiOiB7XG4gICAgLi4uRklFTERfUFJPUEVSVElFU19DT01NT05fQ09ORklHXG4gIH0sXG4gIFwiYWFkaGFhci1udW1iZXJcIjoge1xuICAgIC4uLkZJRUxEX1BST1BFUlRJRVNfQ09NTU9OX0NPTkZJR1xuICB9LFxuICBcImlucHV0LWFhZGhhYXJcIjoge1xuICAgIC4uLkZJRUxEX1BST1BFUlRJRVNfQ09NTU9OX0NPTkZJR1xuICB9LFxuICBpbWFnZToge1xuICAgIC4uLkZJRUxEX1BST1BFUlRJRVNfQ09NTU9OX0NPTkZJRyxcbiAgICBhbHRUZXh0OiBcIlwiLFxuICAgIGh0bWw6IHsgYmVmb3JlOiBcIlwiLCBhZnRlcjogXCJcIiB9LFxuICAgIGltYWdlVHlwZTogXCJ1cmxcIixcbiAgICBsb2FkaW5nVHlwZTogXCJhdXRvXCIsXG4gICAgc3R5bGVzOiBcIlwiLFxuICAgIGNsYXNzOiBcIlwiXG4gIH0sXG4gIFwicHJldmlldy1pbWFnZVwiOiB7XG4gICAgLi4uRklFTERfUFJPUEVSVElFU19DT01NT05fQ09ORklHLFxuICAgIGFsdFRleHQ6IFwiXCIsXG4gICAgaHRtbDogeyBiZWZvcmU6IFwiXCIsIGFmdGVyOiBcIlwiIH0sXG4gICAgaW1hZ2VUeXBlOiBcInVybFwiLFxuICAgIGxvYWRpbmdUeXBlOiBcImF1dG9cIixcbiAgICBzdHlsZXM6IFwiXCIsXG4gICAgY2xhc3M6IFwiXCJcbiAgfSxcbiAgaHRtbDoge1xuICAgIC4uLkZJRUxEX1BST1BFUlRJRVNfQ09NTU9OX0NPTkZJR1xuICB9LFxuICBmaWxlOiB7XG4gICAgLi4uRklFTERfUFJPUEVSVElFU19DT01NT05fQ09ORklHLFxuICAgIGFjY2VwdDogXCJhcHBsaWNhdGlvbi9wZGZcIixcbiAgICBjb250YWluZXJTdHlsZXM6IFwiXCIsXG4gICAgbGFiZWw6IFwiZHJvcCBhIGZpbGUgb3JcIixcbiAgICBsaW5rOiBcImNsaWNrIHRvIHVwbG9hZFwiLFxuICAgIG1heEZpbGVTaXplOiAxMDAwMDAwLFxuICAgIG11bHRpcGxlOiB0cnVlLFxuICAgIHNpemU6IFwibVwiLFxuICAgIHVwbG9hZEZpbGVUb1NlcnZlcjogdHJ1ZVxuICB9LFxuICBjYXB0dXJlOiB7XG4gICAgLi4uRklFTERfUFJPUEVSVElFU19DT01NT05fQ09ORklHLFxuICAgIGNvbnRhaW5lclN0eWxlczogXCJcIixcbiAgICBidXR0b25UZXh0OiBcIkNhbWVyYVwiLFxuICAgIGljb246IFwidHVpSWNvbkNhbWVyYUxhcmdlXCIsXG4gICAgc2hvd01lZGlhRmlsZXM6IHRydWUsXG4gICAgdXBsb2FkRmlsZVRvU2VydmVyOiBmYWxzZSxcbiAgICBpc0Nyb3BwZWRJbWFnZTogZmFsc2UsXG4gICAgaXNNYXNrZWRJbWFnZTogZmFsc2UsXG4gICAgY2FtZXJhQ29uZmlnOiB7XG4gICAgICBoZWFkZXI6IHtcbiAgICAgICAgdGl0bGU6IFwiQ2FtZXJhXCIsXG4gICAgICAgIGlzQmFjazogZmFsc2UsXG4gICAgICAgIGlzRXhwYW5kOiB0cnVlLFxuICAgICAgICBpc0Nsb3NlOiB0cnVlXG4gICAgICB9LFxuICAgICAgZm9vdGVyOiB7XG4gICAgICAgIGlzVXBsb2FkOiB0cnVlLFxuICAgICAgICBpc0ZsaXA6IGZhbHNlLFxuICAgICAgICBpc1N3aXRjaDogdHJ1ZVxuICAgICAgfSxcbiAgICAgIG90aGVyczoge1xuICAgICAgICBpc0Zyb250Q2FtZXJhOiBmYWxzZSxcbiAgICAgICAgZmxpcEhvcml6b250YWw6IGZhbHNlLFxuICAgICAgICBtYXNrOiB7XG4gICAgICAgICAgc2hhcGU6IFwiXCJcbiAgICAgICAgfSxcbiAgICAgICAgcHJldmlldzoge1xuICAgICAgICAgIHNob3c6IGZhbHNlLFxuICAgICAgICAgIGhlYWRlcjoge1xuICAgICAgICAgICAgaXNCYWNrOiBmYWxzZSxcbiAgICAgICAgICAgIGlzQ2xvc2U6IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgRklFTERfQ09NTU9OX0NPTkZJRyA9IHtcbiAga2V5OiBcIlwiLFxuICBsYWJlbDogXCJcIixcbiAgZGlzYWJsZWQ6IGZhbHNlLFxuICB2YWxpZGF0b3JzOiB7XG4gICAgLi4uRklFTERfVkFMSURBVE9SU19DT05GSUdcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IEZJRUxEX0NPTkZJRyA9IHtcbiAgdGl0bGU6IHtcbiAgICAuLi5GSUVMRF9DT01NT05fQ09ORklHLFxuICAgIHR5cGU6IFwidGl0bGVcIixcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAuLi5GSUVMRF9QUk9QRVJUSUVTX0NPTkZJRy50aXRsZVxuICAgIH1cbiAgfSxcbiAgdGV4dDoge1xuICAgIC4uLkZJRUxEX0NPTU1PTl9DT05GSUcsXG4gICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgcHJvcGVydGllczoge1xuICAgICAgLi4uRklFTERfUFJPUEVSVElFU19DT05GSUcudGV4dFxuICAgIH1cbiAgfSxcbiAgYnV0dG9uOiB7XG4gICAgLi4uRklFTERfQ09NTU9OX0NPTkZJRyxcbiAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgIC4uLkZJRUxEX1BST1BFUlRJRVNfQ09ORklHLmJ1dHRvblxuICAgIH1cbiAgfSxcbiAgdGV4dGFyZWE6IHtcbiAgICAuLi5GSUVMRF9DT01NT05fQ09ORklHLFxuICAgIHR5cGU6IFwidGV4dGFyZWFcIixcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAuLi5GSUVMRF9QUk9QRVJUSUVTX0NPTkZJRy50ZXh0YXJlYVxuICAgIH1cbiAgfSxcbiAgY2hlY2tib3g6IHtcbiAgICAuLi5GSUVMRF9DT01NT05fQ09ORklHLFxuICAgIHR5cGU6IFwiY2hlY2tib3hcIixcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAuLi5GSUVMRF9QUk9QRVJUSUVTX0NPTkZJRy5jaGVja2JveFxuICAgIH1cbiAgfSxcbiAgbnVtYmVyOiB7XG4gICAgLi4uRklFTERfQ09NTU9OX0NPTkZJRyxcbiAgICB0eXBlOiBcIm51bWJlclwiLFxuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgIC4uLkZJRUxEX1BST1BFUlRJRVNfQ09ORklHLm51bWJlclxuICAgIH1cbiAgfSxcbiAgZGF0ZToge1xuICAgIC4uLkZJRUxEX0NPTU1PTl9DT05GSUcsXG4gICAgdHlwZTogXCJkYXRlXCIsXG4gICAgcHJvcGVydGllczoge1xuICAgICAgLi4uRklFTERfUFJPUEVSVElFU19DT05GSUcuZGF0ZVxuICAgIH1cbiAgfSxcbiAgcGhvbmU6IHtcbiAgICAuLi5GSUVMRF9DT01NT05fQ09ORklHLFxuICAgIHR5cGU6IFwicGhvbmVcIixcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAuLi5GSUVMRF9QUk9QRVJUSUVTX0NPTkZJRy5waG9uZVxuICAgIH1cbiAgfSxcbiAgcmFkaW86IHtcbiAgICAuLi5GSUVMRF9DT01NT05fQ09ORklHLFxuICAgIHR5cGU6IFwicmFkaW9cIixcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAuLi5GSUVMRF9QUk9QRVJUSUVTX0NPTkZJR1tcInJhZGlvXCJdXG4gICAgfSxcbiAgICBvcHRpb25zOiBbXVxuICB9LFxuICBcInJhZGlvLWxpc3RcIjoge1xuICAgIC4uLkZJRUxEX0NPTU1PTl9DT05GSUcsXG4gICAgdHlwZTogXCJyYWRpby1saXN0XCIsXG4gICAgcHJvcGVydGllczoge1xuICAgICAgLi4uRklFTERfUFJPUEVSVElFU19DT05GSUdbXCJyYWRpby1saXN0XCJdXG4gICAgfSxcbiAgICBvcHRpb25zOiBbXVxuICB9LFxuICBzZWxlY3Q6IHtcbiAgICAuLi5GSUVMRF9DT01NT05fQ09ORklHLFxuICAgIHR5cGU6IFwic2VsZWN0XCIsXG4gICAgcHJvcGVydGllczoge1xuICAgICAgLi4uRklFTERfUFJPUEVSVElFU19DT05GSUdbXCJzZWxlY3RcIl1cbiAgICB9LFxuICAgIG9wdGlvbnM6IFtdXG4gIH0sXG4gIHNsaWRlcjoge1xuICAgIC4uLkZJRUxEX0NPTU1PTl9DT05GSUcsXG4gICAgdHlwZTogXCJzbGlkZXJcIixcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAuLi5GSUVMRF9QUk9QRVJUSUVTX0NPTkZJRy5zbGlkZXJcbiAgICB9XG4gIH0sXG4gIG90cDoge1xuICAgIC4uLkZJRUxEX0NPTU1PTl9DT05GSUcsXG4gICAgdHlwZTogXCJvdHBcIixcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAuLi5GSUVMRF9QUk9QRVJUSUVTX0NPTkZJRy5vdHBcbiAgICB9XG4gIH0sXG4gIGFwaToge1xuICAgIC4uLkZJRUxEX0NPTU1PTl9DT05GSUcsXG4gICAgdHlwZTogXCJhcGlcIixcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAuLi5GSUVMRF9QUk9QRVJUSUVTX0NPTkZJR1tcImFwaVwiXVxuICAgIH1cbiAgfSxcbiAgXCJhcGktY2FsbFwiOiB7XG4gICAgLi4uRklFTERfQ09NTU9OX0NPTkZJRyxcbiAgICB0eXBlOiBcImFwaS1jYWxsXCIsXG4gICAgcHJvcGVydGllczoge1xuICAgICAgLi4uRklFTERfUFJPUEVSVElFU19DT05GSUdbXCJhcGktY2FsbFwiXVxuICAgIH1cbiAgfSxcbiAgXCJhYWRoYWFyLW51bWJlclwiOiB7XG4gICAgLi4uRklFTERfQ09NTU9OX0NPTkZJRyxcbiAgICB0eXBlOiBcImFhZGhhYXItbnVtYmVyXCIsXG4gICAgcHJvcGVydGllczoge1xuICAgICAgLi4uRklFTERfUFJPUEVSVElFU19DT05GSUdbXCJhYWRoYWFyLW51bWJlclwiXVxuICAgIH1cbiAgfSxcbiAgXCJpbnB1dC1hYWRoYWFyXCI6IHtcbiAgICAuLi5GSUVMRF9DT01NT05fQ09ORklHLFxuICAgIHR5cGU6IFwiaW5wdXQtYWFkaGFhclwiLFxuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgIC4uLkZJRUxEX1BST1BFUlRJRVNfQ09ORklHW1wiaW5wdXQtYWFkaGFhclwiXVxuICAgIH1cbiAgfSxcbiAgaW1hZ2U6IHtcbiAgICAuLi5GSUVMRF9DT01NT05fQ09ORklHLFxuICAgIHR5cGU6IFwiaW1hZ2VcIixcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAuLi5GSUVMRF9QUk9QRVJUSUVTX0NPTkZJR1tcImltYWdlXCJdXG4gICAgfVxuICB9LFxuICBcInByZXZpZXctaW1hZ2VcIjoge1xuICAgIC4uLkZJRUxEX0NPTU1PTl9DT05GSUcsXG4gICAgdHlwZTogXCJwcmV2aWV3LWltYWdlXCIsXG4gICAgcHJvcGVydGllczoge1xuICAgICAgLi4uRklFTERfUFJPUEVSVElFU19DT05GSUdbXCJwcmV2aWV3LWltYWdlXCJdXG4gICAgfVxuICB9LFxuICBodG1sOiB7XG4gICAgLi4uRklFTERfQ09NTU9OX0NPTkZJRyxcbiAgICB0eXBlOiBcImh0bWxcIixcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAuLi5GSUVMRF9QUk9QRVJUSUVTX0NPTkZJRy5odG1sXG4gICAgfSxcbiAgICBodG1sOiB7XG4gICAgICBiZWZvcmU6IFwiXCIsXG4gICAgICBhZnRlcjogXCJcIlxuICAgIH1cbiAgfSxcbiAgZmlsZToge1xuICAgIC4uLkZJRUxEX0NPTU1PTl9DT05GSUcsXG4gICAgdHlwZTogXCJmaWxlXCIsXG4gICAgcHJvcGVydGllczoge1xuICAgICAgLi4uRklFTERfUFJPUEVSVElFU19DT05GSUcuZmlsZVxuICAgIH1cbiAgfSxcbiAgY2FwdHVyZToge1xuICAgIC4uLkZJRUxEX0NPTU1PTl9DT05GSUcsXG4gICAgdHlwZTogXCJjYXB0dXJlXCIsXG4gICAgcHJvcGVydGllczoge1xuICAgICAgLi4uRklFTERfUFJPUEVSVElFU19DT05GSUcuY2FwdHVyZVxuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IE5PRklFTERfQ09ORklHID0ge1xuICByZXF1aXJlZDogdHJ1ZSxcbiAgdHlwZTogXCJGT1JNXCIsXG4gIHByb3BzOiB7XG4gICAgdXJsOiBcIlwiLFxuICAgIHRpdGxlOiBcIlwiXG4gIH0sXG4gIGhpZGRlbjogZmFsc2UsXG4gIGRpc2FibGVkOiBmYWxzZSxcbiAgZGVwZW5kZW50T246IFtdLFxuICB0aXRsZTogXCJcIixcbiAgcHJvcGVydGllczoge1xuICAgIGhlYWRlcjoge1xuICAgICAgbG9nbzogeyBzcmM6IFwiXCIsIGFsdDogXCJMb2dvXCIsIGhpZGRlbjogZmFsc2UgfSxcbiAgICAgIGJhY2tCdXR0b246IHsgbW9kZTogXCJUQUJCRURcIiwgYnlwYXNzQ29uZmlybWF0aW9uOiBmYWxzZSwgaGlkZGVuOiB0cnVlIH0sXG4gICAgICB0aXRsZTogeyBoaWRkZW46IGZhbHNlLCBsYWJlbDogXCJcIiB9LFxuICAgICAgc3RlcHM6IHsgaGlkZGVuOiBmYWxzZSB9XG4gICAgfSxcbiAgICBmb290ZXI6IHtcbiAgICAgIHZpZXdGb3Jtc0J1dHRvbjoge1xuICAgICAgICBieXBhc3NDb25maXJtYXRpb246IGZhbHNlLFxuICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICBsYWJlbDogXCJCYWNrXCJcbiAgICAgIH0sXG4gICAgICBzYXZlQnV0dG9uOiB7IGhpZGRlbjogZmFsc2UsIGxhYmVsOiBcIlNhdmVcIiB9XG4gICAgfSxcbiAgICBpc1Vuc2F2ZWREYXRhQWxlcnRFbmFibGVkOiBmYWxzZVxuICB9LFxuICBmaWVsZEdyb3Vwczoge31cbn07XG4iXX0=
|