@datarailsshared/datarailsshared 1.4.506 → 1.4.511

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.
Files changed (26) hide show
  1. package/bundles/datarailsshared-datarailsshared.umd.js +131 -36
  2. package/bundles/datarailsshared-datarailsshared.umd.js.map +1 -1
  3. package/datarailsshared-datarailsshared-1.4.511.tgz +0 -0
  4. package/datarailsshared-datarailsshared.metadata.json +1 -1
  5. package/esm2015/lib/date-tags/forecast-tag/forecast-tag.service.js +51 -0
  6. package/esm2015/lib/dr-dynamic-tag/dr-dynamic-tag.component.js +1 -1
  7. package/esm2015/lib/dr-inputs/dr-select/dr-select.component.js +1 -1
  8. package/esm2015/lib/dr-scenario/components/dr-scenario-configuration/dr-scenario-configuration.component.js +7 -5
  9. package/esm2015/lib/dr-scenario/consts/scenario-tags-config.js +8 -3
  10. package/esm2015/lib/dr-scenario/interfaces/scenario.js +1 -1
  11. package/esm2015/lib/dr-scenario/services/scenario.service.js +52 -23
  12. package/esm2015/lib/dr-tags/dr-tag.component.js +10 -9
  13. package/esm2015/lib/models/serverTags.js +2 -1
  14. package/esm2015/public-api.js +2 -1
  15. package/fesm2015/datarailsshared-datarailsshared.js +126 -39
  16. package/fesm2015/datarailsshared-datarailsshared.js.map +1 -1
  17. package/lib/date-tags/forecast-tag/forecast-tag.service.d.ts +7 -0
  18. package/lib/dr-scenario/components/dr-scenario-configuration/dr-scenario-configuration.component.d.ts +1 -0
  19. package/lib/dr-scenario/consts/scenario-tags-config.d.ts +1 -1
  20. package/lib/dr-scenario/interfaces/scenario.d.ts +1 -1
  21. package/lib/dr-scenario/services/scenario.service.d.ts +6 -3
  22. package/lib/dr-tags/dr-tag.component.d.ts +2 -0
  23. package/lib/models/serverTags.d.ts +1 -0
  24. package/package.json +1 -1
  25. package/public-api.d.ts +1 -0
  26. package/datarailsshared-datarailsshared-1.4.506.tgz +0 -0
@@ -0,0 +1,51 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { indexOf as _indexOf } from 'lodash';
3
+ export class ForecastTagService {
4
+ static getFiscalMonthFromDate(date, fiscalYearStartsFrom) {
5
+ const all_months = [];
6
+ for (let i = fiscalYearStartsFrom; i < 13; i++) {
7
+ all_months.push(i);
8
+ }
9
+ for (let i = 1; i < fiscalYearStartsFrom; i++) {
10
+ all_months.push(i);
11
+ }
12
+ return _indexOf(all_months, date.month() + ForecastTagService.MONTH_DIFF) + ForecastTagService.MONTH_DIFF;
13
+ }
14
+ static getFiscalYearFromDate(date, fiscalYearStartsFrom, fiscalYearBack) {
15
+ const month = date.month();
16
+ let fiscal_year = date.year();
17
+ if (!fiscalYearBack) {
18
+ if (month + 1 >= fiscalYearStartsFrom && fiscalYearStartsFrom !== 1) {
19
+ fiscal_year += 1;
20
+ }
21
+ }
22
+ else {
23
+ if (month + 1 < fiscalYearStartsFrom && fiscalYearStartsFrom !== 1) {
24
+ fiscal_year -= 1;
25
+ }
26
+ }
27
+ return fiscal_year;
28
+ }
29
+ static getForecastLabel(month) {
30
+ const forecastByMonth = {
31
+ 0: '0+12',
32
+ 1: '1+11',
33
+ 2: '2+10',
34
+ 3: '3+9',
35
+ 4: '4+8',
36
+ 5: '5+7',
37
+ 6: '6+6',
38
+ 7: '7+5',
39
+ 8: '8+4',
40
+ 9: '9+3',
41
+ 10: '10+2',
42
+ 11: '11+1',
43
+ };
44
+ return forecastByMonth[month - ForecastTagService.MONTH_DIFF];
45
+ }
46
+ }
47
+ ForecastTagService.MONTH_DIFF = 1;
48
+ ForecastTagService.decorators = [
49
+ { type: Injectable }
50
+ ];
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZWNhc3QtdGFnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kYXRlLXRhZ3MvZm9yZWNhc3QtdGFnL2ZvcmVjYXN0LXRhZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLE9BQU8sSUFBSSxRQUFRLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFHN0MsTUFBTSxPQUFPLGtCQUFrQjtJQUdwQixNQUFNLENBQUMsc0JBQXNCLENBQUMsSUFBWSxFQUFFLG9CQUE0QjtRQUMzRSxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFFdEIsS0FBSyxJQUFJLENBQUMsR0FBRyxvQkFBb0IsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzVDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdEI7UUFFRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDM0MsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN0QjtRQUVELE9BQU8sUUFBUSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsa0JBQWtCLENBQUMsVUFBVSxDQUFDLEdBQUcsa0JBQWtCLENBQUMsVUFBVSxDQUFDO0lBQzlHLENBQUM7SUFFTSxNQUFNLENBQUMscUJBQXFCLENBQUMsSUFBWSxFQUFFLG9CQUE0QixFQUFFLGNBQXVCO1FBQ25HLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzQixJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFOUIsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNqQixJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksb0JBQW9CLElBQUksb0JBQW9CLEtBQUssQ0FBQyxFQUFFO2dCQUNqRSxXQUFXLElBQUksQ0FBQyxDQUFDO2FBQ3BCO1NBQ0o7YUFBTTtZQUNILElBQUksS0FBSyxHQUFHLENBQUMsR0FBRyxvQkFBb0IsSUFBSSxvQkFBb0IsS0FBSyxDQUFDLEVBQUU7Z0JBQ2hFLFdBQVcsSUFBSSxDQUFDLENBQUM7YUFDcEI7U0FDSjtRQUVELE9BQU8sV0FBVyxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBYTtRQUN4QyxNQUFNLGVBQWUsR0FBRztZQUNwQixDQUFDLEVBQUUsTUFBTTtZQUNULENBQUMsRUFBRSxNQUFNO1lBQ1QsQ0FBQyxFQUFFLE1BQU07WUFDVCxDQUFDLEVBQUUsS0FBSztZQUNSLENBQUMsRUFBRSxLQUFLO1lBQ1IsQ0FBQyxFQUFFLEtBQUs7WUFDUixDQUFDLEVBQUUsS0FBSztZQUNSLENBQUMsRUFBRSxLQUFLO1lBQ1IsQ0FBQyxFQUFFLEtBQUs7WUFDUixDQUFDLEVBQUUsS0FBSztZQUNSLEVBQUUsRUFBRSxNQUFNO1lBQ1YsRUFBRSxFQUFFLE1BQU07U0FDYixDQUFDO1FBRUYsT0FBTyxlQUFlLENBQUMsS0FBSyxHQUFHLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7O0FBbER1Qiw2QkFBVSxHQUFHLENBQUMsQ0FBQzs7WUFGMUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBpbmRleE9mIGFzIF9pbmRleE9mIH0gZnJvbSAnbG9kYXNoJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZvcmVjYXN0VGFnU2VydmljZSB7XG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgTU9OVEhfRElGRiA9IDE7XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEZpc2NhbE1vbnRoRnJvbURhdGUoZGF0ZTogTW9tZW50LCBmaXNjYWxZZWFyU3RhcnRzRnJvbTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgYWxsX21vbnRocyA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSBmaXNjYWxZZWFyU3RhcnRzRnJvbTsgaSA8IDEzOyBpKyspIHtcbiAgICAgICAgICAgIGFsbF9tb250aHMucHVzaChpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgZmlzY2FsWWVhclN0YXJ0c0Zyb207IGkrKykge1xuICAgICAgICAgICAgYWxsX21vbnRocy5wdXNoKGkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIF9pbmRleE9mKGFsbF9tb250aHMsIGRhdGUubW9udGgoKSArIEZvcmVjYXN0VGFnU2VydmljZS5NT05USF9ESUZGKSArIEZvcmVjYXN0VGFnU2VydmljZS5NT05USF9ESUZGO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0RmlzY2FsWWVhckZyb21EYXRlKGRhdGU6IE1vbWVudCwgZmlzY2FsWWVhclN0YXJ0c0Zyb206IG51bWJlciwgZmlzY2FsWWVhckJhY2s6IGJvb2xlYW4pOiBudW1iZXIge1xuICAgICAgICBjb25zdCBtb250aCA9IGRhdGUubW9udGgoKTtcbiAgICAgICAgbGV0IGZpc2NhbF95ZWFyID0gZGF0ZS55ZWFyKCk7XG5cbiAgICAgICAgaWYgKCFmaXNjYWxZZWFyQmFjaykge1xuICAgICAgICAgICAgaWYgKG1vbnRoICsgMSA+PSBmaXNjYWxZZWFyU3RhcnRzRnJvbSAmJiBmaXNjYWxZZWFyU3RhcnRzRnJvbSAhPT0gMSkge1xuICAgICAgICAgICAgICAgIGZpc2NhbF95ZWFyICs9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAobW9udGggKyAxIDwgZmlzY2FsWWVhclN0YXJ0c0Zyb20gJiYgZmlzY2FsWWVhclN0YXJ0c0Zyb20gIT09IDEpIHtcbiAgICAgICAgICAgICAgICBmaXNjYWxfeWVhciAtPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpc2NhbF95ZWFyO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0Rm9yZWNhc3RMYWJlbChtb250aDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZm9yZWNhc3RCeU1vbnRoID0ge1xuICAgICAgICAgICAgMDogJzArMTInLFxuICAgICAgICAgICAgMTogJzErMTEnLFxuICAgICAgICAgICAgMjogJzIrMTAnLFxuICAgICAgICAgICAgMzogJzMrOScsXG4gICAgICAgICAgICA0OiAnNCs4JyxcbiAgICAgICAgICAgIDU6ICc1KzcnLFxuICAgICAgICAgICAgNjogJzYrNicsXG4gICAgICAgICAgICA3OiAnNys1JyxcbiAgICAgICAgICAgIDg6ICc4KzQnLFxuICAgICAgICAgICAgOTogJzkrMycsXG4gICAgICAgICAgICAxMDogJzEwKzInLFxuICAgICAgICAgICAgMTE6ICcxMSsxJyxcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gZm9yZWNhc3RCeU1vbnRoW21vbnRoIC0gRm9yZWNhc3RUYWdTZXJ2aWNlLk1PTlRIX0RJRkZdO1xuICAgIH1cbn1cbiJdfQ==
@@ -86,7 +86,7 @@ DrDynamicTagComponent.decorators = [
86
86
  { type: Component, args: [{
87
87
  selector: 'dr-dynamic-tag',
88
88
  template: "<p class=\"dynamic-tag__label\">{{ tagConfig.name }}</p>\n<dr-select [(ngModel)]=\"selectedDynamicTag\"\n [class.dynamic-tag__locked]=\"isLockedTagSelected\"\n bindLabel=\"value\"\n bindValue=\"value\"\n [items]=\"currentValues\"\n [disabled]=\"disabled\"\n dropdownClass=\"dynamic-tag__select dr-tag__select\"\n (ngModelChange)=\"onTagChanged($event)\">\n <ng-template #optionHeaderTemplate *ngIf=\"isDynamicTagAddEnabled\">\n <dr-select-add-item bindValue=\"value\"\n [values]=\"currentValues\"\n [dynamicAddLabel]=\"' Add new ' + tagConfig.name\"\n (dynamicValueAdded)=\"onDynamicValueAdd($event)\"></dr-select-add-item>\n </ng-template>\n <ng-template #labelTemplate let-item=\"item\">\n <div class=\"dynamic-tag__field--label\">\n <p class=\"dynamic-tag__field__text\">{{ item?.value || item }}</p>\n <i *ngIf=\"item?.is_favorite\" class=\"dynamic-tag__field__icon dr-icon-star-fill\"></i>\n </div>\n </ng-template>\n <ng-template #optionTemplate let-item=\"item\">\n <div class=\"dynamic-tag__field--option\"\n [class.disabled]=\"lockedTags.includes(item?.value || item)\"\n (click)=\"onOptionClick($event, item?.value || item)\">\n <p class=\"dynamic-tag__field__text\">{{ item?.value || item }}</p>\n <i *ngIf=\"item?.is_favorite\" class=\"dynamic-tag__field__icon dr-icon-star-fill\"></i>\n </div>\n </ng-template>\n</dr-select>\n",
89
- styles: [".dynamic-tag__label{margin:0 0 4px;color:#0c142b;font-size:14px;font-weight:400;line-height:22px}.dynamic-tag__field,.dynamic-tag__field--option,.dynamic-tag__field--label{cursor:pointer;height:24px}.dynamic-tag__field--option{padding:8px 12px;width:100%;display:flex;justify-content:space-between;align-items:center}.dynamic-tag__field--option.disabled{opacity:.5;box-sizing:content-box}.dynamic-tag__field--label{display:flex;align-items:center}.dynamic-tag__field--label>.dynamic-tag__field__icon{position:absolute;right:25px}.dynamic-tag__field--label>dynamic-tag__field__text{margin:0}.dr-icon-star-fill{color:#f0bc57}::ng-deep dr-select.dynamic-tag__locked>ng-select>.ng-select-container{opacity:.4}::ng-deep .ng-option:has(.dynamic-tag__field--option){padding:0!important}\n"]
89
+ styles: [":host{flex-grow:1}.dynamic-tag__label{margin:0 0 4px;color:#0c142b;font-size:14px;font-weight:400;line-height:22px}.dynamic-tag__field,.dynamic-tag__field--option,.dynamic-tag__field--label{cursor:pointer;height:24px}.dynamic-tag__field--option{padding:8px 12px;width:100%;display:flex;justify-content:space-between;align-items:center}.dynamic-tag__field--option.disabled{opacity:.5;box-sizing:content-box}.dynamic-tag__field--label{display:flex;align-items:center}.dynamic-tag__field--label>.dynamic-tag__field__icon{position:absolute;right:25px}.dynamic-tag__field--label>dynamic-tag__field__text{margin:0}.dr-icon-star-fill{color:#f0bc57}::ng-deep dr-select.dynamic-tag__locked>ng-select>.ng-select-container{opacity:.4}::ng-deep .ng-option:has(.dynamic-tag__field--option){padding:0!important}\n"]
90
90
  },] }
91
91
  ];
92
92
  DrDynamicTagComponent.propDecorators = {
@@ -77,7 +77,7 @@ DrSelectComponent.decorators = [
77
77
  useExisting: DrSelectComponent,
78
78
  multi: true
79
79
  }],
