myrta-ui 17.0.26 → 17.0.27

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.
@@ -183,7 +183,7 @@ export class TableComponent {
183
183
  this.changeTypeTable.emit(type);
184
184
  }
185
185
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TableComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
186
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TableComponent, selector: "mrx-table", inputs: { type: "type", data: "data", pageSize: "pageSize", currentPage: "currentPage", total: "total", link: "link", isLoading: "isLoading", sort: "sort", trackById: "trackById", sortable: "sortable", striped: "striped", customClasses: "customClasses", emptyResultMsg: "emptyResultMsg", hovered: "hovered", autoHeight: "autoHeight", headerSettings: "headerSettings", contentSettings: "contentSettings", paginatorSettings: "paginatorSettings", setPageable: ["pageable", "setPageable"] }, outputs: { dataStateChanged: "dataStateChanged", downloadData: "downloadData", changeTypeTable: "changeTypeTable", change: "change" }, queries: [{ propertyName: "templateCard", first: true, predicate: ["templateCard"], descendants: true }, { propertyName: "emptyResultMsgTemplate", first: true, predicate: ["emptyResultMsgTemplate"], descendants: true }, { propertyName: "contentChildren", predicate: ColumnComponent }], ngImport: i0, template: "<div class=\"mrx-table\" [class]=\"getClasses\" [class.mb-3]=\"pageable\">\r\n <ng-container *ngIf=\"headerSettings\">\r\n <div\r\n class=\"mrx-table-card-header pt-2 pb-2 mb-3\"\r\n [class.mrx-table-card-header--substrate]=\"headerSettings.substrate\"\r\n *ngIf=\"headerSettings.type === 'default'\"\r\n >\r\n <div class=\"row\">\r\n <div\r\n class=\"mrx-table-card-header--left col col-12 col-md-6 mb-1 mb-md-0 d-flex justify-content-start align-content-center\">\r\n <ng-container *ngTemplateOutlet=\"counterTemplate\"></ng-container>\r\n </div>\r\n\r\n <div class=\"mrx-table-card-header--right col col-12 col-md-6 d-flex justify-content-end align-content-center\">\r\n <ng-container *ngTemplateOutlet=\"sortTemplate\"></ng-container>\r\n <div class=\"ml-4\" *ngIf=\"headerSettings.toggle\">\r\n <ng-container *ngTemplateOutlet=\"toggleTemplate\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"mrx-table-card-header mb-3 pt-2 pb-2\"\r\n [class.mrx-table-card-header--substrate]=\"headerSettings.substrate\"\r\n *ngIf=\"headerSettings.type === 'second'\"\r\n >\r\n <div class=\"row\">\r\n <div\r\n class=\"mrx-table-card-header--left col col-12 col-sm-6 mb-1 mb-sm-0 d-flex justify-content-start align-content-center\">\r\n <ng-container *ngTemplateOutlet=\"sortTemplate\"></ng-container>\r\n </div>\r\n\r\n <div class=\"mrx-table-card-header--right col col-12 col-sm-6 d-flex justify-content-end align-content-center\">\r\n <ng-container *ngTemplateOutlet=\"downloadTemplate\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container [ngSwitch]=\"type\">\r\n <div class=\"mrx-table__wrapper\" *ngSwitchCase=\"'default'\"\r\n [class.mrx-table__wrapper--substrate]=\"contentSettings.substrate\">\r\n <table\r\n [class.table-striped]=\"striped\"\r\n [class.table-solid]=\"!striped\"\r\n [class.mt-2]=\"contentSettings.substrate\"\r\n [class.mb-3]=\"contentSettings.substrate && data.length\"\r\n >\r\n <thead [class.table-head-gray]=\"!headerSettings || headerSettings.background\">\r\n <tr>\r\n <th *ngFor=\"let col of contentChildren; let index = index; let first = first; let last = last; trackBy: trackByFn\" [class]=\"col.customClasses\">\r\n <ng-container *ngIf=\"!col.templateHead; else headerItemTemplate\">\r\n <ng-container *ngIf=\"col.sortable; else defaultHeadCol\">\r\n <div [class.th-wrapper]=\"sortable\" (click)=\"onSortColumn(col.name, col.sortable)\">\r\n <span>{{ col.label }}</span>\r\n <svg\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\r\n [class]=\"columnSortedDir(col.name)\"\r\n class=\"mrx-table__sort-icon\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4 9L8 13L12 9\" fill=\"#DAD5CE\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 7L8 3L4 7\" fill=\"#DAD5CE\"/>\r\n </svg>\r\n </div>\r\n </ng-container>\r\n <ng-template #defaultHeadCol>\r\n <div><span>{{ col.label }}</span></div>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-template #headerItemTemplate>\r\n <ng-container *ngIf=\"col.sortable; else defaultHeadCol\">\r\n <div [class.th-wrapper]=\"sortable\" (click)=\"onSortColumn(col.name, col.sortable)\">\r\n <ng-container *ngTemplateOutlet=\"col.templateHead; context: { $implicit: col }\"></ng-container>\r\n <svg\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\r\n [class]=\"columnSortedDir(col.name)\"\r\n class=\"mrx-table__sort-icon\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4 9L8 13L12 9\" fill=\"#DAD5CE\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 7L8 3L4 7\" fill=\"#DAD5CE\"/>\r\n </svg>\r\n </div>\r\n </ng-container>\r\n <ng-template #defaultHeadCol>\r\n <ng-container *ngTemplateOutlet=\"col.templateHead; context: { $implicit: col, index, first, last }\"></ng-container>\r\n </ng-template>\r\n </ng-template>\r\n </th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody>\r\n <tr *ngFor=\"let dataItem of data; let index = index; let first = first; let last = last\" [class.-hovered]=\"hovered\">\r\n <td\r\n #tableTD\r\n class=\"p-0\"\r\n *ngFor=\"let col of contentChildren\"\r\n [class]=\"col.customClasses\"\r\n >\r\n <a\r\n class=\"link-wrapper td-content-wrapper\"\r\n [href]=\"getLinkForStroke(link, dataItem)\"\r\n *ngIf=\"link && col['isLink']; else defaultTemplate\"\r\n >\r\n <ng-container *ngIf=\"!col.templateCell; else bodyItemTemplate\">\r\n <div class=\"p-2 h-100\">{{ dataItem[col.name] }}</div>\r\n </ng-container>\r\n\r\n <ng-template #bodyItemTemplate>\r\n <ng-container\r\n *ngTemplateOutlet=\"col.templateCell; context: { $implicit: col, row: dataItem, index, first, last }\"></ng-container>\r\n </ng-template>\r\n </a>\r\n\r\n <ng-template #defaultTemplate>\r\n <ng-container *ngIf=\"!col.templateCell; else bodyItemTemplate\">\r\n <div class=\"td-content-wrapper p-2 h-100\">{{ dataItem[col.name] }}</div>\r\n </ng-container>\r\n\r\n <ng-template #bodyItemTemplate>\r\n <div class=\"td-content-wrapper h-100\">\r\n <ng-container\r\n *ngTemplateOutlet=\"col.templateCell; context: { $implicit: col, row: dataItem, index, first, last }\"></ng-container>\r\n </div>\r\n </ng-template>\r\n </ng-template>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n <div class=\"mrx-table__result-message\" *ngIf=\"!data.length\">\r\n <ng-container *ngTemplateOutlet=\"emptyResultMsg ? emptyResultMsgTemplateDefault : emptyResultMsgTemplate\">\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"mrx-table__overlay\" [@visibleLoading]=\"isLoading ? 'in' : 'out'\" [ngClass]=\"{'open': isLoading}\" >\r\n <mrx-loader size=\"large\" color=\"brand\"></mrx-loader>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mrx-table__wrapper\" *ngSwitchCase=\"'cards'\">\r\n <ng-container *ngFor=\"let item of data; let index = index; let first = first; let last = last\">\r\n <ng-container *ngTemplateOutlet=\"templateCard; context: { $implicit: item, index, first, last }\"></ng-container>\r\n </ng-container>\r\n\r\n <div class=\"mrx-table__result-message--substrate\" *ngIf=\"!data.length\" >\r\n <ng-container *ngTemplateOutlet=\"emptyResultMsg ? emptyResultMsgTemplateDefault : emptyResultMsgTemplate\">\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"mrx-table__overlay\" [@visibleLoading]=\"isLoading ? 'in' : 'out'\" [ngClass]=\"{'open': isLoading}\" >\r\n <mrx-loader size=\"large\" color=\"brand\"></mrx-loader>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</div>\r\n\r\n<div class=\"mrx-table__paginator pt-2 pb-2\" [class.mrx-table__paginator--substrate]=\"paginatorSettings.substrate\" *ngIf=\"total\">\r\n <mrx-paginator\r\n *ngIf=\"pageable\"\r\n [total]=\"total\"\r\n [pageSize]=\"pageSize\"\r\n [position]=\"pageable.position\"\r\n [pageSizes]=\"pageable.pageSizes\"\r\n [currentPage]=\"currentPage\"\r\n [withPageSize]=\"pageable.withPageSize\"\r\n (dataStateChanged)=\"onDataStatePaginatorChanged($event)\">\r\n </mrx-paginator>\r\n</div>\r\n\r\n<ng-template #counterTemplate>\r\n <span class=\"d-flex align-items-center\" *ngIf=\"headerSettings?.count\">\r\n {{ total }} {{headerSettings?.countText || '\u043D\u043E\u0432\u043E\u0441\u0442\u0435\u0439'}}\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #sortTemplate>\r\n <div class=\"d-flex mrx-table-sort\" *ngIf=\"headerSettings?.sort\">\r\n <div class=\"mrx-table-sort-scale\" (click)=\"changeSort()\">\r\n <span class=\"mrx-table-sort-scale__title\">\u0421\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u043E:</span>\r\n <div class=\"mrx-table-sort-scale__icon\">\r\n <span *ngIf=\"sort?.dir === 'desc'\" class=\"mrx-icon icon-sorting-down icon-font-16\"></span>\r\n <span *ngIf=\"sort?.dir === 'asc'\" class=\"mrx-icon icon-sorting-up icon-font-16\"></span>\r\n </div>\r\n </div>\r\n <ng-select\r\n bindLabel=\"sortLabel\"\r\n bindValue=\"name\"\r\n [items]=\"colArray\"\r\n [ngModel]=\"selectedSort\"\r\n (change)=\"updateSortSelect($event)\"\r\n [clearable]=\"false\"\r\n [searchable]=\"false\"\r\n [closeOnSelect]=\"true\"\r\n ></ng-select>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #downloadTemplate>\r\n <div class=\"mrx-table-download\" (click)=\"clickToDownload($event)\" *ngIf=\"headerSettings?.download\">\r\n <span class=\"desktop\">\u0421\u043A\u0430\u0447\u0430\u0442\u044C \u0434\u0430\u043D\u043D\u044B\u0435</span>\r\n <span class=\"mrx-icon icon-download icon-font-24\"></span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #toggleTemplate>\r\n <div class=\"mrx-table-toggle\">\r\n <div class=\"mrx-table-toggle--item mr-1\" (click)=\"onChangeTypeTable('cards')\" [class.active]=\"type === 'cards'\">\r\n <span class=\"mrx-icon icon-cards-view icon-font-24\"></span>\r\n </div>\r\n <div class=\"mrx-table-toggle--item\" (click)=\"onChangeTypeTable('default')\" [class.active]=\"type === 'default'\">\r\n <span class=\"mrx-icon icon-table-view icon-font-24\"></span>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #emptyResultMsgTemplateDefault>\r\n {{emptyResultMsg}}\r\n</ng-template>\r\n", styles: [".mrx-table.mrx-table{display:block;width:100%}.mrx-table.mrx-table table td{height:1px}.mrx-table.mrx-table .th-wrapper{display:flex;cursor:pointer;word-break:inherit;justify-content:space-between;align-items:flex-end}.mrx-table.mrx-table .th-wrapper span{word-break:inherit}.mrx-table.mrx-table .mrx-table__sort-icon.asc path:last-child{fill:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table .mrx-table__sort-icon.desc path:first-child{fill:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table__wrapper.mrx-table__wrapper{overflow-x:auto;overflow-y:hidden;position:relative}.mrx-table__wrapper.mrx-table__wrapper .mrx-table__wrapper--substrate{padding-top:8px}.mrx-table.mrx-table.type-default table{width:100%;text-align:left;background-color:transparent;border-spacing:0}.mrx-table.mrx-table.type-default table thead.table-head-gray{background:var(--neutral-bg-island-default, #F8F9FA)}.mrx-table.mrx-table.type-default table thead .sort-asc .custom-table__sort path:nth-child(2){fill:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table.type-default table thead .sort-desc .custom-table__sort path:nth-child(1){fill:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table.type-default table td{max-width:340px;vertical-align:top}.mrx-table.mrx-table.type-default table td .link-wrapper{display:block;color:initial;height:100%}.mrx-table.mrx-table.type-default table td .link-wrapper:active{color:var(--neutral-text-primary, #262626)}.mrx-table.mrx-table.type-default table td .left-border{border-left:4px solid var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table.type-default table td .light-border{border-left:4px solid transparent}.mrx-table.mrx-table.type-default table td .warning-back{background-color:#ffece7}.mrx-table.mrx-table.type-default table td .disabled-back{background-color:#fafafa}.mrx-table.mrx-table.type-default table td .link-colored,.mrx-table.mrx-table.type-default table td .link-colored:active{color:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table.type-default table th{padding:8px;vertical-align:bottom;word-break:inherit;font-weight:700}.mrx-table.mrx-table.type-default table th svg{margin-left:8px;cursor:pointer}.mrx-table.mrx-table .mrx-table-card-header{position:relative}.mrx-table.mrx-table .mrx-table-card-header--substrate{padding-left:24px;padding-right:24px;background:#fff;box-shadow:0 1px 4px #3b43571a;border-radius:4px}.mrx-table.mrx-table .mrx-table__wrapper--substrate{background:#fff;box-shadow:0 1px 4px #3b43571a;border-radius:4px}.mrx-table.mrx-table .mrx-table-toggle{display:flex}.mrx-table.mrx-table .mrx-table-toggle--item{display:flex;align-items:center;justify-content:center;cursor:pointer}.mrx-table.mrx-table .mrx-table-toggle--item .mrx-icon{color:#e5e5e5}.mrx-table.mrx-table .mrx-table-toggle--item.active .mrx-icon{color:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table .mrx-table-sort.mrx-table-sort--is-card,.mrx-table.mrx-table .mrx-table-sort.mrx-table-sort--is-table{justify-content:flex-start}.mrx-table.mrx-table .mrx-table-sort-scale{display:flex;align-items:center;margin-right:8px;cursor:pointer}.mrx-table.mrx-table .mrx-table-sort-scale__title{font-family:PT Sans;font-style:normal;font-weight:400;font-size:14px;line-height:143%;color:var(--neutral-text-primary, #262626);margin-right:12px}.mrx-table.mrx-table .mrx-table-sort-scale__icon{display:flex;align-items:center;justify-content:center}:host::ng-deep .mrx-table.mrx-table .mrx-table-sort .ng-select{max-width:215px;margin-bottom:0}:host::ng-deep .mrx-table.mrx-table .mrx-table-sort .ng-select .ng-select-container.ng-select-container{min-height:auto!important;border:none;cursor:pointer;align-items:center;height:100%!important}:host::ng-deep .mrx-table.mrx-table .mrx-table-sort .ng-select .ng-value-container.ng-value-container{padding-left:0!important;margin-right:8px}:host::ng-deep .mrx-table.mrx-table .mrx-table-sort .ng-select .ng-arrow-wrapper.ng-arrow-wrapper{min-height:auto;width:auto!important}:host::ng-deep .mrx-table.mrx-table .mrx-table-sort .ng-select .ng-dropdown-panel.ng-dropdown-panel{width:100vw;max-width:215px;left:auto;right:0}.mrx-table__paginator.mrx-table__paginator.mrx-table__paginator--substrate{padding-left:24px;padding-right:24px;background:#fff;box-shadow:0 1px 4px #3b43571a;border-radius:4px}.mrx-table.mrx-table .table-striped tbody tr:nth-child(2n){background-color:var(--neutral-bg-island-default, #F8F9FA)}.mrx-table.mrx-table .table-striped tbody tr:nth-child(n){transition:.2s}.mrx-table.mrx-table .table-striped tbody tr:nth-child(n).-hovered:hover{background-color:var(--brand-bg-tertiary-hover, #edf5ff)}.mrx-table.mrx-table .table-solid{border-collapse:collapse}.mrx-table.mrx-table .table-solid thead tr{border-bottom:1px solid #f2f2f2}.mrx-table.mrx-table .table-solid tbody tr:not(:last-child){border-bottom:1px solid #f2f2f2}.mrx-table.mrx-table .table-solid tbody tr.-hovered:hover{box-shadow:0 1px 4px #3a3a3a4d}.mrx-table.mrx-table .mrx-table__wrapper .mrx-table__overlay{position:absolute;inset:0;background:#ffffffb3;display:flex;align-items:flex-start;justify-content:center;padding-top:12px;border-radius:4px}.mrx-table .mrx-table__result-message{display:flex;justify-content:center;width:100%;padding:var(--spacing-4);font-family:var(--body-md-font-family);font-weight:var(--body-md-font-weight);font-size:var(--body-md-font-size);line-height:var(--body-md-line-height);color:var(--neutral-text-secondary)}.mrx-table .mrx-table__result-message *{font-family:var(--body-md-font-family);font-weight:var(--body-md-font-weight);font-size:var(--body-md-font-size);line-height:var(--body-md-line-height);color:var(--neutral-text-secondary)}.mrx-table .mrx-table__result-message--substrate{display:flex;justify-content:center;width:100%;font-weight:400;font-size:16px;line-height:24px;color:var(--neutral-text-primary, #262626);padding:24px;background:#fff;box-shadow:0 1px 4px #3b43571a;border-radius:4px;position:relative}.mrx-table.mrx-table .mrx-table-download{display:flex;align-items:center;justify-content:flex-end;cursor:pointer}.mrx-table.mrx-table .mrx-table-download span{margin-right:8px;color:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table .mrx-table-download svg path{stroke:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table .mrx-table-counter{font-family:var(--body-lg-font-family);font-size:var(--body-lg-font-size);font-weight:var(--body-lg-font-weight);line-height:var(--body-lg-line-height)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i2.PaginatorComponent, selector: "mrx-paginator", inputs: ["pageSizes", "currentPage", "pageSize", "total", "customClasses", "isEmptyPaginator", "isPaginatorText", "paginatorText", "position", "withPageSize"], outputs: ["dataStateChanged"] }, { kind: "component", type: i3.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.LoaderComponent, selector: "mrx-loader", inputs: ["size", "color", "customClasses"] }], animations: [
186
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TableComponent, selector: "mrx-table", inputs: { type: "type", data: "data", pageSize: "pageSize", currentPage: "currentPage", total: "total", link: "link", isLoading: "isLoading", sort: "sort", trackById: "trackById", sortable: "sortable", striped: "striped", customClasses: "customClasses", emptyResultMsg: "emptyResultMsg", hovered: "hovered", autoHeight: "autoHeight", headerSettings: "headerSettings", contentSettings: "contentSettings", paginatorSettings: "paginatorSettings", setPageable: ["pageable", "setPageable"] }, outputs: { dataStateChanged: "dataStateChanged", downloadData: "downloadData", changeTypeTable: "changeTypeTable", change: "change" }, queries: [{ propertyName: "templateCard", first: true, predicate: ["templateCard"], descendants: true }, { propertyName: "emptyResultMsgTemplate", first: true, predicate: ["emptyResultMsgTemplate"], descendants: true }, { propertyName: "contentChildren", predicate: ColumnComponent }], ngImport: i0, template: "<div class=\"mrx-table\" [class]=\"getClasses\" [class.mb-3]=\"pageable\">\r\n <ng-container *ngIf=\"headerSettings\">\r\n <div\r\n class=\"mrx-table-card-header pt-2 pb-2 mb-3\"\r\n [class.mrx-table-card-header--substrate]=\"headerSettings.substrate\"\r\n *ngIf=\"headerSettings.type === 'default'\"\r\n >\r\n <div class=\"row\">\r\n <div\r\n class=\"mrx-table-card-header--left col col-12 col-md-6 mb-1 mb-md-0 d-flex justify-content-start align-content-center\">\r\n <ng-container *ngTemplateOutlet=\"counterTemplate\"></ng-container>\r\n </div>\r\n\r\n <div class=\"mrx-table-card-header--right col col-12 col-md-6 d-flex justify-content-end align-content-center\">\r\n <ng-container *ngTemplateOutlet=\"sortTemplate\"></ng-container>\r\n <div class=\"ml-4\" *ngIf=\"headerSettings.toggle\">\r\n <ng-container *ngTemplateOutlet=\"toggleTemplate\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"mrx-table-card-header mb-3 pt-2 pb-2\"\r\n [class.mrx-table-card-header--substrate]=\"headerSettings.substrate\"\r\n *ngIf=\"headerSettings.type === 'second'\"\r\n >\r\n <div class=\"row\">\r\n <div\r\n class=\"mrx-table-card-header--left col col-12 col-sm-6 mb-1 mb-sm-0 d-flex justify-content-start align-content-center\">\r\n <ng-container *ngTemplateOutlet=\"sortTemplate\"></ng-container>\r\n </div>\r\n\r\n <div class=\"mrx-table-card-header--right col col-12 col-sm-6 d-flex justify-content-end align-content-center\">\r\n <ng-container *ngTemplateOutlet=\"downloadTemplate\"></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container [ngSwitch]=\"type\">\r\n <div class=\"mrx-table__wrapper\" *ngSwitchCase=\"'default'\"\r\n [class.mrx-table__wrapper--substrate]=\"contentSettings.substrate\">\r\n <table\r\n [class.table-striped]=\"striped\"\r\n [class.table-solid]=\"!striped\"\r\n [class.mt-2]=\"contentSettings.substrate\"\r\n [class.mb-3]=\"contentSettings.substrate && data.length\"\r\n >\r\n <thead [class.table-head-gray]=\"!headerSettings || headerSettings.background\">\r\n <tr>\r\n <th *ngFor=\"let col of contentChildren; let index = index; let first = first; let last = last; trackBy: trackByFn\" [class]=\"col.customClasses\">\r\n <ng-container *ngIf=\"!col.templateHead; else headerItemTemplate\">\r\n <ng-container *ngIf=\"col.sortable; else defaultHeadCol\">\r\n <div [class.th-wrapper]=\"sortable\" (click)=\"onSortColumn(col.name, col.sortable)\">\r\n <span>{{ col.label }}</span>\r\n <svg\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\r\n [class]=\"columnSortedDir(col.name)\"\r\n class=\"mrx-table__sort-icon\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4 9L8 13L12 9\" fill=\"#DAD5CE\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 7L8 3L4 7\" fill=\"#DAD5CE\"/>\r\n </svg>\r\n </div>\r\n </ng-container>\r\n <ng-template #defaultHeadCol>\r\n <div><span>{{ col.label }}</span></div>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <ng-template #headerItemTemplate>\r\n <ng-container *ngIf=\"col.sortable; else defaultHeadCol\">\r\n <div [class.th-wrapper]=\"sortable\" (click)=\"onSortColumn(col.name, col.sortable)\">\r\n <ng-container *ngTemplateOutlet=\"col.templateHead; context: { $implicit: col }\"></ng-container>\r\n <svg\r\n width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\r\n [class]=\"columnSortedDir(col.name)\"\r\n class=\"mrx-table__sort-icon\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4 9L8 13L12 9\" fill=\"#DAD5CE\"/>\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 7L8 3L4 7\" fill=\"#DAD5CE\"/>\r\n </svg>\r\n </div>\r\n </ng-container>\r\n <ng-template #defaultHeadCol>\r\n <ng-container *ngTemplateOutlet=\"col.templateHead; context: { $implicit: col, index, first, last }\"></ng-container>\r\n </ng-template>\r\n </ng-template>\r\n </th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody>\r\n <tr *ngFor=\"let dataItem of data; let index = index; let first = first; let last = last\" [class.-hovered]=\"hovered\">\r\n <td\r\n #tableTD\r\n class=\"p-0\"\r\n *ngFor=\"let col of contentChildren\"\r\n [class]=\"col.customClasses\"\r\n >\r\n <a\r\n class=\"link-wrapper td-content-wrapper\"\r\n [href]=\"getLinkForStroke(link, dataItem)\"\r\n *ngIf=\"link && col['isLink']; else defaultTemplate\"\r\n >\r\n <ng-container *ngIf=\"!col.templateCell; else bodyItemTemplate\">\r\n <div class=\"p-2 h-100\">{{ dataItem[col.name] }}</div>\r\n </ng-container>\r\n\r\n <ng-template #bodyItemTemplate>\r\n <ng-container\r\n *ngTemplateOutlet=\"col.templateCell; context: { $implicit: col, row: dataItem, index, first, last }\"></ng-container>\r\n </ng-template>\r\n </a>\r\n\r\n <ng-template #defaultTemplate>\r\n <ng-container *ngIf=\"!col.templateCell; else bodyItemTemplate\">\r\n <div class=\"td-content-wrapper p-2 h-100\">{{ dataItem[col.name] }}</div>\r\n </ng-container>\r\n\r\n <ng-template #bodyItemTemplate>\r\n <div class=\"td-content-wrapper h-100\">\r\n <ng-container\r\n *ngTemplateOutlet=\"col.templateCell; context: { $implicit: col, row: dataItem, index, first, last }\"></ng-container>\r\n </div>\r\n </ng-template>\r\n </ng-template>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n\r\n <div class=\"mrx-table__result-message\" *ngIf=\"!data.length\">\r\n <ng-container *ngTemplateOutlet=\"emptyResultMsg ? emptyResultMsgTemplateDefault : emptyResultMsgTemplate\">\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"mrx-table__overlay\" [@visibleLoading]=\"isLoading ? 'in' : 'out'\" [ngClass]=\"{'open': isLoading}\" >\r\n <mrx-loader size=\"large\" color=\"brand\"></mrx-loader>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mrx-table__wrapper\" *ngSwitchCase=\"'cards'\">\r\n <ng-container *ngFor=\"let item of data; let index = index; let first = first; let last = last\">\r\n <ng-container *ngTemplateOutlet=\"templateCard; context: { $implicit: item, index, first, last }\"></ng-container>\r\n </ng-container>\r\n\r\n <div class=\"mrx-table__result-message--substrate\" *ngIf=\"!data.length\" >\r\n <ng-container *ngTemplateOutlet=\"emptyResultMsg ? emptyResultMsgTemplateDefault : emptyResultMsgTemplate\">\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"mrx-table__overlay\" [@visibleLoading]=\"isLoading ? 'in' : 'out'\" [ngClass]=\"{'open': isLoading}\" >\r\n <mrx-loader size=\"large\" color=\"brand\"></mrx-loader>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</div>\r\n\r\n<div class=\"mrx-table__paginator pt-2 pb-2\" [class.mrx-table__paginator--substrate]=\"paginatorSettings.substrate\" *ngIf=\"total\">\r\n <mrx-paginator\r\n *ngIf=\"pageable\"\r\n [total]=\"total\"\r\n [pageSize]=\"pageSize\"\r\n [position]=\"pageable.position\"\r\n [pageSizes]=\"pageable.pageSizes\"\r\n [currentPage]=\"currentPage\"\r\n [withPageSize]=\"pageable.withPageSize\"\r\n (dataStateChanged)=\"onDataStatePaginatorChanged($event)\">\r\n </mrx-paginator>\r\n</div>\r\n\r\n<ng-template #counterTemplate>\r\n <span class=\"d-flex align-items-center\" *ngIf=\"headerSettings?.count\">\r\n {{ total }} {{headerSettings?.countText || '\u043D\u043E\u0432\u043E\u0441\u0442\u0435\u0439'}}\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #sortTemplate>\r\n <div class=\"d-flex mrx-table-sort\" *ngIf=\"headerSettings?.sort\">\r\n <div class=\"mrx-table-sort-scale\" (click)=\"changeSort()\">\r\n <span class=\"mrx-table-sort-scale__title\">\u0421\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043F\u043E:</span>\r\n <div class=\"mrx-table-sort-scale__icon\">\r\n <span *ngIf=\"sort?.dir === 'desc'\" class=\"mrx-icon icon-sorting-down icon-font-16\"></span>\r\n <span *ngIf=\"sort?.dir === 'asc'\" class=\"mrx-icon icon-sorting-up icon-font-16\"></span>\r\n </div>\r\n </div>\r\n <ng-select\r\n bindLabel=\"sortLabel\"\r\n bindValue=\"name\"\r\n [items]=\"colArray\"\r\n [ngModel]=\"selectedSort\"\r\n (change)=\"updateSortSelect($event)\"\r\n [clearable]=\"false\"\r\n [searchable]=\"false\"\r\n [closeOnSelect]=\"true\"\r\n ></ng-select>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #downloadTemplate>\r\n <div class=\"mrx-table-download\" (click)=\"clickToDownload($event)\" *ngIf=\"headerSettings?.download\">\r\n <span class=\"desktop\">\u0421\u043A\u0430\u0447\u0430\u0442\u044C \u0434\u0430\u043D\u043D\u044B\u0435</span>\r\n <span class=\"mrx-icon icon-download icon-font-24\"></span>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #toggleTemplate>\r\n <div class=\"mrx-table-toggle\">\r\n <div class=\"mrx-table-toggle--item mr-1\" (click)=\"onChangeTypeTable('cards')\" [class.active]=\"type === 'cards'\">\r\n <span class=\"mrx-icon icon-cards-view icon-font-24\"></span>\r\n </div>\r\n <div class=\"mrx-table-toggle--item\" (click)=\"onChangeTypeTable('default')\" [class.active]=\"type === 'default'\">\r\n <span class=\"mrx-icon icon-table-view icon-font-24\"></span>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #emptyResultMsgTemplateDefault>\r\n {{emptyResultMsg}}\r\n</ng-template>\r\n", styles: [".mrx-table.mrx-table{display:block;width:100%}.mrx-table.mrx-table table td{height:1px}.mrx-table.mrx-table .th-wrapper{display:flex;cursor:pointer;word-break:inherit;justify-content:space-between;align-items:flex-end}.mrx-table.mrx-table .th-wrapper span{word-break:inherit}.mrx-table.mrx-table .mrx-table__sort-icon.asc path:last-child{fill:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table .mrx-table__sort-icon.desc path:first-child{fill:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table__wrapper.mrx-table__wrapper{overflow-x:auto;overflow-y:hidden;position:relative}.mrx-table__wrapper.mrx-table__wrapper .mrx-table__wrapper--substrate{padding-top:8px}.mrx-table.mrx-table.type-default table{width:100%;text-align:left;background-color:transparent;border-spacing:0}.mrx-table.mrx-table.type-default table thead.table-head-gray{background:var(--neutral-bg-island-default, #F8F9FA)}.mrx-table.mrx-table.type-default table thead .sort-asc .custom-table__sort path:nth-child(2){fill:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table.type-default table thead .sort-desc .custom-table__sort path:nth-child(1){fill:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table.type-default table td{max-width:340px;vertical-align:top}.mrx-table.mrx-table.type-default table td .link-wrapper{display:block;color:initial;height:100%}.mrx-table.mrx-table.type-default table td .link-wrapper:active{color:var(--neutral-text-primary, #262626)}.mrx-table.mrx-table.type-default table td .left-border{border-left:4px solid var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table.type-default table td .light-border{border-left:4px solid transparent}.mrx-table.mrx-table.type-default table td .warning-back{background-color:#ffece7}.mrx-table.mrx-table.type-default table td .disabled-back{background-color:#fafafa}.mrx-table.mrx-table.type-default table td .link-colored,.mrx-table.mrx-table.type-default table td .link-colored:active{color:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table.type-default table th{padding:8px;vertical-align:bottom;word-break:inherit;font-weight:700}.mrx-table.mrx-table.type-default table th svg{margin-left:8px;cursor:pointer}.mrx-table.mrx-table .mrx-table-card-header{position:relative}.mrx-table.mrx-table .mrx-table-card-header--substrate{padding-left:24px;padding-right:24px;background:#fff;box-shadow:0 1px 4px #3b43571a;border-radius:4px}.mrx-table.mrx-table .mrx-table__wrapper--substrate{background:#fff;box-shadow:0 1px 4px #3b43571a;border-radius:4px}.mrx-table.mrx-table .mrx-table-toggle{display:flex}.mrx-table.mrx-table .mrx-table-toggle--item{display:flex;align-items:center;justify-content:center;cursor:pointer}.mrx-table.mrx-table .mrx-table-toggle--item .mrx-icon{color:#e5e5e5}.mrx-table.mrx-table .mrx-table-toggle--item.active .mrx-icon{color:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table .mrx-table-sort.mrx-table-sort--is-card,.mrx-table.mrx-table .mrx-table-sort.mrx-table-sort--is-table{justify-content:flex-start}.mrx-table.mrx-table .mrx-table-sort-scale{display:flex;align-items:center;margin-right:8px;cursor:pointer}.mrx-table.mrx-table .mrx-table-sort-scale__title{font-family:PT Sans;font-style:normal;font-weight:400;font-size:14px;line-height:143%;color:var(--neutral-text-primary, #262626);margin-right:12px}.mrx-table.mrx-table .mrx-table-sort-scale__icon{display:flex;align-items:center;justify-content:center}:host::ng-deep .mrx-table.mrx-table .mrx-table-sort .ng-select{max-width:215px;margin-bottom:0}:host::ng-deep .mrx-table.mrx-table .mrx-table-sort .ng-select .ng-select-container.ng-select-container{min-height:auto!important;border:none;cursor:pointer;align-items:center;height:100%!important}:host::ng-deep .mrx-table.mrx-table .mrx-table-sort .ng-select .ng-value-container.ng-value-container{padding-left:0!important;margin-right:8px}:host::ng-deep .mrx-table.mrx-table .mrx-table-sort .ng-select .ng-arrow-wrapper.ng-arrow-wrapper{min-height:auto;width:auto!important}:host::ng-deep .mrx-table.mrx-table .mrx-table-sort .ng-select .ng-dropdown-panel.ng-dropdown-panel{width:100vw;max-width:215px;left:auto;right:0}.mrx-table__paginator.mrx-table__paginator.mrx-table__paginator--substrate{padding-left:24px;padding-right:24px;background:#fff;box-shadow:0 1px 4px #3b43571a;border-radius:4px}.mrx-table.mrx-table .table-striped tbody tr:nth-child(2n){background-color:var(--neutral-bg-island-default, #F8F9FA)}.mrx-table.mrx-table .table-striped tbody tr:nth-child(n){transition:.2s}.mrx-table.mrx-table .table-striped tbody tr:nth-child(n).-hovered:hover{background-color:var(--brand-bg-tertiary-hover, #edf5ff)}.mrx-table.mrx-table .table-solid{border-collapse:collapse}.mrx-table.mrx-table .table-solid thead tr{border-bottom:1px solid #f2f2f2}.mrx-table.mrx-table .table-solid tbody tr:not(:last-child){border-bottom:1px solid #f2f2f2}.mrx-table.mrx-table .table-solid tbody tr.-hovered:hover{box-shadow:0 1px 4px #3a3a3a4d}.mrx-table.mrx-table .mrx-table__wrapper .mrx-table__overlay{position:absolute;inset:0;background:#ffffffb3;display:flex;align-items:flex-start;justify-content:center;padding-top:12px;border-radius:4px}.mrx-table .mrx-table__result-message{display:flex;justify-content:center;width:100%;padding:var(--spacing-4);font-family:var(--body-md-font-family);font-weight:var(--body-md-font-weight);font-size:var(--body-md-font-size);line-height:var(--body-md-line-height);color:var(--neutral-text-secondary)}.mrx-table .mrx-table__result-message *{font-family:var(--body-md-font-family);font-weight:var(--body-md-font-weight);font-size:var(--body-md-font-size);line-height:var(--body-md-line-height);color:var(--neutral-text-secondary)}.mrx-table .mrx-table__result-message--substrate{display:flex;justify-content:center;width:100%;font-weight:400;font-size:16px;line-height:24px;color:var(--neutral-text-primary, #262626);padding:24px;background:#fff;box-shadow:0 1px 4px #3b43571a;border-radius:4px;position:relative}.mrx-table.mrx-table .mrx-table-download{display:flex;align-items:center;justify-content:flex-end;cursor:pointer}.mrx-table.mrx-table .mrx-table-download span{margin-right:8px;color:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table .mrx-table-download svg path{stroke:var(--brand-bg-primary-default, #2a6ab8)}.mrx-table.mrx-table .mrx-table-counter{font-family:var(--body-lg-font-family);font-size:var(--body-lg-font-size);font-weight:var(--body-lg-font-weight);line-height:var(--body-lg-line-height)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i2.PaginatorComponent, selector: "mrx-paginator", inputs: ["pageSizes", "currentPage", "pageSize", "total", "customClasses", "isEmptyPaginator", "isPaginatorText", "paginatorText", "dropdownPosition", "position", "withPageSize"], outputs: ["dataStateChanged"] }, { kind: "component", type: i3.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.LoaderComponent, selector: "mrx-loader", inputs: ["size", "color", "customClasses"] }], animations: [
187
187
  trigger('visibleLoading', [
188
188
  state('in', style({ opacity: 1, visibility: 'visible' })),
189
189
  state('out', style({ opacity: 0, visibility: 'hidden' })),
@@ -271,4 +271,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
271
271
  }], change: [{
272
272
  type: Output
273
273
  }] } });
