@sebgroup/green-angular 6.1.1 → 6.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/src/v-angular/dropdown/dropdown-list/dropdown-list.component.mjs +2 -2
- package/esm2022/src/v-angular/dropdown/dropdown.component.mjs +16 -2
- package/esm2022/src/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.mjs +2 -2
- package/esm2022/src/v-angular/table/table.component.mjs +3 -3
- package/esm2022/src/v-angular/table/table.models.mjs +1 -1
- package/esm2022/v-angular/dropdown/dropdown-list/dropdown-list.component.mjs +2 -2
- package/esm2022/v-angular/dropdown/dropdown.component.mjs +16 -2
- package/esm2022/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.mjs +2 -2
- package/esm2022/v-angular/table/table.component.mjs +3 -3
- package/esm2022/v-angular/table/table.models.mjs +1 -1
- package/fesm2022/sebgroup-green-angular-src-v-angular-dropdown.mjs +19 -5
- package/fesm2022/sebgroup-green-angular-src-v-angular-dropdown.mjs.map +1 -1
- package/fesm2022/sebgroup-green-angular-src-v-angular-table.mjs +2 -2
- package/fesm2022/sebgroup-green-angular-src-v-angular-table.mjs.map +1 -1
- package/fesm2022/sebgroup-green-angular-v-angular.mjs +21 -7
- package/fesm2022/sebgroup-green-angular-v-angular.mjs.map +1 -1
- package/package.json +1 -1
- package/src/v-angular/dropdown/dropdown.component.d.ts +3 -0
- package/src/v-angular/table/table.models.d.ts +3 -3
- package/v-angular/dropdown/dropdown.component.d.ts +3 -0
- package/v-angular/table/table.models.d.ts +3 -3
|
@@ -368,11 +368,11 @@ export class TableComponent {
|
|
|
368
368
|
row?.setValue(!row.value);
|
|
369
369
|
}
|
|
370
370
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
371
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TableComponent, selector: "nggv-table", inputs: { tableColumns: "tableColumns", tableData: "tableData", rowId: "rowId", hasRowSpan: "hasRowSpan", selectable: "selectable", expandable: "expandable", expandedByDefault: "expandedByDefault", subItemsProp: "subItemsProp", allowLocalSort: "allowLocalSort", thook: "thook", trThookFn: "trThookFn", ariaLabelCheckboxTh: "ariaLabelCheckboxTh", ariaLabelCheckboxTr: "ariaLabelCheckboxTr", ariaLabelsOrderBy: "ariaLabelsOrderBy" }, outputs: { ngvRowClick: "ngvRowClick", ngvRowSelect: "ngvRowSelect", ngvOrderBy: "ngvOrderBy" }, queries: [{ propertyName: "appendedRowsTemplate", first: true, predicate: TableAppendableRowsTemplateDirective, descendants: true }, { propertyName: "customFooterTemplate", first: true, predicate: TableFooterTemplateDirective, descendants: true }, { propertyName: "customTemplates", predicate: TableTemplateDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #sortableThTemplate let-column>\n <button class=\"sg-table-sort\" *transloco=\"let t\">\n <ng-template #thButtonTemplate>\n {{ t(column.label ?? '') }}\n </ng-template>\n <ng-container\n *ngIf=\"\n customHeaderTemplates.get(column.property) as thTemplate;\n else thButtonTemplate\n \"\n >\n <ng-template\n *ngTemplateOutlet=\"thTemplate || null; context: { $implicit: column }\"\n >\n </ng-template>\n </ng-container>\n </button>\n</ng-template>\n\n<ng-template #notSortableThTemplate let-column>\n <ng-template #defaultThTemplate>\n <ng-container *transloco=\"let t\">\n {{ t(column.label ?? '') }}\n </ng-container>\n </ng-template>\n <ng-container\n *ngIf=\"\n customHeaderTemplates.get(column.property) as thTemplate;\n else defaultThTemplate\n \"\n >\n <ng-template\n *ngTemplateOutlet=\"thTemplate || null; context: { $implicit: column }\"\n >\n </ng-template>\n </ng-container>\n</ng-template>\n<table class=\"gds-table\" *transloco=\"let t\">\n <!-- Table header -->\n <thead>\n <tr>\n <!-- Checkbox column for header -->\n <th *ngIf=\"selectable\" class=\"column__check\">\n <div class=\"gds-field-checkbox-wrap\">\n <label\n [attr.for]=\"'cb_header__' + initId\"\n class=\"form-control\"\n id=\"thead-checkbox\"\n >\n <input\n type=\"checkbox\"\n [formControl]=\"groupSelector\"\n [attr.aria-label]=\"ariaLabelCheckboxTh\"\n [attr.id]=\"'cb_header__' + initId\"\n [attr.data-thook]=\"thook\"\n />\n <i></i>\n </label>\n </div>\n </th>\n\n <!-- Other columns -->\n <th\n *ngFor=\"let column of tableColumns\"\n [columnType]=\"column.valueType\"\n [sortable]=\"column.sortable\"\n [sortOrder]=\"column.order\"\n [thook]=\"'column-header-' + !!column.property\"\n (click)=\"toggleSortOrder(column)\"\n (keydown.space)=\"toggleSortOrderWithSpace($event, column)\"\n [attr.aria-label]=\"getAriaLabel(column)\"\n [attr.aria-sort]=\"column.order + 'ending'\"\n >\n <ng-container *ngIf=\"column.sortable\">\n <ng-container\n *ngTemplateOutlet=\"\n sortableThTemplate;\n context: { $implicit: column, column: column }\n \"\n >\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!column.sortable\">\n <ng-container\n *ngTemplateOutlet=\"\n notSortableThTemplate;\n context: { $implicit: column, column: column }\n \"\n >\n </ng-container>\n </ng-container>\n </th>\n </tr>\n </thead>\n\n <!-- Table body -->\n <tbody [formGroup]=\"rowSelectors\">\n <ng-container *ngFor=\"let item of tableData; let i = index\">\n <tr\n [class.row__expand]=\"expandable\"\n [attr.data-thook]=\"item | trThook: i : trThookFn\"\n [attr.data-hasrowspan]=\"hasRowSpan(item)\"\n >\n <!-- Checkbox column for row -->\n <td *ngIf=\"selectable\" class=\"column__check\">\n <div class=\"gds-field-checkbox-wrap\">\n <label\n [attr.for]=\"'cb_row__' + initId + '_' + i\"\n class=\"form-control\"\n >\n <input\n *ngIf=\"rowSelectors.get(item[rowId])\"\n type=\"checkbox\"\n [formControlName]=\"item[rowId]\"\n [attr.aria-label]=\"ariaLabelCheckboxTr\"\n [attr.id]=\"'cb_row__' + initId + '_' + i\"\n [attr.data-thook]=\"'row-select-' + i\"\n />\n <i></i>\n </label>\n </div>\n </td>\n\n <!-- Other columns -->\n <td\n *ngFor=\"let column of tableColumns; let i = index\"\n [columnType]=\"column.valueType\"\n [value]=\"item[column.property]\"\n (click)=\"propagateItemClick(item, column.preventDefaultClickEvent)\"\n >\n <ng-container *ngIf=\"expandable && i === 0; else nonExpandableTemplate\">\n <div\n class=\"gds-item-field-wrap\"\n [ngClass]=\"{ 'no-sub-items': item.subItems.length === 0 }\"\n >\n <span\n *ngIf=\"item.subItems.length > 0\"\n role=\"button\"\n tabindex=\"0\"\n class=\"chevron-field\"\n [attr.aria-expanded]=\"rowSelectors.get(item[rowId])?.value\"\n >\n <svg\n width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M20 9L12 17L4 9\"\n stroke=\"currentColor\"\n stroke-width=\"1.6\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </span>\n <span class=\"gds-item-field-text\">\n {{ item[column.property] }} ({{ item.subItems.length }})\n <div *ngIf=\"!!column.extraLabel\" class=\"gds-item-field-extra-label\">\n {{ column.extraLabel }}\n </div>\n </span>\n </div>\n </ng-container>\n\n <ng-template #nonExpandableTemplate>\n <ng-container *ngIf=\"customRowTemplates.get(column.property) as tdTemplate; else defaultTdTemplate\">\n <ng-template *ngTemplateOutlet=\"tdTemplate; context: { $implicit: item }\">\n </ng-template>\n </ng-container>\n <ng-template #defaultTdTemplate>\n {{ item[column.property] }}\n </ng-template>\n </ng-template>\n </td>\n </tr>\n\n <!-- Expanded Sub Items -->\n <ng-container *ngIf=\"expandable && rowSelectors.get(item[rowId])?.value\">\n <tr *ngFor=\"let subItem of item[subItemsProp]\">\n <td\n *ngFor=\"let column of tableColumns\"\n class=\"web-view\"\n [columnType]=\"column.valueType\"\n [value]=\"subItem[column.property]\"\n (click)=\"propagateItemClick(subItem, column.preventDefaultClickEvent)\"\n >\n <ng-container *ngIf=\"customRowTemplates.get(column.property) as tdTemplate; else defaultTdTemplate\">\n <ng-template *ngTemplateOutlet=\"tdTemplate; context: { $implicit: subItem }\">\n </ng-template>\n </ng-container>\n <ng-template #defaultTdTemplate>\n {{ subItem[column.property] }}\n </ng-template>\n </td>\n\n <td\n class=\"mobile-view\"\n [attr.colspan]=\"tableColumns.length\"\n (click)=\"propagateItemClick(subItem)\"\n >\n <dl class=\"mobile-view-field-wrap\">\n <ng-container *ngFor=\"let column of tableColumns\">\n <div\n *ngIf=\"!column.hidePropertyOnMobile\"\n class=\"mobile-view-field\"\n [columnType]=\"column.valueType\"\n [value]=\"subItem[column.property]\"\n >\n <dt *ngIf=\"!column.hideLabelOnMobile\">\n <ng-container *transloco=\"let t\">\n {{ t(column.label ?? '') }}\n </ng-container>\n </dt>\n <dd [ngStyle]=\"column.boldTextOnMobile ? { 'font-weight': '500' } : {'font-weight': '400'}\">\n <ng-container *ngIf=\"customRowTemplates.get(column.property) as tdTemplate; else defaultTdTemplate\">\n <ng-template *ngTemplateOutlet=\"tdTemplate; context: { $implicit: subItem }\"></ng-template>\n </ng-container>\n <ng-template #defaultTdTemplate>\n {{ subItem[column.property] }}\n </ng-template>\n </dd>\n <ng-content></ng-content>\n </div>\n </ng-container>\n </dl>\n <span\n role=\"button\"\n tabindex=\"0\"\n class=\"nav-chevron-field\"\n [attr.aria-expanded]=\"rowSelectors.get(item[rowId])?.value\"\n >\n <svg\n width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M20 9L12 17L4 9\"\n stroke=\"currentColor\"\n stroke-width=\"1.6\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </span>\n </td>\n </tr>\n </ng-container>\n\n <!-- Custom appended rows -->\n <ng-container *ngIf=\"appendedRowsTemplateRef as trTemplate\">\n <!-- Cannot infer trTemplate as TemplateRef therefore null -->\n <ng-container\n *ngTemplateOutlet=\"trTemplate || null; context: { $implicit: item }\"\n >\n </ng-container>\n </ng-container>\n </ng-container>\n </tbody>\n\n <!-- Table footer -->\n <tfoot *ngIf=\"customFooterTemplateRef as trTemplate\">\n <!-- Cannot infer trTemplate as TemplateRef therefore null -->\n <ng-container *ngTemplateOutlet=\"trTemplate || null\"> </ng-container>\n </tfoot>\n</table>\n", styles: ["::ng-deep .gds-table{--gds-ref-pallet-base100: #f8f8f8;--gds-ref-pallet-base600: hsl(0, 0%, 53%);--sg-table-header-background: #1a1a1a;--sg-table-header-color: #fff;--sg-table-cell-padding-x: .5rem;--sg-table-cell-padding-y: .6875rem;--sg-table-border-width: 1px;--sg-table-border-color: var(--gds-ref-pallet-base300);--sg-table-sort-icon-color: var(--gds-ref-pallet-base600);--gds-ref-pallet-base500: hsl(0, 0%, 68%);--sg-table-sort-icon-color-active: #fff;--gds-sys-color-surface: #fff;--gds-ref-pallet-base200: #e8e8e8;--gds-sys-color-base: #333;--gds-sys-shape-corner-small: .125rem;--gds-sys-color-blue-dark-2: #007ac7;--gds-sys-shape-corner-medium: .25rem;--sg-table-row-expand-font-weight: 500;--sg-table-row-expand-font-weight-light: 400;border-collapse:collapse;border-bottom:var(--sg-table-border-width) solid var(--gds-ref-pallet-base300);width:100%;border-bottom:none;--gds-comp-checkbox-container-height: 1rem;--gds-comp-checkbox-container-width: 1rem;--gds-comp-checkbox-container-color: var(--gds-sys-color-background-primary);--gds-comp-checkbox-container-color-disabled: var(--gds-ref-pallet-base300);--gds-comp-checkbox-border-color: var(--gds-ref-pallet-base900);--gds-comp-checkbox-border-radius: var(--gds-sys-shape-corner-small);--gds-comp-checkbox-hover-border-color: var(--gds-ref-pallet-base600);--gds-comp-checkbox-container-color-selected: var(--gds-ref-pallet-base900);--gds-comp-checkbox-border-color-selected: var(--gds-sys-color-text-inverted);--gds-comp-checkbox-border-color-focus: var(--gds-sys-color-dark-blue-2)}::ng-deep .gds-table thead tr th{background:#333;color:var(--sg-table-header-color);padding:.3rem var(--sg-table-cell-padding-x);text-align:left;font-weight:500}::ng-deep .gds-table thead tr th.icon-invert.sg-sortable .sg-table-sort:after{margin-left:0;margin-right:.3rem;order:-1}::ng-deep .gds-table thead tr th .sg-table-sort{color:inherit;width:100%;text-align:left;display:flex;align-items:center;border-radius:.125rem;--gds-sys-color-focus-outline: $_header-color}::ng-deep .gds-table thead tr th .sg-table-sort:focus:not(:focus-visible){box-shadow:none;outline:0}::ng-deep .gds-table thead tr th .sg-table-sort:focus,::ng-deep .gds-table thead tr th .sg-table-sort:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}::ng-deep .gds-table thead tr th[aria-sort] .sg-table-sort:after,::ng-deep .gds-table thead tr th.sg-sortable .sg-table-sort:after{content:\"\";background:var(--gds-ref-pallet-base500);-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%3E%3Cpath%20d='M11.107%205.86147L10.6429%205.39741C10.5328%205.28726%2010.3546%205.28726%2010.2445%205.39741L6.60933%209.03257V1.03101C6.60933%200.876318%206.48276%200.749756%206.32808%200.749756H5.67183C5.51714%200.749756%205.39058%200.876318%205.39058%201.03101V9.03257L1.75542%205.39741C1.64526%205.28726%201.46714%205.28726%201.35698%205.39741L0.89292%205.86147C0.782764%205.97163%200.782764%206.14976%200.89292%206.25991L5.80073%2011.1677C5.91089%2011.2779%206.08901%2011.2779%206.19917%2011.1677L11.107%206.25991C11.2171%206.14976%2011.2171%205.97163%2011.107%205.86147Z'%20fill='%23ADADAD'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%3E%3Cpath%20d='M11.107%205.86147L10.6429%205.39741C10.5328%205.28726%2010.3546%205.28726%2010.2445%205.39741L6.60933%209.03257V1.03101C6.60933%200.876318%206.48276%200.749756%206.32808%200.749756H5.67183C5.51714%200.749756%205.39058%200.876318%205.39058%201.03101V9.03257L1.75542%205.39741C1.64526%205.28726%201.46714%205.28726%201.35698%205.39741L0.89292%205.86147C0.782764%205.97163%200.782764%206.14976%200.89292%206.25991L5.80073%2011.1677C5.91089%2011.2779%206.08901%2011.2779%206.19917%2011.1677L11.107%206.25991C11.2171%206.14976%2011.2171%205.97163%2011.107%205.86147Z'%20fill='%23ADADAD'/%3E%3C/svg%3E\");-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:right;mask-position:right;width:12px;height:12px;margin-left:.3rem}::ng-deep .gds-table thead tr th[aria-sort=ascending] .sg-table-sort:after{background:var(--sg-table-sort-icon-color-active);transform:rotate(180deg)}::ng-deep .gds-table thead tr th[aria-sort=descending] .sg-table-sort:after{background:var(--sg-table-sort-icon-color-active)}::ng-deep .gds-table tbody tr td,::ng-deep .gds-table tbody tr th{border-top:var(--sg-table-border-width) solid var(--gds-ref-pallet-base300);padding:var(--sg-table-cell-padding-y) var(--sg-table-cell-padding-x);vertical-align:top}::ng-deep .gds-table tbody tr.collapsible~.sub-row{display:none}::ng-deep .gds-table tbody tr.collapsible.expanded~.sub-row.show{display:table-row}::ng-deep .gds-table tbody tr td.collapse-control,::ng-deep .gds-table tbody tr td.select-control{width:15px}::ng-deep .gds-table tbody tr td.collapse-control>.collapse-btn{min-height:unset;padding:0;background:transparent}::ng-deep .gds-table tbody tr td.collapse-control>.collapse-btn>.icon-holder{cursor:pointer;width:12px}::ng-deep .gds-table tbody tr td.collapse-control>.collapse-btn>.icon-holder svg{width:12px;fill:#868686}::ng-deep .gds-table tbody tr td.collapse-control>.collapse-btn>.icon-holder svg[name=angle-right]{width:9px}@media (max-width: 36em){::ng-deep .gds-table.table-mobile{width:100%;table-layout:fixed;border-bottom:none}::ng-deep .gds-table.table-mobile thead{position:sticky;top:0;display:block;background:#333}}@media (max-width: 36em) and (hover: none) and (pointer: coarse){::ng-deep .gds-table.table-mobile thead{display:table-header-group}}@media (max-width: 36em){::ng-deep .gds-table.table-mobile thead tr{display:flex;overflow:auto}::ng-deep .gds-table.table-mobile thead tr::-webkit-scrollbar{display:none}::ng-deep .gds-table.table-mobile thead tr th{flex:auto;text-align:left!important;white-space:nowrap}::ng-deep .gds-table.table-mobile tbody tr{display:flex;flex-direction:column;border-bottom:var(--sg-table-border-width) solid var(--gds-ref-pallet-base300)}::ng-deep .gds-table.table-mobile tbody tr td{display:flex;justify-content:space-between;align-items:center;border-top:none!important}::ng-deep .gds-table.table-mobile tbody tr td:before{content:attr(data-label);font-weight:700}}::ng-deep .gds-table .web-view{display:table-cell}::ng-deep .gds-table .mobile-view{display:none}::ng-deep .gds-table tr:hover td{background-color:var(--gds-ref-pallet-base100)}::ng-deep .gds-table .gds-table__numeric-col{text-align:right}::ng-deep .gds-table thead tr th.gds-table__numeric-col .sg-table-sort{justify-content:end}::ng-deep .gds-table th button{background-color:#0000;border:0;font-family:inherit;font-size:inherit;font-weight:inherit;padding:0;cursor:pointer}::ng-deep .gds-table tbody{border-bottom:var(--sg-table-border-width) solid var(--sg-table-border-color)}::ng-deep .gds-table td{cursor:pointer}::ng-deep .gds-table tfoot{border-top:1px solid;border-bottom:none;font-weight:var(--sg-table-row-expand-font-weight, 500)}::ng-deep .gds-table tfoot ::ng-deep td{padding:var(--sg-table-cell-padding-y) var(--sg-table-cell-padding-x)}::ng-deep .gds-table th.column__check{height:vanilla-px-to-rem(32px);width:vanilla-px-to-rem(40px)}::ng-deep .gds-table th.column__check div{min-height:100%}::ng-deep .gds-table th.column__check input:checked+label:after{top:.6rem;display:inline}::ng-deep .gds-table th.column__check label{display:inline;padding:0}::ng-deep .gds-table th.column__check label:before{top:.55rem}::ng-deep .gds-table td.column__check{width:vanilla-px-to-rem(40px)}::ng-deep .gds-table td.column__check div{min-height:unset}::ng-deep .gds-table td.column__check label{padding:0}::ng-deep .gds-table td.column__check label:before{margin:0}::ng-deep .gds-table tr.row__expand{background-color:var(--gds-ref-pallet-base100)}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap{display:flex;flex-wrap:nowrap}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap.no-sub-items{padding-left:1.5rem}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .chevron-field{width:1.5rem}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .chevron-field svg{transition:transform .3s ease}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .chevron-field[aria-expanded=true] svg{transform:rotate(-180deg)}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .gds-item-field-text{padding-left:.2rem}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .gds-item-field-text .gds-item-field-extra-label{font-weight:var(--sg-table-row-expand-font-weight-light, 400)}::ng-deep .gds-table tr.row__expand td{font-weight:var(--sg-table-row-expand-font-weight, 500)}::ng-deep .gds-table label.form-control input[type=checkbox]{cursor:pointer;height:0;opacity:0;position:absolute;width:0;z-index:-1}::ng-deep .gds-table label.form-control{align-items:flex-start}::ng-deep .gds-table label.form-control:has(input[type=checkbox]){padding:.6875rem 1rem .5625rem}::ng-deep .gds-table label.form-control:has(input[type=checkbox]:focus-visible):focus:not(:focus-visible){box-shadow:none;outline:0}::ng-deep .gds-table label.form-control:has(input[type=checkbox]:focus-visible):focus,::ng-deep .gds-table label.form-control:has(input[type=checkbox]:focus-visible):focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}::ng-deep .gds-table label.form-control input[type=checkbox]~i{margin-right:.75rem;margin-top:.0625rem;flex-shrink:0;box-shadow:inset 0 0 0 1px var(--gds-sys-color-text-primary);position:relative;border-radius:var(--gds-sys-shape-corner-small);background-color:transparent;flex:0 0 auto;height:1rem;width:1rem}::ng-deep .gds-table label.form-control input[type=checkbox]:not(:checked):focus-visible~i{box-shadow:inset 0 0 0 1px var(--gds-sys-color-base-900)}::ng-deep .gds-table label.form-control:hover input[type=checkbox]:not(.disabled,:disabled,:checked,:indeterminate)~i{background-color:var(--gds-sys-color-base-200)}::ng-deep .gds-table label.form-control input[type=checkbox]:checked~i{background-color:var(--gds-sys-color-base-900)}::ng-deep .gds-table label.form-control input[type=checkbox]:indeterminate~i{background-color:var(--gds-sys-color-base-900)}::ng-deep .gds-table label.form-control input[type=checkbox]:indeterminate~i:after{border-bottom:2px solid var(--gds-sys-color-background-primary);border-left:none;transform:scale(1) rotate(0);opacity:1}::ng-deep .gds-table label.form-control:has(input[type=checkbox].is-invalid){border:.0625rem solid var(--gds-sys-color-text-error);margin-bottom:.5rem}::ng-deep .gds-table .is-invalid label.form-control:has(input[type=checkbox].is-invalid){border:none;margin:0}@supports (-moz-appearance: none){::ng-deep .gds-table label.form-control.is-invalid{border:.0625rem solid var(--gds-sys-color-text-error);margin-bottom:.5rem}::ng-deep .gds-table .is-invalid label.form-control.is-invalid{border:none;margin:0}}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled~i,::ng-deep .gds-table label.form-control input[type=checkbox].disabled~i{background:var(--sg-form-control-bg-disabled)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed;box-shadow:inset 0 0 0 1px var(--border-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled~i::placeholder,::ng-deep .gds-table label.form-control input[type=checkbox].disabled~i::placeholder{color:var(--text-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled:checked~i,::ng-deep .gds-table label.form-control input[type=checkbox].disabled:checked~i{background:var(--sg-form-control-bg-disabled)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed;box-shadow:inset 0 0 0 1px var(--border-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled:checked~i::placeholder,::ng-deep .gds-table label.form-control input[type=checkbox].disabled:checked~i::placeholder{color:var(--text-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled:checked~i:after,::ng-deep .gds-table label.form-control input[type=checkbox].disabled:checked~i:after{border-color:var(--border-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled~span,::ng-deep .gds-table label.form-control input[type=checkbox].disabled~span{color:var(--text-disabled-color)!important;cursor:not-allowed}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled~span::placeholder,::ng-deep .gds-table label.form-control input[type=checkbox].disabled~span::placeholder{color:var(--text-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]~i:after{content:\"\";opacity:0;position:absolute}::ng-deep .gds-table label.form-control input[type=checkbox]~i:after{border-bottom:3px solid var(--gds-sys-color-text-inverted);border-left:3px solid var(--gds-sys-color-text-inverted);height:.5rem;width:1rem;left:0;top:.1875rem;transform:scale(.601) rotate(-45deg);transform-origin:center}::ng-deep .gds-table label.form-control input[type=checkbox]:checked~i:after{opacity:1}::ng-deep .gds-table .gds-field-checkbox-wrap .form-control:has(input[type=checkbox]){padding:.75rem 1rem;border:1px solid transparent;border-radius:var(--gds-sys-shape-corner-medium);align-items:center;cursor:pointer;display:flex;flex-direction:row-reverse;font:inherit;justify-content:flex-end;position:relative;user-select:none;-webkit-user-select:none;line-height:1.125rem;padding:0}::ng-deep .gds-table .gds-field-checkbox-wrap .form-control:has(input[type=checkbox]):has(input:disabled){cursor:not-allowed}::ng-deep .gds-table #thead-checkbox input[type=checkbox]~i{box-shadow:inset 0 0 0 1px var(--gds-comp-checkbox-container-color);background-color:var(--gds-comp-checkbox-border-color)}::ng-deep .gds-table #thead-checkbox:has(input[type=checkbox]:focus-visible):focus-within{outline-color:var(--sg-table-header-color)}::ng-deep .gds-table #thead-checkbox input[type=checkbox]:hover:not(:checked)~i{box-shadow:inset 0 0 0 1px #ababab}::ng-deep .gds-table #thead-checkbox input[type=checkbox]:hover:not(:checked)~i:after{border-color:#ababab}::ng-deep .gds-table #thead-checkbox input[type=checkbox]:hover:checked~i{background-color:var(--gds-comp-checkbox-border-color);box-shadow:inset 0 0 0 1px #ababab}::ng-deep .gds-table #thead-checkbox input[type=checkbox]:hover:checked~i:after{border-color:#ababab}@media screen and (max-width: 600px){.gds-table thead{display:none}.gds-table .row__expand td:not(:first-child){display:none}.gds-table .row__expand td{display:table-cell}.gds-table .web-view{display:none}.gds-table .mobile-view{display:flex;align-items:center}.gds-table .mobile-view .mobile-view-field-wrap{display:grid;grid-template-columns:1fr 1fr;width:100%}.gds-table .mobile-view .mobile-view-field-wrap .mobile-view-field{display:flex;flex-direction:column;padding-bottom:.3rem}.gds-table .mobile-view .mobile-view-field-wrap .mobile-view-field:nth-child(odd){justify-self:start;align-items:start;text-align:start}.gds-table .mobile-view .mobile-view-field-wrap .mobile-view-field:nth-child(2n){align-items:end;justify-self:end;text-align:end}.gds-table .mobile-view .nav-chevron-field{width:1.5rem;padding-left:.5rem}.gds-table .mobile-view .nav-chevron-field svg{transition:transform .3s ease}.gds-table .mobile-view .nav-chevron-field[aria-expanded=true] svg{transform:rotate(-90deg)}.gds-table .mobile-view .settings-field{width:1.5rem;padding:0 1rem}.gds-table .mobile-view .settings-field svg{transition:all .3s ease}.gds-table .mobile-view .settings-field:hover svg{fill:var(--gds-sys-color-blue-dark-2)}}\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.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "directive", type: i4.TableDirective, selector: "[columnType]", inputs: ["columnType", "sortable", "sortOrder", "value", "thook"] }, { kind: "pipe", type: i5.TrThookPipe, name: "trThook" }] }); }
|
|
371
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TableComponent, selector: "nggv-table", inputs: { tableColumns: "tableColumns", tableData: "tableData", rowId: "rowId", hasRowSpan: "hasRowSpan", selectable: "selectable", expandable: "expandable", expandedByDefault: "expandedByDefault", subItemsProp: "subItemsProp", allowLocalSort: "allowLocalSort", thook: "thook", trThookFn: "trThookFn", ariaLabelCheckboxTh: "ariaLabelCheckboxTh", ariaLabelCheckboxTr: "ariaLabelCheckboxTr", ariaLabelsOrderBy: "ariaLabelsOrderBy" }, outputs: { ngvRowClick: "ngvRowClick", ngvRowSelect: "ngvRowSelect", ngvOrderBy: "ngvOrderBy" }, queries: [{ propertyName: "appendedRowsTemplate", first: true, predicate: TableAppendableRowsTemplateDirective, descendants: true }, { propertyName: "customFooterTemplate", first: true, predicate: TableFooterTemplateDirective, descendants: true }, { propertyName: "customTemplates", predicate: TableTemplateDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #sortableThTemplate let-column>\n <button class=\"sg-table-sort\" *transloco=\"let t\">\n <ng-template #thButtonTemplate>\n {{ t(column.label ?? '') }}\n </ng-template>\n <ng-container\n *ngIf=\"\n customHeaderTemplates.get(column.property) as thTemplate;\n else thButtonTemplate\n \"\n >\n <ng-template\n *ngTemplateOutlet=\"thTemplate || null; context: { $implicit: column }\"\n >\n </ng-template>\n </ng-container>\n </button>\n</ng-template>\n\n<ng-template #notSortableThTemplate let-column>\n <ng-template #defaultThTemplate>\n <ng-container *transloco=\"let t\">\n {{ t(column.label ?? '') }}\n </ng-container>\n </ng-template>\n <ng-container\n *ngIf=\"\n customHeaderTemplates.get(column.property) as thTemplate;\n else defaultThTemplate\n \"\n >\n <ng-template\n *ngTemplateOutlet=\"thTemplate || null; context: { $implicit: column }\"\n >\n </ng-template>\n </ng-container>\n</ng-template>\n<table class=\"gds-table\" *transloco=\"let t\">\n <!-- Table header -->\n <thead>\n <tr>\n <!-- Checkbox column for header -->\n <th *ngIf=\"selectable\" class=\"column__check\">\n <div class=\"gds-field-checkbox-wrap\">\n <label\n [attr.for]=\"'cb_header__' + initId\"\n class=\"form-control\"\n id=\"thead-checkbox\"\n >\n <input\n type=\"checkbox\"\n [formControl]=\"groupSelector\"\n [attr.aria-label]=\"ariaLabelCheckboxTh\"\n [attr.id]=\"'cb_header__' + initId\"\n [attr.data-thook]=\"thook\"\n />\n <i></i>\n </label>\n </div>\n </th>\n\n <!-- Other columns -->\n <th\n *ngFor=\"let column of tableColumns\"\n [columnType]=\"column.valueType\"\n [sortable]=\"column.sortable\"\n [sortOrder]=\"column.order\"\n [thook]=\"'column-header-' + !!column.property\"\n (click)=\"toggleSortOrder(column)\"\n (keydown.space)=\"toggleSortOrderWithSpace($event, column)\"\n [attr.aria-label]=\"getAriaLabel(column)\"\n [attr.aria-sort]=\"column.order + 'ending'\"\n >\n <ng-container *ngIf=\"column.sortable\">\n <ng-container\n *ngTemplateOutlet=\"\n sortableThTemplate;\n context: { $implicit: column, column: column }\n \"\n >\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!column.sortable\">\n <ng-container\n *ngTemplateOutlet=\"\n notSortableThTemplate;\n context: { $implicit: column, column: column }\n \"\n >\n </ng-container>\n </ng-container>\n </th>\n </tr>\n </thead>\n\n <!-- Table body -->\n <tbody [formGroup]=\"rowSelectors\">\n <ng-container *ngFor=\"let item of tableData; let i = index\">\n <tr\n [class.row__expand]=\"expandable\"\n [attr.data-thook]=\"item | trThook: i : trThookFn\"\n [attr.data-hasrowspan]=\"hasRowSpan(item)\"\n >\n <!-- Checkbox column for row -->\n <td *ngIf=\"selectable\" class=\"column__check\">\n <div class=\"gds-field-checkbox-wrap\">\n <label\n [attr.for]=\"'cb_row__' + initId + '_' + i\"\n class=\"form-control\"\n >\n <input\n *ngIf=\"rowSelectors.get(item[rowId])\"\n type=\"checkbox\"\n [formControlName]=\"item[rowId]\"\n [attr.aria-label]=\"ariaLabelCheckboxTr\"\n [attr.id]=\"'cb_row__' + initId + '_' + i\"\n [attr.data-thook]=\"'row-select-' + i\"\n />\n <i></i>\n </label>\n </div>\n </td>\n\n <!-- Other columns -->\n <td\n *ngFor=\"let column of tableColumns; let i = index\"\n [columnType]=\"column.valueType\"\n [value]=\"item[column.property]\"\n (click)=\"propagateItemClick(item, column.preventDefaultClickEvent)\"\n >\n <ng-container *ngIf=\"expandable && i === 0; else nonExpandableTemplate\">\n <div\n class=\"gds-item-field-wrap\"\n [ngClass]=\"{ 'no-sub-items': item.subItems.length === 0 }\"\n >\n <span\n *ngIf=\"item.subItems.length > 0\"\n role=\"button\"\n tabindex=\"0\"\n class=\"chevron-field\"\n [attr.aria-expanded]=\"rowSelectors.get(item[rowId])?.value\"\n >\n <svg\n width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M20 9L12 17L4 9\"\n stroke=\"currentColor\"\n stroke-width=\"1.6\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </span>\n <span class=\"gds-item-field-text\">\n {{ item[column.property] }} ({{ item.subItems.length }})\n <div *ngIf=\"column.columnLabel\" class=\"gds-item-field-extra-label\">\n {{ item[column.columnLabel] }}\n </div>\n </span>\n </div>\n </ng-container>\n\n <ng-template #nonExpandableTemplate>\n <ng-container *ngIf=\"customRowTemplates.get(column.property) as tdTemplate; else defaultTdTemplate\">\n <ng-template *ngTemplateOutlet=\"tdTemplate; context: { $implicit: item }\">\n </ng-template>\n </ng-container>\n <ng-template #defaultTdTemplate>\n {{ item[column.property] }}\n </ng-template>\n </ng-template>\n </td>\n </tr>\n\n <!-- Expanded Sub Items -->\n <ng-container *ngIf=\"expandable && rowSelectors.get(item[rowId])?.value\">\n <tr *ngFor=\"let subItem of item[subItemsProp]\">\n <td\n *ngFor=\"let column of tableColumns\"\n class=\"web-view\"\n [columnType]=\"column.valueType\"\n [value]=\"subItem[column.property]\"\n (click)=\"propagateItemClick(subItem, column.preventDefaultClickEvent)\"\n >\n <ng-container *ngIf=\"customRowTemplates.get(column.property) as tdTemplate; else defaultTdTemplate\">\n <ng-template *ngTemplateOutlet=\"tdTemplate; context: { $implicit: subItem }\">\n </ng-template>\n </ng-container>\n <ng-template #defaultTdTemplate>\n {{ subItem[column.property] }}\n </ng-template>\n </td>\n\n <td\n class=\"mobile-view\"\n [attr.colspan]=\"tableColumns.length\"\n (click)=\"propagateItemClick(subItem)\"\n >\n <dl class=\"mobile-view-field-wrap\">\n <ng-container *ngFor=\"let column of tableColumns\">\n <div\n *ngIf=\"!column.hidePropertyOnMobile\"\n class=\"mobile-view-field\"\n [columnType]=\"column.valueType\"\n [value]=\"subItem[column.property]\"\n >\n <dt *ngIf=\"!column.hideLabelOnMobile\">\n <ng-container *transloco=\"let t\">\n {{ t(column.label ?? '') }}\n </ng-container>\n </dt>\n <dd [ngStyle]=\"column.boldTextOnMobile ? { 'font-weight': '500' } : {'font-weight': '400'}\">\n <ng-container *ngIf=\"customRowTemplates.get(column.property) as tdTemplate; else defaultTdTemplate\">\n <ng-template *ngTemplateOutlet=\"tdTemplate; context: { $implicit: subItem }\"></ng-template>\n </ng-container>\n <ng-template #defaultTdTemplate>\n {{ subItem[column.property] }}\n </ng-template>\n </dd>\n <ng-content></ng-content>\n </div>\n </ng-container>\n </dl>\n <span\n role=\"button\"\n tabindex=\"0\"\n class=\"nav-chevron-field\"\n [attr.aria-expanded]=\"rowSelectors.get(item[rowId])?.value\"\n >\n <svg\n width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M20 9L12 17L4 9\"\n stroke=\"currentColor\"\n stroke-width=\"1.6\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </span>\n </td>\n </tr>\n </ng-container>\n\n <!-- Custom appended rows -->\n <ng-container *ngIf=\"appendedRowsTemplateRef as trTemplate\">\n <!-- Cannot infer trTemplate as TemplateRef therefore null -->\n <ng-container\n *ngTemplateOutlet=\"trTemplate || null; context: { $implicit: item }\"\n >\n </ng-container>\n </ng-container>\n </ng-container>\n </tbody>\n\n <!-- Table footer -->\n <tfoot *ngIf=\"customFooterTemplateRef as trTemplate\">\n <!-- Cannot infer trTemplate as TemplateRef therefore null -->\n <ng-container *ngTemplateOutlet=\"trTemplate || null\"> </ng-container>\n </tfoot>\n</table>\n", styles: ["::ng-deep .gds-table{--gds-ref-pallet-base100: #f8f8f8;--gds-ref-pallet-base600: hsl(0, 0%, 53%);--sg-table-header-background: #1a1a1a;--sg-table-header-color: #fff;--sg-table-cell-padding-x: .5rem;--sg-table-cell-padding-y: .6875rem;--sg-table-border-width: 1px;--sg-table-border-color: var(--gds-ref-pallet-base300);--sg-table-sort-icon-color: var(--gds-ref-pallet-base600);--gds-ref-pallet-base500: hsl(0, 0%, 68%);--sg-table-sort-icon-color-active: #fff;--gds-sys-color-surface: #fff;--gds-ref-pallet-base200: #e8e8e8;--gds-sys-color-base: #333;--gds-sys-shape-corner-small: .125rem;--gds-sys-color-blue-dark-2: #007ac7;--gds-sys-shape-corner-medium: .25rem;--sg-table-row-expand-font-weight: 500;--sg-table-row-expand-font-weight-light: 400;border-collapse:collapse;border-bottom:var(--sg-table-border-width) solid var(--gds-ref-pallet-base300);width:100%;border-bottom:none;--gds-comp-checkbox-container-height: 1rem;--gds-comp-checkbox-container-width: 1rem;--gds-comp-checkbox-container-color: var(--gds-sys-color-background-primary);--gds-comp-checkbox-container-color-disabled: var(--gds-ref-pallet-base300);--gds-comp-checkbox-border-color: var(--gds-ref-pallet-base900);--gds-comp-checkbox-border-radius: var(--gds-sys-shape-corner-small);--gds-comp-checkbox-hover-border-color: var(--gds-ref-pallet-base600);--gds-comp-checkbox-container-color-selected: var(--gds-ref-pallet-base900);--gds-comp-checkbox-border-color-selected: var(--gds-sys-color-text-inverted);--gds-comp-checkbox-border-color-focus: var(--gds-sys-color-dark-blue-2)}::ng-deep .gds-table thead tr th{background:#333;color:var(--sg-table-header-color);padding:.3rem var(--sg-table-cell-padding-x);text-align:left;font-weight:500}::ng-deep .gds-table thead tr th.icon-invert.sg-sortable .sg-table-sort:after{margin-left:0;margin-right:.3rem;order:-1}::ng-deep .gds-table thead tr th .sg-table-sort{color:inherit;width:100%;text-align:left;display:flex;align-items:center;border-radius:.125rem;--gds-sys-color-focus-outline: $_header-color}::ng-deep .gds-table thead tr th .sg-table-sort:focus:not(:focus-visible){box-shadow:none;outline:0}::ng-deep .gds-table thead tr th .sg-table-sort:focus,::ng-deep .gds-table thead tr th .sg-table-sort:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}::ng-deep .gds-table thead tr th[aria-sort] .sg-table-sort:after,::ng-deep .gds-table thead tr th.sg-sortable .sg-table-sort:after{content:\"\";background:var(--gds-ref-pallet-base500);-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%3E%3Cpath%20d='M11.107%205.86147L10.6429%205.39741C10.5328%205.28726%2010.3546%205.28726%2010.2445%205.39741L6.60933%209.03257V1.03101C6.60933%200.876318%206.48276%200.749756%206.32808%200.749756H5.67183C5.51714%200.749756%205.39058%200.876318%205.39058%201.03101V9.03257L1.75542%205.39741C1.64526%205.28726%201.46714%205.28726%201.35698%205.39741L0.89292%205.86147C0.782764%205.97163%200.782764%206.14976%200.89292%206.25991L5.80073%2011.1677C5.91089%2011.2779%206.08901%2011.2779%206.19917%2011.1677L11.107%206.25991C11.2171%206.14976%2011.2171%205.97163%2011.107%205.86147Z'%20fill='%23ADADAD'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%3E%3Cpath%20d='M11.107%205.86147L10.6429%205.39741C10.5328%205.28726%2010.3546%205.28726%2010.2445%205.39741L6.60933%209.03257V1.03101C6.60933%200.876318%206.48276%200.749756%206.32808%200.749756H5.67183C5.51714%200.749756%205.39058%200.876318%205.39058%201.03101V9.03257L1.75542%205.39741C1.64526%205.28726%201.46714%205.28726%201.35698%205.39741L0.89292%205.86147C0.782764%205.97163%200.782764%206.14976%200.89292%206.25991L5.80073%2011.1677C5.91089%2011.2779%206.08901%2011.2779%206.19917%2011.1677L11.107%206.25991C11.2171%206.14976%2011.2171%205.97163%2011.107%205.86147Z'%20fill='%23ADADAD'/%3E%3C/svg%3E\");-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:right;mask-position:right;width:12px;height:12px;margin-left:.3rem}::ng-deep .gds-table thead tr th[aria-sort=ascending] .sg-table-sort:after{background:var(--sg-table-sort-icon-color-active);transform:rotate(180deg)}::ng-deep .gds-table thead tr th[aria-sort=descending] .sg-table-sort:after{background:var(--sg-table-sort-icon-color-active)}::ng-deep .gds-table tbody tr td,::ng-deep .gds-table tbody tr th{border-top:var(--sg-table-border-width) solid var(--gds-ref-pallet-base300);padding:var(--sg-table-cell-padding-y) var(--sg-table-cell-padding-x);vertical-align:top}::ng-deep .gds-table tbody tr.collapsible~.sub-row{display:none}::ng-deep .gds-table tbody tr.collapsible.expanded~.sub-row.show{display:table-row}::ng-deep .gds-table tbody tr td.collapse-control,::ng-deep .gds-table tbody tr td.select-control{width:15px}::ng-deep .gds-table tbody tr td.collapse-control>.collapse-btn{min-height:unset;padding:0;background:transparent}::ng-deep .gds-table tbody tr td.collapse-control>.collapse-btn>.icon-holder{cursor:pointer;width:12px}::ng-deep .gds-table tbody tr td.collapse-control>.collapse-btn>.icon-holder svg{width:12px;fill:#868686}::ng-deep .gds-table tbody tr td.collapse-control>.collapse-btn>.icon-holder svg[name=angle-right]{width:9px}@media (max-width: 36em){::ng-deep .gds-table.table-mobile{width:100%;table-layout:fixed;border-bottom:none}::ng-deep .gds-table.table-mobile thead{position:sticky;top:0;display:block;background:#333}}@media (max-width: 36em) and (hover: none) and (pointer: coarse){::ng-deep .gds-table.table-mobile thead{display:table-header-group}}@media (max-width: 36em){::ng-deep .gds-table.table-mobile thead tr{display:flex;overflow:auto}::ng-deep .gds-table.table-mobile thead tr::-webkit-scrollbar{display:none}::ng-deep .gds-table.table-mobile thead tr th{flex:auto;text-align:left!important;white-space:nowrap}::ng-deep .gds-table.table-mobile tbody tr{display:flex;flex-direction:column;border-bottom:var(--sg-table-border-width) solid var(--gds-ref-pallet-base300)}::ng-deep .gds-table.table-mobile tbody tr td{display:flex;justify-content:space-between;align-items:center;border-top:none!important}::ng-deep .gds-table.table-mobile tbody tr td:before{content:attr(data-label);font-weight:700}}::ng-deep .gds-table .web-view{display:table-cell}::ng-deep .gds-table .mobile-view{display:none}::ng-deep .gds-table tr:hover td{background-color:var(--gds-ref-pallet-base100)}::ng-deep .gds-table .gds-table__numeric-col{text-align:right}::ng-deep .gds-table thead tr th.gds-table__numeric-col .sg-table-sort{justify-content:end}::ng-deep .gds-table th button{background-color:#0000;border:0;font-family:inherit;font-size:inherit;font-weight:inherit;padding:0;cursor:pointer}::ng-deep .gds-table tbody{border-bottom:var(--sg-table-border-width) solid var(--sg-table-border-color)}::ng-deep .gds-table td{cursor:pointer}::ng-deep .gds-table tfoot{border-top:1px solid;border-bottom:none;font-weight:var(--sg-table-row-expand-font-weight, 500)}::ng-deep .gds-table tfoot ::ng-deep td{padding:var(--sg-table-cell-padding-y) var(--sg-table-cell-padding-x)}::ng-deep .gds-table th.column__check{height:vanilla-px-to-rem(32px);width:vanilla-px-to-rem(40px)}::ng-deep .gds-table th.column__check div{min-height:100%}::ng-deep .gds-table th.column__check input:checked+label:after{top:.6rem;display:inline}::ng-deep .gds-table th.column__check label{display:inline;padding:0}::ng-deep .gds-table th.column__check label:before{top:.55rem}::ng-deep .gds-table td.column__check{width:vanilla-px-to-rem(40px)}::ng-deep .gds-table td.column__check div{min-height:unset}::ng-deep .gds-table td.column__check label{padding:0}::ng-deep .gds-table td.column__check label:before{margin:0}::ng-deep .gds-table tr.row__expand{background-color:var(--gds-ref-pallet-base100)}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap{display:flex;flex-wrap:nowrap}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap.no-sub-items{padding-left:1.5rem}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .chevron-field{width:1.5rem}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .chevron-field svg{transition:transform .3s ease}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .chevron-field[aria-expanded=true] svg{transform:rotate(-180deg)}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .gds-item-field-text{padding-left:.2rem}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .gds-item-field-text .gds-item-field-extra-label{font-weight:var(--sg-table-row-expand-font-weight-light, 400)}::ng-deep .gds-table tr.row__expand td{font-weight:var(--sg-table-row-expand-font-weight, 500)}::ng-deep .gds-table label.form-control input[type=checkbox]{cursor:pointer;height:0;opacity:0;position:absolute;width:0;z-index:-1}::ng-deep .gds-table label.form-control{align-items:flex-start}::ng-deep .gds-table label.form-control:has(input[type=checkbox]){padding:.6875rem 1rem .5625rem}::ng-deep .gds-table label.form-control:has(input[type=checkbox]:focus-visible):focus:not(:focus-visible){box-shadow:none;outline:0}::ng-deep .gds-table label.form-control:has(input[type=checkbox]:focus-visible):focus,::ng-deep .gds-table label.form-control:has(input[type=checkbox]:focus-visible):focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}::ng-deep .gds-table label.form-control input[type=checkbox]~i{margin-right:.75rem;margin-top:.0625rem;flex-shrink:0;box-shadow:inset 0 0 0 1px var(--gds-sys-color-text-primary);position:relative;border-radius:var(--gds-sys-shape-corner-small);background-color:transparent;flex:0 0 auto;height:1rem;width:1rem}::ng-deep .gds-table label.form-control input[type=checkbox]:not(:checked):focus-visible~i{box-shadow:inset 0 0 0 1px var(--gds-sys-color-base-900)}::ng-deep .gds-table label.form-control:hover input[type=checkbox]:not(.disabled,:disabled,:checked,:indeterminate)~i{background-color:var(--gds-sys-color-base-200)}::ng-deep .gds-table label.form-control input[type=checkbox]:checked~i{background-color:var(--gds-sys-color-base-900)}::ng-deep .gds-table label.form-control input[type=checkbox]:indeterminate~i{background-color:var(--gds-sys-color-base-900)}::ng-deep .gds-table label.form-control input[type=checkbox]:indeterminate~i:after{border-bottom:2px solid var(--gds-sys-color-background-primary);border-left:none;transform:scale(1) rotate(0);opacity:1}::ng-deep .gds-table label.form-control:has(input[type=checkbox].is-invalid){border:.0625rem solid var(--gds-sys-color-text-error);margin-bottom:.5rem}::ng-deep .gds-table .is-invalid label.form-control:has(input[type=checkbox].is-invalid){border:none;margin:0}@supports (-moz-appearance: none){::ng-deep .gds-table label.form-control.is-invalid{border:.0625rem solid var(--gds-sys-color-text-error);margin-bottom:.5rem}::ng-deep .gds-table .is-invalid label.form-control.is-invalid{border:none;margin:0}}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled~i,::ng-deep .gds-table label.form-control input[type=checkbox].disabled~i{background:var(--sg-form-control-bg-disabled)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed;box-shadow:inset 0 0 0 1px var(--border-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled~i::placeholder,::ng-deep .gds-table label.form-control input[type=checkbox].disabled~i::placeholder{color:var(--text-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled:checked~i,::ng-deep .gds-table label.form-control input[type=checkbox].disabled:checked~i{background:var(--sg-form-control-bg-disabled)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed;box-shadow:inset 0 0 0 1px var(--border-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled:checked~i::placeholder,::ng-deep .gds-table label.form-control input[type=checkbox].disabled:checked~i::placeholder{color:var(--text-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled:checked~i:after,::ng-deep .gds-table label.form-control input[type=checkbox].disabled:checked~i:after{border-color:var(--border-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled~span,::ng-deep .gds-table label.form-control input[type=checkbox].disabled~span{color:var(--text-disabled-color)!important;cursor:not-allowed}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled~span::placeholder,::ng-deep .gds-table label.form-control input[type=checkbox].disabled~span::placeholder{color:var(--text-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]~i:after{content:\"\";opacity:0;position:absolute}::ng-deep .gds-table label.form-control input[type=checkbox]~i:after{border-bottom:3px solid var(--gds-sys-color-text-inverted);border-left:3px solid var(--gds-sys-color-text-inverted);height:.5rem;width:1rem;left:0;top:.1875rem;transform:scale(.601) rotate(-45deg);transform-origin:center}::ng-deep .gds-table label.form-control input[type=checkbox]:checked~i:after{opacity:1}::ng-deep .gds-table .gds-field-checkbox-wrap .form-control:has(input[type=checkbox]){padding:.75rem 1rem;border:1px solid transparent;border-radius:var(--gds-sys-shape-corner-medium);align-items:center;cursor:pointer;display:flex;flex-direction:row-reverse;font:inherit;justify-content:flex-end;position:relative;user-select:none;-webkit-user-select:none;line-height:1.125rem;padding:0}::ng-deep .gds-table .gds-field-checkbox-wrap .form-control:has(input[type=checkbox]):has(input:disabled){cursor:not-allowed}::ng-deep .gds-table #thead-checkbox input[type=checkbox]~i{box-shadow:inset 0 0 0 1px var(--gds-comp-checkbox-container-color);background-color:var(--gds-comp-checkbox-border-color)}::ng-deep .gds-table #thead-checkbox:has(input[type=checkbox]:focus-visible):focus-within{outline-color:var(--sg-table-header-color)}::ng-deep .gds-table #thead-checkbox input[type=checkbox]:hover:not(:checked)~i{box-shadow:inset 0 0 0 1px #ababab}::ng-deep .gds-table #thead-checkbox input[type=checkbox]:hover:not(:checked)~i:after{border-color:#ababab}::ng-deep .gds-table #thead-checkbox input[type=checkbox]:hover:checked~i{background-color:var(--gds-comp-checkbox-border-color);box-shadow:inset 0 0 0 1px #ababab}::ng-deep .gds-table #thead-checkbox input[type=checkbox]:hover:checked~i:after{border-color:#ababab}@media screen and (max-width: 600px){.gds-table thead{display:none}.gds-table .row__expand td:not(:first-child){display:none}.gds-table .row__expand td{display:table-cell}.gds-table .web-view{display:none}.gds-table .mobile-view{display:flex;align-items:center}.gds-table .mobile-view .mobile-view-field-wrap{display:grid;grid-template-columns:1fr 1fr;width:100%}.gds-table .mobile-view .mobile-view-field-wrap .mobile-view-field{display:flex;flex-direction:column;padding-bottom:.3rem}.gds-table .mobile-view .mobile-view-field-wrap .mobile-view-field:nth-child(odd){justify-self:start;align-items:start;text-align:start}.gds-table .mobile-view .mobile-view-field-wrap .mobile-view-field:nth-child(2n){align-items:end;justify-self:end;text-align:end}.gds-table .mobile-view .nav-chevron-field{width:1.5rem;padding-left:.5rem}.gds-table .mobile-view .nav-chevron-field svg{transition:transform .3s ease}.gds-table .mobile-view .nav-chevron-field[aria-expanded=true] svg{transform:rotate(-90deg)}.gds-table .mobile-view .settings-field{width:1.5rem;padding:0 1rem}.gds-table .mobile-view .settings-field svg{transition:all .3s ease}.gds-table .mobile-view .settings-field:hover svg{fill:var(--gds-sys-color-blue-dark-2)}}\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.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "directive", type: i4.TableDirective, selector: "[columnType]", inputs: ["columnType", "sortable", "sortOrder", "value", "thook"] }, { kind: "pipe", type: i5.TrThookPipe, name: "trThook" }] }); }
|
|
372
372
|
}
|
|
373
373
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TableComponent, decorators: [{
|
|
374
374
|
type: Component,
|
|
375
|
-
args: [{ selector: 'nggv-table', template: "<ng-template #sortableThTemplate let-column>\n <button class=\"sg-table-sort\" *transloco=\"let t\">\n <ng-template #thButtonTemplate>\n {{ t(column.label ?? '') }}\n </ng-template>\n <ng-container\n *ngIf=\"\n customHeaderTemplates.get(column.property) as thTemplate;\n else thButtonTemplate\n \"\n >\n <ng-template\n *ngTemplateOutlet=\"thTemplate || null; context: { $implicit: column }\"\n >\n </ng-template>\n </ng-container>\n </button>\n</ng-template>\n\n<ng-template #notSortableThTemplate let-column>\n <ng-template #defaultThTemplate>\n <ng-container *transloco=\"let t\">\n {{ t(column.label ?? '') }}\n </ng-container>\n </ng-template>\n <ng-container\n *ngIf=\"\n customHeaderTemplates.get(column.property) as thTemplate;\n else defaultThTemplate\n \"\n >\n <ng-template\n *ngTemplateOutlet=\"thTemplate || null; context: { $implicit: column }\"\n >\n </ng-template>\n </ng-container>\n</ng-template>\n<table class=\"gds-table\" *transloco=\"let t\">\n <!-- Table header -->\n <thead>\n <tr>\n <!-- Checkbox column for header -->\n <th *ngIf=\"selectable\" class=\"column__check\">\n <div class=\"gds-field-checkbox-wrap\">\n <label\n [attr.for]=\"'cb_header__' + initId\"\n class=\"form-control\"\n id=\"thead-checkbox\"\n >\n <input\n type=\"checkbox\"\n [formControl]=\"groupSelector\"\n [attr.aria-label]=\"ariaLabelCheckboxTh\"\n [attr.id]=\"'cb_header__' + initId\"\n [attr.data-thook]=\"thook\"\n />\n <i></i>\n </label>\n </div>\n </th>\n\n <!-- Other columns -->\n <th\n *ngFor=\"let column of tableColumns\"\n [columnType]=\"column.valueType\"\n [sortable]=\"column.sortable\"\n [sortOrder]=\"column.order\"\n [thook]=\"'column-header-' + !!column.property\"\n (click)=\"toggleSortOrder(column)\"\n (keydown.space)=\"toggleSortOrderWithSpace($event, column)\"\n [attr.aria-label]=\"getAriaLabel(column)\"\n [attr.aria-sort]=\"column.order + 'ending'\"\n >\n <ng-container *ngIf=\"column.sortable\">\n <ng-container\n *ngTemplateOutlet=\"\n sortableThTemplate;\n context: { $implicit: column, column: column }\n \"\n >\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!column.sortable\">\n <ng-container\n *ngTemplateOutlet=\"\n notSortableThTemplate;\n context: { $implicit: column, column: column }\n \"\n >\n </ng-container>\n </ng-container>\n </th>\n </tr>\n </thead>\n\n <!-- Table body -->\n <tbody [formGroup]=\"rowSelectors\">\n <ng-container *ngFor=\"let item of tableData; let i = index\">\n <tr\n [class.row__expand]=\"expandable\"\n [attr.data-thook]=\"item | trThook: i : trThookFn\"\n [attr.data-hasrowspan]=\"hasRowSpan(item)\"\n >\n <!-- Checkbox column for row -->\n <td *ngIf=\"selectable\" class=\"column__check\">\n <div class=\"gds-field-checkbox-wrap\">\n <label\n [attr.for]=\"'cb_row__' + initId + '_' + i\"\n class=\"form-control\"\n >\n <input\n *ngIf=\"rowSelectors.get(item[rowId])\"\n type=\"checkbox\"\n [formControlName]=\"item[rowId]\"\n [attr.aria-label]=\"ariaLabelCheckboxTr\"\n [attr.id]=\"'cb_row__' + initId + '_' + i\"\n [attr.data-thook]=\"'row-select-' + i\"\n />\n <i></i>\n </label>\n </div>\n </td>\n\n <!-- Other columns -->\n <td\n *ngFor=\"let column of tableColumns; let i = index\"\n [columnType]=\"column.valueType\"\n [value]=\"item[column.property]\"\n (click)=\"propagateItemClick(item, column.preventDefaultClickEvent)\"\n >\n <ng-container *ngIf=\"expandable && i === 0; else nonExpandableTemplate\">\n <div\n class=\"gds-item-field-wrap\"\n [ngClass]=\"{ 'no-sub-items': item.subItems.length === 0 }\"\n >\n <span\n *ngIf=\"item.subItems.length > 0\"\n role=\"button\"\n tabindex=\"0\"\n class=\"chevron-field\"\n [attr.aria-expanded]=\"rowSelectors.get(item[rowId])?.value\"\n >\n <svg\n width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M20 9L12 17L4 9\"\n stroke=\"currentColor\"\n stroke-width=\"1.6\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </span>\n <span class=\"gds-item-field-text\">\n {{ item[column.property] }} ({{ item.subItems.length }})\n <div *ngIf=\"!!column.extraLabel\" class=\"gds-item-field-extra-label\">\n {{ column.extraLabel }}\n </div>\n </span>\n </div>\n </ng-container>\n\n <ng-template #nonExpandableTemplate>\n <ng-container *ngIf=\"customRowTemplates.get(column.property) as tdTemplate; else defaultTdTemplate\">\n <ng-template *ngTemplateOutlet=\"tdTemplate; context: { $implicit: item }\">\n </ng-template>\n </ng-container>\n <ng-template #defaultTdTemplate>\n {{ item[column.property] }}\n </ng-template>\n </ng-template>\n </td>\n </tr>\n\n <!-- Expanded Sub Items -->\n <ng-container *ngIf=\"expandable && rowSelectors.get(item[rowId])?.value\">\n <tr *ngFor=\"let subItem of item[subItemsProp]\">\n <td\n *ngFor=\"let column of tableColumns\"\n class=\"web-view\"\n [columnType]=\"column.valueType\"\n [value]=\"subItem[column.property]\"\n (click)=\"propagateItemClick(subItem, column.preventDefaultClickEvent)\"\n >\n <ng-container *ngIf=\"customRowTemplates.get(column.property) as tdTemplate; else defaultTdTemplate\">\n <ng-template *ngTemplateOutlet=\"tdTemplate; context: { $implicit: subItem }\">\n </ng-template>\n </ng-container>\n <ng-template #defaultTdTemplate>\n {{ subItem[column.property] }}\n </ng-template>\n </td>\n\n <td\n class=\"mobile-view\"\n [attr.colspan]=\"tableColumns.length\"\n (click)=\"propagateItemClick(subItem)\"\n >\n <dl class=\"mobile-view-field-wrap\">\n <ng-container *ngFor=\"let column of tableColumns\">\n <div\n *ngIf=\"!column.hidePropertyOnMobile\"\n class=\"mobile-view-field\"\n [columnType]=\"column.valueType\"\n [value]=\"subItem[column.property]\"\n >\n <dt *ngIf=\"!column.hideLabelOnMobile\">\n <ng-container *transloco=\"let t\">\n {{ t(column.label ?? '') }}\n </ng-container>\n </dt>\n <dd [ngStyle]=\"column.boldTextOnMobile ? { 'font-weight': '500' } : {'font-weight': '400'}\">\n <ng-container *ngIf=\"customRowTemplates.get(column.property) as tdTemplate; else defaultTdTemplate\">\n <ng-template *ngTemplateOutlet=\"tdTemplate; context: { $implicit: subItem }\"></ng-template>\n </ng-container>\n <ng-template #defaultTdTemplate>\n {{ subItem[column.property] }}\n </ng-template>\n </dd>\n <ng-content></ng-content>\n </div>\n </ng-container>\n </dl>\n <span\n role=\"button\"\n tabindex=\"0\"\n class=\"nav-chevron-field\"\n [attr.aria-expanded]=\"rowSelectors.get(item[rowId])?.value\"\n >\n <svg\n width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M20 9L12 17L4 9\"\n stroke=\"currentColor\"\n stroke-width=\"1.6\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </span>\n </td>\n </tr>\n </ng-container>\n\n <!-- Custom appended rows -->\n <ng-container *ngIf=\"appendedRowsTemplateRef as trTemplate\">\n <!-- Cannot infer trTemplate as TemplateRef therefore null -->\n <ng-container\n *ngTemplateOutlet=\"trTemplate || null; context: { $implicit: item }\"\n >\n </ng-container>\n </ng-container>\n </ng-container>\n </tbody>\n\n <!-- Table footer -->\n <tfoot *ngIf=\"customFooterTemplateRef as trTemplate\">\n <!-- Cannot infer trTemplate as TemplateRef therefore null -->\n <ng-container *ngTemplateOutlet=\"trTemplate || null\"> </ng-container>\n </tfoot>\n</table>\n", styles: ["::ng-deep .gds-table{--gds-ref-pallet-base100: #f8f8f8;--gds-ref-pallet-base600: hsl(0, 0%, 53%);--sg-table-header-background: #1a1a1a;--sg-table-header-color: #fff;--sg-table-cell-padding-x: .5rem;--sg-table-cell-padding-y: .6875rem;--sg-table-border-width: 1px;--sg-table-border-color: var(--gds-ref-pallet-base300);--sg-table-sort-icon-color: var(--gds-ref-pallet-base600);--gds-ref-pallet-base500: hsl(0, 0%, 68%);--sg-table-sort-icon-color-active: #fff;--gds-sys-color-surface: #fff;--gds-ref-pallet-base200: #e8e8e8;--gds-sys-color-base: #333;--gds-sys-shape-corner-small: .125rem;--gds-sys-color-blue-dark-2: #007ac7;--gds-sys-shape-corner-medium: .25rem;--sg-table-row-expand-font-weight: 500;--sg-table-row-expand-font-weight-light: 400;border-collapse:collapse;border-bottom:var(--sg-table-border-width) solid var(--gds-ref-pallet-base300);width:100%;border-bottom:none;--gds-comp-checkbox-container-height: 1rem;--gds-comp-checkbox-container-width: 1rem;--gds-comp-checkbox-container-color: var(--gds-sys-color-background-primary);--gds-comp-checkbox-container-color-disabled: var(--gds-ref-pallet-base300);--gds-comp-checkbox-border-color: var(--gds-ref-pallet-base900);--gds-comp-checkbox-border-radius: var(--gds-sys-shape-corner-small);--gds-comp-checkbox-hover-border-color: var(--gds-ref-pallet-base600);--gds-comp-checkbox-container-color-selected: var(--gds-ref-pallet-base900);--gds-comp-checkbox-border-color-selected: var(--gds-sys-color-text-inverted);--gds-comp-checkbox-border-color-focus: var(--gds-sys-color-dark-blue-2)}::ng-deep .gds-table thead tr th{background:#333;color:var(--sg-table-header-color);padding:.3rem var(--sg-table-cell-padding-x);text-align:left;font-weight:500}::ng-deep .gds-table thead tr th.icon-invert.sg-sortable .sg-table-sort:after{margin-left:0;margin-right:.3rem;order:-1}::ng-deep .gds-table thead tr th .sg-table-sort{color:inherit;width:100%;text-align:left;display:flex;align-items:center;border-radius:.125rem;--gds-sys-color-focus-outline: $_header-color}::ng-deep .gds-table thead tr th .sg-table-sort:focus:not(:focus-visible){box-shadow:none;outline:0}::ng-deep .gds-table thead tr th .sg-table-sort:focus,::ng-deep .gds-table thead tr th .sg-table-sort:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}::ng-deep .gds-table thead tr th[aria-sort] .sg-table-sort:after,::ng-deep .gds-table thead tr th.sg-sortable .sg-table-sort:after{content:\"\";background:var(--gds-ref-pallet-base500);-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%3E%3Cpath%20d='M11.107%205.86147L10.6429%205.39741C10.5328%205.28726%2010.3546%205.28726%2010.2445%205.39741L6.60933%209.03257V1.03101C6.60933%200.876318%206.48276%200.749756%206.32808%200.749756H5.67183C5.51714%200.749756%205.39058%200.876318%205.39058%201.03101V9.03257L1.75542%205.39741C1.64526%205.28726%201.46714%205.28726%201.35698%205.39741L0.89292%205.86147C0.782764%205.97163%200.782764%206.14976%200.89292%206.25991L5.80073%2011.1677C5.91089%2011.2779%206.08901%2011.2779%206.19917%2011.1677L11.107%206.25991C11.2171%206.14976%2011.2171%205.97163%2011.107%205.86147Z'%20fill='%23ADADAD'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%3E%3Cpath%20d='M11.107%205.86147L10.6429%205.39741C10.5328%205.28726%2010.3546%205.28726%2010.2445%205.39741L6.60933%209.03257V1.03101C6.60933%200.876318%206.48276%200.749756%206.32808%200.749756H5.67183C5.51714%200.749756%205.39058%200.876318%205.39058%201.03101V9.03257L1.75542%205.39741C1.64526%205.28726%201.46714%205.28726%201.35698%205.39741L0.89292%205.86147C0.782764%205.97163%200.782764%206.14976%200.89292%206.25991L5.80073%2011.1677C5.91089%2011.2779%206.08901%2011.2779%206.19917%2011.1677L11.107%206.25991C11.2171%206.14976%2011.2171%205.97163%2011.107%205.86147Z'%20fill='%23ADADAD'/%3E%3C/svg%3E\");-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:right;mask-position:right;width:12px;height:12px;margin-left:.3rem}::ng-deep .gds-table thead tr th[aria-sort=ascending] .sg-table-sort:after{background:var(--sg-table-sort-icon-color-active);transform:rotate(180deg)}::ng-deep .gds-table thead tr th[aria-sort=descending] .sg-table-sort:after{background:var(--sg-table-sort-icon-color-active)}::ng-deep .gds-table tbody tr td,::ng-deep .gds-table tbody tr th{border-top:var(--sg-table-border-width) solid var(--gds-ref-pallet-base300);padding:var(--sg-table-cell-padding-y) var(--sg-table-cell-padding-x);vertical-align:top}::ng-deep .gds-table tbody tr.collapsible~.sub-row{display:none}::ng-deep .gds-table tbody tr.collapsible.expanded~.sub-row.show{display:table-row}::ng-deep .gds-table tbody tr td.collapse-control,::ng-deep .gds-table tbody tr td.select-control{width:15px}::ng-deep .gds-table tbody tr td.collapse-control>.collapse-btn{min-height:unset;padding:0;background:transparent}::ng-deep .gds-table tbody tr td.collapse-control>.collapse-btn>.icon-holder{cursor:pointer;width:12px}::ng-deep .gds-table tbody tr td.collapse-control>.collapse-btn>.icon-holder svg{width:12px;fill:#868686}::ng-deep .gds-table tbody tr td.collapse-control>.collapse-btn>.icon-holder svg[name=angle-right]{width:9px}@media (max-width: 36em){::ng-deep .gds-table.table-mobile{width:100%;table-layout:fixed;border-bottom:none}::ng-deep .gds-table.table-mobile thead{position:sticky;top:0;display:block;background:#333}}@media (max-width: 36em) and (hover: none) and (pointer: coarse){::ng-deep .gds-table.table-mobile thead{display:table-header-group}}@media (max-width: 36em){::ng-deep .gds-table.table-mobile thead tr{display:flex;overflow:auto}::ng-deep .gds-table.table-mobile thead tr::-webkit-scrollbar{display:none}::ng-deep .gds-table.table-mobile thead tr th{flex:auto;text-align:left!important;white-space:nowrap}::ng-deep .gds-table.table-mobile tbody tr{display:flex;flex-direction:column;border-bottom:var(--sg-table-border-width) solid var(--gds-ref-pallet-base300)}::ng-deep .gds-table.table-mobile tbody tr td{display:flex;justify-content:space-between;align-items:center;border-top:none!important}::ng-deep .gds-table.table-mobile tbody tr td:before{content:attr(data-label);font-weight:700}}::ng-deep .gds-table .web-view{display:table-cell}::ng-deep .gds-table .mobile-view{display:none}::ng-deep .gds-table tr:hover td{background-color:var(--gds-ref-pallet-base100)}::ng-deep .gds-table .gds-table__numeric-col{text-align:right}::ng-deep .gds-table thead tr th.gds-table__numeric-col .sg-table-sort{justify-content:end}::ng-deep .gds-table th button{background-color:#0000;border:0;font-family:inherit;font-size:inherit;font-weight:inherit;padding:0;cursor:pointer}::ng-deep .gds-table tbody{border-bottom:var(--sg-table-border-width) solid var(--sg-table-border-color)}::ng-deep .gds-table td{cursor:pointer}::ng-deep .gds-table tfoot{border-top:1px solid;border-bottom:none;font-weight:var(--sg-table-row-expand-font-weight, 500)}::ng-deep .gds-table tfoot ::ng-deep td{padding:var(--sg-table-cell-padding-y) var(--sg-table-cell-padding-x)}::ng-deep .gds-table th.column__check{height:vanilla-px-to-rem(32px);width:vanilla-px-to-rem(40px)}::ng-deep .gds-table th.column__check div{min-height:100%}::ng-deep .gds-table th.column__check input:checked+label:after{top:.6rem;display:inline}::ng-deep .gds-table th.column__check label{display:inline;padding:0}::ng-deep .gds-table th.column__check label:before{top:.55rem}::ng-deep .gds-table td.column__check{width:vanilla-px-to-rem(40px)}::ng-deep .gds-table td.column__check div{min-height:unset}::ng-deep .gds-table td.column__check label{padding:0}::ng-deep .gds-table td.column__check label:before{margin:0}::ng-deep .gds-table tr.row__expand{background-color:var(--gds-ref-pallet-base100)}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap{display:flex;flex-wrap:nowrap}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap.no-sub-items{padding-left:1.5rem}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .chevron-field{width:1.5rem}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .chevron-field svg{transition:transform .3s ease}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .chevron-field[aria-expanded=true] svg{transform:rotate(-180deg)}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .gds-item-field-text{padding-left:.2rem}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .gds-item-field-text .gds-item-field-extra-label{font-weight:var(--sg-table-row-expand-font-weight-light, 400)}::ng-deep .gds-table tr.row__expand td{font-weight:var(--sg-table-row-expand-font-weight, 500)}::ng-deep .gds-table label.form-control input[type=checkbox]{cursor:pointer;height:0;opacity:0;position:absolute;width:0;z-index:-1}::ng-deep .gds-table label.form-control{align-items:flex-start}::ng-deep .gds-table label.form-control:has(input[type=checkbox]){padding:.6875rem 1rem .5625rem}::ng-deep .gds-table label.form-control:has(input[type=checkbox]:focus-visible):focus:not(:focus-visible){box-shadow:none;outline:0}::ng-deep .gds-table label.form-control:has(input[type=checkbox]:focus-visible):focus,::ng-deep .gds-table label.form-control:has(input[type=checkbox]:focus-visible):focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}::ng-deep .gds-table label.form-control input[type=checkbox]~i{margin-right:.75rem;margin-top:.0625rem;flex-shrink:0;box-shadow:inset 0 0 0 1px var(--gds-sys-color-text-primary);position:relative;border-radius:var(--gds-sys-shape-corner-small);background-color:transparent;flex:0 0 auto;height:1rem;width:1rem}::ng-deep .gds-table label.form-control input[type=checkbox]:not(:checked):focus-visible~i{box-shadow:inset 0 0 0 1px var(--gds-sys-color-base-900)}::ng-deep .gds-table label.form-control:hover input[type=checkbox]:not(.disabled,:disabled,:checked,:indeterminate)~i{background-color:var(--gds-sys-color-base-200)}::ng-deep .gds-table label.form-control input[type=checkbox]:checked~i{background-color:var(--gds-sys-color-base-900)}::ng-deep .gds-table label.form-control input[type=checkbox]:indeterminate~i{background-color:var(--gds-sys-color-base-900)}::ng-deep .gds-table label.form-control input[type=checkbox]:indeterminate~i:after{border-bottom:2px solid var(--gds-sys-color-background-primary);border-left:none;transform:scale(1) rotate(0);opacity:1}::ng-deep .gds-table label.form-control:has(input[type=checkbox].is-invalid){border:.0625rem solid var(--gds-sys-color-text-error);margin-bottom:.5rem}::ng-deep .gds-table .is-invalid label.form-control:has(input[type=checkbox].is-invalid){border:none;margin:0}@supports (-moz-appearance: none){::ng-deep .gds-table label.form-control.is-invalid{border:.0625rem solid var(--gds-sys-color-text-error);margin-bottom:.5rem}::ng-deep .gds-table .is-invalid label.form-control.is-invalid{border:none;margin:0}}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled~i,::ng-deep .gds-table label.form-control input[type=checkbox].disabled~i{background:var(--sg-form-control-bg-disabled)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed;box-shadow:inset 0 0 0 1px var(--border-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled~i::placeholder,::ng-deep .gds-table label.form-control input[type=checkbox].disabled~i::placeholder{color:var(--text-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled:checked~i,::ng-deep .gds-table label.form-control input[type=checkbox].disabled:checked~i{background:var(--sg-form-control-bg-disabled)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed;box-shadow:inset 0 0 0 1px var(--border-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled:checked~i::placeholder,::ng-deep .gds-table label.form-control input[type=checkbox].disabled:checked~i::placeholder{color:var(--text-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled:checked~i:after,::ng-deep .gds-table label.form-control input[type=checkbox].disabled:checked~i:after{border-color:var(--border-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled~span,::ng-deep .gds-table label.form-control input[type=checkbox].disabled~span{color:var(--text-disabled-color)!important;cursor:not-allowed}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled~span::placeholder,::ng-deep .gds-table label.form-control input[type=checkbox].disabled~span::placeholder{color:var(--text-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]~i:after{content:\"\";opacity:0;position:absolute}::ng-deep .gds-table label.form-control input[type=checkbox]~i:after{border-bottom:3px solid var(--gds-sys-color-text-inverted);border-left:3px solid var(--gds-sys-color-text-inverted);height:.5rem;width:1rem;left:0;top:.1875rem;transform:scale(.601) rotate(-45deg);transform-origin:center}::ng-deep .gds-table label.form-control input[type=checkbox]:checked~i:after{opacity:1}::ng-deep .gds-table .gds-field-checkbox-wrap .form-control:has(input[type=checkbox]){padding:.75rem 1rem;border:1px solid transparent;border-radius:var(--gds-sys-shape-corner-medium);align-items:center;cursor:pointer;display:flex;flex-direction:row-reverse;font:inherit;justify-content:flex-end;position:relative;user-select:none;-webkit-user-select:none;line-height:1.125rem;padding:0}::ng-deep .gds-table .gds-field-checkbox-wrap .form-control:has(input[type=checkbox]):has(input:disabled){cursor:not-allowed}::ng-deep .gds-table #thead-checkbox input[type=checkbox]~i{box-shadow:inset 0 0 0 1px var(--gds-comp-checkbox-container-color);background-color:var(--gds-comp-checkbox-border-color)}::ng-deep .gds-table #thead-checkbox:has(input[type=checkbox]:focus-visible):focus-within{outline-color:var(--sg-table-header-color)}::ng-deep .gds-table #thead-checkbox input[type=checkbox]:hover:not(:checked)~i{box-shadow:inset 0 0 0 1px #ababab}::ng-deep .gds-table #thead-checkbox input[type=checkbox]:hover:not(:checked)~i:after{border-color:#ababab}::ng-deep .gds-table #thead-checkbox input[type=checkbox]:hover:checked~i{background-color:var(--gds-comp-checkbox-border-color);box-shadow:inset 0 0 0 1px #ababab}::ng-deep .gds-table #thead-checkbox input[type=checkbox]:hover:checked~i:after{border-color:#ababab}@media screen and (max-width: 600px){.gds-table thead{display:none}.gds-table .row__expand td:not(:first-child){display:none}.gds-table .row__expand td{display:table-cell}.gds-table .web-view{display:none}.gds-table .mobile-view{display:flex;align-items:center}.gds-table .mobile-view .mobile-view-field-wrap{display:grid;grid-template-columns:1fr 1fr;width:100%}.gds-table .mobile-view .mobile-view-field-wrap .mobile-view-field{display:flex;flex-direction:column;padding-bottom:.3rem}.gds-table .mobile-view .mobile-view-field-wrap .mobile-view-field:nth-child(odd){justify-self:start;align-items:start;text-align:start}.gds-table .mobile-view .mobile-view-field-wrap .mobile-view-field:nth-child(2n){align-items:end;justify-self:end;text-align:end}.gds-table .mobile-view .nav-chevron-field{width:1.5rem;padding-left:.5rem}.gds-table .mobile-view .nav-chevron-field svg{transition:transform .3s ease}.gds-table .mobile-view .nav-chevron-field[aria-expanded=true] svg{transform:rotate(-90deg)}.gds-table .mobile-view .settings-field{width:1.5rem;padding:0 1rem}.gds-table .mobile-view .settings-field svg{transition:all .3s ease}.gds-table .mobile-view .settings-field:hover svg{fill:var(--gds-sys-color-blue-dark-2)}}\n"] }]
|
|
375
|
+
args: [{ selector: 'nggv-table', template: "<ng-template #sortableThTemplate let-column>\n <button class=\"sg-table-sort\" *transloco=\"let t\">\n <ng-template #thButtonTemplate>\n {{ t(column.label ?? '') }}\n </ng-template>\n <ng-container\n *ngIf=\"\n customHeaderTemplates.get(column.property) as thTemplate;\n else thButtonTemplate\n \"\n >\n <ng-template\n *ngTemplateOutlet=\"thTemplate || null; context: { $implicit: column }\"\n >\n </ng-template>\n </ng-container>\n </button>\n</ng-template>\n\n<ng-template #notSortableThTemplate let-column>\n <ng-template #defaultThTemplate>\n <ng-container *transloco=\"let t\">\n {{ t(column.label ?? '') }}\n </ng-container>\n </ng-template>\n <ng-container\n *ngIf=\"\n customHeaderTemplates.get(column.property) as thTemplate;\n else defaultThTemplate\n \"\n >\n <ng-template\n *ngTemplateOutlet=\"thTemplate || null; context: { $implicit: column }\"\n >\n </ng-template>\n </ng-container>\n</ng-template>\n<table class=\"gds-table\" *transloco=\"let t\">\n <!-- Table header -->\n <thead>\n <tr>\n <!-- Checkbox column for header -->\n <th *ngIf=\"selectable\" class=\"column__check\">\n <div class=\"gds-field-checkbox-wrap\">\n <label\n [attr.for]=\"'cb_header__' + initId\"\n class=\"form-control\"\n id=\"thead-checkbox\"\n >\n <input\n type=\"checkbox\"\n [formControl]=\"groupSelector\"\n [attr.aria-label]=\"ariaLabelCheckboxTh\"\n [attr.id]=\"'cb_header__' + initId\"\n [attr.data-thook]=\"thook\"\n />\n <i></i>\n </label>\n </div>\n </th>\n\n <!-- Other columns -->\n <th\n *ngFor=\"let column of tableColumns\"\n [columnType]=\"column.valueType\"\n [sortable]=\"column.sortable\"\n [sortOrder]=\"column.order\"\n [thook]=\"'column-header-' + !!column.property\"\n (click)=\"toggleSortOrder(column)\"\n (keydown.space)=\"toggleSortOrderWithSpace($event, column)\"\n [attr.aria-label]=\"getAriaLabel(column)\"\n [attr.aria-sort]=\"column.order + 'ending'\"\n >\n <ng-container *ngIf=\"column.sortable\">\n <ng-container\n *ngTemplateOutlet=\"\n sortableThTemplate;\n context: { $implicit: column, column: column }\n \"\n >\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!column.sortable\">\n <ng-container\n *ngTemplateOutlet=\"\n notSortableThTemplate;\n context: { $implicit: column, column: column }\n \"\n >\n </ng-container>\n </ng-container>\n </th>\n </tr>\n </thead>\n\n <!-- Table body -->\n <tbody [formGroup]=\"rowSelectors\">\n <ng-container *ngFor=\"let item of tableData; let i = index\">\n <tr\n [class.row__expand]=\"expandable\"\n [attr.data-thook]=\"item | trThook: i : trThookFn\"\n [attr.data-hasrowspan]=\"hasRowSpan(item)\"\n >\n <!-- Checkbox column for row -->\n <td *ngIf=\"selectable\" class=\"column__check\">\n <div class=\"gds-field-checkbox-wrap\">\n <label\n [attr.for]=\"'cb_row__' + initId + '_' + i\"\n class=\"form-control\"\n >\n <input\n *ngIf=\"rowSelectors.get(item[rowId])\"\n type=\"checkbox\"\n [formControlName]=\"item[rowId]\"\n [attr.aria-label]=\"ariaLabelCheckboxTr\"\n [attr.id]=\"'cb_row__' + initId + '_' + i\"\n [attr.data-thook]=\"'row-select-' + i\"\n />\n <i></i>\n </label>\n </div>\n </td>\n\n <!-- Other columns -->\n <td\n *ngFor=\"let column of tableColumns; let i = index\"\n [columnType]=\"column.valueType\"\n [value]=\"item[column.property]\"\n (click)=\"propagateItemClick(item, column.preventDefaultClickEvent)\"\n >\n <ng-container *ngIf=\"expandable && i === 0; else nonExpandableTemplate\">\n <div\n class=\"gds-item-field-wrap\"\n [ngClass]=\"{ 'no-sub-items': item.subItems.length === 0 }\"\n >\n <span\n *ngIf=\"item.subItems.length > 0\"\n role=\"button\"\n tabindex=\"0\"\n class=\"chevron-field\"\n [attr.aria-expanded]=\"rowSelectors.get(item[rowId])?.value\"\n >\n <svg\n width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M20 9L12 17L4 9\"\n stroke=\"currentColor\"\n stroke-width=\"1.6\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </span>\n <span class=\"gds-item-field-text\">\n {{ item[column.property] }} ({{ item.subItems.length }})\n <div *ngIf=\"column.columnLabel\" class=\"gds-item-field-extra-label\">\n {{ item[column.columnLabel] }}\n </div>\n </span>\n </div>\n </ng-container>\n\n <ng-template #nonExpandableTemplate>\n <ng-container *ngIf=\"customRowTemplates.get(column.property) as tdTemplate; else defaultTdTemplate\">\n <ng-template *ngTemplateOutlet=\"tdTemplate; context: { $implicit: item }\">\n </ng-template>\n </ng-container>\n <ng-template #defaultTdTemplate>\n {{ item[column.property] }}\n </ng-template>\n </ng-template>\n </td>\n </tr>\n\n <!-- Expanded Sub Items -->\n <ng-container *ngIf=\"expandable && rowSelectors.get(item[rowId])?.value\">\n <tr *ngFor=\"let subItem of item[subItemsProp]\">\n <td\n *ngFor=\"let column of tableColumns\"\n class=\"web-view\"\n [columnType]=\"column.valueType\"\n [value]=\"subItem[column.property]\"\n (click)=\"propagateItemClick(subItem, column.preventDefaultClickEvent)\"\n >\n <ng-container *ngIf=\"customRowTemplates.get(column.property) as tdTemplate; else defaultTdTemplate\">\n <ng-template *ngTemplateOutlet=\"tdTemplate; context: { $implicit: subItem }\">\n </ng-template>\n </ng-container>\n <ng-template #defaultTdTemplate>\n {{ subItem[column.property] }}\n </ng-template>\n </td>\n\n <td\n class=\"mobile-view\"\n [attr.colspan]=\"tableColumns.length\"\n (click)=\"propagateItemClick(subItem)\"\n >\n <dl class=\"mobile-view-field-wrap\">\n <ng-container *ngFor=\"let column of tableColumns\">\n <div\n *ngIf=\"!column.hidePropertyOnMobile\"\n class=\"mobile-view-field\"\n [columnType]=\"column.valueType\"\n [value]=\"subItem[column.property]\"\n >\n <dt *ngIf=\"!column.hideLabelOnMobile\">\n <ng-container *transloco=\"let t\">\n {{ t(column.label ?? '') }}\n </ng-container>\n </dt>\n <dd [ngStyle]=\"column.boldTextOnMobile ? { 'font-weight': '500' } : {'font-weight': '400'}\">\n <ng-container *ngIf=\"customRowTemplates.get(column.property) as tdTemplate; else defaultTdTemplate\">\n <ng-template *ngTemplateOutlet=\"tdTemplate; context: { $implicit: subItem }\"></ng-template>\n </ng-container>\n <ng-template #defaultTdTemplate>\n {{ subItem[column.property] }}\n </ng-template>\n </dd>\n <ng-content></ng-content>\n </div>\n </ng-container>\n </dl>\n <span\n role=\"button\"\n tabindex=\"0\"\n class=\"nav-chevron-field\"\n [attr.aria-expanded]=\"rowSelectors.get(item[rowId])?.value\"\n >\n <svg\n width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M20 9L12 17L4 9\"\n stroke=\"currentColor\"\n stroke-width=\"1.6\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </span>\n </td>\n </tr>\n </ng-container>\n\n <!-- Custom appended rows -->\n <ng-container *ngIf=\"appendedRowsTemplateRef as trTemplate\">\n <!-- Cannot infer trTemplate as TemplateRef therefore null -->\n <ng-container\n *ngTemplateOutlet=\"trTemplate || null; context: { $implicit: item }\"\n >\n </ng-container>\n </ng-container>\n </ng-container>\n </tbody>\n\n <!-- Table footer -->\n <tfoot *ngIf=\"customFooterTemplateRef as trTemplate\">\n <!-- Cannot infer trTemplate as TemplateRef therefore null -->\n <ng-container *ngTemplateOutlet=\"trTemplate || null\"> </ng-container>\n </tfoot>\n</table>\n", styles: ["::ng-deep .gds-table{--gds-ref-pallet-base100: #f8f8f8;--gds-ref-pallet-base600: hsl(0, 0%, 53%);--sg-table-header-background: #1a1a1a;--sg-table-header-color: #fff;--sg-table-cell-padding-x: .5rem;--sg-table-cell-padding-y: .6875rem;--sg-table-border-width: 1px;--sg-table-border-color: var(--gds-ref-pallet-base300);--sg-table-sort-icon-color: var(--gds-ref-pallet-base600);--gds-ref-pallet-base500: hsl(0, 0%, 68%);--sg-table-sort-icon-color-active: #fff;--gds-sys-color-surface: #fff;--gds-ref-pallet-base200: #e8e8e8;--gds-sys-color-base: #333;--gds-sys-shape-corner-small: .125rem;--gds-sys-color-blue-dark-2: #007ac7;--gds-sys-shape-corner-medium: .25rem;--sg-table-row-expand-font-weight: 500;--sg-table-row-expand-font-weight-light: 400;border-collapse:collapse;border-bottom:var(--sg-table-border-width) solid var(--gds-ref-pallet-base300);width:100%;border-bottom:none;--gds-comp-checkbox-container-height: 1rem;--gds-comp-checkbox-container-width: 1rem;--gds-comp-checkbox-container-color: var(--gds-sys-color-background-primary);--gds-comp-checkbox-container-color-disabled: var(--gds-ref-pallet-base300);--gds-comp-checkbox-border-color: var(--gds-ref-pallet-base900);--gds-comp-checkbox-border-radius: var(--gds-sys-shape-corner-small);--gds-comp-checkbox-hover-border-color: var(--gds-ref-pallet-base600);--gds-comp-checkbox-container-color-selected: var(--gds-ref-pallet-base900);--gds-comp-checkbox-border-color-selected: var(--gds-sys-color-text-inverted);--gds-comp-checkbox-border-color-focus: var(--gds-sys-color-dark-blue-2)}::ng-deep .gds-table thead tr th{background:#333;color:var(--sg-table-header-color);padding:.3rem var(--sg-table-cell-padding-x);text-align:left;font-weight:500}::ng-deep .gds-table thead tr th.icon-invert.sg-sortable .sg-table-sort:after{margin-left:0;margin-right:.3rem;order:-1}::ng-deep .gds-table thead tr th .sg-table-sort{color:inherit;width:100%;text-align:left;display:flex;align-items:center;border-radius:.125rem;--gds-sys-color-focus-outline: $_header-color}::ng-deep .gds-table thead tr th .sg-table-sort:focus:not(:focus-visible){box-shadow:none;outline:0}::ng-deep .gds-table thead tr th .sg-table-sort:focus,::ng-deep .gds-table thead tr th .sg-table-sort:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}::ng-deep .gds-table thead tr th[aria-sort] .sg-table-sort:after,::ng-deep .gds-table thead tr th.sg-sortable .sg-table-sort:after{content:\"\";background:var(--gds-ref-pallet-base500);-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%3E%3Cpath%20d='M11.107%205.86147L10.6429%205.39741C10.5328%205.28726%2010.3546%205.28726%2010.2445%205.39741L6.60933%209.03257V1.03101C6.60933%200.876318%206.48276%200.749756%206.32808%200.749756H5.67183C5.51714%200.749756%205.39058%200.876318%205.39058%201.03101V9.03257L1.75542%205.39741C1.64526%205.28726%201.46714%205.28726%201.35698%205.39741L0.89292%205.86147C0.782764%205.97163%200.782764%206.14976%200.89292%206.25991L5.80073%2011.1677C5.91089%2011.2779%206.08901%2011.2779%206.19917%2011.1677L11.107%206.25991C11.2171%206.14976%2011.2171%205.97163%2011.107%205.86147Z'%20fill='%23ADADAD'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='12'%20height='12'%20viewBox='0%200%2012%2012'%20fill='none'%3E%3Cpath%20d='M11.107%205.86147L10.6429%205.39741C10.5328%205.28726%2010.3546%205.28726%2010.2445%205.39741L6.60933%209.03257V1.03101C6.60933%200.876318%206.48276%200.749756%206.32808%200.749756H5.67183C5.51714%200.749756%205.39058%200.876318%205.39058%201.03101V9.03257L1.75542%205.39741C1.64526%205.28726%201.46714%205.28726%201.35698%205.39741L0.89292%205.86147C0.782764%205.97163%200.782764%206.14976%200.89292%206.25991L5.80073%2011.1677C5.91089%2011.2779%206.08901%2011.2779%206.19917%2011.1677L11.107%206.25991C11.2171%206.14976%2011.2171%205.97163%2011.107%205.86147Z'%20fill='%23ADADAD'/%3E%3C/svg%3E\");-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:right;mask-position:right;width:12px;height:12px;margin-left:.3rem}::ng-deep .gds-table thead tr th[aria-sort=ascending] .sg-table-sort:after{background:var(--sg-table-sort-icon-color-active);transform:rotate(180deg)}::ng-deep .gds-table thead tr th[aria-sort=descending] .sg-table-sort:after{background:var(--sg-table-sort-icon-color-active)}::ng-deep .gds-table tbody tr td,::ng-deep .gds-table tbody tr th{border-top:var(--sg-table-border-width) solid var(--gds-ref-pallet-base300);padding:var(--sg-table-cell-padding-y) var(--sg-table-cell-padding-x);vertical-align:top}::ng-deep .gds-table tbody tr.collapsible~.sub-row{display:none}::ng-deep .gds-table tbody tr.collapsible.expanded~.sub-row.show{display:table-row}::ng-deep .gds-table tbody tr td.collapse-control,::ng-deep .gds-table tbody tr td.select-control{width:15px}::ng-deep .gds-table tbody tr td.collapse-control>.collapse-btn{min-height:unset;padding:0;background:transparent}::ng-deep .gds-table tbody tr td.collapse-control>.collapse-btn>.icon-holder{cursor:pointer;width:12px}::ng-deep .gds-table tbody tr td.collapse-control>.collapse-btn>.icon-holder svg{width:12px;fill:#868686}::ng-deep .gds-table tbody tr td.collapse-control>.collapse-btn>.icon-holder svg[name=angle-right]{width:9px}@media (max-width: 36em){::ng-deep .gds-table.table-mobile{width:100%;table-layout:fixed;border-bottom:none}::ng-deep .gds-table.table-mobile thead{position:sticky;top:0;display:block;background:#333}}@media (max-width: 36em) and (hover: none) and (pointer: coarse){::ng-deep .gds-table.table-mobile thead{display:table-header-group}}@media (max-width: 36em){::ng-deep .gds-table.table-mobile thead tr{display:flex;overflow:auto}::ng-deep .gds-table.table-mobile thead tr::-webkit-scrollbar{display:none}::ng-deep .gds-table.table-mobile thead tr th{flex:auto;text-align:left!important;white-space:nowrap}::ng-deep .gds-table.table-mobile tbody tr{display:flex;flex-direction:column;border-bottom:var(--sg-table-border-width) solid var(--gds-ref-pallet-base300)}::ng-deep .gds-table.table-mobile tbody tr td{display:flex;justify-content:space-between;align-items:center;border-top:none!important}::ng-deep .gds-table.table-mobile tbody tr td:before{content:attr(data-label);font-weight:700}}::ng-deep .gds-table .web-view{display:table-cell}::ng-deep .gds-table .mobile-view{display:none}::ng-deep .gds-table tr:hover td{background-color:var(--gds-ref-pallet-base100)}::ng-deep .gds-table .gds-table__numeric-col{text-align:right}::ng-deep .gds-table thead tr th.gds-table__numeric-col .sg-table-sort{justify-content:end}::ng-deep .gds-table th button{background-color:#0000;border:0;font-family:inherit;font-size:inherit;font-weight:inherit;padding:0;cursor:pointer}::ng-deep .gds-table tbody{border-bottom:var(--sg-table-border-width) solid var(--sg-table-border-color)}::ng-deep .gds-table td{cursor:pointer}::ng-deep .gds-table tfoot{border-top:1px solid;border-bottom:none;font-weight:var(--sg-table-row-expand-font-weight, 500)}::ng-deep .gds-table tfoot ::ng-deep td{padding:var(--sg-table-cell-padding-y) var(--sg-table-cell-padding-x)}::ng-deep .gds-table th.column__check{height:vanilla-px-to-rem(32px);width:vanilla-px-to-rem(40px)}::ng-deep .gds-table th.column__check div{min-height:100%}::ng-deep .gds-table th.column__check input:checked+label:after{top:.6rem;display:inline}::ng-deep .gds-table th.column__check label{display:inline;padding:0}::ng-deep .gds-table th.column__check label:before{top:.55rem}::ng-deep .gds-table td.column__check{width:vanilla-px-to-rem(40px)}::ng-deep .gds-table td.column__check div{min-height:unset}::ng-deep .gds-table td.column__check label{padding:0}::ng-deep .gds-table td.column__check label:before{margin:0}::ng-deep .gds-table tr.row__expand{background-color:var(--gds-ref-pallet-base100)}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap{display:flex;flex-wrap:nowrap}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap.no-sub-items{padding-left:1.5rem}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .chevron-field{width:1.5rem}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .chevron-field svg{transition:transform .3s ease}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .chevron-field[aria-expanded=true] svg{transform:rotate(-180deg)}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .gds-item-field-text{padding-left:.2rem}::ng-deep .gds-table tr.row__expand .gds-item-field-wrap .gds-item-field-text .gds-item-field-extra-label{font-weight:var(--sg-table-row-expand-font-weight-light, 400)}::ng-deep .gds-table tr.row__expand td{font-weight:var(--sg-table-row-expand-font-weight, 500)}::ng-deep .gds-table label.form-control input[type=checkbox]{cursor:pointer;height:0;opacity:0;position:absolute;width:0;z-index:-1}::ng-deep .gds-table label.form-control{align-items:flex-start}::ng-deep .gds-table label.form-control:has(input[type=checkbox]){padding:.6875rem 1rem .5625rem}::ng-deep .gds-table label.form-control:has(input[type=checkbox]:focus-visible):focus:not(:focus-visible){box-shadow:none;outline:0}::ng-deep .gds-table label.form-control:has(input[type=checkbox]:focus-visible):focus,::ng-deep .gds-table label.form-control:has(input[type=checkbox]:focus-visible):focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}::ng-deep .gds-table label.form-control input[type=checkbox]~i{margin-right:.75rem;margin-top:.0625rem;flex-shrink:0;box-shadow:inset 0 0 0 1px var(--gds-sys-color-text-primary);position:relative;border-radius:var(--gds-sys-shape-corner-small);background-color:transparent;flex:0 0 auto;height:1rem;width:1rem}::ng-deep .gds-table label.form-control input[type=checkbox]:not(:checked):focus-visible~i{box-shadow:inset 0 0 0 1px var(--gds-sys-color-base-900)}::ng-deep .gds-table label.form-control:hover input[type=checkbox]:not(.disabled,:disabled,:checked,:indeterminate)~i{background-color:var(--gds-sys-color-base-200)}::ng-deep .gds-table label.form-control input[type=checkbox]:checked~i{background-color:var(--gds-sys-color-base-900)}::ng-deep .gds-table label.form-control input[type=checkbox]:indeterminate~i{background-color:var(--gds-sys-color-base-900)}::ng-deep .gds-table label.form-control input[type=checkbox]:indeterminate~i:after{border-bottom:2px solid var(--gds-sys-color-background-primary);border-left:none;transform:scale(1) rotate(0);opacity:1}::ng-deep .gds-table label.form-control:has(input[type=checkbox].is-invalid){border:.0625rem solid var(--gds-sys-color-text-error);margin-bottom:.5rem}::ng-deep .gds-table .is-invalid label.form-control:has(input[type=checkbox].is-invalid){border:none;margin:0}@supports (-moz-appearance: none){::ng-deep .gds-table label.form-control.is-invalid{border:.0625rem solid var(--gds-sys-color-text-error);margin-bottom:.5rem}::ng-deep .gds-table .is-invalid label.form-control.is-invalid{border:none;margin:0}}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled~i,::ng-deep .gds-table label.form-control input[type=checkbox].disabled~i{background:var(--sg-form-control-bg-disabled)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed;box-shadow:inset 0 0 0 1px var(--border-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled~i::placeholder,::ng-deep .gds-table label.form-control input[type=checkbox].disabled~i::placeholder{color:var(--text-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled:checked~i,::ng-deep .gds-table label.form-control input[type=checkbox].disabled:checked~i{background:var(--sg-form-control-bg-disabled)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed;box-shadow:inset 0 0 0 1px var(--border-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled:checked~i::placeholder,::ng-deep .gds-table label.form-control input[type=checkbox].disabled:checked~i::placeholder{color:var(--text-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled:checked~i:after,::ng-deep .gds-table label.form-control input[type=checkbox].disabled:checked~i:after{border-color:var(--border-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled~span,::ng-deep .gds-table label.form-control input[type=checkbox].disabled~span{color:var(--text-disabled-color)!important;cursor:not-allowed}::ng-deep .gds-table label.form-control input[type=checkbox]:disabled~span::placeholder,::ng-deep .gds-table label.form-control input[type=checkbox].disabled~span::placeholder{color:var(--text-disabled-color)}::ng-deep .gds-table label.form-control input[type=checkbox]~i:after{content:\"\";opacity:0;position:absolute}::ng-deep .gds-table label.form-control input[type=checkbox]~i:after{border-bottom:3px solid var(--gds-sys-color-text-inverted);border-left:3px solid var(--gds-sys-color-text-inverted);height:.5rem;width:1rem;left:0;top:.1875rem;transform:scale(.601) rotate(-45deg);transform-origin:center}::ng-deep .gds-table label.form-control input[type=checkbox]:checked~i:after{opacity:1}::ng-deep .gds-table .gds-field-checkbox-wrap .form-control:has(input[type=checkbox]){padding:.75rem 1rem;border:1px solid transparent;border-radius:var(--gds-sys-shape-corner-medium);align-items:center;cursor:pointer;display:flex;flex-direction:row-reverse;font:inherit;justify-content:flex-end;position:relative;user-select:none;-webkit-user-select:none;line-height:1.125rem;padding:0}::ng-deep .gds-table .gds-field-checkbox-wrap .form-control:has(input[type=checkbox]):has(input:disabled){cursor:not-allowed}::ng-deep .gds-table #thead-checkbox input[type=checkbox]~i{box-shadow:inset 0 0 0 1px var(--gds-comp-checkbox-container-color);background-color:var(--gds-comp-checkbox-border-color)}::ng-deep .gds-table #thead-checkbox:has(input[type=checkbox]:focus-visible):focus-within{outline-color:var(--sg-table-header-color)}::ng-deep .gds-table #thead-checkbox input[type=checkbox]:hover:not(:checked)~i{box-shadow:inset 0 0 0 1px #ababab}::ng-deep .gds-table #thead-checkbox input[type=checkbox]:hover:not(:checked)~i:after{border-color:#ababab}::ng-deep .gds-table #thead-checkbox input[type=checkbox]:hover:checked~i{background-color:var(--gds-comp-checkbox-border-color);box-shadow:inset 0 0 0 1px #ababab}::ng-deep .gds-table #thead-checkbox input[type=checkbox]:hover:checked~i:after{border-color:#ababab}@media screen and (max-width: 600px){.gds-table thead{display:none}.gds-table .row__expand td:not(:first-child){display:none}.gds-table .row__expand td{display:table-cell}.gds-table .web-view{display:none}.gds-table .mobile-view{display:flex;align-items:center}.gds-table .mobile-view .mobile-view-field-wrap{display:grid;grid-template-columns:1fr 1fr;width:100%}.gds-table .mobile-view .mobile-view-field-wrap .mobile-view-field{display:flex;flex-direction:column;padding-bottom:.3rem}.gds-table .mobile-view .mobile-view-field-wrap .mobile-view-field:nth-child(odd){justify-self:start;align-items:start;text-align:start}.gds-table .mobile-view .mobile-view-field-wrap .mobile-view-field:nth-child(2n){align-items:end;justify-self:end;text-align:end}.gds-table .mobile-view .nav-chevron-field{width:1.5rem;padding-left:.5rem}.gds-table .mobile-view .nav-chevron-field svg{transition:transform .3s ease}.gds-table .mobile-view .nav-chevron-field[aria-expanded=true] svg{transform:rotate(-90deg)}.gds-table .mobile-view .settings-field{width:1.5rem;padding:0 1rem}.gds-table .mobile-view .settings-field svg{transition:all .3s ease}.gds-table .mobile-view .settings-field:hover svg{fill:var(--gds-sys-color-blue-dark-2)}}\n"] }]
|
|
376
376
|
}], propDecorators: { customTemplates: [{
|
|
377
377
|
type: ContentChildren,
|
|
378
378
|
args: [TableTemplateDirective, { descendants: true }]
|
|
@@ -417,4 +417,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
417
417
|
}], ariaLabelsOrderBy: [{
|
|
418
418
|
type: Input
|
|
419
419
|
}] } });
|
|
420
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvdGFibGUvdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvdGFibGUvdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUNOLFNBQVMsR0FHVixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUVyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRWxELE9BQU8sRUFDTCxvQ0FBb0MsRUFDcEMsNEJBQTRCLEVBQzVCLHNCQUFzQixHQUN2QixNQUFNLG1CQUFtQixDQUFBO0FBTzFCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUE7Ozs7Ozs7QUFFekUsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFBO0FBRXBCLFNBQVMsaUJBQWlCLENBQUMsUUFBdUI7SUFDaEQsTUFBTSxXQUFXLEdBQTJCLEVBQUUsQ0FBQTtJQUM5QyxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksUUFBUSxFQUFFLENBQUM7UUFDcEMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQTtJQUMxQixDQUFDO0lBQ0QsT0FBTyxXQUFXLENBQUE7QUFDcEIsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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dGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBVbnR5cGVkRm9ybUNvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3JtcydcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5pbXBvcnQge1xuICBUYWJsZUFwcGVuZGFibGVSb3dzVGVtcGxhdGVEaXJlY3RpdmUsXG4gIFRhYmxlRm9vdGVyVGVtcGxhdGVEaXJlY3RpdmUsXG4gIFRhYmxlVGVtcGxhdGVEaXJlY3RpdmUsXG59IGZyb20gJy4vdGFibGUuZGlyZWN0aXZlJ1xuaW1wb3J0IHtcbiAgYXJpYUxhYmVsc09yZGVyQnksXG4gIE9yZGVyQnksXG4gIFRhYmxlQ29sdW1uLFxuICBUYWJsZVJvdyxcbn0gZnJvbSAnLi90YWJsZS5tb2RlbHMnXG5pbXBvcnQgeyBvcmRlckJ5QXNjZW5kaW5nLCBvcmRlckJ5RGVzY2VuZGluZywgcGljayB9IGZyb20gJy4vdGFibGUudG9vbHMnXG5cbmxldCBzdGF0aWNJbml0SWQgPSAwXG5cbmZ1bmN0aW9uIG9iamVjdEZyb21FbnRyaWVzKGVudHJ5TWFwOiBNYXA8YW55LCBhbnk+KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gIGNvbnN0IGZyb21FbnRyaWVzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge31cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgZW50cnlNYXApIHtcbiAgICBmcm9tRW50cmllc1trZXldID0gdmFsdWVcbiAgfVxuICByZXR1cm4gZnJvbUVudHJpZXNcbn1cblxuLyoqXG4gKiBBIHRhYmxlIGNvbXBvbmVudCB3aXRoIGJ1aWx0LWluIHNvcnRpbmcgYW5kIHNlbGVjdGluZyBmdW5jdGlvbmFsaXR5LlxuICogQnkgZGVmYXVsdCwgdGFibGUgY2VsbHMgKGkuZS4gYDx0ZD5gIGVsZW1lbnRzKSBhbmQgdGFibGUgaGVhZGVycyAoaS5lLiBgPHRoPmAgZWxlbWVudHMpIGFyZSBwb3B1bGF0ZWQgd2l0aCB0ZXh0IG9ubHkgdmFsdWVzLlxuICpcbiAqIFRvIGN1c3RvbWl6ZSB0aGUgY29udGVudHMgb2YgZWl0aGVyIHRoZSBgPHRkPmAgb3IgYDx0aD5gIGVsZW1lbnRzIChsaWtlIGFkZGluZyBjb2xvciwgaWNvbnMsIGZvcm0gZmllbGRzLCBleHRyYSBwYWRkaW5nIGV0Yy4pLCBwcm92aWRlXG4gKiB0aGUgY3VzdG9taXplZCBjb250ZW50IHdpdGhpbiBhIGA8bmctdGVtcGxhdGU+YC10YWcsIGFuZCBwbGFjZSB0aGUgbmctdGVtcGxhdGUgaW4gdGhlIGh0bWwgYmV0d2VlbiB0aGUgc3RhcnQgYW5kIGVuZGluZyB0YWcgb2ZcbiAqIHRoZSBgPG5nZ3YtdGFibGU+YC4gQWRkIGEgYHRhYmxlQ29sdW1uYC1hdHRyaWJ1dGUgdG8gdGhlIGA8bmctdGVtcGxhdGU+YC1lbGVtZW50LCBhbmQgc2V0IHRoZSB2YWx1ZSB0byB0aGUgc3BlY2lmaWMgY29sdW1uIHByb3BlcnR5LlxuICogU2V0IGB0YWJsZUNvbHVtblRhcmdldGAgdG8gZWl0aGVyIGB0aGAsIGB0ZGAgb3IgYGJvdGhgIChkZWZhdWx0KSBkZXBlbmRpbmcgb24gdGFyZ2V0IGVsZW1lbnQgdHlwZS5cbiAqIFRoZSBlbnRpcmUgcm93IGZyb20gdGhlIGBASW5wdXQoKSB0YWJsZURhdGFgIGlzIGF2YWlsYWJsZSBmcm9tIHRoZSBjb250ZXh0IGAkaW1wbGljaXRgIHZhcmlhYmxlLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8IS0tIGZvciB0YWJsZSBjZWxscyBpLmUuIHRkLWVsZW1lbnRzIC0tPlxuICogPG5nLXRlbXBsYXRlIHRhYmxlQ29sdW1uPVwic3RhdHVzXCIgdGFibGVDb2x1bW5UYXJnZXQ9XCJ0ZFwiIGxldC1teURhdGFWYXI9XCIkaW1wbGljaXRcIiBsZXQtc3RhdHVzPVwiJGltcGxpY2l0LnN0YXR1c1wiPlxuICogIDwhLS0gbXkgY3VzdG9tIHN0YXR1cyBlbGVtZW50IC0tPlxuICogPC9uZy10ZW1wbGF0ZT5cbiAqXG4gKiBAZXhhbXBsZVxuICogPCEtLSBmb3IgdGFibGUgaGVhZGVycyBpLmUuIHRoLWVsZW1lbnRzIC0tPlxuICogPG5nLXRlbXBsYXRlIHRhYmxlQ29sdW1uPVwic3RhdHVzXCIgdGFibGVDb2x1bW5UYXJnZXQ9XCJ0aFwiIGxldC1teURhdGFWYXI9XCIkaW1wbGljaXRcIiBsZXQtc3RhdHVzPVwiJGltcGxpY2l0LnN0YXR1c1wiPlxuICogIDwhLS0gbXkgY3VzdG9tIHN0YXR1cyBlbGVtZW50IC0tPlxuICogPC9uZy10ZW1wbGF0ZT5cbiAqXG4gKiBJdCBpcyBwb3NzaWJsZSB0byBhZGQgY3VzdG9tIHJvd3MgdGhhdCBhcmUgYXBwZW5kZWQgYmVsb3cgZGF0YSByb3cuIFVzZSBgPG5nLXRlbXBsYXRlPmAtdGFnIGFuZCBwbGFjZSB0aGUgbmctdGVtcGxhdGUgaW4gdGhlIGh0bWwgYmV0d2VlbiB0aGUgc3RhcnQgYW5kIGVuZGluZyB0YWcgb2ZcbiAqIHRoZSBgPG5nZ3YtdGFibGU+YC4gQWRkIGEgYHRhYmxlQXBwZW5kYWJsZVJvd3NgLWF0dHJpYnV0ZSB0byB0aGUgYDxuZy10ZW1wbGF0ZT5gLWVsZW1lbnQuIEFueSBgdHJgIGVsZW1lbnRzIHRoYXQgZXhpc3Qgd2l0aGluIGA8bmctdGVtcGxhdGUgdGFibGVBcHBlbmRhYmxlUm93cz5gIGFuZCBgPC9uZy10ZW1wbGF0ZT5gIHRhZ3Mgd2lsbCBiZSBwdXQgYmVsb3cgZGF0YSByb3cncyBgdHJgIGVsZW1lbnQgaW4gdGhlIHRhYmxlLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8IS0tIGN1c3RvbSBhcHBlbmRlZCByb3dzIC0tPlxuICogPG5nLXRlbXBsYXRlIHRhYmxlQXBwZW5kYWJsZVJvd3MgbGV0LW15RGF0YVZhcj1cIiRpbXBsaWNpdFwiIGxldC1zdGF0dXM9XCIkaW1wbGljaXQuc3RhdHVzXCI+XG4gKiAgPHRyPlxuICogICA8IS0tIGZpcnN0IHJvdydzIGNvbHVtbnMgLS0+XG4gKiAgPC90cj5cbiAqICA8IS0tIG1vcmUgcm93cyBpZiBuZWVkZWQgLS0+XG4gKiA8L25nLXRlbXBsYXRlPlxuICpcbiAqIElmIGN1c3RvbSBzdHlsaW5nIGlzIG5lZWRlZCBmb3IgZGF0YSByb3cgdGhhdCBoYXMgYXBwZW5kZWQgcm93cywgeW91IGNhbiB1c2UgZGF0YSBhdHRyaWJ1dGUgYGRhdGEtaGFzcm93c3BhbmAgdG8gZGlzdGluZ3Vpc2ggaXQgZnJvbSBkYXRhIHJvdyB3aXRob3V0IGFwcGVuZGVkIHJvd3MuXG4gKiBZb3UgY2FuIHBhc3MgeW91ciBvd24gY3VzdG9tIG1ldGhvZCB3aXRoIGNvbmRpdGlvbmFsIGxvZ2ljIHRvIGRlZmluZSB3aGF0IHZhbHVlIHdpbGwgYmUgcGFzc2VkIHRvIGRhdGEtaGFzcm93c3Bhbi5cbiAqIEluIGFkZGl0aW9uLCBoYXNSb3dTcGFuIGZ1bmN0aW9uIGFjY2VwdHMgaXRlbSBmcm9tIGBASW5wdXQoKSB0YWJsZURhdGFgIGFzIGFyZ3VtZW50IHdoaWNoIGlzIG9mIHRoZSBzYW1lIHR5cGUgYXMgdmFsdWUgcGFzc2VkIHRvIGNvbnRleHQgYCRpbXBsaWNpdGAgdmFyaWFibGUuXG4gKiBJTVBPUlRBTlQ6IHVzZSBhcnJvdyBmdW5jdGlvbiBzdHlsZSBmb3IgZGVmaW5pbmcgZnVuY3Rpb24gaW5zaWRlIGNvbXBvbmVudCwgaS5lLiBgaGFzUm93U3BhbiA9ICh2YWx1ZSkgPT4gb3V0cHV0O2AuIElmIHJlZ3VsYXIgZnVuY3Rpb24gd2lsbCBiZSBkZWZpbmVkLCBpLmUuIGBoYXNSb3dTcGFuKHZhbHVlKSB7IHJldHVybiBvdXRwdXQ7IH1gLCBiaW5kaW5nIHdpbGwgbm90IHdvcmsuXG4gKlxuICogQGV4YW1wbGVcbiAqIDwhLS0gaW5zaWRlIGNvbXBvbmVudFxuICogY2xhc3MgQ3VzdG9tQ29tcG9uZW50IHtcbiAqICBjdXN0b21IYXNSb3dTcGFuRnVuY3Rpb24gPSAoaXRlbTogQ3VzdG9tRGF0YVR5cGUpID0+IGl0ZW0uYXBwZW5kZWRSb3dzRGF0YS5sZW5ndGggPiAwID8gdHJ1ZSA6IGZhbHNlO1xuICogfVxuICogLS0+XG4gKiA8IS0tIGluc2lkZSBzdHlsZXNoZWV0c1xuICogW2RhdGEtaGFzcm93c3Bhbj1cInRydWVcIl0ge1xuICogIGNvbG9yOiBibHVlO1xuICogfVxuICogLmFwcGVuZGVkLXJvdyB7XG4gKiAgY29sb3I6IGJsdWU7XG4gKiB9XG4gKiAtLT5cbiAqIDxuZ2d2LXRhYmxlIFtoYXNSb3dTcGFuXT1cImN1c3RvbUhhc1Jvd1NwYW5GdW5jdGlvblwiPlxuICogIDwhLS0gY3VzdG9tIGFwcGVuZGVkIHJvd3MgLS0+XG4gKiAgPG5nLXRlbXBsYXRlIHRhYmxlQXBwZW5kYWJsZVJvd3MgbGV0LWFwcGVuZGVkUm93c0RhdGE9XCIkaW1wbGljaXQuYXBwZW5kZWRSb3dzRGF0YVwiPlxuICogICA8dHIgKm5nRm9yPVwibGV0IGFwcGVuZGVkUm93SXRlbSBvZiBhcHBlbmRlZFJvd3NEYXRhXCIgY2xhc3M9XCJhcHBlbmRlZC1yb3dcIj5cbiAqICAgIDx0ZD57eyBhcHBlbmRlZFJvd0l0ZW0gfX08L3RkPlxuICogICAgPCEtLSBvdGhlciByb3cncyBjb2x1bW5zIC0tPlxuICogICA8L3RyPlxuICogIDwvbmctdGVtcGxhdGU+XG4gKiA8L25nZ3YtdGFibGU+XG4gKlxuICogSW4gYWRkaXRpb24sIGl0IGlzIHBvc3NpYmxlIHRvIGFkZCBmb290ZXIgZm9yIHRoZSB0YWJsZS4gU2ltaWxhcmx5IHRvIGFkZGluZyBjdXN0b20gY29sdW1ucywgdXNlIGA8bmctdGVtcGxhdGU+YC10YWcgYW5kIHBsYWNlIHRoZSBuZy10ZW1wbGF0ZSBpbiB0aGUgaHRtbCBiZXR3ZWVuIHRoZSBzdGFydCBhbmQgZW5kaW5nIHRhZyBvZlxuICogdGhlIGA8bmdndi10YWJsZT5gLiBBZGQgYSBgdGFibGVGb290ZXJgLWF0dHJpYnV0ZSB0byB0aGUgYDxuZy10ZW1wbGF0ZT5gLWVsZW1lbnQuIEFueSBlbGVtZW50cyB0aGF0IGV4aXN0IHdpdGhpbiBgPG5nLXRlbXBsYXRlIHRhYmxlRm9vdGVyPmAgYW5kIGA8L25nLXRlbXBsYXRlPmAgdGFncyB3aWxsIGJlIHB1dCB0byB0Zm9vdCBlbGVtZW50IGluc2lkZSB0aGUgdGFibGUuXG4gKlxuICogQGV4YW1wbGVcbiAqIDwhLS0gZm9yIHRhYmxlIGZvb3RlciBpLmUuIHRmb290LWVsZW1lbnQgLS0+XG4gKiA8bmctdGVtcGxhdGUgdGFibGVGb290ZXI+XG4gKiAgPHRyPlxuICogICA8IS0tIGZpcnN0IHJvdydzIGNvbHVtbnMgLS0+XG4gKiAgPC90cj5cbiAqICA8IS0tIG1vcmUgcm93cyBpZiBuZWVkZWQgLS0+XG4gKiA8L25nLXRlbXBsYXRlPlxuICpcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdndi10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ29tcG9uZW50PFQgZXh0ZW5kcyBUYWJsZVJvdz5cbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBDdXN0b20gdGVtcGxhdGVzIGRlZmluZWQgaW4gdGhlIGh0bWwuXG4gICAqL1xuICBAQ29udGVudENoaWxkcmVuKFRhYmxlVGVtcGxhdGVEaXJlY3RpdmUsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgY3VzdG9tVGVtcGxhdGVzITogUXVlcnlMaXN0PFRhYmxlVGVtcGxhdGVEaXJlY3RpdmU8a2V5b2YgVD4+XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBDdXN0b20gYXBwZW5kZWQgcm93cyB0ZW1wbGF0ZSBkZWZpbmVkIGluIHRoZSBodG1sLlxuICAgKi9cbiAgQENvbnRlbnRDaGlsZChUYWJsZUFwcGVuZGFibGVSb3dzVGVtcGxhdGVEaXJlY3RpdmUpXG4gIGFwcGVuZGVkUm93c1RlbXBsYXRlITogVGFibGVBcHBlbmRhYmxlUm93c1RlbXBsYXRlRGlyZWN0aXZlXG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBDdXN0b20gZm9vdGVyIHRlbXBsYXRlIGRlZmluZWQgaW4gdGhlIGh0bWwuXG4gICAqL1xuICBAQ29udGVudENoaWxkKFRhYmxlRm9vdGVyVGVtcGxhdGVEaXJlY3RpdmUpXG4gIGN1c3RvbUZvb3RlclRlbXBsYXRlITogVGFibGVGb290ZXJUZW1wbGF0ZURpcmVjdGl2ZVxuXG4gIC8qKiBFbWl0cyB0aGUgdGFibGUgcm93IHRoYXQgd2FzIGNsaWNrZWQuIFdvcmtzIG9uIGFsbCBjb2x1bW5zIGlmIG5vdCBwcmV2ZW50RGVmYXVsdEVtaXQgaXMgc2V0IGZvciB0aGF0IGNvbHVtbi4gKi9cbiAgQE91dHB1dCgpIG5ndlJvd0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxUIHwgYW55PigpXG5cbiAgLyoqXG4gICAqIEVtaXRzIGN1cnJlbnRseSBzZWxlY3RlZCBhbmQgZGVzZWxlY3RlZCBpdGVtcyBpbiB0aGUgdGFibGUgYXMga2V5LXZhbHVlIHBhaXJzLlxuICAgKiBVc2VzIGVhY2ggaXRlbWBzIGl0ZW1JZCBhcyBrZXksIGFuZCBhIGJvb2xlYW4gdmFsdWUgdG8gZGVzY3JpYmUgc2VsZWN0ZWQgc3RhdHVzLlxuICAgKi9cbiAgQE91dHB1dCgpIG5ndlJvd1NlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nW10+KClcblxuICAvKipcbiAgICogRW1pdHMgZXZlbnQgdG8gc2lnbmFsIHRoYXQgdGhlIHRhYmxlIHNob3VsZCBiZSByZW9yZGVyZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgbmd2T3JkZXJCeSA9IG5ldyBFdmVudEVtaXR0ZXI8T3JkZXJCeTxUPj4oKVxuXG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiBpdGVtcyBkZXNjcmliaW5nIGhvdyB0aGUgdGFibGUgaGVhZGVyIHNob3VsZCBiZSByZW5kZXJlZCxcbiAgICogdG9nZXRoZXIgd2l0aCBpbnN0cnVjdGlvbnMgZm9yIGhvdyBlYWNoIHJvdyBzaG91bGQgYmUgZGlzcGxheWVkIGluIHRoYXQgY29sdW1uLlxuICAgKi9cbiAgQElucHV0KCkgdGFibGVDb2x1bW5zITogVGFibGVDb2x1bW48VD5bXVxuXG4gIC8qKiBEYXRhIGFycmF5IHRvIGRpc3BsYXkgZGF0YSBpbiB0aGUgdGFibGUuIEVhY2ggaXRlbSA8VD4gaW4gdGhlIGFycmF5IHJlcHJlc2VudHMgYSByb3cgaW4gdGhlIHRhYmxlLiAqL1xuICBASW5wdXQoKSB0YWJsZURhdGEhOiBUW11cblxuICAvKipcbiAgICogUHJvcGVydHkgbmFtZSB1c2VkIHRvIHVuaXF1ZWx5IGRlc2NyaWJlIGVhY2ggaXRlbSAoaS5lLiByb3cpIGluIHRoZSBkYXRhIHRhYmxlLlxuICAgKiBEZWZhdWx0cyB0byBcXCdpZFxcJy5cbiAgICogSXMgcmVxdWlyZWQgaWYgc2VsZWN0YWJsZSBpcyB0cnVlLlxuICAgKi9cbiAgQElucHV0KCkgcm93SWQgPSAnaWQnXG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uJ3MgcmV0dXJuIHZhbHVlIGlzIHVzZWQgZm9yIGRhdGEgYXR0cmlidXRlIFxcJ2RhdGEtaGFzcm93c3BhblxcJy5cbiAgICogSWYgY3VzdG9tIGhhc1Jvd1NwYW4gZnVuY3Rpb24gaXMgbm90IHBhc3NlZCB0byB0aGUgdGFibGUsXG4gICAqIHRoZW4gdGhpcyBmdW5jdGlvbiByZXR1cm5zIHVuZGVmaW5lZCB2YWx1ZSBieSBkZWZhdWx0IHdoaWNoIHJlc3VsdHMgaW4gXFwnZGF0YS1oYXNyb3dzcGFuXFwnIGF0dHJpYnV0ZSBiZWluZyBvbWl0dGVkIGluIGh0bWxcbiAgICogKGFuZ3VsYXIgb21pdHMgYXR0cmlidXRlcyB0aGF0IGNvbnRhaW4gbnVsbCBvciB1bmRlZmluZWQgdmFsdWUpLlxuICAgKiBJTVBPUlRBTlQ6IHVzZSBhcnJvdyBmdW5jdGlvbiBzdHlsZSBmb3IgZGVmaW5pbmcgZnVuY3Rpb24gaW5zaWRlIGNvbXBvbmVudCwgaS5lLiBgaGFzUm93U3BhbiA9ICh2YWx1ZSkgPT4gb3V0cHV0O2AuIElmIHJlZ3VsYXIgZnVuY3Rpb24gd2lsbCBiZSBkZWZpbmVkLCBpLmUuIGBoYXNSb3dTcGFuKHZhbHVlKSB7IHJldHVybiBvdXRwdXQ7IH1gLCBiaW5kaW5nIHdpbGwgbm90IHdvcmsuXG4gICAqL1xuICBASW5wdXQoKSBoYXNSb3dTcGFuOiAoaXRlbTogVCkgPT4gYW55ID0gKF8pID0+IHVuZGVmaW5lZFxuXG4gIC8qKlxuICAgKiBVc2VkIHRvIGVuYWJsZS9kaXNhYmxlIHRoZSBsZWZ0LXNpZGUgY2hlY2tib3ggY29sdW1uLlxuICAgKiBEZWZhdWx0cyB0byB0cnVlLlxuICAgKi9cbiAgQElucHV0KCkgc2VsZWN0YWJsZSA9IHRydWVcblxuICAvKipcbiAgICogVXNlZCB0byBlbmFibGUvZGlzYWJsZSBleHBhbmRhYmxlIHJvd3MuXG4gICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgKi9cbiAgQElucHV0KCkgZXhwYW5kYWJsZSA9IGZhbHNlXG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gZW5hYmxlL2Rpc2FibGUgdGhlIHJpZ2h0LXNpZGUgZXhwYW5kIGljb24gY29sdW1uLlxuICAgKiBEZWZhdWx0cyB0byB0cnVlLlxuICAgKi9cbiAgQElucHV0KCkgZXhwYW5kZWRCeURlZmF1bHQgPSB0cnVlXG5cbiAgLyoqXG4gICogUHJvcGVydHkgbmFtZSB1c2VkIHRvIGRlc2NyaWJlIHRoZSBzdWJJdGVtcyBpbiB0aGUgZGF0YSB0YWJsZS5cbiAgKi9cbiAgQElucHV0KCkgc3ViSXRlbXNQcm9wID0gJ3N1Ykl0ZW1zJ1xuXG4gIC8qKlxuICAgKiBBbGxvdyBuZ2d2LXRhYmxlIHRvIGF0dGVtcHQgc29ydGluZyB0aGUgZGF0YSBpbiB0aGUgdGFibGUuIE5vdCByZWNvbW1lbmRlZCBpZiBvbmx5IGEgc3Vic2V0IGlzIGxvYWRlZCBvciBpZiB0aGUgZGF0YXNldCBpcyB2ZXJ5IGxhcmdlLlxuICAgKiBEaXNhYmxlZCBieSBkZWZhdWx0LlxuICAgKi9cbiAgQElucHV0KCkgYWxsb3dMb2NhbFNvcnQgPSBmYWxzZVxuXG4gIC8qKiBTcGVjaWFsIHByb3BlcnR5IHVzZWQgZm9yIHNlbGVjdGluZyBET00gZWxlbWVudHMgZHVyaW5nIGF1dG9tYXRlZCBVSSB0ZXN0aW5nLiAqL1xuICBASW5wdXQoKSB0aG9vayA9ICd0YWJsZS1zZWxlY3QtYWxsJ1xuXG4gIC8qKiBGdW5jdGlvbiB0byBvdmVyd3JpdGUgZ2VuZXJhdGVkIHRob29rIGZvciBlYWNoIHJvdy4gKi9cbiAgQElucHV0KCkgdHJUaG9va0ZuPzogKGl0ZW06IFQpID0+IHN0cmluZ1xuXG4gIC8qKiBBcmlhIGxhYmVsIGZvciB0aGUgY2hlY2tib3ggaW4gdGhlIHRhYmxlIGhlYWRlciAqL1xuICBASW5wdXQoKSBhcmlhTGFiZWxDaGVja2JveFRoPzogc3RyaW5nXG5cbiAgLyoqIEFyaWEgbGFiZWwgZm9yIHRoZSBjaGVja2JveCBpbiB0aGUgdGFibGUgaGVhZGVyICovXG4gIEBJbnB1dCgpIGFyaWFMYWJlbENoZWNrYm94VHI/OiBzdHJpbmdcblxuICAvKiogQXJpYSBsYWJlbHMgZm9yIHNvcnRpbmcgaW4gdGhlIHRhYmxlIGhlYWRlciAqL1xuICBASW5wdXQoKSBhcmlhTGFiZWxzT3JkZXJCeT86IGFyaWFMYWJlbHNPcmRlckJ5XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBJbnRlcm5hbCBkYXRhIHN0cnVjdHVyZSB1c2VkIHRvIGtlZXAgdHJhY2sgb2YgYWRkZWQgY29udGVudCB0ZW1wbGF0ZXMgdXNlZCBpbiB0ZCBlbGVtZW50cy5cbiAgICovXG4gIGN1c3RvbVJvd1RlbXBsYXRlcyA9IG5ldyBNYXA8a2V5b2YgVCwgVGVtcGxhdGVSZWY8YW55Pj4oKVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogSW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmUgdXNlZCB0byBrZWVwIHRyYWNrIG9mIGFkZGVkIGNvbnRlbnQgdGVtcGxhdGVzIHVzZWQgaW4gdGggZWxlbWVudHMuXG4gICAqL1xuICBjdXN0b21IZWFkZXJUZW1wbGF0ZXMgPSBuZXcgTWFwPGtleW9mIFQsIFRlbXBsYXRlUmVmPGFueT4+KClcblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIEludGVybmFsIGRhdGEgc3RydWN0dXJlIHVzZWQgdG8gaG9sZCBjdXN0b20gYXBwZW5kZWQgcm93cyBpLmUuIHRyIGVsZW1lbnRzIChyb3dzKS5cbiAgICovXG4gIGFwcGVuZGVkUm93c1RlbXBsYXRlUmVmITogVGVtcGxhdGVSZWY8YW55PlxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogSW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmUgdXNlZCB0byBob2xkIHRmb290IGVsZW1lbnQgY2hpbGRyZW4gaS5lLiB0ciBlbGVtZW50cyAocm93cykuXG4gICAqL1xuICBjdXN0b21Gb290ZXJUZW1wbGF0ZVJlZiE6IFRlbXBsYXRlUmVmPGFueT5cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIEluY3JlbWVudGFsIGlkLlxuICAgKi9cbiAgaW5pdElkITogbnVtYmVyXG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBGb3JtR3JvdXAgY29udGFpbmluZyBhbGwgcm93IGlkXFwncyBhcyBjb250cm9scywgYW5kIHdoZXRoZXIgdGhlc2UgYXJlIHNlbGVjdGVkIG9yIG5vdCBhcyB2YWx1ZXMuXG4gICAqL1xuICByb3dTZWxlY3RvcnM6IFVudHlwZWRGb3JtR3JvdXAgPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh7fSlcblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIE1hc3RlciBzZWxlY3RvciBmb3Igc2VsZWN0aW5nIG9yIGRlc2VsZWN0aW5nIGFsbCByb3cgc2VsZWN0b3JzLlxuICAgKi9cbiAgZ3JvdXBTZWxlY3RvcjogVW50eXBlZEZvcm1Db250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChmYWxzZSlcblxuICBwcml2YXRlIHNlbGVjdGVkOiBzdHJpbmdbXSA9IFtdXG4gIHByaXZhdGUgc3ViczogU3Vic2NyaXB0aW9uW10gPSBbXVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAvLyBVcGRhdGUgc2VsZWN0YWJsZSBvciBleHBhbmRhYmxlIHJvd3MgaWYgdGFibGUgZGF0YSBvciBzZXR0aW5ncyBjaGFuZ2VcbiAgICBpZiAoXG4gICAgICAodGhpcy5zZWxlY3RhYmxlIHx8IHRoaXMuZXhwYW5kYWJsZSkgJiYgY2hhbmdlcy50YWJsZURhdGE/LmN1cnJlbnRWYWx1ZSB8fFxuICAgICAgKGNoYW5nZXMuc2VsZWN0YWJsZT8uY3VycmVudFZhbHVlIHx8IGNoYW5nZXMuZXhwYW5kYWJsZT8uY3VycmVudFZhbHVlKSAmJiB0aGlzLnRhYmxlRGF0YVxuICAgICkge1xuICAgICAgY29uc3Qgd2FzQ2hhbmdlZCA9IHRoaXMucmVnaXN0ZXJTZWxlY3RhYmxlUm93cyhcbiAgICAgICAgY2hhbmdlcy50YWJsZURhdGEuY3VycmVudFZhbHVlLFxuICAgICAgKVxuICAgICAgaWYgKHdhc0NoYW5nZWQgJiYgIXRoaXMuc3Vicy5sZW5ndGgpIHtcbiAgICAgICAgLy8gZmlyc3QgdGltZSB0aGlzIGlzIHJ1blxuICAgICAgICBjb25zdCBncm91cFNlbGVjdG9yU3ViID0gdGhpcy5ncm91cFZhbHVlU3Vic2NyaXB0aW9uXG4gICAgICAgIGNvbnN0IHJvd1NlbGVjdG9yU3ViID0gdGhpcy5yb3dWYWx1ZVN1YnNjcmlwdGlvblxuICAgICAgICB0aGlzLnN1YnMucHVzaChncm91cFNlbGVjdG9yU3ViLCByb3dTZWxlY3RvclN1YilcbiAgICAgIH0gZWxzZSBpZiAod2FzQ2hhbmdlZCkge1xuICAgICAgICB0aGlzLnJvd1NlbGVjdG9ycy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KClcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBzb3J0IGFueSBpbmNvbWluZyBkYXRhXG4gICAgaWYgKFxuICAgICAgdGhpcy5hbGxvd0xvY2FsU29ydCAmJlxuICAgICAgKGNoYW5nZXMudGFibGVEYXRhPy5jdXJyZW50VmFsdWUgfHwgY2hhbmdlcy50YWJsZUNvbHVtbnM/LmN1cnJlbnRWYWx1ZSlcbiAgICApIHtcbiAgICAgIGNvbnN0IG9yZGVyZWRCeUNvbHVtbjogVGFibGVDb2x1bW48VD4gfCB1bmRlZmluZWQgPVxuICAgICAgICB0aGlzLnRhYmxlQ29sdW1ucz8uZmluZCgoZWwpID0+IGVsLm9yZGVyICE9PSB1bmRlZmluZWQpXG4gICAgICBpZiAob3JkZXJlZEJ5Q29sdW1uKSB0aGlzLnNvcnRJdGVtc0J5KG9yZGVyZWRCeUNvbHVtbilcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRJZCA9IHN0YXRpY0luaXRJZCsrXG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgLy8gaWYgYW55IGN1c3RvbSB0ZW1wbGF0ZXMgd2VyZSBkZWZpbmVkIGluIHRoZSB0ZW1wbGF0ZVxuICAgIGlmICh0aGlzLmN1c3RvbVRlbXBsYXRlcy5sZW5ndGgpIHtcbiAgICAgIC8vIGZvciBlYWNoIHRlbXBsYXRlIGZvdW5kXG4gICAgICB0aGlzLmN1c3RvbVRlbXBsYXRlcy5tYXAoKHRhYmxlVGVtcGxhdGUpID0+IHtcbiAgICAgICAgLy8gaWYgdGFyZ2V0IGlzIGVpdGhlciAndGQnIG9yICdib3RoJ1xuICAgICAgICBpZiAoXG4gICAgICAgICAgWyd0ZCcsICdib3RoJ10uaW5jbHVkZXModGFibGVUZW1wbGF0ZS50YWJsZUNvbHVtblRhcmdldCBhcyBzdHJpbmcpXG4gICAgICAgICkge1xuICAgICAgICAgIC8vIGFkZCB0byBjdXN0b20gcm93IHRlbXBsYXRlc1xuICAgICAgICAgIHRoaXMuY3VzdG9tUm93VGVtcGxhdGVzLnNldChcbiAgICAgICAgICAgIHRhYmxlVGVtcGxhdGUudGFibGVDb2x1bW4sXG4gICAgICAgICAgICB0YWJsZVRlbXBsYXRlLnRlbXBsYXRlUmVmLFxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgICAvLyBpZiB0YXJnZXQgaXMgZWl0aGVyICd0aCcgb3IgJ2JvdGgnXG4gICAgICAgIGlmIChcbiAgICAgICAgICBbJ3RoJywgJ2JvdGgnXS5pbmNsdWRlcyh0YWJsZVRlbXBsYXRlLnRhYmxlQ29sdW1uVGFyZ2V0IGFzIHN0cmluZylcbiAgICAgICAgKSB7XG4gICAgICAgICAgLy8gYWRkIHRvIGN1c3RvbSBoZWFkZXIgdGVtcGxhdGVzXG4gICAgICAgICAgdGhpcy5jdXN0b21IZWFkZXJUZW1wbGF0ZXMuc2V0KFxuICAgICAgICAgICAgdGFibGVUZW1wbGF0ZS50YWJsZUNvbHVtbixcbiAgICAgICAgICAgIHRhYmxlVGVtcGxhdGUudGVtcGxhdGVSZWYsXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIGlmIGFwcGVuZGVkIHJvd3MnIHRlbXBsYXRlIGlzIGRlZmluZWQgaW4gdGhlIHRlbXBsYXRlXG4gICAgaWYgKHRoaXMuYXBwZW5kZWRSb3dzVGVtcGxhdGUpIHtcbiAgICAgIC8vIHNldCB0ZW1wbGF0ZVJlZiBvZiBhcHBlbmRlZCByb3dzJyB0ZW1wbGF0ZSB0byB2YXJpYWJsZVxuICAgICAgdGhpcy5hcHBlbmRlZFJvd3NUZW1wbGF0ZVJlZiA9IHRoaXMuYXBwZW5kZWRSb3dzVGVtcGxhdGUudGVtcGxhdGVSZWZcbiAgICB9XG5cbiAgICAvLyBpZiBjdXN0b20gZm9vdGVyIHRlbXBsYXRlIGlzIGRlZmluZWQgaW4gdGhlIHRlbXBsYXRlXG4gICAgaWYgKHRoaXMuY3VzdG9tRm9vdGVyVGVtcGxhdGUpIHtcbiAgICAgIC8vIHNldCB0ZW1wbGF0ZVJlZiBvZiB0YWJsZSBmb290ZXIgdG8gdmFyaWFibGVcbiAgICAgIHRoaXMuY3VzdG9tRm9vdGVyVGVtcGxhdGVSZWYgPSB0aGlzLmN1c3RvbUZvb3RlclRlbXBsYXRlLnRlbXBsYXRlUmVmXG4gICAgfVxuXG4gICAgLy8gaWYgZXhwYW5kZWRCeURlZmF1bHQgaXMgdHJ1ZSwgdGhlbiBleHBhbmQgYWxsIHJvd3NcbiAgICBpZiAodGhpcy5leHBhbmRlZEJ5RGVmYXVsdCAmJiB0aGlzLmV4cGFuZGFibGUgJiYgdGhpcy50YWJsZURhdGEpIHtcbiAgICAgIHRoaXMudGFibGVEYXRhLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgdGhpcy50b2dnbGVSb3dUb0V4cGFuZChpdGVtW3RoaXMucm93SWRdKVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnMuZm9yRWFjaCgoc3ViKSA9PiBzdWIudW5zdWJzY3JpYmUoKSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogUmV0dXJucyBhIHN1YnNjcmlwdGlvbiB0byB0aGUgbWFzdGVyIHNlbGVjdG9yIGNvbnRyb2wgdGhhdCBlaXRoZXIgc2VsZWN0cyBvciBkZXNlbGVjdHMgYWxsIHJvdyBjb250cm9scy5cbiAgICovXG4gIGdldCBncm91cFZhbHVlU3Vic2NyaXB0aW9uKCk6IFN1YnNjcmlwdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuZ3JvdXBTZWxlY3Rvci52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICh2YWx1ZTogYm9vbGVhbikgPT4ge1xuICAgICAgICBjb25zdCBzZWxlY3RNYXAgPSBuZXcgTWFwKE9iamVjdC5lbnRyaWVzKHRoaXMucm93U2VsZWN0b3JzVmFsdWUpKVxuICAgICAgICBzZWxlY3RNYXAuZm9yRWFjaCgoXywga2V5KSA9PiBzZWxlY3RNYXAuc2V0KGtleSwgdmFsdWUpKVxuICAgICAgICBjb25zdCBwYXRjaFZhbHVlID0gb2JqZWN0RnJvbUVudHJpZXMoc2VsZWN0TWFwKVxuICAgICAgICB0aGlzLnJvd1NlbGVjdG9ycy5wYXRjaFZhbHVlKHBhdGNoVmFsdWUpXG4gICAgICB9LFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIFJldHVybnMgYSBzdWJzY3JpcHRpb24gdG8gYWxsIGluZGl2aWR1YWwgcm93IHNlbGVjdG9ycyBhbmQgdXBkYXRlIHRoZSBtYXN0ZXIgc2VsZWN0b3IgaWYgYWxsIGFyZSBzZWxlY3RlZC5cbiAgICovXG4gIGdldCByb3dWYWx1ZVN1YnNjcmlwdGlvbigpOiBTdWJzY3JpcHRpb24ge1xuICAgIHJldHVybiB0aGlzLnJvd1NlbGVjdG9ycy52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUoMCksIC8vIHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgZXZlbnRzIGFuZCB0byB3YWl0IGZvciBhbGwgc3ViIGNvbnRyb2xzIHRvIHVwZGF0ZVxuICAgICAgICBtYXAoKHZhbDogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0pID0+IHtcbiAgICAgICAgICAvLyBnZXQgYSBmaWx0ZXJlZCBhcnJheSBvZiBrZXlzIGZvciBhbGwgcm93cyB0aGF0IGFyZSBzZWxlY3RlZFxuICAgICAgICAgIGNvbnN0IHNlbGVjdGVkID0gT2JqZWN0LmtleXModmFsKS5maWx0ZXIoKGtleSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHZhbFtrZXldID09PSB0cnVlICYmIHRoaXMucm93U2VsZWN0b3JzLmdldChrZXkpPy5lbmFibGVkXG4gICAgICAgICAgfSlcbiAgICAgICAgICAvLyByZXR1cm5zIGFuIG9iamVjdCBjb250YWluaW5nIG9ubHkgdGhlIGZpbHRlcmVkIGtleXNcbiAgICAgICAgICByZXR1cm4gcGljayhzZWxlY3RlZCwgdmFsKVxuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAodmFsdWU6IG9iamVjdCkgPT4ge1xuICAgICAgICAgIC8vIHRoZSBudW1iZXIgb2Ygc2VsZWN0ZWQga2V5cyBjb21wYXJlZCB0byB0aGUgdG90YWwgbnVtYmVyIG9mIGtleXMgYXZhaWxhYmxlXG4gICAgICAgICAgY29uc3QgbnVtYmVyT2ZTZWxlY3RlZCA9IE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGhcbiAgICAgICAgICBjb25zdCBhbGxTZWxlY3RlZDogYm9vbGVhbiA9XG4gICAgICAgICAgICBudW1iZXJPZlNlbGVjdGVkID4gMFxuICAgICAgICAgICAgICA/IG51bWJlck9mU2VsZWN0ZWQgPT09IE9iamVjdC5rZXlzKHRoaXMucm93U2VsZWN0b3JzVmFsdWUpLmxlbmd0aFxuICAgICAgICAgICAgICA6IGZhbHNlXG4gICAgICAgICAgLy8gdXBkYXRlIHRoZSBtYXN0ZXIgc2VsZWN0b3IgY29udHJvbFxuICAgICAgICAgIHRoaXMuZ3JvdXBTZWxlY3Rvci5zZXRWYWx1ZShhbGxTZWxlY3RlZCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pXG4gICAgICAgICAgLy8gdXBkYXRlIHRoZSBhcnJheSBvZiBjdXJyZW50bHkgc2VsZWN0ZWQgaWQnc1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBPYmplY3Qua2V5cyh2YWx1ZSlcbiAgICAgICAgICAvLyBhbmQgZW1pdCB0aGUgdXBkYXRlZCB2YWx1ZVxuICAgICAgICAgIHRoaXMubmd2Um93U2VsZWN0LmVtaXQodGhpcy5zZWxlY3RlZClcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIFJlZ2lzdGVycyBvciBkaXNhYmxlcyByb3cgY29udHJvbHMgZm9yIG5ldyBvciByZW1vdmVkIHJvd3MuXG4gICAqL1xuICByZWdpc3RlclNlbGVjdGFibGVSb3dzKHRhYmxlRGF0YTogYW55W10pOiBib29sZWFuIHtcbiAgICBpZiAoIXRhYmxlRGF0YSkgcmV0dXJuIGZhbHNlXG4gICAgLy8gQXJyYXkgY29udGFpbmluZyBvbmx5IHRoZSBpZCdzIGZvciBlYWNoIHJvd1xuICAgIGNvbnN0IGRhdGFSb3dJZHM6IHN0cmluZ1tdID0gdGFibGVEYXRhLm1hcCgoZGF0YTogYW55KSA9PiBkYXRhW3RoaXMucm93SWRdKVxuXG4gICAgLy8gQXJyYXkgY29udGFpbmluZyB0aGUgaWQncyB0aGF0IGhhdmUgcmVnaXN0ZXJlZCBjb250cm9sc1xuICAgIGNvbnN0IGN1cnJlbnRJZHM6IHN0cmluZ1tdID0gT2JqZWN0LmtleXModGhpcy5yb3dTZWxlY3RvcnNWYWx1ZSlcblxuICAgIC8vIEFycmF5IGNvbnRhaW5pbmcgYWxsIGlkcyB0aGF0IGxhY2tzIGEgY29ycmVzcG9uZGluZyBjb250cm9sIChpLmUuIG5ldyByb3dzKVxuICAgIGNvbnN0IG5ld0lkczogc3RyaW5nW10gPSBkYXRhUm93SWRzLmZpbHRlcihcbiAgICAgIChpZCkgPT4gY3VycmVudElkcy5pbmRleE9mKGlkKSA9PT0gLTEsXG4gICAgKVxuXG4gICAgLy8gQXJyYXkgY29udGFpbmluZyBhbGwgaWRzIHRoYXQgaGFzIGEgY29udHJvbCBidXQgaXMgbm8gbG9uZ2VyIGluIHRoZSBkYXRhIHNldCAoaS5lLiByZW1vdmVkIHJvd3MpXG4gICAgY29uc3QgcmVtb3ZlZElkczogc3RyaW5nW10gPSBjdXJyZW50SWRzLmZpbHRlcihcbiAgICAgIChpZCkgPT4gZGF0YVJvd0lkcy5pbmRleE9mKGlkKSA9PT0gLTEsXG4gICAgKVxuXG4gICAgLy8gUmVnaXN0ZXIgbmV3IGNvbnRyb2xzIGZvciBhZGRlZCByb3dzXG4gICAgaWYgKG5ld0lkcy5sZW5ndGgpIHtcbiAgICAgIG5ld0lkcy5mb3JFYWNoKChpZCkgPT4ge1xuICAgICAgICBjb25zdCBjdHJsID0gdGhpcy5yb3dTZWxlY3RvcnMucmVnaXN0ZXJDb250cm9sKFxuICAgICAgICAgIGlkLFxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woZmFsc2UpLFxuICAgICAgICApXG4gICAgICAgIGlmIChjdHJsLmRpc2FibGVkKSBjdHJsLmVuYWJsZSgpXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIFNldCBhbHJlYWR5IHJlZ2lzdGVyZWQgY29udHJvbHMgdG8gZGlzYWJsZWQgZm9yIHJlbW92ZWQgcm93c1xuICAgIGlmIChyZW1vdmVkSWRzLmxlbmd0aClcbiAgICAgIHJlbW92ZWRJZHMuZm9yRWFjaCgoaWQpID0+IHRoaXMucm93U2VsZWN0b3JzLmdldChpZCk/LmRpc2FibGUoKSlcblxuICAgIHJldHVybiBuZXdJZHMubGVuZ3RoID4gMCB8fCByZW1vdmVkSWRzLmxlbmd0aCA+IDBcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogUmV0dXJucyBhbGwgZW5hYmxlZCB2YWx1ZXMgdW5sZXNzIGFsbCByb3dzIGFyZSBkaXNhYmxlZC5cbiAgICovXG4gIGdldCByb3dTZWxlY3RvcnNWYWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnJvd1NlbGVjdG9ycy5lbmFibGVkID8gdGhpcy5yb3dTZWxlY3RvcnMudmFsdWUgOiB7fVxuICB9XG5cbiAgdG9nZ2xlU29ydE9yZGVyV2l0aFNwYWNlKGV2ZW50OiBhbnksIGNvbHVtbjogVGFibGVDb2x1bW48VD4pIHtcbiAgICBpZiAoY29sdW1uLnNvcnRhYmxlKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICB0aGlzLnRvZ2dsZVNvcnRPcmRlcihjb2x1bW4pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBTd2l0Y2hlcyBzb3J0aW5nIG9yZGVyIGJldHdlZW4gYXNjZW5kaW5nIGFuZCBkZXNjZW5kaW5nIG9yZGVyIGZvciBhIGNvbHVtbi5cbiAgICogQHBhcmFtIGNvbHVtbiB0aGUgY29sdW1uIHRvIHNvcnQgcm93cyBhZnRlci5cbiAgICovXG4gIHRvZ2dsZVNvcnRPcmRlcihjb2x1bW46IFRhYmxlQ29sdW1uPFQ+KSB7XG4gICAgLy8gY2hlY2sgaWYgdGhlIHRhYmxlIGlzIGFscmVhZHkgc29ydGVkIGJ5IGFub3RoZXIgY29sdW1uIHRoYW4gdGhlIG9uZSBwcm92aWRlZFxuICAgIGNvbnN0IGN1cnJlbnRseU9yZGVyZWRCeSA9IHRoaXMudGFibGVDb2x1bW5zPy5maW5kKFxuICAgICAgKGVsKSA9PiBlbCAhPT0gY29sdW1uICYmIGVsLm9yZGVyICE9PSB1bmRlZmluZWQsXG4gICAgKVxuICAgIGlmIChjdXJyZW50bHlPcmRlcmVkQnkpIGRlbGV0ZSBjdXJyZW50bHlPcmRlcmVkQnkub3JkZXJcbiAgICBjb2x1bW4ub3JkZXIgPSBjb2x1bW4ub3JkZXIgPT09ICdkZXNjJyA/ICdhc2MnIDogJ2Rlc2MnXG4gICAgdGhpcy5zb3J0SXRlbXNCeShjb2x1bW4pXG4gIH1cblxuICAvKiogSWYgc29ydGFibGUsIHJlb3JkZXJzIHRoZSB0YWJsZSBkYXRhIHVzaW5nIHRoZSBzcGVjaWZpZWQgY29sdW1uIGFzIG9yZGVyaW5nIGF0dHJpYnV0ZS4gKi9cbiAgc29ydEl0ZW1zQnkoY29sdW1uOiBUYWJsZUNvbHVtbjxUPik6IFRhYmxlUm93W10gfCB1bmRlZmluZWQge1xuICAgIGlmICghY29sdW1uLnNvcnRhYmxlKSByZXR1cm5cbiAgICAvLyBlbWl0IHJlLW9yZGVyIGV2ZW50XG4gICAgdGhpcy5uZ3ZPcmRlckJ5LmVtaXQoeyBwcm9wZXJ0eTogY29sdW1uLnByb3BlcnR5LCBvcmRlcjogY29sdW1uLm9yZGVyIH0pXG4gICAgLy8gaWYgbG9jYWwgc29ydCBpcyBhbGxvd2VkLCByZW9yZGVyIGRhdGFcbiAgICBpZiAoIXRoaXMuYWxsb3dMb2NhbFNvcnQgfHwgIXRoaXMudGFibGVEYXRhKSByZXR1cm5cbiAgICByZXR1cm4gdGhpcy50YWJsZURhdGEuc29ydChcbiAgICAgIGNvbHVtbi5vcmRlciA9PT0gJ2Rlc2MnXG4gICAgICAgID8gb3JkZXJCeURlc2NlbmRpbmcoY29sdW1uLnByb3BlcnR5KVxuICAgICAgICA6IG9yZGVyQnlBc2NlbmRpbmcoY29sdW1uLnByb3BlcnR5KSxcbiAgICApXG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIEVtaXRzIHJvdyBkYXRhIGZvciB3aGF0IHJvdyB3YXMgY2xpY2tlZCBpZiBkZWZhdWx0RW1pdCBpcyBhbGxvd2VkLlxuICAgKi9cbiAgcHJvcGFnYXRlSXRlbUNsaWNrKGl0ZW06IGFueSwgcHJldmVudERlZmF1bHRFbWl0PzogYm9vbGVhbikge1xuICAgIGlmICghcHJldmVudERlZmF1bHRFbWl0KSB0aGlzLm5ndlJvd0NsaWNrLmVtaXQoaXRlbSk7XG5cbiAgICBpZiAodGhpcy5leHBhbmRhYmxlICYmIGl0ZW1bdGhpcy5zdWJJdGVtc1Byb3BdKSB7XG4gICAgICB0aGlzLnRvZ2dsZVJvd1RvRXhwYW5kKGl0ZW1bdGhpcy5yb3dJZF0pO1xuICAgIH1cbiAgfVxuXG4gIGdldEFyaWFMYWJlbChjb2x1bW46IFRhYmxlQ29sdW1uPFQ+KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBzb3J0T3JkZXIgPVxuICAgICAgY29sdW1uLm9yZGVyID09PSAnYXNjJ1xuICAgICAgICA/IHRoaXMuYXJpYUxhYmVsc09yZGVyQnk/LmRlc2NcbiAgICAgICAgOiB0aGlzLmFyaWFMYWJlbHNPcmRlckJ5Py5hc2NcbiAgICBpZiAoIXNvcnRPcmRlcikgcmV0dXJuIC8vIG5vIGFyaWEgbGFiZWxzIGRlZmluZWRcbiAgICByZXR1cm4gY29sdW1uLmFyaWFMYWJlbFNvcnRhYmxlPy5yZXBsYWNlKCd7e3NvcnRPcmRlcn19Jywgc29ydE9yZGVyKVxuICB9XG5cbiAgcHJpdmF0ZSB0b2dnbGVSb3dUb0V4cGFuZChpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgcm93ID0gdGhpcy5yb3dTZWxlY3RvcnMuZ2V0KGlkKVxuICAgIHJvdz8uc2V0VmFsdWUoIXJvdy52YWx1ZSlcbiAgfVxufVxuIiwiPG5nLXRlbXBsYXRlICNzb3J0YWJsZVRoVGVtcGxhdGUgbGV0LWNvbHVtbj5cbiAgPGJ1dHRvbiBjbGFzcz1cInNnLXRhYmxlLXNvcnRcIiAqdHJhbnNsb2NvPVwibGV0IHRcIj5cbiAgICA8bmctdGVtcGxhdGUgI3RoQnV0dG9uVGVtcGxhdGU+XG4gICAgICB7eyB0KGNvbHVtbi5sYWJlbCA/PyAnJykgfX1cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiXG4gICAgICAgIGN1c3RvbUhlYWRlclRlbXBsYXRlcy5nZXQoY29sdW1uLnByb3BlcnR5KSBhcyB0aFRlbXBsYXRlO1xuICAgICAgICBlbHNlIHRoQnV0dG9uVGVtcGxhdGVcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGhUZW1wbGF0ZSB8fCBudWxsOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogY29sdW1uIH1cIlxuICAgICAgPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9idXR0b24+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI25vdFNvcnRhYmxlVGhUZW1wbGF0ZSBsZXQtY29sdW1uPlxuICA8bmctdGVtcGxhdGUgI2RlZmF1bHRUaFRlbXBsYXRlPlxuICAgIDxuZy1jb250YWluZXIgKnRyYW5zbG9jbz1cImxldCB0XCI+XG4gICAgICB7eyB0KGNvbHVtbi5sYWJlbCA/PyAnJykgfX1cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiXG4gICAgICBjdXN0b21IZWFkZXJUZW1wbGF0ZXMuZ2V0KGNvbHVtbi5wcm9wZXJ0eSkgYXMgdGhUZW1wbGF0ZTtcbiAgICAgIGVsc2UgZGVmYXVsdFRoVGVtcGxhdGVcbiAgICBcIlxuICA+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRoVGVtcGxhdGUgfHwgbnVsbDsgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbHVtbiB9XCJcbiAgICA+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuPHRhYmxlIGNsYXNzPVwiZ2RzLXRhYmxlXCIgKnRyYW5zbG9jbz1cImxldCB0XCI+XG4gIDwhLS0gVGFibGUgaGVhZGVyIC0tPlxuICA8dGhlYWQ+XG4gICAgPHRyPlxuICAgICAgPCEtLSBDaGVja2JveCBjb2x1bW4gZm9yIGhlYWRlciAtLT5cbiAgICAgIDx0aCAqbmdJZj1cInNlbGVjdGFibGVcIiBjbGFzcz1cImNvbHVtbl9fY2hlY2tcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdkcy1maWVsZC1jaGVja2JveC13cmFwXCI+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBbYXR0ci5mb3JdPVwiJ2NiX2hlYWRlcl9fJyArIGluaXRJZFwiXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICBpZD1cInRoZWFkLWNoZWNrYm94XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImdyb3VwU2VsZWN0b3JcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbENoZWNrYm94VGhcIlxuICAgICAgICAgICAgICBbYXR0ci5pZF09XCInY2JfaGVhZGVyX18nICsgaW5pdElkXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS10aG9va109XCJ0aG9va1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGk+PC9pPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC90aD5cblxuICAgICAgPCEtLSBPdGhlciBjb2x1bW5zIC0tPlxuICAgICAgPHRoXG4gICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgdGFibGVDb2x1bW5zXCJcbiAgICAgICAgW2NvbHVtblR5cGVdPVwiY29sdW1uLnZhbHVlVHlwZVwiXG4gICAgICAgIFtzb3J0YWJsZV09XCJjb2x1bW4uc29ydGFibGVcIlxuICAgICAgICBbc29ydE9yZGVyXT1cImNvbHVtbi5vcmRlclwiXG4gICAgICAgIFt0aG9va109XCInY29sdW1uLWhlYWRlci0nICsgISFjb2x1bW4ucHJvcGVydHlcIlxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlU29ydE9yZGVyKGNvbHVtbilcIlxuICAgICAgICAoa2V5ZG93bi5zcGFjZSk9XCJ0b2dnbGVTb3J0T3JkZXJXaXRoU3BhY2UoJGV2ZW50LCBjb2x1bW4pXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJnZXRBcmlhTGFiZWwoY29sdW1uKVwiXG4gICAgICAgIFthdHRyLmFyaWEtc29ydF09XCJjb2x1bW4ub3JkZXIgKyAnZW5kaW5nJ1wiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4uc29ydGFibGVcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICBzb3J0YWJsZVRoVGVtcGxhdGU7XG4gICAgICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4sIGNvbHVtbjogY29sdW1uIH1cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2x1bW4uc29ydGFibGVcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICBub3RTb3J0YWJsZVRoVGVtcGxhdGU7XG4gICAgICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4sIGNvbHVtbjogY29sdW1uIH1cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvdGg+XG4gICAgPC90cj5cbiAgPC90aGVhZD5cblxuICA8IS0tIFRhYmxlIGJvZHkgLS0+XG4gIDx0Ym9keSBbZm9ybUdyb3VwXT1cInJvd1NlbGVjdG9yc1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdGFibGVEYXRhOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICA8dHJcbiAgICAgICAgW2NsYXNzLnJvd19fZXhwYW5kXT1cImV4cGFuZGFibGVcIlxuICAgICAgICBbYXR0ci5kYXRhLXRob29rXT1cIml0ZW0gfCB0clRob29rOiBpIDogdHJUaG9va0ZuXCJcbiAgICAgICAgW2F0dHIuZGF0YS1oYXNyb3dzcGFuXT1cImhhc1Jvd1NwYW4oaXRlbSlcIlxuICAgICAgPlxuICAgICAgICA8IS0tIENoZWNrYm94IGNvbHVtbiBmb3Igcm93IC0tPlxuICAgICAgICA8dGQgKm5nSWY9XCJzZWxlY3RhYmxlXCIgY2xhc3M9XCJjb2x1bW5fX2NoZWNrXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdkcy1maWVsZC1jaGVja2JveC13cmFwXCI+XG4gICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgW2F0dHIuZm9yXT1cIidjYl9yb3dfXycgKyBpbml0SWQgKyAnXycgKyBpXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAqbmdJZj1cInJvd1NlbGVjdG9ycy5nZXQoaXRlbVtyb3dJZF0pXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbVtyb3dJZF1cIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsQ2hlY2tib3hUclwiXG4gICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiJ2NiX3Jvd19fJyArIGluaXRJZCArICdfJyArIGlcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtdGhvb2tdPVwiJ3Jvdy1zZWxlY3QtJyArIGlcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8aT48L2k+XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RkPlxuXG4gICAgICAgIDwhLS0gT3RoZXIgY29sdW1ucyAtLT5cbiAgICAgICAgPHRkXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiB0YWJsZUNvbHVtbnM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgIFtjb2x1bW5UeXBlXT1cImNvbHVtbi52YWx1ZVR5cGVcIlxuICAgICAgICAgIFt2YWx1ZV09XCJpdGVtW2NvbHVtbi5wcm9wZXJ0eV1cIlxuICAgICAgICAgIChjbGljayk9XCJwcm9wYWdhdGVJdGVtQ2xpY2soaXRlbSwgY29sdW1uLnByZXZlbnREZWZhdWx0Q2xpY2tFdmVudClcIlxuICAgICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJleHBhbmRhYmxlICYmIGkgPT09IDA7IGVsc2Ugbm9uRXhwYW5kYWJsZVRlbXBsYXRlXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiZ2RzLWl0ZW0tZmllbGQtd3JhcFwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ25vLXN1Yi1pdGVtcyc6IGl0ZW0uc3ViSXRlbXMubGVuZ3RoID09PSAwIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5zdWJJdGVtcy5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hldnJvbi1maWVsZFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJyb3dTZWxlY3RvcnMuZ2V0KGl0ZW1bcm93SWRdKT8udmFsdWVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgIGQ9XCJNMjAgOUwxMiAxN0w0IDlcIlxuICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjZcIlxuICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdkcy1pdGVtLWZpZWxkLXRleHRcIj5cbiAgICAgICAgICAgICAgIHt7IGl0ZW1bY29sdW1uLnByb3BlcnR5XSB9fSAoe3sgaXRlbS5zdWJJdGVtcy5sZW5ndGggfX0pXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiEhY29sdW1uLmV4dHJhTGFiZWxcIiBjbGFzcz1cImdkcy1pdGVtLWZpZWxkLWV4dHJhLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICB7eyBjb2x1bW4uZXh0cmFMYWJlbCB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9uRXhwYW5kYWJsZVRlbXBsYXRlPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbVJvd1RlbXBsYXRlcy5nZXQoY29sdW1uLnByb3BlcnR5KSBhcyB0ZFRlbXBsYXRlOyBlbHNlIGRlZmF1bHRUZFRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cInRkVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBpdGVtIH1cIj5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0VGRUZW1wbGF0ZT5cbiAgICAgICAgICAgICAge3sgaXRlbVtjb2x1bW4ucHJvcGVydHldIH19XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L3RyPlxuXG4gICAgICA8IS0tIEV4cGFuZGVkIFN1YiBJdGVtcyAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJleHBhbmRhYmxlICYmIHJvd1NlbGVjdG9ycy5nZXQoaXRlbVtyb3dJZF0pPy52YWx1ZVwiPlxuICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHN1Ykl0ZW0gb2YgaXRlbVtzdWJJdGVtc1Byb3BdXCI+XG4gICAgICAgICAgPHRkXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIHRhYmxlQ29sdW1uc1wiXG4gICAgICAgICAgICBjbGFzcz1cIndlYi12aWV3XCJcbiAgICAgICAgICAgIFtjb2x1bW5UeXBlXT1cImNvbHVtbi52YWx1ZVR5cGVcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cInN1Ykl0ZW1bY29sdW1uLnByb3BlcnR5XVwiXG4gICAgICAgICAgICAoY2xpY2spPVwicHJvcGFnYXRlSXRlbUNsaWNrKHN1Ykl0ZW0sIGNvbHVtbi5wcmV2ZW50RGVmYXVsdENsaWNrRXZlbnQpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tUm93VGVtcGxhdGVzLmdldChjb2x1bW4ucHJvcGVydHkpIGFzIHRkVGVtcGxhdGU7IGVsc2UgZGVmYXVsdFRkVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwidGRUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHN1Ykl0ZW0gfVwiPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRUZFRlbXBsYXRlPlxuICAgICAgICAgICAgICB7eyBzdWJJdGVtW2NvbHVtbi5wcm9wZXJ0eV0gfX1cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC90ZD5cblxuICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgY2xhc3M9XCJtb2JpbGUtdmlld1wiXG4gICAgICAgICAgICBbYXR0ci5jb2xzcGFuXT1cInRhYmxlQ29sdW1ucy5sZW5ndGhcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInByb3BhZ2F0ZUl0ZW1DbGljayhzdWJJdGVtKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRsIGNsYXNzPVwibW9iaWxlLXZpZXctZmllbGQtd3JhcFwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgdGFibGVDb2x1bW5zXCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhY29sdW1uLmhpZGVQcm9wZXJ0eU9uTW9iaWxlXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibW9iaWxlLXZpZXctZmllbGRcIlxuICAgICAgICAgICAgICAgICAgW2NvbHVtblR5cGVdPVwiY29sdW1uLnZhbHVlVHlwZVwiXG4gICAgICAgICAgICAgICAgICBbdmFsdWVdPVwic3ViSXRlbVtjb2x1bW4ucHJvcGVydHldXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZHQgKm5nSWY9XCIhY29sdW1uLmhpZGVMYWJlbE9uTW9iaWxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKnRyYW5zbG9jbz1cImxldCB0XCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgdChjb2x1bW4ubGFiZWwgPz8gJycpIH19XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9kdD5cbiAgICAgICAgICAgICAgICAgIDxkZCBbbmdTdHlsZV09XCJjb2x1bW4uYm9sZFRleHRPbk1vYmlsZSA/IHsgJ2ZvbnQtd2VpZ2h0JzogJzUwMCcgfSA6IHsnZm9udC13ZWlnaHQnOiAnNDAwJ31cIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbVJvd1RlbXBsYXRlcy5nZXQoY29sdW1uLnByb3BlcnR5KSBhcyB0ZFRlbXBsYXRlOyBlbHNlIGRlZmF1bHRUZFRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwidGRUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHN1Ykl0ZW0gfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRUZFRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IHN1Ykl0ZW1bY29sdW1uLnByb3BlcnR5XSB9fVxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgPC9kZD5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2RsPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwibmF2LWNoZXZyb24tZmllbGRcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cInJvd1NlbGVjdG9ycy5nZXQoaXRlbVtyb3dJZF0pPy52YWx1ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgIGQ9XCJNMjAgOUwxMiAxN0w0IDlcIlxuICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNlwiXG4gICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gQ3VzdG9tIGFwcGVuZGVkIHJvd3MgLS0+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXBwZW5kZWRSb3dzVGVtcGxhdGVSZWYgYXMgdHJUZW1wbGF0ZVwiPlxuICAgICAgICA8IS0tIENhbm5vdCBpbmZlciB0clRlbXBsYXRlIGFzIFRlbXBsYXRlUmVmIHRoZXJlZm9yZSBudWxsIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0clRlbXBsYXRlIHx8IG51bGw7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBpdGVtIH1cIlxuICAgICAgICA+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvdGJvZHk+XG5cbiAgPCEtLSBUYWJsZSBmb290ZXIgLS0+XG4gIDx0Zm9vdCAqbmdJZj1cImN1c3RvbUZvb3RlclRlbXBsYXRlUmVmIGFzIHRyVGVtcGxhdGVcIj5cbiAgICA8IS0tIENhbm5vdCBpbmZlciB0clRlbXBsYXRlIGFzIFRlbXBsYXRlUmVmIHRoZXJlZm9yZSBudWxsIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0clRlbXBsYXRlIHx8IG51bGxcIj4gPC9uZy1jb250YWluZXI+XG4gIDwvdGZvb3Q+XG48L3RhYmxlPlxuIl19
|
|
420
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvdGFibGUvdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvdGFibGUvdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUNOLFNBQVMsR0FHVixNQUFNLGVBQWUsQ0FBQTtBQUN0QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUVyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRWxELE9BQU8sRUFDTCxvQ0FBb0MsRUFDcEMsNEJBQTRCLEVBQzVCLHNCQUFzQixHQUN2QixNQUFNLG1CQUFtQixDQUFBO0FBTzFCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUE7Ozs7Ozs7QUFFekUsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFBO0FBRXBCLFNBQVMsaUJBQWlCLENBQUMsUUFBdUI7SUFDaEQsTUFBTSxXQUFXLEdBQTJCLEVBQUUsQ0FBQTtJQUM5QyxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksUUFBUSxFQUFFLENBQUM7UUFDcEMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQTtJQUMxQixDQUFDO0lBQ0QsT0FBTyxXQUFXLENBQUE7QUFDcEIsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyRUc7QUFNSCxNQUFNLE9BQU8sY0FBYztJQUwzQjtRQTRCRSxtSEFBbUg7UUFDekcsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFBO1FBRW5EOzs7V0FHRztRQUNPLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVksQ0FBQTtRQUVyRDs7V0FFRztRQUNPLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBYyxDQUFBO1FBV3JEOzs7O1dBSUc7UUFDTSxVQUFLLEdBQUcsSUFBSSxDQUFBO1FBRXJCOzs7Ozs7V0FNRztRQUNNLGVBQVUsR0FBcUIsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQTtRQUV4RDs7O1dBR0c7UUFDTSxlQUFVLEdBQUcsSUFBSSxDQUFBO1FBRTFCOzs7V0FHRztRQUNNLGVBQVUsR0FBRyxLQUFLLENBQUE7UUFFM0I7OztXQUdHO1FBQ00sc0JBQWlCLEdBQUcsSUFBSSxDQUFBO1FBRWpDOztVQUVFO1FBQ08saUJBQVksR0FBRyxVQUFVLENBQUE7UUFFbEM7OztXQUdHO1FBQ00sbUJBQWMsR0FBRyxLQUFLLENBQUE7UUFFL0Isb0ZBQW9GO1FBQzNFLFVBQUssR0FBRyxrQkFBa0IsQ0FBQTtRQWNuQzs7O1dBR0c7UUFDSCx1QkFBa0IsR0FBRyxJQUFJLEdBQUcsRUFBNkIsQ0FBQTtRQUV6RDs7O1dBR0c7UUFDSCwwQkFBcUIsR0FBRyxJQUFJLEdBQUcsRUFBNkIsQ0FBQTtRQW9CNUQ7OztXQUdHO1FBQ0gsaUJBQVksR0FBcUIsSUFBSSxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUV6RDs7O1dBR0c7UUFDSCxrQkFBYSxHQUF1QixJQUFJLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFBO1FBRXpELGFBQVEsR0FBYSxFQUFFLENBQUE7UUFDdkIsU0FBSSxHQUFtQixFQUFFLENBQUE7S0F1UGxDO0lBclBDLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyx3RUFBd0U7UUFDeEUsSUFDRSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsWUFBWTtZQUN2RSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsWUFBWSxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFDeEYsQ0FBQztZQUNELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FDNUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQy9CLENBQUE7WUFDRCxJQUFJLFVBQVUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3BDLHlCQUF5QjtnQkFDekIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUE7Z0JBQ3BELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQTtnQkFDaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsY0FBYyxDQUFDLENBQUE7WUFDbEQsQ0FBQztpQkFBTSxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLHNCQUFzQixFQUFFLENBQUE7WUFDNUMsQ0FBQztRQUNILENBQUM7UUFFRCx5QkFBeUI7UUFDekIsSUFDRSxJQUFJLENBQUMsY0FBYztZQUNuQixDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsWUFBWSxJQUFJLE9BQU8sQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLEVBQ3ZFLENBQUM7WUFDRCxNQUFNLGVBQWUsR0FDbkIsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUE7WUFDekQsSUFBSSxlQUFlO2dCQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLENBQUE7UUFDeEQsQ0FBQztJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLE1BQU0sR0FBRyxZQUFZLEVBQUUsQ0FBQTtJQUM5QixDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLHVEQUF1RDtRQUN2RCxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEMsMEJBQTBCO1lBQzFCLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUU7Z0JBQ3pDLHFDQUFxQztnQkFDckMsSUFDRSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLGlCQUEyQixDQUFDLEVBQ2xFLENBQUM7b0JBQ0QsOEJBQThCO29CQUM5QixJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUN6QixhQUFhLENBQUMsV0FBVyxFQUN6QixhQUFhLENBQUMsV0FBVyxDQUMxQixDQUFBO2dCQUNILENBQUM7Z0JBQ0QscUNBQXFDO2dCQUNyQyxJQUNFLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsaUJBQTJCLENBQUMsRUFDbEUsQ0FBQztvQkFDRCxpQ0FBaUM7b0JBQ2pDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQzVCLGFBQWEsQ0FBQyxXQUFXLEVBQ3pCLGFBQWEsQ0FBQyxXQUFXLENBQzFCLENBQUE7Z0JBQ0gsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQztRQUVELHdEQUF3RDtRQUN4RCxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzlCLHlEQUF5RDtZQUN6RCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQTtRQUN0RSxDQUFDO1FBRUQsdURBQXVEO1FBQ3ZELElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDOUIsOENBQThDO1lBQzlDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFBO1FBQ3RFLENBQUM7UUFFRCxxREFBcUQ7UUFDckQsSUFBSSxJQUFJLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDaEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDOUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtZQUMxQyxDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQTtJQUMvQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxzQkFBc0I7UUFDeEIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUM7WUFDL0MsSUFBSSxFQUFFLENBQUMsS0FBYyxFQUFFLEVBQUU7Z0JBQ3ZCLE1BQU0sU0FBUyxHQUFHLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQTtnQkFDakUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUE7Z0JBQ3hELE1BQU0sVUFBVSxHQUFHLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFBO2dCQUMvQyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQTtZQUMxQyxDQUFDO1NBQ0YsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksb0JBQW9CO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZO2FBQ2xDLElBQUksQ0FDSCxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsMkVBQTJFO1FBQzVGLEdBQUcsQ0FBQyxDQUFDLEdBQStCLEVBQUUsRUFBRTtZQUN0Qyw4REFBOEQ7WUFDOUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDL0MsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQTtZQUNqRSxDQUFDLENBQUMsQ0FBQTtZQUNGLHNEQUFzRDtZQUN0RCxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUE7UUFDNUIsQ0FBQyxDQUFDLENBQ0g7YUFDQSxTQUFTLENBQUM7WUFDVCxJQUFJLEVBQUUsQ0FBQyxLQUFhLEVBQUUsRUFBRTtnQkFDdEIsNkVBQTZFO2dCQUM3RSxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFBO2dCQUNsRCxNQUFNLFdBQVcsR0FDZixnQkFBZ0IsR0FBRyxDQUFDO29CQUNsQixDQUFDLENBQUMsZ0JBQWdCLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxNQUFNO29CQUNqRSxDQUFDLENBQUMsS0FBSyxDQUFBO2dCQUNYLHFDQUFxQztnQkFDckMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUE7Z0JBQzlELDhDQUE4QztnQkFDOUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO2dCQUNsQyw2QkFBNkI7Z0JBQzdCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtZQUN2QyxDQUFDO1NBQ0YsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUVEOzs7T0FHRztJQUNILHNCQUFzQixDQUFDLFNBQWdCO1FBQ3JDLElBQUksQ0FBQyxTQUFTO1lBQUUsT0FBTyxLQUFLLENBQUE7UUFDNUIsOENBQThDO1FBQzlDLE1BQU0sVUFBVSxHQUFhLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtRQUUzRSwwREFBMEQ7UUFDMUQsTUFBTSxVQUFVLEdBQWEsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtRQUVoRSw4RUFBOEU7UUFDOUUsTUFBTSxNQUFNLEdBQWEsVUFBVSxDQUFDLE1BQU0sQ0FDeEMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQ3RDLENBQUE7UUFFRCxtR0FBbUc7UUFDbkcsTUFBTSxVQUFVLEdBQWEsVUFBVSxDQUFDLE1BQU0sQ0FDNUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQ3RDLENBQUE7UUFFRCx1Q0FBdUM7UUFDdkMsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO2dCQUNwQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FDNUMsRUFBRSxFQUNGLElBQUksa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQzlCLENBQUE7Z0JBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUTtvQkFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUE7WUFDbEMsQ0FBQyxDQUFDLENBQUE7UUFDSixDQUFDO1FBRUQsK0RBQStEO1FBQy9ELElBQUksVUFBVSxDQUFDLE1BQU07WUFDbkIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQTtRQUVsRSxPQUFPLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFBO0lBQ25ELENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLGlCQUFpQjtRQUNuQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO0lBQ2pFLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxLQUFVLEVBQUUsTUFBc0I7UUFDekQsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDcEIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFBO1lBQ3RCLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsZUFBZSxDQUFDLE1BQXNCO1FBQ3BDLCtFQUErRTtRQUMvRSxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUNoRCxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLE1BQU0sSUFBSSxFQUFFLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FDaEQsQ0FBQTtRQUNELElBQUksa0JBQWtCO1lBQUUsT0FBTyxrQkFBa0IsQ0FBQyxLQUFLLENBQUE7UUFDdkQsTUFBTSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUE7UUFDdkQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUMxQixDQUFDO0lBRUQsNkZBQTZGO0lBQzdGLFdBQVcsQ0FBQyxNQUFzQjtRQUNoQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVE7WUFBRSxPQUFNO1FBQzVCLHNCQUFzQjtRQUN0QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQTtRQUN4RSx5Q0FBeUM7UUFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUztZQUFFLE9BQU07UUFDbkQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FDeEIsTUFBTSxDQUFDLEtBQUssS0FBSyxNQUFNO1lBQ3JCLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1lBQ3BDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQ3RDLENBQUE7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsa0JBQWtCLENBQUMsSUFBUyxFQUFFLGtCQUE0QjtRQUN4RCxJQUFJLENBQUMsa0JBQWtCO1lBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFckQsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzNDLENBQUM7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQXNCO1FBQ2pDLE1BQU0sU0FBUyxHQUNiLE1BQU0sQ0FBQyxLQUFLLEtBQUssS0FBSztZQUNwQixDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUk7WUFDOUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLENBQUE7UUFDakMsSUFBSSxDQUFDLFNBQVM7WUFBRSxPQUFNLENBQUMseUJBQXlCO1FBQ2hELE9BQU8sTUFBTSxDQUFDLGlCQUFpQixFQUFFLE9BQU8sQ0FBQyxlQUFlLEVBQUUsU0FBUyxDQUFDLENBQUE7SUFDdEUsQ0FBQztJQUVPLGlCQUFpQixDQUFDLEVBQVU7UUFDbEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDckMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUMzQixDQUFDOytHQTNZVSxjQUFjO21HQUFkLGNBQWMscW5CQWFYLG9DQUFvQyx1RkFPcEMsNEJBQTRCLHFFQWR6QixzQkFBc0IscUVDakl6Qyx1aVRBeVFBOzs0RkQ5SWEsY0FBYztrQkFMMUIsU0FBUzsrQkFDRSxZQUFZOzhCQVd0QixlQUFlO3NCQURkLGVBQWU7dUJBQUMsc0JBQXNCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQVE5RCxvQkFBb0I7c0JBRG5CLFlBQVk7dUJBQUMsb0NBQW9DO2dCQVFsRCxvQkFBb0I7c0JBRG5CLFlBQVk7dUJBQUMsNEJBQTRCO2dCQUloQyxXQUFXO3NCQUFwQixNQUFNO2dCQU1HLFlBQVk7c0JBQXJCLE1BQU07Z0JBS0csVUFBVTtzQkFBbkIsTUFBTTtnQkFNRSxZQUFZO3NCQUFwQixLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBT0csS0FBSztzQkFBYixLQUFLO2dCQVNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBTUcsVUFBVTtzQkFBbEIsS0FBSztnQkFNRyxVQUFVO3NCQUFsQixLQUFLO2dCQU1HLGlCQUFpQjtzQkFBekIsS0FBSztnQkFLRyxZQUFZO3NCQUFwQixLQUFLO2dCQU1HLGNBQWM7c0JBQXRCLEtBQUs7Z0JBR0csS0FBSztzQkFBYixLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUdHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFHRyxpQkFBaUI7c0JBQXpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBVbnR5cGVkRm9ybUNvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3JtcydcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5pbXBvcnQge1xuICBUYWJsZUFwcGVuZGFibGVSb3dzVGVtcGxhdGVEaXJlY3RpdmUsXG4gIFRhYmxlRm9vdGVyVGVtcGxhdGVEaXJlY3RpdmUsXG4gIFRhYmxlVGVtcGxhdGVEaXJlY3RpdmUsXG59IGZyb20gJy4vdGFibGUuZGlyZWN0aXZlJ1xuaW1wb3J0IHtcbiAgYXJpYUxhYmVsc09yZGVyQnksXG4gIE9yZGVyQnksXG4gIFRhYmxlQ29sdW1uLFxuICBUYWJsZVJvdyxcbn0gZnJvbSAnLi90YWJsZS5tb2RlbHMnXG5pbXBvcnQgeyBvcmRlckJ5QXNjZW5kaW5nLCBvcmRlckJ5RGVzY2VuZGluZywgcGljayB9IGZyb20gJy4vdGFibGUudG9vbHMnXG5cbmxldCBzdGF0aWNJbml0SWQgPSAwXG5cbmZ1bmN0aW9uIG9iamVjdEZyb21FbnRyaWVzKGVudHJ5TWFwOiBNYXA8YW55LCBhbnk+KTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB7XG4gIGNvbnN0IGZyb21FbnRyaWVzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge31cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgZW50cnlNYXApIHtcbiAgICBmcm9tRW50cmllc1trZXldID0gdmFsdWVcbiAgfVxuICByZXR1cm4gZnJvbUVudHJpZXNcbn1cblxuLyoqXG4gKiBBIHRhYmxlIGNvbXBvbmVudCB3aXRoIGJ1aWx0LWluIHNvcnRpbmcgYW5kIHNlbGVjdGluZyBmdW5jdGlvbmFsaXR5LlxuICogQnkgZGVmYXVsdCwgdGFibGUgY2VsbHMgKGkuZS4gYDx0ZD5gIGVsZW1lbnRzKSBhbmQgdGFibGUgaGVhZGVycyAoaS5lLiBgPHRoPmAgZWxlbWVudHMpIGFyZSBwb3B1bGF0ZWQgd2l0aCB0ZXh0IG9ubHkgdmFsdWVzLlxuICpcbiAqIFRvIGN1c3RvbWl6ZSB0aGUgY29udGVudHMgb2YgZWl0aGVyIHRoZSBgPHRkPmAgb3IgYDx0aD5gIGVsZW1lbnRzIChsaWtlIGFkZGluZyBjb2xvciwgaWNvbnMsIGZvcm0gZmllbGRzLCBleHRyYSBwYWRkaW5nIGV0Yy4pLCBwcm92aWRlXG4gKiB0aGUgY3VzdG9taXplZCBjb250ZW50IHdpdGhpbiBhIGA8bmctdGVtcGxhdGU+YC10YWcsIGFuZCBwbGFjZSB0aGUgbmctdGVtcGxhdGUgaW4gdGhlIGh0bWwgYmV0d2VlbiB0aGUgc3RhcnQgYW5kIGVuZGluZyB0YWcgb2ZcbiAqIHRoZSBgPG5nZ3YtdGFibGU+YC4gQWRkIGEgYHRhYmxlQ29sdW1uYC1hdHRyaWJ1dGUgdG8gdGhlIGA8bmctdGVtcGxhdGU+YC1lbGVtZW50LCBhbmQgc2V0IHRoZSB2YWx1ZSB0byB0aGUgc3BlY2lmaWMgY29sdW1uIHByb3BlcnR5LlxuICogU2V0IGB0YWJsZUNvbHVtblRhcmdldGAgdG8gZWl0aGVyIGB0aGAsIGB0ZGAgb3IgYGJvdGhgIChkZWZhdWx0KSBkZXBlbmRpbmcgb24gdGFyZ2V0IGVsZW1lbnQgdHlwZS5cbiAqIFRoZSBlbnRpcmUgcm93IGZyb20gdGhlIGBASW5wdXQoKSB0YWJsZURhdGFgIGlzIGF2YWlsYWJsZSBmcm9tIHRoZSBjb250ZXh0IGAkaW1wbGljaXRgIHZhcmlhYmxlLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8IS0tIGZvciB0YWJsZSBjZWxscyBpLmUuIHRkLWVsZW1lbnRzIC0tPlxuICogPG5nLXRlbXBsYXRlIHRhYmxlQ29sdW1uPVwic3RhdHVzXCIgdGFibGVDb2x1bW5UYXJnZXQ9XCJ0ZFwiIGxldC1teURhdGFWYXI9XCIkaW1wbGljaXRcIiBsZXQtc3RhdHVzPVwiJGltcGxpY2l0LnN0YXR1c1wiPlxuICogIDwhLS0gbXkgY3VzdG9tIHN0YXR1cyBlbGVtZW50IC0tPlxuICogPC9uZy10ZW1wbGF0ZT5cbiAqXG4gKiBAZXhhbXBsZVxuICogPCEtLSBmb3IgdGFibGUgaGVhZGVycyBpLmUuIHRoLWVsZW1lbnRzIC0tPlxuICogPG5nLXRlbXBsYXRlIHRhYmxlQ29sdW1uPVwic3RhdHVzXCIgdGFibGVDb2x1bW5UYXJnZXQ9XCJ0aFwiIGxldC1teURhdGFWYXI9XCIkaW1wbGljaXRcIiBsZXQtc3RhdHVzPVwiJGltcGxpY2l0LnN0YXR1c1wiPlxuICogIDwhLS0gbXkgY3VzdG9tIHN0YXR1cyBlbGVtZW50IC0tPlxuICogPC9uZy10ZW1wbGF0ZT5cbiAqXG4gKiBJdCBpcyBwb3NzaWJsZSB0byBhZGQgY3VzdG9tIHJvd3MgdGhhdCBhcmUgYXBwZW5kZWQgYmVsb3cgZGF0YSByb3cuIFVzZSBgPG5nLXRlbXBsYXRlPmAtdGFnIGFuZCBwbGFjZSB0aGUgbmctdGVtcGxhdGUgaW4gdGhlIGh0bWwgYmV0d2VlbiB0aGUgc3RhcnQgYW5kIGVuZGluZyB0YWcgb2ZcbiAqIHRoZSBgPG5nZ3YtdGFibGU+YC4gQWRkIGEgYHRhYmxlQXBwZW5kYWJsZVJvd3NgLWF0dHJpYnV0ZSB0byB0aGUgYDxuZy10ZW1wbGF0ZT5gLWVsZW1lbnQuIEFueSBgdHJgIGVsZW1lbnRzIHRoYXQgZXhpc3Qgd2l0aGluIGA8bmctdGVtcGxhdGUgdGFibGVBcHBlbmRhYmxlUm93cz5gIGFuZCBgPC9uZy10ZW1wbGF0ZT5gIHRhZ3Mgd2lsbCBiZSBwdXQgYmVsb3cgZGF0YSByb3cncyBgdHJgIGVsZW1lbnQgaW4gdGhlIHRhYmxlLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8IS0tIGN1c3RvbSBhcHBlbmRlZCByb3dzIC0tPlxuICogPG5nLXRlbXBsYXRlIHRhYmxlQXBwZW5kYWJsZVJvd3MgbGV0LW15RGF0YVZhcj1cIiRpbXBsaWNpdFwiIGxldC1zdGF0dXM9XCIkaW1wbGljaXQuc3RhdHVzXCI+XG4gKiAgPHRyPlxuICogICA8IS0tIGZpcnN0IHJvdydzIGNvbHVtbnMgLS0+XG4gKiAgPC90cj5cbiAqICA8IS0tIG1vcmUgcm93cyBpZiBuZWVkZWQgLS0+XG4gKiA8L25nLXRlbXBsYXRlPlxuICpcbiAqIElmIGN1c3RvbSBzdHlsaW5nIGlzIG5lZWRlZCBmb3IgZGF0YSByb3cgdGhhdCBoYXMgYXBwZW5kZWQgcm93cywgeW91IGNhbiB1c2UgZGF0YSBhdHRyaWJ1dGUgYGRhdGEtaGFzcm93c3BhbmAgdG8gZGlzdGluZ3Vpc2ggaXQgZnJvbSBkYXRhIHJvdyB3aXRob3V0IGFwcGVuZGVkIHJvd3MuXG4gKiBZb3UgY2FuIHBhc3MgeW91ciBvd24gY3VzdG9tIG1ldGhvZCB3aXRoIGNvbmRpdGlvbmFsIGxvZ2ljIHRvIGRlZmluZSB3aGF0IHZhbHVlIHdpbGwgYmUgcGFzc2VkIHRvIGRhdGEtaGFzcm93c3Bhbi5cbiAqIEluIGFkZGl0aW9uLCBoYXNSb3dTcGFuIGZ1bmN0aW9uIGFjY2VwdHMgaXRlbSBmcm9tIGBASW5wdXQoKSB0YWJsZURhdGFgIGFzIGFyZ3VtZW50IHdoaWNoIGlzIG9mIHRoZSBzYW1lIHR5cGUgYXMgdmFsdWUgcGFzc2VkIHRvIGNvbnRleHQgYCRpbXBsaWNpdGAgdmFyaWFibGUuXG4gKiBJTVBPUlRBTlQ6IHVzZSBhcnJvdyBmdW5jdGlvbiBzdHlsZSBmb3IgZGVmaW5pbmcgZnVuY3Rpb24gaW5zaWRlIGNvbXBvbmVudCwgaS5lLiBgaGFzUm93U3BhbiA9ICh2YWx1ZSkgPT4gb3V0cHV0O2AuIElmIHJlZ3VsYXIgZnVuY3Rpb24gd2lsbCBiZSBkZWZpbmVkLCBpLmUuIGBoYXNSb3dTcGFuKHZhbHVlKSB7IHJldHVybiBvdXRwdXQ7IH1gLCBiaW5kaW5nIHdpbGwgbm90IHdvcmsuXG4gKlxuICogQGV4YW1wbGVcbiAqIDwhLS0gaW5zaWRlIGNvbXBvbmVudFxuICogY2xhc3MgQ3VzdG9tQ29tcG9uZW50IHtcbiAqICBjdXN0b21IYXNSb3dTcGFuRnVuY3Rpb24gPSAoaXRlbTogQ3VzdG9tRGF0YVR5cGUpID0+IGl0ZW0uYXBwZW5kZWRSb3dzRGF0YS5sZW5ndGggPiAwID8gdHJ1ZSA6IGZhbHNlO1xuICogfVxuICogLS0+XG4gKiA8IS0tIGluc2lkZSBzdHlsZXNoZWV0c1xuICogW2RhdGEtaGFzcm93c3Bhbj1cInRydWVcIl0ge1xuICogIGNvbG9yOiBibHVlO1xuICogfVxuICogLmFwcGVuZGVkLXJvdyB7XG4gKiAgY29sb3I6IGJsdWU7XG4gKiB9XG4gKiAtLT5cbiAqIDxuZ2d2LXRhYmxlIFtoYXNSb3dTcGFuXT1cImN1c3RvbUhhc1Jvd1NwYW5GdW5jdGlvblwiPlxuICogIDwhLS0gY3VzdG9tIGFwcGVuZGVkIHJvd3MgLS0+XG4gKiAgPG5nLXRlbXBsYXRlIHRhYmxlQXBwZW5kYWJsZVJvd3MgbGV0LWFwcGVuZGVkUm93c0RhdGE9XCIkaW1wbGljaXQuYXBwZW5kZWRSb3dzRGF0YVwiPlxuICogICA8dHIgKm5nRm9yPVwibGV0IGFwcGVuZGVkUm93SXRlbSBvZiBhcHBlbmRlZFJvd3NEYXRhXCIgY2xhc3M9XCJhcHBlbmRlZC1yb3dcIj5cbiAqICAgIDx0ZD57eyBhcHBlbmRlZFJvd0l0ZW0gfX08L3RkPlxuICogICAgPCEtLSBvdGhlciByb3cncyBjb2x1bW5zIC0tPlxuICogICA8L3RyPlxuICogIDwvbmctdGVtcGxhdGU+XG4gKiA8L25nZ3YtdGFibGU+XG4gKlxuICogSW4gYWRkaXRpb24sIGl0IGlzIHBvc3NpYmxlIHRvIGFkZCBmb290ZXIgZm9yIHRoZSB0YWJsZS4gU2ltaWxhcmx5IHRvIGFkZGluZyBjdXN0b20gY29sdW1ucywgdXNlIGA8bmctdGVtcGxhdGU+YC10YWcgYW5kIHBsYWNlIHRoZSBuZy10ZW1wbGF0ZSBpbiB0aGUgaHRtbCBiZXR3ZWVuIHRoZSBzdGFydCBhbmQgZW5kaW5nIHRhZyBvZlxuICogdGhlIGA8bmdndi10YWJsZT5gLiBBZGQgYSBgdGFibGVGb290ZXJgLWF0dHJpYnV0ZSB0byB0aGUgYDxuZy10ZW1wbGF0ZT5gLWVsZW1lbnQuIEFueSBlbGVtZW50cyB0aGF0IGV4aXN0IHdpdGhpbiBgPG5nLXRlbXBsYXRlIHRhYmxlRm9vdGVyPmAgYW5kIGA8L25nLXRlbXBsYXRlPmAgdGFncyB3aWxsIGJlIHB1dCB0byB0Zm9vdCBlbGVtZW50IGluc2lkZSB0aGUgdGFibGUuXG4gKlxuICogQGV4YW1wbGVcbiAqIDwhLS0gZm9yIHRhYmxlIGZvb3RlciBpLmUuIHRmb290LWVsZW1lbnQgLS0+XG4gKiA8bmctdGVtcGxhdGUgdGFibGVGb290ZXI+XG4gKiAgPHRyPlxuICogICA8IS0tIGZpcnN0IHJvdydzIGNvbHVtbnMgLS0+XG4gKiAgPC90cj5cbiAqICA8IS0tIG1vcmUgcm93cyBpZiBuZWVkZWQgLS0+XG4gKiA8L25nLXRlbXBsYXRlPlxuICpcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdndi10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ29tcG9uZW50PFQgZXh0ZW5kcyBUYWJsZVJvdz5cbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBDdXN0b20gdGVtcGxhdGVzIGRlZmluZWQgaW4gdGhlIGh0bWwuXG4gICAqL1xuICBAQ29udGVudENoaWxkcmVuKFRhYmxlVGVtcGxhdGVEaXJlY3RpdmUsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgY3VzdG9tVGVtcGxhdGVzITogUXVlcnlMaXN0PFRhYmxlVGVtcGxhdGVEaXJlY3RpdmU8a2V5b2YgVD4+XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBDdXN0b20gYXBwZW5kZWQgcm93cyB0ZW1wbGF0ZSBkZWZpbmVkIGluIHRoZSBodG1sLlxuICAgKi9cbiAgQENvbnRlbnRDaGlsZChUYWJsZUFwcGVuZGFibGVSb3dzVGVtcGxhdGVEaXJlY3RpdmUpXG4gIGFwcGVuZGVkUm93c1RlbXBsYXRlITogVGFibGVBcHBlbmRhYmxlUm93c1RlbXBsYXRlRGlyZWN0aXZlXG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBDdXN0b20gZm9vdGVyIHRlbXBsYXRlIGRlZmluZWQgaW4gdGhlIGh0bWwuXG4gICAqL1xuICBAQ29udGVudENoaWxkKFRhYmxlRm9vdGVyVGVtcGxhdGVEaXJlY3RpdmUpXG4gIGN1c3RvbUZvb3RlclRlbXBsYXRlITogVGFibGVGb290ZXJUZW1wbGF0ZURpcmVjdGl2ZVxuXG4gIC8qKiBFbWl0cyB0aGUgdGFibGUgcm93IHRoYXQgd2FzIGNsaWNrZWQuIFdvcmtzIG9uIGFsbCBjb2x1bW5zIGlmIG5vdCBwcmV2ZW50RGVmYXVsdEVtaXQgaXMgc2V0IGZvciB0aGF0IGNvbHVtbi4gKi9cbiAgQE91dHB1dCgpIG5ndlJvd0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxUIHwgYW55PigpXG5cbiAgLyoqXG4gICAqIEVtaXRzIGN1cnJlbnRseSBzZWxlY3RlZCBhbmQgZGVzZWxlY3RlZCBpdGVtcyBpbiB0aGUgdGFibGUgYXMga2V5LXZhbHVlIHBhaXJzLlxuICAgKiBVc2VzIGVhY2ggaXRlbWBzIGl0ZW1JZCBhcyBrZXksIGFuZCBhIGJvb2xlYW4gdmFsdWUgdG8gZGVzY3JpYmUgc2VsZWN0ZWQgc3RhdHVzLlxuICAgKi9cbiAgQE91dHB1dCgpIG5ndlJvd1NlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nW10+KClcblxuICAvKipcbiAgICogRW1pdHMgZXZlbnQgdG8gc2lnbmFsIHRoYXQgdGhlIHRhYmxlIHNob3VsZCBiZSByZW9yZGVyZWQuXG4gICAqL1xuICBAT3V0cHV0KCkgbmd2T3JkZXJCeSA9IG5ldyBFdmVudEVtaXR0ZXI8T3JkZXJCeTxUPj4oKVxuXG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiBpdGVtcyBkZXNjcmliaW5nIGhvdyB0aGUgdGFibGUgaGVhZGVyIHNob3VsZCBiZSByZW5kZXJlZCxcbiAgICogdG9nZXRoZXIgd2l0aCBpbnN0cnVjdGlvbnMgZm9yIGhvdyBlYWNoIHJvdyBzaG91bGQgYmUgZGlzcGxheWVkIGluIHRoYXQgY29sdW1uLlxuICAgKi9cbiAgQElucHV0KCkgdGFibGVDb2x1bW5zITogVGFibGVDb2x1bW48VD5bXVxuXG4gIC8qKiBEYXRhIGFycmF5IHRvIGRpc3BsYXkgZGF0YSBpbiB0aGUgdGFibGUuIEVhY2ggaXRlbSA8VD4gaW4gdGhlIGFycmF5IHJlcHJlc2VudHMgYSByb3cgaW4gdGhlIHRhYmxlLiAqL1xuICBASW5wdXQoKSB0YWJsZURhdGEhOiBUW11cblxuICAvKipcbiAgICogUHJvcGVydHkgbmFtZSB1c2VkIHRvIHVuaXF1ZWx5IGRlc2NyaWJlIGVhY2ggaXRlbSAoaS5lLiByb3cpIGluIHRoZSBkYXRhIHRhYmxlLlxuICAgKiBEZWZhdWx0cyB0byBcXCdpZFxcJy5cbiAgICogSXMgcmVxdWlyZWQgaWYgc2VsZWN0YWJsZSBpcyB0cnVlLlxuICAgKi9cbiAgQElucHV0KCkgcm93SWQgPSAnaWQnXG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uJ3MgcmV0dXJuIHZhbHVlIGlzIHVzZWQgZm9yIGRhdGEgYXR0cmlidXRlIFxcJ2RhdGEtaGFzcm93c3BhblxcJy5cbiAgICogSWYgY3VzdG9tIGhhc1Jvd1NwYW4gZnVuY3Rpb24gaXMgbm90IHBhc3NlZCB0byB0aGUgdGFibGUsXG4gICAqIHRoZW4gdGhpcyBmdW5jdGlvbiByZXR1cm5zIHVuZGVmaW5lZCB2YWx1ZSBieSBkZWZhdWx0IHdoaWNoIHJlc3VsdHMgaW4gXFwnZGF0YS1oYXNyb3dzcGFuXFwnIGF0dHJpYnV0ZSBiZWluZyBvbWl0dGVkIGluIGh0bWxcbiAgICogKGFuZ3VsYXIgb21pdHMgYXR0cmlidXRlcyB0aGF0IGNvbnRhaW4gbnVsbCBvciB1bmRlZmluZWQgdmFsdWUpLlxuICAgKiBJTVBPUlRBTlQ6IHVzZSBhcnJvdyBmdW5jdGlvbiBzdHlsZSBmb3IgZGVmaW5pbmcgZnVuY3Rpb24gaW5zaWRlIGNvbXBvbmVudCwgaS5lLiBgaGFzUm93U3BhbiA9ICh2YWx1ZSkgPT4gb3V0cHV0O2AuIElmIHJlZ3VsYXIgZnVuY3Rpb24gd2lsbCBiZSBkZWZpbmVkLCBpLmUuIGBoYXNSb3dTcGFuKHZhbHVlKSB7IHJldHVybiBvdXRwdXQ7IH1gLCBiaW5kaW5nIHdpbGwgbm90IHdvcmsuXG4gICAqL1xuICBASW5wdXQoKSBoYXNSb3dTcGFuOiAoaXRlbTogVCkgPT4gYW55ID0gKF8pID0+IHVuZGVmaW5lZFxuXG4gIC8qKlxuICAgKiBVc2VkIHRvIGVuYWJsZS9kaXNhYmxlIHRoZSBsZWZ0LXNpZGUgY2hlY2tib3ggY29sdW1uLlxuICAgKiBEZWZhdWx0cyB0byB0cnVlLlxuICAgKi9cbiAgQElucHV0KCkgc2VsZWN0YWJsZSA9IHRydWVcblxuICAvKipcbiAgICogVXNlZCB0byBlbmFibGUvZGlzYWJsZSBleHBhbmRhYmxlIHJvd3MuXG4gICAqIERlZmF1bHRzIHRvIGZhbHNlLlxuICAgKi9cbiAgQElucHV0KCkgZXhwYW5kYWJsZSA9IGZhbHNlXG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gZW5hYmxlL2Rpc2FibGUgdGhlIHJpZ2h0LXNpZGUgZXhwYW5kIGljb24gY29sdW1uLlxuICAgKiBEZWZhdWx0cyB0byB0cnVlLlxuICAgKi9cbiAgQElucHV0KCkgZXhwYW5kZWRCeURlZmF1bHQgPSB0cnVlXG5cbiAgLyoqXG4gICogUHJvcGVydHkgbmFtZSB1c2VkIHRvIGRlc2NyaWJlIHRoZSBzdWJJdGVtcyBpbiB0aGUgZGF0YSB0YWJsZS5cbiAgKi9cbiAgQElucHV0KCkgc3ViSXRlbXNQcm9wID0gJ3N1Ykl0ZW1zJ1xuXG4gIC8qKlxuICAgKiBBbGxvdyBuZ2d2LXRhYmxlIHRvIGF0dGVtcHQgc29ydGluZyB0aGUgZGF0YSBpbiB0aGUgdGFibGUuIE5vdCByZWNvbW1lbmRlZCBpZiBvbmx5IGEgc3Vic2V0IGlzIGxvYWRlZCBvciBpZiB0aGUgZGF0YXNldCBpcyB2ZXJ5IGxhcmdlLlxuICAgKiBEaXNhYmxlZCBieSBkZWZhdWx0LlxuICAgKi9cbiAgQElucHV0KCkgYWxsb3dMb2NhbFNvcnQgPSBmYWxzZVxuXG4gIC8qKiBTcGVjaWFsIHByb3BlcnR5IHVzZWQgZm9yIHNlbGVjdGluZyBET00gZWxlbWVudHMgZHVyaW5nIGF1dG9tYXRlZCBVSSB0ZXN0aW5nLiAqL1xuICBASW5wdXQoKSB0aG9vayA9ICd0YWJsZS1zZWxlY3QtYWxsJ1xuXG4gIC8qKiBGdW5jdGlvbiB0byBvdmVyd3JpdGUgZ2VuZXJhdGVkIHRob29rIGZvciBlYWNoIHJvdy4gKi9cbiAgQElucHV0KCkgdHJUaG9va0ZuPzogKGl0ZW06IFQpID0+IHN0cmluZ1xuXG4gIC8qKiBBcmlhIGxhYmVsIGZvciB0aGUgY2hlY2tib3ggaW4gdGhlIHRhYmxlIGhlYWRlciAqL1xuICBASW5wdXQoKSBhcmlhTGFiZWxDaGVja2JveFRoPzogc3RyaW5nXG5cbiAgLyoqIEFyaWEgbGFiZWwgZm9yIHRoZSBjaGVja2JveCBpbiB0aGUgdGFibGUgaGVhZGVyICovXG4gIEBJbnB1dCgpIGFyaWFMYWJlbENoZWNrYm94VHI/OiBzdHJpbmdcblxuICAvKiogQXJpYSBsYWJlbHMgZm9yIHNvcnRpbmcgaW4gdGhlIHRhYmxlIGhlYWRlciAqL1xuICBASW5wdXQoKSBhcmlhTGFiZWxzT3JkZXJCeT86IGFyaWFMYWJlbHNPcmRlckJ5XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBJbnRlcm5hbCBkYXRhIHN0cnVjdHVyZSB1c2VkIHRvIGtlZXAgdHJhY2sgb2YgYWRkZWQgY29udGVudCB0ZW1wbGF0ZXMgdXNlZCBpbiB0ZCBlbGVtZW50cy5cbiAgICovXG4gIGN1c3RvbVJvd1RlbXBsYXRlcyA9IG5ldyBNYXA8a2V5b2YgVCwgVGVtcGxhdGVSZWY8YW55Pj4oKVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogSW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmUgdXNlZCB0byBrZWVwIHRyYWNrIG9mIGFkZGVkIGNvbnRlbnQgdGVtcGxhdGVzIHVzZWQgaW4gdGggZWxlbWVudHMuXG4gICAqL1xuICBjdXN0b21IZWFkZXJUZW1wbGF0ZXMgPSBuZXcgTWFwPGtleW9mIFQsIFRlbXBsYXRlUmVmPGFueT4+KClcblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIEludGVybmFsIGRhdGEgc3RydWN0dXJlIHVzZWQgdG8gaG9sZCBjdXN0b20gYXBwZW5kZWQgcm93cyBpLmUuIHRyIGVsZW1lbnRzIChyb3dzKS5cbiAgICovXG4gIGFwcGVuZGVkUm93c1RlbXBsYXRlUmVmITogVGVtcGxhdGVSZWY8YW55PlxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogSW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmUgdXNlZCB0byBob2xkIHRmb290IGVsZW1lbnQgY2hpbGRyZW4gaS5lLiB0ciBlbGVtZW50cyAocm93cykuXG4gICAqL1xuICBjdXN0b21Gb290ZXJUZW1wbGF0ZVJlZiE6IFRlbXBsYXRlUmVmPGFueT5cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIEluY3JlbWVudGFsIGlkLlxuICAgKi9cbiAgaW5pdElkITogbnVtYmVyXG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBGb3JtR3JvdXAgY29udGFpbmluZyBhbGwgcm93IGlkXFwncyBhcyBjb250cm9scywgYW5kIHdoZXRoZXIgdGhlc2UgYXJlIHNlbGVjdGVkIG9yIG5vdCBhcyB2YWx1ZXMuXG4gICAqL1xuICByb3dTZWxlY3RvcnM6IFVudHlwZWRGb3JtR3JvdXAgPSBuZXcgVW50eXBlZEZvcm1Hcm91cCh7fSlcblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIE1hc3RlciBzZWxlY3RvciBmb3Igc2VsZWN0aW5nIG9yIGRlc2VsZWN0aW5nIGFsbCByb3cgc2VsZWN0b3JzLlxuICAgKi9cbiAgZ3JvdXBTZWxlY3RvcjogVW50eXBlZEZvcm1Db250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbChmYWxzZSlcblxuICBwcml2YXRlIHNlbGVjdGVkOiBzdHJpbmdbXSA9IFtdXG4gIHByaXZhdGUgc3ViczogU3Vic2NyaXB0aW9uW10gPSBbXVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAvLyBVcGRhdGUgc2VsZWN0YWJsZSBvciBleHBhbmRhYmxlIHJvd3MgaWYgdGFibGUgZGF0YSBvciBzZXR0aW5ncyBjaGFuZ2VcbiAgICBpZiAoXG4gICAgICAodGhpcy5zZWxlY3RhYmxlIHx8IHRoaXMuZXhwYW5kYWJsZSkgJiYgY2hhbmdlcy50YWJsZURhdGE/LmN1cnJlbnRWYWx1ZSB8fFxuICAgICAgKGNoYW5nZXMuc2VsZWN0YWJsZT8uY3VycmVudFZhbHVlIHx8IGNoYW5nZXMuZXhwYW5kYWJsZT8uY3VycmVudFZhbHVlKSAmJiB0aGlzLnRhYmxlRGF0YVxuICAgICkge1xuICAgICAgY29uc3Qgd2FzQ2hhbmdlZCA9IHRoaXMucmVnaXN0ZXJTZWxlY3RhYmxlUm93cyhcbiAgICAgICAgY2hhbmdlcy50YWJsZURhdGEuY3VycmVudFZhbHVlLFxuICAgICAgKVxuICAgICAgaWYgKHdhc0NoYW5nZWQgJiYgIXRoaXMuc3Vicy5sZW5ndGgpIHtcbiAgICAgICAgLy8gZmlyc3QgdGltZSB0aGlzIGlzIHJ1blxuICAgICAgICBjb25zdCBncm91cFNlbGVjdG9yU3ViID0gdGhpcy5ncm91cFZhbHVlU3Vic2NyaXB0aW9uXG4gICAgICAgIGNvbnN0IHJvd1NlbGVjdG9yU3ViID0gdGhpcy5yb3dWYWx1ZVN1YnNjcmlwdGlvblxuICAgICAgICB0aGlzLnN1YnMucHVzaChncm91cFNlbGVjdG9yU3ViLCByb3dTZWxlY3RvclN1YilcbiAgICAgIH0gZWxzZSBpZiAod2FzQ2hhbmdlZCkge1xuICAgICAgICB0aGlzLnJvd1NlbGVjdG9ycy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KClcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBzb3J0IGFueSBpbmNvbWluZyBkYXRhXG4gICAgaWYgKFxuICAgICAgdGhpcy5hbGxvd0xvY2FsU29ydCAmJlxuICAgICAgKGNoYW5nZXMudGFibGVEYXRhPy5jdXJyZW50VmFsdWUgfHwgY2hhbmdlcy50YWJsZUNvbHVtbnM/LmN1cnJlbnRWYWx1ZSlcbiAgICApIHtcbiAgICAgIGNvbnN0IG9yZGVyZWRCeUNvbHVtbjogVGFibGVDb2x1bW48VD4gfCB1bmRlZmluZWQgPVxuICAgICAgICB0aGlzLnRhYmxlQ29sdW1ucz8uZmluZCgoZWwpID0+IGVsLm9yZGVyICE9PSB1bmRlZmluZWQpXG4gICAgICBpZiAob3JkZXJlZEJ5Q29sdW1uKSB0aGlzLnNvcnRJdGVtc0J5KG9yZGVyZWRCeUNvbHVtbilcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRJZCA9IHN0YXRpY0luaXRJZCsrXG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgLy8gaWYgYW55IGN1c3RvbSB0ZW1wbGF0ZXMgd2VyZSBkZWZpbmVkIGluIHRoZSB0ZW1wbGF0ZVxuICAgIGlmICh0aGlzLmN1c3RvbVRlbXBsYXRlcy5sZW5ndGgpIHtcbiAgICAgIC8vIGZvciBlYWNoIHRlbXBsYXRlIGZvdW5kXG4gICAgICB0aGlzLmN1c3RvbVRlbXBsYXRlcy5tYXAoKHRhYmxlVGVtcGxhdGUpID0+IHtcbiAgICAgICAgLy8gaWYgdGFyZ2V0IGlzIGVpdGhlciAndGQnIG9yICdib3RoJ1xuICAgICAgICBpZiAoXG4gICAgICAgICAgWyd0ZCcsICdib3RoJ10uaW5jbHVkZXModGFibGVUZW1wbGF0ZS50YWJsZUNvbHVtblRhcmdldCBhcyBzdHJpbmcpXG4gICAgICAgICkge1xuICAgICAgICAgIC8vIGFkZCB0byBjdXN0b20gcm93IHRlbXBsYXRlc1xuICAgICAgICAgIHRoaXMuY3VzdG9tUm93VGVtcGxhdGVzLnNldChcbiAgICAgICAgICAgIHRhYmxlVGVtcGxhdGUudGFibGVDb2x1bW4sXG4gICAgICAgICAgICB0YWJsZVRlbXBsYXRlLnRlbXBsYXRlUmVmLFxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgICAvLyBpZiB0YXJnZXQgaXMgZWl0aGVyICd0aCcgb3IgJ2JvdGgnXG4gICAgICAgIGlmIChcbiAgICAgICAgICBbJ3RoJywgJ2JvdGgnXS5pbmNsdWRlcyh0YWJsZVRlbXBsYXRlLnRhYmxlQ29sdW1uVGFyZ2V0IGFzIHN0cmluZylcbiAgICAgICAgKSB7XG4gICAgICAgICAgLy8gYWRkIHRvIGN1c3RvbSBoZWFkZXIgdGVtcGxhdGVzXG4gICAgICAgICAgdGhpcy5jdXN0b21IZWFkZXJUZW1wbGF0ZXMuc2V0KFxuICAgICAgICAgICAgdGFibGVUZW1wbGF0ZS50YWJsZUNvbHVtbixcbiAgICAgICAgICAgIHRhYmxlVGVtcGxhdGUudGVtcGxhdGVSZWYsXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIGlmIGFwcGVuZGVkIHJvd3MnIHRlbXBsYXRlIGlzIGRlZmluZWQgaW4gdGhlIHRlbXBsYXRlXG4gICAgaWYgKHRoaXMuYXBwZW5kZWRSb3dzVGVtcGxhdGUpIHtcbiAgICAgIC8vIHNldCB0ZW1wbGF0ZVJlZiBvZiBhcHBlbmRlZCByb3dzJyB0ZW1wbGF0ZSB0byB2YXJpYWJsZVxuICAgICAgdGhpcy5hcHBlbmRlZFJvd3NUZW1wbGF0ZVJlZiA9IHRoaXMuYXBwZW5kZWRSb3dzVGVtcGxhdGUudGVtcGxhdGVSZWZcbiAgICB9XG5cbiAgICAvLyBpZiBjdXN0b20gZm9vdGVyIHRlbXBsYXRlIGlzIGRlZmluZWQgaW4gdGhlIHRlbXBsYXRlXG4gICAgaWYgKHRoaXMuY3VzdG9tRm9vdGVyVGVtcGxhdGUpIHtcbiAgICAgIC8vIHNldCB0ZW1wbGF0ZVJlZiBvZiB0YWJsZSBmb290ZXIgdG8gdmFyaWFibGVcbiAgICAgIHRoaXMuY3VzdG9tRm9vdGVyVGVtcGxhdGVSZWYgPSB0aGlzLmN1c3RvbUZvb3RlclRlbXBsYXRlLnRlbXBsYXRlUmVmXG4gICAgfVxuXG4gICAgLy8gaWYgZXhwYW5kZWRCeURlZmF1bHQgaXMgdHJ1ZSwgdGhlbiBleHBhbmQgYWxsIHJvd3NcbiAgICBpZiAodGhpcy5leHBhbmRlZEJ5RGVmYXVsdCAmJiB0aGlzLmV4cGFuZGFibGUgJiYgdGhpcy50YWJsZURhdGEpIHtcbiAgICAgIHRoaXMudGFibGVEYXRhLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgdGhpcy50b2dnbGVSb3dUb0V4cGFuZChpdGVtW3RoaXMucm93SWRdKVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnMuZm9yRWFjaCgoc3ViKSA9PiBzdWIudW5zdWJzY3JpYmUoKSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogUmV0dXJucyBhIHN1YnNjcmlwdGlvbiB0byB0aGUgbWFzdGVyIHNlbGVjdG9yIGNvbnRyb2wgdGhhdCBlaXRoZXIgc2VsZWN0cyBvciBkZXNlbGVjdHMgYWxsIHJvdyBjb250cm9scy5cbiAgICovXG4gIGdldCBncm91cFZhbHVlU3Vic2NyaXB0aW9uKCk6IFN1YnNjcmlwdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuZ3JvdXBTZWxlY3Rvci52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICh2YWx1ZTogYm9vbGVhbikgPT4ge1xuICAgICAgICBjb25zdCBzZWxlY3RNYXAgPSBuZXcgTWFwKE9iamVjdC5lbnRyaWVzKHRoaXMucm93U2VsZWN0b3JzVmFsdWUpKVxuICAgICAgICBzZWxlY3RNYXAuZm9yRWFjaCgoXywga2V5KSA9PiBzZWxlY3RNYXAuc2V0KGtleSwgdmFsdWUpKVxuICAgICAgICBjb25zdCBwYXRjaFZhbHVlID0gb2JqZWN0RnJvbUVudHJpZXMoc2VsZWN0TWFwKVxuICAgICAgICB0aGlzLnJvd1NlbGVjdG9ycy5wYXRjaFZhbHVlKHBhdGNoVmFsdWUpXG4gICAgICB9LFxuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIFJldHVybnMgYSBzdWJzY3JpcHRpb24gdG8gYWxsIGluZGl2aWR1YWwgcm93IHNlbGVjdG9ycyBhbmQgdXBkYXRlIHRoZSBtYXN0ZXIgc2VsZWN0b3IgaWYgYWxsIGFyZSBzZWxlY3RlZC5cbiAgICovXG4gIGdldCByb3dWYWx1ZVN1YnNjcmlwdGlvbigpOiBTdWJzY3JpcHRpb24ge1xuICAgIHJldHVybiB0aGlzLnJvd1NlbGVjdG9ycy52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUoMCksIC8vIHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgZXZlbnRzIGFuZCB0byB3YWl0IGZvciBhbGwgc3ViIGNvbnRyb2xzIHRvIHVwZGF0ZVxuICAgICAgICBtYXAoKHZhbDogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0pID0+IHtcbiAgICAgICAgICAvLyBnZXQgYSBmaWx0ZXJlZCBhcnJheSBvZiBrZXlzIGZvciBhbGwgcm93cyB0aGF0IGFyZSBzZWxlY3RlZFxuICAgICAgICAgIGNvbnN0IHNlbGVjdGVkID0gT2JqZWN0LmtleXModmFsKS5maWx0ZXIoKGtleSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHZhbFtrZXldID09PSB0cnVlICYmIHRoaXMucm93U2VsZWN0b3JzLmdldChrZXkpPy5lbmFibGVkXG4gICAgICAgICAgfSlcbiAgICAgICAgICAvLyByZXR1cm5zIGFuIG9iamVjdCBjb250YWluaW5nIG9ubHkgdGhlIGZpbHRlcmVkIGtleXNcbiAgICAgICAgICByZXR1cm4gcGljayhzZWxlY3RlZCwgdmFsKVxuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAodmFsdWU6IG9iamVjdCkgPT4ge1xuICAgICAgICAgIC8vIHRoZSBudW1iZXIgb2Ygc2VsZWN0ZWQga2V5cyBjb21wYXJlZCB0byB0aGUgdG90YWwgbnVtYmVyIG9mIGtleXMgYXZhaWxhYmxlXG4gICAgICAgICAgY29uc3QgbnVtYmVyT2ZTZWxlY3RlZCA9IE9iamVjdC5rZXlzKHZhbHVlKS5sZW5ndGhcbiAgICAgICAgICBjb25zdCBhbGxTZWxlY3RlZDogYm9vbGVhbiA9XG4gICAgICAgICAgICBudW1iZXJPZlNlbGVjdGVkID4gMFxuICAgICAgICAgICAgICA/IG51bWJlck9mU2VsZWN0ZWQgPT09IE9iamVjdC5rZXlzKHRoaXMucm93U2VsZWN0b3JzVmFsdWUpLmxlbmd0aFxuICAgICAgICAgICAgICA6IGZhbHNlXG4gICAgICAgICAgLy8gdXBkYXRlIHRoZSBtYXN0ZXIgc2VsZWN0b3IgY29udHJvbFxuICAgICAgICAgIHRoaXMuZ3JvdXBTZWxlY3Rvci5zZXRWYWx1ZShhbGxTZWxlY3RlZCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pXG4gICAgICAgICAgLy8gdXBkYXRlIHRoZSBhcnJheSBvZiBjdXJyZW50bHkgc2VsZWN0ZWQgaWQnc1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBPYmplY3Qua2V5cyh2YWx1ZSlcbiAgICAgICAgICAvLyBhbmQgZW1pdCB0aGUgdXBkYXRlZCB2YWx1ZVxuICAgICAgICAgIHRoaXMubmd2Um93U2VsZWN0LmVtaXQodGhpcy5zZWxlY3RlZClcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIFJlZ2lzdGVycyBvciBkaXNhYmxlcyByb3cgY29udHJvbHMgZm9yIG5ldyBvciByZW1vdmVkIHJvd3MuXG4gICAqL1xuICByZWdpc3RlclNlbGVjdGFibGVSb3dzKHRhYmxlRGF0YTogYW55W10pOiBib29sZWFuIHtcbiAgICBpZiAoIXRhYmxlRGF0YSkgcmV0dXJuIGZhbHNlXG4gICAgLy8gQXJyYXkgY29udGFpbmluZyBvbmx5IHRoZSBpZCdzIGZvciBlYWNoIHJvd1xuICAgIGNvbnN0IGRhdGFSb3dJZHM6IHN0cmluZ1tdID0gdGFibGVEYXRhLm1hcCgoZGF0YTogYW55KSA9PiBkYXRhW3RoaXMucm93SWRdKVxuXG4gICAgLy8gQXJyYXkgY29udGFpbmluZyB0aGUgaWQncyB0aGF0IGhhdmUgcmVnaXN0ZXJlZCBjb250cm9sc1xuICAgIGNvbnN0IGN1cnJlbnRJZHM6IHN0cmluZ1tdID0gT2JqZWN0LmtleXModGhpcy5yb3dTZWxlY3RvcnNWYWx1ZSlcblxuICAgIC8vIEFycmF5IGNvbnRhaW5pbmcgYWxsIGlkcyB0aGF0IGxhY2tzIGEgY29ycmVzcG9uZGluZyBjb250cm9sIChpLmUuIG5ldyByb3dzKVxuICAgIGNvbnN0IG5ld0lkczogc3RyaW5nW10gPSBkYXRhUm93SWRzLmZpbHRlcihcbiAgICAgIChpZCkgPT4gY3VycmVudElkcy5pbmRleE9mKGlkKSA9PT0gLTEsXG4gICAgKVxuXG4gICAgLy8gQXJyYXkgY29udGFpbmluZyBhbGwgaWRzIHRoYXQgaGFzIGEgY29udHJvbCBidXQgaXMgbm8gbG9uZ2VyIGluIHRoZSBkYXRhIHNldCAoaS5lLiByZW1vdmVkIHJvd3MpXG4gICAgY29uc3QgcmVtb3ZlZElkczogc3RyaW5nW10gPSBjdXJyZW50SWRzLmZpbHRlcihcbiAgICAgIChpZCkgPT4gZGF0YVJvd0lkcy5pbmRleE9mKGlkKSA9PT0gLTEsXG4gICAgKVxuXG4gICAgLy8gUmVnaXN0ZXIgbmV3IGNvbnRyb2xzIGZvciBhZGRlZCByb3dzXG4gICAgaWYgKG5ld0lkcy5sZW5ndGgpIHtcbiAgICAgIG5ld0lkcy5mb3JFYWNoKChpZCkgPT4ge1xuICAgICAgICBjb25zdCBjdHJsID0gdGhpcy5yb3dTZWxlY3RvcnMucmVnaXN0ZXJDb250cm9sKFxuICAgICAgICAgIGlkLFxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woZmFsc2UpLFxuICAgICAgICApXG4gICAgICAgIGlmIChjdHJsLmRpc2FibGVkKSBjdHJsLmVuYWJsZSgpXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIFNldCBhbHJlYWR5IHJlZ2lzdGVyZWQgY29udHJvbHMgdG8gZGlzYWJsZWQgZm9yIHJlbW92ZWQgcm93c1xuICAgIGlmIChyZW1vdmVkSWRzLmxlbmd0aClcbiAgICAgIHJlbW92ZWRJZHMuZm9yRWFjaCgoaWQpID0+IHRoaXMucm93U2VsZWN0b3JzLmdldChpZCk/LmRpc2FibGUoKSlcblxuICAgIHJldHVybiBuZXdJZHMubGVuZ3RoID4gMCB8fCByZW1vdmVkSWRzLmxlbmd0aCA+IDBcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogUmV0dXJucyBhbGwgZW5hYmxlZCB2YWx1ZXMgdW5sZXNzIGFsbCByb3dzIGFyZSBkaXNhYmxlZC5cbiAgICovXG4gIGdldCByb3dTZWxlY3RvcnNWYWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnJvd1NlbGVjdG9ycy5lbmFibGVkID8gdGhpcy5yb3dTZWxlY3RvcnMudmFsdWUgOiB7fVxuICB9XG5cbiAgdG9nZ2xlU29ydE9yZGVyV2l0aFNwYWNlKGV2ZW50OiBhbnksIGNvbHVtbjogVGFibGVDb2x1bW48VD4pIHtcbiAgICBpZiAoY29sdW1uLnNvcnRhYmxlKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICB0aGlzLnRvZ2dsZVNvcnRPcmRlcihjb2x1bW4pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBTd2l0Y2hlcyBzb3J0aW5nIG9yZGVyIGJldHdlZW4gYXNjZW5kaW5nIGFuZCBkZXNjZW5kaW5nIG9yZGVyIGZvciBhIGNvbHVtbi5cbiAgICogQHBhcmFtIGNvbHVtbiB0aGUgY29sdW1uIHRvIHNvcnQgcm93cyBhZnRlci5cbiAgICovXG4gIHRvZ2dsZVNvcnRPcmRlcihjb2x1bW46IFRhYmxlQ29sdW1uPFQ+KSB7XG4gICAgLy8gY2hlY2sgaWYgdGhlIHRhYmxlIGlzIGFscmVhZHkgc29ydGVkIGJ5IGFub3RoZXIgY29sdW1uIHRoYW4gdGhlIG9uZSBwcm92aWRlZFxuICAgIGNvbnN0IGN1cnJlbnRseU9yZGVyZWRCeSA9IHRoaXMudGFibGVDb2x1bW5zPy5maW5kKFxuICAgICAgKGVsKSA9PiBlbCAhPT0gY29sdW1uICYmIGVsLm9yZGVyICE9PSB1bmRlZmluZWQsXG4gICAgKVxuICAgIGlmIChjdXJyZW50bHlPcmRlcmVkQnkpIGRlbGV0ZSBjdXJyZW50bHlPcmRlcmVkQnkub3JkZXJcbiAgICBjb2x1bW4ub3JkZXIgPSBjb2x1bW4ub3JkZXIgPT09ICdkZXNjJyA/ICdhc2MnIDogJ2Rlc2MnXG4gICAgdGhpcy5zb3J0SXRlbXNCeShjb2x1bW4pXG4gIH1cblxuICAvKiogSWYgc29ydGFibGUsIHJlb3JkZXJzIHRoZSB0YWJsZSBkYXRhIHVzaW5nIHRoZSBzcGVjaWZpZWQgY29sdW1uIGFzIG9yZGVyaW5nIGF0dHJpYnV0ZS4gKi9cbiAgc29ydEl0ZW1zQnkoY29sdW1uOiBUYWJsZUNvbHVtbjxUPik6IFRhYmxlUm93W10gfCB1bmRlZmluZWQge1xuICAgIGlmICghY29sdW1uLnNvcnRhYmxlKSByZXR1cm5cbiAgICAvLyBlbWl0IHJlLW9yZGVyIGV2ZW50XG4gICAgdGhpcy5uZ3ZPcmRlckJ5LmVtaXQoeyBwcm9wZXJ0eTogY29sdW1uLnByb3BlcnR5LCBvcmRlcjogY29sdW1uLm9yZGVyIH0pXG4gICAgLy8gaWYgbG9jYWwgc29ydCBpcyBhbGxvd2VkLCByZW9yZGVyIGRhdGFcbiAgICBpZiAoIXRoaXMuYWxsb3dMb2NhbFNvcnQgfHwgIXRoaXMudGFibGVEYXRhKSByZXR1cm5cbiAgICByZXR1cm4gdGhpcy50YWJsZURhdGEuc29ydChcbiAgICAgIGNvbHVtbi5vcmRlciA9PT0gJ2Rlc2MnXG4gICAgICAgID8gb3JkZXJCeURlc2NlbmRpbmcoY29sdW1uLnByb3BlcnR5KVxuICAgICAgICA6IG9yZGVyQnlBc2NlbmRpbmcoY29sdW1uLnByb3BlcnR5KSxcbiAgICApXG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIEVtaXRzIHJvdyBkYXRhIGZvciB3aGF0IHJvdyB3YXMgY2xpY2tlZCBpZiBkZWZhdWx0RW1pdCBpcyBhbGxvd2VkLlxuICAgKi9cbiAgcHJvcGFnYXRlSXRlbUNsaWNrKGl0ZW06IGFueSwgcHJldmVudERlZmF1bHRFbWl0PzogYm9vbGVhbikge1xuICAgIGlmICghcHJldmVudERlZmF1bHRFbWl0KSB0aGlzLm5ndlJvd0NsaWNrLmVtaXQoaXRlbSk7XG5cbiAgICBpZiAodGhpcy5leHBhbmRhYmxlICYmIGl0ZW1bdGhpcy5zdWJJdGVtc1Byb3BdKSB7XG4gICAgICB0aGlzLnRvZ2dsZVJvd1RvRXhwYW5kKGl0ZW1bdGhpcy5yb3dJZF0pO1xuICAgIH1cbiAgfVxuXG4gIGdldEFyaWFMYWJlbChjb2x1bW46IFRhYmxlQ29sdW1uPFQ+KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBzb3J0T3JkZXIgPVxuICAgICAgY29sdW1uLm9yZGVyID09PSAnYXNjJ1xuICAgICAgICA/IHRoaXMuYXJpYUxhYmVsc09yZGVyQnk/LmRlc2NcbiAgICAgICAgOiB0aGlzLmFyaWFMYWJlbHNPcmRlckJ5Py5hc2NcbiAgICBpZiAoIXNvcnRPcmRlcikgcmV0dXJuIC8vIG5vIGFyaWEgbGFiZWxzIGRlZmluZWRcbiAgICByZXR1cm4gY29sdW1uLmFyaWFMYWJlbFNvcnRhYmxlPy5yZXBsYWNlKCd7e3NvcnRPcmRlcn19Jywgc29ydE9yZGVyKVxuICB9XG5cbiAgcHJpdmF0ZSB0b2dnbGVSb3dUb0V4cGFuZChpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgcm93ID0gdGhpcy5yb3dTZWxlY3RvcnMuZ2V0KGlkKVxuICAgIHJvdz8uc2V0VmFsdWUoIXJvdy52YWx1ZSlcbiAgfVxufVxuIiwiPG5nLXRlbXBsYXRlICNzb3J0YWJsZVRoVGVtcGxhdGUgbGV0LWNvbHVtbj5cbiAgPGJ1dHRvbiBjbGFzcz1cInNnLXRhYmxlLXNvcnRcIiAqdHJhbnNsb2NvPVwibGV0IHRcIj5cbiAgICA8bmctdGVtcGxhdGUgI3RoQnV0dG9uVGVtcGxhdGU+XG4gICAgICB7eyB0KGNvbHVtbi5sYWJlbCA/PyAnJykgfX1cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiXG4gICAgICAgIGN1c3RvbUhlYWRlclRlbXBsYXRlcy5nZXQoY29sdW1uLnByb3BlcnR5KSBhcyB0aFRlbXBsYXRlO1xuICAgICAgICBlbHNlIHRoQnV0dG9uVGVtcGxhdGVcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwidGhUZW1wbGF0ZSB8fCBudWxsOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogY29sdW1uIH1cIlxuICAgICAgPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9idXR0b24+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI25vdFNvcnRhYmxlVGhUZW1wbGF0ZSBsZXQtY29sdW1uPlxuICA8bmctdGVtcGxhdGUgI2RlZmF1bHRUaFRlbXBsYXRlPlxuICAgIDxuZy1jb250YWluZXIgKnRyYW5zbG9jbz1cImxldCB0XCI+XG4gICAgICB7eyB0KGNvbHVtbi5sYWJlbCA/PyAnJykgfX1cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwiXG4gICAgICBjdXN0b21IZWFkZXJUZW1wbGF0ZXMuZ2V0KGNvbHVtbi5wcm9wZXJ0eSkgYXMgdGhUZW1wbGF0ZTtcbiAgICAgIGVsc2UgZGVmYXVsdFRoVGVtcGxhdGVcbiAgICBcIlxuICA+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRoVGVtcGxhdGUgfHwgbnVsbDsgY29udGV4dDogeyAkaW1wbGljaXQ6IGNvbHVtbiB9XCJcbiAgICA+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuPHRhYmxlIGNsYXNzPVwiZ2RzLXRhYmxlXCIgKnRyYW5zbG9jbz1cImxldCB0XCI+XG4gIDwhLS0gVGFibGUgaGVhZGVyIC0tPlxuICA8dGhlYWQ+XG4gICAgPHRyPlxuICAgICAgPCEtLSBDaGVja2JveCBjb2x1bW4gZm9yIGhlYWRlciAtLT5cbiAgICAgIDx0aCAqbmdJZj1cInNlbGVjdGFibGVcIiBjbGFzcz1cImNvbHVtbl9fY2hlY2tcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdkcy1maWVsZC1jaGVja2JveC13cmFwXCI+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBbYXR0ci5mb3JdPVwiJ2NiX2hlYWRlcl9fJyArIGluaXRJZFwiXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICBpZD1cInRoZWFkLWNoZWNrYm94XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImdyb3VwU2VsZWN0b3JcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbENoZWNrYm94VGhcIlxuICAgICAgICAgICAgICBbYXR0ci5pZF09XCInY2JfaGVhZGVyX18nICsgaW5pdElkXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS10aG9va109XCJ0aG9va1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGk+PC9pPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC90aD5cblxuICAgICAgPCEtLSBPdGhlciBjb2x1bW5zIC0tPlxuICAgICAgPHRoXG4gICAgICAgICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgdGFibGVDb2x1bW5zXCJcbiAgICAgICAgW2NvbHVtblR5cGVdPVwiY29sdW1uLnZhbHVlVHlwZVwiXG4gICAgICAgIFtzb3J0YWJsZV09XCJjb2x1bW4uc29ydGFibGVcIlxuICAgICAgICBbc29ydE9yZGVyXT1cImNvbHVtbi5vcmRlclwiXG4gICAgICAgIFt0aG9va109XCInY29sdW1uLWhlYWRlci0nICsgISFjb2x1bW4ucHJvcGVydHlcIlxuICAgICAgICAoY2xpY2spPVwidG9nZ2xlU29ydE9yZGVyKGNvbHVtbilcIlxuICAgICAgICAoa2V5ZG93bi5zcGFjZSk9XCJ0b2dnbGVTb3J0T3JkZXJXaXRoU3BhY2UoJGV2ZW50LCBjb2x1bW4pXCJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJnZXRBcmlhTGFiZWwoY29sdW1uKVwiXG4gICAgICAgIFthdHRyLmFyaWEtc29ydF09XCJjb2x1bW4ub3JkZXIgKyAnZW5kaW5nJ1wiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4uc29ydGFibGVcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICBzb3J0YWJsZVRoVGVtcGxhdGU7XG4gICAgICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4sIGNvbHVtbjogY29sdW1uIH1cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2x1bW4uc29ydGFibGVcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICBub3RTb3J0YWJsZVRoVGVtcGxhdGU7XG4gICAgICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4sIGNvbHVtbjogY29sdW1uIH1cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvdGg+XG4gICAgPC90cj5cbiAgPC90aGVhZD5cblxuICA8IS0tIFRhYmxlIGJvZHkgLS0+XG4gIDx0Ym9keSBbZm9ybUdyb3VwXT1cInJvd1NlbGVjdG9yc1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgdGFibGVEYXRhOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICA8dHJcbiAgICAgICAgW2NsYXNzLnJvd19fZXhwYW5kXT1cImV4cGFuZGFibGVcIlxuICAgICAgICBbYXR0ci5kYXRhLXRob29rXT1cIml0ZW0gfCB0clRob29rOiBpIDogdHJUaG9va0ZuXCJcbiAgICAgICAgW2F0dHIuZGF0YS1oYXNyb3dzcGFuXT1cImhhc1Jvd1NwYW4oaXRlbSlcIlxuICAgICAgPlxuICAgICAgICA8IS0tIENoZWNrYm94IGNvbHVtbiBmb3Igcm93IC0tPlxuICAgICAgICA8dGQgKm5nSWY9XCJzZWxlY3RhYmxlXCIgY2xhc3M9XCJjb2x1bW5fX2NoZWNrXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdkcy1maWVsZC1jaGVja2JveC13cmFwXCI+XG4gICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgW2F0dHIuZm9yXT1cIidjYl9yb3dfXycgKyBpbml0SWQgKyAnXycgKyBpXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAqbmdJZj1cInJvd1NlbGVjdG9ycy5nZXQoaXRlbVtyb3dJZF0pXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiaXRlbVtyb3dJZF1cIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsQ2hlY2tib3hUclwiXG4gICAgICAgICAgICAgICAgW2F0dHIuaWRdPVwiJ2NiX3Jvd19fJyArIGluaXRJZCArICdfJyArIGlcIlxuICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtdGhvb2tdPVwiJ3Jvdy1zZWxlY3QtJyArIGlcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8aT48L2k+XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3RkPlxuXG4gICAgICAgIDwhLS0gT3RoZXIgY29sdW1ucyAtLT5cbiAgICAgICAgPHRkXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiB0YWJsZUNvbHVtbnM7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgIFtjb2x1bW5UeXBlXT1cImNvbHVtbi52YWx1ZVR5cGVcIlxuICAgICAgICAgIFt2YWx1ZV09XCJpdGVtW2NvbHVtbi5wcm9wZXJ0eV1cIlxuICAgICAgICAgIChjbGljayk9XCJwcm9wYWdhdGVJdGVtQ2xpY2soaXRlbSwgY29sdW1uLnByZXZlbnREZWZhdWx0Q2xpY2tFdmVudClcIlxuICAgICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJleHBhbmRhYmxlICYmIGkgPT09IDA7IGVsc2Ugbm9uRXhwYW5kYWJsZVRlbXBsYXRlXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiZ2RzLWl0ZW0tZmllbGQtd3JhcFwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ25vLXN1Yi1pdGVtcyc6IGl0ZW0uc3ViSXRlbXMubGVuZ3RoID09PSAwIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5zdWJJdGVtcy5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hldnJvbi1maWVsZFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJyb3dTZWxlY3RvcnMuZ2V0KGl0ZW1bcm93SWRdKT8udmFsdWVcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgIGQ9XCJNMjAgOUwxMiAxN0w0IDlcIlxuICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjZcIlxuICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdkcy1pdGVtLWZpZWxkLXRleHRcIj5cbiAgICAgICAgICAgICAgIHt7IGl0ZW1bY29sdW1uLnByb3BlcnR5XSB9fSAoe3sgaXRlbS5zdWJJdGVtcy5sZW5ndGggfX0pXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNvbHVtbi5jb2x1bW5MYWJlbFwiIGNsYXNzPVwiZ2RzLWl0ZW0tZmllbGQtZXh0cmEtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGl0ZW1bY29sdW1uLmNvbHVtbkxhYmVsXSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9uRXhwYW5kYWJsZVRlbXBsYXRlPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbVJvd1RlbXBsYXRlcy5nZXQoY29sdW1uLnByb3BlcnR5KSBhcyB0ZFRlbXBsYXRlOyBlbHNlIGRlZmF1bHRUZFRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cInRkVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBpdGVtIH1cIj5cbiAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0VGRUZW1wbGF0ZT5cbiAgICAgICAgICAgICAge3sgaXRlbVtjb2x1bW4ucHJvcGVydHldIH19XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L3RyPlxuXG4gICAgICA8IS0tIEV4cGFuZGVkIFN1YiBJdGVtcyAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJleHBhbmRhYmxlICYmIHJvd1NlbGVjdG9ycy5nZXQoaXRlbVtyb3dJZF0pPy52YWx1ZVwiPlxuICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHN1Ykl0ZW0gb2YgaXRlbVtzdWJJdGVtc1Byb3BdXCI+XG4gICAgICAgICAgPHRkXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIHRhYmxlQ29sdW1uc1wiXG4gICAgICAgICAgICBjbGFzcz1cIndlYi12aWV3XCJcbiAgICAgICAgICAgIFtjb2x1bW5UeXBlXT1cImNvbHVtbi52YWx1ZVR5cGVcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cInN1Ykl0ZW1bY29sdW1uLnByb3BlcnR5XVwiXG4gICAgICAgICAgICAoY2xpY2spPVwicHJvcGFnYXRlSXRlbUNsaWNrKHN1Ykl0ZW0sIGNvbHVtbi5wcmV2ZW50RGVmYXVsdENsaWNrRXZlbnQpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tUm93VGVtcGxhdGVzLmdldChjb2x1bW4ucHJvcGVydHkpIGFzIHRkVGVtcGxhdGU7IGVsc2UgZGVmYXVsdFRkVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwidGRUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHN1Ykl0ZW0gfVwiPlxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRUZFRlbXBsYXRlPlxuICAgICAgICAgICAgICB7eyBzdWJJdGVtW2NvbHVtbi5wcm9wZXJ0eV0gfX1cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC90ZD5cblxuICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgY2xhc3M9XCJtb2JpbGUtdmlld1wiXG4gICAgICAgICAgICBbYXR0ci5jb2xzcGFuXT1cInRhYmxlQ29sdW1ucy5sZW5ndGhcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInByb3BhZ2F0ZUl0ZW1DbGljayhzdWJJdGVtKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRsIGNsYXNzPVwibW9iaWxlLXZpZXctZmllbGQtd3JhcFwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgdGFibGVDb2x1bW5zXCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhY29sdW1uLmhpZGVQcm9wZXJ0eU9uTW9iaWxlXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwibW9iaWxlLXZpZXctZmllbGRcIlxuICAgICAgICAgICAgICAgICAgW2NvbHVtblR5cGVdPVwiY29sdW1uLnZhbHVlVHlwZVwiXG4gICAgICAgICAgICAgICAgICBbdmFsdWVdPVwic3ViSXRlbVtjb2x1bW4ucHJvcGVydHldXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZHQgKm5nSWY9XCIhY29sdW1uLmhpZGVMYWJlbE9uTW9iaWxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKnRyYW5zbG9jbz1cImxldCB0XCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgdChjb2x1bW4ubGFiZWwgPz8gJycpIH19XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9kdD5cbiAgICAgICAgICAgICAgICAgIDxkZCBbbmdTdHlsZV09XCJjb2x1bW4uYm9sZFRleHRPbk1vYmlsZSA/IHsgJ2ZvbnQtd2VpZ2h0JzogJzUwMCcgfSA6IHsnZm9udC13ZWlnaHQnOiAnNDAwJ31cIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbVJvd1RlbXBsYXRlcy5nZXQoY29sdW1uLnByb3BlcnR5KSBhcyB0ZFRlbXBsYXRlOyBlbHNlIGRlZmF1bHRUZFRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwidGRUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHN1Ykl0ZW0gfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRUZFRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IHN1Ykl0ZW1bY29sdW1uLnByb3BlcnR5XSB9fVxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgPC9kZD5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2RsPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwibmF2LWNoZXZyb24tZmllbGRcIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cInJvd1NlbGVjdG9ycy5nZXQoaXRlbVtyb3dJZF0pPy52YWx1ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgIGQ9XCJNMjAgOUwxMiAxN0w0IDlcIlxuICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNlwiXG4gICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDwhLS0gQ3VzdG9tIGFwcGVuZGVkIHJvd3MgLS0+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXBwZW5kZWRSb3dzVGVtcGxhdGVSZWYgYXMgdHJUZW1wbGF0ZVwiPlxuICAgICAgICA8IS0tIENhbm5vdCBpbmZlciB0clRlbXBsYXRlIGFzIFRlbXBsYXRlUmVmIHRoZXJlZm9yZSBudWxsIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0clRlbXBsYXRlIHx8IG51bGw7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBpdGVtIH1cIlxuICAgICAgICA+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvdGJvZHk+XG5cbiAgPCEtLSBUYWJsZSBmb290ZXIgLS0+XG4gIDx0Zm9vdCAqbmdJZj1cImN1c3RvbUZvb3RlclRlbXBsYXRlUmVmIGFzIHRyVGVtcGxhdGVcIj5cbiAgICA8IS0tIENhbm5vdCBpbmZlciB0clRlbXBsYXRlIGFzIFRlbXBsYXRlUmVmIHRoZXJlZm9yZSBudWxsIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0clRlbXBsYXRlIHx8IG51bGxcIj4gPC9uZy1jb250YWluZXI+XG4gIDwvdGZvb3Q+XG48L3RhYmxlPlxuIl19
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUubW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvdGFibGUvdGFibGUubW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBTb3J0aW5nT3JkZXIgPSAnYXNjJyB8ICdkZXNjJ1xuZXhwb3J0IHR5cGUgQ29sdW1uVHlwZSA9ICdudW1lcmljJyB8ICd0ZXh0J1xuXG4vKiogR2VuZXJpYyB0eXBlIGZvciBUYWJsZVJvdyBkYXRhICovXG5leHBvcnQgdHlwZSBUYWJsZVJvdyA9IFJlY29yZDxzdHJpbmcsIGFueT5cblxuLyoqIE9wdGlvbnMgYXBwbHlpbmcgdG8gdGhlIHRhYmxlIGhlYWRlciAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWJsZUhlYWRlck9wdGlvbnMge1xuICAvKipcbiAgICogRGVmaW5lZCB0aGUgdGV4dCBkaXNwbGF5ZWQgaW4gdGhlIHRhYmxlIGhlYWRlci5cbiAgICogQGV4YW1wbGUgPHRoPiB7e1RhYmxlQ29sdW1uLmxhYmVsfX0gPC90aD5cbiAgICovXG4gIGxhYmVsPzogc3RyaW5nXG5cbiAgLyoqIEFkanVzdHMgdGV4dC1hbGlnbm1lbnQuICovXG4gIHZhbHVlVHlwZT86IENvbHVtblR5cGVcblxuICAvKipcbiAgICogRGVmaW5lcyB3aGV0aGVyIHRoZSB0YWJsZSBkYXRhIGNhbiBiZSBvcmRlcmVkIHVzaW5nIHRoaXMgY29sdW1uLlxuICAgKiBTZXR0aW5nIHRoaXMgdG8gZmFsc2UgKG9yIG9taXR0aW5nIGl0KSB3aWxsIGFsc28gcmVtb3ZlIHRoZSBjYXJldCBzb3J0aW5nIHN5bWJvbCBpbiBzcGVjaWZpZWQgY29sdW1uLlxuICAgKi9cbiAgc29ydGFibGU/OiBib29sZWFuXG5cbiAgLyoqXG4gICAqIERlZmluZWQgYXJpYSBsYWJlbCBmb3IgYSBzb3J0YWJsZSBjb2x1bW4gZm9yIHRoZSBzY3JlZW4gcmVhZGVyIHVzZXJzLlxuICAgKi9cbiAgYXJpYUxhYmVsU29ydGFibGU/OiBzdHJpbmdcblxuICAvKipcbiAgICogRGVzY3JpYmVzIHRoZSBzb3J0aW5nIG9yZGVyIG9mIHRoZSBjb2x1bW4uXG4gICAqIEFzIHRoZSB0YWJsZSBjYW4gb25seSBiZSBzb3J0ZWQgYmFzZWQgb24gb25lIGNvbHVtbiBwcm9wZXJ0eSwgaWYgdGhlIHByb3BlcnR5IGlzIG5vdCB1bmRlZmluZWQsXG4gICAqIGl0IHdpbGwgaW5zdHJ1Y3QgdGhlIHRhYmxlIHRvIHNvcnQgdGhlIGRhdGEgYmFzZWQgb24gdGhpcyBzcGVjaWZpYyBjb2x1bW4uXG4gICAqL1xuICBvcmRlcj86IFNvcnRpbmdPcmRlclxuXG4gIC8qKlxuICAgKiBEeW5hbWljYWxseSBoaWRlIG9yIHNob3cgdGhlIGxhYmVsIGFuZCBkYXRhIG9uIG1vYmlsZSB2aWV3LlxuICAgKiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHRoZSB0YWJsZSBpcyBkaXNwbGF5ZWQgb24gYSBzbWFsbCBzY3JlZW4gYW5kIHRoZSBkYXRhIGlzIG5vdCByZWxldmFudC5cbiAgICovXG4gIGhpZGVMYWJlbE9uTW9iaWxlPzogYm9vbGVhblxuICBoaWRlUHJvcGVydHlPbk1vYmlsZT86IGJvb2xlYW5cblxuICAvKipcbiAgICogU2V0IHRvIHRydWUgdG8gbWFrZSB0aGUgdGV4dCBib2xkIG9uIG1vYmlsZSB2aWV3LlxuICAgKiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHRoZSBsYWJlbCBpcyBoaWRkZW4gb24gbW9iaWxlIHZpZXcgYnV0IHRoZSBkYXRhIGlzIHN0aWxsIGRpc3BsYXllZC5cbiAgICovXG4gIGJvbGRUZXh0T25Nb2JpbGU/
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUubW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvdGFibGUvdGFibGUubW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBTb3J0aW5nT3JkZXIgPSAnYXNjJyB8ICdkZXNjJ1xuZXhwb3J0IHR5cGUgQ29sdW1uVHlwZSA9ICdudW1lcmljJyB8ICd0ZXh0J1xuXG4vKiogR2VuZXJpYyB0eXBlIGZvciBUYWJsZVJvdyBkYXRhICovXG5leHBvcnQgdHlwZSBUYWJsZVJvdyA9IFJlY29yZDxzdHJpbmcsIGFueT5cblxuLyoqIE9wdGlvbnMgYXBwbHlpbmcgdG8gdGhlIHRhYmxlIGhlYWRlciAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWJsZUhlYWRlck9wdGlvbnMge1xuICAvKipcbiAgICogRGVmaW5lZCB0aGUgdGV4dCBkaXNwbGF5ZWQgaW4gdGhlIHRhYmxlIGhlYWRlci5cbiAgICogQGV4YW1wbGUgPHRoPiB7e1RhYmxlQ29sdW1uLmxhYmVsfX0gPC90aD5cbiAgICovXG4gIGxhYmVsPzogc3RyaW5nXG5cbiAgLyoqIEFkanVzdHMgdGV4dC1hbGlnbm1lbnQuICovXG4gIHZhbHVlVHlwZT86IENvbHVtblR5cGVcblxuICAvKipcbiAgICogRGVmaW5lcyB3aGV0aGVyIHRoZSB0YWJsZSBkYXRhIGNhbiBiZSBvcmRlcmVkIHVzaW5nIHRoaXMgY29sdW1uLlxuICAgKiBTZXR0aW5nIHRoaXMgdG8gZmFsc2UgKG9yIG9taXR0aW5nIGl0KSB3aWxsIGFsc28gcmVtb3ZlIHRoZSBjYXJldCBzb3J0aW5nIHN5bWJvbCBpbiBzcGVjaWZpZWQgY29sdW1uLlxuICAgKi9cbiAgc29ydGFibGU/OiBib29sZWFuXG5cbiAgLyoqXG4gICAqIERlZmluZWQgYXJpYSBsYWJlbCBmb3IgYSBzb3J0YWJsZSBjb2x1bW4gZm9yIHRoZSBzY3JlZW4gcmVhZGVyIHVzZXJzLlxuICAgKi9cbiAgYXJpYUxhYmVsU29ydGFibGU/OiBzdHJpbmdcblxuICAvKipcbiAgICogRGVzY3JpYmVzIHRoZSBzb3J0aW5nIG9yZGVyIG9mIHRoZSBjb2x1bW4uXG4gICAqIEFzIHRoZSB0YWJsZSBjYW4gb25seSBiZSBzb3J0ZWQgYmFzZWQgb24gb25lIGNvbHVtbiBwcm9wZXJ0eSwgaWYgdGhlIHByb3BlcnR5IGlzIG5vdCB1bmRlZmluZWQsXG4gICAqIGl0IHdpbGwgaW5zdHJ1Y3QgdGhlIHRhYmxlIHRvIHNvcnQgdGhlIGRhdGEgYmFzZWQgb24gdGhpcyBzcGVjaWZpYyBjb2x1bW4uXG4gICAqL1xuICBvcmRlcj86IFNvcnRpbmdPcmRlclxuXG4gIC8qKlxuICAgKiBEeW5hbWljYWxseSBoaWRlIG9yIHNob3cgdGhlIGxhYmVsIGFuZCBkYXRhIG9uIG1vYmlsZSB2aWV3LlxuICAgKiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHRoZSB0YWJsZSBpcyBkaXNwbGF5ZWQgb24gYSBzbWFsbCBzY3JlZW4gYW5kIHRoZSBkYXRhIGlzIG5vdCByZWxldmFudC5cbiAgICovXG4gIGhpZGVMYWJlbE9uTW9iaWxlPzogYm9vbGVhblxuICBoaWRlUHJvcGVydHlPbk1vYmlsZT86IGJvb2xlYW5cblxuICAvKipcbiAgICogU2V0IHRvIHRydWUgdG8gbWFrZSB0aGUgdGV4dCBib2xkIG9uIG1vYmlsZSB2aWV3LlxuICAgKiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHRoZSBsYWJlbCBpcyBoaWRkZW4gb24gbW9iaWxlIHZpZXcgYnV0IHRoZSBkYXRhIGlzIHN0aWxsIGRpc3BsYXllZC5cbiAgICovXG4gIGJvbGRUZXh0T25Nb2JpbGU/OiBib29sZWFuXG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gc2V0IGxhYmVsIGZvciB0aGUgY29sdW1uLlxuICAgKiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHRoZSBjb2x1bW4gaGFzIGFuIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdGhhdCBuZWVkcyB0byBiZSBzaG93bi5cbiAgICovXG4gIGNvbHVtbkxhYmVsPzogc3RyaW5nXG59XG5cbi8qKiBPcHRpb25zIGFwcGx5aW5nIHRvIHRhYmxlIHJvd3MgKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVSb3dPcHRpb25zIHtcbiAgLyoqIEFkanVzdHMgdGV4dC1hbGlnbm1lbnQuICovXG4gIHZhbHVlVHlwZT86IENvbHVtblR5cGVcblxuICAvKiogVXNlZCB0byBwcmV2ZW50IHRoZSBkZWZhdWx0IGNsaWNrIGV2ZW50IHRvIGJlIGVtaXR0ZWQgd2hlbiBjbGlja2luZyBpbiBjZWxscyBmb3Igc3BlY2lmaWVkIGNvbHVtbiAqL1xuICBwcmV2ZW50RGVmYXVsdENsaWNrRXZlbnQ/OiBib29sZWFuXG59XG5cbi8qKlxuICogSW50ZXJmYWNlIHVzZWQgdG8gZGVzY3JpYmUgaG93IGEgdGFibGUgY29sdW1uIHNob3VsZCBiZSBkaXNwbGF5ZWQuIFRoaXMgaW5jbHVkZXMgdGhlIHRleHQgYW5kIGNsYXNzIHVzZWQgZm9yIHRoZSB0YWJsZSBoZWFkZXIsXG4gKiBhbmQgdGhlIGRhdGEgZm9yIGVhY2ggdGFibGUgcm93LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlQ29sdW1uPFQgZXh0ZW5kcyBUYWJsZVJvdz5cbiAgZXh0ZW5kcyBUYWJsZUhlYWRlck9wdGlvbnMsXG4gICAgVGFibGVSb3dPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBwcm9wZXJ0eSBuYW1lIHVzZWQgdG8gaWRlbnRpZnkgd2hhdCB2YWx1ZSB0byBkaXNwbGF5IGluIGEgY2VsbCBmb3IgdGhhdCBjb2x1bW4uXG4gICAqIEBleGFtcGxlIDx0ciAqbmdGb3I9XCJsZXQgZGF0YSBpbiBkYXRhTGlzdFwiPiA8dGQ+e3sgZGF0YVtUYWJsZUNvbHVtbi5wcm9wZXJ0eV0gfX08L3RkPiA8L3RyPlxuICAgKi9cbiAgcHJvcGVydHk6IGtleW9mIFRcbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgZGVzY3JpYmluZyBldmVudCBlbWl0dGVkIG9uIHJlb3JkZXJpbmcgdGhlIHRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9yZGVyQnk8VCBleHRlbmRzIFRhYmxlUm93PiB7XG4gIHByb3BlcnR5OiBrZXlvZiBUXG4gIG9yZGVyOiBTb3J0aW5nT3JkZXIgfCB1bmRlZmluZWRcbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgZGVzY3JpYmluZyB0aGUgYXJpYSBsYWJlbHMgZm9yIHNvcnRpbmcgaW4gdGhlIHRhYmxlLlxuICogQXJpYSBsYWJlbCBhdHRyaWJ1dGVzIGFyZSB1c2VkIGZvciBhIHNjcmVlbiByZWFkZXIgdG8gZGVzY3JpYmUgdGhlIHNvcnRpbmcgc3RhdGUgb2YgdGhlIHRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIGFyaWFMYWJlbHNPcmRlckJ5IHtcbiAgYXNjOiBzdHJpbmdcbiAgZGVzYzogc3RyaW5nXG59XG4iXX0=
|