80
- styles: ["@charset \"UTF-8\";:host{width:100%;height:32px}:host.textView::ng-deep{width:auto}:host.textView::ng-deep ng-select.ng-select .ng-select-container{border:none!important;cursor:pointer}:host.textView::ng-deep ng-select.ng-select .ng-select-container .ng-value-container{-webkit-text-decoration-line:underline;text-decoration-line:underline;color:#0b5af9}:host.textView::ng-deep ng-select.ng-select .ng-select-container .ng-arrow{border:none;width:auto;height:auto;display:flex;-webkit-text-decoration-line:none;text-decoration-line:none;top:0}:host.textView::ng-deep ng-select.ng-select .ng-select-container .ng-arrow:before{font-family:DataRails!important;content:\"\\ea15\";font-size:24px;color:#333}:host.no-left-border-radius ::ng-deep ng-select.ng-select .ng-select-container{border-bottom-left-radius:0!important;border-top-left-radius:0!important}:host.no-right-border-radius ::ng-deep ng-select.ng-select .ng-select-container{border-bottom-right-radius:0!important;border-top-right-radius:0!important}:host.no-right-border ::ng-deep ng-select.ng-select .ng-select-container{border-right:none!important}:host.no-left-border ::ng-deep ng-select.ng-select .ng-select-container{border-left:none!important}:host ::ng-deep ng-select.ng-select .ng-select-container{min-height:32px;height:32px;width:100%;border-radius:6px;border:1px solid #9EA1AA;box-shadow:none!important}:host ::ng-deep ng-select.ng-select .ng-select-container:hover{border-color:#4646ce}:host ::ng-deep ng-select.ng-select .ng-select-container:focus-within{border-color:#4646ce}:host ::ng-deep ng-select.ng-select .ng-select-container .ng-input{top:0!important;line-height:30px;padding:0 50px 0 8px!important;color:#333;font-size:14px;font-weight:400}:host ::ng-deep ng-select.ng-select .ng-select-container .ng-input input::placeholder{color:#6d6e6f;font-size:14px;line-height:18px}:host ::ng-deep ng-select.ng-select .ng-select-container .ng-value-container{padding:0 0 0 8px;height:100%;overflow:auto;font-size:14px;line-height:18px}:host ::ng-deep ng-select.ng-select .ng-select-container .ng-value-container .ng-input{padding:0 0 0 3px!important}:host ::ng-deep ng-select.ng-select .ng-select-container .ng-arrow-wrapper{margin-right:7px}:host ::ng-deep ng-select.ng-select .ng-select-container .ng-arrow-wrapper .ng-arrow{border:none;width:auto;height:auto;display:flex;-webkit-text-decoration-line:none;text-decoration-line:none;top:0}:host ::ng-deep ng-select.ng-select .ng-select-container .ng-arrow-wrapper .ng-arrow:before{font-family:DataRails!important;content:\"\\ea15\";font-size:24px;color:#6d6e6f}:host ::ng-deep ng-select.ng-select.ng-select-opened .ng-select-container{border-radius:6px}:host ::ng-deep ng-select.ng-select.ng-select-multiple .ng-select-container{max-height:58px;height:100%}:host ::ng-deep ng-select.ng-select.ng-select-multiple .ng-select-container .ng-value-container{max-height:58px;font-size:14px;line-height:18px}:host ::ng-deep ng-select.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{color:#333;height:24px;padding:2px 16px;font-size:12px;margin:2px 4px 2px 0;background:#F0F1F4;display:flex;flex-direction:row-reverse;align-items:center;border-radius:12px}:host ::ng-deep ng-select.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value-label{line-height:20px;padding:0!important}:host ::ng-deep ng-select.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value-icon{border:none!important;padding:0!important;width:20px;display:flex;align-items:center;color:transparent;margin-left:4px}:host ::ng-deep ng-select.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value-icon:before{font-family:DataRails!important;content:\"\\ea60\";font-size:20px;color:#333}:host ::ng-deep ng-select.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value-icon,:host ::ng-deep ng-select.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value-icon:hover{background:transparent!important}:host ::ng-deep ng-select.ng-select.ng-select-disabled .ng-select-container,:host ::ng-deep ng-select.ng-select.ng-select-disabled .ng-select-container:hover,:host ::ng-deep ng-select.ng-select.ng-select-disabled .ng-select-container:focus-within{background:#F0F1F4!important;border:1px solid #AEABAC!important}:host ::ng-deep ng-select.ng-select.ng-select-disabled .ng-select-container .ng-value,:host ::ng-deep ng-select.ng-select.ng-select-disabled .ng-select-container:hover .ng-value,:host ::ng-deep ng-select.ng-select.ng-select-disabled .ng-select-container:focus-within .ng-value{color:#aeabac!important}:host ::ng-deep ng-select.ng-select.ng-select-disabled .ng-select-container .ng-arrow{color:#aeabac}:host ::ng-deep ng-select.ng-select.ng-select-disabled .ng-select-container .ng-arrow:before{color:#aeabac}:host ::ng-deep ng-select.ng-select.ng-select-disabled .ng-select-container .ng-input input::placeholder{color:#aeabac}:host ::ng-deep ng-select.ng-select.ng-select-single.ng-invalid.ng-touched .ng-select-container,:host ::ng-deep ng-select.ng-select.ng-select-multiple.ng-invalid.ng-touched .ng-select-container{border-color:#bf1d30}:host.ng-invalid.ng-touched::ng-deep ng-select.ng-select .ng-select-container{border-color:#bf1d30}:host .dr-select__loading{position:relative;height:32px;width:24px}::ng-deep ng-dropdown-panel.ng-dropdown-panel.dr-select{border:1px solid #DFE0E3;border-radius:4px!important;margin:8px 0;box-shadow:0 4px 8px 1px #00000040;background-color:#fff;overflow:hidden;padding:8px 0}::ng-deep ng-dropdown-panel.ng-dropdown-panel.dr-select .ng-dropdown-panel-items .ng-option:empty{display:none}::ng-deep ng-dropdown-panel.ng-dropdown-panel.dr-select .ng-dropdown-panel-items .ng-option{display:flex;align-items:center;min-height:36px;padding:8px 12px;font-size:14px;line-height:22px;background:#FFFFFF}::ng-deep ng-dropdown-panel.ng-dropdown-panel.dr-select .ng-dropdown-panel-items .ng-option>.ng-option-label{text-overflow:ellipsis;overflow:hidden}::ng-deep ng-dropdown-panel.ng-dropdown-panel.dr-select .ng-dropdown-panel-items .ng-option.ng-option-marked{background:#F5F5F5}::ng-deep ng-dropdown-panel.ng-dropdown-panel.dr-select .ng-dropdown-panel-items .ng-option.ng-option-selected,::ng-deep ng-dropdown-panel.ng-dropdown-panel.dr-select .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked{background:#EAEAFF;color:#333}::ng-deep ng-dropdown-panel.ng-dropdown-panel.dr-select .ng-dropdown-panel-items .ng-option.ng-option-selected span,::ng-deep ng-dropdown-panel.ng-dropdown-panel.dr-select .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked span{font-weight:normal!important}::ng-deep ng-dropdown-panel.ng-dropdown-panel.dr-select .ng-dropdown-panel-items .ng-option-disabled{cursor:default}::ng-deep ng-dropdown-panel.ng-dropdown-panel.dr-select .ng-dropdown-panel-items .ng-option-disabled[role=group]{font-size:14px;line-height:22px;color:#aeabac;cursor:default}::ng-deep ng-dropdown-panel.ng-dropdown-panel.dr-select .ng-dropdown-panel-items .ng-option-disabled[role=group]:not(:first-of-type){border-top:1px solid #DFE0E3}::ng-deep ng-dropdown-panel.ng-dropdown-panel.dr-select .ng-dropdown-panel-items .ng-option-disabled[role=group]:hover{background:#FFFFFF}::ng-deep ng-dropdown-panel.ng-dropdown-panel.dr-select .dr-select__option-with-desc__wrapper{color:#333}::ng-deep ng-dropdown-panel.ng-dropdown-panel.dr-select .dr-select__option-with-desc__wrapper .dr-select__option-with-desc__description{max-width:97%;word-break:break-word;color:#6d6e6f;font-weight:400;font-size:12px;line-height:20px}::ng-deep ng-dropdown-panel.ng-dropdown-panel.dr-select.ng-option-selected .dr-select__option-with-desc__wrapper .dr-select__option-with-desc__description,::ng-deep ng-dropdown-panel.ng-dropdown-panel.dr-select.ng-option-selected.ng-option-marked .dr-select__option-with-desc__wrapper .dr-select__option-with-desc__description{color:#6d6e6f}\n"]
80
+ styles: ["@charset \"UTF-8\";:host{width:100%;height:32px}:host.textView::ng-deep{width:auto}:host.textView::ng-deep ng-select.ng-select .ng-select-container{border:none!important;cursor:pointer}:host.textView::ng-deep ng-select.ng-select .ng-select-container .ng-value-container{-webkit-text-decoration-line:underline;text-decoration-line:underline;color:#0b5af9}:host.textView::ng-deep ng-select.ng-select .ng-select-container .ng-arrow{border:none;width:auto;height:auto;display:flex;-webkit-text-decoration-line:none;text-decoration-line:none;top:0}:host.textView::ng-deep ng-select.ng-select .ng-select-container .ng-arrow:before{font-family:DataRails!important;content:\"\\ea15\";font-size:24px;color:#333}:host.no-left-border-radius ::ng-deep ng-select.ng-select .ng-select-container{border-bottom-left-radius:0!important;border-top-left-radius:0!important}:host.no-right-border-radius ::ng-deep ng-select.ng-select .ng-select-container{border-bottom-right-radius:0!important;border-top-right-radius:0!important}:host.no-right-border ::ng-deep ng-select.ng-select .ng-select-container{border-right:none!important}:host.no-left-border ::ng-deep ng-select.ng-select .ng-select-container{border-left:none!important}:host ::ng-deep ng-select.ng-select .ng-select-container{min-height:32px;height:32px;width:100%;border-radius:6px;border:1px solid #9EA1AA;box-shadow:none!important}:host ::ng-deep ng-select.ng-select .ng-select-container:hover{border-color:#4646ce}:host ::ng-deep ng-select.ng-select .ng-select-container:focus-within{border-color:#4646ce}:host ::ng-deep ng-select.ng-select .ng-select-container .ng-input{top:0!important;line-height:30px;padding:0 50px 0 8px!important;color:#333;font-size:14px;font-weight:400}:host ::ng-deep ng-select.ng-select .ng-select-container .ng-input input::placeholder{color:#6d6e6f;font-size:14px;line-height:18px}:host ::ng-deep ng-select.ng-select .ng-select-container .ng-value-container{padding:0 0 0 8px;height:100%;overflow:auto;font-size:14px;line-height:18px}:host ::ng-deep ng-select.ng-select .ng-select-container .ng-value-container .ng-input{padding:0 0 0 3px!important}:host ::ng-deep ng-select.ng-select .ng-select-container .ng-arrow-wrapper{margin-right:7px}:host ::ng-deep ng-select.ng-select .ng-select-container .ng-arrow-wrapper .ng-arrow{border:none;width:auto;height:auto;display:flex;-webkit-text-decoration-line:none;text-decoration-line:none;top:0}:host ::ng-deep ng-select.ng-select .ng-select-container .ng-arrow-wrapper .ng-arrow:before{font-family:DataRails!important;content:\"\\ea15\";font-size:24px;color:#6d6e6f}:host ::ng-deep ng-select.ng-select.ng-select-opened .ng-select-container{border-radius:6px}:host ::ng-deep ng-select.ng-select.ng-select-multiple .ng-select-container{max-height:58px;height:100%}:host ::ng-deep ng-select.ng-select.ng-select-multiple .ng-select-container .ng-value-container{max-height:58px;font-size:14px;line-height:18px}:host ::ng-deep ng-select.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{color:#333;height:24px;padding:2px 16px;font-size:12px;margin:2px 4px 2px 0;background:#F0F1F4;display:flex;flex-direction:row-reverse;align-items:center;border-radius:12px}:host ::ng-deep ng-select.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value-label{line-height:20px;padding:0!important}:host ::ng-deep ng-select.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value-icon{border:none!important;padding:0!important;width:20px;display:flex;align-items:center;color:transparent;margin-left:4px}:host ::ng-deep ng-select.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value-icon:before{font-family:DataRails!important;content:\"\\ea61\";font-size:20px;color:#333}:host ::ng-deep ng-select.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value-icon,:host ::ng-deep ng-select.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value-icon:hover{background:transparent!important}:host ::ng-deep ng-select.ng-select.ng-select-disabled .ng-select-container,:host ::ng-deep ng-select.ng-select.ng-select-disabled .ng-select-container:hover,:host ::ng-deep ng-select.ng-select.ng-select-disabled .ng-select-container:focus-within{background:#F0F1F4!important;border:1px solid #AEABAC!important}:host ::ng-deep ng-select.ng-select.ng-select-disabled .ng-select-container .ng-value,:host ::ng-deep ng-select.ng-select.ng-select-disabled .ng-select-container:hover .ng-value,:host ::ng-deep ng-select.ng-select.ng-select-disabled .ng-select-container:focus-within .ng-value{color:#aeabac!important}:host ::ng-deep ng-select.ng-select.ng-select-disabled .ng-select-container .ng-arrow{color:#aeabac}:host ::ng-deep ng-select.ng-select.ng-select-disabled .ng-select-container .ng-arrow:before{color:#aeabac}:host ::ng-deep ng-select.ng-select.ng-select-disabled .ng-select-container .ng-input input::placeholder{color:#aeabac}:host ::ng-deep ng-select.ng-select.ng-select-single.ng-invalid.ng-touched .ng-select-container,:host ::ng-deep ng-select.ng-select.ng-select-multiple.ng-invalid.ng-touched .ng-select-container{border-color:#bf1d30}:host.ng-invalid.ng-touched::ng-deep ng-select.ng-select .ng-select-container{border-color:#bf1d30}:host .dr-select__loading{position:relative;height:32px;width:24px}::ng-deep ng-dropdown-panel.ng-dropdown-panel.dr-select{border:1px solid #DFE0E3;border-radius:4px!important;margin:8px 0;box-shadow:0 4px 8px 1px #00000040;background-color:#fff;overflow:hidden;padding:8px 0}::ng-deep ng-dropdown-panel.ng-dropdown-panel.dr-select .ng-dropdown-panel-items .ng-option:empty{display:none}::ng-deep ng-dropdown-panel.ng-dropdown-panel.dr-select .ng-dropdown-panel-items .ng-option{display:flex;align-items:center;min-height:36px;padding:8px 12px;font-size:14px;line-height:22px;background:#FFFFFF}::ng-deep ng-dropdown-panel.ng-dropdown-panel.dr-select .ng-dropdown-panel-items .ng-option>.ng-option-label{text-overflow:ellipsis;overflow:hidden}::ng-deep ng-dropdown-panel.ng-dropdown-panel.dr-select .ng-dropdown-panel-items .ng-option.ng-option-marked{background:#F5F5F5}::ng-deep ng-dropdown-panel.ng-dropdown-panel.dr-select .ng-dropdown-panel-items .ng-option.ng-option-selected,::ng-deep ng-dropdown-panel.ng-dropdown-panel.dr-select .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked{background:#EAEAFF;color:#333}::ng-deep ng-dropdown-panel.ng-dropdown-panel.dr-select .ng-dropdown-panel-items .ng-option.ng-option-selected span,::ng-deep ng-dropdown-panel.ng-dropdown-panel.dr-select .ng-dropdown-panel-items .ng-option.ng-option-selected.ng-option-marked span{font-weight:normal!important}::ng-deep ng-dropdown-panel.ng-dropdown-panel.dr-select .ng-dropdown-panel-items .ng-option-disabled{cursor:default}::ng-deep ng-dropdown-panel.ng-dropdown-panel.dr-select .ng-dropdown-panel-items .ng-option-disabled[role=group]{font-size:14px;line-height:22px;color:#aeabac;cursor:default}::ng-deep ng-dropdown-panel.ng-dropdown-panel.dr-select .ng-dropdown-panel-items .ng-option-disabled[role=group]:not(:first-of-type){border-top:1px solid #DFE0E3}::ng-deep ng-dropdown-panel.ng-dropdown-panel.dr-select .ng-dropdown-panel-items .ng-option-disabled[role=group]:hover{background:#FFFFFF}::ng-deep ng-dropdown-panel.ng-dropdown-panel.dr-select .dr-select__option-with-desc__wrapper{color:#333}::ng-deep ng-dropdown-panel.ng-dropdown-panel.dr-select .dr-select__option-with-desc__wrapper .dr-select__option-with-desc__description{max-width:97%;word-break:break-word;color:#6d6e6f;font-weight:400;font-size:12px;line-height:20px}::ng-deep ng-dropdown-panel.ng-dropdown-panel.dr-select.ng-option-selected .dr-select__option-with-desc__wrapper .dr-select__option-with-desc__description,::ng-deep ng-dropdown-panel.ng-dropdown-panel.dr-select.ng-option-selected.ng-option-marked .dr-select__option-with-desc__wrapper .dr-select__option-with-desc__description{color:#6d6e6f}\n"]
81
81
  },] }
82
82
  ];