274
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBR1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFnRyxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDM0ksT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRXZFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBR3hFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7O0FBdUJ4RixNQUFNLE9BQU8sY0FBYztJQTBETDtJQXpEYixRQUFRLEdBQXNCLEVBQUUsQ0FBQztJQUNqQyxRQUFRLEdBQXlCLG9CQUFvQixDQUFDO0lBQ3RELFlBQVksR0FBRyxFQUFFLENBQUE7SUFDakIsSUFBSSxHQUFHLEtBQUssQ0FBQTtJQUVlLGVBQWUsQ0FBOEI7SUFDakQsWUFBWSxDQUFvQjtJQUN0QixzQkFBc0IsQ0FBb0I7SUFFekUsSUFBSSxHQUFjLFNBQVMsQ0FBQztJQUM1QixJQUFJLENBQW1CO0lBQ3ZCLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDZCxXQUFXLEdBQUcsQ0FBQyxDQUFDO0lBQ2hCLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDVixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ1YsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUVsQixJQUFJLENBQTZCO0lBQ2pDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDakIsUUFBUSxHQUFHLElBQUksQ0FBQztJQUNoQixPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ2YsYUFBYSxHQUFHLEVBQUUsQ0FBQTtJQUNsQixjQUFjLEdBQUcsRUFBRSxDQUFBO0lBQ25CLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFFZixVQUFVLEdBQUcsSUFBSSxDQUFBLENBQUMsYUFBYTtJQUUvQixjQUFjLENBQTRCO0lBRTFDLGVBQWUsR0FBb0I7UUFDMUMsU0FBUyxFQUFFLEtBQUs7S0FDakIsQ0FBQTtJQUVRLGlCQUFpQixHQUFzQjtRQUM5QyxTQUFTLEVBQUUsS0FBSztLQUNqQixDQUFBO0lBRUQsdUJBQXVCO0lBQ2hCLFlBQVksR0FBRyxDQUFDLENBQUE7SUFFdkIsSUFDVyxXQUFXLENBQUMsS0FBOEI7UUFDbkQsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxvQkFBb0IsQ0FBQztRQUN2QyxDQUFDO2FBQU0sSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDdkIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN4QixDQUFDO0lBQ0gsQ0FBQztJQUVTLGdCQUFnQixHQUN4QixJQUFJLFlBQVksRUFBd0IsQ0FBQztJQUNqQyxZQUFZLEdBQXdCLElBQUksWUFBWSxFQUFTLENBQUE7SUFDN0QsZUFBZSxHQUE0QixJQUFJLFlBQVksRUFBYSxDQUFBO0lBQ3hFLE1BQU0sR0FBd0IsSUFBSSxZQUFZLEVBQVMsQ0FBQTtJQUVqRSxZQUFvQixjQUFpQztRQUFqQyxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7SUFDckQsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFL0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDM0IsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDN0MsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFBO1lBQy9CLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDMUMsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLEVBQUUsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFBO1FBQzNDLENBQUMsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQTtRQUNuQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtJQUNsQixDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ25CLE9BQU8sR0FBSSxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBRSxJQUFLLElBQUksQ0FBQyxhQUFjLEVBQUUsQ0FBQztJQUNqRSxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQWEsRUFBRSxJQUFTO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRU0sVUFBVTtRQUNmLE1BQU0sWUFBWSxHQUF5QixFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFL0YsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDMUIsT0FBTTtRQUNSLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNkLFlBQVksQ0FBQyxJQUFJLEdBQUc7Z0JBQ2xCLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTTtnQkFDOUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRzthQUNuQixDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTixZQUFZLENBQUMsSUFBSSxHQUFHO2dCQUNsQixHQUFHLEVBQUUsS0FBSztnQkFDVixHQUFHLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJO2FBQzNCLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRU0sZUFBZSxDQUFDLE1BQWM7UUFDbkMsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLE1BQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzFELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDdkIsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVNLFlBQVksQ0FBQyxNQUFjLEVBQUUsUUFBaUI7UUFDbkQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLFlBQVksR0FBeUIsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRS9GLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUN6QyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLEtBQUssRUFBRSxDQUFDO2dCQUM3QyxZQUFZLENBQUMsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDbkQsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sWUFBWSxDQUFDLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ2xELENBQUM7UUFFRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFTSxlQUFlLENBQUMsS0FBWTtRQUNqQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUMvQixDQUFDO0lBRU0sZ0JBQWdCLENBQUMsS0FBVTtRQUNoQyxNQUFNLFlBQVksR0FBeUI7WUFDekMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQ3RCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixJQUFJLEVBQUU7Z0JBQ0osR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJO2dCQUNmLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUc7YUFDcEI7U0FDRixDQUFDO1FBRUYsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUMxQyxDQUFDO0lBRU0sMkJBQTJCLENBQUMsVUFBZ0M7UUFDakUsTUFBTSxZQUFZLEdBQXlCO1lBQ3pDLElBQUksRUFBRSxVQUFVLENBQUMsV0FBVztZQUM1QixRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVE7U0FDOUIsQ0FBQztRQUVGLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2hELFlBQVksQ0FBQyxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDakUsQ0FBQztRQUVELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVNLGdCQUFnQixDQUFDLElBQVksRUFBRSxRQUF1QjtRQUMzRCxZQUFZO1FBQ1osTUFBTSxZQUFZLEdBQUcsMEJBQTBCLENBQUM7UUFDaEQsa0JBQWtCO1FBQ2xCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDakMsaUNBQWlDO1FBQ2pDLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDekMsTUFBTSxZQUFZLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUM3QyxNQUFNLGVBQWUsR0FBRyxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDaEQsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUE7WUFDMUQsT0FBTztnQkFDTCxJQUFJLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDekQsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFBO1FBQ0Ysd0RBQXdEO1FBRXhELHFCQUFxQjtRQUNyQixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDbEMsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7Z0JBQzVCLGFBQWE7Z0JBQ2IsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQzdDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLEdBQUcsQ0FBQTtZQUNaLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDWix1QkFBdUI7UUFDdkIsMEVBQTBFO1FBRTFFLE1BQU0sU0FBUyxHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFhLEVBQUUsRUFBRTtZQUMvRSxPQUFPLEdBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFJLEdBQUksS0FBSyxDQUFDLElBQUssSUFBSyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBRSxFQUFFLENBQUE7UUFDN0UsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7UUFFakIsb0VBQW9FO1FBQ3BFLDREQUE0RDtRQUM1RCxvQkFBb0I7UUFFcEIsT0FBTyxHQUFJLE1BQU8sR0FBSSxTQUFVLEVBQUUsQ0FBQTtJQUNwQyxDQUFDO0lBRU0saUJBQWlCLENBQUMsSUFBZTtRQUN0QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNqQyxDQUFDO3dHQTdNVSxjQUFjOzRGQUFkLGNBQWMsazVCQU1SLGVBQWUsNkJDL0NsQyx1elVBNE5BLG1tUkRwTWM7WUFDVixPQUFPLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQ3hCLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztnQkFDekQsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUN6RCxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsS0FBSyxDQUFDO3dCQUM3QixPQUFPLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7d0JBQ25ELE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxLQUFLLENBQUMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztxQkFDOUQsQ0FDQSxDQUFDLENBQUM7Z0JBQ0gsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQzt3QkFDN0IsT0FBTyxDQUFDLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO3dCQUM1RCxPQUFPLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7cUJBQ3BELENBQ0EsQ0FBQyxDQUFDO2FBQ0osQ0FBQztTQUNIOzs0RkFFVSxjQUFjO2tCQXJCMUIsU0FBUzsrQkFDRSxXQUFXLGNBR1Q7d0JBQ1YsT0FBTyxDQUFDLGdCQUFnQixFQUFFOzRCQUN4QixLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7NEJBQ3pELEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQzs0QkFDekQsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQztvQ0FDN0IsT0FBTyxDQUFDLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO29DQUNuRCxPQUFPLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7aUNBQzlELENBQ0EsQ0FBQyxDQUFDOzRCQUNILFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUM7b0NBQzdCLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxLQUFLLENBQUMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztvQ0FDNUQsT0FBTyxDQUFDLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2lDQUNwRCxDQUNBLENBQUMsQ0FBQzt5QkFDSixDQUFDO3FCQUNIO3NGQVFpQyxlQUFlO3NCQUFoRCxlQUFlO3VCQUFDLGVBQWU7Z0JBQ0YsWUFBWTtzQkFBekMsWUFBWTt1QkFBQyxjQUFjO2dCQUNZLHNCQUFzQjtzQkFBN0QsWUFBWTt1QkFBQyx3QkFBd0I7Z0JBRTdCLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFFRyxlQUFlO3NCQUF2QixLQUFLO2dCQUlHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFRSyxXQUFXO3NCQURyQixLQUFLO3VCQUFDLFVBQVU7Z0JBV1AsZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUVHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbnRlbnRDaGlsZCxcclxuICBDb250ZW50Q2hpbGRyZW4sXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBRdWVyeUxpc3QsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRlbnRTZXR0aW5ncywgSGVhZGVyU2V0dGluZ3MsIFBhZ2luYXRvclNldHRpbmdzLCBTb3J0RGVzY3JpcHRvciwgVGFibGVCb2R5SXRlbSwgVGFibGVUeXBlLCBUYWJsZVR5cGVFbnVtIH0gZnJvbSAnLi90YWJsZS5lbnVtJztcclxuaW1wb3J0IHsgQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NvbHVtbi9jb2x1bW4uY29tcG9uZW50JztcclxuaW1wb3J0IHsgUGFnZXJTZXR0aW5ncyB9IGZyb20gJy4vbW9kZWxzL3BhZ2VyLXNldHRpbmdzJztcclxuaW1wb3J0IHsgRGVmYXVsdFBhZ2VyU2V0dGluZ3MgfSBmcm9tICcuL2RlZmF1bHQvZGVmYXVsdC1wYWdlci1zZXR0aW5ncyc7XHJcbmltcG9ydCB7IERhdGFTdGF0ZUNoYW5nZUV2ZW50IH0gZnJvbSAnLi9tb2RlbHMvZGF0YS1zdGF0ZS1jaGFuZ2UuZXZlbnQnO1xyXG5pbXBvcnQgeyBQYWdpbmF0ZU91dHB1dE9iamVjdCB9IGZyb20gJy4uL3BhZ2luYXRvci9wYWdpbmF0b3IuZW51bSc7XHJcbmltcG9ydCB7IGFuaW1hdGUsIGdyb3VwLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbXJ4LXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLmNvbXBvbmVudC5sZXNzJ10sXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgdHJpZ2dlcigndmlzaWJsZUxvYWRpbmcnLCBbXHJcbiAgICAgIHN0YXRlKCdpbicsIHN0eWxlKHsgb3BhY2l0eTogMSwgdmlzaWJpbGl0eTogJ3Zpc2libGUnIH0pKSxcclxuICAgICAgc3RhdGUoJ291dCcsIHN0eWxlKHsgb3BhY2l0eTogMCwgdmlzaWJpbGl0eTogJ2hpZGRlbicgfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKCdpbiA9PiBvdXQnLCBbZ3JvdXAoW1xyXG4gICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2UtaW4tb3V0Jywgc3R5bGUoeyBvcGFjaXR5OiAwIH0pKSxcclxuICAgICAgICBhbmltYXRlKCczMDBtcyBlYXNlLWluLW91dCcsIHN0eWxlKHsgdmlzaWJpbGl0eTogJ2hpZGRlbicgfSkpXHJcbiAgICAgIF1cclxuICAgICAgKV0pLFxyXG4gICAgICB0cmFuc2l0aW9uKCdvdXQgPT4gaW4nLCBbZ3JvdXAoW1xyXG4gICAgICAgIGFuaW1hdGUoJzFtcyBlYXNlLWluLW91dCcsIHN0eWxlKHsgdmlzaWJpbGl0eTogJ3Zpc2libGUnIH0pKSxcclxuICAgICAgICBhbmltYXRlKCczMDBtcyBlYXNlLWluLW91dCcsIHN0eWxlKHsgb3BhY2l0eTogMSB9KSlcclxuICAgICAgXVxyXG4gICAgICApXSlcclxuICAgIF0pXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcclxuICBwdWJsaWMgY29sQXJyYXk6IENvbHVtbkNvbXBvbmVudFtdID0gW107XHJcbiAgcHVibGljIHBhZ2VhYmxlOiBQYWdlclNldHRpbmdzIHwgbnVsbCA9IERlZmF1bHRQYWdlclNldHRpbmdzO1xyXG4gIHB1YmxpYyBzZWxlY3RlZFNvcnQgPSAnJ1xyXG4gIHB1YmxpYyBpbml0ID0gZmFsc2VcclxuXHJcbiAgQENvbnRlbnRDaGlsZHJlbihDb2x1bW5Db21wb25lbnQpIGNvbnRlbnRDaGlsZHJlbiE6IFF1ZXJ5TGlzdDxDb2x1bW5Db21wb25lbnQ+O1xyXG4gIEBDb250ZW50Q2hpbGQoJ3RlbXBsYXRlQ2FyZCcpIHRlbXBsYXRlQ2FyZCE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQENvbnRlbnRDaGlsZCgnZW1wdHlSZXN1bHRNc2dUZW1wbGF0ZScpIGVtcHR5UmVzdWx0TXNnVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBASW5wdXQoKSB0eXBlOiBUYWJsZVR5cGUgPSAnZGVmYXVsdCc7XHJcbiAgQElucHV0KCkgZGF0YSE6IFRhYmxlQm9keUl0ZW1bXTtcclxuICBASW5wdXQoKSBwYWdlU2l6ZSA9IDIwO1xyXG4gIEBJbnB1dCgpIGN1cnJlbnRQYWdlID0gMTtcclxuICBASW5wdXQoKSB0b3RhbCA9IDA7XHJcbiAgQElucHV0KCkgbGluayA9ICcnO1xyXG4gIEBJbnB1dCgpIGlzTG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBzb3J0OiBTb3J0RGVzY3JpcHRvciB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSB0cmFja0J5SWQgPSAnaWQnO1xyXG4gIEBJbnB1dCgpIHNvcnRhYmxlID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzdHJpcGVkID0gdHJ1ZTtcclxuICBASW5wdXQoKSBjdXN0b21DbGFzc2VzID0gJydcclxuICBASW5wdXQoKSBlbXB0eVJlc3VsdE1zZyA9ICcnXHJcbiAgQElucHV0KCkgaG92ZXJlZCA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpIGF1dG9IZWlnaHQgPSB0cnVlIC8vIGRlcHJlY2F0ZWRcclxuXHJcbiAgQElucHV0KCkgaGVhZGVyU2V0dGluZ3M6IEhlYWRlclNldHRpbmdzIHwgdW5kZWZpbmVkXHJcblxyXG4gIEBJbnB1dCgpIGNvbnRlbnRTZXR0aW5nczogQ29udGVudFNldHRpbmdzID0ge1xyXG4gICAgc3Vic3RyYXRlOiBmYWxzZVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgcGFnaW5hdG9yU2V0dGluZ3M6IFBhZ2luYXRvclNldHRpbmdzID0ge1xyXG4gICAgc3Vic3RyYXRlOiBmYWxzZVxyXG4gIH1cclxuXHJcbiAgLy8g0J/RgNC+0LLQtdGA0LjRgtGMINC4INCy0YvRgNC10LfQsNGC0YxcclxuICBwdWJsaWMgc2VsZWN0ZWRJdGVtID0gMVxyXG5cclxuICBASW5wdXQoJ3BhZ2VhYmxlJylcclxuICBwdWJsaWMgc2V0IHNldFBhZ2VhYmxlKHZhbHVlOiBQYWdlclNldHRpbmdzIHwgYm9vbGVhbikge1xyXG4gICAgaWYgKHZhbHVlID09PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMucGFnZWFibGUgPSBEZWZhdWx0UGFnZXJTZXR0aW5ncztcclxuICAgIH0gZWxzZSBpZiAodmFsdWUgPT09IGZhbHNlKSB7XHJcbiAgICAgIHRoaXMucGFnZWFibGUgPSBudWxsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5wYWdlYWJsZSA9IHZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpIGRhdGFTdGF0ZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxEYXRhU3RhdGVDaGFuZ2VFdmVudD4gPVxyXG4gICAgbmV3IEV2ZW50RW1pdHRlcjxEYXRhU3RhdGVDaGFuZ2VFdmVudD4oKTtcclxuICBAT3V0cHV0KCkgZG93bmxvYWREYXRhOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKVxyXG4gIEBPdXRwdXQoKSBjaGFuZ2VUeXBlVGFibGU6IEV2ZW50RW1pdHRlcjxUYWJsZVR5cGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJsZVR5cGU+KClcclxuICBAT3V0cHV0KCkgY2hhbmdlOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5jb2xBcnJheSA9IHRoaXMuY29udGVudENoaWxkcmVuLnRvQXJyYXkoKTtcclxuXHJcbiAgICB0aGlzLmNvbEFycmF5LmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnNvcnQgJiYgdGhpcy5zb3J0LmNvbCA9PT0gaXRlbS5uYW1lKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFNvcnQgPSBpdGVtLm5hbWVcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICB0aGlzLmNvbEFycmF5ID0gdGhpcy5jb2xBcnJheS5maWx0ZXIoaXRlbSA9PiB7XHJcbiAgICAgIHJldHVybiBpdGVtLm5hbWUgIT09ICcnICYmIGl0ZW0uc29ydExhYmVsXHJcbiAgICB9KVxyXG5cclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICB0aGlzLmluaXQgPSB0cnVlXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGdldENsYXNzZXMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHsgVGFibGVUeXBlRW51bVt0aGlzLnR5cGVdIH0gJHsgdGhpcy5jdXN0b21DbGFzc2VzIH1gO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gaXRlbVt0aGlzLnRyYWNrQnlJZF07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2hhbmdlU29ydCgpIHtcclxuICAgIGNvbnN0IG5ld0V2ZW50RGF0YTogRGF0YVN0YXRlQ2hhbmdlRXZlbnQgPSB7IHBhZ2U6IHRoaXMuY3VycmVudFBhZ2UsIHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplIH07XHJcblxyXG4gICAgaWYgKCF0aGlzLmNvbEFycmF5Lmxlbmd0aCkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zb3J0KSB7XHJcbiAgICAgIG5ld0V2ZW50RGF0YS5zb3J0ID0ge1xyXG4gICAgICAgIGRpcjogdGhpcy5zb3J0LmRpciA9PT0gJ2Rlc2MnID8gJ2FzYycgOiAnZGVzYycsXHJcbiAgICAgICAgY29sOiB0aGlzLnNvcnQuY29sXHJcbiAgICAgIH07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBuZXdFdmVudERhdGEuc29ydCA9IHtcclxuICAgICAgICBkaXI6ICdhc2MnLFxyXG4gICAgICAgIGNvbDogdGhpcy5jb2xBcnJheVswXS5uYW1lXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kYXRhU3RhdGVDaGFuZ2VkLmVtaXQobmV3RXZlbnREYXRhKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjb2x1bW5Tb3J0ZWREaXIoY29sdW1uOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuc29ydCAmJiB0aGlzLnNvcnQuY29sID09IGNvbHVtbiAmJiB0aGlzLnNvcnQuZGlyKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnNvcnQuZGlyO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uU29ydENvbHVtbihjb2x1bW46IHN0cmluZywgc29ydGFibGU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlmICghc29ydGFibGUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG5ld0V2ZW50RGF0YTogRGF0YVN0YXRlQ2hhbmdlRXZlbnQgPSB7IHBhZ2U6IHRoaXMuY3VycmVudFBhZ2UsIHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplIH07XHJcblxyXG4gICAgaWYgKHRoaXMuc29ydCAmJiB0aGlzLnNvcnQuY29sID09IGNvbHVtbikge1xyXG4gICAgICBpZiAodGhpcy5zb3J0LmRpciAmJiB0aGlzLnNvcnQuZGlyID09PSAnYXNjJykge1xyXG4gICAgICAgIG5ld0V2ZW50RGF0YS5zb3J0ID0geyBkaXI6ICdkZXNjJywgY29sOiBjb2x1bW4gfTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbmV3RXZlbnREYXRhLnNvcnQgPSB7IGRpcjogJ2FzYycsIGNvbDogY29sdW1uIH07XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kYXRhU3RhdGVDaGFuZ2VkLmVtaXQobmV3RXZlbnREYXRhKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbGlja1RvRG93bmxvYWQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmRvd25sb2FkRGF0YS5lbWl0KGV2ZW50KVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHVwZGF0ZVNvcnRTZWxlY3QodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgbmV3RXZlbnREYXRhOiBEYXRhU3RhdGVDaGFuZ2VFdmVudCA9IHtcclxuICAgICAgcGFnZTogdGhpcy5jdXJyZW50UGFnZSxcclxuICAgICAgcGFnZVNpemU6IHRoaXMucGFnZVNpemUsXHJcbiAgICAgIHNvcnQ6IHtcclxuICAgICAgICBjb2w6IHZhbHVlLm5hbWUsXHJcbiAgICAgICAgZGlyOiB0aGlzLnNvcnQ/LmRpclxyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuZGF0YVN0YXRlQ2hhbmdlZC5lbWl0KG5ld0V2ZW50RGF0YSlcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkRhdGFTdGF0ZVBhZ2luYXRvckNoYW5nZWQocGFnaW5hdGlvbjogUGFnaW5hdGVPdXRwdXRPYmplY3QpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5ld0V2ZW50RGF0YTogRGF0YVN0YXRlQ2hhbmdlRXZlbnQgPSB7XHJcbiAgICAgIHBhZ2U6IHBhZ2luYXRpb24uY3VycmVudFBhZ2UsXHJcbiAgICAgIHBhZ2VTaXplOiBwYWdpbmF0aW9uLnBhZ2VTaXplXHJcbiAgICB9O1xyXG5cclxuICAgIGlmICh0aGlzLnNvcnQgJiYgdGhpcy5zb3J0LmNvbCAmJiB0aGlzLnNvcnQuZGlyKSB7XHJcbiAgICAgIG5ld0V2ZW50RGF0YS5zb3J0ID0geyBkaXI6IHRoaXMuc29ydC5kaXIsIGNvbDogdGhpcy5zb3J0LmNvbCB9O1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGF0YVN0YXRlQ2hhbmdlZC5lbWl0KG5ld0V2ZW50RGF0YSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0TGlua0ZvclN0cm9rZShsaW5rOiBzdHJpbmcsIGRhdGFJdGVtOiBUYWJsZUJvZHlJdGVtKSB7XHJcbiAgICAvLyDRgNC10LPRg9C70Y/RgNC60LhcclxuICAgIGNvbnN0IHJlZ0V4cFBhcmFtcyA9IC8oPzw9XFxbKVteXFxzXFxbXFxdXSsoPz1dKS9naTtcclxuICAgIC8vINC+0YHQvdC+0LLQvdC+0Lkg0LzQsNGB0YHQuNCyXHJcbiAgICBjb25zdCBsaW5rQXJyYXkgPSBsaW5rLnNwbGl0KCc/JylcclxuICAgIC8vINC80LDRgdGB0LjQstGLINGB0YLRgNC+0LogdXJsINC4INC/0LDRgNCw0LzQtdGC0YDQvtCyXHJcbiAgICBjb25zdCBhcnJheVVybCA9IGxpbmtBcnJheVswXT8uc3BsaXQoJy8nKVxyXG4gICAgY29uc3Qgc2VhcmNoUGFyYW1zID0gbGlua0FycmF5WzFdPy5zcGxpdCgnJicpXHJcbiAgICBjb25zdCBzZWFyY2hQYXJhbXNPYmogPSBzZWFyY2hQYXJhbXM/Lm1hcCgoc3RyKSA9PiB7XHJcbiAgICAgIGNvbnN0IHN0clBhcmFtRGF0YSA9IHN0ci5zcGxpdCgnPScpWzFdLm1hdGNoKHJlZ0V4cFBhcmFtcylcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBuYW1lOiBzdHIuc3BsaXQoJz0nKVswXSxcclxuICAgICAgICBkYXRhOiBzdHJQYXJhbURhdGEgPyBzdHJQYXJhbURhdGFbMF0gOiBzdHIuc3BsaXQoJz0nKVswXSxcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIC8vIGNvbnN0IGFycmF5UGFyYW1zID0gbGlua0FycmF5WzFdPy5tYXRjaChyZWdFeHBQYXJhbXMpXHJcblxyXG4gICAgLy8g0L7QsdGA0LDQsdC+0YLQutCwINGC0LXQu9CwIHVybFxyXG4gICAgY29uc3Qgc3RyVXJsID0gYXJyYXlVcmwubWFwKChzdHIpID0+IHtcclxuICAgICAgaWYgKHN0ci5tYXRjaChyZWdFeHBQYXJhbXMpKSB7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIHJldHVybiBkYXRhSXRlbVtzdHIubWF0Y2gocmVnRXhwUGFyYW1zKVswXV1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gc3RyXHJcbiAgICAgIH1cclxuICAgIH0pLmpvaW4oJy8nKVxyXG4gICAgLy8g0L7QsdGA0LDQsdC+0YLQutCwINC/0LDRgNCw0LzQtdGC0YDQvtCyXHJcbiAgICAvLyDQtdGB0LvQuCDQtdGB0YLRjCDQv9Cw0YDQsNC80LXRgtGA0YsgLSDQstC+0LfQstGA0LDRidCw0LXQvCDQuNGFINGB0YLRgNC+0LrQvtC5INGBINC00LjQvdCw0LzQuNGH0LXRgdC60LjQvNC4INC/0LDRgNCw0LzQtdGC0YDQsNC80LhcclxuXHJcbiAgICBjb25zdCBzdHJQYXJhbXMgPSBzZWFyY2hQYXJhbXNPYmogPyBzZWFyY2hQYXJhbXNPYmoubWFwKChwYXJhbSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICByZXR1cm4gYCR7IGluZGV4ID4gMCA/ICcnIDogJz8nIH0keyBwYXJhbS5uYW1lIH09JHsgZGF0YUl0ZW1bcGFyYW0uZGF0YV0gfWBcclxuICAgIH0pLmpvaW4oJyYnKSA6ICcnXHJcblxyXG4gICAgLy8gY29uc3Qgc3RyUGFyYW1zID0gYXJyYXlQYXJhbXMgPyBhcnJheVBhcmFtcy5tYXAoKHN0ciwgaW5kZXgpID0+IHtcclxuICAgIC8vICAgcmV0dXJuIGAke2luZGV4ID4gMCA/ICcnIDogJz8nfSR7c3RyfT0ke2RhdGFJdGVtW3N0cl19YFxyXG4gICAgLy8gfSkuam9pbignJicpIDogJydcclxuXHJcbiAgICByZXR1cm4gYCR7IHN0clVybCB9JHsgc3RyUGFyYW1zIH1gXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25DaGFuZ2VUeXBlVGFibGUodHlwZTogVGFibGVUeXBlKTogdm9pZCB7XHJcbiAgICB0aGlzLmNoYW5nZVR5cGVUYWJsZS5lbWl0KHR5cGUpXHJcbiAgfVxyXG5cclxuICAvLyBwdWJsaWMgZ2V0SGVpZ2h0Rm9yVEQodGFibGVURDogSFRNTEVsZW1lbnQpIHtcclxuICAvLyAgIHJldHVybiB0YWJsZVRELnNjcm9sbEhlaWdodFxyXG4gIC8vIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibXJ4LXRhYmxlXCIgW2NsYXNzXT1cImdldENsYXNzZXNcIiBbY2xhc3MubWItM109XCJwYWdlYWJsZVwiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXJTZXR0aW5nc1wiPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cIm1yeC10YWJsZS1jYXJkLWhlYWRlciBwdC0yIHBiLTIgbWItM1wiXHJcbiAgICAgIFtjbGFzcy5tcngtdGFibGUtY2FyZC1oZWFkZXItLXN1YnN0cmF0ZV09XCJoZWFkZXJTZXR0aW5ncy5zdWJzdHJhdGVcIlxyXG4gICAgICAqbmdJZj1cImhlYWRlclNldHRpbmdzLnR5cGUgPT09ICdkZWZhdWx0J1wiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cIm1yeC10YWJsZS1jYXJkLWhlYWRlci0tbGVmdCBjb2wgY29sLTEyIGNvbC1tZC02IG1iLTEgbWItbWQtMCBkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY291bnRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtcngtdGFibGUtY2FyZC1oZWFkZXItLXJpZ2h0IGNvbCBjb2wtMTIgY29sLW1kLTYgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgYWxpZ24tY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzb3J0VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtbC00XCIgKm5nSWY9XCJoZWFkZXJTZXR0aW5ncy50b2dnbGVcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRvZ2dsZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwibXJ4LXRhYmxlLWNhcmQtaGVhZGVyIG1iLTMgcHQtMiBwYi0yXCJcclxuICAgICAgW2NsYXNzLm1yeC10YWJsZS1jYXJkLWhlYWRlci0tc3Vic3RyYXRlXT1cImhlYWRlclNldHRpbmdzLnN1YnN0cmF0ZVwiXHJcbiAgICAgICpuZ0lmPVwiaGVhZGVyU2V0dGluZ3MudHlwZSA9PT0gJ3NlY29uZCdcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJtcngtdGFibGUtY2FyZC1oZWFkZXItLWxlZnQgY29sIGNvbC0xMiBjb2wtc20tNiBtYi0xIG1iLXNtLTAgZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNvcnRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LXRhYmxlLWNhcmQtaGVhZGVyLS1yaWdodCBjb2wgY29sLTEyIGNvbC1zbS02IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGFsaWduLWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZG93bmxvYWRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJ0eXBlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibXJ4LXRhYmxlX193cmFwcGVyXCIgKm5nU3dpdGNoQ2FzZT1cIidkZWZhdWx0J1wiXHJcbiAgICAgICAgIFtjbGFzcy5tcngtdGFibGVfX3dyYXBwZXItLXN1YnN0cmF0ZV09XCJjb250ZW50U2V0dGluZ3Muc3Vic3RyYXRlXCI+XHJcbiAgICAgIDx0YWJsZVxyXG4gICAgICAgIFtjbGFzcy50YWJsZS1zdHJpcGVkXT1cInN0cmlwZWRcIlxyXG4gICAgICAgIFtjbGFzcy50YWJsZS1zb2xpZF09XCIhc3RyaXBlZFwiXHJcbiAgICAgICAgW2NsYXNzLm10LTJdPVwiY29udGVudFNldHRpbmdzLnN1YnN0cmF0ZVwiXHJcbiAgICAgICAgW2NsYXNzLm1iLTNdPVwiY29udGVudFNldHRpbmdzLnN1YnN0cmF0ZSAmJiBkYXRhLmxlbmd0aFwiXHJcbiAgICAgID5cclxuICAgICAgICA8dGhlYWQgW2NsYXNzLnRhYmxlLWhlYWQtZ3JheV09XCIhaGVhZGVyU2V0dGluZ3MgfHwgaGVhZGVyU2V0dGluZ3MuYmFja2dyb3VuZFwiPlxyXG4gICAgICAgIDx0cj5cclxuICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbnRlbnRDaGlsZHJlbjsgbGV0IGluZGV4ID0gaW5kZXg7IGxldCBmaXJzdCA9IGZpcnN0OyBsZXQgbGFzdCA9IGxhc3Q7IHRyYWNrQnk6IHRyYWNrQnlGblwiIFtjbGFzc109XCJjb2wuY3VzdG9tQ2xhc3Nlc1wiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbC50ZW1wbGF0ZUhlYWQ7IGVsc2UgaGVhZGVySXRlbVRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC5zb3J0YWJsZTsgZWxzZSBkZWZhdWx0SGVhZENvbFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBbY2xhc3MudGgtd3JhcHBlcl09XCJzb3J0YWJsZVwiIChjbGljayk9XCJvblNvcnRDb2x1bW4oY29sLm5hbWUsIGNvbC5zb3J0YWJsZSlcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgY29sLmxhYmVsIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNvbHVtblNvcnRlZERpcihjb2wubmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXJ4LXRhYmxlX19zb3J0LWljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNNCA5TDggMTNMMTIgOVwiIGZpbGw9XCIjREFENUNFXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0xMiA3TDggM0w0IDdcIiBmaWxsPVwiI0RBRDVDRVwiLz5cclxuICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRIZWFkQ29sPlxyXG4gICAgICAgICAgICAgICAgPGRpdj48c3Bhbj57eyBjb2wubGFiZWwgfX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2hlYWRlckl0ZW1UZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnNvcnRhYmxlOyBlbHNlIGRlZmF1bHRIZWFkQ29sXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzcy50aC13cmFwcGVyXT1cInNvcnRhYmxlXCIgKGNsaWNrKT1cIm9uU29ydENvbHVtbihjb2wubmFtZSwgY29sLnNvcnRhYmxlKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sLnRlbXBsYXRlSGVhZDsgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY29sdW1uU29ydGVkRGlyKGNvbC5uYW1lKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtcngtdGFibGVfX3NvcnQtaWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk00IDlMOCAxM0wxMiA5XCIgZmlsbD1cIiNEQUQ1Q0VcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTEyIDdMOCAzTDQgN1wiIGZpbGw9XCIjREFENUNFXCIvPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEhlYWRDb2w+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sLnRlbXBsYXRlSGVhZDsgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbCwgaW5kZXgsIGZpcnN0LCBsYXN0IH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC90aD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvdGhlYWQ+XHJcblxyXG4gICAgICAgIDx0Ym9keT5cclxuICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGRhdGFJdGVtIG9mIGRhdGE7IGxldCBpbmRleCA9IGluZGV4OyBsZXQgZmlyc3QgPSBmaXJzdDsgbGV0IGxhc3QgPSBsYXN0XCIgW2NsYXNzLi1ob3ZlcmVkXT1cImhvdmVyZWRcIj5cclxuICAgICAgICAgIDx0ZFxyXG4gICAgICAgICAgICAjdGFibGVURFxyXG4gICAgICAgICAgICBjbGFzcz1cInAtMFwiXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2wgb2YgY29udGVudENoaWxkcmVuXCJcclxuICAgICAgICAgICAgW2NsYXNzXT1cImNvbC5jdXN0b21DbGFzc2VzXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICBjbGFzcz1cImxpbmstd3JhcHBlciB0ZC1jb250ZW50LXdyYXBwZXJcIlxyXG4gICAgICAgICAgICAgIFtocmVmXT1cImdldExpbmtGb3JTdHJva2UobGluaywgZGF0YUl0ZW0pXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cImxpbmsgJiYgY29sWydpc0xpbmsnXTsgZWxzZSBkZWZhdWx0VGVtcGxhdGVcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2wudGVtcGxhdGVDZWxsOyBlbHNlIGJvZHlJdGVtVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTIgaC0xMDBcIj57eyBkYXRhSXRlbVtjb2wubmFtZV0gfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNib2R5SXRlbVRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbC50ZW1wbGF0ZUNlbGw7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2wsIHJvdzogZGF0YUl0ZW0sIGluZGV4LCBmaXJzdCwgbGFzdCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9hPlxyXG5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0VGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2wudGVtcGxhdGVDZWxsOyBlbHNlIGJvZHlJdGVtVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZC1jb250ZW50LXdyYXBwZXIgcC0yIGgtMTAwXCI+e3sgZGF0YUl0ZW1bY29sLm5hbWVdIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjYm9keUl0ZW1UZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZC1jb250ZW50LXdyYXBwZXIgaC0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sLnRlbXBsYXRlQ2VsbDsgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbCwgcm93OiBkYXRhSXRlbSwgaW5kZXgsIGZpcnN0LCBsYXN0IH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8L3RkPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC90Ym9keT5cclxuICAgICAgPC90YWJsZT5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtcngtdGFibGVfX3Jlc3VsdC1tZXNzYWdlXCIgKm5nSWY9XCIhZGF0YS5sZW5ndGhcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZW1wdHlSZXN1bHRNc2cgPyBlbXB0eVJlc3VsdE1zZ1RlbXBsYXRlRGVmYXVsdCA6IGVtcHR5UmVzdWx0TXNnVGVtcGxhdGVcIj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwibXJ4LXRhYmxlX19vdmVybGF5XCIgW0B2aXNpYmxlTG9hZGluZ109XCJpc0xvYWRpbmcgPyAnaW4nIDogJ291dCdcIiBbbmdDbGFzc109XCJ7J29wZW4nOiBpc0xvYWRpbmd9XCIgPlxyXG4gICAgICAgIDxtcngtbG9hZGVyIHNpemU9XCJsYXJnZVwiIGNvbG9yPVwiYnJhbmRcIj48L21yeC1sb2FkZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm1yeC10YWJsZV9fd3JhcHBlclwiICpuZ1N3aXRjaENhc2U9XCInY2FyZHMnXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGF0YTsgbGV0IGluZGV4ID0gaW5kZXg7IGxldCBmaXJzdCA9IGZpcnN0OyBsZXQgbGFzdCA9IGxhc3RcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGVDYXJkOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogaXRlbSwgaW5kZXgsIGZpcnN0LCBsYXN0IH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwibXJ4LXRhYmxlX19yZXN1bHQtbWVzc2FnZS0tc3Vic3RyYXRlXCIgKm5nSWY9XCIhZGF0YS5sZW5ndGhcIiA+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVtcHR5UmVzdWx0TXNnID8gZW1wdHlSZXN1bHRNc2dUZW1wbGF0ZURlZmF1bHQgOiBlbXB0eVJlc3VsdE1zZ1RlbXBsYXRlXCI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1yeC10YWJsZV9fb3ZlcmxheVwiIFtAdmlzaWJsZUxvYWRpbmddPVwiaXNMb2FkaW5nID8gJ2luJyA6ICdvdXQnXCIgW25nQ2xhc3NdPVwieydvcGVuJzogaXNMb2FkaW5nfVwiID5cclxuICAgICAgICA8bXJ4LWxvYWRlciBzaXplPVwibGFyZ2VcIiBjb2xvcj1cImJyYW5kXCI+PC9tcngtbG9hZGVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJtcngtdGFibGVfX3BhZ2luYXRvciBwdC0yIHBiLTJcIiBbY2xhc3MubXJ4LXRhYmxlX19wYWdpbmF0b3ItLXN1YnN0cmF0ZV09XCJwYWdpbmF0b3JTZXR0aW5ncy5zdWJzdHJhdGVcIiAqbmdJZj1cInRvdGFsXCI+XHJcbiAgPG1yeC1wYWdpbmF0b3JcclxuICAgICpuZ0lmPVwicGFnZWFibGVcIlxyXG4gICAgW3RvdGFsXT1cInRvdGFsXCJcclxuICAgIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXHJcbiAgICBbcG9zaXRpb25dPVwicGFnZWFibGUucG9zaXRpb25cIlxyXG4gICAgW3BhZ2VTaXplc109XCJwYWdlYWJsZS5wYWdlU2l6ZXNcIlxyXG4gICAgW2N1cnJlbnRQYWdlXT1cImN1cnJlbnRQYWdlXCJcclxuICAgIFt3aXRoUGFnZVNpemVdPVwicGFnZWFibGUud2l0aFBhZ2VTaXplXCJcclxuICAgIChkYXRhU3RhdGVDaGFuZ2VkKT1cIm9uRGF0YVN0YXRlUGFnaW5hdG9yQ2hhbmdlZCgkZXZlbnQpXCI+XHJcbiAgPC9tcngtcGFnaW5hdG9yPlxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY291bnRlclRlbXBsYXRlPlxyXG4gIDxzcGFuIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiICpuZ0lmPVwiaGVhZGVyU2V0dGluZ3M/LmNvdW50XCI+XHJcbiAgICB7eyB0b3RhbCB9fSB7e2hlYWRlclNldHRpbmdzPy5jb3VudFRleHQgfHwgJ9C90L7QstC+0YHRgtC10LknfX1cclxuICA8L3NwYW4+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3NvcnRUZW1wbGF0ZT5cclxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG1yeC10YWJsZS1zb3J0XCIgKm5nSWY9XCJoZWFkZXJTZXR0aW5ncz8uc29ydFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1yeC10YWJsZS1zb3J0LXNjYWxlXCIgKGNsaWNrKT1cImNoYW5nZVNvcnQoKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cIm1yeC10YWJsZS1zb3J0LXNjYWxlX190aXRsZVwiPtCh0L7RgNGC0LjRgNC+0LLQsNGC0Ywg0L/Qvjo8L3NwYW4+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtcngtdGFibGUtc29ydC1zY2FsZV9faWNvblwiPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwic29ydD8uZGlyID09PSAnZGVzYydcIiBjbGFzcz1cIm1yeC1pY29uIGljb24tc29ydGluZy1kb3duIGljb24tZm9udC0xNlwiPjwvc3Bhbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cInNvcnQ/LmRpciA9PT0gJ2FzYydcIiBjbGFzcz1cIm1yeC1pY29uIGljb24tc29ydGluZy11cCBpY29uLWZvbnQtMTZcIj48L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmctc2VsZWN0XHJcbiAgICAgIGJpbmRMYWJlbD1cInNvcnRMYWJlbFwiXHJcbiAgICAgIGJpbmRWYWx1ZT1cIm5hbWVcIlxyXG4gICAgICBbaXRlbXNdPVwiY29sQXJyYXlcIlxyXG4gICAgICBbbmdNb2RlbF09XCJzZWxlY3RlZFNvcnRcIlxyXG4gICAgICAoY2hhbmdlKT1cInVwZGF0ZVNvcnRTZWxlY3QoJGV2ZW50KVwiXHJcbiAgICAgIFtjbGVhcmFibGVdPVwiZmFsc2VcIlxyXG4gICAgICBbc2VhcmNoYWJsZV09XCJmYWxzZVwiXHJcbiAgICAgIFtjbG9zZU9uU2VsZWN0XT1cInRydWVcIlxyXG4gICAgPjwvbmctc2VsZWN0PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNkb3dubG9hZFRlbXBsYXRlPlxyXG4gIDxkaXYgY2xhc3M9XCJtcngtdGFibGUtZG93bmxvYWRcIiAoY2xpY2spPVwiY2xpY2tUb0Rvd25sb2FkKCRldmVudClcIiAqbmdJZj1cImhlYWRlclNldHRpbmdzPy5kb3dubG9hZFwiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJkZXNrdG9wXCI+0KHQutCw0YfQsNGC0Ywg0LTQsNC90L3Ri9C1PC9zcGFuPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWRvd25sb2FkIGljb24tZm9udC0yNFwiPjwvc3Bhbj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdG9nZ2xlVGVtcGxhdGU+XHJcbiAgPGRpdiBjbGFzcz1cIm1yeC10YWJsZS10b2dnbGVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtcngtdGFibGUtdG9nZ2xlLS1pdGVtIG1yLTFcIiAoY2xpY2spPVwib25DaGFuZ2VUeXBlVGFibGUoJ2NhcmRzJylcIiBbY2xhc3MuYWN0aXZlXT1cInR5cGUgPT09ICdjYXJkcydcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWNhcmRzLXZpZXcgaWNvbi1mb250LTI0XCI+PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibXJ4LXRhYmxlLXRvZ2dsZS0taXRlbVwiIChjbGljayk9XCJvbkNoYW5nZVR5cGVUYWJsZSgnZGVmYXVsdCcpXCIgW2NsYXNzLmFjdGl2ZV09XCJ0eXBlID09PSAnZGVmYXVsdCdcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLXRhYmxlLXZpZXcgaWNvbi1mb250LTI0XCI+PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2VtcHR5UmVzdWx0TXNnVGVtcGxhdGVEZWZhdWx0PlxyXG4gIHt7ZW1wdHlSZXN1bHRNc2d9fVxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
274
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBR1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFnRyxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDM0ksT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRXZFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBR3hFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7O0FBdUJ4RixNQUFNLE9BQU8sY0FBYztJQTBETDtJQXpEYixRQUFRLEdBQXNCLEVBQUUsQ0FBQztJQUNqQyxRQUFRLEdBQXlCLG9CQUFvQixDQUFDO0lBQ3RELFlBQVksR0FBRyxFQUFFLENBQUE7SUFDakIsSUFBSSxHQUFHLEtBQUssQ0FBQTtJQUVlLGVBQWUsQ0FBOEI7SUFDakQsWUFBWSxDQUFvQjtJQUN0QixzQkFBc0IsQ0FBb0I7SUFFekUsSUFBSSxHQUFjLFNBQVMsQ0FBQztJQUM1QixJQUFJLENBQW1CO0lBQ3ZCLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDZCxXQUFXLEdBQUcsQ0FBQyxDQUFDO0lBQ2hCLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDVixJQUFJLEdBQUcs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c0JBQXJCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbnRlbnRDaGlsZCxcclxuICBDb250ZW50Q2hpbGRyZW4sXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBRdWVyeUxpc3QsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRlbnRTZXR0aW5ncywgSGVhZGVyU2V0dGluZ3MsIFBhZ2luYXRvclNldHRpbmdzLCBTb3J0RGVzY3JpcHRvciwgVGFibGVCb2R5SXRlbSwgVGFibGVUeXBlLCBUYWJsZVR5cGVFbnVtIH0gZnJvbSAnLi90YWJsZS5lbnVtJztcclxuaW1wb3J0IHsgQ29sdW1uQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NvbHVtbi9jb2x1bW4uY29tcG9uZW50JztcclxuaW1wb3J0IHsgUGFnZXJTZXR0aW5ncyB9IGZyb20gJy4vbW9kZWxzL3BhZ2VyLXNldHRpbmdzJztcclxuaW1wb3J0IHsgRGVmYXVsdFBhZ2VyU2V0dGluZ3MgfSBmcm9tICcuL2RlZmF1bHQvZGVmYXVsdC1wYWdlci1zZXR0aW5ncyc7XHJcbmltcG9ydCB7IERhdGFTdGF0ZUNoYW5nZUV2ZW50IH0gZnJvbSAnLi9tb2RlbHMvZGF0YS1zdGF0ZS1jaGFuZ2UuZXZlbnQnO1xyXG5pbXBvcnQgeyBQYWdpbmF0ZU91dHB1dE9iamVjdCB9IGZyb20gJy4uL3BhZ2luYXRvci9wYWdpbmF0b3IuZW51bSc7XHJcbmltcG9ydCB7IGFuaW1hdGUsIGdyb3VwLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbXJ4LXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLmNvbXBvbmVudC5sZXNzJ10sXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgdHJpZ2dlcigndmlzaWJsZUxvYWRpbmcnLCBbXHJcbiAgICAgIHN0YXRlKCdpbicsIHN0eWxlKHsgb3BhY2l0eTogMSwgdmlzaWJpbGl0eTogJ3Zpc2libGUnIH0pKSxcclxuICAgICAgc3RhdGUoJ291dCcsIHN0eWxlKHsgb3BhY2l0eTogMCwgdmlzaWJpbGl0eTogJ2hpZGRlbicgfSkpLFxyXG4gICAgICB0cmFuc2l0aW9uKCdpbiA9PiBvdXQnLCBbZ3JvdXAoW1xyXG4gICAgICAgIGFuaW1hdGUoJzMwMG1zIGVhc2UtaW4tb3V0Jywgc3R5bGUoeyBvcGFjaXR5OiAwIH0pKSxcclxuICAgICAgICBhbmltYXRlKCczMDBtcyBlYXNlLWluLW91dCcsIHN0eWxlKHsgdmlzaWJpbGl0eTogJ2hpZGRlbicgfSkpXHJcbiAgICAgIF1cclxuICAgICAgKV0pLFxyXG4gICAgICB0cmFuc2l0aW9uKCdvdXQgPT4gaW4nLCBbZ3JvdXAoW1xyXG4gICAgICAgIGFuaW1hdGUoJzFtcyBlYXNlLWluLW91dCcsIHN0eWxlKHsgdmlzaWJpbGl0eTogJ3Zpc2libGUnIH0pKSxcclxuICAgICAgICBhbmltYXRlKCczMDBtcyBlYXNlLWluLW91dCcsIHN0eWxlKHsgb3BhY2l0eTogMSB9KSlcclxuICAgICAgXVxyXG4gICAgICApXSlcclxuICAgIF0pXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcclxuICBwdWJsaWMgY29sQXJyYXk6IENvbHVtbkNvbXBvbmVudFtdID0gW107XHJcbiAgcHVibGljIHBhZ2VhYmxlOiBQYWdlclNldHRpbmdzIHwgbnVsbCA9IERlZmF1bHRQYWdlclNldHRpbmdzO1xyXG4gIHB1YmxpYyBzZWxlY3RlZFNvcnQgPSAnJ1xyXG4gIHB1YmxpYyBpbml0ID0gZmFsc2VcclxuXHJcbiAgQENvbnRlbnRDaGlsZHJlbihDb2x1bW5Db21wb25lbnQpIGNvbnRlbnRDaGlsZHJlbiE6IFF1ZXJ5TGlzdDxDb2x1bW5Db21wb25lbnQ+O1xyXG4gIEBDb250ZW50Q2hpbGQoJ3RlbXBsYXRlQ2FyZCcpIHRlbXBsYXRlQ2FyZCE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQENvbnRlbnRDaGlsZCgnZW1wdHlSZXN1bHRNc2dUZW1wbGF0ZScpIGVtcHR5UmVzdWx0TXNnVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBASW5wdXQoKSB0eXBlOiBUYWJsZVR5cGUgPSAnZGVmYXVsdCc7XHJcbiAgQElucHV0KCkgZGF0YSE6IFRhYmxlQm9keUl0ZW1bXTtcclxuICBASW5wdXQoKSBwYWdlU2l6ZSA9IDIwO1xyXG4gIEBJbnB1dCgpIGN1cnJlbnRQYWdlID0gMTtcclxuICBASW5wdXQoKSB0b3RhbCA9IDA7XHJcbiAgQElucHV0KCkgbGluayA9ICcnO1xyXG4gIEBJbnB1dCgpIGlzTG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBzb3J0OiBTb3J0RGVzY3JpcHRvciB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSB0cmFja0J5SWQgPSAnaWQnO1xyXG4gIEBJbnB1dCgpIHNvcnRhYmxlID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzdHJpcGVkID0gdHJ1ZTtcclxuICBASW5wdXQoKSBjdXN0b21DbGFzc2VzID0gJydcclxuICBASW5wdXQoKSBlbXB0eVJlc3VsdE1zZyA9ICcnXHJcbiAgQElucHV0KCkgaG92ZXJlZCA9IHRydWU7XHJcblxyXG4gIEBJbnB1dCgpIGF1dG9IZWlnaHQgPSB0cnVlIC8vIGRlcHJlY2F0ZWRcclxuXHJcbiAgQElucHV0KCkgaGVhZGVyU2V0dGluZ3M6IEhlYWRlclNldHRpbmdzIHwgdW5kZWZpbmVkXHJcblxyXG4gIEBJbnB1dCgpIGNvbnRlbnRTZXR0aW5nczogQ29udGVudFNldHRpbmdzID0ge1xyXG4gICAgc3Vic3RyYXRlOiBmYWxzZVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgcGFnaW5hdG9yU2V0dGluZ3M6IFBhZ2luYXRvclNldHRpbmdzID0ge1xyXG4gICAgc3Vic3RyYXRlOiBmYWxzZVxyXG4gIH1cclxuXHJcbiAgLy8g0J/RgNC+0LLQtdGA0LjRgtGMINC4INCy0YvRgNC10LfQsNGC0YxcclxuICBwdWJsaWMgc2VsZWN0ZWRJdGVtID0gMVxyXG5cclxuICBASW5wdXQoJ3BhZ2VhYmxlJylcclxuICBwdWJsaWMgc2V0IHNldFBhZ2VhYmxlKHZhbHVlOiBQYWdlclNldHRpbmdzIHwgYm9vbGVhbikge1xyXG4gICAgaWYgKHZhbHVlID09PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMucGFnZWFibGUgPSBEZWZhdWx0UGFnZXJTZXR0aW5ncztcclxuICAgIH0gZWxzZSBpZiAodmFsdWUgPT09IGZhbHNlKSB7XHJcbiAgICAgIHRoaXMucGFnZWFibGUgPSBudWxsO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5wYWdlYWJsZSA9IHZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpIGRhdGFTdGF0ZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxEYXRhU3RhdGVDaGFuZ2VFdmVudD4gPVxyXG4gICAgbmV3IEV2ZW50RW1pdHRlcjxEYXRhU3RhdGVDaGFuZ2VFdmVudD4oKTtcclxuICBAT3V0cHV0KCkgZG93bmxvYWREYXRhOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKVxyXG4gIEBPdXRwdXQoKSBjaGFuZ2VUeXBlVGFibGU6IEV2ZW50RW1pdHRlcjxUYWJsZVR5cGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJsZVR5cGU+KClcclxuICBAT3V0cHV0KCkgY2hhbmdlOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5jb2xBcnJheSA9IHRoaXMuY29udGVudENoaWxkcmVuLnRvQXJyYXkoKTtcclxuXHJcbiAgICB0aGlzLmNvbEFycmF5LmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnNvcnQgJiYgdGhpcy5zb3J0LmNvbCA9PT0gaXRlbS5uYW1lKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFNvcnQgPSBpdGVtLm5hbWVcclxuICAgICAgfVxyXG4gICAgfSlcclxuXHJcbiAgICB0aGlzLmNvbEFycmF5ID0gdGhpcy5jb2xBcnJheS5maWx0ZXIoaXRlbSA9PiB7XHJcbiAgICAgIHJldHVybiBpdGVtLm5hbWUgIT09ICcnICYmIGl0ZW0uc29ydExhYmVsXHJcbiAgICB9KVxyXG5cclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpXHJcbiAgICB0aGlzLmluaXQgPSB0cnVlXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGdldENsYXNzZXMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHsgVGFibGVUeXBlRW51bVt0aGlzLnR5cGVdIH0gJHsgdGhpcy5jdXN0b21DbGFzc2VzIH1gO1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIsIGl0ZW06IGFueSk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gaXRlbVt0aGlzLnRyYWNrQnlJZF07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2hhbmdlU29ydCgpIHtcclxuICAgIGNvbnN0IG5ld0V2ZW50RGF0YTogRGF0YVN0YXRlQ2hhbmdlRXZlbnQgPSB7IHBhZ2U6IHRoaXMuY3VycmVudFBhZ2UsIHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplIH07XHJcblxyXG4gICAgaWYgKCF0aGlzLmNvbEFycmF5Lmxlbmd0aCkge1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zb3J0KSB7XHJcbiAgICAgIG5ld0V2ZW50RGF0YS5zb3J0ID0ge1xyXG4gICAgICAgIGRpcjogdGhpcy5zb3J0LmRpciA9PT0gJ2Rlc2MnID8gJ2FzYycgOiAnZGVzYycsXHJcbiAgICAgICAgY29sOiB0aGlzLnNvcnQuY29sXHJcbiAgICAgIH07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBuZXdFdmVudERhdGEuc29ydCA9IHtcclxuICAgICAgICBkaXI6ICdhc2MnLFxyXG4gICAgICAgIGNvbDogdGhpcy5jb2xBcnJheVswXS5uYW1lXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kYXRhU3RhdGVDaGFuZ2VkLmVtaXQobmV3RXZlbnREYXRhKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjb2x1bW5Tb3J0ZWREaXIoY29sdW1uOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKHRoaXMuc29ydCAmJiB0aGlzLnNvcnQuY29sID09IGNvbHVtbiAmJiB0aGlzLnNvcnQuZGlyKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnNvcnQuZGlyO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uU29ydENvbHVtbihjb2x1bW46IHN0cmluZywgc29ydGFibGU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlmICghc29ydGFibGUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG5ld0V2ZW50RGF0YTogRGF0YVN0YXRlQ2hhbmdlRXZlbnQgPSB7IHBhZ2U6IHRoaXMuY3VycmVudFBhZ2UsIHBhZ2VTaXplOiB0aGlzLnBhZ2VTaXplIH07XHJcblxyXG4gICAgaWYgKHRoaXMuc29ydCAmJiB0aGlzLnNvcnQuY29sID09IGNvbHVtbikge1xyXG4gICAgICBpZiAodGhpcy5zb3J0LmRpciAmJiB0aGlzLnNvcnQuZGlyID09PSAnYXNjJykge1xyXG4gICAgICAgIG5ld0V2ZW50RGF0YS5zb3J0ID0geyBkaXI6ICdkZXNjJywgY29sOiBjb2x1bW4gfTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbmV3RXZlbnREYXRhLnNvcnQgPSB7IGRpcjogJ2FzYycsIGNvbDogY29sdW1uIH07XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kYXRhU3RhdGVDaGFuZ2VkLmVtaXQobmV3RXZlbnREYXRhKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbGlja1RvRG93bmxvYWQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmRvd25sb2FkRGF0YS5lbWl0KGV2ZW50KVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHVwZGF0ZVNvcnRTZWxlY3QodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgbmV3RXZlbnREYXRhOiBEYXRhU3RhdGVDaGFuZ2VFdmVudCA9IHtcclxuICAgICAgcGFnZTogdGhpcy5jdXJyZW50UGFnZSxcclxuICAgICAgcGFnZVNpemU6IHRoaXMucGFnZVNpemUsXHJcbiAgICAgIHNvcnQ6IHtcclxuICAgICAgICBjb2w6IHZhbHVlLm5hbWUsXHJcbiAgICAgICAgZGlyOiB0aGlzLnNvcnQ/LmRpclxyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuZGF0YVN0YXRlQ2hhbmdlZC5lbWl0KG5ld0V2ZW50RGF0YSlcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkRhdGFTdGF0ZVBhZ2luYXRvckNoYW5nZWQocGFnaW5hdGlvbjogUGFnaW5hdGVPdXRwdXRPYmplY3QpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5ld0V2ZW50RGF0YTogRGF0YVN0YXRlQ2hhbmdlRXZlbnQgPSB7XHJcbiAgICAgIHBhZ2U6IHBhZ2luYXRpb24uY3VycmVudFBhZ2UsXHJcbiAgICAgIHBhZ2VTaXplOiBwYWdpbmF0aW9uLnBhZ2VTaXplXHJcbiAgICB9O1xyXG5cclxuICAgIGlmICh0aGlzLnNvcnQgJiYgdGhpcy5zb3J0LmNvbCAmJiB0aGlzLnNvcnQuZGlyKSB7XHJcbiAgICAgIG5ld0V2ZW50RGF0YS5zb3J0ID0geyBkaXI6IHRoaXMuc29ydC5kaXIsIGNvbDogdGhpcy5zb3J0LmNvbCB9O1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGF0YVN0YXRlQ2hhbmdlZC5lbWl0KG5ld0V2ZW50RGF0YSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0TGlua0ZvclN0cm9rZShsaW5rOiBzdHJpbmcsIGRhdGFJdGVtOiBUYWJsZUJvZHlJdGVtKSB7XHJcbiAgICAvLyDRgNC10LPRg9C70Y/RgNC60LhcclxuICAgIGNvbnN0IHJlZ0V4cFBhcmFtcyA9IC8oPzw9XFxbKVteXFxzXFxbXFxdXSsoPz1dKS9naTtcclxuICAgIC8vINC+0YHQvdC+0LLQvdC+0Lkg0LzQsNGB0YHQuNCyXHJcbiAgICBjb25zdCBsaW5rQXJyYXkgPSBsaW5rLnNwbGl0KCc/JylcclxuICAgIC8vINC80LDRgdGB0LjQstGLINGB0YLRgNC+0LogdXJsINC4INC/0LDRgNCw0LzQtdGC0YDQvtCyXHJcbiAgICBjb25zdCBhcnJheVVybCA9IGxpbmtBcnJheVswXT8uc3BsaXQoJy8nKVxyXG4gICAgY29uc3Qgc2VhcmNoUGFyYW1zID0gbGlua0FycmF5WzFdPy5zcGxpdCgnJicpXHJcbiAgICBjb25zdCBzZWFyY2hQYXJhbXNPYmogPSBzZWFyY2hQYXJhbXM/Lm1hcCgoc3RyKSA9PiB7XHJcbiAgICAgIGNvbnN0IHN0clBhcmFtRGF0YSA9IHN0ci5zcGxpdCgnPScpWzFdLm1hdGNoKHJlZ0V4cFBhcmFtcylcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBuYW1lOiBzdHIuc3BsaXQoJz0nKVswXSxcclxuICAgICAgICBkYXRhOiBzdHJQYXJhbURhdGEgPyBzdHJQYXJhbURhdGFbMF0gOiBzdHIuc3BsaXQoJz0nKVswXSxcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIC8vIGNvbnN0IGFycmF5UGFyYW1zID0gbGlua0FycmF5WzFdPy5tYXRjaChyZWdFeHBQYXJhbXMpXHJcblxyXG4gICAgLy8g0L7QsdGA0LDQsdC+0YLQutCwINGC0LXQu9CwIHVybFxyXG4gICAgY29uc3Qgc3RyVXJsID0gYXJyYXlVcmwubWFwKChzdHIpID0+IHtcclxuICAgICAgaWYgKHN0ci5tYXRjaChyZWdFeHBQYXJhbXMpKSB7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIHJldHVybiBkYXRhSXRlbVtzdHIubWF0Y2gocmVnRXhwUGFyYW1zKVswXV1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gc3RyXHJcbiAgICAgIH1cclxuICAgIH0pLmpvaW4oJy8nKVxyXG4gICAgLy8g0L7QsdGA0LDQsdC+0YLQutCwINC/0LDRgNCw0LzQtdGC0YDQvtCyXHJcbiAgICAvLyDQtdGB0LvQuCDQtdGB0YLRjCDQv9Cw0YDQsNC80LXRgtGA0YsgLSDQstC+0LfQstGA0LDRidCw0LXQvCDQuNGFINGB0YLRgNC+0LrQvtC5INGBINC00LjQvdCw0LzQuNGH0LXRgdC60LjQvNC4INC/0LDRgNCw0LzQtdGC0YDQsNC80LhcclxuXHJcbiAgICBjb25zdCBzdHJQYXJhbXMgPSBzZWFyY2hQYXJhbXNPYmogPyBzZWFyY2hQYXJhbXNPYmoubWFwKChwYXJhbSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICByZXR1cm4gYCR7IGluZGV4ID4gMCA/ICcnIDogJz8nIH0keyBwYXJhbS5uYW1lIH09JHsgZGF0YUl0ZW1bcGFyYW0uZGF0YV0gfWBcclxuICAgIH0pLmpvaW4oJyYnKSA6ICcnXHJcblxyXG4gICAgLy8gY29uc3Qgc3RyUGFyYW1zID0gYXJyYXlQYXJhbXMgPyBhcnJheVBhcmFtcy5tYXAoKHN0ciwgaW5kZXgpID0+IHtcclxuICAgIC8vICAgcmV0dXJuIGAke2luZGV4ID4gMCA/ICcnIDogJz8nfSR7c3RyfT0ke2RhdGFJdGVtW3N0cl19YFxyXG4gICAgLy8gfSkuam9pbignJicpIDogJydcclxuXHJcbiAgICByZXR1cm4gYCR7IHN0clVybCB9JHsgc3RyUGFyYW1zIH1gXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25DaGFuZ2VUeXBlVGFibGUodHlwZTogVGFibGVUeXBlKTogdm9pZCB7XHJcbiAgICB0aGlzLmNoYW5nZVR5cGVUYWJsZS5lbWl0KHR5cGUpXHJcbiAgfVxyXG5cclxuICAvLyBwdWJsaWMgZ2V0SGVpZ2h0Rm9yVEQodGFibGVURDogSFRNTEVsZW1lbnQpIHtcclxuICAvLyAgIHJldHVybiB0YWJsZVRELnNjcm9sbEhlaWdodFxyXG4gIC8vIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibXJ4LXRhYmxlXCIgW2NsYXNzXT1cImdldENsYXNzZXNcIiBbY2xhc3MubWItM109XCJwYWdlYWJsZVwiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJoZWFkZXJTZXR0aW5nc1wiPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cIm1yeC10YWJsZS1jYXJkLWhlYWRlciBwdC0yIHBiLTIgbWItM1wiXHJcbiAgICAgIFtjbGFzcy5tcngtdGFibGUtY2FyZC1oZWFkZXItLXN1YnN0cmF0ZV09XCJoZWFkZXJTZXR0aW5ncy5zdWJzdHJhdGVcIlxyXG4gICAgICAqbmdJZj1cImhlYWRlclNldHRpbmdzLnR5cGUgPT09ICdkZWZhdWx0J1wiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cIm1yeC10YWJsZS1jYXJkLWhlYWRlci0tbGVmdCBjb2wgY29sLTEyIGNvbC1tZC02IG1iLTEgbWItbWQtMCBkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY291bnRlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtcngtdGFibGUtY2FyZC1oZWFkZXItLXJpZ2h0IGNvbCBjb2wtMTIgY29sLW1kLTYgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgYWxpZ24tY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzb3J0VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtbC00XCIgKm5nSWY9XCJoZWFkZXJTZXR0aW5ncy50b2dnbGVcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRvZ2dsZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwibXJ4LXRhYmxlLWNhcmQtaGVhZGVyIG1iLTMgcHQtMiBwYi0yXCJcclxuICAgICAgW2NsYXNzLm1yeC10YWJsZS1jYXJkLWhlYWRlci0tc3Vic3RyYXRlXT1cImhlYWRlclNldHRpbmdzLnN1YnN0cmF0ZVwiXHJcbiAgICAgICpuZ0lmPVwiaGVhZGVyU2V0dGluZ3MudHlwZSA9PT0gJ3NlY29uZCdcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJtcngtdGFibGUtY2FyZC1oZWFkZXItLWxlZnQgY29sIGNvbC0xMiBjb2wtc20tNiBtYi0xIG1iLXNtLTAgZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNvcnRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LXRhYmxlLWNhcmQtaGVhZGVyLS1yaWdodCBjb2wgY29sLTEyIGNvbC1zbS02IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGFsaWduLWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZG93bmxvYWRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJ0eXBlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibXJ4LXRhYmxlX193cmFwcGVyXCIgKm5nU3dpdGNoQ2FzZT1cIidkZWZhdWx0J1wiXHJcbiAgICAgICAgIFtjbGFzcy5tcngtdGFibGVfX3dyYXBwZXItLXN1YnN0cmF0ZV09XCJjb250ZW50U2V0dGluZ3Muc3Vic3RyYXRlXCI+XHJcbiAgICAgIDx0YWJsZVxyXG4gICAgICAgIFtjbGFzcy50YWJsZS1zdHJpcGVkXT1cInN0cmlwZWRcIlxyXG4gICAgICAgIFtjbGFzcy50YWJsZS1zb2xpZF09XCIhc3RyaXBlZFwiXHJcbiAgICAgICAgW2NsYXNzLm10LTJdPVwiY29udGVudFNldHRpbmdzLnN1YnN0cmF0ZVwiXHJcbiAgICAgICAgW2NsYXNzLm1iLTNdPVwiY29udGVudFNldHRpbmdzLnN1YnN0cmF0ZSAmJiBkYXRhLmxlbmd0aFwiXHJcbiAgICAgID5cclxuICAgICAgICA8dGhlYWQgW2NsYXNzLnRhYmxlLWhlYWQtZ3JheV09XCIhaGVhZGVyU2V0dGluZ3MgfHwgaGVhZGVyU2V0dGluZ3MuYmFja2dyb3VuZFwiPlxyXG4gICAgICAgIDx0cj5cclxuICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbnRlbnRDaGlsZHJlbjsgbGV0IGluZGV4ID0gaW5kZXg7IGxldCBmaXJzdCA9IGZpcnN0OyBsZXQgbGFzdCA9IGxhc3Q7IHRyYWNrQnk6IHRyYWNrQnlGblwiIFtjbGFzc109XCJjb2wuY3VzdG9tQ2xhc3Nlc1wiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNvbC50ZW1wbGF0ZUhlYWQ7IGVsc2UgaGVhZGVySXRlbVRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbC5zb3J0YWJsZTsgZWxzZSBkZWZhdWx0SGVhZENvbFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBbY2xhc3MudGgtd3JhcHBlcl09XCJzb3J0YWJsZVwiIChjbGljayk9XCJvblNvcnRDb2x1bW4oY29sLm5hbWUsIGNvbC5zb3J0YWJsZSlcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgY29sLmxhYmVsIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNvbHVtblNvcnRlZERpcihjb2wubmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXJ4LXRhYmxlX19zb3J0LWljb25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNNCA5TDggMTNMMTIgOVwiIGZpbGw9XCIjREFENUNFXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk0xMiA3TDggM0w0IDdcIiBmaWxsPVwiI0RBRDVDRVwiLz5cclxuICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRIZWFkQ29sPlxyXG4gICAgICAgICAgICAgICAgPGRpdj48c3Bhbj57eyBjb2wubGFiZWwgfX08L3NwYW4+PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2hlYWRlckl0ZW1UZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sLnNvcnRhYmxlOyBlbHNlIGRlZmF1bHRIZWFkQ29sXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IFtjbGFzcy50aC13cmFwcGVyXT1cInNvcnRhYmxlXCIgKGNsaWNrKT1cIm9uU29ydENvbHVtbihjb2wubmFtZSwgY29sLnNvcnRhYmxlKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sLnRlbXBsYXRlSGVhZDsgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgIDxzdmdcclxuICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY29sdW1uU29ydGVkRGlyKGNvbC5uYW1lKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtcngtdGFibGVfX3NvcnQtaWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk00IDlMOCAxM0wxMiA5XCIgZmlsbD1cIiNEQUQ1Q0VcIi8+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbC1ydWxlPVwiZXZlbm9kZFwiIGNsaXAtcnVsZT1cImV2ZW5vZGRcIiBkPVwiTTEyIDdMOCAzTDQgN1wiIGZpbGw9XCIjREFENUNFXCIvPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEhlYWRDb2w+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sLnRlbXBsYXRlSGVhZDsgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbCwgaW5kZXgsIGZpcnN0LCBsYXN0IH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC90aD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvdGhlYWQ+XHJcblxyXG4gICAgICAgIDx0Ym9keT5cclxuICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGRhdGFJdGVtIG9mIGRhdGE7IGxldCBpbmRleCA9IGluZGV4OyBsZXQgZmlyc3QgPSBmaXJzdDsgbGV0IGxhc3QgPSBsYXN0XCIgW2NsYXNzLi1ob3ZlcmVkXT1cImhvdmVyZWRcIj5cclxuICAgICAgICAgIDx0ZFxyXG4gICAgICAgICAgICAjdGFibGVURFxyXG4gICAgICAgICAgICBjbGFzcz1cInAtMFwiXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2wgb2YgY29udGVudENoaWxkcmVuXCJcclxuICAgICAgICAgICAgW2NsYXNzXT1cImNvbC5jdXN0b21DbGFzc2VzXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICBjbGFzcz1cImxpbmstd3JhcHBlciB0ZC1jb250ZW50LXdyYXBwZXJcIlxyXG4gICAgICAgICAgICAgIFtocmVmXT1cImdldExpbmtGb3JTdHJva2UobGluaywgZGF0YUl0ZW0pXCJcclxuICAgICAgICAgICAgICAqbmdJZj1cImxpbmsgJiYgY29sWydpc0xpbmsnXTsgZWxzZSBkZWZhdWx0VGVtcGxhdGVcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2wudGVtcGxhdGVDZWxsOyBlbHNlIGJvZHlJdGVtVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTIgaC0xMDBcIj57eyBkYXRhSXRlbVtjb2wubmFtZV0gfX08L2Rpdj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNib2R5SXRlbVRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbC50ZW1wbGF0ZUNlbGw7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2wsIHJvdzogZGF0YUl0ZW0sIGluZGV4LCBmaXJzdCwgbGFzdCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9hPlxyXG5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0VGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2wudGVtcGxhdGVDZWxsOyBlbHNlIGJvZHlJdGVtVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZC1jb250ZW50LXdyYXBwZXIgcC0yIGgtMTAwXCI+e3sgZGF0YUl0ZW1bY29sLm5hbWVdIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjYm9keUl0ZW1UZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZC1jb250ZW50LXdyYXBwZXIgaC0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29sLnRlbXBsYXRlQ2VsbDsgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbCwgcm93OiBkYXRhSXRlbSwgaW5kZXgsIGZpcnN0LCBsYXN0IH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8L3RkPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC90Ym9keT5cclxuICAgICAgPC90YWJsZT5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtcngtdGFibGVfX3Jlc3VsdC1tZXNzYWdlXCIgKm5nSWY9XCIhZGF0YS5sZW5ndGhcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZW1wdHlSZXN1bHRNc2cgPyBlbXB0eVJlc3VsdE1zZ1RlbXBsYXRlRGVmYXVsdCA6IGVtcHR5UmVzdWx0TXNnVGVtcGxhdGVcIj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwibXJ4LXRhYmxlX19vdmVybGF5XCIgW0B2aXNpYmxlTG9hZGluZ109XCJpc0xvYWRpbmcgPyAnaW4nIDogJ291dCdcIiBbbmdDbGFzc109XCJ7J29wZW4nOiBpc0xvYWRpbmd9XCIgPlxyXG4gICAgICAgIDxtcngtbG9hZGVyIHNpemU9XCJsYXJnZVwiIGNvbG9yPVwiYnJhbmRcIj48L21yeC1sb2FkZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm1yeC10YWJsZV9fd3JhcHBlclwiICpuZ1N3aXRjaENhc2U9XCInY2FyZHMnXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGF0YTsgbGV0IGluZGV4ID0gaW5kZXg7IGxldCBmaXJzdCA9IGZpcnN0OyBsZXQgbGFzdCA9IGxhc3RcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGVDYXJkOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogaXRlbSwgaW5kZXgsIGZpcnN0LCBsYXN0IH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwibXJ4LXRhYmxlX19yZXN1bHQtbWVzc2FnZS0tc3Vic3RyYXRlXCIgKm5nSWY9XCIhZGF0YS5sZW5ndGhcIiA+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVtcHR5UmVzdWx0TXNnID8gZW1wdHlSZXN1bHRNc2dUZW1wbGF0ZURlZmF1bHQgOiBlbXB0eVJlc3VsdE1zZ1RlbXBsYXRlXCI+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1yeC10YWJsZV9fb3ZlcmxheVwiIFtAdmlzaWJsZUxvYWRpbmddPVwiaXNMb2FkaW5nID8gJ2luJyA6ICdvdXQnXCIgW25nQ2xhc3NdPVwieydvcGVuJzogaXNMb2FkaW5nfVwiID5cclxuICAgICAgICA8bXJ4LWxvYWRlciBzaXplPVwibGFyZ2VcIiBjb2xvcj1cImJyYW5kXCI+PC9tcngtbG9hZGVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJtcngtdGFibGVfX3BhZ2luYXRvciBwdC0yIHBiLTJcIiBbY2xhc3MubXJ4LXRhYmxlX19wYWdpbmF0b3ItLXN1YnN0cmF0ZV09XCJwYWdpbmF0b3JTZXR0aW5ncy5zdWJzdHJhdGVcIiAqbmdJZj1cInRvdGFsXCI+XHJcbiAgPG1yeC1wYWdpbmF0b3JcclxuICAgICpuZ0lmPVwicGFnZWFibGVcIlxyXG4gICAgW3RvdGFsXT1cInRvdGFsXCJcclxuICAgIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXHJcbiAgICBbcG9zaXRpb25dPVwicGFnZWFibGUucG9zaXRpb25cIlxyXG4gICAgW3BhZ2VTaXplc109XCJwYWdlYWJsZS5wYWdlU2l6ZXNcIlxyXG4gICAgW2N1cnJlbnRQYWdlXT1cImN1cnJlbnRQYWdlXCJcclxuICAgIFt3aXRoUGFnZVNpemVdPVwicGFnZWFibGUud2l0aFBhZ2VTaXplXCJcclxuICAgIChkYXRhU3RhdGVDaGFuZ2VkKT1cIm9uRGF0YVN0YXRlUGFnaW5hdG9yQ2hhbmdlZCgkZXZlbnQpXCI+XHJcbiAgPC9tcngtcGFnaW5hdG9yPlxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY291bnRlclRlbXBsYXRlPlxyXG4gIDxzcGFuIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiICpuZ0lmPVwiaGVhZGVyU2V0dGluZ3M/LmNvdW50XCI+XHJcbiAgICB7eyB0b3RhbCB9fSB7e2hlYWRlclNldHRpbmdzPy5jb3VudFRleHQgfHwgJ9C90L7QstC+0YHRgtC10LknfX1cclxuICA8L3NwYW4+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3NvcnRUZW1wbGF0ZT5cclxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG1yeC10YWJsZS1zb3J0XCIgKm5nSWY9XCJoZWFkZXJTZXR0aW5ncz8uc29ydFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1yeC10YWJsZS1zb3J0LXNjYWxlXCIgKGNsaWNrKT1cImNoYW5nZVNvcnQoKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cIm1yeC10YWJsZS1zb3J0LXNjYWxlX190aXRsZVwiPtCh0L7RgNGC0LjRgNC+0LLQsNGC0Ywg0L/Qvjo8L3NwYW4+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtcngtdGFibGUtc29ydC1zY2FsZV9faWNvblwiPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwic29ydD8uZGlyID09PSAnZGVzYydcIiBjbGFzcz1cIm1yeC1pY29uIGljb24tc29ydGluZy1kb3duIGljb24tZm9udC0xNlwiPjwvc3Bhbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cInNvcnQ/LmRpciA9PT0gJ2FzYydcIiBjbGFzcz1cIm1yeC1pY29uIGljb24tc29ydGluZy11cCBpY29uLWZvbnQtMTZcIj48L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmctc2VsZWN0XHJcbiAgICAgIGJpbmRMYWJlbD1cInNvcnRMYWJlbFwiXHJcbiAgICAgIGJpbmRWYWx1ZT1cIm5hbWVcIlxyXG4gICAgICBbaXRlbXNdPVwiY29sQXJyYXlcIlxyXG4gICAgICBbbmdNb2RlbF09XCJzZWxlY3RlZFNvcnRcIlxyXG4gICAgICAoY2hhbmdlKT1cInVwZGF0ZVNvcnRTZWxlY3QoJGV2ZW50KVwiXHJcbiAgICAgIFtjbGVhcmFibGVdPVwiZmFsc2VcIlxyXG4gICAgICBbc2VhcmNoYWJsZV09XCJmYWxzZVwiXHJcbiAgICAgIFtjbG9zZU9uU2VsZWN0XT1cInRydWVcIlxyXG4gICAgPjwvbmctc2VsZWN0PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNkb3dubG9hZFRlbXBsYXRlPlxyXG4gIDxkaXYgY2xhc3M9XCJtcngtdGFibGUtZG93bmxvYWRcIiAoY2xpY2spPVwiY2xpY2tUb0Rvd25sb2FkKCRldmVudClcIiAqbmdJZj1cImhlYWRlclNldHRpbmdzPy5kb3dubG9hZFwiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJkZXNrdG9wXCI+0KHQutCw0YfQsNGC0Ywg0LTQsNC90L3Ri9C1PC9zcGFuPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWRvd25sb2FkIGljb24tZm9udC0yNFwiPjwvc3Bhbj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdG9nZ2xlVGVtcGxhdGU+XHJcbiAgPGRpdiBjbGFzcz1cIm1yeC10YWJsZS10b2dnbGVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtcngtdGFibGUtdG9nZ2xlLS1pdGVtIG1yLTFcIiAoY2xpY2spPVwib25DaGFuZ2VUeXBlVGFibGUoJ2NhcmRzJylcIiBbY2xhc3MuYWN0aXZlXT1cInR5cGUgPT09ICdjYXJkcydcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWNhcmRzLXZpZXcgaWNvbi1mb250LTI0XCI+PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibXJ4LXRhYmxlLXRvZ2dsZS0taXRlbVwiIChjbGljayk9XCJvbkNoYW5nZVR5cGVUYWJsZSgnZGVmYXVsdCcpXCIgW2NsYXNzLmFjdGl2ZV09XCJ0eXBlID09PSAnZGVmYXVsdCdcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLXRhYmxlLXZpZXcgaWNvbi1mb250LTI0XCI+PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2VtcHR5UmVzdWx0TXNnVGVtcGxhdGVEZWZhdWx0PlxyXG4gIHt7ZW1wdHlSZXN1bHRNc2d9fVxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=