fantasy-ngzorro 2.2.18 → 2.2.20

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.
@@ -18,7 +18,7 @@ var HdButtonGroupComponent = /** @class */ (function () {
18
18
  { type: Component, args: [{
19
19
  selector: 'hd-button-group',
20
20
  template: "<nz-content class=\"hd-button-group-container\">\n <div class=\"hd-button-group-left\">\n <ng-container *ngTemplateOutlet=\"buttonGroupLeft\"></ng-container>\n </div>\n <div class=\"hd-button-group-right\">\n <ng-container *ngTemplateOutlet=\"buttonGroupRight\"></ng-container>\n </div>\n</nz-content>\n",
21
- styles: ["::ng-deep .common-btn-group>a{font-size:14px;font-weight:400;color:#20b95d!important;white-space:nowrap}::ng-deep .common-btn-group .common-danger-btn:hover{color:#f05b24!important}::ng-deep .common-btn-group>a:hover{color:#20bd62!important}::ng-deep .common-btn-group>a:not(:last-child)::after{content:'';margin:0 2px}::ng-deep .common-billNumber>a{color:#3b77e3}button{box-shadow:unset;text-shadow:unset}::ng-deep .ant-form-item-label>label{color:#4b504e;font-size:14px}::ng-deep .ant-input-number-input{height:32px}::ng-deep .ant-input-number{height:32px}textarea.ant-input{height:auto;min-height:32px}::ng-deep .ant-select-selection--multiple{min-height:32px}::ng-deep .ant-select-selection--multiple .ant-select-selection__rendered>ul>li.ant-select-search--inline:only-child{margin-left:4px}::ng-deep .ant-select-selection__rendered>ul>li{height:26px!important;margin-top:3px!important;line-height:26px!important}::ng-deep .ant-advanced-search-form .ant-form-item{margin-bottom:0!important}::ng-deep .ant-select-selection--single{height:32px!important}::ng-deep .ant-input{height:32px}::ng-deep .ant-input[disabled]:hover{border-color:#d9d9d9!important}::ng-deep .ant-select-selection__rendered{line-height:32px!important}::ng-deep .ant-calendar-range-picker-input{text-align:left!important}::ng-deep .ant-calendar-picker{width:100%!important}::ng-deep .ant-row{margin-right:0!important;margin-left:0!important}::ng-deep .ant-col-6{padding-left:12px;padding-right:12px}::ng-deep .ant-col-12{padding-left:12px;padding-right:12px}::ng-deep .ant-col-18{padding-left:12px;padding-right:12px}::ng-deep .ant-col-24{padding-left:12px;padding-right:12px}::ng-deep .ant-alert-info{background-color:#f5f8f6;border:1px solid #cfe3d4}::ng-deep .hd-table-container .ant-table-td-left-sticky,::ng-deep .hd-table-container .ant-table-td-right-sticky,::ng-deep .hd-table-container .ant-table-th-left-sticky,::ng-deep .hd-table-container .ant-table-th-right-sticky{z-index:2;transform:translateZ(0)}::ng-deep .hd-table-container .ant-table-thead>tr>th.ant-table-th-left-sticky,::ng-deep .hd-table-container .ant-table-thead>tr>th.ant-table-th-right-sticky{background:#f5f8f6!important}::ng-deep .hd-table-container .ant-table-tbody>tr>td.ant-table-td-left-sticky,::ng-deep .hd-table-container .ant-table-tbody>tr>td.ant-table-td-right-sticky{background:#fff}::ng-deep .hd-table-container .ant-table-tbody>tr.ant-table-row-hover>td.ant-table-td-left-sticky,::ng-deep .hd-table-container .ant-table-tbody>tr.ant-table-row-hover>td.ant-table-td-right-sticky,::ng-deep .hd-table-container .ant-table-tbody>tr:hover>td.ant-table-td-left-sticky,::ng-deep .hd-table-container .ant-table-tbody>tr:hover>td.ant-table-td-right-sticky{background:#ecf8f1!important}::ng-deep .hd-table-container .ant-table-scroll-position-left .ant-table-td-right-sticky,::ng-deep .hd-table-container .ant-table-scroll-position-left .ant-table-th-right-sticky,::ng-deep .hd-table-container .ant-table-scroll-position-middle .ant-table-td-right-sticky,::ng-deep .hd-table-container .ant-table-scroll-position-middle .ant-table-th-right-sticky,::ng-deep .hd-table-container .ant-table-scroll-position-right .ant-table-td-right-sticky,::ng-deep .hd-table-container .ant-table-scroll-position-right .ant-table-th-right-sticky{box-shadow:none!important}::ng-deep .hd-table-container .ant-table-fixed-right{right:0!important}:host ::ng-deep th{background:#f5f8f6!important;font-weight:700!important;white-space:nowrap;font-size:14px;font-family:PingFangSC-Medium,PingFang SC;color:#2a3634;padding:8px!important;box-sizing:border-box}:host ::ng-deep td{font-weight:400;font-style:normal;font-size:14px;color:#2a3634;text-align:left;white-space:nowrap;padding:8px!important;box-sizing:border-box}::ng-deep .ant-pagination-options{display:inline-flex;align-items:center}::ng-deep .ant-pagination-options .ant-select,::ng-deep .ant-pagination-options .ant-select-selection--single{min-width:100px}::ng-deep .ant-pagination-options-size-changer.ant-select{min-width:100px}::ng-deep .ant-time-picker{width:100%}::ng-deep .cdk-overlay-pane .hd-cascader-menus.ant-cascader-menus>.ant-cascader-menu:only-child{width:-webkit-max-content!important;width:-moz-max-content!important;width:max-content!important;min-width:var(--hd-cascader-menu-min-width,auto);max-width:560px}::ng-deep .cdk-overlay-pane .hd-cascader-menus.ant-cascader-menus>.ant-cascader-menu:only-child .ant-cascader-menu-item{white-space:nowrap}.ant-input-number-disabled,.ant-input[disabled],.ant-select-disabled{color:#4b504e}.hd-button-group-container{display:flex;align-items:center;justify-content:space-between}.hd-button-group-container .hd-button-group-left{display:inline-flex;align-items:center}.hd-button-group-container .hd-button-group-left ::ng-deep hd-button{margin-right:12px}.hd-button-group-container .hd-button-group-right{display:inline-flex;align-items:center}.hd-button-group-container .hd-button-group-right ::ng-deep hd-button{margin-left:12px}"]
21
+ styles: ["::ng-deep .common-btn-group>a{font-size:14px;font-weight:400;color:#20b95d!important;white-space:nowrap}::ng-deep .common-btn-group .common-danger-btn:hover{color:#f05b24!important}::ng-deep .common-btn-group>a:hover{color:#20bd62!important}::ng-deep .common-btn-group>a:not(:last-child)::after{content:'';margin:0 2px}::ng-deep .common-billNumber>a{color:#3b77e3}button{box-shadow:unset;text-shadow:unset}::ng-deep .ant-form-item-label>label{color:#4b504e;font-size:14px}::ng-deep .ant-input-number-input{height:32px}::ng-deep .ant-input-number{height:32px}textarea.ant-input{height:auto;min-height:32px}::ng-deep .ant-select-selection--multiple{min-height:32px}::ng-deep .ant-select-selection--multiple .ant-select-selection__rendered>ul>li.ant-select-search--inline:only-child{margin-left:4px}::ng-deep .ant-select-selection__rendered>ul>li{height:26px!important;margin-top:3px!important;line-height:26px!important}::ng-deep .ant-advanced-search-form .ant-form-item{margin-bottom:0!important}::ng-deep .ant-select-selection--single{height:32px!important}::ng-deep .ant-input{height:32px}::ng-deep .ant-input[disabled]:hover{border-color:#d9d9d9!important}::ng-deep .ant-select-selection__rendered{line-height:32px!important}::ng-deep .ant-calendar-range-picker-input{text-align:left!important}::ng-deep .ant-calendar-picker{width:100%!important}::ng-deep .ant-row{margin-right:0!important;margin-left:0!important}::ng-deep .ant-col-6{padding-left:12px;padding-right:12px}::ng-deep .ant-col-12{padding-left:12px;padding-right:12px}::ng-deep .ant-col-18{padding-left:12px;padding-right:12px}::ng-deep .ant-col-24{padding-left:12px;padding-right:12px}::ng-deep .ant-alert-info{background-color:#f5f8f6;border:1px solid #cfe3d4}::ng-deep .hd-table-container .ant-table-td-left-sticky,::ng-deep .hd-table-container .ant-table-td-right-sticky,::ng-deep .hd-table-container .ant-table-th-left-sticky,::ng-deep .hd-table-container .ant-table-th-right-sticky{z-index:2;transform:translateZ(0)}::ng-deep .hd-table-container .ant-table-thead>tr>th.ant-table-th-left-sticky,::ng-deep .hd-table-container .ant-table-thead>tr>th.ant-table-th-right-sticky{background:#f5f8f6!important}::ng-deep .hd-table-container .ant-table-tbody>tr>td.ant-table-td-left-sticky,::ng-deep .hd-table-container .ant-table-tbody>tr>td.ant-table-td-right-sticky{background:#fff}::ng-deep .hd-table-container .ant-table-tbody>tr.ant-table-row-hover>td.ant-table-td-left-sticky,::ng-deep .hd-table-container .ant-table-tbody>tr.ant-table-row-hover>td.ant-table-td-right-sticky,::ng-deep .hd-table-container .ant-table-tbody>tr:hover>td.ant-table-td-left-sticky,::ng-deep .hd-table-container .ant-table-tbody>tr:hover>td.ant-table-td-right-sticky{background:#ecf8f1!important}::ng-deep .hd-table-container .ant-table-scroll-position-left .ant-table-td-right-sticky,::ng-deep .hd-table-container .ant-table-scroll-position-left .ant-table-th-right-sticky,::ng-deep .hd-table-container .ant-table-scroll-position-middle .ant-table-td-right-sticky,::ng-deep .hd-table-container .ant-table-scroll-position-middle .ant-table-th-right-sticky,::ng-deep .hd-table-container .ant-table-scroll-position-right .ant-table-td-right-sticky,::ng-deep .hd-table-container .ant-table-scroll-position-right .ant-table-th-right-sticky{box-shadow:none!important}::ng-deep .hd-table-container .ant-table-fixed-right{right:0!important}:host ::ng-deep th{background:#f5f8f6!important;font-weight:700!important;white-space:nowrap;font-size:14px;font-family:PingFangSC-Medium,PingFang SC;color:#2a3634;padding:8px!important;box-sizing:border-box}:host ::ng-deep td{font-weight:400;font-style:normal;font-size:14px;color:#2a3634;text-align:left;white-space:nowrap;padding:8px!important;box-sizing:border-box}::ng-deep .ant-pagination-options{display:inline-flex;align-items:center}::ng-deep .ant-pagination-options .ant-select,::ng-deep .ant-pagination-options .ant-select-selection--single{min-width:100px}::ng-deep .ant-pagination-options-size-changer.ant-select{min-width:100px}::ng-deep .ant-time-picker{width:100%}::ng-deep .cdk-overlay-pane .hd-cascader-menus.ant-cascader-menus>.ant-cascader-menu:only-child{width:-webkit-max-content!important;width:-moz-max-content!important;width:max-content!important;min-width:var(--hd-cascader-menu-min-width,auto);max-width:560px}::ng-deep .cdk-overlay-pane .hd-cascader-menus.ant-cascader-menus>.ant-cascader-menu:only-child .ant-cascader-menu-item{white-space:nowrap}.ant-input-number-disabled,.ant-input[disabled],.ant-select-disabled{color:#4b504e}.hd-button-group-container{display:flex;align-items:center;justify-content:space-between}.hd-button-group-container .hd-button-group-left{display:flex;flex:1;min-width:0;align-items:center}.hd-button-group-container .hd-button-group-left ::ng-deep hd-button{margin-right:12px}.hd-button-group-container .hd-button-group-right{display:inline-flex;align-items:center}.hd-button-group-container .hd-button-group-right ::ng-deep hd-button{margin-left:12px}"]
22
22
  }] }
23
23
  ];
24
24
  /** @nocollapse */
@@ -635,8 +635,8 @@ var HdDetailLinesComponent = /** @class */ (function () {
635
635
  HdDetailLinesComponent.decorators = [
636
636
  { type: Component, args: [{
637
637
  selector: "hd-detail-lines",
638
- template: "<ng-container>\n <hd-button-group *ngIf=\"showSearch\">\n <ng-template #buttonGroupLeft>\n <nz-input-group [nzSuffix]=\"suffixIconSearch\">\n <input type=\"text\" nz-input (keyup.enter)=\"searchLines()\" placeholder=\"\u8BF7\u8F93\u5165\u5185\u5BB9\u641C\u7D22\" style=\"width: 300px;\"\n [(ngModel)]=\"filterStr\" />\n </nz-input-group>\n <ng-template #suffixIconSearch>\n <i nz-icon nzType=\"search\" (click)=\"searchLines()\"></i>\n </ng-template>\n </ng-template>\n </hd-button-group>\n\n <hd-space *ngIf=\"showSearch\" background=\"transparent\" type=\"row\" size=\"16\"></hd-space>\n\n <nz-table *ngIf=\"showTable\" #hdTable class=\"hd-table-container\"\n [class.hd-detail-lines--scroll-y]=\"!!(effectiveScroll && effectiveScroll.y)\"\n [class.hd-detail-lines--scroll-x]=\"!!(effectiveScroll && effectiveScroll.x)\"\n [class.hd-detail-lines--with-search]=\"showSearch\"\n [nzScroll]=\"effectiveScroll\" nzShowSizeChanger\n [nzFrontPagination]=\"hdFrontPagination\" [nzShowQuickJumper]=\"hdFrontPagination\" [nzShowTotal]=\"tableTotalTemplate\"\n nzSize=\"middle\" [nzData]=\"displayLines\" [nzLoading]=\"tableLoading\" [(nzPageSize)]=\"tablePageSize\"\n [nzPageSizeOptions]=\"[ 10, 50, 100, 200, 500, 1000 ]\"\n (nzCurrentPageDataChange)=\"showSelected ? currentPageDataChange($event) : null\">\n <thead>\n <tr>\n <th *ngIf=\"showSelected\" nzWidth=\"40px\" nzLeft=\"0px\" nzShowCheckbox [(nzChecked)]=\"isAllDisplayDataChecked\"\n [nzIndeterminate]=\"isIndeterminate\" (nzCheckedChange)=\"checkAll($event)\"></th>\n <ng-container *ngTemplateOutlet=\"detailLineHead\"></ng-container>\n </tr>\n </thead>\n <tbody *ngIf=\"!allowDrop;else allowDropTemplate\">\n <tr *ngFor=\"let data of hdTable.data;index as i\" [class.hd-table-row-invalid]=\"isInvalidRow(data)\">\n <td *ngIf=\"showSelected\" nzWidth=\"40px\" nzLeft=\"0px\" nzShowCheckbox\n [nzChecked]=\"mapOfCheckedId[data[selectField]]\" [nzDisabled]=\"isSelectDisabled(data)\"\n (nzCheckedChange)=\"refreshStatus($event, data)\"></td>\n <ng-container *ngTemplateOutlet=\"detailLineBody;context:{$implicit: data, index: i}\"></ng-container>\n </tr>\n <!-- \u5408\u8BA1\u533A\u57DF -->\n <tr *ngIf=\"showTotal\" class=\"hd-table-total\">\n <td *ngIf=\"showSelected\"></td>\n <td>\u5408\u8BA1</td>\n <ng-container *ngFor=\"let totalOption of totalOptionList\">\n <td *ngIf=\"!totalOption.isHide\" [nzAlign]=\"totalOption.align ? totalOption.align : 'left'\">{{\n (totalOption.value || totalOption.value ===\n 0) ? (((totalOption.value % 1 === 0) && !totalOption.showDecimal ) ? totalOption.value :\n LodashRound(totalOption.value, totalOption.preserveNumber).toFixed(totalOption.preserveNumber)) : '' }} </td>\n </ng-container>\n </tr>\n </tbody>\n <ng-template #allowDropTemplate>\n <tbody cdkDropList (cdkDropListDropped)=\"drop($event)\">\n <tr *ngFor=\"let data of hdTable.data;index as i\" cdkDrag [class.hd-table-row-invalid]=\"isInvalidRow(data)\">\n <td *ngIf=\"showSelected\" nzWidth=\"40px\" nzLeft=\"0px\" nzShowCheckbox\n [nzChecked]=\"mapOfCheckedId[data[selectField]]\" [nzDisabled]=\"isSelectDisabled(data)\"\n (nzCheckedChange)=\"refreshStatus($event, data)\"></td>\n <ng-container *ngTemplateOutlet=\"detailLineBody;context:{$implicit: data, index: i}\"></ng-container>\n </tr>\n <!-- \u5408\u8BA1\u533A\u57DF -->\n <tr *ngIf=\"showTotal\" class=\"hd-table-total\">\n <td *ngIf=\"showSelected\"></td>\n <td>\u5408\u8BA1</td>\n <ng-container *ngFor=\"let totalOption of totalOptionList\">\n <td *ngIf=\"!totalOption.isHide\" [nzAlign]=\"totalOption.align ? totalOption.align : 'left'\">{{\n (totalOption.value || totalOption.value\n === 0) ? (((totalOption.value % 1 === 0) && !totalOption.showDecimal ) ? totalOption.value :\n LodashRound(totalOption.value, totalOption.preserveNumber).toFixed(totalOption.preserveNumber)) : '' }} </td>\n </ng-container>\n </tr>\n </tbody>\n </ng-template>\n <ng-template #tableTotalTemplate>\n \u5171 {{displayLines.length}} \u6761\u6570\u636E\n </ng-template>\n </nz-table>\n</ng-container>\n",
639
- styles: ["::ng-deep .common-btn-group>a{font-size:14px;font-weight:400;color:#20b95d!important;white-space:nowrap}::ng-deep .common-btn-group .common-danger-btn:hover{color:#f05b24!important}::ng-deep .common-btn-group>a:hover{color:#20bd62!important}::ng-deep .common-btn-group>a:not(:last-child)::after{content:'';margin:0 2px}::ng-deep .common-billNumber>a{color:#3b77e3}button{box-shadow:unset;text-shadow:unset}::ng-deep .ant-form-item-label>label{color:#4b504e;font-size:14px}::ng-deep .ant-input-number-input{height:32px}::ng-deep .ant-input-number{height:32px}textarea.ant-input{height:auto;min-height:32px}::ng-deep .ant-select-selection--multiple{min-height:32px}::ng-deep .ant-select-selection--multiple .ant-select-selection__rendered>ul>li.ant-select-search--inline:only-child{margin-left:4px}::ng-deep .ant-select-selection__rendered>ul>li{height:26px!important;margin-top:3px!important;line-height:26px!important}::ng-deep .ant-advanced-search-form .ant-form-item{margin-bottom:0!important}::ng-deep .ant-select-selection--single{height:32px!important}::ng-deep .ant-input{height:32px}::ng-deep .ant-input[disabled]:hover{border-color:#d9d9d9!important}::ng-deep .ant-select-selection__rendered{line-height:32px!important}::ng-deep .ant-calendar-range-picker-input{text-align:left!important}::ng-deep .ant-calendar-picker{width:100%!important}::ng-deep .ant-row{margin-right:0!important;margin-left:0!important}::ng-deep .ant-col-6{padding-left:12px;padding-right:12px}::ng-deep .ant-col-12{padding-left:12px;padding-right:12px}::ng-deep .ant-col-18{padding-left:12px;padding-right:12px}::ng-deep .ant-col-24{padding-left:12px;padding-right:12px}::ng-deep .ant-alert-info{background-color:#f5f8f6;border:1px solid #cfe3d4}::ng-deep .hd-table-container .ant-table-td-left-sticky,::ng-deep .hd-table-container .ant-table-td-right-sticky,::ng-deep .hd-table-container .ant-table-th-left-sticky,::ng-deep .hd-table-container .ant-table-th-right-sticky{z-index:2;transform:translateZ(0)}::ng-deep .hd-table-container .ant-table-thead>tr>th.ant-table-th-left-sticky,::ng-deep .hd-table-container .ant-table-thead>tr>th.ant-table-th-right-sticky{background:#f5f8f6!important}::ng-deep .hd-table-container .ant-table-tbody>tr>td.ant-table-td-left-sticky,::ng-deep .hd-table-container .ant-table-tbody>tr>td.ant-table-td-right-sticky{background:#fff}::ng-deep .hd-table-container .ant-table-tbody>tr.ant-table-row-hover>td.ant-table-td-left-sticky,::ng-deep .hd-table-container .ant-table-tbody>tr.ant-table-row-hover>td.ant-table-td-right-sticky,::ng-deep .hd-table-container .ant-table-tbody>tr:hover>td.ant-table-td-left-sticky,::ng-deep .hd-table-container .ant-table-tbody>tr:hover>td.ant-table-td-right-sticky{background:#ecf8f1!important}::ng-deep .hd-table-container .ant-table-scroll-position-left .ant-table-td-right-sticky,::ng-deep .hd-table-container .ant-table-scroll-position-left .ant-table-th-right-sticky,::ng-deep .hd-table-container .ant-table-scroll-position-middle .ant-table-td-right-sticky,::ng-deep .hd-table-container .ant-table-scroll-position-middle .ant-table-th-right-sticky,::ng-deep .hd-table-container .ant-table-scroll-position-right .ant-table-td-right-sticky,::ng-deep .hd-table-container .ant-table-scroll-position-right .ant-table-th-right-sticky{box-shadow:none!important}::ng-deep .hd-table-container .ant-table-fixed-right{right:0!important}:host ::ng-deep th{background:#f5f8f6!important;font-weight:700!important;white-space:nowrap;font-size:14px;font-family:PingFangSC-Medium,PingFang SC;color:#2a3634;padding:8px!important;box-sizing:border-box}:host ::ng-deep td{font-weight:400;font-style:normal;font-size:14px;color:#2a3634;text-align:left;white-space:nowrap;padding:8px!important;box-sizing:border-box}::ng-deep .ant-pagination-options{display:inline-flex;align-items:center}::ng-deep .ant-pagination-options .ant-select,::ng-deep .ant-pagination-options .ant-select-selection--single{min-width:100px}::ng-deep .ant-pagination-options-size-changer.ant-select{min-width:100px}::ng-deep .ant-time-picker{width:100%}::ng-deep .cdk-overlay-pane .hd-cascader-menus.ant-cascader-menus>.ant-cascader-menu:only-child{width:-webkit-max-content!important;width:-moz-max-content!important;width:max-content!important;min-width:var(--hd-cascader-menu-min-width,auto);max-width:560px}::ng-deep .cdk-overlay-pane .hd-cascader-menus.ant-cascader-menus>.ant-cascader-menu:only-child .ant-cascader-menu-item{white-space:nowrap}.ant-input-number-disabled,.ant-input[disabled],.ant-select-disabled{color:#4b504e}.hd-table-container ::ng-deep .ant-pagination-options-quick-jumper input{border-radius:2px;border:1px solid #d9d9d9}.hd-table-container ::ng-deep .ant-pagination-options .ant-select-selection{border-radius:2px}.hd-table-container ::ng-deep .ant-table-thead>tr>th{border-bottom:1px solid #ecf1ed}.hd-table-container ::ng-deep .ant-table-tbody>tr>td{border-bottom:1px solid #ecf1ed}.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid.ant-table-row-hover>td,.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid.ant-table-row-hover>td.ant-table-td-left-sticky,.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid.ant-table-row-hover>td.ant-table-td-right-sticky,.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid:hover>td,.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid:hover>td.ant-table-td-left-sticky,.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid:hover>td.ant-table-td-right-sticky,.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid>td,.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid>td.ant-table-td-left-sticky,.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid>td.ant-table-td-right-sticky{background:#f7f8fa!important;color:#868a9c!important}.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid .common-btn-group>a{color:#20b95d!important}.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid .common-btn-group>a:hover{color:#20bd62!important}.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid .common-btn-group .common-danger-btn:hover{color:#f05b24!important}.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid .hd-table-cell-value>a,.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid>td>a{color:#20b95d}.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid .common-billNumber>a{color:#3b77e3}.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid .hd-status-text{color:#868a9c!important}.hd-table-container ::ng-deep .hd-table-total>td{border:0!important}.hd-table-container.hd-detail-lines--scroll-x:not(.hd-detail-lines--scroll-y) ::ng-deep .ant-table-body{max-height:calc(100vh - 280px)!important;overflow-y:auto!important}.hd-table-container.hd-detail-lines--scroll-x:not(.hd-detail-lines--scroll-y).hd-detail-lines--with-search ::ng-deep .ant-table-body{max-height:calc(100vh - 320px)!important}.hd-table-container.hd-detail-lines--scroll-x:not(.hd-detail-lines--scroll-y) ::ng-deep .ant-table-thead>tr>th{position:-webkit-sticky;position:sticky;top:0;z-index:2;background:#fafafa}.hd-table-container.hd-detail-lines--scroll-x:not(.hd-detail-lines--scroll-y) ::ng-deep .ant-table-thead>tr>th.ant-table-th-left-sticky,.hd-table-container.hd-detail-lines--scroll-x:not(.hd-detail-lines--scroll-y) ::ng-deep .ant-table-thead>tr>th.ant-table-th-right-sticky{z-index:4;background:#fafafa!important}.hd-table-container.hd-detail-lines--scroll-x:not(.hd-detail-lines--scroll-y) ::ng-deep .ant-table-tbody>tr>td.ant-table-td-left-sticky,.hd-table-container.hd-detail-lines--scroll-x:not(.hd-detail-lines--scroll-y) ::ng-deep .ant-table-tbody>tr>td.ant-table-td-right-sticky{z-index:3}.hd-table-container:not(.hd-detail-lines--scroll-y):not(.hd-detail-lines--scroll-x) ::ng-deep .ant-table-body{max-height:none!important;overflow-y:visible!important}"]
638
+ template: "<ng-container>\n <hd-button-group *ngIf=\"showSearch\">\n <ng-template #buttonGroupLeft>\n <nz-input-group class=\"hd-lines-search\" [nzSuffix]=\"suffixIconSearch\">\n <input type=\"text\" nz-input (keyup.enter)=\"searchLines()\" placeholder=\"\u8BF7\u8F93\u5165\u5185\u5BB9\u641C\u7D22\"\n [(ngModel)]=\"filterStr\" />\n </nz-input-group>\n <ng-template #suffixIconSearch>\n <i nz-icon nzType=\"search\" (click)=\"searchLines()\"></i>\n </ng-template>\n </ng-template>\n </hd-button-group>\n\n <hd-space *ngIf=\"showSearch\" background=\"transparent\" type=\"row\" size=\"16\"></hd-space>\n\n <nz-table *ngIf=\"showTable\" #hdTable class=\"hd-table-container\"\n [class.hd-detail-lines--scroll-y]=\"!!(effectiveScroll && effectiveScroll.y)\"\n [class.hd-detail-lines--scroll-x]=\"!!(effectiveScroll && effectiveScroll.x)\"\n [class.hd-detail-lines--with-search]=\"showSearch\"\n [nzScroll]=\"effectiveScroll\" nzShowSizeChanger\n [nzFrontPagination]=\"hdFrontPagination\" [nzShowQuickJumper]=\"hdFrontPagination\" [nzShowTotal]=\"tableTotalTemplate\"\n nzSize=\"middle\" [nzData]=\"displayLines\" [nzLoading]=\"tableLoading\" [(nzPageSize)]=\"tablePageSize\"\n [nzPageSizeOptions]=\"[ 10, 50, 100, 200, 500, 1000 ]\"\n (nzCurrentPageDataChange)=\"showSelected ? currentPageDataChange($event) : null\">\n <thead>\n <tr>\n <th *ngIf=\"showSelected\" nzWidth=\"40px\" nzLeft=\"0px\" nzShowCheckbox [(nzChecked)]=\"isAllDisplayDataChecked\"\n [nzIndeterminate]=\"isIndeterminate\" (nzCheckedChange)=\"checkAll($event)\"></th>\n <ng-container *ngTemplateOutlet=\"detailLineHead\"></ng-container>\n </tr>\n </thead>\n <tbody *ngIf=\"!allowDrop;else allowDropTemplate\">\n <tr *ngFor=\"let data of hdTable.data;index as i\" [class.hd-table-row-invalid]=\"isInvalidRow(data)\">\n <td *ngIf=\"showSelected\" nzWidth=\"40px\" nzLeft=\"0px\" nzShowCheckbox\n [nzChecked]=\"mapOfCheckedId[data[selectField]]\" [nzDisabled]=\"isSelectDisabled(data)\"\n (nzCheckedChange)=\"refreshStatus($event, data)\"></td>\n <ng-container *ngTemplateOutlet=\"detailLineBody;context:{$implicit: data, index: i}\"></ng-container>\n </tr>\n <!-- \u5408\u8BA1\u533A\u57DF -->\n <tr *ngIf=\"showTotal\" class=\"hd-table-total\">\n <td *ngIf=\"showSelected\"></td>\n <td>\u5408\u8BA1</td>\n <ng-container *ngFor=\"let totalOption of totalOptionList\">\n <td *ngIf=\"!totalOption.isHide\" [nzAlign]=\"totalOption.align ? totalOption.align : 'left'\">{{\n (totalOption.value || totalOption.value ===\n 0) ? (((totalOption.value % 1 === 0) && !totalOption.showDecimal ) ? totalOption.value :\n LodashRound(totalOption.value, totalOption.preserveNumber).toFixed(totalOption.preserveNumber)) : '' }} </td>\n </ng-container>\n </tr>\n </tbody>\n <ng-template #allowDropTemplate>\n <tbody cdkDropList (cdkDropListDropped)=\"drop($event)\">\n <tr *ngFor=\"let data of hdTable.data;index as i\" cdkDrag [class.hd-table-row-invalid]=\"isInvalidRow(data)\">\n <td *ngIf=\"showSelected\" nzWidth=\"40px\" nzLeft=\"0px\" nzShowCheckbox\n [nzChecked]=\"mapOfCheckedId[data[selectField]]\" [nzDisabled]=\"isSelectDisabled(data)\"\n (nzCheckedChange)=\"refreshStatus($event, data)\"></td>\n <ng-container *ngTemplateOutlet=\"detailLineBody;context:{$implicit: data, index: i}\"></ng-container>\n </tr>\n <!-- \u5408\u8BA1\u533A\u57DF -->\n <tr *ngIf=\"showTotal\" class=\"hd-table-total\">\n <td *ngIf=\"showSelected\"></td>\n <td>\u5408\u8BA1</td>\n <ng-container *ngFor=\"let totalOption of totalOptionList\">\n <td *ngIf=\"!totalOption.isHide\" [nzAlign]=\"totalOption.align ? totalOption.align : 'left'\">{{\n (totalOption.value || totalOption.value\n === 0) ? (((totalOption.value % 1 === 0) && !totalOption.showDecimal ) ? totalOption.value :\n LodashRound(totalOption.value, totalOption.preserveNumber).toFixed(totalOption.preserveNumber)) : '' }} </td>\n </ng-container>\n </tr>\n </tbody>\n </ng-template>\n <ng-template #tableTotalTemplate>\n \u5171 {{displayLines.length}} \u6761\u6570\u636E\n </ng-template>\n </nz-table>\n</ng-container>\n",
639
+ styles: ["::ng-deep .common-btn-group>a{font-size:14px;font-weight:400;color:#20b95d!important;white-space:nowrap}::ng-deep .common-btn-group .common-danger-btn:hover{color:#f05b24!important}::ng-deep .common-btn-group>a:hover{color:#20bd62!important}::ng-deep .common-btn-group>a:not(:last-child)::after{content:'';margin:0 2px}::ng-deep .common-billNumber>a{color:#3b77e3}button{box-shadow:unset;text-shadow:unset}::ng-deep .ant-form-item-label>label{color:#4b504e;font-size:14px}::ng-deep .ant-input-number-input{height:32px}::ng-deep .ant-input-number{height:32px}textarea.ant-input{height:auto;min-height:32px}::ng-deep .ant-select-selection--multiple{min-height:32px}::ng-deep .ant-select-selection--multiple .ant-select-selection__rendered>ul>li.ant-select-search--inline:only-child{margin-left:4px}::ng-deep .ant-select-selection__rendered>ul>li{height:26px!important;margin-top:3px!important;line-height:26px!important}::ng-deep .ant-advanced-search-form .ant-form-item{margin-bottom:0!important}::ng-deep .ant-select-selection--single{height:32px!important}::ng-deep .ant-input{height:32px}::ng-deep .ant-input[disabled]:hover{border-color:#d9d9d9!important}::ng-deep .ant-select-selection__rendered{line-height:32px!important}::ng-deep .ant-calendar-range-picker-input{text-align:left!important}::ng-deep .ant-calendar-picker{width:100%!important}::ng-deep .ant-row{margin-right:0!important;margin-left:0!important}::ng-deep .ant-col-6{padding-left:12px;padding-right:12px}::ng-deep .ant-col-12{padding-left:12px;padding-right:12px}::ng-deep .ant-col-18{padding-left:12px;padding-right:12px}::ng-deep .ant-col-24{padding-left:12px;padding-right:12px}::ng-deep .ant-alert-info{background-color:#f5f8f6;border:1px solid #cfe3d4}::ng-deep .hd-table-container .ant-table-td-left-sticky,::ng-deep .hd-table-container .ant-table-td-right-sticky,::ng-deep .hd-table-container .ant-table-th-left-sticky,::ng-deep .hd-table-container .ant-table-th-right-sticky{z-index:2;transform:translateZ(0)}::ng-deep .hd-table-container .ant-table-thead>tr>th.ant-table-th-left-sticky,::ng-deep .hd-table-container .ant-table-thead>tr>th.ant-table-th-right-sticky{background:#f5f8f6!important}::ng-deep .hd-table-container .ant-table-tbody>tr>td.ant-table-td-left-sticky,::ng-deep .hd-table-container .ant-table-tbody>tr>td.ant-table-td-right-sticky{background:#fff}::ng-deep .hd-table-container .ant-table-tbody>tr.ant-table-row-hover>td.ant-table-td-left-sticky,::ng-deep .hd-table-container .ant-table-tbody>tr.ant-table-row-hover>td.ant-table-td-right-sticky,::ng-deep .hd-table-container .ant-table-tbody>tr:hover>td.ant-table-td-left-sticky,::ng-deep .hd-table-container .ant-table-tbody>tr:hover>td.ant-table-td-right-sticky{background:#ecf8f1!important}::ng-deep .hd-table-container .ant-table-scroll-position-left .ant-table-td-right-sticky,::ng-deep .hd-table-container .ant-table-scroll-position-left .ant-table-th-right-sticky,::ng-deep .hd-table-container .ant-table-scroll-position-middle .ant-table-td-right-sticky,::ng-deep .hd-table-container .ant-table-scroll-position-middle .ant-table-th-right-sticky,::ng-deep .hd-table-container .ant-table-scroll-position-right .ant-table-td-right-sticky,::ng-deep .hd-table-container .ant-table-scroll-position-right .ant-table-th-right-sticky{box-shadow:none!important}::ng-deep .hd-table-container .ant-table-fixed-right{right:0!important}:host ::ng-deep th{background:#f5f8f6!important;font-weight:700!important;white-space:nowrap;font-size:14px;font-family:PingFangSC-Medium,PingFang SC;color:#2a3634;padding:8px!important;box-sizing:border-box}:host ::ng-deep td{font-weight:400;font-style:normal;font-size:14px;color:#2a3634;text-align:left;white-space:nowrap;padding:8px!important;box-sizing:border-box}::ng-deep .ant-pagination-options{display:inline-flex;align-items:center}::ng-deep .ant-pagination-options .ant-select,::ng-deep .ant-pagination-options .ant-select-selection--single{min-width:100px}::ng-deep .ant-pagination-options-size-changer.ant-select{min-width:100px}::ng-deep .ant-time-picker{width:100%}::ng-deep .cdk-overlay-pane .hd-cascader-menus.ant-cascader-menus>.ant-cascader-menu:only-child{width:-webkit-max-content!important;width:-moz-max-content!important;width:max-content!important;min-width:var(--hd-cascader-menu-min-width,auto);max-width:560px}::ng-deep .cdk-overlay-pane .hd-cascader-menus.ant-cascader-menus>.ant-cascader-menu:only-child .ant-cascader-menu-item{white-space:nowrap}.ant-input-number-disabled,.ant-input[disabled],.ant-select-disabled{color:#4b504e}:host ::ng-deep .hd-lines-search{width:300px;flex-shrink:0}.hd-table-container ::ng-deep .ant-pagination-options-quick-jumper input{border-radius:2px;border:1px solid #d9d9d9}.hd-table-container ::ng-deep .ant-pagination-options .ant-select-selection{border-radius:2px}.hd-table-container ::ng-deep .ant-table-thead>tr>th{border-bottom:1px solid #ecf1ed}.hd-table-container ::ng-deep .ant-table-tbody>tr>td{border-bottom:1px solid #ecf1ed}.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid.ant-table-row-hover>td,.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid.ant-table-row-hover>td.ant-table-td-left-sticky,.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid.ant-table-row-hover>td.ant-table-td-right-sticky,.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid:hover>td,.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid:hover>td.ant-table-td-left-sticky,.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid:hover>td.ant-table-td-right-sticky,.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid>td,.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid>td.ant-table-td-left-sticky,.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid>td.ant-table-td-right-sticky{background:#f7f8fa!important;color:#868a9c!important}.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid .common-btn-group>a{color:#20b95d!important}.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid .common-btn-group>a:hover{color:#20bd62!important}.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid .common-btn-group .common-danger-btn:hover{color:#f05b24!important}.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid .hd-table-cell-value>a,.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid>td>a{color:#20b95d}.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid .common-billNumber>a{color:#3b77e3}.hd-table-container ::ng-deep .ant-table-tbody>tr.hd-table-row-invalid .hd-status-text{color:#868a9c!important}.hd-table-container ::ng-deep .hd-table-total>td{border:0!important}.hd-table-container.hd-detail-lines--scroll-x:not(.hd-detail-lines--scroll-y) ::ng-deep .ant-table-body{max-height:calc(100vh - 280px)!important;overflow-y:auto!important}.hd-table-container.hd-detail-lines--scroll-x:not(.hd-detail-lines--scroll-y).hd-detail-lines--with-search ::ng-deep .ant-table-body{max-height:calc(100vh - 320px)!important}.hd-table-container.hd-detail-lines--scroll-x:not(.hd-detail-lines--scroll-y) ::ng-deep .ant-table-thead>tr>th{position:-webkit-sticky;position:sticky;top:0;z-index:2;background:#fafafa}.hd-table-container.hd-detail-lines--scroll-x:not(.hd-detail-lines--scroll-y) ::ng-deep .ant-table-thead>tr>th.ant-table-th-left-sticky,.hd-table-container.hd-detail-lines--scroll-x:not(.hd-detail-lines--scroll-y) ::ng-deep .ant-table-thead>tr>th.ant-table-th-right-sticky{z-index:4;background:#fafafa!important}.hd-table-container.hd-detail-lines--scroll-x:not(.hd-detail-lines--scroll-y) ::ng-deep .ant-table-tbody>tr>td.ant-table-td-left-sticky,.hd-table-container.hd-detail-lines--scroll-x:not(.hd-detail-lines--scroll-y) ::ng-deep .ant-table-tbody>tr>td.ant-table-td-right-sticky{z-index:3}.hd-table-container:not(.hd-detail-lines--scroll-y):not(.hd-detail-lines--scroll-x) ::ng-deep .ant-table-body{max-height:none!important;overflow-y:visible!important}"]
640
640
  }] }
641
641
  ];
642
642
  /** @nocollapse */
@@ -788,4 +788,4 @@ if (false) {
788
788
  */
789
789
  HdDetailLinesComponent.prototype.cdr;
790
790
  }
791
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGQtZGV0YWlsLWxpbmVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2ZhbnRhc3ktbmd6b3Jyby8iLCJzb3VyY2VzIjpbImhkLWRldGFpbC1saW5lcy9oZC1kZXRhaWwtbGluZXMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFlLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RFLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFFTixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsc0JBQXNCLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUc5SDtJQW1FRSxnQ0FBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUExRGpCLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBQzlCLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFDM0IsZUFBVSxHQUFZLEtBQUssQ0FBQzs7UUFFNUMsaUJBQVksR0FBYSxFQUFFLENBQUM7Ozs7O1FBSzVCLFdBQU0sR0FBOEIsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDMUQsZ0JBQVcsR0FBK0IsSUFBSSxDQUFDO1FBQ3RDLGdCQUFXLEdBQVcsWUFBWSxDQUFDO1FBWWxDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQzs7UUFNbEIsY0FBUyxHQUFZLEtBQUssQ0FB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aEMsaURBQXdCOztJQUN4QixtREFBdUI7O0lBQ3ZCLCtDQUFtQjs7SUFDbkIsaURBQWdEOztJQUNoRCxnREFBZ0Q7O0lBQ2hELGdEQUE0Qzs7SUFDNUMsMkNBQWtCOzs7OztJQUVsQiw4Q0FBOEI7Ozs7O0lBRTlCLDhDQUFxQjs7SUFDckIsb0RBQTZCOzs7OztJQUU3QiwyQ0FBaUI7Ozs7O0lBQ2pCLGtEQUFxRDs7Ozs7SUFFekMscUNBQThCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSB9IGZyb20gXCJAYW5ndWxhci9jZGsvZHJhZy1kcm9wXCI7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IHJvdW5kIH0gZnJvbSBcImxvZGFzaFwiO1xuaW1wb3J0IHsgSW5wdXRCb29sZWFuIH0gZnJvbSBcIm5nLXpvcnJvLWFudGQvY29yZVwiO1xuaW1wb3J0IHsgTnpUYWJsZUNvbXBvbmVudCB9IGZyb20gXCJuZy16b3Jyby1hbnRkL3RhYmxlXCI7XG5pbXBvcnQgeyBQYWdlIH0gZnJvbSBcIi4uL21vZGVsL2NvbW1vbi10eXBlXCI7XG5pbXBvcnQgeyBtZWFzdXJlVGFibGVDb2xXaWR0aCwgcmVzb2x2ZUF1dG9UYWJsZVNjcm9sbCwgYmluZE56VGFibGVIZWFkZXJCb2R5U2Nyb2xsU3luYyB9IGZyb20gXCIuLi91dGlscy9oZC10YWJsZS1zY3JvbGwudXRpbFwiO1xuaW1wb3J0IHsgVG90YWxPcHRpb24gfSBmcm9tIFwiLi9oZC1kZXRhaWwtbGluZXMuc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiaGQtZGV0YWlsLWxpbmVzXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vaGQtZGV0YWlsLWxpbmVzLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi9oZC1kZXRhaWwtbGluZXMuY29tcG9uZW50Lmxlc3NcIl0sXG59KVxuZXhwb3J0IGNsYXNzIEhkRGV0YWlsTGluZXNDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZChcImhkVGFibGVcIiwgeyBzdGF0aWM6IGZhbHNlIH0pIG56VGFibGVDb21wb25lbnQ6IE56VGFibGVDb21wb25lbnQ7XG4gIEBJbnB1dCgpIGxpbmVzOiBBcnJheTxhbnk+O1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgc2hvd1NlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBhbGxvd0Ryb3A6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHNob3dTZWFyY2g6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLy8g5LiN5Lyg6YCS6L+Z5Liq5a2X5q615pe26buY6K6k5Li65p+l6K+i5omA5pyJ5a2X5q615piv5ZCm5pyJ5Yy56YWN55qEXG4gIEBJbnB1dCgpIHNlYXJjaEZpZWxkczogc3RyaW5nW10gPSBbXTtcbiAgLyoqXG4gICAqIOaoquWQkea7muWKqOOAguWOhuWPsum7mOiupCBgeyB4OiAnMXB4JyB9YO+8iDIuMS4yOCDliY3kuIDnm7TlpoLmraTvvInvvJrlvIDlkK/mqKrmu5rkvYbkuI3plIHmrbvliJflrr3vvIxcbiAgICog5Lia5Yqh6aG15Y+v5LiN5YaZIHRoL3RkIHdpZHRo77yM55Sx5YaF5a656Ieq6YCC5bqU44CC5LygIG51bGwg5YiZ5oyJ5a655Zmo6Ieq5Yqo5rWL566X44CCXG4gICAqL1xuICBASW5wdXQoKSBzY3JvbGw6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7IHg6IFwiMXB4XCIgfTtcbiAgdGFibGVTY3JvbGw6IHsgeD86IHN0cmluZzsgeT86IHN0cmluZyB9ID0gbnVsbDtcbiAgQElucHV0KCkgc2VsZWN0RmllbGQ6IHN0cmluZyA9IFwiYmlsbE51bWJlclwiO1xuICBASW5wdXQoKSBzZWxlY3RlZEZpZWxkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiDooYzli77pgInnpoHnlKjlrZfmrrXlkI3jgILlrprkuYnlkI7lj5blvZPliY3ooYzor6XlrZfmrrXvvJpcbiAgICog5Li6IHRydWUg5pe256aB55So6K+l6KGM5Yu+6YCJ77yI5YWo6YCJ5Lmf5Lya6Lez6L+H77yJ44CCXG4gICAqL1xuICBASW5wdXQoKSBzZWxlY3REaXNhYmxlZEZpZWxkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiDooYzlpLHmlYjlrZfmrrXlkI3jgILlrprkuYnlkI7lj5blvZPliY3ooYzor6XlrZfmrrXvvJpcbiAgICog5Li6IHRydWUg5pe25pW06KGM6IOM5pmv6Imy5Li6ICNGN0Y4RkHjgIHmloflrZcgIzg2OEE5Q+OAglxuICAgKi9cbiAgQElucHV0KCkgcm93SW52YWxpZEZpZWxkOiBzdHJpbmc7XG4gIEBPdXRwdXQoKSBzZWxlY3RFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQENvbnRlbnRDaGlsZChcImRldGFpbExpbmVIZWFkXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBkZXRhaWxMaW5lSGVhZDogVGVtcGxhdGVSZWY8YW55PjtcbiAgQENvbnRlbnRDaGlsZChcImRldGFpbExpbmVCb2R5XCIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBkZXRhaWxMaW5lQm9keTogVGVtcGxhdGVSZWY8YW55PjtcbiAgLy8g5ZCI6K6h5Yy65Z+fXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBzaG93VG90YWw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgdG90YWxPcHRpb246IEFycmF5PFRvdGFsT3B0aW9uPiA9IFtdO1xuICBASW5wdXQoKSBjb2x1bW5zTnVtYmVyOiBudW1iZXIgfCBzdHJpbmcgPSAwO1xuICBASW5wdXQoKSBoZEZyb250UGFnaW5hdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuICB0b3RhbE9wdGlvbkxpc3QgPSBbXTtcblxuICB0YWJsZURhdGE6IFBhZ2U8YW55PiA9IG5ldyBQYWdlKCk7XG4gIHRhYmxlTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICAvLyDooajmoLzliIbpobXlj4LmlbBcbiAgdGFibGVQYWdlSW5kZXg6IG51bWJlciA9IDE7XG4gIEBJbnB1dCgpIHRhYmxlUGFnZVNpemU6IG51bWJlciA9IDEwMDtcbiAgLy8g6KGo5qC85Yu+6YCJ5Y+C5pWwXG4gIGlzQWxsRGlzcGxheURhdGFDaGVja2VkID0gZmFsc2U7XG4gIGlzSW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuICBsaXN0T2ZEaXNwbGF5RGF0YSA9IFtdO1xuICBsaXN0T2ZBbGxEYXRhID0gW107XG4gIGxpc3RPZlNlbGVjdGlvbjogQXJyYXk8YW55PiB8IFRlbXBsYXRlUmVmPHZvaWQ+O1xuICBtYXBPZkNoZWNrZWRJZDogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcbiAgbWFwT2ZDaGVja0xpc3Q6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgZmlsdGVyU3RyOiBzdHJpbmc7XG4gIC8qKiDooajmoLzlrp7pmYXlsZXnpLrnmoTmlbDmja7vvIjnrZvpgInnu5PmnpzmiJblhajph4/vvIkgKi9cbiAgZGlzcGxheUxpbmVzOiBBcnJheTxhbnk+ID0gW107XG4gIC8qKiDmmK/lkKblpITkuo7nrZvpgInnirbmgIEgKi9cbiAgaXNGaWx0ZXJEYXRhID0gZmFsc2U7XG4gIHN0b3JlRm9ybUxpbmVzRGF0YTogYW55ID0gW107IC8vIOe8k+WtmOeahOaAu+eahOWIl+ihqOaVsOaNrlxuICAvKiog5o6n5Yi2IG56LXRhYmxlIOmHjeW7uu+8mnNjcm9sbC55IOS7juaXoOWIsOacieaXtuW/hemhu+mHjeW7uu+8jOWQpuWImeihqOWktOS4jei3n+aoqua7miAqL1xuICBzaG93VGFibGUgPSB0cnVlO1xuICBwcml2YXRlIHVuYmluZEJvZHlTY3JvbGw6ICgoKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBnZXQgZWZmZWN0aXZlU2Nyb2xsKCk6IHsgeD86IHN0cmluZzsgeT86IHN0cmluZyB9IHtcbiAgICAvLyDkuI3oh6rliqjooaUgbnpTY3JvbGwuee+8muaciSB5IOS8muaLhuihqOWktC/ooajkvZPvvIzml6DliJflrr3ml7bliJfplJnkvY3jgIJcbiAgICAvLyDku4XmnIkgeCDml7bnmoTnurXmu5rnlLEgbGVzc++8iG1heC1oZWlnaHQgKyBvdmVyZmxvdy1577yJ5om/5ouF77yM6KGo5aS0IHN0aWNreeOAglxuICAgIC8vIOS7heW9k+eItue7hOS7tuaYvuW8j+S8oOS6hiBzY3JvbGwueSDml7bmiY3otbAgbnotdGFibGUg5YiG5L2T57q15rua44CCXG4gICAgcmV0dXJuIHRoaXMuc2Nyb2xsICE9IG51bGwgPyB0aGlzLnNjcm9sbCA6IHRoaXMudGFibGVTY3JvbGw7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN5bmNTdG9yZUZyb21MaW5lc0lucHV0KCk7XG4gICAgdGhpcy5hcHBseURpc3BsYXlGcm9tU3RvcmUoKTtcbiAgICB0aGlzLmNvdW50U2VsZWN0ZWQoKTtcbiAgICB0aGlzLmNhbGN1bGF0ZVRvdGFsKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zY2hlZHVsZVN5bmNIb3Jpem9udGFsU2Nyb2xsKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnVuYmluZEhlYWRlckJvZHlTY3JvbGxTeW5jKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbXCJsaW5lc1wiXSkge1xuICAgICAgaWYgKCF0aGlzLmlzRmlsdGVyRGF0YSkge1xuICAgICAgICB0aGlzLnN5bmNTdG9yZUZyb21MaW5lc0lucHV0KCk7XG4gICAgICAgIHRoaXMuZGlzcGxheUxpbmVzID0gdGhpcy5saW5lcyB8fCBbXTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICF0aGlzLnN0b3JlRm9ybUxpbmVzRGF0YSB8fFxuICAgICAgICB0aGlzLnN0b3JlRm9ybUxpbmVzRGF0YS5sZW5ndGggPT09IDBcbiAgICAgICkge1xuICAgICAgICB0aGlzLnN5bmNTdG9yZUZyb21MaW5lc0lucHV0KCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY291bnRTZWxlY3RlZCgpO1xuICAgIHRoaXMuY2FsY3VsYXRlVG90YWwoKTtcbiAgICBpZiAoY2hhbmdlc1tcImxpbmVzXCJdIHx8IGNoYW5nZXNbXCJzaG93U2VsZWN0ZWRcIl0pIHtcbiAgICAgIHRoaXMuc2NoZWR1bGVTeW5jSG9yaXpvbnRhbFNjcm9sbCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2NoZWR1bGVTeW5jSG9yaXpvbnRhbFNjcm9sbChyZXRyeSA9IDApOiB2b2lkIHtcbiAgICBjb25zdCBkZWxheSA9IHJldHJ5ID09PSAwID8gMCA6IDUwO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuc2Nyb2xsID09IG51bGwpIHtcbiAgICAgICAgdGhpcy5zeW5jSG9yaXpvbnRhbFNjcm9sbCgpO1xuICAgICAgfVxuICAgICAgdGhpcy5iaW5kSGVhZGVyQm9keVNjcm9sbFN5bmMoMCk7XG4gICAgICBjb25zdCBhZnRlclggPVxuICAgICAgICAodGhpcy5lZmZlY3RpdmVTY3JvbGwgJiYgdGhpcy5lZmZlY3RpdmVTY3JvbGwueCkgfHxcbiAgICAgICAgKHRoaXMudGFibGVTY3JvbGwgJiYgdGhpcy50YWJsZVNjcm9sbC54KTtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5zY3JvbGwgPT0gbnVsbCAmJlxuICAgICAgICByZXRyeSA8IDUgJiZcbiAgICAgICAgdGhpcy5kaXNwbGF5TGluZXMgJiZcbiAgICAgICAgdGhpcy5kaXNwbGF5TGluZXMubGVuZ3RoID4gMCAmJlxuICAgICAgICAhYWZ0ZXJYICYmXG4gICAgICAgIG1lYXN1cmVUYWJsZUNvbFdpZHRoKHRoaXMubnpUYWJsZUNvbXBvbmVudCkgPT09IDBcbiAgICAgICkge1xuICAgICAgICB0aGlzLnNjaGVkdWxlU3luY0hvcml6b250YWxTY3JvbGwocmV0cnkgKyAxKTtcbiAgICAgIH1cbiAgICB9LCBkZWxheSk7XG4gIH1cblxuICBwcml2YXRlIHN5bmNIb3Jpem9udGFsU2Nyb2xsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNjcm9sbCAhPSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGhhc0RhdGEgPSAhISh0aGlzLmRpc3BsYXlMaW5lcyAmJiB0aGlzLmRpc3BsYXlMaW5lcy5sZW5ndGgpO1xuICAgIGNvbnN0IG5leHRTY3JvbGwgPSByZXNvbHZlQXV0b1RhYmxlU2Nyb2xsKFxuICAgICAgdGhpcy5uelRhYmxlQ29tcG9uZW50LFxuICAgICAgaGFzRGF0YSxcbiAgICApO1xuICAgIGNvbnN0IG5leHRYID0gbmV4dFNjcm9sbCA/IG5leHRTY3JvbGwueCA6IG51bGw7XG4gICAgLy8g6Ieq5Yqo5rWL566X5Y+q6K6+IHjvvIzkuI3orr4gee+8iOS4jiAyLjEuNjQg5YmN5LiA6Ie077yM6YG/5YWN5peg5YiX5a695pe26KGo5aS0L+ihqOS9k+mUmeS9je+8iVxuICAgIGlmICh0aGlzLnRhYmxlU2Nyb2xsICYmIHRoaXMudGFibGVTY3JvbGwueCA9PT0gbmV4dFggJiYgIXRoaXMudGFibGVTY3JvbGwueSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBwcmV2SGFzWSA9ICEhKHRoaXMudGFibGVTY3JvbGwgJiYgdGhpcy50YWJsZVNjcm9sbC55KTtcbiAgICB0aGlzLnRhYmxlU2Nyb2xsID0gbmV4dFggPyB7IHg6IG5leHRYIH0gOiBudWxsO1xuICAgIGlmIChwcmV2SGFzWSkge1xuICAgICAgdGhpcy5yZW1vdW50VGFibGUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgdGhpcy5iaW5kSGVhZGVyQm9keVNjcm9sbFN5bmMoMCk7XG4gIH1cblxuICAvKiog6YeN5bu6IG56LXRhYmxl77yM6K6pIGhlYWRlci9ib2R5IOa7muWKqOWQjOatpeWcqCBBZnRlclZpZXdJbml0IOmHjeaWsOe7keWumiAqL1xuICBwcml2YXRlIHJlbW91bnRUYWJsZSgpOiB2b2lkIHtcbiAgICB0aGlzLnVuYmluZEhlYWRlckJvZHlTY3JvbGxTeW5jKCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNob3dUYWJsZSA9IGZhbHNlO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5zaG93VGFibGUgPSB0cnVlO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmJpbmRIZWFkZXJCb2R5U2Nyb2xsU3luYygwKSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiDooajkvZPmqKrmu5rml7blkIzmraXooajlpLTvvIjlhZzlupUgbmctem9ycm8g55uR5ZCs5Lii5aSx77yJ77ybRE9NIOacquWwsee7quaXtumHjeivlSAqL1xuICBwcml2YXRlIGJpbmRIZWFkZXJCb2R5U2Nyb2xsU3luYyhyZXRyeSA9IDApOiB2b2lkIHtcbiAgICB0aGlzLnVuYmluZEhlYWRlckJvZHlTY3JvbGxTeW5jKCk7XG4gICAgaWYgKCF0aGlzLm56VGFibGVDb21wb25lbnQgfHwgISh0aGlzLmVmZmVjdGl2ZVNjcm9sbCAmJiB0aGlzLmVmZmVjdGl2ZVNjcm9sbC54KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB1bmJpbmQgPSBiaW5kTnpUYWJsZUhlYWRlckJvZHlTY3JvbGxTeW5jKHRoaXMubnpUYWJsZUNvbXBvbmVudCk7XG4gICAgaWYgKHVuYmluZCkge1xuICAgICAgdGhpcy51bmJpbmRCb2R5U2Nyb2xsID0gdW5iaW5kO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocmV0cnkgPCA4KSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuYmluZEhlYWRlckJvZHlTY3JvbGxTeW5jKHJldHJ5ICsgMSksIDUwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVuYmluZEhlYWRlckJvZHlTY3JvbGxTeW5jKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnVuYmluZEJvZHlTY3JvbGwpIHtcbiAgICAgIHRoaXMudW5iaW5kQm9keVNjcm9sbCgpO1xuICAgICAgdGhpcy51bmJpbmRCb2R5U2Nyb2xsID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN5bmNTdG9yZUZyb21MaW5lc0lucHV0KHNvdXJjZT86IEFycmF5PGFueT4pOiB2b2lkIHtcbiAgICBjb25zdCBkYXRhID0gc291cmNlIHx8IHRoaXMubGluZXM7XG4gICAgdGhpcy5zdG9yZUZvcm1MaW5lc0RhdGEgPSBkYXRhID8gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhKSkgOiBbXTtcbiAgfVxuXG4gIC8qKiDmnKrnrZvpgInml7bkuI7niLbnu4Tku7YgbGluZXMg5ZCM5rqQ77yM6YG/5YWN5qih5p2/5YaFIG5nTW9kZWwg5LiO54i25pWw5o2u6ISx6IqCICovXG4gIHByaXZhdGUgYXBwbHlEaXNwbGF5RnJvbVN0b3JlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxpbmVzICYmIHRoaXMubGluZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5kaXNwbGF5TGluZXMgPSB0aGlzLmxpbmVzO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRpc3BsYXlMaW5lcyA9IHRoaXMuc3RvcmVGb3JtTGluZXNEYXRhXG4gICAgICA/IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5zdG9yZUZvcm1MaW5lc0RhdGEpKVxuICAgICAgOiBbXTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzdG9yZUZyb21TdG9yZSgpOiB2b2lkIHtcbiAgICB0aGlzLmlzRmlsdGVyRGF0YSA9IGZhbHNlO1xuICAgIHRoaXMuYXBwbHlEaXNwbGF5RnJvbVN0b3JlKCk7XG4gICAgdGhpcy50YWJsZUxvYWRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmNvdW50U2VsZWN0ZWQoKTtcbiAgICB0aGlzLmNhbGN1bGF0ZVRvdGFsKCk7XG4gICAgdGhpcy5zY2hlZHVsZVN5bmNIb3Jpem9udGFsU2Nyb2xsKCk7XG4gIH1cblxuICAvLyDlhajlsYDmgKfnmoTmkJzntKLvvIjmtrXnm5bpobXpnaLkuIrmiYDmnInnmoTlj6/op4bmloflrZfvvIlcbiAgc2VhcmNoTGluZXMoKSB7XG4gICAgLy8g5riF56m65pCc57Si77ya5Y2z5L2/5b2T5YmN5bGV56S65Li656m65Lmf6KaB6IO95LuO57yT5a2Y5oGi5aSN77yI5a+56b2QIGhkLWZvcm0tbGluZXPvvIlcbiAgICBpZiAoIXRoaXMuZmlsdGVyU3RyIHx8ICF0aGlzLmZpbHRlclN0ci50cmltKCkpIHtcbiAgICAgIGlmICghdGhpcy5zdG9yZUZvcm1MaW5lc0RhdGEgfHwgdGhpcy5zdG9yZUZvcm1MaW5lc0RhdGEubGVuZ3RoIDwgMSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnRhYmxlTG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLnJlc3RvcmVGcm9tU3RvcmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnN0b3JlRm9ybUxpbmVzRGF0YSB8fCB0aGlzLnN0b3JlRm9ybUxpbmVzRGF0YS5sZW5ndGggPCAxKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudGFibGVMb2FkaW5nID0gdHJ1ZTtcbiAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHRoaXMuZmlsdGVyU3RyLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgIHRoaXMuaXNGaWx0ZXJEYXRhID0gdHJ1ZTtcblxuICAgIGNvbnN0IGZpbHRlcmVkRGF0YSA9IHRoaXMuc3RvcmVGb3JtTGluZXNEYXRhLmZpbHRlcigoZGF0YTogYW55KSA9PiB7XG4gICAgICBpZiAoIXRoaXMuc2VhcmNoRmllbGRzIHx8IHRoaXMuc2VhcmNoRmllbGRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgT2JqZWN0LmtleXMoZGF0YSkpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBkYXRhW2l0ZW1dICYmXG4gICAgICAgICAgICBkYXRhW2l0ZW1dLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5zZWFyY2hGaWVsZHMpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGRhdGFbaXRlbV0gJiZcbiAgICAgICAgICBkYXRhW2l0ZW1dLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcbiAgICB0aGlzLmRpc3BsYXlMaW5lcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZmlsdGVyZWREYXRhKSk7XG4gICAgdGhpcy50YWJsZUxvYWRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmNvdW50U2VsZWN0ZWQoKTtcbiAgICB0aGlzLmNhbGN1bGF0ZVRvdGFsKCk7XG4gICAgdGhpcy5zY2hlZHVsZVN5bmNIb3Jpem9udGFsU2Nyb2xsKCk7XG4gIH1cblxuICBwcml2YXRlIGNvdW50U2VsZWN0ZWQoKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5zaG93U2VsZWN0ZWQgJiZcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWVsZCAmJlxuICAgICAgdGhpcy5kaXNwbGF5TGluZXMgJiZcbiAgICAgIHRoaXMuZGlzcGxheUxpbmVzLmxlbmd0aFxuICAgICkge1xuICAgICAgdGhpcy5kaXNwbGF5TGluZXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBpZiAoaXRlbVt0aGlzLnNlbGVjdGVkRmllbGRdID09PSB0cnVlICYmICF0aGlzLmlzU2VsZWN0RGlzYWJsZWQoaXRlbSkpIHtcbiAgICAgICAgICB0aGlzLm1hcE9mQ2hlY2tlZElkW2l0ZW1bdGhpcy5zZWxlY3RGaWVsZF1dID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLm1hcE9mQ2hlY2tMaXN0W2l0ZW1bdGhpcy5zZWxlY3RGaWVsZF1dID0gaXRlbTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuZGlzcGxheUxpbmVzLmxlbmd0aCA9PT0gT2JqZWN0LmtleXModGhpcy5tYXBPZkNoZWNrTGlzdCkubGVuZ3RoXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5pc0FsbERpc3BsYXlEYXRhQ2hlY2tlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuaXNJbmRldGVybWluYXRlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgTG9kYXNoUm91bmQoKSB7XG4gICAgcmV0dXJuIHJvdW5kO1xuICB9XG5cbiAgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8c3RyaW5nW10+KTogdm9pZCB7XG4gICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMuZGlzcGxheUxpbmVzLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgIHRoaXMuZGlzcGxheUxpbmVzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmRpc3BsYXlMaW5lcykpO1xuICAgIGlmICghdGhpcy5pc0ZpbHRlckRhdGEpIHtcbiAgICAgIHRoaXMuc3RvcmVGb3JtTGluZXNEYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmRpc3BsYXlMaW5lcykpO1xuICAgIH1cbiAgfVxuXG4gIGNhbGN1bGF0ZVRvdGFsKCkge1xuICAgIC8vIOi/memHjOWkhOeQhuWQiOiuoeaVsOaNrlxuICAgIGlmICh0aGlzLnNob3dUb3RhbCAmJiB0aGlzLmRpc3BsYXlMaW5lcyAmJiB0aGlzLmRpc3BsYXlMaW5lcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMudG90YWxPcHRpb25MaXN0ID0gbmV3IEFycmF5KE51bWJlcih0aGlzLmNvbHVtbnNOdW1iZXIpIC0gMSkuZmlsbChcIlwiKTtcbiAgICAgIHRoaXMudG90YWxPcHRpb24uZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBpZiAoaXRlbS5pbnNlcnRJbmRleCAmJiAoaXRlbS5pbnNlcnRWYWx1ZSB8fCBpdGVtLmluc2VydFZhbHVlID09PSAwKSkge1xuICAgICAgICAgIHRoaXMudG90YWxPcHRpb25MaXN0W2l0ZW0uaW5zZXJ0SW5kZXggLSAxXSA9IHtcbiAgICAgICAgICAgIHZhbHVlOiBpdGVtLmluc2VydFZhbHVlLFxuICAgICAgICAgICAgYWxpZ246IGl0ZW0uYWxpZ24gfHwgXCJyaWdodFwiLFxuICAgICAgICAgICAgc2hvd0RlY2ltYWw6IGl0ZW0uc2hvd0RlY2ltYWwgfHwgZmFsc2UsXG4gICAgICAgICAgICBwcmVzZXJ2ZU51bWJlcjogaXRlbS5wcmVzZXJ2ZU51bWJlciAhPSBudWxsID8gaXRlbS5wcmVzZXJ2ZU51bWJlciA6IDIsXG4gICAgICAgICAgICBpc0hpZGU6IGl0ZW0uaXNIaWRlIHx8IGZhbHNlLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIOihqOagvOWLvumAiemAu+i+kVxuICBjdXJyZW50UGFnZURhdGFDaGFuZ2UoJGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RPZkRpc3BsYXlEYXRhID0gJGV2ZW50O1xuICAgIHRoaXMucmVmcmVzaFN0YXR1cygpO1xuICAgIHRoaXMuc2NoZWR1bGVTeW5jSG9yaXpvbnRhbFNjcm9sbCgpO1xuICB9XG5cbiAgcmVzZXRTdGF0dXMoKSB7XG4gICAgdGhpcy5pc0FsbERpc3BsYXlEYXRhQ2hlY2tlZCA9IGZhbHNlO1xuICAgIHRoaXMuaXNJbmRldGVybWluYXRlID0gZmFsc2U7XG4gICAgdGhpcy5tYXBPZkNoZWNrZWRJZCA9IHt9O1xuICAgIHRoaXMubWFwT2ZDaGVja0xpc3QgPSB7fTtcbiAgICB0aGlzLnNlbGVjdEV2ZW50LmVtaXQoW10pO1xuICB9XG5cbiAgcmVmcmVzaFN0YXR1cyhldmVudDogYm9vbGVhbiA9IGZhbHNlLCBkYXRhOiBhbnkgPSBudWxsKTogdm9pZCB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGlmIChldmVudCAmJiB0aGlzLmlzU2VsZWN0RGlzYWJsZWQoZGF0YSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5tYXBPZkNoZWNrZWRJZFtkYXRhW3RoaXMuc2VsZWN0RmllbGRdXSA9IGV2ZW50O1xuICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICF0aGlzLm1hcE9mQ2hlY2tMaXN0W2RhdGFbdGhpcy5zZWxlY3RGaWVsZF1dICYmXG4gICAgICAgICAgKHRoaXMubWFwT2ZDaGVja0xpc3RbZGF0YVt0aGlzLnNlbGVjdEZpZWxkXV0gPSBkYXRhKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubWFwT2ZDaGVja0xpc3RbZGF0YVt0aGlzLnNlbGVjdEZpZWxkXV0gJiZcbiAgICAgICAgICBkZWxldGUgdGhpcy5tYXBPZkNoZWNrTGlzdFtkYXRhW3RoaXMuc2VsZWN0RmllbGRdXTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3Qgc2VsZWN0YWJsZUxpc3QgPSB0aGlzLmxpc3RPZkRpc3BsYXlEYXRhLmZpbHRlcihcbiAgICAgIChpdGVtKSA9PiAhdGhpcy5pc1NlbGVjdERpc2FibGVkKGl0ZW0pLFxuICAgICk7XG4gICAgdGhpcy5pc0FsbERpc3BsYXlEYXRhQ2hlY2tlZCA9XG4gICAgICBzZWxlY3RhYmxlTGlzdC5sZW5ndGggPiAwICYmXG4gICAgICBzZWxlY3RhYmxlTGlzdC5ldmVyeSgoaXRlbSkgPT4gdGhpcy5tYXBPZkNoZWNrZWRJZFtpdGVtW3RoaXMuc2VsZWN0RmllbGRdXSk7XG4gICAgdGhpcy5pc0luZGV0ZXJtaW5hdGUgPVxuICAgICAgc2VsZWN0YWJsZUxpc3Quc29tZShcbiAgICAgICAgKGl0ZW0pID0+IHRoaXMubWFwT2ZDaGVja2VkSWRbaXRlbVt0aGlzLnNlbGVjdEZpZWxkXV0sXG4gICAgICApICYmICF0aGlzLmlzQWxsRGlzcGxheURhdGFDaGVja2VkO1xuICAgIC8vIOinpuWPkXNlbGVjdOS6i+S7tlxuICAgIGlmICh0aGlzLnNlbGVjdEV2ZW50KSB7XG4gICAgICB0aGlzLnNlbGVjdEV2ZW50LmVtaXQoT2JqZWN0LnZhbHVlcyh0aGlzLm1hcE9mQ2hlY2tMaXN0KSk7XG4gICAgfVxuICB9XG5cbiAgY2hlY2tBbGwodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RPZkRpc3BsYXlEYXRhLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGlmICh0aGlzLmlzU2VsZWN0RGlzYWJsZWQoaXRlbSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICF0aGlzLm1hcE9mQ2hlY2tMaXN0W2l0ZW1bdGhpcy5zZWxlY3RGaWVsZF1dICYmXG4gICAgICAgICAgKHRoaXMubWFwT2ZDaGVja0xpc3RbaXRlbVt0aGlzLnNlbGVjdEZpZWxkXV0gPSBpdGVtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubWFwT2ZDaGVja0xpc3RbaXRlbVt0aGlzLnNlbGVjdEZpZWxkXV0gJiZcbiAgICAgICAgICBkZWxldGUgdGhpcy5tYXBPZkNoZWNrTGlzdFtpdGVtW3RoaXMuc2VsZWN0RmllbGRdXTtcbiAgICAgIH1cbiAgICAgIHRoaXMubWFwT2ZDaGVja2VkSWRbaXRlbVt0aGlzLnNlbGVjdEZpZWxkXV0gPSB2YWx1ZTtcbiAgICB9KTtcbiAgICB0aGlzLnJlZnJlc2hTdGF0dXMoKTtcbiAgfVxuXG4gIC8qKiDlvZPliY3ooYzmmK/lkKbnpoHnlKjli77pgIkgKi9cbiAgaXNTZWxlY3REaXNhYmxlZChkYXRhOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEoXG4gICAgICB0aGlzLnNlbGVjdERpc2FibGVkRmllbGQgJiZcbiAgICAgIGRhdGEgJiZcbiAgICAgIGRhdGFbdGhpcy5zZWxlY3REaXNhYmxlZEZpZWxkXSA9PT0gdHJ1ZVxuICAgICk7XG4gIH1cblxuICAvKiog5b2T5YmN6KGM5piv5ZCm5aSx5pWIICovXG4gIGlzSW52YWxpZFJvdyhkYXRhOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEoXG4gICAgICB0aGlzLnJvd0ludmFsaWRGaWVsZCAmJlxuICAgICAgZGF0YSAmJlxuICAgICAgZGF0YVt0aGlzLnJvd0ludmFsaWRGaWVsZF0gPT09IHRydWVcbiAgICApO1xuICB9XG59XG4iXX0=
791
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGQtZGV0YWlsLWxpbmVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2ZhbnRhc3ktbmd6b3Jyby8iLCJzb3VyY2VzIjpbImhkLWRldGFpbC1saW5lcy9oZC1kZXRhaWwtbGluZXMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFlLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RFLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFFTixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDL0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsc0JBQXNCLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUc5SDtJQW1FRSxnQ0FBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUExRGpCLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBQzlCLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFDM0IsZUFBVSxHQUFZLEtBQUssQ0FBQzs7UUFFNUMsaUJBQVksR0FBYSxFQUFFLENBQUM7Ozs7O1FBSzVCLFdBQU0sR0FBOEIsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDMUQsZ0JBQVcsR0FBK0IsSUFBSSxDQUFDO1FBQ3RDLGdCQUFXLEdBQVcsWUFBWSxDQUFDO1FBWWxDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQzs7UUFNbEIsY0FBUyxHQUFZLEtBQUssQ0FB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aEMsaURBQXdCOztJQUN4QixtREFBdUI7O0lBQ3ZCLCtDQUFtQjs7SUFDbkIsaURBQWdEOztJQUNoRCxnREFBZ0Q7O0lBQ2hELGdEQUE0Qzs7SUFDNUMsMkNBQWtCOzs7OztJQUVsQiw4Q0FBOEI7Ozs7O0lBRTlCLDhDQUFxQjs7SUFDckIsb0RBQTZCOzs7OztJQUU3QiwyQ0FBaUI7Ozs7O0lBQ2pCLGtEQUFxRDs7Ozs7SUFFekMscUNBQThCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSB9IGZyb20gXCJAYW5ndWxhci9jZGsvZHJhZy1kcm9wXCI7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IHJvdW5kIH0gZnJvbSBcImxvZGFzaFwiO1xuaW1wb3J0IHsgSW5wdXRCb29sZWFuIH0gZnJvbSBcIm5nLXpvcnJvLWFudGQvY29yZVwiO1xuaW1wb3J0IHsgTnpUYWJsZUNvbXBvbmVudCB9IGZyb20gXCJuZy16b3Jyby1hbnRkL3RhYmxlXCI7XG5pbXBvcnQgeyBQYWdlIH0gZnJvbSBcIi4uL21vZGVsL2NvbW1vbi10eXBlXCI7XG5pbXBvcnQgeyBtZWFzdXJlVGFibGVDb2xXaWR0aCwgcmVzb2x2ZUF1dG9UYWJsZVNjcm9sbCwgYmluZE56VGFibGVIZWFkZXJCb2R5U2Nyb2xsU3luYyB9IGZyb20gXCIuLi91dGlscy9oZC10YWJsZS1zY3JvbGwudXRpbFwiO1xuaW1wb3J0IHsgVG90YWxPcHRpb24gfSBmcm9tIFwiLi9oZC1kZXRhaWwtbGluZXMuc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiaGQtZGV0YWlsLWxpbmVzXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vaGQtZGV0YWlsLWxpbmVzLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wiLi9oZC1kZXRhaWwtbGluZXMuY29tcG9uZW50Lmxlc3NcIl0sXG59KVxuZXhwb3J0IGNsYXNzIEhkRGV0YWlsTGluZXNDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZChcImhkVGFibGVcIiwgeyBzdGF0aWM6IGZhbHNlIH0pIG56VGFibGVDb21wb25lbnQ6IE56VGFibGVDb21wb25lbnQ7XG4gIEBJbnB1dCgpIGxpbmVzOiBBcnJheTxhbnk+O1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgc2hvd1NlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBhbGxvd0Ryb3A6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHNob3dTZWFyY2g6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLy8g5LiN5Lyg6YCS6L+Z5Liq5a2X5q615pe26buY6K6k5Li65p+l6K+i5omA5pyJ5a2X5q615piv5ZCm5pyJ5Yy56YWN55qEXG4gIEBJbnB1dCgpIHNlYXJjaEZpZWxkczogc3RyaW5nW10gPSBbXTtcbiAgLyoqXG4gICAqIOaoquWQkea7muWKqOOAguWOhuWPsum7mOiupCBgeyB4OiAnMXB4JyB9YO+8iDIuMS4yOCDliY3kuIDnm7TlpoLmraTvvInvvJrlvIDlkK/mqKrmu5rkvYbkuI3plIHmrbvliJflrr3vvIxcbiAgICog5Lia5Yqh6aG15Y+v5LiN5YaZIHRoL3RkIHdpZHRo77yM55Sx5YaF5a656Ieq6YCC5bqU44CC5LygIG51bGwg5YiZ5oyJ5a655Zmo6Ieq5Yqo5rWL566X44CCXG4gICAqL1xuICBASW5wdXQoKSBzY3JvbGw6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7IHg6IFwiMXB4XCIgfTtcbiAgdGFibGVTY3JvbGw6IHsgeD86IHN0cmluZzsgeT86IHN0cmluZyB9ID0gbnVsbDtcbiAgQElucHV0KCkgc2VsZWN0RmllbGQ6IHN0cmluZyA9IFwiYmlsbE51bWJlclwiO1xuICBASW5wdXQoKSBzZWxlY3RlZEZpZWxkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiDooYzli77pgInnpoHnlKjlrZfmrrXlkI3jgILlrprkuYnlkI7lj5blvZPliY3ooYzor6XlrZfmrrXvvJpcbiAgICog5Li6IHRydWUg5pe256aB55So6K+l6KGM5Yu+6YCJ77yI5YWo6YCJ5Lmf5Lya6Lez6L+H77yJ44CCXG4gICAqL1xuICBASW5wdXQoKSBzZWxlY3REaXNhYmxlZEZpZWxkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiDooYzlpLHmlYjlrZfmrrXlkI3jgILlrprkuYnlkI7lj5blvZPliY3ooYzor6XlrZfmrrXvvJpcbiAgICog5Li6IHRydWUg5pe25pW06KGM6IOM5pmv6Imy5Li6ICNGN0Y4RkHjgIHmloflrZcgIzg2OEE5Q+OAglxuICAgKi9cbiAgQElucHV0KCkgcm93SW52YWxpZEZpZWxkOiBzdHJpbmc7XG4gIEBPdXRwdXQoKSBzZWxlY3RFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQENvbnRlbnRDaGlsZChcImRldGFpbExpbmVIZWFkXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBkZXRhaWxMaW5lSGVhZDogVGVtcGxhdGVSZWY8YW55PjtcbiAgQENvbnRlbnRDaGlsZChcImRldGFpbExpbmVCb2R5XCIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBkZXRhaWxMaW5lQm9keTogVGVtcGxhdGVSZWY8YW55PjtcbiAgLy8g5ZCI6K6h5Yy65Z+fXG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBzaG93VG90YWw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgdG90YWxPcHRpb246IEFycmF5PFRvdGFsT3B0aW9uPiA9IFtdO1xuICBASW5wdXQoKSBjb2x1bW5zTnVtYmVyOiBudW1iZXIgfCBzdHJpbmcgPSAwO1xuICBASW5wdXQoKSBoZEZyb250UGFnaW5hdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuICB0b3RhbE9wdGlvbkxpc3QgPSBbXTtcblxuICB0YWJsZURhdGE6IFBhZ2U8YW55PiA9IG5ldyBQYWdlKCk7XG4gIHRhYmxlTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICAvLyDooajmoLzliIbpobXlj4LmlbBcbiAgdGFibGVQYWdlSW5kZXg6IG51bWJlciA9IDE7XG4gIEBJbnB1dCgpIHRhYmxlUGFnZVNpemU6IG51bWJlciA9IDEwMDtcbiAgLy8g6KGo5qC85Yu+6YCJ5Y+C5pWwXG4gIGlzQWxsRGlzcGxheURhdGFDaGVja2VkID0gZmFsc2U7XG4gIGlzSW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuICBsaXN0T2ZEaXNwbGF5RGF0YSA9IFtdO1xuICBsaXN0T2ZBbGxEYXRhID0gW107XG4gIGxpc3RPZlNlbGVjdGlvbjogQXJyYXk8YW55PiB8IFRlbXBsYXRlUmVmPHZvaWQ+O1xuICBtYXBPZkNoZWNrZWRJZDogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcbiAgbWFwT2ZDaGVja0xpc3Q6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgZmlsdGVyU3RyOiBzdHJpbmc7XG4gIC8qKiDooajmoLzlrp7pmYXlsZXnpLrnmoTmlbDmja7vvIjnrZvpgInnu5PmnpzmiJblhajph4/vvIkgKi9cbiAgZGlzcGxheUxpbmVzOiBBcnJheTxhbnk+ID0gW107XG4gIC8qKiDmmK/lkKblpITkuo7nrZvpgInnirbmgIEgKi9cbiAgaXNGaWx0ZXJEYXRhID0gZmFsc2U7XG4gIHN0b3JlRm9ybUxpbmVzRGF0YTogYW55ID0gW107IC8vIOe8k+WtmOeahOaAu+eahOWIl+ihqOaVsOaNrlxuICAvKiog5o6n5Yi2IG56LXRhYmxlIOmHjeW7uu+8mnNjcm9sbC55IOS7juaXoOWIsOacieaXtuW/hemhu+mHjeW7uu+8jOWQpuWImeihqOWktOS4jei3n+aoqua7miAqL1xuICBzaG93VGFibGUgPSB0cnVlO1xuICBwcml2YXRlIHVuYmluZEJvZHlTY3JvbGw6ICgoKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBnZXQgZWZmZWN0aXZlU2Nyb2xsKCk6IHsgeD86IHN0cmluZzsgeT86IHN0cmluZyB9IHtcbiAgICAvLyDkuI3oh6rliqjooaUgbnpTY3JvbGwuee+8muaciSB5IOS8muaLhuihqOWktC/ooajkvZPvvIzml6DliJflrr3ml7bliJfplJnkvY3jgIJcbiAgICAvLyDku4XmnIkgeCDml7bnmoTnurXmu5rnlLEgbGVzc++8iG1heC1oZWlnaHQgKyBvdmVyZmxvdy1577yJ5om/5ouF77yM6KGo5aS0IHN0aWNreeOAglxuICAgIC8vIOS7heW9k+eItue7hOS7tuaYvuW8j+S8oOS6hiBzY3JvbGwueSDml7bmiY3otbAgbnotdGFibGUg5YiG5L2T57q15rua44CCXG4gICAgcmV0dXJuIHRoaXMuc2Nyb2xsICE9IG51bGwgPyB0aGlzLnNjcm9sbCA6IHRoaXMudGFibGVTY3JvbGw7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN5bmNTdG9yZUZyb21MaW5lc0lucHV0KCk7XG4gICAgdGhpcy5hcHBseURpc3BsYXlGcm9tU3RvcmUoKTtcbiAgICB0aGlzLmNvdW50U2VsZWN0ZWQoKTtcbiAgICB0aGlzLmNhbGN1bGF0ZVRvdGFsKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zY2hlZHVsZVN5bmNIb3Jpem9udGFsU2Nyb2xsKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnVuYmluZEhlYWRlckJvZHlTY3JvbGxTeW5jKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbXCJsaW5lc1wiXSkge1xuICAgICAgaWYgKCF0aGlzLmlzRmlsdGVyRGF0YSkge1xuICAgICAgICB0aGlzLnN5bmNTdG9yZUZyb21MaW5lc0lucHV0KCk7XG4gICAgICAgIHRoaXMuZGlzcGxheUxpbmVzID0gdGhpcy5saW5lcyB8fCBbXTtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICF0aGlzLnN0b3JlRm9ybUxpbmVzRGF0YSB8fFxuICAgICAgICB0aGlzLnN0b3JlRm9ybUxpbmVzRGF0YS5sZW5ndGggPT09IDBcbiAgICAgICkge1xuICAgICAgICB0aGlzLnN5bmNTdG9yZUZyb21MaW5lc0lucHV0KCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY291bnRTZWxlY3RlZCgpO1xuICAgIHRoaXMuY2FsY3VsYXRlVG90YWwoKTtcbiAgICBpZiAoY2hhbmdlc1tcImxpbmVzXCJdIHx8IGNoYW5nZXNbXCJzaG93U2VsZWN0ZWRcIl0pIHtcbiAgICAgIHRoaXMuc2NoZWR1bGVTeW5jSG9yaXpvbnRhbFNjcm9sbCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2NoZWR1bGVTeW5jSG9yaXpvbnRhbFNjcm9sbChyZXRyeSA9IDApOiB2b2lkIHtcbiAgICBjb25zdCBkZWxheSA9IHJldHJ5ID09PSAwID8gMCA6IDUwO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuc2Nyb2xsID09IG51bGwpIHtcbiAgICAgICAgdGhpcy5zeW5jSG9yaXpvbnRhbFNjcm9sbCgpO1xuICAgICAgfVxuICAgICAgdGhpcy5iaW5kSGVhZGVyQm9keVNjcm9sbFN5bmMoMCk7XG4gICAgICBjb25zdCBhZnRlclggPVxuICAgICAgICAodGhpcy5lZmZlY3RpdmVTY3JvbGwgJiYgdGhpcy5lZmZlY3RpdmVTY3JvbGwueCkgfHxcbiAgICAgICAgKHRoaXMudGFibGVTY3JvbGwgJiYgdGhpcy50YWJsZVNjcm9sbC54KTtcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5zY3JvbGwgPT0gbnVsbCAmJlxuICAgICAgICByZXRyeSA8IDUgJiZcbiAgICAgICAgdGhpcy5kaXNwbGF5TGluZXMgJiZcbiAgICAgICAgdGhpcy5kaXNwbGF5TGluZXMubGVuZ3RoID4gMCAmJlxuICAgICAgICAhYWZ0ZXJYICYmXG4gICAgICAgIG1lYXN1cmVUYWJsZUNvbFdpZHRoKHRoaXMubnpUYWJsZUNvbXBvbmVudCkgPT09IDBcbiAgICAgICkge1xuICAgICAgICB0aGlzLnNjaGVkdWxlU3luY0hvcml6b250YWxTY3JvbGwocmV0cnkgKyAxKTtcbiAgICAgIH1cbiAgICB9LCBkZWxheSk7XG4gIH1cblxuICBwcml2YXRlIHN5bmNIb3Jpem9udGFsU2Nyb2xsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNjcm9sbCAhPSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGhhc0RhdGEgPSAhISh0aGlzLmRpc3BsYXlMaW5lcyAmJiB0aGlzLmRpc3BsYXlMaW5lcy5sZW5ndGgpO1xuICAgIGNvbnN0IG5leHRTY3JvbGwgPSByZXNvbHZlQXV0b1RhYmxlU2Nyb2xsKFxuICAgICAgdGhpcy5uelRhYmxlQ29tcG9uZW50LFxuICAgICAgaGFzRGF0YSxcbiAgICApO1xuICAgIGNvbnN0IG5leHRYID0gbmV4dFNjcm9sbCA/IG5leHRTY3JvbGwueCA6IG51bGw7XG4gICAgLy8g6Ieq5Yqo5rWL566X5Y+q6K6+IHjvvIzkuI3orr4gee+8iOS4jiAyLjEuNjQg5YmN5LiA6Ie077yM6YG/5YWN5peg5YiX5a695pe26KGo5aS0L+ihqOS9k+mUmeS9je+8iVxuICAgIGlmICh0aGlzLnRhYmxlU2Nyb2xsICYmIHRoaXMudGFibGVTY3JvbGwueCA9PT0gbmV4dFggJiYgIXRoaXMudGFibGVTY3JvbGwueSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBwcmV2SGFzWSA9ICEhKHRoaXMudGFibGVTY3JvbGwgJiYgdGhpcy50YWJsZVNjcm9sbC55KTtcbiAgICB0aGlzLnRhYmxlU2Nyb2xsID0gbmV4dFggPyB7IHg6IG5leHRYIH0gOiBudWxsO1xuICAgIGlmIChwcmV2SGFzWSkge1xuICAgICAgdGhpcy5yZW1vdW50VGFibGUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgdGhpcy5iaW5kSGVhZGVyQm9keVNjcm9sbFN5bmMoMCk7XG4gIH1cblxuICAvKiog6YeN5bu6IG56LXRhYmxl77yM6K6pIGhlYWRlci9ib2R5IOa7muWKqOWQjOatpeWcqCBBZnRlclZpZXdJbml0IOmHjeaWsOe7keWumiAqL1xuICBwcml2YXRlIHJlbW91bnRUYWJsZSgpOiB2b2lkIHtcbiAgICB0aGlzLnVuYmluZEhlYWRlckJvZHlTY3JvbGxTeW5jKCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNob3dUYWJsZSA9IGZhbHNlO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5zaG93VGFibGUgPSB0cnVlO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmJpbmRIZWFkZXJCb2R5U2Nyb2xsU3luYygwKSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiDooajkvZPmqKrmu5rml7blkIzmraXooajlpLTvvIjlhZzlupUgbmctem9ycm8g55uR5ZCs5Lii5aSx77yJ77ybRE9NIOacquWwsee7quaXtumHjeivlSAqL1xuICBwcml2YXRlIGJpbmRIZWFkZXJCb2R5U2Nyb2xsU3luYyhyZXRyeSA9IDApOiB2b2lkIHtcbiAgICB0aGlzLnVuYmluZEhlYWRlckJvZHlTY3JvbGxTeW5jKCk7XG4gICAgaWYgKCF0aGlzLm56VGFibGVDb21wb25lbnQgfHwgISh0aGlzLmVmZmVjdGl2ZVNjcm9sbCAmJiB0aGlzLmVmZmVjdGl2ZVNjcm9sbC54KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB1bmJpbmQgPSBiaW5kTnpUYWJsZUhlYWRlckJvZHlTY3JvbGxTeW5jKHRoaXMubnpUYWJsZUNvbXBvbmVudCk7XG4gICAgaWYgKHVuYmluZCkge1xuICAgICAgdGhpcy51bmJpbmRCb2R5U2Nyb2xsID0gdW5iaW5kO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocmV0cnkgPCA4KSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuYmluZEhlYWRlckJvZHlTY3JvbGxTeW5jKHJldHJ5ICsgMSksIDUwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVuYmluZEhlYWRlckJvZHlTY3JvbGxTeW5jKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnVuYmluZEJvZHlTY3JvbGwpIHtcbiAgICAgIHRoaXMudW5iaW5kQm9keVNjcm9sbCgpO1xuICAgICAgdGhpcy51bmJpbmRCb2R5U2Nyb2xsID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN5bmNTdG9yZUZyb21MaW5lc0lucHV0KHNvdXJjZT86IEFycmF5PGFueT4pOiB2b2lkIHtcbiAgICBjb25zdCBkYXRhID0gc291cmNlIHx8IHRoaXMubGluZXM7XG4gICAgdGhpcy5zdG9yZUZvcm1MaW5lc0RhdGEgPSBkYXRhID8gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkYXRhKSkgOiBbXTtcbiAgfVxuXG4gIC8qKiDmnKrnrZvpgInml7bkuI7niLbnu4Tku7YgbGluZXMg5ZCM5rqQ77yM6YG/5YWN5qih5p2/5YaFIG5nTW9kZWwg5LiO54i25pWw5o2u6ISx6IqCICovXG4gIHByaXZhdGUgYXBwbHlEaXNwbGF5RnJvbVN0b3JlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxpbmVzICYmIHRoaXMubGluZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5kaXNwbGF5TGluZXMgPSB0aGlzLmxpbmVzO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRpc3BsYXlMaW5lcyA9IHRoaXMuc3RvcmVGb3JtTGluZXNEYXRhXG4gICAgICA/IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5zdG9yZUZvcm1MaW5lc0RhdGEpKVxuICAgICAgOiBbXTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzdG9yZUZyb21TdG9yZSgpOiB2b2lkIHtcbiAgICB0aGlzLmlzRmlsdGVyRGF0YSA9IGZhbHNlO1xuICAgIHRoaXMuYXBwbHlEaXNwbGF5RnJvbVN0b3JlKCk7XG4gICAgdGhpcy50YWJsZUxvYWRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmNvdW50U2VsZWN0ZWQoKTtcbiAgICB0aGlzLmNhbGN1bGF0ZVRvdGFsKCk7XG4gICAgdGhpcy5zY2hlZHVsZVN5bmNIb3Jpem9udGFsU2Nyb2xsKCk7XG4gIH1cblxuICAvLyDlhajlsYDmgKfnmoTmkJzntKLvvIjmtrXnm5bpobXpnaLkuIrmiYDmnInnmoTlj6/op4bmloflrZfvvIlcbiAgc2VhcmNoTGluZXMoKSB7XG4gICAgLy8g5riF56m65pCc57Si77ya5Y2z5L2/5b2T5YmN5bGV56S65Li656m65Lmf6KaB6IO95LuO57yT5a2Y5oGi5aSN77yI5a+56b2QIGhkLWZvcm0tbGluZXPvvIlcbiAgICBpZiAoIXRoaXMuZmlsdGVyU3RyIHx8ICF0aGlzLmZpbHRlclN0ci50cmltKCkpIHtcbiAgICAgIGlmICghdGhpcy5zdG9yZUZvcm1MaW5lc0RhdGEgfHwgdGhpcy5zdG9yZUZvcm1MaW5lc0RhdGEubGVuZ3RoIDwgMSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnRhYmxlTG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLnJlc3RvcmVGcm9tU3RvcmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnN0b3JlRm9ybUxpbmVzRGF0YSB8fCB0aGlzLnN0b3JlRm9ybUxpbmVzRGF0YS5sZW5ndGggPCAxKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMudGFibGVMb2FkaW5nID0gdHJ1ZTtcbiAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHRoaXMuZmlsdGVyU3RyLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgIHRoaXMuaXNGaWx0ZXJEYXRhID0gdHJ1ZTtcblxuICAgIGNvbnN0IGZpbHRlcmVkRGF0YSA9IHRoaXMuc3RvcmVGb3JtTGluZXNEYXRhLmZpbHRlcigoZGF0YTogYW55KSA9PiB7XG4gICAgICBpZiAoIXRoaXMuc2VhcmNoRmllbGRzIHx8IHRoaXMuc2VhcmNoRmllbGRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgT2JqZWN0LmtleXMoZGF0YSkpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBkYXRhW2l0ZW1dICYmXG4gICAgICAgICAgICBkYXRhW2l0ZW1dLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5zZWFyY2hGaWVsZHMpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGRhdGFbaXRlbV0gJiZcbiAgICAgICAgICBkYXRhW2l0ZW1dLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcbiAgICB0aGlzLmRpc3BsYXlMaW5lcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZmlsdGVyZWREYXRhKSk7XG4gICAgdGhpcy50YWJsZUxvYWRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmNvdW50U2VsZWN0ZWQoKTtcbiAgICB0aGlzLmNhbGN1bGF0ZVRvdGFsKCk7XG4gICAgdGhpcy5zY2hlZHVsZVN5bmNIb3Jpem9udGFsU2Nyb2xsKCk7XG4gIH1cblxuICBwcml2YXRlIGNvdW50U2VsZWN0ZWQoKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5zaG93U2VsZWN0ZWQgJiZcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWVsZCAmJlxuICAgICAgdGhpcy5kaXNwbGF5TGluZXMgJiZcbiAgICAgIHRoaXMuZGlzcGxheUxpbmVzLmxlbmd0aFxuICAgICkge1xuICAgICAgdGhpcy5kaXNwbGF5TGluZXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBpZiAoaXRlbVt0aGlzLnNlbGVjdGVkRmllbGRdID09PSB0cnVlICYmICF0aGlzLmlzU2VsZWN0RGlzYWJsZWQoaXRlbSkpIHtcbiAgICAgICAgICB0aGlzLm1hcE9mQ2hlY2tlZElkW2l0ZW1bdGhpcy5zZWxlY3RGaWVsZF1dID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLm1hcE9mQ2hlY2tMaXN0W2l0ZW1bdGhpcy5zZWxlY3RGaWVsZF1dID0gaXRlbTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuZGlzcGxheUxpbmVzLmxlbmd0aCA9PT0gT2JqZWN0LmtleXModGhpcy5tYXBPZkNoZWNrTGlzdCkubGVuZ3RoXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5pc0FsbERpc3BsYXlEYXRhQ2hlY2tlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuaXNJbmRldGVybWluYXRlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXQgTG9kYXNoUm91bmQoKSB7XG4gICAgcmV0dXJuIHJvdW5kO1xuICB9XG5cbiAgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8c3RyaW5nW10+KTogdm9pZCB7XG4gICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMuZGlzcGxheUxpbmVzLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgIHRoaXMuZGlzcGxheUxpbmVzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmRpc3BsYXlMaW5lcykpO1xuICAgIGlmICghdGhpcy5pc0ZpbHRlckRhdGEpIHtcbiAgICAgIHRoaXMuc3RvcmVGb3JtTGluZXNEYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmRpc3BsYXlMaW5lcykpO1xuICAgIH1cbiAgfVxuXG4gIGNhbGN1bGF0ZVRvdGFsKCkge1xuICAgIC8vIOi/memHjOWkhOeQhuWQiOiuoeaVsOaNrlxuICAgIGlmICh0aGlzLnNob3dUb3RhbCAmJiB0aGlzLmRpc3BsYXlMaW5lcyAmJiB0aGlzLmRpc3BsYXlMaW5lcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMudG90YWxPcHRpb25MaXN0ID0gbmV3IEFycmF5KE51bWJlcih0aGlzLmNvbHVtbnNOdW1iZXIpIC0gMSkuZmlsbChcIlwiKTtcbiAgICAgIHRoaXMudG90YWxPcHRpb24uZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBpZiAoaXRlbS5pbnNlcnRJbmRleCAmJiAoaXRlbS5pbnNlcnRWYWx1ZSB8fCBpdGVtLmluc2VydFZhbHVlID09PSAwKSkge1xuICAgICAgICAgIHRoaXMudG90YWxPcHRpb25MaXN0W2l0ZW0uaW5zZXJ0SW5kZXggLSAxXSA9IHtcbiAgICAgICAgICAgIHZhbHVlOiBpdGVtLmluc2VydFZhbHVlLFxuICAgICAgICAgICAgYWxpZ246IGl0ZW0uYWxpZ24gfHwgXCJyaWdodFwiLFxuICAgICAgICAgICAgc2hvd0RlY2ltYWw6IGl0ZW0uc2hvd0RlY2ltYWwgfHwgZmFsc2UsXG4gICAgICAgICAgICBwcmVzZXJ2ZU51bWJlcjogaXRlbS5wcmVzZXJ2ZU51bWJlciAhPSBudWxsID8gaXRlbS5wcmVzZXJ2ZU51bWJlciA6IDIsXG4gICAgICAgICAgICBpc0hpZGU6IGl0ZW0uaXNIaWRlIHx8IGZhbHNlLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8vIOihqOagvOWLvumAiemAu+i+kVxuICBjdXJyZW50UGFnZURhdGFDaGFuZ2UoJGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RPZkRpc3BsYXlEYXRhID0gJGV2ZW50O1xuICAgIHRoaXMucmVmcmVzaFN0YXR1cygpO1xuICAgIHRoaXMuc2NoZWR1bGVTeW5jSG9yaXpvbnRhbFNjcm9sbCgpO1xuICB9XG5cbiAgcmVzZXRTdGF0dXMoKSB7XG4gICAgdGhpcy5pc0FsbERpc3BsYXlEYXRhQ2hlY2tlZCA9IGZhbHNlO1xuICAgIHRoaXMuaXNJbmRldGVybWluYXRlID0gZmFsc2U7XG4gICAgdGhpcy5tYXBPZkNoZWNrZWRJZCA9IHt9O1xuICAgIHRoaXMubWFwT2ZDaGVja0xpc3QgPSB7fTtcbiAgICB0aGlzLnNlbGVjdEV2ZW50LmVtaXQoW10pO1xuICB9XG5cbiAgcmVmcmVzaFN0YXR1cyhldmVudDogYm9vbGVhbiA9IGZhbHNlLCBkYXRhOiBhbnkgPSBudWxsKTogdm9pZCB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGlmIChldmVudCAmJiB0aGlzLmlzU2VsZWN0RGlzYWJsZWQoZGF0YSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5tYXBPZkNoZWNrZWRJZFtkYXRhW3RoaXMuc2VsZWN0RmllbGRdXSA9IGV2ZW50O1xuICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICF0aGlzLm1hcE9mQ2hlY2tMaXN0W2RhdGFbdGhpcy5zZWxlY3RGaWVsZF1dICYmXG4gICAgICAgICAgKHRoaXMubWFwT2ZDaGVja0xpc3RbZGF0YVt0aGlzLnNlbGVjdEZpZWxkXV0gPSBkYXRhKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubWFwT2ZDaGVja0xpc3RbZGF0YVt0aGlzLnNlbGVjdEZpZWxkXV0gJiZcbiAgICAgICAgICBkZWxldGUgdGhpcy5tYXBPZkNoZWNrTGlzdFtkYXRhW3RoaXMuc2VsZWN0RmllbGRdXTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3Qgc2VsZWN0YWJsZUxpc3QgPSB0aGlzLmxpc3RPZkRpc3BsYXlEYXRhLmZpbHRlcihcbiAgICAgIChpdGVtKSA9PiAhdGhpcy5pc1NlbGVjdERpc2FibGVkKGl0ZW0pLFxuICAgICk7XG4gICAgdGhpcy5pc0FsbERpc3BsYXlEYXRhQ2hlY2tlZCA9XG4gICAgICBzZWxlY3RhYmxlTGlzdC5sZW5ndGggPiAwICYmXG4gICAgICBzZWxlY3RhYmxlTGlzdC5ldmVyeSgoaXRlbSkgPT4gdGhpcy5tYXBPZkNoZWNrZWRJZFtpdGVtW3RoaXMuc2VsZWN0RmllbGRdXSk7XG4gICAgdGhpcy5pc0luZGV0ZXJtaW5hdGUgPVxuICAgICAgc2VsZWN0YWJsZUxpc3Quc29tZShcbiAgICAgICAgKGl0ZW0pID0+IHRoaXMubWFwT2ZDaGVja2VkSWRbaXRlbVt0aGlzLnNlbGVjdEZpZWxkXV0sXG4gICAgICApICYmICF0aGlzLmlzQWxsRGlzcGxheURhdGFDaGVja2VkO1xuICAgIC8vIOinpuWPkXNlbGVjdOS6i+S7tlxuICAgIGlmICh0aGlzLnNlbGVjdEV2ZW50KSB7XG4gICAgICB0aGlzLnNlbGVjdEV2ZW50LmVtaXQoT2JqZWN0LnZhbHVlcyh0aGlzLm1hcE9mQ2hlY2tMaXN0KSk7XG4gICAgfVxuICB9XG5cbiAgY2hlY2tBbGwodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmxpc3RPZkRpc3BsYXlEYXRhLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGlmICh0aGlzLmlzU2VsZWN0RGlzYWJsZWQoaXRlbSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICF0aGlzLm1hcE9mQ2hlY2tMaXN0W2l0ZW1bdGhpcy5zZWxlY3RGaWVsZF1dICYmXG4gICAgICAgICAgKHRoaXMubWFwT2ZDaGVja0xpc3RbaXRlbVt0aGlzLnNlbGVjdEZpZWxkXV0gPSBpdGVtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubWFwT2ZDaGVja0xpc3RbaXRlbVt0aGlzLnNlbGVjdEZpZWxkXV0gJiZcbiAgICAgICAgICBkZWxldGUgdGhpcy5tYXBPZkNoZWNrTGlzdFtpdGVtW3RoaXMuc2VsZWN0RmllbGRdXTtcbiAgICAgIH1cbiAgICAgIHRoaXMubWFwT2ZDaGVja2VkSWRbaXRlbVt0aGlzLnNlbGVjdEZpZWxkXV0gPSB2YWx1ZTtcbiAgICB9KTtcbiAgICB0aGlzLnJlZnJlc2hTdGF0dXMoKTtcbiAgfVxuXG4gIC8qKiDlvZPliY3ooYzmmK/lkKbnpoHnlKjli77pgIkgKi9cbiAgaXNTZWxlY3REaXNhYmxlZChkYXRhOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEoXG4gICAgICB0aGlzLnNlbGVjdERpc2FibGVkRmllbGQgJiZcbiAgICAgIGRhdGEgJiZcbiAgICAgIGRhdGFbdGhpcy5zZWxlY3REaXNhYmxlZEZpZWxkXSA9PT0gdHJ1ZVxuICAgICk7XG4gIH1cblxuICAvKiog5b2T5YmN6KGM5piv5ZCm5aSx5pWIICovXG4gIGlzSW52YWxpZFJvdyhkYXRhOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEoXG4gICAgICB0aGlzLnJvd0ludmFsaWRGaWVsZCAmJlxuICAgICAgZGF0YSAmJlxuICAgICAgZGF0YVt0aGlzLnJvd0ludmFsaWRGaWVsZF0gPT09IHRydWVcbiAgICApO1xuICB9XG59XG4iXX0=