83
83
  DrSelectComponent.ctorParameters = () => [
@@ -11,6 +11,7 @@ export class DrScenarioConfigurationComponent {
11
11
  this._scenarioTags = [];
12
12
  this.wholeTagsConfig = [];
13
13
  this.isMultipleDimension = false;
14
+ this.isForecastMultipleDimension = false;
14
15
  this.scenarioDataChanged = new EventEmitter();
15
16
  }
16
17
  set selectedScenario(scenario) {
@@ -35,7 +36,7 @@ export class DrScenarioConfigurationComponent {
35
36
  }
36
37
  ngOnInit() {
37
38
  this.scenarios = this.scenarioService.scenarios;
38
- this.scenarioService.initScenarioTags(this.wholeTagsConfig, this.currentTagsConfig, this.isMultipleDimension);
39
+ this.scenarioService.initScenarioTags(this.wholeTagsConfig, this.currentTagsConfig, this.isMultipleDimension, this.isForecastMultipleDimension);
39
40
  this.scenarioTags = this.scenarioService.getScenarioTagsByScenario(this.selectedScenario);
40
41
  }
41
42
  onScenarioChange(scenario) {
@@ -68,16 +69,16 @@ export class DrScenarioConfigurationComponent {
68
69
  }
69
70
  tagAcceptableDateHandler(tag) {
70
71
  var _a;
71
- if (!((_a = tag.acceptableDateTags) === null || _a === void 0 ? void 0 : _a.length))
72
+ if (!((_a = tag.acceptableSubTags) === null || _a === void 0 ? void 0 : _a.length))
72
73
  return;
73
74
  const dateTag = this.dateTag;
74
75
  if (!dateTag)
75
76
  return;
76
77
  dateTag.subTags = _map(dateTag.subTags, (subTag) => {
77
- subTag.hidden = tag.toggle && !_includes(tag.acceptableDateTags, subTag.subType);
78
+ subTag.hidden = tag.toggle && !_includes(tag.acceptableSubTags, subTag.subType);
78
79
  return subTag;
79
80
  });
80
- dateTag.selectedTagSubType = tag.acceptableDateTags[0];
81
+ dateTag.selectedTagSubType = tag.acceptableSubTags[0];
81
82
  }
82
83
  }
83
84
  DrScenarioConfigurationComponent.decorators = [
@@ -97,6 +98,7 @@ DrScenarioConfigurationComponent.propDecorators = {
97
98
  wholeTagsConfig: [{ type: Input }],
98
99
  selectedScenario: [{ type: Input }],
99
100
  isMultipleDimension: [{ type: Input }],
101
+ isForecastMultipleDimension: [{ type: Input }],
100
102
  scenarioDataChanged: [{ type: Output }]
101
103
  };
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItc2NlbmFyaW8tY29uZmlndXJhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1zY2VuYXJpby9jb21wb25lbnRzL2RyLXNjZW5hcmlvLWNvbmZpZ3VyYXRpb24vZHItc2NlbmFyaW8tY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RyxPQUFPLEVBQWtCLFFBQVEsRUFBd0IsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUFRLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLFFBQVEsSUFBSSxTQUFTLEVBQUUsR0FBRyxJQUFJLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQVMxRixNQUFNLE9BQU8sZ0NBQWdDO0lBdUN6QyxZQUFvQixlQUFnQztRQUFoQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUF0QzdDLHFCQUFnQixHQUFHLGdCQUFnQixDQUFDO1FBR25DLGtCQUFhLEdBQXFCLEVBQUUsQ0FBQztRQUs3QixvQkFBZSxHQUFXLEVBQUUsQ0FBQztRQVM3Qix3QkFBbUIsR0FBWSxLQUFLLENBQUM7UUFFcEMsd0JBQW1CLEdBQXVDLElBQUksWUFBWSxFQUF3QixDQUFDO0lBb0JwSCxDQUFDO0lBOUJELElBQW9CLGdCQUFnQixDQUFDLFFBQWtCO1FBQ25ELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUM3QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQztZQUMxQyxPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsUUFBUSxDQUFDO0lBQ3RDLENBQUM7SUFLRCxJQUFXLGdCQUFnQjtRQUN2QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDO0lBQ3RELENBQUM7SUFFRCxJQUFXLFlBQVk7UUFDbkIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFXLFlBQVksQ0FBQyxJQUFzQjtRQUMxQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDZCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFLTSxRQUFRO1FBQ1gsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQztRQUNoRCxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzlHLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRU0sZ0JBQWdCLENBQUMsUUFBa0I7UUFDdEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLHlCQUF5QixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdFLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxHQUFtQjtRQUMxQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxvQkFBb0I7UUFDdkIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQztZQUMxQixRQUFRLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtZQUMvQixVQUFVLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUM7U0FDeEcsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLDRCQUE0QixDQUFDLEdBQW1CO1FBQ3BELElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTTtZQUFFLE9BQU87UUFFdkQsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxJQUFJLEVBQUU7WUFDNUIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7U0FDN0M7UUFFRCxJQUFJLEdBQUcsS0FBSyxJQUFJLENBQUMscUJBQXFCLEVBQUU7WUFDcEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUU3QixJQUFJLE9BQU8sRUFBRTtnQkFDVCxPQUFPLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQzthQUMxQjtTQUNKO0lBQ0wsQ0FBQztJQUVPLHdCQUF3QixDQUFDLEdBQW1COztRQUNoRCxJQUFJLENBQUMsQ0FBQSxNQUFBLEdBQUcsQ0FBQyxrQkFBa0IsMENBQUUsTUFBTSxDQUFBO1lBQUUsT0FBTztRQUM1QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBRTdCLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTztRQUVyQixPQUFPLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDL0MsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDakYsT0FBTyxNQUFNLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsa0JBQWtCLEdBQUcsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7OztZQXJHSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLDJCQUEyQjtnQkFDckMsZ3JEQUF5RDtnQkFFekQsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07Z0JBQy9DLFNBQVMsRUFBRSxDQUFDLGVBQWUsQ0FBQzs7YUFDL0I7OztZQVhRLGVBQWU7OztnQ0FvQm5CLEtBQUs7OEJBQ0wsS0FBSzsrQkFDTCxLQUFLO2tDQVFMLEtBQUs7a0NBRUwsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJU2NlbmFyaW9UYWdVaSwgU2NlbmFyaW8sIFRTY2VuYXJpb0RhdGFDaGFuZ2VkIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9zY2VuYXJpbyc7XG5pbXBvcnQgeyBTY2VuYXJpb1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zY2VuYXJpby5zZXJ2aWNlJztcbmltcG9ydCB7IElUYWcsIFRhZ1R5cGVzIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3NlcnZlclRhZ3MnO1xuaW1wb3J0IHsgZmluZCBhcyBfZmluZCwgaW5jbHVkZXMgYXMgX2luY2x1ZGVzLCBtYXAgYXMgX21hcCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBUb2dnbGVCdXR0b25Nb2RlIH0gZnJvbSAnLi4vLi4vLi4vZHItaW5wdXRzL2RyLXRvZ2dsZS1idXR0b24vdG9nZ2xlLWJ1dHRvbi1tb2RlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkci1zY2VuYXJpby1jb25maWd1cmF0aW9uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZHItc2NlbmFyaW8tY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZHItc2NlbmFyaW8tY29uZmlndXJhdGlvbi5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHByb3ZpZGVyczogW1NjZW5hcmlvU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgRHJTY2VuYXJpb0NvbmZpZ3VyYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHB1YmxpYyB0b2dnbGVCdXR0b25Nb2RlID0gVG9nZ2xlQnV0dG9uTW9kZTtcbiAgICBwdWJsaWMgc2NlbmFyaW9zOiBTY2VuYXJpb1tdO1xuXG4gICAgcHJpdmF0ZSBfc2NlbmFyaW9UYWdzOiBJU2NlbmFyaW9UYWdVaVtdID0gW107XG4gICAgcHJpdmF0ZSBfc2VsZWN0ZWRTY2VuYXJpbzogU2NlbmFyaW87XG4gICAgcHJpdmF0ZSB0YWdOb3RTdXBwb3J0aW5nRGF0ZXM6IElTY2VuYXJpb1RhZ1VpO1xuXG4gICAgQElucHV0KCkgcHVibGljIGN1cnJlbnRUYWdzQ29uZmlnOiBJVGFnW107XG4gICAgQElucHV0KCkgcHVibGljIHdob2xlVGFnc0NvbmZpZzogSVRhZ1tdID0gW107XG4gICAgQElucHV0KCkgcHVibGljIHNldCBzZWxlY3RlZFNjZW5hcmlvKHNjZW5hcmlvOiBTY2VuYXJpbykge1xuICAgICAgICBpZiAoIU9iamVjdC52YWx1ZXMoU2NlbmFyaW8pLmluY2x1ZGVzKHNjZW5hcmlvKSkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRTY2VuYXJpbyA9IFNjZW5hcmlvLkFDVFVBTFM7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9zZWxlY3RlZFNjZW5hcmlvID0gc2NlbmFyaW87XG4gICAgfVxuICAgIEBJbnB1dCgpIHB1YmxpYyBpc011bHRpcGxlRGltZW5zaW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBAT3V0cHV0KCkgcHVibGljIHNjZW5hcmlvRGF0YUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxUU2NlbmFyaW9EYXRhQ2hhbmdlZD4gPSBuZXcgRXZlbnRFbWl0dGVyPFRTY2VuYXJpb0RhdGFDaGFuZ2VkPigpO1xuXG4gICAgcHVibGljIGdldCBzZWxlY3RlZFNjZW5hcmlvKCk6IFNjZW5hcmlvIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkU2NlbmFyaW8gfHwgU2NlbmFyaW8uQUNUVUFMUztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHNjZW5hcmlvVGFncygpOiBJU2NlbmFyaW9UYWdVaVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NjZW5hcmlvVGFncztcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IHNjZW5hcmlvVGFncyh0YWdzOiBJU2NlbmFyaW9UYWdVaVtdKSB7XG4gICAgICAgIHRoaXMuX3NjZW5hcmlvVGFncyA9IHRhZ3M7XG4gICAgICAgIHRoaXMudGFnTm90U3VwcG9ydGluZ0RhdGVzID0gX2ZpbmQodGFncywgeyB0dXJuT2ZmRGF0ZVRhZ3M6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkYXRlVGFnKCk6IElTY2VuYXJpb1RhZ1VpIHtcbiAgICAgICAgcmV0dXJuIF9maW5kKHRoaXMuc2NlbmFyaW9UYWdzLCB7IHR5cGU6IFRhZ1R5cGVzLkRBVEUgfSk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBzY2VuYXJpb1NlcnZpY2U6IFNjZW5hcmlvU2VydmljZSkge1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zY2VuYXJpb3MgPSB0aGlzLnNjZW5hcmlvU2VydmljZS5zY2VuYXJpb3M7XG4gICAgICAgIHRoaXMuc2NlbmFyaW9TZXJ2aWNlLmluaXRTY2VuYXJpb1RhZ3ModGhpcy53aG9sZVRhZ3NDb25maWcsIHRoaXMuY3VycmVudFRhZ3NDb25maWcsIHRoaXMuaXNNdWx0aXBsZURpbWVuc2lvbik7XG4gICAgICAgIHRoaXMuc2NlbmFyaW9UYWdzID0gdGhpcy5zY2VuYXJpb1NlcnZpY2UuZ2V0U2NlbmFyaW9UYWdzQnlTY2VuYXJpbyh0aGlzLnNlbGVjdGVkU2NlbmFyaW8pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblNjZW5hcmlvQ2hhbmdlKHNjZW5hcmlvOiBTY2VuYXJpbyk6IHZvaWQge1xuICAgICAgICB0aGlzLnNjZW5hcmlvVGFncyA9IHRoaXMuc2NlbmFyaW9TZXJ2aWNlLmdldFNjZW5hcmlvVGFnc0J5U2NlbmFyaW8oc2NlbmFyaW8pO1xuICAgICAgICB0aGlzLm9uU2NlbmFyaW9EYXRhQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uU2NlbmFyaW9UYWdUb2dnbGUodGFnOiBJU2NlbmFyaW9UYWdVaSk6IHZvaWQge1xuICAgICAgICB0aGlzLnRhZ05vdFN1cHBvcnRpbmdEYXRlc0hhbmRsZXIodGFnKTtcbiAgICAgICAgdGhpcy50YWdBY2NlcHRhYmxlRGF0ZUhhbmRsZXIodGFnKTtcbiAgICAgICAgdGhpcy5vblNjZW5hcmlvRGF0YUNoYW5nZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblNjZW5hcmlvRGF0YUNoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zY2VuYXJpb0RhdGFDaGFuZ2VkLmVtaXQoe1xuICAgICAgICAgICAgc2NlbmFyaW86IHRoaXMuc2VsZWN0ZWRTY2VuYXJpbyxcbiAgICAgICAgICAgIHRhZ3NDb25maWc6IHRoaXMuc2NlbmFyaW9TZXJ2aWNlLmdldFRhZ3NDb25maWdCeVNjZW5hcmlvVGFncyh0aGlzLnNjZW5hcmlvVGFncywgdGhpcy53aG9sZVRhZ3NDb25maWcpLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRhZ05vdFN1cHBvcnRpbmdEYXRlc0hhbmRsZXIodGFnOiBJU2NlbmFyaW9UYWdVaSk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMudGFnTm90U3VwcG9ydGluZ0RhdGVzIHx8ICF0YWcudG9nZ2xlKSByZXR1cm47XG5cbiAgICAgICAgaWYgKHRhZy50eXBlID09PSBUYWdUeXBlcy5EQVRFKSB7XG4gICAgICAgICAgICB0aGlzLnRhZ05vdFN1cHBvcnRpbmdEYXRlcy50b2dnbGUgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0YWcgPT09IHRoaXMudGFnTm90U3VwcG9ydGluZ0RhdGVzKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRlVGFnID0gdGhpcy5kYXRlVGFnO1xuXG4gICAgICAgICAgICBpZiAoZGF0ZVRhZykge1xuICAgICAgICAgICAgICAgIGRhdGVUYWcudG9nZ2xlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHRhZ0FjY2VwdGFibGVEYXRlSGFuZGxlcih0YWc6IElTY2VuYXJpb1RhZ1VpKSB7XG4gICAgICAgIGlmICghdGFnLmFjY2VwdGFibGVEYXRlVGFncz8ubGVuZ3RoKSByZXR1cm47XG4gICAgICAgIGNvbnN0IGRhdGVUYWcgPSB0aGlzLmRhdGVUYWc7XG5cbiAgICAgICAgaWYgKCFkYXRlVGFnKSByZXR1cm47XG5cbiAgICAgICAgZGF0ZVRhZy5zdWJUYWdzID0gX21hcChkYXRlVGFnLnN1YlRhZ3MsIChzdWJUYWcpID0+IHtcbiAgICAgICAgICAgIHN1YlRhZy5oaWRkZW4gPSB0YWcudG9nZ2xlICYmICFfaW5jbHVkZXModGFnLmFjY2VwdGFibGVEYXRlVGFncywgc3ViVGFnLnN1YlR5cGUpO1xuICAgICAgICAgICAgcmV0dXJuIHN1YlRhZztcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZGF0ZVRhZy5zZWxlY3RlZFRhZ1N1YlR5cGUgPSB0YWcuYWNjZXB0YWJsZURhdGVUYWdzWzBdO1xuICAgIH1cbn1cbiJdfQ==
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHItc2NlbmFyaW8tY29uZmlndXJhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1zY2VuYXJpby9jb21wb25lbnRzL2RyLXNjZW5hcmlvLWNvbmZpZ3VyYXRpb24vZHItc2NlbmFyaW8tY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RyxPQUFPLEVBQWtCLFFBQVEsRUFBd0IsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUFRLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLFFBQVEsSUFBSSxTQUFTLEVBQUUsR0FBRyxJQUFJLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQVMxRixNQUFNLE9BQU8sZ0NBQWdDO0lBd0N6QyxZQUFvQixlQUFnQztRQUFoQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUF2QzdDLHFCQUFnQixHQUFHLGdCQUFnQixDQUFDO1FBR25DLGtCQUFhLEdBQXFCLEVBQUUsQ0FBQztRQUs3QixvQkFBZSxHQUFXLEVBQUUsQ0FBQztRQVM3Qix3QkFBbUIsR0FBWSxLQUFLLENBQUM7UUFDckMsZ0NBQTJCLEdBQVksS0FBSyxDQUFDO1FBRTVDLHdCQUFtQixHQUF1QyxJQUFJLFlBQVksRUFBd0IsQ0FBQztJQW9CcEgsQ0FBQztJQS9CRCxJQUFvQixnQkFBZ0IsQ0FBQyxRQUFrQjtR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RSxNQUFNLENBQUE7WUFBRSxPQUFPO1FBQzNDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFFN0IsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBRXJCLE9BQU8sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUMvQyxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNoRixPQUFPLE1BQU0sQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxrQkFBa0IsR0FBRyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUQsQ0FBQzs7O1lBdEdKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsMkJBQTJCO2dCQUNyQyxnckRBQXlEO2dCQUV6RCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtnQkFDL0MsU0FBUyxFQUFFLENBQUMsZUFBZSxDQUFDOzthQUMvQjs7O1lBWFEsZUFBZTs7O2dDQW9CbkIsS0FBSzs4QkFDTCxLQUFLOytCQUNMLEtBQUs7a0NBUUwsS0FBSzswQ0FDTCxLQUFLO2tDQUVMLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSVNjZW5hcmlvVGFnVWksIFNjZW5hcmlvLCBUU2NlbmFyaW9EYXRhQ2hhbmdlZCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvc2NlbmFyaW8nO1xuaW1wb3J0IHsgU2NlbmFyaW9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2NlbmFyaW8uc2VydmljZSc7XG5pbXBvcnQgeyBJVGFnLCBUYWdUeXBlcyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9zZXJ2ZXJUYWdzJztcbmltcG9ydCB7IGZpbmQgYXMgX2ZpbmQsIGluY2x1ZGVzIGFzIF9pbmNsdWRlcywgbWFwIGFzIF9tYXAgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgVG9nZ2xlQnV0dG9uTW9kZSB9IGZyb20gJy4uLy4uLy4uL2RyLWlucHV0cy9kci10b2dnbGUtYnV0dG9uL3RvZ2dsZS1idXR0b24tbW9kZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZHItc2NlbmFyaW8tY29uZmlndXJhdGlvbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RyLXNjZW5hcmlvLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2RyLXNjZW5hcmlvLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtTY2VuYXJpb1NlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIERyU2NlbmFyaW9Db25maWd1cmF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBwdWJsaWMgdG9nZ2xlQnV0dG9uTW9kZSA9IFRvZ2dsZUJ1dHRvbk1vZGU7XG4gICAgcHVibGljIHNjZW5hcmlvczogU2NlbmFyaW9bXTtcblxuICAgIHByaXZhdGUgX3NjZW5hcmlvVGFnczogSVNjZW5hcmlvVGFnVWlbXSA9IFtdO1xuICAgIHByaXZhdGUgX3NlbGVjdGVkU2NlbmFyaW86IFNjZW5hcmlvO1xuICAgIHByaXZhdGUgdGFnTm90U3VwcG9ydGluZ0RhdGVzOiBJU2NlbmFyaW9UYWdVaTtcblxuICAgIEBJbnB1dCgpIHB1YmxpYyBjdXJyZW50VGFnc0NvbmZpZzogSVRhZ1tdO1xuICAgIEBJbnB1dCgpIHB1YmxpYyB3aG9sZVRhZ3NDb25maWc6IElUYWdbXSA9IFtdO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBzZXQgc2VsZWN0ZWRTY2VuYXJpbyhzY2VuYXJpbzogU2NlbmFyaW8pIHtcbiAgICAgICAgaWYgKCFPYmplY3QudmFsdWVzKFNjZW5hcmlvKS5pbmNsdWRlcyhzY2VuYXJpbykpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkU2NlbmFyaW8gPSBTY2VuYXJpby5BQ1RVQUxTO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRTY2VuYXJpbyA9IHNjZW5hcmlvO1xuICAgIH1cbiAgICBASW5wdXQoKSBwdWJsaWMgaXNNdWx0aXBsZURpbWVuc2lvbjogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpc0ZvcmVjYXN0TXVsdGlwbGVEaW1lbnNpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBPdXRwdXQoKSBwdWJsaWMgc2NlbmFyaW9EYXRhQ2hhbmdlZDogRXZlbnRFbWl0dGVyPFRTY2VuYXJpb0RhdGFDaGFuZ2VkPiA9IG5ldyBFdmVudEVtaXR0ZXI8VFNjZW5hcmlvRGF0YUNoYW5nZWQ+KCk7XG5cbiAgICBwdWJsaWMgZ2V0IHNlbGVjdGVkU2NlbmFyaW8oKTogU2NlbmFyaW8ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRTY2VuYXJpbyB8fCBTY2VuYXJpby5BQ1RVQUxTO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc2NlbmFyaW9UYWdzKCk6IElTY2VuYXJpb1RhZ1VpW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2NlbmFyaW9UYWdzO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgc2NlbmFyaW9UYWdzKHRhZ3M6IElTY2VuYXJpb1RhZ1VpW10pIHtcbiAgICAgICAgdGhpcy5fc2NlbmFyaW9UYWdzID0gdGFncztcbiAgICAgICAgdGhpcy50YWdOb3RTdXBwb3J0aW5nRGF0ZXMgPSBfZmluZCh0YWdzLCB7IHR1cm5PZmZEYXRlVGFnczogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRhdGVUYWcoKTogSVNjZW5hcmlvVGFnVWkge1xuICAgICAgICByZXR1cm4gX2ZpbmQodGhpcy5zY2VuYXJpb1RhZ3MsIHsgdHlwZTogVGFnVHlwZXMuREFURSB9KTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNjZW5hcmlvU2VydmljZTogU2NlbmFyaW9TZXJ2aWNlKSB7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNjZW5hcmlvcyA9IHRoaXMuc2NlbmFyaW9TZXJ2aWNlLnNjZW5hcmlvcztcbiAgICAgICAgdGhpcy5zY2VuYXJpb1NlcnZpY2UuaW5pdFNjZW5hcmlvVGFncyh0aGlzLndob2xlVGFnc0NvbmZpZywgdGhpcy5jdXJyZW50VGFnc0NvbmZpZywgdGhpcy5pc011bHRpcGxlRGltZW5zaW9uLCB0aGlzLmlzRm9yZWNhc3RNdWx0aXBsZURpbWVuc2lvbik7XG4gICAgICAgIHRoaXMuc2NlbmFyaW9UYWdzID0gdGhpcy5zY2VuYXJpb1NlcnZpY2UuZ2V0U2NlbmFyaW9UYWdzQnlTY2VuYXJpbyh0aGlzLnNlbGVjdGVkU2NlbmFyaW8pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblNjZW5hcmlvQ2hhbmdlKHNjZW5hcmlvOiBTY2VuYXJpbyk6IHZvaWQge1xuICAgICAgICB0aGlzLnNjZW5hcmlvVGFncyA9IHRoaXMuc2NlbmFyaW9TZXJ2aWNlLmdldFNjZW5hcmlvVGFnc0J5U2NlbmFyaW8oc2NlbmFyaW8pO1xuICAgICAgICB0aGlzLm9uU2NlbmFyaW9EYXRhQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uU2NlbmFyaW9UYWdUb2dnbGUodGFnOiBJU2NlbmFyaW9UYWdVaSk6IHZvaWQge1xuICAgICAgICB0aGlzLnRhZ05vdFN1cHBvcnRpbmdEYXRlc0hhbmRsZXIodGFnKTtcbiAgICAgICAgdGhpcy50YWdBY2NlcHRhYmxlRGF0ZUhhbmRsZXIodGFnKTtcbiAgICAgICAgdGhpcy5vblNjZW5hcmlvRGF0YUNoYW5nZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblNjZW5hcmlvRGF0YUNoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zY2VuYXJpb0RhdGFDaGFuZ2VkLmVtaXQoe1xuICAgICAgICAgICAgc2NlbmFyaW86IHRoaXMuc2VsZWN0ZWRTY2VuYXJpbyxcbiAgICAgICAgICAgIHRhZ3NDb25maWc6IHRoaXMuc2NlbmFyaW9TZXJ2aWNlLmdldFRhZ3NDb25maWdCeVNjZW5hcmlvVGFncyh0aGlzLnNjZW5hcmlvVGFncywgdGhpcy53aG9sZVRhZ3NDb25maWcpLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRhZ05vdFN1cHBvcnRpbmdEYXRlc0hhbmRsZXIodGFnOiBJU2NlbmFyaW9UYWdVaSk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMudGFnTm90U3VwcG9ydGluZ0RhdGVzIHx8ICF0YWcudG9nZ2xlKSByZXR1cm47XG5cbiAgICAgICAgaWYgKHRhZy50eXBlID09PSBUYWdUeXBlcy5EQVRFKSB7XG4gICAgICAgICAgICB0aGlzLnRhZ05vdFN1cHBvcnRpbmdEYXRlcy50b2dnbGUgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0YWcgPT09IHRoaXMudGFnTm90U3VwcG9ydGluZ0RhdGVzKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRlVGFnID0gdGhpcy5kYXRlVGFnO1xuXG4gICAgICAgICAgICBpZiAoZGF0ZVRhZykge1xuICAgICAgICAgICAgICAgIGRhdGVUYWcudG9nZ2xlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHRhZ0FjY2VwdGFibGVEYXRlSGFuZGxlcih0YWc6IElTY2VuYXJpb1RhZ1VpKSB7XG4gICAgICAgIGlmICghdGFnLmFjY2VwdGFibGVTdWJUYWdzPy5sZW5ndGgpIHJldHVybjtcbiAgICAgICAgY29uc3QgZGF0ZVRhZyA9IHRoaXMuZGF0ZVRhZztcblxuICAgICAgICBpZiAoIWRhdGVUYWcpIHJldHVybjtcblxuICAgICAgICBkYXRlVGFnLnN1YlRhZ3MgPSBfbWFwKGRhdGVUYWcuc3ViVGFncywgKHN1YlRhZykgPT4ge1xuICAgICAgICAgICAgc3ViVGFnLmhpZGRlbiA9IHRhZy50b2dnbGUgJiYgIV9pbmNsdWRlcyh0YWcuYWNjZXB0YWJsZVN1YlRhZ3MsIHN1YlRhZy5zdWJUeXBlKTtcbiAgICAgICAgICAgIHJldHVybiBzdWJUYWc7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGRhdGVUYWcuc2VsZWN0ZWRUYWdTdWJUeXBlID0gdGFnLmFjY2VwdGFibGVTdWJUYWdzWzBdO1xuICAgIH1cbn1cbiJdfQ==
@@ -22,7 +22,7 @@ export const allDateTags = {
22
22
  toggle: false,
23
23
  }
24
24
  };
25
- export function getScenarioTagDataConfig(isMultipleDimension) {
25
+ export function getScenarioTagDataConfig(isMultipleDimension, isForecastMultipleDimension) {
26
26
  return {
27
27
  [Scenario.ACTUALS]: Object.assign(Object.assign({}, allDateTags), { [TagsConfigSubType.MONTH]: {
28
28
  name: 'Date',
@@ -33,7 +33,7 @@ export function getScenarioTagDataConfig(isMultipleDimension) {
33
33
  [Scenario.BUDGET]: {
34
34
  [TagsConfigSubType.BUDGET_CYCLE]: {
35
35
  toggle: true,
36
- acceptableDateTags: [TagsConfigSubType.YEAR],
36
+ acceptableSubTags: [TagsConfigSubType.YEAR],
37
37
  hidden: !isMultipleDimension,
38
38
  },
39
39
  [TagsConfigSubType.PLAN]: {
@@ -58,6 +58,11 @@ export function getScenarioTagDataConfig(isMultipleDimension) {
58
58
  toggle: true,
59
59
  name: 'Date',
60
60
  },
61
+ [TagsConfigSubType.FORECAST_CYCLE]: {
62
+ toggle: true,
63
+ acceptableSubTags: [TagsConfigSubType.FORECAST_NEW],
64
+ hidden: !isForecastMultipleDimension,
65
+ },
61
66
  [TagsConfigSubType.FILE_STATUS]: {
62
67
  toggle: false,
63
68
  },
@@ -70,4 +75,4 @@ export function getScenarioTagDataConfig(isMultipleDimension) {
70
75
  } }),
71
76
  };
72
77
  }
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NlbmFyaW8tdGFncy1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1zY2VuYXJpby9jb25zdHMvc2NlbmFyaW8tdGFncy1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFFBQVEsRUFBNEMsTUFBTSx3QkFBd0IsQ0FBQztBQUU1RixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUc7SUFDdkIsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUN0QixJQUFJLEVBQUUsTUFBTTtRQUNaLE1BQU0sRUFBRSxLQUFLO0tBQ2hCO0lBQ0QsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUN6QixJQUFJLEVBQUUsTUFBTTtRQUNaLE1BQU0sRUFBRSxLQUFLO0tBQ2hCO0lBQ0QsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUN2QixJQUFJLEVBQUUsTUFBTTtRQUNaLE1BQU0sRUFBRSxLQUFLO0tBQ2hCO0lBQ0QsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNyQixJQUFJLEVBQUUsTUFBTTtRQUNaLE1BQU0sRUFBRSxLQUFLO0tBQ2hCO0lBQ0QsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUN0QixJQUFJLEVBQUUsTUFBTTtRQUNaLE1BQU0sRUFBRSxLQUFLO0tBQ2hCO0NBQ0osQ0FBQztBQUVGLE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxtQkFBNEI7SUFDakUsT0FBTztRQUNILENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxrQ0FDWCxXQUFXLEtBQ2QsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDdkIsSUFBSSxFQUFFLE1BQU07Z0JBQ1osTUFBTSxFQUFFLElBQUk7YUFDZixFQUNELENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLEVBQUU7Z0JBQzdCLE1BQU0sRUFBRSxLQUFLO2FBQ2hCLEdBQ0o7UUFDRCxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNmLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLEVBQUU7Z0JBQzlCLE1BQU0sRUFBRSxJQUFJO2dCQUNaLGtCQUFrQixFQUFFLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDO2dCQUM1QyxNQUFNLEVBQUUsQ0FBQyxtQkFBbUI7YUFDL0I7WUFDRCxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUN0QixNQUFNLEVBQUUsS0FBSztnQkFDYixlQUFlLEVBQUUsSUFBSTtnQkFDckIsTUFBTSxFQUFFLG1CQUFtQjthQUM5QjtZQUNELENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3RCLElBQUksRUFBRSxNQUFNO2dCQUNaLE1BQU0sRUFBRSxJQUFJO2FBQ2Y7WUFDRCxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUN6QixJQUFJLEVBQUUsTUFBTTtnQkFDWixNQUFNLEVBQUUsS0FBSzthQUNoQjtZQUNELENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLEVBQUU7Z0JBQzdCLE1BQU0sRUFBRSxLQUFLO2FBQ2hCO1NBQ0o7UUFDRCxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNqQixDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUM5QixNQUFNLEVBQUUsSUFBSTtnQkFDWixJQUFJLEVBQUUsTUFBTTthQUNmO1lBQ0QsQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsRUFBRTtnQkFDN0IsTUFBTSxFQUFFLEtBQUs7YUFDaEI7U0FDSjtRQUNELENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxrQ0FDUixXQUFXLEtBQ2QsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDdkIsSUFBSSxFQUFFLE1BQU07Z0JBQ1osTUFBTSxFQUFFLElBQUk7YUFDZixFQUNELENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLEVBQUU7Z0JBQzdCLE1BQU0sRUFBRSxJQUFJO2FBQ2YsR0FDSjtLQUNKLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGFnc0NvbmZpZ1N1YlR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2VydmVyVGFncyc7XG5pbXBvcnQgeyBTY2VuYXJpbywgVFNjZW5hcmlvVGFnQ29uZmlnRGF0YSwgVFNjZW5hcmlvVGFnRGF0YSB9IGZyb20gJy4uL2ludGVyZmFjZXMvc2NlbmFyaW8nO1xuXG5leHBvcnQgY29uc3QgYWxsRGF0ZVRhZ3MgPSB7XG4gICAgW1RhZ3NDb25maWdTdWJUeXBlLllFQVJdOiB7XG4gICAgICAgIG5hbWU6ICdEYXRlJyxcbiAgICAgICAgdG9nZ2xlOiBmYWxzZSxcbiAgICB9LFxuICAgIFtUYWdzQ29uZmlnU3ViVHlwZS5RVUFSVEVSXToge1xuICAgICAgICBuYW1lOiAnRGF0ZScsXG4gICAgICAgIHRvZ2dsZTogZmFsc2UsXG4gICAgfSxcbiAgICBbVGFnc0NvbmZpZ1N1YlR5cGUuTU9OVEhdOiB7XG4gICAgICAgIG5hbWU6ICdEYXRlJyxcbiAgICAgICAgdG9nZ2xlOiBmYWxzZSxcbiAgICB9LFxuICAgIFtUYWdzQ29uZmlnU3ViVHlwZS5EQVldOiB7XG4gICAgICAgIG5hbWU6ICdEYXRlJyxcbiAgICAgICAgdG9nZ2xlOiBmYWxzZSxcbiAgICB9LFxuICAgIFtUYWdzQ29uZmlnU3ViVHlwZS5XRUVLXToge1xuICAgICAgICBuYW1lOiAnRGF0ZScsXG4gICAgICAgIHRvZ2dsZTogZmFsc2UsXG4gICAgfVxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNjZW5hcmlvVGFnRGF0YUNvbmZpZyhpc011bHRpcGxlRGltZW5zaW9uOiBib29sZWFuKTogVFNjZW5hcmlvVGFnRGF0YTxUU2NlbmFyaW9UYWdDb25maWdEYXRhPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgW1NjZW5hcmlvLkFDVFVBTFNdOiB7XG4gICAgICAgICAgICAuLi5hbGxEYXRlVGFncyxcbiAgICAgICAgICAgIFtUYWdzQ29uZmlnU3ViVHlwZS5NT05USF06IHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnRGF0ZScsXG4gICAgICAgICAgICAgICAgdG9nZ2xlOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtUYWdzQ29uZmlnU3ViVHlwZS5GSUxFX1NUQVRVU106IHtcbiAgICAgICAgICAgICAgICB0b2dnbGU6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgW1NjZW5hcmlvLkJVREdFVF06IHtcbiAgICAgICAgICAgIFtUYWdzQ29uZmlnU3ViVHlwZS5CVURHRVRfQ1lDTEVdOiB7XG4gICAgICAgICAgICAgICAgdG9nZ2xlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGFjY2VwdGFibGVEYXRlVGFnczogW1RhZ3NDb25maWdTdWJUeXBlLllFQVJdLFxuICAgICAgICAgICAgICAgIGhpZGRlbjogIWlzTXVsdGlwbGVEaW1lbnNpb24sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW1RhZ3NDb25maWdTdWJUeXBlLlBMQU5dOiB7XG4gICAgICAgICAgICAgICAgdG9nZ2xlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB0dXJuT2ZmRGF0ZVRhZ3M6IHRydWUsXG4gICAgICAgICAgICAgICAgaGlkZGVuOiBpc011bHRpcGxlRGltZW5zaW9uLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtUYWdzQ29uZmlnU3ViVHlwZS5ZRUFSXToge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdEYXRlJyxcbiAgICAgICAgICAgICAgICB0b2dnbGU6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW1RhZ3NDb25maWdTdWJUeXBlLlFVQVJURVJdOiB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ0RhdGUnLFxuICAgICAgICAgICAgICAgIHRvZ2dsZTogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW1RhZ3NDb25maWdTdWJUeXBlLkZJTEVfU1RBVFVTXToge1xuICAgICAgICAgICAgICAgIHRvZ2dsZTogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBbU2NlbmFyaW8uRk9SRUNBU1RdOiB7XG4gICAgICAgICAgICBbVGFnc0NvbmZpZ1N1YlR5cGUuRk9SRUNBU1RfTkVXXToge1xuICAgICAgICAgICAgICAgIHRvZ2dsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBuYW1lOiAnRGF0ZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW1RhZ3NDb25maWdTdWJUeXBlLkZJTEVfU1RBVFVTXToge1xuICAgICAgICAgICAgICAgIHRvZ2dsZTogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBbU2NlbmFyaW8uTk9ORV06IHtcbiAgICAgICAgICAgIC4uLmFsbERhdGVUYWdzLFxuICAgICAgICAgICAgW1RhZ3NDb25maWdTdWJUeXBlLk1PTlRIXToge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdEYXRlJyxcbiAgICAgICAgICAgICAgICB0b2dnbGU6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW1RhZ3NDb25maWdTdWJUeXBlLkZJTEVfU1RBVFVTXToge1xuICAgICAgICAgICAgICAgIHRvZ2dsZTogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgfTtcbn1cbiJdfQ==
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NlbmFyaW8tdGFncy1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1zY2VuYXJpby9jb25zdHMvc2NlbmFyaW8tdGFncy1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFFBQVEsRUFBNEMsTUFBTSx3QkFBd0IsQ0FBQztBQUU1RixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUc7SUFDdkIsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUN0QixJQUFJLEVBQUUsTUFBTTtRQUNaLE1BQU0sRUFBRSxLQUFLO0tBQ2hCO0lBQ0QsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUN6QixJQUFJLEVBQUUsTUFBTTtRQUNaLE1BQU0sRUFBRSxLQUFLO0tBQ2hCO0lBQ0QsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUN2QixJQUFJLEVBQUUsTUFBTTtRQUNaLE1BQU0sRUFBRSxLQUFLO0tBQ2hCO0lBQ0QsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNyQixJQUFJLEVBQUUsTUFBTTtRQUNaLE1BQU0sRUFBRSxLQUFLO0tBQ2hCO0lBQ0QsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUN0QixJQUFJLEVBQUUsTUFBTTtRQUNaLE1BQU0sRUFBRSxLQUFLO0tBQ2hCO0NBQ0osQ0FBQztBQUVGLE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxtQkFBNEIsRUFBRSwyQkFBb0M7SUFDdkcsT0FBTztRQUNILENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxrQ0FDWCxXQUFXLEtBQ2QsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDdkIsSUFBSSxFQUFFLE1BQU07Z0JBQ1osTUFBTSxFQUFFLElBQUk7YUFDZixFQUNELENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLEVBQUU7Z0JBQzdCLE1BQU0sRUFBRSxLQUFLO2FBQ2hCLEdBQ0o7UUFDRCxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNmLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLEVBQUU7Z0JBQzlCLE1BQU0sRUFBRSxJQUFJO2dCQUNaLGlCQUFpQixFQUFFLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDO2dCQUMzQyxNQUFNLEVBQUUsQ0FBQyxtQkFBbUI7YUFDL0I7WUFDRCxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUN0QixNQUFNLEVBQUUsS0FBSztnQkFDYixlQUFlLEVBQUUsSUFBSTtnQkFDckIsTUFBTSxFQUFFLG1CQUFtQjthQUM5QjtZQUNELENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3RCLElBQUksRUFBRSxNQUFNO2dCQUNaLE1BQU0sRUFBRSxJQUFJO2FBQ2Y7WUFDRCxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUN6QixJQUFJLEVBQUUsTUFBTTtnQkFDWixNQUFNLEVBQUUsS0FBSzthQUNoQjtZQUNELENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLEVBQUU7Z0JBQzdCLE1BQU0sRUFBRSxLQUFLO2FBQ2hCO1NBQ0o7UUFDRCxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNqQixDQUFDLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUM5QixNQUFNLEVBQUUsSUFBSTtnQkFDWixJQUFJLEVBQUUsTUFBTTthQUNmO1lBQ0QsQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsRUFBRTtnQkFDaEMsTUFBTSxFQUFFLElBQUk7Z0JBQ1osaUJBQWlCLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUM7Z0JBQ25ELE1BQU0sRUFBRSxDQUFDLDJCQUEyQjthQUN2QztZQUNELENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLEVBQUU7Z0JBQzdCLE1BQU0sRUFBRSxLQUFLO2FBQ2hCO1NBQ0o7UUFDRCxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsa0NBQ1IsV0FBVyxLQUNkLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBQ3ZCLElBQUksRUFBRSxNQUFNO2dCQUNaLE1BQU0sRUFBRSxJQUFJO2FBQ2YsRUFDRCxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxFQUFFO2dCQUM3QixNQUFNLEVBQUUsSUFBSTthQUNmLEdBQ0o7S0FDSixDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRhZ3NDb25maWdTdWJUeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NlcnZlclRhZ3MnO1xuaW1wb3J0IHsgU2NlbmFyaW8sIFRTY2VuYXJpb1RhZ0NvbmZpZ0RhdGEsIFRTY2VuYXJpb1RhZ0RhdGEgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NjZW5hcmlvJztcblxuZXhwb3J0IGNvbnN0IGFsbERhdGVUYWdzID0ge1xuICAgIFtUYWdzQ29uZmlnU3ViVHlwZS5ZRUFSXToge1xuICAgICAgICBuYW1lOiAnRGF0ZScsXG4gICAgICAgIHRvZ2dsZTogZmFsc2UsXG4gICAgfSxcbiAgICBbVGFnc0NvbmZpZ1N1YlR5cGUuUVVBUlRFUl06IHtcbiAgICAgICAgbmFtZTogJ0RhdGUnLFxuICAgICAgICB0b2dnbGU6IGZhbHNlLFxuICAgIH0sXG4gICAgW1RhZ3NDb25maWdTdWJUeXBlLk1PTlRIXToge1xuICAgICAgICBuYW1lOiAnRGF0ZScsXG4gICAgICAgIHRvZ2dsZTogZmFsc2UsXG4gICAgfSxcbiAgICBbVGFnc0NvbmZpZ1N1YlR5cGUuREFZXToge1xuICAgICAgICBuYW1lOiAnRGF0ZScsXG4gICAgICAgIHRvZ2dsZTogZmFsc2UsXG4gICAgfSxcbiAgICBbVGFnc0NvbmZpZ1N1YlR5cGUuV0VFS106IHtcbiAgICAgICAgbmFtZTogJ0RhdGUnLFxuICAgICAgICB0b2dnbGU6IGZhbHNlLFxuICAgIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTY2VuYXJpb1RhZ0RhdGFDb25maWcoaXNNdWx0aXBsZURpbWVuc2lvbjogYm9vbGVhbiwgaXNGb3JlY2FzdE11bHRpcGxlRGltZW5zaW9uOiBib29sZWFuKTogVFNjZW5hcmlvVGFnRGF0YTxUU2NlbmFyaW9UYWdDb25maWdEYXRhPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgW1NjZW5hcmlvLkFDVFVBTFNdOiB7XG4gICAgICAgICAgICAuLi5hbGxEYXRlVGFncyxcbiAgICAgICAgICAgIFtUYWdzQ29uZmlnU3ViVHlwZS5NT05USF06IHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnRGF0ZScsXG4gICAgICAgICAgICAgICAgdG9nZ2xlOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtUYWdzQ29uZmlnU3ViVHlwZS5GSUxFX1NUQVRVU106IHtcbiAgICAgICAgICAgICAgICB0b2dnbGU6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgW1NjZW5hcmlvLkJVREdFVF06IHtcbiAgICAgICAgICAgIFtUYWdzQ29uZmlnU3ViVHlwZS5CVURHRVRfQ1lDTEVdOiB7XG4gICAgICAgICAgICAgICAgdG9nZ2xlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGFjY2VwdGFibGVTdWJUYWdzOiBbVGFnc0NvbmZpZ1N1YlR5cGUuWUVBUl0sXG4gICAgICAgICAgICAgICAgaGlkZGVuOiAhaXNNdWx0aXBsZURpbWVuc2lvbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbVGFnc0NvbmZpZ1N1YlR5cGUuUExBTl06IHtcbiAgICAgICAgICAgICAgICB0b2dnbGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHR1cm5PZmZEYXRlVGFnczogdHJ1ZSxcbiAgICAgICAgICAgICAgICBoaWRkZW46IGlzTXVsdGlwbGVEaW1lbnNpb24sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW1RhZ3NDb25maWdTdWJUeXBlLllFQVJdOiB7XG4gICAgICAgICAgICAgICAgbmFtZTogJ0RhdGUnLFxuICAgICAgICAgICAgICAgIHRvZ2dsZTogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbVGFnc0NvbmZpZ1N1YlR5cGUuUVVBUlRFUl06IHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnRGF0ZScsXG4gICAgICAgICAgICAgICAgdG9nZ2xlOiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbVGFnc0NvbmZpZ1N1YlR5cGUuRklMRV9TVEFUVVNdOiB7XG4gICAgICAgICAgICAgICAgdG9nZ2xlOiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIFtTY2VuYXJpby5GT1JFQ0FTVF06IHtcbiAgICAgICAgICAgIFtUYWdzQ29uZmlnU3ViVHlwZS5GT1JFQ0FTVF9ORVddOiB7XG4gICAgICAgICAgICAgICAgdG9nZ2xlOiB0cnVlLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdEYXRlJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbVGFnc0NvbmZpZ1N1YlR5cGUuRk9SRUNBU1RfQ1lDTEVdOiB7XG4gICAgICAgICAgICAgICAgdG9nZ2xlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGFjY2VwdGFibGVTdWJUYWdzOiBbVGFnc0NvbmZpZ1N1YlR5cGUuRk9SRUNBU1RfTkVXXSxcbiAgICAgICAgICAgICAgICBoaWRkZW46ICFpc0ZvcmVjYXN0TXVsdGlwbGVEaW1lbnNpb24sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW1RhZ3NDb25maWdTdWJUeXBlLkZJTEVfU1RBVFVTXToge1xuICAgICAgICAgICAgICAgIHRvZ2dsZTogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBbU2NlbmFyaW8uTk9ORV06IHtcbiAgICAgICAgICAgIC4uLmFsbERhdGVUYWdzLFxuICAgICAgICAgICAgW1RhZ3NDb25maWdTdWJUeXBlLk1PTlRIXToge1xuICAgICAgICAgICAgICAgIG5hbWU6ICdEYXRlJyxcbiAgICAgICAgICAgICAgICB0b2dnbGU6IHRydWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW1RhZ3NDb25maWdTdWJUeXBlLkZJTEVfU1RBVFVTXToge1xuICAgICAgICAgICAgICAgIHRvZ2dsZTogdHJ1ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgfTtcbn1cbiJdfQ==
@@ -5,4 +5,4 @@ export var Scenario;
5
5
  Scenario["BUDGET"] = "Budget";
6
6
  Scenario["NONE"] = "None";
7
7
  })(Scenario || (Scenario = {}));
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NlbmFyaW8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1zY2VuYXJpby9pbnRlcmZhY2VzL3NjZW5hcmlvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBTixJQUFZLFFBS1g7QUFMRCxXQUFZLFFBQVE7SUFDaEIsK0JBQW1CLENBQUE7SUFDbkIsaUNBQXFCLENBQUE7SUFDckIsNkJBQWlCLENBQUE7SUFDakIseUJBQWEsQ0FBQTtBQUNqQixDQUFDLEVBTFcsUUFBUSxLQUFSLFFBQVEsUUFLbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJVGFnLCBJVGFnRm9yU2VydmVyLCBUYWdzQ29uZmlnU3ViVHlwZSwgVGFnVHlwZXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2VydmVyVGFncyc7XG5cbmV4cG9ydCBlbnVtIFNjZW5hcmlvIHtcbiAgICBBQ1RVQUxTID0gJ0FjdHVhbHMnLFxuICAgIEZPUkVDQVNUID0gJ0ZvcmVjYXN0JyxcbiAgICBCVURHRVQgPSAnQnVkZ2V0JyxcbiAgICBOT05FID0gJ05vbmUnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTY2VuYXJpb1RhZyBleHRlbmRzIElUYWcge1xuICAgIHNjZW5hcmlvRGF0YTogSVNjZW5hcmlvO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTY2VuYXJpb0NvbW1vbiB7XG4gICAgdG9nZ2xlOiBib29sZWFuO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIGFjY2VwdGFibGVEYXRlVGFncz86IFRhZ3NDb25maWdTdWJUeXBlW107XG4gICAgdHVybk9mZkRhdGVUYWdzPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2NlbmFyaW8gZXh0ZW5kcyBPbWl0PElTY2VuYXJpb0NvbW1vbiwgJ25hbWUnIHwgJ2Rlc2NyaXB0aW9uJz4ge1xuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gICAgaGlkZGVuPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2NlbmFyaW9UYWdVaSBleHRlbmRzIElTY2VuYXJpb0NvbW1vbiB7XG4gICAgc2VsZWN0ZWRUYWdTdWJUeXBlOiBUYWdzQ29uZmlnU3ViVHlwZTtcbiAgICB0eXBlOiBUYWdUeXBlcztcbiAgICBzdWJUYWdzPzogSVNjZW5hcmlvU3ViVGFnW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNjZW5hcmlvU3ViVGFnIHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgc3ViVHlwZTogVGFnc0NvbmZpZ1N1YlR5cGU7XG4gICAgaGlkZGVuPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgVFNjZW5hcmlvVGFnQ29uZmlnRGF0YSA9IHsgW2tleSBpbiBUYWdzQ29uZmlnU3ViVHlwZV0/OiBJU2NlbmFyaW8gfTtcbmV4cG9ydCB0eXBlIFRTY2VuYXJpb1RhZ0RhdGE8VD4gPSB7IFtrZXkgaW4gU2NlbmFyaW9dPzogVCB9O1xuZXhwb3J0IHR5cGUgVFNjZW5hcmlvRGF0YUNoYW5nZWQgPSB7IHNjZW5hcmlvOiBTY2VuYXJpbzsgdGFncz86IElUYWdGb3JTZXJ2ZXJbXTsgdGFnc0NvbmZpZz86IElUYWdbXSB9O1xuIl19
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NlbmFyaW8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhcmFpbHNzaGFyZWQvc3JjL2xpYi9kci1zY2VuYXJpby9pbnRlcmZhY2VzL3NjZW5hcmlvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBTixJQUFZLFFBS1g7QUFMRCxXQUFZLFFBQVE7SUFDaEIsK0JBQW1CLENBQUE7SUFDbkIsaUNBQXFCLENBQUE7SUFDckIsNkJBQWlCLENBQUE7SUFDakIseUJBQWEsQ0FBQTtBQUNqQixDQUFDLEVBTFcsUUFBUSxLQUFSLFFBQVEsUUFLbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJVGFnLCBJVGFnRm9yU2VydmVyLCBUYWdzQ29uZmlnU3ViVHlwZSwgVGFnVHlwZXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2VydmVyVGFncyc7XG5cbmV4cG9ydCBlbnVtIFNjZW5hcmlvIHtcbiAgICBBQ1RVQUxTID0gJ0FjdHVhbHMnLFxuICAgIEZPUkVDQVNUID0gJ0ZvcmVjYXN0JyxcbiAgICBCVURHRVQgPSAnQnVkZ2V0JyxcbiAgICBOT05FID0gJ05vbmUnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTY2VuYXJpb1RhZyBleHRlbmRzIElUYWcge1xuICAgIHNjZW5hcmlvRGF0YTogSVNjZW5hcmlvO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTY2VuYXJpb0NvbW1vbiB7XG4gICAgdG9nZ2xlOiBib29sZWFuO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIGFjY2VwdGFibGVTdWJUYWdzPzogVGFnc0NvbmZpZ1N1YlR5cGVbXTtcbiAgICB0dXJuT2ZmRGF0ZVRhZ3M/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTY2VuYXJpbyBleHRlbmRzIE9taXQ8SVNjZW5hcmlvQ29tbW9uLCAnbmFtZScgfCAnZGVzY3JpcHRpb24nPiB7XG4gICAgbmFtZT86IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBoaWRkZW4/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTY2VuYXJpb1RhZ1VpIGV4dGVuZHMgSVNjZW5hcmlvQ29tbW9uIHtcbiAgICBzZWxlY3RlZFRhZ1N1YlR5cGU6IFRhZ3NDb25maWdTdWJUeXBlO1xuICAgIHR5cGU6IFRhZ1R5cGVzO1xuICAgIHN1YlRhZ3M/OiBJU2NlbmFyaW9TdWJUYWdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU2NlbmFyaW9TdWJUYWcge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBzdWJUeXBlOiBUYWdzQ29uZmlnU3ViVHlwZTtcbiAgICBoaWRkZW4/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBUU2NlbmFyaW9UYWdDb25maWdEYXRhID0geyBba2V5IGluIFRhZ3NDb25maWdTdWJUeXBlXT86IElTY2VuYXJpbyB9O1xuZXhwb3J0IHR5cGUgVFNjZW5hcmlvVGFnRGF0YTxUPiA9IHsgW2tleSBpbiBTY2VuYXJpb10/OiBUIH07XG5leHBvcnQgdHlwZSBUU2NlbmFyaW9EYXRhQ2hhbmdlZCA9IHsgc2NlbmFyaW86IFNjZW5hcmlvOyB0YWdzPzogSVRhZ0ZvclNlcnZlcltdOyB0YWdzQ29uZmlnPzogSVRhZ1tdIH07XG4iXX0=
@@ -1,7 +1,7 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import { TagsConfigSubType, TagTypes } from '../../models/serverTags';
3
3
  import { Scenario } from '../interfaces/scenario';
4
- import { cloneDeep as _cloneDeep, filter as _filter, find as _find, forEach as _forEach, orderBy as _orderBy, indexOf as _indexOf, reduce as _reduce, some as _some, } from 'lodash';
4
+ import { cloneDeep as _cloneDeep, filter as _filter, find as _find, forEach as _forEach, orderBy as _orderBy, indexOf as _indexOf, reduce as _reduce, some as _some, map as _map, includes as _includes, } from 'lodash';
5
5
  import { getScenarioTagDataConfig } from '../consts/scenario-tags-config';
6
6
  export class ScenarioService {
7
7
  constructor() {
@@ -13,12 +13,13 @@ export class ScenarioService {
13
13
  get areExistingTagsConfig() {
14
14
  return !!this.currentTagsConfig;
15
15
  }
16
- initScenarioTags(wholeTagsConfig, currentTagsConfig, isMultipleDimension) {
16
+ initScenarioTags(wholeTagsConfig, currentTagsConfig, isMultipleDimension, isForecastMultipleDimension) {
17
17
  if (!(wholeTagsConfig === null || wholeTagsConfig === void 0 ? void 0 : wholeTagsConfig.length))
18
18
  return;
19
19
  this.wholeTagsConfig = _cloneDeep(wholeTagsConfig);
20
20
  this.currentTagsConfig = currentTagsConfig;
21
21
  this.isMultipleDimension = isMultipleDimension;
22
+ this.isForecastMultipleDimension = isForecastMultipleDimension;
22
23
  }
23
24
  getTagsConfigByScenarioTags(scenarioTags, tagsConfig) {
24
25
  const scenarioTagsConfig = _filter(tagsConfig, (tagConfig) => _some(scenarioTags, (scenarioTag) => scenarioTag.toggle && scenarioTag.selectedTagSubType === tagConfig.options.sub_type));
@@ -33,7 +34,7 @@ export class ScenarioService {
33
34
  const tag = tagWithSubTags || this.prepareScenarioTag(scenarioTagsConfig, scenarioTag, scenario, isTagWithSubTags);
34
35
  if (isTagWithSubTags) {
35
36
  this.updateScenarioSubTags(tag, scenarioTag);
36
- tag.subTags = this.sortedScenarioSubTags(tag);
37
+ tag.subTags = ScenarioService.sortedSubTags(tag);
37
38
  }
38
39
  if (tagWithSubTags)
39
40
  return;
@@ -46,31 +47,64 @@ export class ScenarioService {
46
47
  if (isTagNotSupportingDates) {
47
48
  this.turnOffDateTag(scenarioTagsUi);
48
49
  }
49
- const tagWithSpecificDateTags = _find(scenarioTagsUi, (tag) => { var _a; return tag.toggle && !!((_a = tag.acceptableDateTags) === null || _a === void 0 ? void 0 : _a.length); });
50
+ const tagWithSpecificDateTags = _find(scenarioTagsUi, (tag) => { var _a; return tag.toggle && !!((_a = tag.acceptableSubTags) === null || _a === void 0 ? void 0 : _a.length); });
50
51
  if (tagWithSpecificDateTags) {
51
52
  this.hideNotAvailableTags(tagWithSpecificDateTags, scenarioTagsUi);
52
53
  }
53
54
  return this.sortScenarioTags(scenarioTagsUi);
54
55
  }
56
+ tagNotSupportingDatesHandler(tag, tagNotSupportingDates, dateTag) {
57
+ if (!tagNotSupportingDates || !tag.toggle)
58
+ return;
59
+ if (tag.type === TagTypes.DATE) {
60
+ tagNotSupportingDates.toggle = false;
61
+ }
62
+ if (tag === tagNotSupportingDates) {
63
+ if (dateTag) {
64
+ dateTag.toggle = false;
65
+ }
66
+ }
67
+ }
68
+ tagAcceptableSubTagsHandler(tag, dateTag) {
69
+ var _a;
70
+ if (!((_a = tag.acceptableSubTags) === null || _a === void 0 ? void 0 : _a.length))
71
+ return;
72
+ if (!dateTag)
73
+ return;
74
+ dateTag.subTags = _map(dateTag.subTags, (subTag) => {
75
+ subTag.hidden = tag.toggle && !_includes(tag.acceptableSubTags, subTag.subType);
76
+ return subTag;
77
+ });
78
+ dateTag.selectedTagSubType = tag.acceptableSubTags[0];
79
+ }
55
80
  sortScenarioTags(scenarioTagsUi) {
56
- return _orderBy(scenarioTagsUi, [
57
- (tag) => (tag.type === TagTypes.DATE ? 0 : 1),
58
- (tag) => (tag.name === 'File Status')
59
- ]);
81
+ return _orderBy(scenarioTagsUi, [(tag) => (tag.type === TagTypes.DATE ? 0 : 1), (tag) => tag.name === 'File Status']);
82
+ }
83
+ static sortedSubTags(tag) {
84
+ const SUB_TAGS_ORDER = [
85
+ TagsConfigSubType.DAY,
86
+ TagsConfigSubType.WEEK,
87
+ TagsConfigSubType.MONTH,
88
+ TagsConfigSubType.QUARTER,
89
+ TagsConfigSubType.YEAR,
90
+ ];
91
+ return _orderBy(tag.subTags, (subTag) => _indexOf(SUB_TAGS_ORDER, subTag.subType));
60
92
  }
61
93
  initExistingTagsConfig(scenario, scenarioTagsUi) {
62
94
  _forEach(this.currentTagsConfig, (tagConfig) => {
63
95
  var _a;
64
96
  const tagSubType = (_a = tagConfig === null || tagConfig === void 0 ? void 0 : tagConfig.options) === null || _a === void 0 ? void 0 : _a.sub_type;
65
- const scenarioTagDataConfig = getScenarioTagDataConfig(this.isMultipleDimension);
97
+ const scenarioTagDataConfig = getScenarioTagDataConfig(this.isMultipleDimension, this.isForecastMultipleDimension);
66
98
  if (!scenarioTagDataConfig || !scenarioTagDataConfig[scenario] || !scenarioTagDataConfig[scenario][tagSubType]) {
67
99
  return;
68
100
  }
69
101
  const scenarioTagUi = tagConfig.type === TagTypes.DATE
70
102
  ? _find(scenarioTagsUi, { type: tagConfig.type })
71
103
  : _find(scenarioTagsUi, { selectedTagSubType: tagSubType });
72
- scenarioTagUi.toggle = true;
73
- scenarioTagUi.selectedTagSubType = tagSubType;
104
+ if (scenarioTagUi) {
105
+ scenarioTagUi.toggle = true;
106
+ scenarioTagUi.selectedTagSubType = tagSubType;
107
+ }
74
108
  });
75
109
  }
76
110
  prepareScenarioTag(scenarioTagsConfig, scenarioTag, scenario, isDateTag) {
@@ -90,15 +124,11 @@ export class ScenarioService {
90
124
  if (scenarioTag.scenarioData.turnOffDateTags) {
91
125
  tag.turnOffDateTags = scenarioTag.scenarioData.turnOffDateTags;
92
126
  }
93
- if (scenarioTag.scenarioData.acceptableDateTags) {
94
- tag.acceptableDateTags = scenarioTag.scenarioData.acceptableDateTags;
127
+ if (scenarioTag.scenarioData.acceptableSubTags) {
128
+ tag.acceptableSubTags = scenarioTag.scenarioData.acceptableSubTags;
95
129
  }
96
130
  return tag;
97
131
  }
98
- sortedScenarioSubTags(tag) {
99
- const SUB_TAGS_ORDER = [TagsConfigSubType.DAY, TagsConfigSubType.WEEK, TagsConfigSubType.MONTH, TagsConfigSubType.QUARTER, TagsConfigSubType.YEAR];
100
- return _orderBy(tag.subTags, (subTag) => _indexOf(SUB_TAGS_ORDER, subTag.subType));
101
- }
102
132
  updateScenarioSubTags(tag, scenarioTag) {
103
133
  if (!tag.subTags) {
104
134
  tag.subTags = [];
@@ -122,14 +152,14 @@ export class ScenarioService {
122
152
  return;
123
153
  _forEach(scenarioTags, (tag) => {
124
154
  var _a;
125
- if (!((_a = tag.acceptableDateTags) === null || _a === void 0 ? void 0 : _a.length))
155
+ if (!((_a = tag.acceptableSubTags) === null || _a === void 0 ? void 0 : _a.length))
126
156
  return;
127
157
  if (tag !== tagWithSpecificDateTags) {
128
158
  tag.toggle = false;
129
159
  }
130
160
  });
131
161
  _forEach(subTags, (subTag) => {
132
- subTag.hidden = !tagWithSpecificDateTags.acceptableDateTags.includes(subTag.subType);
162
+ subTag.hidden = !tagWithSpecificDateTags.acceptableSubTags.includes(subTag.subType);
133
163
  });
134
164
  }
135
165
  getScenarioSelectedDateTag(scenario, dateTags) {
@@ -149,9 +179,8 @@ export class ScenarioService {
149
179
  return _reduce(tagsConfig, (acc, tagConfig) => {
150
180
  var _a;
151
181
  const tagSubType = (_a = tagConfig === null || tagConfig === void 0 ? void 0 : tagConfig.options) === null || _a === void 0 ? void 0 : _a.sub_type;
152
- const scenarioTagDataConfig = getScenarioTagDataConfig(this.isMultipleDimension);
153
- const scenarioTagConfig = scenarioTagDataConfig && scenarioTagDataConfig[scenario] ?
154
- scenarioTagDataConfig[scenario][tagSubType] : null;
182
+ const scenarioTagDataConfig = getScenarioTagDataConfig(this.isMultipleDimension, this.isForecastMultipleDimension);
183
+ const scenarioTagConfig = scenarioTagDataConfig && scenarioTagDataConfig[scenario] ? scenarioTagDataConfig[scenario][tagSubType] : null;
155
184
  if (!scenarioTagConfig || scenarioTagConfig.hidden)
156
185
  return acc;
157
186
  const clonedTagConfig = _cloneDeep(tagConfig);
@@ -164,4 +193,4 @@ export class ScenarioService {
164
193
  ScenarioService.decorators = [
165
194
  { type: Injectable }
166
195
  ];
167
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NlbmFyaW8uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RyLXNjZW5hcmlvL3NlcnZpY2VzL3NjZW5hcmlvLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQVEsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUUsT0FBTyxFQUE0RCxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RyxPQUFPLEVBQ0gsU0FBUyxJQUFJLFVBQVUsRUFDdkIsTUFBTSxJQUFJLE9BQU8sRUFDakIsSUFBSSxJQUFJLEtBQUssRUFDYixPQUFPLElBQUksUUFBUSxFQUNuQixPQUFPLElBQUksUUFBUSxFQUNuQixPQUFPLElBQUksUUFBUSxFQUNuQixNQUFNLElBQUksT0FBTyxFQUNqQixJQUFJLElBQUksS0FBSyxHQUNoQixNQUFNLFFBQVEsQ0FBQztBQUNoQixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUcxRSxNQUFNLE9BQU8sZUFBZTtJQUQ1QjtRQUVZLDhCQUF5QixHQUFHLE9BQU8sQ0FBQztJQTRMaEQsQ0FBQztJQXRMRyxJQUFXLFNBQVM7UUFDaEIsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0YsQ0FBQztJQUVELElBQVkscUJBQXFCO1FBQzdCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNwQyxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsZUFBdUIsRUFBRSxpQkFBeUIsRUFBRSxtQkFBNEI7UUFDcEcsSUFBSSxDQUFDLENBQUEsZUFBZSxhQUFmLGVBQWUsdUJBQWYsZUFBZSxDQUFFLE1BQU0sQ0FBQTtZQUFFLE9BQU87UUFFckMsSUFBSSxDQUFDLGVBQWUsR0FBRyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDO1FBQzNDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxtQkFBbUIsQ0FBQztJQUNuRCxDQUFDO0lBRU0sMkJBQTJCLENBQUMsWUFBOEIsRUFBRSxVQUFrQjtRQUNqRixNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUN6RCxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsTUFBTSxJQUFJLFdBQVcsQ0FBQyxrQkFBa0IsS0FBSyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFFL0gsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU0seUJBQXlCLENBQUMsUUFBa0I7UUFDL0MsTUFBTSxrQkFBa0IsR0FBbUIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDdEcsTUFBTSxjQUFjLEdBQXFCLEVBQUUsQ0FBQztRQUU1QyxRQUFRLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxXQUF5QixFQUFFLEVBQUU7WUFDdkQsTUFBTSxnQkFBZ0IsR0FBRyxXQUFXLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDNUQsTUFBTSxjQUFjLEdBQUcsZ0JBQWdCLElBQUksS0FBSyxDQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUU3RixNQUFNLEdBQUcsR0FBbUIsY0FBYyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixDQUFDLENBQUM7WUFFbkksSUFBSSxnQkFBZ0IsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQztnQkFDN0MsR0FBRyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDakQ7WUFFRCxJQUFJLGNBQWM7Z0JBQUUsT0FBTztZQUMzQixjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUU7WUFDNUIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUMsQ0FBQztTQUN6RDtRQUVELE1BQU0sdUJBQXVCLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDL0YsSUFBSSx1QkFBdUIsRUFBRTtZQUN6QixJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQ3ZDO1FBRUQsTUFBTSx1QkFBdUIsR0FBbUIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLFdBQUMsT0FBQSxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFBLE1BQUEsR0FBRyxDQUFDLGtCQUFrQiwwQ0FBRSxNQUFNLENBQUEsQ0FBQSxFQUFBLENBQUMsQ0FBQztRQUMvSCxJQUFJLHVCQUF1QixFQUFFO1lBQ3pCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyx1QkFBdUIsRUFBRSxjQUFjLENBQUMsQ0FBQztTQUN0RTtRQUVELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxjQUFxQjtRQUN6QyxPQUFPLFFBQVEsQ0FBQyxjQUFjLEVBQUU7WUFDNUIsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM3QyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQztTQUN4QyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sc0JBQXNCLENBQUMsUUFBa0IsRUFBRSxjQUFnQztRQUMvRSxRQUFRLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsU0FBUyxFQUFFLEVBQUU7O1lBQzNDLE1BQU0sVUFBVSxHQUFHLE1BQUEsU0FBUyxhQUFULFNBQVMsdUJBQVQsU0FBUyxDQUFFLE9BQU8sMENBQUUsUUFBUSxDQUFDO1lBQ2hELE1BQU0scUJBQXFCLEdBQUcsd0JBQXdCLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDakYsSUFBSSxDQUFDLHFCQUFxQixJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDNUcsT0FBTzthQUNWO1lBRUQsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsSUFBSTtnQkFDbEQsQ0FBQyxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNqRCxDQUFDLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7WUFFaEUsYUFBYSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDNUIsYUFBYSxDQUFDLGtCQUFrQixHQUFHLFVBQVUsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxrQkFBa0MsRUFBRSxXQUF5QixFQUFFLFFBQWtCLEVBQUUsU0FBa0I7UUFDNUgsTUFBTSxZQUFZLEdBQUcsU0FBUztZQUMxQixDQUFDLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7WUFDM0YsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO1FBRXRDLE1BQU0sa0JBQWtCLEdBQUksU0FBUztZQUM3QixDQUFDLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQztZQUMvRCxDQUFDLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFFdkMsTUFBTSxHQUFHLEdBQW1CO1lBQ3hCLE1BQU0sRUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsWUFBWTtZQUN6RCxJQUFJLEVBQUUsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLElBQUksV0FBVyxDQUFDLElBQUk7WUFDdkQsV0FBVyxFQUFFLFdBQVcsQ0FBQyxZQUFZLENBQUMsV0FBVyxJQUFJLFdBQVcsQ0FBQyxXQUFXO1lBQzVFLElBQUksRUFBRSxXQUFXLENBQUMsSUFBSTtZQUN0QixrQkFBa0I7U0FDckIsQ0FBQztRQUVGLElBQUksV0FBVyxDQUFDLFlBQVksQ0FBQyxlQUFlLEVBQUU7WUFDMUMsR0FBRyxDQUFDLGVBQWUsR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQztTQUNsRTtRQUVELElBQUksV0FBVyxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsRUFBRTtZQUM3QyxHQUFHLENBQUMsa0JBQWtCLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQztTQUN4RTtRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUVPLHFCQUFxQixDQUFDLEdBQW1CO1FBQzdDLE1BQU0sY0FBYyxHQUFHLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLGlCQUFpQixDQUFDLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLENBQUMsT0FBTyxFQUFFLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25KLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDdkYsQ0FBQztJQUVPLHFCQUFxQixDQUFDLEdBQW1CLEVBQUUsV0FBeUI7UUFDeEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUU7WUFDZCxHQUFHLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztTQUNwQjtRQUVELE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO1FBRWhELEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ2IsT0FBTyxFQUFFLFVBQVU7WUFDbkIsSUFBSSxFQUFFLFVBQVUsS0FBSyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUk7U0FDMUcsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLGNBQWMsQ0FBQyxZQUE4QjtRQUNqRCxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRTdELElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTztRQUNyQixPQUFPLENBQUMsTUFBTSxHQUFFLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBRU8sb0JBQW9CLENBQUMsdUJBQXVDLEVBQUUsWUFBOEI7O1FBQ2hHLE1BQU0sT0FBTyxHQUFHLE1BQUEsS0FBSyxDQUFDLFlBQVksRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsMENBQUUsT0FBTyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTTtZQUFFLE9BQU87UUFFNUIsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFOztZQUMzQixJQUFJLENBQUMsQ0FBQSxNQUFBLEdBQUcsQ0FBQyxrQkFBa0IsMENBQUUsTUFBTSxDQUFBO2dCQUFFLE9BQU87WUFDNUMsSUFBSSxHQUFHLEtBQUssdUJBQXVCLEVBQUU7Z0JBQ2pDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO2FBQ3RCO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDekIsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLHVCQUF1QixDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekYsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sMEJBQTBCLENBQUMsUUFBa0IsRUFBRSxRQUF3Qjs7UUFDM0UsTUFBTSxZQUFZLEdBQUcsTUFBQSxNQUFBLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFpQixFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsS0FBSyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsMENBQUUsT0FBTywwQ0FBRSxRQUFRLENBQUM7UUFFakksTUFBTSx1QkFBdUIsR0FBRztZQUM1QixDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxZQUFZO1lBQ3RDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsRUFBRSxlQUFDLE9BQUEsTUFBQSxNQUFBLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFpQixFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsS0FBSyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsMENBQUUsT0FBTywwQ0FBRSxRQUFRLENBQUEsRUFBQTtZQUNuSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHLEVBQUUsZUFBQyxPQUFBLE1BQUEsTUFBQSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBaUIsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEtBQUssaUJBQWlCLENBQUMsWUFBWSxDQUFDLDBDQUFFLE9BQU8sMENBQUUsUUFBUSxDQUFBLEVBQUE7WUFDN0ksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsWUFBWTtTQUN0QyxDQUFBO1FBRUQsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQztZQUFFLE9BQU87UUFDL0MsT0FBTyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0lBQy9DLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxRQUFrQixFQUFFLFVBQWtCO1FBQ2hFLE9BQU8sT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLEdBQW1CLEVBQUUsU0FBZSxFQUFFLEVBQUU7O1lBQ2hFLE1BQU0sVUFBVSxHQUFHLE1BQUEsU0FBUyxhQUFULFNBQVMsdUJBQVQsU0FBUyxDQUFFLE9BQU8sMENBQUUsUUFBUSxDQUFDO1lBRWhELE1BQU0scUJBQXFCLEdBQUcsd0JBQXdCLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDakYsTUFBTSxpQkFBaUIsR0FBYyxxQkFBcUIsSUFBSSxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUMzRixxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ3ZELElBQUksQ0FBQyxpQkFBaUIsSUFBSSxpQkFBaUIsQ0FBQyxNQUFNO2dCQUFFLE9BQU8sR0FBRyxDQUFDO1lBRS9ELE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM5QyxNQUFNLFdBQVcsbUNBQXNCLGVBQWUsS0FBRSxZQUFZLEVBQUUsaUJBQWlCLEdBQUUsQ0FBQztZQUUxRixHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3RCLE9BQU8sR0FBRyxDQUFDO1FBQ2YsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1gsQ0FBQzs7O1lBN0xKLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJVGFnLCBUYWdzQ29uZmlnU3ViVHlwZSwgVGFnVHlwZXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2VydmVyVGFncyc7XG5pbXBvcnQgeyBJU2NlbmFyaW8sIElTY2VuYXJpb1N1YlRhZywgSVNjZW5hcmlvVGFnLCBJU2NlbmFyaW9UYWdVaSwgU2NlbmFyaW8gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NjZW5hcmlvJztcbmltcG9ydCB7XG4gICAgY2xvbmVEZWVwIGFzIF9jbG9uZURlZXAsXG4gICAgZmlsdGVyIGFzIF9maWx0ZXIsXG4gICAgZmluZCBhcyBfZmluZCxcbiAgICBmb3JFYWNoIGFzIF9mb3JFYWNoLFxuICAgIG9yZGVyQnkgYXMgX29yZGVyQnksXG4gICAgaW5kZXhPZiBhcyBfaW5kZXhPZixcbiAgICByZWR1Y2UgYXMgX3JlZHVjZSxcbiAgICBzb21lIGFzIF9zb21lLFxufSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZ2V0U2NlbmFyaW9UYWdEYXRhQ29uZmlnIH0gZnJvbSAnLi4vY29uc3RzL3NjZW5hcmlvLXRhZ3MtY29uZmlnJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNjZW5hcmlvU2VydmljZSB7XG4gICAgcHJpdmF0ZSBERUZBVUxUX0ZPUkVDQVNUX0RBVEVfVEFHID0gJ01vbnRoJztcblxuICAgIHByaXZhdGUgd2hvbGVUYWdzQ29uZmlnOiBJVGFnW107XG4gICAgcHJpdmF0ZSBjdXJyZW50VGFnc0NvbmZpZzogSVRhZ1tdO1xuICAgIHByaXZhdGUgaXNNdWx0aXBsZURpbWVuc2lvbjogYm9vbGVhbjtcblxuICAgIHB1YmxpYyBnZXQgc2NlbmFyaW9zKCk6IFNjZW5hcmlvW10ge1xuICAgICAgICByZXR1cm4gX29yZGVyQnkoT2JqZWN0LnZhbHVlcyhTY2VuYXJpbyksIChzY2VuYXJpbykgPT4gc2NlbmFyaW8gPT09IFNjZW5hcmlvLk5PTkUgPyAxIDogMCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgYXJlRXhpc3RpbmdUYWdzQ29uZmlnKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLmN1cnJlbnRUYWdzQ29uZmlnO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbml0U2NlbmFyaW9UYWdzKHdob2xlVGFnc0NvbmZpZzogSVRhZ1tdLCBjdXJyZW50VGFnc0NvbmZpZzogSVRhZ1tdLCBpc011bHRpcGxlRGltZW5zaW9uOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICghd2hvbGVUYWdzQ29uZmlnPy5sZW5ndGgpIHJldHVybjtcblxuICAgICAgICB0aGlzLndob2xlVGFnc0NvbmZpZyA9IF9jbG9uZURlZXAod2hvbGVUYWdzQ29uZmlnKTtcbiAgICAgICAgdGhpcy5jdXJyZW50VGFnc0NvbmZpZyA9IGN1cnJlbnRUYWdzQ29uZmlnO1xuICAgICAgICB0aGlzLmlzTXVsdGlwbGVEaW1lbnNpb24gPSBpc011bHRpcGxlRGltZW5zaW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRUYWdzQ29uZmlnQnlTY2VuYXJpb1RhZ3Moc2NlbmFyaW9UYWdzOiBJU2NlbmFyaW9UYWdVaVtdLCB0YWdzQ29uZmlnOiBJVGFnW10pOiBJVGFnW10ge1xuICAgICAgICBjb25zdCBzY2VuYXJpb1RhZ3NDb25maWcgPSBfZmlsdGVyKHRhZ3NDb25maWcsICh0YWdDb25maWcpID0+XG4gICAgICAgICAgICBfc29tZShzY2VuYXJpb1RhZ3MsIChzY2VuYXJpb1RhZykgPT4gc2NlbmFyaW9UYWcudG9nZ2xlICYmIHNjZW5hcmlvVGFnLnNlbGVjdGVkVGFnU3ViVHlwZSA9PT0gdGFnQ29uZmlnLm9wdGlvbnMuc3ViX3R5cGUpKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5zb3J0U2NlbmFyaW9UYWdzKHNjZW5hcmlvVGFnc0NvbmZpZyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFNjZW5hcmlvVGFnc0J5U2NlbmFyaW8oc2NlbmFyaW86IFNjZW5hcmlvKSB7XG4gICAgICAgIGNvbnN0IHNjZW5hcmlvVGFnc0NvbmZpZzogSVNjZW5hcmlvVGFnW10gPSB0aGlzLmdldFNjZW5hcmlvVGFnc0NvbmZpZyhzY2VuYXJpbywgdGhpcy53aG9sZVRhZ3NDb25maWcpO1xuICAgICAgICBjb25zdCBzY2VuYXJpb1RhZ3NVaTogSVNjZW5hcmlvVGFnVWlbXSA9IFtdO1xuXG4gICAgICAgIF9mb3JFYWNoKHNjZW5hcmlvVGFnc0NvbmZpZywgKHNjZW5hcmlvVGFnOiBJU2NlbmFyaW9UYWcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlzVGFnV2l0aFN1YlRhZ3MgPSBzY2VuYXJpb1RhZy50eXBlID09PSBUYWdUeXBlcy5EQVRFO1xuICAgICAgICAgICAgY29uc3QgdGFnV2l0aFN1YlRhZ3MgPSBpc1RhZ1dpdGhTdWJUYWdzICYmIF9maW5kKHNjZW5hcmlvVGFnc1VpLCB7IHR5cGU6IHNjZW5hcmlvVGFnLnR5cGUgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHRhZzogSVNjZW5hcmlvVGFnVWkgPSB0YWdXaXRoU3ViVGFncyB8fCB0aGlzLnByZXBhcmVTY2VuYXJpb1RhZyhzY2VuYXJpb1RhZ3NDb25maWcsIHNjZW5hcmlvVGFnLCBzY2VuYXJpbywgaXNUYWdXaXRoU3ViVGFncyk7XG5cbiAgICAgICAgICAgIGlmIChpc1RhZ1dpdGhTdWJUYWdzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTY2VuYXJpb1N1YlRhZ3ModGFnLCBzY2VuYXJpb1RhZyk7XG4gICAgICAgICAgICAgICAgdGFnLnN1YlRhZ3MgPSB0aGlzLnNvcnRlZFNjZW5hcmlvU3ViVGFncyh0YWcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGFnV2l0aFN1YlRhZ3MpIHJldHVybjtcbiAgICAgICAgICAgIHNjZW5hcmlvVGFnc1VpLnB1c2godGFnKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuYXJlRXhpc3RpbmdUYWdzQ29uZmlnKSB7XG4gICAgICAgICAgICB0aGlzLmluaXRFeGlzdGluZ1RhZ3NDb25maWcoc2NlbmFyaW8sIHNjZW5hcmlvVGFnc1VpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlzVGFnTm90U3VwcG9ydGluZ0RhdGVzID0gX3NvbWUoc2NlbmFyaW9UYWdzVWksIHsgdHVybk9mZkRhdGVUYWdzOiB0cnVlLCB0b2dnbGU6IHRydWUgfSk7XG4gICAgICAgIGlmIChpc1RhZ05vdFN1cHBvcnRpbmdEYXRlcykge1xuICAgICAgICAgICAgdGhpcy50dXJuT2ZmRGF0ZVRhZyhzY2VuYXJpb1RhZ3NVaSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0YWdXaXRoU3BlY2lmaWNEYXRlVGFnczogSVNjZW5hcmlvVGFnVWkgPSBfZmluZChzY2VuYXJpb1RhZ3NVaSwgKHRhZykgPT4gdGFnLnRvZ2dsZSAmJiAhIXRhZy5hY2NlcHRhYmxlRGF0ZVRhZ3M/Lmxlbmd0aCk7XG4gICAgICAgIGlmICh0YWdXaXRoU3BlY2lmaWNEYXRlVGFncykge1xuICAgICAgICAgICAgdGhpcy5oaWRlTm90QXZhaWxhYmxlVGFncyh0YWdXaXRoU3BlY2lmaWNEYXRlVGFncywgc2NlbmFyaW9UYWdzVWkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuc29ydFNjZW5hcmlvVGFncyhzY2VuYXJpb1RhZ3NVaSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNvcnRTY2VuYXJpb1RhZ3Moc2NlbmFyaW9UYWdzVWk6IGFueVtdKTogYW55W10ge1xuICAgICAgICByZXR1cm4gX29yZGVyQnkoc2NlbmFyaW9UYWdzVWksIFtcbiAgICAgICAgICAgICh0YWcpID0+ICh0YWcudHlwZSA9PT0gVGFnVHlwZXMuREFURSA/IDAgOiAxKSxcbiAgICAgICAgICAgICh0YWcpID0+ICh0YWcubmFtZSA9PT0gJ0ZpbGUgU3RhdHVzJylcbiAgICAgICAgXSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0RXhpc3RpbmdUYWdzQ29uZmlnKHNjZW5hcmlvOiBTY2VuYXJpbywgc2NlbmFyaW9UYWdzVWk6IElTY2VuYXJpb1RhZ1VpW10pIHtcbiAgICAgICAgX2ZvckVhY2godGhpcy5jdXJyZW50VGFnc0NvbmZpZywgKHRhZ0NvbmZpZykgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGFnU3ViVHlwZSA9IHRhZ0NvbmZpZz8ub3B0aW9ucz8uc3ViX3R5cGU7XG4gICAgICAgICAgICBjb25zdCBzY2VuYXJpb1RhZ0RhdGFDb25maWcgPSBnZXRTY2VuYXJpb1RhZ0RhdGFDb25maWcodGhpcy5pc011bHRpcGxlRGltZW5zaW9uKTtcbiAgICAgICAgICAgIGlmICghc2NlbmFyaW9UYWdEYXRhQ29uZmlnIHx8ICFzY2VuYXJpb1RhZ0RhdGFDb25maWdbc2NlbmFyaW9dIHx8ICFzY2VuYXJpb1RhZ0RhdGFDb25maWdbc2NlbmFyaW9dW3RhZ1N1YlR5cGVdKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBzY2VuYXJpb1RhZ1VpID0gdGFnQ29uZmlnLnR5cGUgPT09IFRhZ1R5cGVzLkRBVEVcbiAgICAgICAgICAgICAgICA/IF9maW5kKHNjZW5hcmlvVGFnc1VpLCB7IHR5cGU6IHRhZ0NvbmZpZy50eXBlIH0pXG4gICAgICAgICAgICAgICAgOiBfZmluZChzY2VuYXJpb1RhZ3NVaSwgeyBzZWxlY3RlZFRhZ1N1YlR5cGU6IHRhZ1N1YlR5cGUgfSk7XG5cbiAgICAgICAgICAgIHNjZW5hcmlvVGFnVWkudG9nZ2xlID0gdHJ1ZTtcbiAgICAgICAgICAgIHNjZW5hcmlvVGFnVWkuc2VsZWN0ZWRUYWdTdWJUeXBlID0gdGFnU3ViVHlwZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwcmVwYXJlU2NlbmFyaW9UYWcoc2NlbmFyaW9UYWdzQ29uZmlnOiBJU2NlbmFyaW9UYWdbXSwgc2NlbmFyaW9UYWc6IElTY2VuYXJpb1RhZywgc2NlbmFyaW86IFNjZW5hcmlvLCBpc0RhdGVUYWc6IGJvb2xlYW4pOiBJU2NlbmFyaW9UYWdVaSB7XG4gICAgICAgIGNvbnN0IHRvZ2dsZVN0YXR1cyA9IGlzRGF0ZVRhZ1xuICAgICAgICAgICAgPyBfc29tZShzY2VuYXJpb1RhZ3NDb25maWcsICh0YWcpID0+IHRhZy50eXBlID09PSBUYWdUeXBlcy5EQVRFICYmIHRhZy5zY2VuYXJpb0RhdGEudG9nZ2xlKVxuICAgICAgICAgICAgOiBzY2VuYXJpb1RhZy5zY2VuYXJpb0RhdGEudG9nZ2xlO1xuXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkVGFnU3ViVHlwZSA9ICBpc0RhdGVUYWdcbiAgICAgICAgICAgICAgICA/IHRoaXMuZ2V0U2NlbmFyaW9TZWxlY3RlZERhdGVUYWcoc2NlbmFyaW8sIHNjZW5hcmlvVGFnc0NvbmZpZylcbiAgICAgICAgICAgICAgICA6IHNjZW5hcmlvVGFnLm9wdGlvbnMuc3ViX3R5cGU7XG5cbiAgICAgICAgY29uc3QgdGFnOiBJU2NlbmFyaW9UYWdVaSA9IHtcbiAgICAgICAgICAgIHRvZ2dsZTogdGhpcy5hcmVFeGlzdGluZ1RhZ3NDb25maWcgPyBmYWxzZSA6IHRvZ2dsZVN0YXR1cyxcbiAgICAgICAgICAgIG5hbWU6IHNjZW5hcmlvVGFnLnNjZW5hcmlvRGF0YS5uYW1lIHx8IHNjZW5hcmlvVGFnLm5hbWUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogc2NlbmFyaW9UYWcuc2NlbmFyaW9EYXRhLmRlc2NyaXB0aW9uIHx8IHNjZW5hcmlvVGFnLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgdHlwZTogc2NlbmFyaW9UYWcudHlwZSxcbiAgICAgICAgICAgIHNlbGVjdGVkVGFnU3ViVHlwZSxcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoc2NlbmFyaW9UYWcuc2NlbmFyaW9EYXRhLnR1cm5PZmZEYXRlVGFncykge1xuICAgICAgICAgICAgdGFnLnR1cm5PZmZEYXRlVGFncyA9IHNjZW5hcmlvVGFnLnNjZW5hcmlvRGF0YS50dXJuT2ZmRGF0ZVRhZ3M7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2NlbmFyaW9UYWcuc2NlbmFyaW9EYXRhLmFjY2VwdGFibGVEYXRlVGFncykge1xuICAgICAgICAgICAgdGFnLmFjY2VwdGFibGVEYXRlVGFncyA9IHNjZW5hcmlvVGFnLnNjZW5hcmlvRGF0YS5hY2NlcHRhYmxlRGF0ZVRhZ3M7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGFnO1xuICAgIH1cblxuICAgIHByaXZhdGUgc29ydGVkU2NlbmFyaW9TdWJUYWdzKHRhZzogSVNjZW5hcmlvVGFnVWkpOiBJU2NlbmFyaW9TdWJUYWdbXSB7XG4gICAgICAgIGNvbnN0IFNVQl9UQUdTX09SREVSID0gW1RhZ3NDb25maWdTdWJUeXBlLkRBWSwgVGFnc0NvbmZpZ1N1YlR5cGUuV0VFSywgVGFnc0NvbmZpZ1N1YlR5cGUuTU9OVEgsIFRhZ3NDb25maWdTdWJUeXBlLlFVQVJURVIsIFRhZ3NDb25maWdTdWJUeXBlLllFQVJdO1xuICAgICAgICByZXR1cm4gX29yZGVyQnkodGFnLnN1YlRhZ3MsIChzdWJUYWcpID0+IF9pbmRleE9mKFNVQl9UQUdTX09SREVSLCBzdWJUYWcuc3ViVHlwZSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlU2NlbmFyaW9TdWJUYWdzKHRhZzogSVNjZW5hcmlvVGFnVWksIHNjZW5hcmlvVGFnOiBJU2NlbmFyaW9UYWcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0YWcuc3ViVGFncykge1xuICAgICAgICAgICAgdGFnLnN1YlRhZ3MgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRhZ1N1YlR5cGUgPSBzY2VuYXJpb1RhZy5vcHRpb25zLnN1Yl90eXBlO1xuXG4gICAgICAgIHRhZy5zdWJUYWdzLnB1c2goe1xuICAgICAgICAgICAgc3ViVHlwZTogdGFnU3ViVHlwZSxcbiAgICAgICAgICAgIG5hbWU6IHRhZ1N1YlR5cGUgPT09IFRhZ3NDb25maWdTdWJUeXBlLkZPUkVDQVNUX05FVyA/IHRoaXMuREVGQVVMVF9GT1JFQ0FTVF9EQVRFX1RBRyA6IHNjZW5hcmlvVGFnLm5hbWUsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgdHVybk9mZkRhdGVUYWcoc2NlbmFyaW9UYWdzOiBJU2NlbmFyaW9UYWdVaVtdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGRhdGVUYWcgPSBfZmluZChzY2VuYXJpb1RhZ3MsIHsgdHlwZTogVGFnVHlwZXMuREFURSB9KTtcblxuICAgICAgICBpZiAoIWRhdGVUYWcpIHJldHVybjtcbiAgICAgICAgZGF0ZVRhZy50b2dnbGU9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGlkZU5vdEF2YWlsYWJsZVRhZ3ModGFnV2l0aFNwZWNpZmljRGF0ZVRhZ3M6IElTY2VuYXJpb1RhZ1VpLCBzY2VuYXJpb1RhZ3M6IElTY2VuYXJpb1RhZ1VpW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc3ViVGFncyA9IF9maW5kKHNjZW5hcmlvVGFncywgeyB0eXBlOiBUYWdUeXBlcy5EQVRFIH0pPy5zdWJUYWdzO1xuICAgICAgICBpZiAoIXN1YlRhZ3MubGVuZ3RoKSByZXR1cm47XG5cbiAgICAgICAgX2ZvckVhY2goc2NlbmFyaW9UYWdzLCAodGFnKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRhZy5hY2NlcHRhYmxlRGF0ZVRhZ3M/Lmxlbmd0aCkgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKHRhZyAhPT0gdGFnV2l0aFNwZWNpZmljRGF0ZVRhZ3MpIHtcbiAgICAgICAgICAgICAgICB0YWcudG9nZ2xlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIF9mb3JFYWNoKHN1YlRhZ3MsIChzdWJUYWcpID0+IHtcbiAgICAgICAgICAgIHN1YlRhZy5oaWRkZW4gPSAhdGFnV2l0aFNwZWNpZmljRGF0ZVRhZ3MuYWNjZXB0YWJsZURhdGVUYWdzLmluY2x1ZGVzKHN1YlRhZy5zdWJUeXBlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTY2VuYXJpb1NlbGVjdGVkRGF0ZVRhZyhzY2VuYXJpbzogU2NlbmFyaW8sIGRhdGVUYWdzOiBJU2NlbmFyaW9UYWdbXSk6IFRhZ3NDb25maWdTdWJUeXBlIHtcbiAgICAgICAgY29uc3QgbW9udGhTdWJUeXBlID0gX2ZpbmQoZGF0ZVRhZ3MsICh0YWc6IElTY2VuYXJpb1RhZykgPT4gdGFnLm9wdGlvbnMuc3ViX3R5cGUgPT09IFRhZ3NDb25maWdTdWJUeXBlLk1PTlRIKT8ub3B0aW9ucz8uc3ViX3R5cGU7XG5cbiAgICAgICAgY29uc3Qgc2NlbmFyaW9TZWxlY3RlZERhdGVUYWcgPSB7XG4gICAgICAgICAgICBbU2NlbmFyaW8uQUNUVUFMU106ICgpID0+IG1vbnRoU3ViVHlwZSxcbiAgICAgICAgICAgIFtTY2VuYXJpby5CVURHRVRdOiAoKSA9PiBfZmluZChkYXRlVGFncywgKHRhZzogSVNjZW5hcmlvVGFnKSA9PiB0YWcub3B0aW9ucy5zdWJfdHlwZSA9PT0gVGFnc0NvbmZpZ1N1YlR5cGUuWUVBUik/Lm9wdGlvbnM/LnN1Yl90eXBlLFxuICAgICAgICAgICAgW1NjZW5hcmlvLkZPUkVDQVNUXTogKCkgPT4gX2ZpbmQoZGF0ZVRhZ3MsICh0YWc6IElTY2VuYXJpb1RhZykgPT4gdGFnLm9wdGlvbnMuc3ViX3R5cGUgPT09IFRhZ3NDb25maWdTdWJUeXBlLkZPUkVDQVNUX05FVyk/Lm9wdGlvbnM/LnN1Yl90eXBlLFxuICAgICAgICAgICAgW1NjZW5hcmlvLk5PTkVdOiAoKSA9PiBtb250aFN1YlR5cGUsXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXNjZW5hcmlvU2VsZWN0ZWREYXRlVGFnW3NjZW5hcmlvXSkgcmV0dXJuO1xuICAgICAgICByZXR1cm4gc2NlbmFyaW9TZWxlY3RlZERhdGVUYWdbc2NlbmFyaW9dKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTY2VuYXJpb1RhZ3NDb25maWcoc2NlbmFyaW86IFNjZW5hcmlvLCB0YWdzQ29uZmlnOiBJVGFnW10pOiBJU2NlbmFyaW9UYWdbXSB7XG4gICAgICAgIHJldHVybiBfcmVkdWNlKHRhZ3NDb25maWcsIChhY2M6IElTY2VuYXJpb1RhZ1tdLCB0YWdDb25maWc6IElUYWcpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRhZ1N1YlR5cGUgPSB0YWdDb25maWc/Lm9wdGlvbnM/LnN1Yl90eXBlO1xuXG4gICAgICAgICAgICBjb25zdCBzY2VuYXJpb1RhZ0RhdGFDb25maWcgPSBnZXRTY2VuYXJpb1RhZ0RhdGFDb25maWcodGhpcy5pc011bHRpcGxlRGltZW5zaW9uKTtcbiAgICAgICAgICAgIGNvbnN0IHNjZW5hcmlvVGFnQ29uZmlnOiBJU2NlbmFyaW8gPSBzY2VuYXJpb1RhZ0RhdGFDb25maWcgJiYgc2NlbmFyaW9UYWdEYXRhQ29uZmlnW3NjZW5hcmlvXSA/XG4gICAgICAgICAgICAgICAgc2NlbmFyaW9UYWdEYXRhQ29uZmlnW3NjZW5hcmlvXVt0YWdTdWJUeXBlXSA6IG51bGw7XG4gICAgICAgICAgICBpZiAoIXNjZW5hcmlvVGFnQ29uZmlnIHx8IHNjZW5hcmlvVGFnQ29uZmlnLmhpZGRlbikgcmV0dXJuIGFjYztcblxuICAgICAgICAgICAgY29uc3QgY2xvbmVkVGFnQ29uZmlnID0gX2Nsb25lRGVlcCh0YWdDb25maWcpO1xuICAgICAgICAgICAgY29uc3Qgc2NlbmFyaW9UYWc6IElTY2VuYXJpb1RhZyA9IHsgLi4uY2xvbmVkVGFnQ29uZmlnLCBzY2VuYXJpb0RhdGE6IHNjZW5hcmlvVGFnQ29uZmlnIH07XG5cbiAgICAgICAgICAgIGFjYy5wdXNoKHNjZW5hcmlvVGFnKTtcbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sIFtdKTtcbiAgICB9XG59XG4iXX0=
196
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NlbmFyaW8uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RyLXNjZW5hcmlvL3NlcnZpY2VzL3NjZW5hcmlvLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQVEsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUUsT0FBTyxFQUE0RCxRQUFRLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RyxPQUFPLEVBQ0gsU0FBUyxJQUFJLFVBQVUsRUFDdkIsTUFBTSxJQUFJLE9BQU8sRUFDakIsSUFBSSxJQUFJLEtBQUssRUFDYixPQUFPLElBQUksUUFBUSxFQUNuQixPQUFPLElBQUksUUFBUSxFQUNuQixPQUFPLElBQUksUUFBUSxFQUNuQixNQUFNLElBQUksT0FBTyxFQUNqQixJQUFJLElBQUksS0FBSyxFQUNiLEdBQUcsSUFBSSxJQUFJLEVBQ1gsUUFBUSxJQUFJLFNBQVMsR0FDeEIsTUFBTSxRQUFRLENBQUM7QUFDaEIsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHMUUsTUFBTSxPQUFPLGVBQWU7SUFENUI7UUFFWSw4QkFBeUIsR0FBRyxPQUFPLENBQUM7SUEwT2hELENBQUM7SUFuT0csSUFBVyxTQUFTO1FBQ2hCLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRCxJQUFZLHFCQUFxQjtRQUM3QixPQUFPLENBQUMsQ0FBQyxJQUFJ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ZUFBZSxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM5QyxNQUFNLFdBQVcsbUNBQXNCLGVBQWUsS0FBRSxZQUFZLEVBQUUsaUJBQWlCLEdBQUUsQ0FBQztZQUUxRixHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3RCLE9BQU8sR0FBRyxDQUFDO1FBQ2YsQ0FBQyxFQUNELEVBQUUsQ0FDTCxDQUFDO0lBQ04sQ0FBQzs7O1lBM09KLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJVGFnLCBUYWdzQ29uZmlnU3ViVHlwZSwgVGFnVHlwZXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2VydmVyVGFncyc7XG5pbXBvcnQgeyBJU2NlbmFyaW8sIElTY2VuYXJpb1N1YlRhZywgSVNjZW5hcmlvVGFnLCBJU2NlbmFyaW9UYWdVaSwgU2NlbmFyaW8gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NjZW5hcmlvJztcbmltcG9ydCB7XG4gICAgY2xvbmVEZWVwIGFzIF9jbG9uZURlZXAsXG4gICAgZmlsdGVyIGFzIF9maWx0ZXIsXG4gICAgZmluZCBhcyBfZmluZCxcbiAgICBmb3JFYWNoIGFzIF9mb3JFYWNoLFxuICAgIG9yZGVyQnkgYXMgX29yZGVyQnksXG4gICAgaW5kZXhPZiBhcyBfaW5kZXhPZixcbiAgICByZWR1Y2UgYXMgX3JlZHVjZSxcbiAgICBzb21lIGFzIF9zb21lLFxuICAgIG1hcCBhcyBfbWFwLFxuICAgIGluY2x1ZGVzIGFzIF9pbmNsdWRlcyxcbn0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGdldFNjZW5hcmlvVGFnRGF0YUNvbmZpZyB9IGZyb20gJy4uL2NvbnN0cy9zY2VuYXJpby10YWdzLWNvbmZpZyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTY2VuYXJpb1NlcnZpY2Uge1xuICAgIHByaXZhdGUgREVGQVVMVF9GT1JFQ0FTVF9EQVRFX1RBRyA9ICdNb250aCc7XG5cbiAgICBwcml2YXRlIHdob2xlVGFnc0NvbmZpZzogSVRhZ1tdO1xuICAgIHByaXZhdGUgY3VycmVudFRhZ3NDb25maWc6IElUYWdbXTtcbiAgICBwcml2YXRlIGlzTXVsdGlwbGVEaW1lbnNpb246IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBpc0ZvcmVjYXN0TXVsdGlwbGVEaW1lbnNpb246IGJvb2xlYW47XG5cbiAgICBwdWJsaWMgZ2V0IHNjZW5hcmlvcygpOiBTY2VuYXJpb1tdIHtcbiAgICAgICAgcmV0dXJuIF9vcmRlckJ5KE9iamVjdC52YWx1ZXMoU2NlbmFyaW8pLCAoc2NlbmFyaW8pID0+IHNjZW5hcmlvID09PSBTY2VuYXJpby5OT05FID8gMSA6IDApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGFyZUV4aXN0aW5nVGFnc0NvbmZpZygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5jdXJyZW50VGFnc0NvbmZpZztcbiAgICB9XG5cbiAgICBwdWJsaWMgaW5pdFNjZW5hcmlvVGFncyh3aG9sZVRhZ3NDb25maWc6IElUYWdbXSwgY3VycmVudFRhZ3NDb25maWc6IElUYWdbXSwgaXNNdWx0aXBsZURpbWVuc2lvbjogYm9vbGVhbiwgaXNGb3JlY2FzdE11bHRpcGxlRGltZW5zaW9uOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICghd2hvbGVUYWdzQ29uZmlnPy5sZW5ndGgpIHJldHVybjtcblxuICAgICAgICB0aGlzLndob2xlVGFnc0NvbmZpZyA9IF9jbG9uZURlZXAod2hvbGVUYWdzQ29uZmlnKTtcbiAgICAgICAgdGhpcy5jdXJyZW50VGFnc0NvbmZpZyA9IGN1cnJlbnRUYWdzQ29uZmlnO1xuICAgICAgICB0aGlzLmlzTXVsdGlwbGVEaW1lbnNpb24gPSBpc011bHRpcGxlRGltZW5zaW9uO1xuICAgICAgICB0aGlzLmlzRm9yZWNhc3RNdWx0aXBsZURpbWVuc2lvbiA9IGlzRm9yZWNhc3RNdWx0aXBsZURpbWVuc2lvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VGFnc0NvbmZpZ0J5U2NlbmFyaW9UYWdzKHNjZW5hcmlvVGFnczogSVNjZW5hcmlvVGFnVWlbXSwgdGFnc0NvbmZpZzogSVRhZ1tdKTogSVRhZ1tdIHtcbiAgICAgICAgY29uc3Qgc2NlbmFyaW9UYWdzQ29uZmlnID0gX2ZpbHRlcih0YWdzQ29uZmlnLCAodGFnQ29uZmlnKSA9PlxuICAgICAgICAgICAgX3NvbWUoc2NlbmFyaW9UYWdzLCAoc2NlbmFyaW9UYWcpID0+IHNjZW5hcmlvVGFnLnRvZ2dsZSAmJiBzY2VuYXJpb1RhZy5zZWxlY3RlZFRhZ1N1YlR5cGUgPT09IHRhZ0NvbmZpZy5vcHRpb25zLnN1Yl90eXBlKSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuc29ydFNjZW5hcmlvVGFncyhzY2VuYXJpb1RhZ3NDb25maWcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTY2VuYXJpb1RhZ3NCeVNjZW5hcmlvKHNjZW5hcmlvOiBTY2VuYXJpbykge1xuICAgICAgICBjb25zdCBzY2VuYXJpb1RhZ3NDb25maWc6IElTY2VuYXJpb1RhZ1tdID0gdGhpcy5nZXRTY2VuYXJpb1RhZ3NDb25maWcoc2NlbmFyaW8sIHRoaXMud2hvbGVUYWdzQ29uZmlnKTtcbiAgICAgICAgY29uc3Qgc2NlbmFyaW9UYWdzVWk6IElTY2VuYXJpb1RhZ1VpW10gPSBbXTtcblxuICAgICAgICBfZm9yRWFjaChzY2VuYXJpb1RhZ3NDb25maWcsIChzY2VuYXJpb1RhZzogSVNjZW5hcmlvVGFnKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpc1RhZ1dpdGhTdWJUYWdzID0gc2NlbmFyaW9UYWcudHlwZSA9PT0gVGFnVHlwZXMuREFURTtcbiAgICAgICAgICAgIGNvbnN0IHRhZ1dpdGhTdWJUYWdzID0gaXNUYWdXaXRoU3ViVGFncyAmJiBfZmluZChzY2VuYXJpb1RhZ3NVaSwgeyB0eXBlOiBzY2VuYXJpb1RhZy50eXBlIH0pO1xuXG4gICAgICAgICAgICBjb25zdCB0YWc6IElTY2VuYXJpb1RhZ1VpID0gdGFnV2l0aFN1YlRhZ3MgfHwgdGhpcy5wcmVwYXJlU2NlbmFyaW9UYWcoc2NlbmFyaW9UYWdzQ29uZmlnLCBzY2VuYXJpb1RhZywgc2NlbmFyaW8sIGlzVGFnV2l0aFN1YlRhZ3MpO1xuXG4gICAgICAgICAgICBpZiAoaXNUYWdXaXRoU3ViVGFncykge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU2NlbmFyaW9TdWJUYWdzKHRhZywgc2NlbmFyaW9UYWcpO1xuICAgICAgICAgICAgICAgIHRhZy5zdWJUYWdzID0gU2NlbmFyaW9TZXJ2aWNlLnNvcnRlZFN1YlRhZ3ModGFnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRhZ1dpdGhTdWJUYWdzKSByZXR1cm47XG4gICAgICAgICAgICBzY2VuYXJpb1RhZ3NVaS5wdXNoKHRhZyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLmFyZUV4aXN0aW5nVGFnc0NvbmZpZykge1xuICAgICAgICAgICAgdGhpcy5pbml0RXhpc3RpbmdUYWdzQ29uZmlnKHNjZW5hcmlvLCBzY2VuYXJpb1RhZ3NVaSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpc1RhZ05vdFN1cHBvcnRpbmdEYXRlcyA9IF9zb21lKHNjZW5hcmlvVGFnc1VpLCB7IHR1cm5PZmZEYXRlVGFnczogdHJ1ZSwgdG9nZ2xlOiB0cnVlIH0pO1xuICAgICAgICBpZiAoaXNUYWdOb3RTdXBwb3J0aW5nRGF0ZXMpIHtcbiAgICAgICAgICAgIHRoaXMudHVybk9mZkRhdGVUYWcoc2NlbmFyaW9UYWdzVWkpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGFnV2l0aFNwZWNpZmljRGF0ZVRhZ3M6IElTY2VuYXJpb1RhZ1VpID0gX2ZpbmQoXG4gICAgICAgICAgICBzY2VuYXJpb1RhZ3NVaSxcbiAgICAgICAgICAgICh0YWcpID0+IHRhZy50b2dnbGUgJiYgISF0YWcuYWNjZXB0YWJsZVN1YlRhZ3M/Lmxlbmd0aCxcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHRhZ1dpdGhTcGVjaWZpY0RhdGVUYWdzKSB7XG4gICAgICAgICAgICB0aGlzLmhpZGVOb3RBdmFpbGFibGVUYWdzKHRhZ1dpdGhTcGVjaWZpY0RhdGVUYWdzLCBzY2VuYXJpb1RhZ3NVaSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5zb3J0U2NlbmFyaW9UYWdzKHNjZW5hcmlvVGFnc1VpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdGFnTm90U3VwcG9ydGluZ0RhdGVzSGFuZGxlcjxUIGV4dGVuZHMgSVNjZW5hcmlvVGFnVWk+KHRhZzogVCwgdGFnTm90U3VwcG9ydGluZ0RhdGVzOiBULCBkYXRlVGFnOiBUKTogdm9pZCB7XG4gICAgICAgIGlmICghdGFnTm90U3VwcG9ydGluZ0RhdGVzIHx8ICF0YWcudG9nZ2xlKSByZXR1cm47XG5cbiAgICAgICAgaWYgKHRhZy50eXBlID09PSBUYWdUeXBlcy5EQVRFKSB7XG4gICAgICAgICAgICB0YWdOb3RTdXBwb3J0aW5nRGF0ZXMudG9nZ2xlID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGFnID09PSB0YWdOb3RTdXBwb3J0aW5nRGF0ZXMpIHtcbiAgICAgICAgICAgIGlmIChkYXRlVGFnKSB7XG4gICAgICAgICAgICAgICAgZGF0ZVRhZy50b2dnbGUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB0YWdBY2NlcHRhYmxlU3ViVGFnc0hhbmRsZXI8VCBleHRlbmRzIElTY2VuYXJpb1RhZ1VpPih0YWc6IFQsIGRhdGVUYWc6IFQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0YWcuYWNjZXB0YWJsZVN1YlRhZ3M/Lmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgICAgIGlmICghZGF0ZVRhZykgcmV0dXJuO1xuXG4gICAgICAgIGRhdGVUYWcuc3ViVGFncyA9IF9tYXAoZGF0ZVRhZy5zdWJUYWdzLCAoc3ViVGFnKSA9PiB7XG4gICAgICAgICAgICBzdWJUYWcuaGlkZGVuID0gdGFnLnRvZ2dsZSAmJiAhX2luY2x1ZGVzKHRhZy5hY2NlcHRhYmxlU3ViVGFncywgc3ViVGFnLnN1YlR5cGUpO1xuICAgICAgICAgICAgcmV0dXJuIHN1YlRhZztcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZGF0ZVRhZy5zZWxlY3RlZFRhZ1N1YlR5cGUgPSB0YWcuYWNjZXB0YWJsZVN1YlRhZ3NbMF07XG4gICAgfVxuXG4gICAgcHVibGljIHNvcnRTY2VuYXJpb1RhZ3Moc2NlbmFyaW9UYWdzVWk6IGFueVtdKTogYW55W10ge1xuICAgICAgICByZXR1cm4gX29yZGVyQnkoc2NlbmFyaW9UYWdzVWksIFsodGFnKSA9PiAodGFnLnR5cGUgPT09IFRhZ1R5cGVzLkRBVEUgPyAwIDogMSksICh0YWcpID0+IHRhZy5uYW1lID09PSAnRmlsZSBTdGF0dXMnXSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzb3J0ZWRTdWJUYWdzKHRhZzogSVNjZW5hcmlvVGFnVWkpOiBJU2NlbmFyaW9TdWJUYWdbXSB7XG4gICAgICAgIGNvbnN0IFNVQl9UQUdTX09SREVSID0gW1xuICAgICAgICAgICAgVGFnc0NvbmZpZ1N1YlR5cGUuREFZLFxuICAgICAgICAgICAgVGFnc0NvbmZpZ1N1YlR5cGUuV0VFSyxcbiAgICAgICAgICAgIFRhZ3NDb25maWdTdWJUeXBlLk1PTlRILFxuICAgICAgICAgICAgVGFnc0NvbmZpZ1N1YlR5cGUuUVVBUlRFUixcbiAgICAgICAgICAgIFRhZ3NDb25maWdTdWJUeXBlLllFQVIsXG4gICAgICAgIF07XG4gICAgICAgIHJldHVybiBfb3JkZXJCeSh0YWcuc3ViVGFncywgKHN1YlRhZykgPT4gX2luZGV4T2YoU1VCX1RBR1NfT1JERVIsIHN1YlRhZy5zdWJUeXBlKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpbml0RXhpc3RpbmdUYWdzQ29uZmlnKHNjZW5hcmlvOiBTY2VuYXJpbywgc2NlbmFyaW9UYWdzVWk6IElTY2VuYXJpb1RhZ1VpW10pIHtcbiAgICAgICAgX2ZvckVhY2godGhpcy5jdXJyZW50VGFnc0NvbmZpZywgKHRhZ0NvbmZpZykgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGFnU3ViVHlwZSA9IHRhZ0NvbmZpZz8ub3B0aW9ucz8uc3ViX3R5cGU7XG4gICAgICAgICAgICBjb25zdCBzY2VuYXJpb1RhZ0RhdGFDb25maWcgPSBnZXRTY2VuYXJpb1RhZ0RhdGFDb25maWcodGhpcy5pc011bHRpcGxlRGltZW5zaW9uLCB0aGlzLmlzRm9yZWNhc3RNdWx0aXBsZURpbWVuc2lvbik7XG4gICAgICAgICAgICBpZiAoIXNjZW5hcmlvVGFnRGF0YUNvbmZpZyB8fCAhc2NlbmFyaW9UYWdEYXRhQ29uZmlnW3NjZW5hcmlvXSB8fCAhc2NlbmFyaW9UYWdEYXRhQ29uZmlnW3NjZW5hcmlvXVt0YWdTdWJUeXBlXSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3Qgc2NlbmFyaW9UYWdVaSA9IHRhZ0NvbmZpZy50eXBlID09PSBUYWdUeXBlcy5EQVRFXG4gICAgICAgICAgICAgICAgPyBfZmluZChzY2VuYXJpb1RhZ3NVaSwgeyB0eXBlOiB0YWdDb25maWcudHlwZSB9KVxuICAgICAgICAgICAgICAgIDogX2ZpbmQoc2NlbmFyaW9UYWdzVWksIHsgc2VsZWN0ZWRUYWdTdWJUeXBlOiB0YWdTdWJUeXBlIH0pO1xuXG4gICAgICAgICAgICBpZiAoc2NlbmFyaW9UYWdVaSkge1xuICAgICAgICAgICAgICAgIHNjZW5hcmlvVGFnVWkudG9nZ2xlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBzY2VuYXJpb1RhZ1VpLnNlbGVjdGVkVGFnU3ViVHlwZSA9IHRhZ1N1YlR5cGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJlcGFyZVNjZW5hcmlvVGFnKFxuICAgICAgICBzY2VuYXJpb1RhZ3NDb25maWc6IElTY2VuYXJpb1RhZ1tdLFxuICAgICAgICBzY2VuYXJpb1RhZzogSVNjZW5hcmlvVGFnLFxuICAgICAgICBzY2VuYXJpbzogU2NlbmFyaW8sXG4gICAgICAgIGlzRGF0ZVRhZzogYm9vbGVhbixcbiAgICApOiBJU2NlbmFyaW9UYWdVaSB7XG4gICAgICAgIGNvbnN0IHRvZ2dsZVN0YXR1cyA9IGlzRGF0ZVRhZ1xuICAgICAgICAgICAgPyBfc29tZShzY2VuYXJpb1RhZ3NDb25maWcsICh0YWcpID0+IHRhZy50eXBlID09PSBUYWdUeXBlcy5EQVRFICYmIHRhZy5zY2VuYXJpb0RhdGEudG9nZ2xlKVxuICAgICAgICAgICAgOiBzY2VuYXJpb1RhZy5zY2VuYXJpb0RhdGEudG9nZ2xlO1xuXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkVGFnU3ViVHlwZSA9IGlzRGF0ZVRhZ1xuICAgICAgICAgICAgPyB0aGlzLmdldFNjZW5hcmlvU2VsZWN0ZWREYXRlVGFnKHNjZW5hcmlvLCBzY2VuYXJpb1RhZ3NDb25maWcpXG4gICAgICAgICAgICA6IHNjZW5hcmlvVGFnLm9wdGlvbnMuc3ViX3R5cGU7XG5cbiAgICAgICAgY29uc3QgdGFnOiBJU2NlbmFyaW9UYWdVaSA9IHtcbiAgICAgICAgICAgIHRvZ2dsZTogdGhpcy5hcmVFeGlzdGluZ1RhZ3NDb25maWcgPyBmYWxzZSA6IHRvZ2dsZVN0YXR1cyxcbiAgICAgICAgICAgIG5hbWU6IHNjZW5hcmlvVGFnLnNjZW5hcmlvRGF0YS5uYW1lIHx8IHNjZW5hcmlvVGFnLm5hbWUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogc2NlbmFyaW9UYWcuc2NlbmFyaW9EYXRhLmRlc2NyaXB0aW9uIHx8IHNjZW5hcmlvVGFnLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgdHlwZTogc2NlbmFyaW9UYWcudHlwZSxcbiAgICAgICAgICAgIHNlbGVjdGVkVGFnU3ViVHlwZSxcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoc2NlbmFyaW9UYWcuc2NlbmFyaW9EYXRhLnR1cm5PZmZEYXRlVGFncykge1xuICAgICAgICAgICAgdGFnLnR1cm5PZmZEYXRlVGFncyA9IHNjZW5hcmlvVGFnLnNjZW5hcmlvRGF0YS50dXJuT2ZmRGF0ZVRhZ3M7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2NlbmFyaW9UYWcuc2NlbmFyaW9EYXRhLmFjY2VwdGFibGVTdWJUYWdzKSB7XG4gICAgICAgICAgICB0YWcuYWNjZXB0YWJsZVN1YlRhZ3MgPSBzY2VuYXJpb1RhZy5zY2VuYXJpb0RhdGEuYWNjZXB0YWJsZVN1YlRhZ3M7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGFnO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlU2NlbmFyaW9TdWJUYWdzKHRhZzogSVNjZW5hcmlvVGFnVWksIHNjZW5hcmlvVGFnOiBJU2NlbmFyaW9UYWcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0YWcuc3ViVGFncykge1xuICAgICAgICAgICAgdGFnLnN1YlRhZ3MgPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRhZ1N1YlR5cGUgPSBzY2VuYXJpb1RhZy5vcHRpb25zLnN1Yl90eXBlO1xuXG4gICAgICAgIHRhZy5zdWJUYWdzLnB1c2goe1xuICAgICAgICAgICAgc3ViVHlwZTogdGFnU3ViVHlwZSxcbiAgICAgICAgICAgIG5hbWU6IHRhZ1N1YlR5cGUgPT09IFRhZ3NDb25maWdTdWJUeXBlLkZPUkVDQVNUX05FVyA/IHRoaXMuREVGQVVMVF9GT1JFQ0FTVF9EQVRFX1RBRyA6IHNjZW5hcmlvVGFnLm5hbWUsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgdHVybk9mZkRhdGVUYWcoc2NlbmFyaW9UYWdzOiBJU2NlbmFyaW9UYWdVaVtdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGRhdGVUYWcgPSBfZmluZChzY2VuYXJpb1RhZ3MsIHsgdHlwZTogVGFnVHlwZXMuREFURSB9KTtcblxuICAgICAgICBpZiAoIWRhdGVUYWcpIHJldHVybjtcbiAgICAgICAgZGF0ZVRhZy50b2dnbGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhpZGVOb3RBdmFpbGFibGVUYWdzKHRhZ1dpdGhTcGVjaWZpY0RhdGVUYWdzOiBJU2NlbmFyaW9UYWdVaSwgc2NlbmFyaW9UYWdzOiBJU2NlbmFyaW9UYWdVaVtdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHN1YlRhZ3MgPSBfZmluZChzY2VuYXJpb1RhZ3MsIHsgdHlwZTogVGFnVHlwZXMuREFURSB9KT8uc3ViVGFncztcbiAgICAgICAgaWYgKCFzdWJUYWdzLmxlbmd0aCkgcmV0dXJuO1xuXG4gICAgICAgIF9mb3JFYWNoKHNjZW5hcmlvVGFncywgKHRhZykgPT4ge1xuICAgICAgICAgICAgaWYgKCF0YWcuYWNjZXB0YWJsZVN1YlRhZ3M/Lmxlbmd0aCkgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKHRhZyAhPT0gdGFnV2l0aFNwZWNpZmljRGF0ZVRhZ3MpIHtcbiAgICAgICAgICAgICAgICB0YWcudG9nZ2xlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIF9mb3JFYWNoKHN1YlRhZ3MsIChzdWJUYWcpID0+IHtcbiAgICAgICAgICAgIHN1YlRhZy5oaWRkZW4gPSAhdGFnV2l0aFNwZWNpZmljRGF0ZVRhZ3MuYWNjZXB0YWJsZVN1YlRhZ3MuaW5jbHVkZXMoc3ViVGFnLnN1YlR5cGUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFNjZW5hcmlvU2VsZWN0ZWREYXRlVGFnKHNjZW5hcmlvOiBTY2VuYXJpbywgZGF0ZVRhZ3M6IElTY2VuYXJpb1RhZ1tdKTogVGFnc0NvbmZpZ1N1YlR5cGUge1xuICAgICAgICBjb25zdCBtb250aFN1YlR5cGUgPSBfZmluZChkYXRlVGFncywgKHRhZzogSVNjZW5hcmlvVGFnKSA9PiB0YWcub3B0aW9ucy5zdWJfdHlwZSA9PT0gVGFnc0NvbmZpZ1N1YlR5cGUuTU9OVEgpPy5vcHRpb25zPy5zdWJfdHlwZTtcblxuICAgICAgICBjb25zdCBzY2VuYXJpb1NlbGVjdGVkRGF0ZVRhZyA9IHtcbiAgICAgICAgICAgIFtTY2VuYXJpby5BQ1RVQUxTXTogKCkgPT4gbW9udGhTdWJUeXBlLFxuICAgICAgICAgICAgW1NjZW5hcmlvLkJVREdFVF06ICgpID0+IF9maW5kKGRhdGVUYWdzLCAodGFnOiBJU2NlbmFyaW9UYWcpID0+IHRhZy5vcHRpb25zLnN1Yl90eXBlID09PSBUYWdzQ29uZmlnU3ViVHlwZS5ZRUFSKT8ub3B0aW9ucz8uc3ViX3R5cGUsXG4gICAgICAgICAgICBbU2NlbmFyaW8uRk9SRUNBU1RdOiAoKSA9PiBfZmluZChkYXRlVGFncywgKHRhZzogSVNjZW5hcmlvVGFnKSA9PiB0YWcub3B0aW9ucy5zdWJfdHlwZSA9PT0gVGFnc0NvbmZpZ1N1YlR5cGUuRk9SRUNBU1RfTkVXKT8ub3B0aW9ucz8uc3ViX3R5cGUsXG4gICAgICAgICAgICBbU2NlbmFyaW8uTk9ORV06ICgpID0+IG1vbnRoU3ViVHlwZSxcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghc2NlbmFyaW9TZWxlY3RlZERhdGVUYWdbc2NlbmFyaW9dKSByZXR1cm47XG4gICAgICAgIHJldHVybiBzY2VuYXJpb1NlbGVjdGVkRGF0ZVRhZ1tzY2VuYXJpb10oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFNjZW5hcmlvVGFnc0NvbmZpZyhzY2VuYXJpbzogU2NlbmFyaW8sIHRhZ3NDb25maWc6IElUYWdbXSk6IElTY2VuYXJpb1RhZ1tdIHtcbiAgICAgICAgcmV0dXJuIF9yZWR1Y2UoXG4gICAgICAgICAgICB0YWdzQ29uZmlnLFxuICAgICAgICAgICAgKGFjYzogSVNjZW5hcmlvVGFnW10sIHRhZ0NvbmZpZzogSVRhZykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRhZ1N1YlR5cGUgPSB0YWdDb25maWc/Lm9wdGlvbnM/LnN1Yl90eXBlO1xuXG4gICAgICAgICAgICAgICAgY29uc3Qgc2NlbmFyaW9UYWdEYXRhQ29uZmlnID0gZ2V0U2NlbmFyaW9UYWdEYXRhQ29uZmlnKHRoaXMuaXNNdWx0aXBsZURpbWVuc2lvbiwgdGhpcy5pc0ZvcmVjYXN0TXVsdGlwbGVEaW1lbnNpb24pO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNjZW5hcmlvVGFnQ29uZmlnOiBJU2NlbmFyaW8gPVxuICAgICAgICAgICAgICAgICAgICBzY2VuYXJpb1RhZ0RhdGFDb25maWcgJiYgc2NlbmFyaW9UYWdEYXRhQ29uZmlnW3NjZW5hcmlvXSA/IHNjZW5hcmlvVGFnRGF0YUNvbmZpZ1tzY2VuYXJpb11bdGFnU3ViVHlwZV0gOiBudWxsO1xuICAgICAgICAgICAgICAgIGlmICghc2NlbmFyaW9UYWdDb25maWcgfHwgc2NlbmFyaW9UYWdDb25maWcuaGlkZGVuKSByZXR1cm4gYWNjO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgY2xvbmVkVGFnQ29uZmlnID0gX2Nsb25lRGVlcCh0YWdDb25maWcpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNjZW5hcmlvVGFnOiBJU2NlbmFyaW9UYWcgPSB7IC4uLmNsb25lZFRhZ0NvbmZpZywgc2NlbmFyaW9EYXRhOiBzY2VuYXJpb1RhZ0NvbmZpZyB9O1xuXG4gICAgICAgICAgICAgICAgYWNjLnB1c2goc2NlbmFyaW9UYWcpO1xuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW10sXG4gICAgICAgICk7XG4gICAgfVxufVxuIl19