ms-time-sheet 0.0.16 → 0.0.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +428 -428
- package/esm2022/lib/badges.mjs +1 -1
- package/esm2022/lib/components/badge-overflow/badge-overflow.component.mjs +3 -3
- package/esm2022/lib/ms-time-sheet.component.mjs +90 -90
- package/esm2022/lib/ms-time-sheet.service.mjs +1 -1
- package/esm2022/lib/pipes/filter.pipe.mjs +1 -1
- package/esm2022/lib/pipes/pinned-columns.pipe.mjs +1 -1
- package/esm2022/lib/pipes/timezone-format.pipe.mjs +1 -1
- package/esm2022/lib/services/common.service.mjs +1 -1
- package/esm2022/lib/services/copy-service.service.mjs +1 -1
- package/esm2022/lib/services/split-columns.service.mjs +1 -1
- package/esm2022/public-api.mjs +1 -1
- package/fesm2022/ms-time-sheet.mjs +92 -92
- package/fesm2022/ms-time-sheet.mjs.map +1 -1
- package/package.json +1 -1
package/esm2022/lib/badges.mjs
CHANGED
|
@@ -68,4 +68,4 @@ export const BADGES_MAP = {
|
|
|
68
68
|
'block': 'badge-secondary',
|
|
69
69
|
'Block': 'badge-secondary'
|
|
70
70
|
};
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFkZ2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbXMtdGltZS1zaGVldC9zcmMvbGliL2JhZGdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQThCO0lBQ25ELG1CQUFtQjtJQUNuQixRQUFRLEVBQUUsZUFBZTtJQUN6QixVQUFVLEVBQUUsZUFBZTtJQUMzQixVQUFVLEVBQUUsZUFBZTtJQUMzQixXQUFXLEVBQUUsZUFBZTtJQUM1QixXQUFXLEVBQUUsZUFBZTtJQUM1QixVQUFVLEVBQUUsZUFBZTtJQUMzQixPQUFPLEVBQUUsZUFBZTtJQUN4QixnQkFBZ0IsRUFBRSxlQUFlO0lBQ2pDLGVBQWUsRUFBRSxlQUFlO0lBQ2hDLFNBQVMsRUFBRSxlQUFlO0lBQzFCLFFBQVEsRUFBRSxlQUFlO0lBQ3pCLFdBQVcsRUFBRSxlQUFlO0lBQzVCLFdBQVcsRUFBRSxlQUFlO0lBQzVCLFlBQVksRUFBRSxlQUFlO0lBQzdCLFlBQVksRUFBRSxlQUFlO0lBRTdCLHlCQUF5QjtJQUN6QixVQUFVLEVBQUUsZUFBZTtJQUMzQixVQUFVLEVBQUUsZUFBZTtJQUMzQixXQUFXLEVBQUUsZUFBZTtJQUM1QixRQUFRLEVBQUUsZUFBZTtJQUN6QixVQUFVLEVBQUUsZUFBZTtJQUMzQixhQUFhLEVBQUUsZUFBZTtJQUM5QixpQkFBaUIsRUFBRSxlQUFlO0lBQ2xDLGtCQUFrQixFQUFFLGVBQWU7SUFDbkMsdUJBQXVCLEVBQUUsZUFBZTtJQUN4QyxTQUFTLEVBQUUsZUFBZTtJQUMxQixPQUFPLEVBQUUsWUFBWTtJQUNyQixPQUFPLEVBQUUsWUFBWTtJQUNyQixVQUFVLEVBQUUsWUFBWTtJQUN4QixTQUFTLEVBQUUsZUFBZTtJQUMxQixTQUFTLEVBQUUsZUFBZTtJQUMxQixVQUFVLEVBQUUsZUFBZTtJQUMzQixVQUFVLEVBQUUsZUFBZTtJQUMzQixVQUFVLEVBQUUsZUFBZTtJQUMzQixVQUFVLEVBQUUsZUFBZTtJQUMzQixjQUFjLEVBQUUsZUFBZTtJQUMvQixjQUFjLEVBQUUsZUFBZTtJQUUvQixnQkFBZ0I7SUFDaEIsVUFBVSxFQUFFLGNBQWM7SUFDMUIsVUFBVSxFQUFFLGNBQWM7SUFDMUIsWUFBWSxFQUFFLGNBQWM7SUFDNUIsU0FBUyxFQUFFLGNBQWM7SUFDekIsUUFBUSxFQUFFLGNBQWM7SUFDeEIsZ0JBQWdCLEVBQUUsY0FBYztJQUNoQyxpQkFBaUIsRUFBRSxjQUFjO0lBQ2pDLGFBQWEsRUFBRSxjQUFjO0lBQzdCLFlBQVksRUFBRSxjQUFjO0lBQzVCLFFBQVEsRUFBRSxjQUFjO0lBQ3hCLFFBQVEsRUFBRSxjQUFjO0lBQ3hCLFFBQVEsRUFBRSxjQUFjO0lBQ3hCLGNBQWMsRUFBRSxjQUFjO0lBQzlCLGNBQWMsRUFBRSxjQUFjO0lBQzlCLFNBQVMsRUFBRSxjQUFjO0lBQ3pCLFNBQVMsRUFBRSxjQUFjO0lBRXpCLGVBQWU7SUFDZixXQUFXLEVBQUUsWUFBWTtJQUN6QixTQUFTLEVBQUUsWUFBWTtJQUN2QixlQUFlLEVBQUUsWUFBWTtJQUM3QixlQUFlLEVBQUUsWUFBWTtJQUM3QixTQUFTLEVBQUUsWUFBWTtJQUV2Qix3QkFBd0I7SUFDeEIsU0FBUyxFQUFFLGlCQUFpQjtJQUM1QixPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLGFBQWEsRUFBRSxpQkFBaUI7SUFDaEMsYUFBYSxFQUFFLGlCQUFpQjtJQUNoQyxPQUFPLEVBQUUsaUJBQWlCO0lBQzFCLE9BQU8sRUFBRSxpQkFBaUI7Q0FDM0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBCQURHRVNfTUFQOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xuICAvLyAgU3VjY2VzcyDigJMgR3JlZW5cbiAgJ2FjdGl2ZSc6ICdiYWRnZS1zdWNjZXNzJyxcbiAgJ2FwcHJvdmVkJzogJ2JhZGdlLXN1Y2Nlc3MnLFxuICAnYWNjZXB0ZWQnOiAnYmFkZ2Utc3VjY2VzcycsXG4gICdjb21wbGV0ZWQnOiAnYmFkZ2Utc3VjY2VzcycsXG4gICdldmFsdWF0ZWQnOiAnYmFkZ2Utc3VjY2VzcycsXG4gICdhc3NpZ25lZCc6ICdiYWRnZS1zdWNjZXNzJyxcbiAgJ3NjcmFwJzogJ2JhZGdlLXN1Y2Nlc3MnLFxuICAnbW92ZS1hdmFpbGFibGUnOiAnYmFkZ2Utc3VjY2VzcycsXG4gICdtb3ZlLWFzc2lnbmVkJzogJ2JhZGdlLXN1Y2Nlc3MnLFxuICAncHJlc2VudCc6ICdiYWRnZS1zdWNjZXNzJyxcbiAgJ29udGltZSc6ICdiYWRnZS1zdWNjZXNzJyxcbiAgJ29udGltZW91dCc6ICdiYWRnZS1zdWNjZXNzJyxcbiAgJ09uVGltZU91dCc6ICdiYWRnZS1zdWNjZXNzJyxcbiAgJ2Nsb2NrZWRfaW4nOiAnYmFkZ2Utc3VjY2VzcycsXG4gICdjbG9ja2VkIGluJzogJ2JhZGdlLXN1Y2Nlc3MnLFxuXG4gIC8vIFdhcm5pbmcg4oCTIFllbGxvdy9BbWJlclxuICAnY29udHJhY3QnOiAnYmFkZ2Utd2FybmluZycsXG4gICd3YXJyYW50eSc6ICdiYWRnZS13YXJuaW5nJyxcbiAgJ3NjaGVkdWxlZCc6ICdiYWRnZS13YXJuaW5nJyxcbiAgJ2xlYXNlZCc6ICdiYWRnZS13YXJuaW5nJyxcbiAgJ2Rpc3Bvc2VkJzogJ2JhZGdlLXdhcm5pbmcnLFxuICAnbWFpbnRlbmFuY2UnOiAnYmFkZ2Utd2FybmluZycsXG4gICdhc3NpZ25pbmcgc3RhcnQnOiAnYmFkZ2Utd2FybmluZycsXG4gICdldmFsdWF0aW9uIHN0YXJ0JzogJ2JhZGdlLXdhcm5pbmcnLFxuICAndG8gYmUgc3RhcnQgYXNzaWduaW5nJzogJ2JhZGdlLXdhcm5pbmcnLFxuICAncGVuZGluZyc6ICdiYWRnZS13YXJuaW5nJyxcbiAgJ2xlYXZlJzogJ2JhZGdlLWluZm8nLFxuICAnTGVhdmUnOiAnYmFkZ2UtaW5mbycsXG4gICdvbiBsZWF2ZSc6ICdiYWRnZS1pbmZvJyxcbiAgJ2Vhcmx5aW4nOiAnYmFkZ2Utd2FybmluZycsXG4gICdFYXJseUluJzogJ2JhZGdlLXdhcm5pbmcnLFxuICAnZWFybHlvdXQnOiAnYmFkZ2Utd2FybmluZycsXG4gICdFYXJseU91dCc6ICdiYWRnZS13YXJuaW5nJyxcbiAgJ2xhdGVuZXNzJzogJ2JhZGdlLXdhcm5pbmcnLFxuICAnTGF0ZW5lc3MnOiAnYmFkZ2Utd2FybmluZycsXG4gICdvbnNob3J0bGVhdmUnOiAnYmFkZ2Utd2FybmluZycsXG4gICdPblNob3J0TGVhdmUnOiAnYmFkZ2Utd2FybmluZycsXG5cbiAgLy8gIERhbmdlciDigJMgUmVkXG4gICdpbmFjdGl2ZSc6ICdiYWRnZS1kYW5nZXInLFxuICAncmVqZWN0ZWQnOiAnYmFkZ2UtZGFuZ2VyJyxcbiAgJ3VuYXNzaWduZWQnOiAnYmFkZ2UtZGFuZ2VyJyxcbiAgJ3RyYXNoZWQnOiAnYmFkZ2UtZGFuZ2VyJyxcbiAgJ29uaG9sZCc6ICdiYWRnZS1kYW5nZXInLFxuICAnYXNzaWduaW5nIHN0b3AnOiAnYmFkZ2UtZGFuZ2VyJyxcbiAgJ2V2YWx1YXRpb24gc3RvcCc6ICdiYWRnZS1kYW5nZXInLFxuICAndW5hdmFpbGFibGUnOiAnYmFkZ2UtZGFuZ2VyJyxcbiAgJ21vdmUtZXJyb3InOiAnYmFkZ2UtZGFuZ2VyJyxcbiAgJ2ZhaWxlZCc6ICdiYWRnZS1kYW5nZXInLFxuICAnYWJzZW50JzogJ2JhZGdlLWRhbmdlcicsXG4gICdBYnNlbnQnOiAnYmFkZ2UtZGFuZ2VyJyxcbiAgJ21pc3NwdW5jaG91dCc6ICdiYWRnZS1kYW5nZXInLFxuICAnTWlzc1B1bmNoT3V0JzogJ2JhZGdlLWRhbmdlcicsXG4gICdsYXRlb3V0JzogJ2JhZGdlLWRhbmdlcicsXG4gICdMYXRlT3V0JzogJ2JhZGdlLWRhbmdlcicsXG5cbiAgLy8gIEluZm8g4oCTIEJsdWVcbiAgJ2luc3VyYW5jZSc6ICdiYWRnZS1pbmZvJyxcbiAgJ3Bhc3RkdWUnOiAnYmFkZ2UtaW5mbycsXG4gICdwdWJsaWNob2xpZGF5JzogJ2JhZGdlLWluZm8nLFxuICAncHVibGljSG9saWRheSc6ICdiYWRnZS1pbmZvJyxcbiAgJ2hvbGlkYXknOiAnYmFkZ2UtaW5mbycsXG5cbiAgLy8gIERhcmsg4oCTIE5ldXRyYWwvT3RoZXJcbiAgJ2V4cGlyZWQnOiAnYmFkZ2Utc2Vjb25kYXJ5JyxcbiAgJ2RyYWZ0JzogJ2JhZGdlLXNlY29uZGFyeScsXG4gICdjbG9ja2VkX291dCc6ICdiYWRnZS1zZWNvbmRhcnknLFxuICAnY2xvY2tlZCBvdXQnOiAnYmFkZ2Utc2Vjb25kYXJ5JyxcbiAgJ2Jsb2NrJzogJ2JhZGdlLXNlY29uZGFyeScsXG4gICdCbG9jayc6ICdiYWRnZS1zZWNvbmRhcnknXG59O1xuIl19
|
|
@@ -104,11 +104,11 @@ export class BadgeOverflowComponent {
|
|
|
104
104
|
this.updateBadgeVisibility();
|
|
105
105
|
}
|
|
106
106
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BadgeOverflowComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
107
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: BadgeOverflowComponent, isStandalone: true, selector: "app-badge-overflow", inputs: { badges: "badges", maxWidth: "maxWidth" }, outputs: { badgeMouseEnter: "badgeMouseEnter", badgeMouseLeave: "badgeMouseLeave", overflowCountClick: "overflowCountClick" }, ngImport: i0, template: "<div class=\"badge-overflow-container\" #container>\
|
|
107
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: BadgeOverflowComponent, isStandalone: true, selector: "app-badge-overflow", inputs: { badges: "badges", maxWidth: "maxWidth" }, outputs: { badgeMouseEnter: "badgeMouseEnter", badgeMouseLeave: "badgeMouseLeave", overflowCountClick: "overflowCountClick" }, ngImport: i0, template: "<div class=\"badge-overflow-container\" #container>\n <span\n *ngFor=\"let badge of visibleBadges; let i = index\"\n class=\"badge\"\n [class]=\"badge.class || 'badge-secondary'\"\n \n (mouseenter)=\"onBadgeMouseEnter($event, badge)\"\n (mouseleave)=\"onBadgeMouseLeave($event, badge)\"\n >\n {{ badge.text }}\n </span>\n <span\n *ngIf=\"overflowCount > 0\"\n class=\"badge badge-overflow-count\"\n [title]=\"getOverflowTooltip()\"\n (click)=\"onOverflowCountClick($event)\"\n >\n +{{ overflowCount }}\n </span>\n</div>", styles: [".badge-overflow-container{display:flex;flex-wrap:nowrap;gap:4px;align-items:center;min-width:0;overflow:hidden;width:100%}.badge{flex-shrink:0;white-space:nowrap;font-size:12px;padding:4px 8px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-weight:600;line-height:1;text-transform:uppercase;letter-spacing:.5px;transition:all .3s cubic-bezier(.4,0,.2,1);border:2px solid transparent;width:32px;height:32px;box-sizing:border-box;cursor:pointer;transform:translateZ(0);will-change:transform,box-shadow,background-color;backface-visibility:hidden;color:#fff!important;&:hover{transform:scale(1.15) translateY(-2px);box-shadow:0 6px 16px #007bff40}&:active{transform:scale(1.08) translateY(-1px);transition-duration:.15s}}.break-color-paid{background-color:#4caf50!important;border-color:#4caf50!important}.break-color-unpaid{background-color:#f44336!important;border-color:#f44336!important}.break-color-lunch{background-color:#2196f3!important;border-color:#2196f3!important}.break-color-default{background-color:#f44336!important;border-color:#f44336!important}.badge-overflow-count{background-color:#6c757d!important;color:#fff!important;cursor:pointer;border:2px solid #6c757d!important;flex-shrink:0;border-radius:50%;width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;font-weight:600;transition:all .3s cubic-bezier(.4,0,.2,1);transform:translateZ(0);will-change:transform,box-shadow,background-color;backface-visibility:hidden;font-size:12px;line-height:1;text-transform:uppercase;letter-spacing:.5px;&:hover{background-color:#5a6268!important;border-color:#5a6268!important;transform:scale(1.15) translateY(-2px);box-shadow:0 6px 16px #007bff40}&:active{transform:scale(1.08) translateY(-1px);transition-duration:.15s}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
108
108
|
}
|
|
109
109
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: BadgeOverflowComponent, decorators: [{
|
|
110
110
|
type: Component,
|
|
111
|
-
args: [{ selector: 'app-badge-overflow', standalone: true, imports: [CommonModule], template: "<div class=\"badge-overflow-container\" #container>\
|
|
111
|
+
args: [{ selector: 'app-badge-overflow', standalone: true, imports: [CommonModule], template: "<div class=\"badge-overflow-container\" #container>\n <span\n *ngFor=\"let badge of visibleBadges; let i = index\"\n class=\"badge\"\n [class]=\"badge.class || 'badge-secondary'\"\n \n (mouseenter)=\"onBadgeMouseEnter($event, badge)\"\n (mouseleave)=\"onBadgeMouseLeave($event, badge)\"\n >\n {{ badge.text }}\n </span>\n <span\n *ngIf=\"overflowCount > 0\"\n class=\"badge badge-overflow-count\"\n [title]=\"getOverflowTooltip()\"\n (click)=\"onOverflowCountClick($event)\"\n >\n +{{ overflowCount }}\n </span>\n</div>", styles: [".badge-overflow-container{display:flex;flex-wrap:nowrap;gap:4px;align-items:center;min-width:0;overflow:hidden;width:100%}.badge{flex-shrink:0;white-space:nowrap;font-size:12px;padding:4px 8px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-weight:600;line-height:1;text-transform:uppercase;letter-spacing:.5px;transition:all .3s cubic-bezier(.4,0,.2,1);border:2px solid transparent;width:32px;height:32px;box-sizing:border-box;cursor:pointer;transform:translateZ(0);will-change:transform,box-shadow,background-color;backface-visibility:hidden;color:#fff!important;&:hover{transform:scale(1.15) translateY(-2px);box-shadow:0 6px 16px #007bff40}&:active{transform:scale(1.08) translateY(-1px);transition-duration:.15s}}.break-color-paid{background-color:#4caf50!important;border-color:#4caf50!important}.break-color-unpaid{background-color:#f44336!important;border-color:#f44336!important}.break-color-lunch{background-color:#2196f3!important;border-color:#2196f3!important}.break-color-default{background-color:#f44336!important;border-color:#f44336!important}.badge-overflow-count{background-color:#6c757d!important;color:#fff!important;cursor:pointer;border:2px solid #6c757d!important;flex-shrink:0;border-radius:50%;width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;font-weight:600;transition:all .3s cubic-bezier(.4,0,.2,1);transform:translateZ(0);will-change:transform,box-shadow,background-color;backface-visibility:hidden;font-size:12px;line-height:1;text-transform:uppercase;letter-spacing:.5px;&:hover{background-color:#5a6268!important;border-color:#5a6268!important;transform:scale(1.15) translateY(-2px);box-shadow:0 6px 16px #007bff40}&:active{transform:scale(1.08) translateY(-1px);transition-duration:.15s}}\n"] }]
|
|
112
112
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { badges: [{
|
|
113
113
|
type: Input
|
|
114
114
|
}], maxWidth: [{
|
|
@@ -120,4 +120,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
120
120
|
}], overflowCountClick: [{
|
|
121
121
|
type: Output
|
|
122
122
|
}] } });
|
|
123
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFkZ2Utb3ZlcmZsb3cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXMtdGltZS1zaGVldC9zcmMvbGliL2NvbXBvbmVudHMvYmFkZ2Utb3ZlcmZsb3cvYmFkZ2Utb3ZlcmZsb3cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXMtdGltZS1zaGVldC9zcmMvbGliL2NvbXBvbmVudHMvYmFkZ2Utb3ZlcmZsb3cvYmFkZ2Utb3ZlcmZsb3cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBMkQsTUFBTSxlQUFlLENBQUM7QUFDaEksT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFxSC9DLE1BQU0sT0FBTyxzQkFBc0I7SUFjakMsWUFDVSxVQUFzQixFQUN0QixHQUFzQjtRQUR0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBZnZCLFdBQU0sR0FBZ0IsRUFBRSxDQUFDO1FBQ3pCLGFBQVEsR0FBVyxHQUFHLENBQUM7UUFDdEIsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBeUMsQ0FBQztRQUM1RSxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUF5QyxDQUFDO1FBQzVFLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFzRCxDQUFDO1FBRXRHLGtCQUFhLEdBQWdCLEVBQUUsQ0FBQztRQUNoQyxtQkFBYyxHQUFnQixFQUFFLENBQUM7UUFDakMsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFFVixtQkFBYyxHQUEwQixJQUFJLENBQUM7UUFDN0MscUJBQWdCLEdBQXVCLElBQUksQ0FBQztJQUtqRCxDQUFDO0lBRUosZUFBZTtRQUNiLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMs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QWMsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBQ0QsNEJBQTRCO0lBQzlCLE9BQU87UUFDTCxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUMvQixDQUFDOytHQXRIWSxzQkFBc0I7bUdBQXRCLHNCQUFzQixpUUN0SG5DLHlsQkFtQk0sOHpERE5NLFlBQVk7OzRGQXlHWCxzQkFBc0I7a0JBNUdsQyxTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUM7K0dBMEdkLE1BQU07c0JBQWQsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgRWxlbWVudFJlZiwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBCYWRnZUl0ZW0ge1xyXG4gIHRleHQ6IHN0cmluZztcclxuICBjbGFzcz86IHN0cmluZztcclxuICB0b29sdGlwPzogc3RyaW5nO1xyXG4gIGRhdGE/OiBhbnk7IC8vIEFkZGl0aW9uYWwgZGF0YSBmb3IgY2FsbGJhY2tzXHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWJhZGdlLW92ZXJmbG93JyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9iYWRnZS1vdmVyZmxvdy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVzOiBbYFxyXG4gICAgLmJhZGdlLW92ZXJmbG93LWNvbnRhaW5lciB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xyXG4gICAgICBnYXA6IDRweDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgbWluLXdpZHRoOiAwO1xyXG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgIH1cclxuXHJcbiAgICAuYmFkZ2Uge1xyXG4gICAgICBmbGV4LXNocmluazogMDtcclxuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgICBwYWRkaW5nOiA0cHggOHB4O1xyXG4gICAgICBib3JkZXItcmFkaXVzOiA1MCU7IC8qIE1ha2UgYmFkZ2VzIGNpcmN1bGFyIGxpa2UgY2lyY2xlLXZhbHVlICovXHJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgZm9udC13ZWlnaHQ6IDYwMDsgLyogTWF0Y2ggY2lyY2xlLXZhbHVlIGZvbnQtd2VpZ2h0ICovXHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAxO1xyXG4gICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG4gICAgICBsZXR0ZXItc3BhY2luZzogMC41cHg7XHJcbiAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7IC8qIE1hdGNoIGNpcmNsZS12YWx1ZSB0cmFuc2l0aW9uICovXHJcbiAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHRyYW5zcGFyZW50OyAvKiBNYXRjaCBjaXJjbGUtdmFsdWUgYm9yZGVyIHN0eWxlICovXHJcbiAgICAgIHdpZHRoOiAzMnB4OyAvKiBGaXhlZCBjaXJjdWxhciBzaXplICovXHJcbiAgICAgIGhlaWdodDogMzJweDsgLyogRml4ZWQgY2lyY3VsYXIgc2l6ZSAqL1xyXG4gICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7IC8qIE1hdGNoIGNpcmNsZS12YWx1ZSBjdXJzb3IgKi9cclxuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApOyAvKiBIYXJkd2FyZSBhY2NlbGVyYXRpb24gKi9cclxuICAgICAgd2lsbC1jaGFuZ2U6IHRyYW5zZm9ybSwgYm94LXNoYWRvdywgYmFja2dyb3VuZC1jb2xvcjtcclxuICAgICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xyXG4gICAgICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDtcclxuXHJcbiAgICAgICY6aG92ZXIge1xyXG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xNSkgdHJhbnNsYXRlWSgtMnB4KTsgLyogTWF0Y2ggY2lyY2xlLXZhbHVlIGhvdmVyIGVmZmVjdCAqL1xyXG4gICAgICAgIGJveC1zaGFkb3c6IDAgNnB4IDE2cHggcmdiYSgwLCAxMjMsIDI1NSwgMC4yNSk7IC8qIE1hdGNoIGNpcmNsZS12YWx1ZSBzaGFkb3cgKi9cclxuICAgICAgfVxyXG5cclxuICAgICAgJjphY3RpdmUge1xyXG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wOCkgdHJhbnNsYXRlWSgtMXB4KTsgLyogTWF0Y2ggY2lyY2xlLXZhbHVlIGFjdGl2ZSBlZmZlY3QgKi9cclxuICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjE1cztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qIEJyZWFrIGNvbG9yIGNsYXNzZXMgZm9yIHByb3BlciBiYWRnZSBjb2xvcmluZyAqL1xyXG4gICAgLmJyZWFrLWNvbG9yLXBhaWQge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNENBRjUwICFpbXBvcnRhbnQ7XHJcbiAgICAgIGJvcmRlci1jb2xvcjogIzRDQUY1MCAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG5cclxuICAgIC5icmVhay1jb2xvci11bnBhaWQge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjQ0MzM2ICFpbXBvcnRhbnQ7XHJcbiAgICAgIGJvcmRlci1jb2xvcjogI0Y0NDMzNiAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG5cclxuICAgIC5icmVhay1jb2xvci1sdW5jaCB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICMyMTk2RjMgIWltcG9ydGFudDtcclxuICAgICAgYm9yZGVyLWNvbG9yOiAjMjE5NkYzICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLmJyZWFrLWNvbG9yLWRlZmF1bHQge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjQ0MzM2ICFpbXBvcnRhbnQ7XHJcbiAgICAgIGJvcmRlci1jb2xvcjogI0Y0NDMzNiAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG5cclxuICAgIC5iYWRnZS1vdmVyZmxvdy1jb3VudCB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICM2Yzc1N2QgIWltcG9ydGFudDtcclxuICAgICAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgYm9yZGVyOiAycHggc29saWQgIzZjNzU3ZCAhaW1wb3J0YW50OyAvKiBNYXRjaCBjaXJjdWxhciBib3JkZXIgc3R5bGUgKi9cclxuICAgICAgZmxleC1zaHJpbms6IDA7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsgLyogTWFrZSBjb3VudCBiYWRnZSBjaXJjdWxhciB0b28gKi9cclxuICAgICAgd2lkdGg6IDMycHg7IC8qIE1hdGNoIHNpemUgKi9cclxuICAgICAgaGVpZ2h0OiAzMnB4OyAvKiBNYXRjaCBzaXplICovXHJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xyXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgZm9udC13ZWlnaHQ6IDYwMDsgLyogTWF0Y2ggZm9udC13ZWlnaHQgKi9cclxuICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTsgLyogTWF0Y2ggdHJhbnNpdGlvbiAqL1xyXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7XHJcbiAgICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm0sIGJveC1zaGFkb3csIGJhY2tncm91bmQtY29sb3I7XHJcbiAgICAgIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcclxuICAgICAgZm9udC1zaXplOiAxMnB4O1xyXG4gICAgICBsaW5lLWhlaWdodDogMTtcclxuICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcclxuICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuNXB4O1xyXG5cclxuICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzVhNjI2OCAhaW1wb3J0YW50O1xyXG4gICAgICAgIGJvcmRlci1jb2xvcjogIzVhNjI2OCAhaW1wb3J0YW50O1xyXG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xNSkgdHJhbnNsYXRlWSgtMnB4KTsgLyogTWF0Y2ggaG92ZXIgZWZmZWN0ICovXHJcbiAgICAgICAgYm94LXNoYWRvdzogMCA2cHggMTZweCByZ2JhKDAsIDEyMywgMjU1LCAwLjI1KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJjphY3RpdmUge1xyXG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wOCkgdHJhbnNsYXRlWSgtMXB4KTtcclxuICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjE1cztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIGBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCYWRnZU92ZXJmbG93Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBiYWRnZXM6IEJhZGdlSXRlbVtdID0gW107XHJcbiAgQElucHV0KCkgbWF4V2lkdGg6IG51bWJlciA9IDIwMDtcclxuICBAT3V0cHV0KCkgYmFkZ2VNb3VzZUVudGVyID0gbmV3IEV2ZW50RW1pdHRlcjx7ZXZlbnQ6IE1vdXNlRXZlbnQsIGJhZGdlOiBCYWRnZUl0ZW19PigpO1xyXG4gIEBPdXRwdXQoKSBiYWRnZU1vdXNlTGVhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPHtldmVudDogTW91c2VFdmVudCwgYmFkZ2U6IEJhZGdlSXRlbX0+KCk7XHJcbiAgQE91dHB1dCgpIG92ZXJmbG93Q291bnRDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8eyBldmVudDogTW91c2VFdmVudDsgb3ZlcmZsb3dCYWRnZXM6IEJhZGdlSXRlbVtdIH0+KCk7XHJcblxyXG4gIHZpc2libGVCYWRnZXM6IEJhZGdlSXRlbVtdID0gW107XHJcbiAgb3ZlcmZsb3dCYWRnZXM6IEJhZGdlSXRlbVtdID0gW107XHJcbiAgb3ZlcmZsb3dDb3VudCA9IDA7XHJcblxyXG4gIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBjb250YWluZXJFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcclxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxyXG4gICkge31cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5jb250YWluZXJFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmJhZGdlLW92ZXJmbG93LWNvbnRhaW5lcicpO1xyXG4gICAgdGhpcy5zZXR1cFJlc2l6ZU9ic2VydmVyKCk7XHJcbiAgICB0aGlzLnVwZGF0ZUJhZGdlVmlzaWJpbGl0eSgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICBpZiAodGhpcy5yZXNpemVPYnNlcnZlcikge1xyXG4gICAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0dXBSZXNpemVPYnNlcnZlcigpIHtcclxuICAgIGlmICghdGhpcy5jb250YWluZXJFbGVtZW50KSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XHJcbiAgICAgIHRoaXMudXBkYXRlQmFkZ2VWaXNpYmlsaXR5KCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBPYnNlcnZlIHRoZSBwYXJlbnQgY29udGFpbmVyIGZvciB3aWR0aCBjaGFuZ2VzXHJcbiAgICBjb25zdCBwYXJlbnRFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudDtcclxuICAgIGlmIChwYXJlbnRFbGVtZW50KSB7XHJcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShwYXJlbnRFbGVtZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlQmFkZ2VWaXNpYmlsaXR5KCkge1xyXG4gICAgaWYgKCF0aGlzLmNvbnRhaW5lckVsZW1lbnQgfHwgIXRoaXMuYmFkZ2VzLmxlbmd0aCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gdGhpcy5jb250YWluZXJFbGVtZW50LnBhcmVudEVsZW1lbnQ/LmNsaWVudFdpZHRoIHx8IHRoaXMubWF4V2lkdGg7XHJcbiAgICBsZXQgdG90YWxXaWR0aCA9IDA7XHJcbiAgICBjb25zdCB2aXNpYmxlOiBCYWRnZUl0ZW1bXSA9IFtdO1xyXG4gICAgY29uc3Qgb3ZlcmZsb3c6IEJhZGdlSXRlbVtdID0gW107XHJcblxyXG4gICAgLy8gQ2FsY3VsYXRlIHdpZHRoIG5lZWRlZCBmb3IgZWFjaCBiYWRnZVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmJhZGdlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBiYWRnZSA9IHRoaXMuYmFkZ2VzW2ldO1xyXG4gICAgICBjb25zdCBiYWRnZVdpZHRoID0gdGhpcy5lc3RpbWF0ZUJhZGdlV2lkdGgoYmFkZ2UpO1xyXG5cclxuICAgICAgaWYgKHRvdGFsV2lkdGggKyBiYWRnZVdpZHRoIDw9IGNvbnRhaW5lcldpZHRoIHx8IHZpc2libGUubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgdmlzaWJsZS5wdXNoKGJhZGdlKTtcclxuICAgICAgICB0b3RhbFdpZHRoICs9IGJhZGdlV2lkdGggKyA0OyAvLyArNCBmb3IgZ2FwXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgb3ZlcmZsb3cucHVzaChiYWRnZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBJZiB3ZSBoYXZlIG92ZXJmbG93LCBjaGVjayBpZiB3ZSBuZWVkIHRvIHNob3cgY291bnQgYmFkZ2VcclxuICAgIGlmIChvdmVyZmxvdy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IGNvdW50QmFkZ2VXaWR0aCA9IHRoaXMuZXN0aW1hdGVDb3VudEJhZGdlV2lkdGgob3ZlcmZsb3cubGVuZ3RoKTtcclxuICAgICAgY29uc3QgbGFzdFZpc2libGVJbmRleCA9IHZpc2libGUubGVuZ3RoIC0gMTtcclxuXHJcbiAgICAgIC8vIElmIGFkZGluZyBjb3VudCBiYWRnZSB3b3VsZCBleGNlZWQgd2lkdGgsIHJlbW92ZSBvbmUgbW9yZSB2aXNpYmxlIGJhZGdlXHJcbiAgICAgIGlmICh0b3RhbFdpZHRoICsgY291bnRCYWRnZVdpZHRoID4gY29udGFpbmVyV2lkdGggJiYgdmlzaWJsZS5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgY29uc3QgcmVtb3ZlZEJhZGdlID0gdmlzaWJsZS5wb3AoKTtcclxuICAgICAgICBpZiAocmVtb3ZlZEJhZGdlKSB7XHJcbiAgICAgICAgICBvdmVyZmxvdy51bnNoaWZ0KHJlbW92ZWRCYWRnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy52aXNpYmxlQmFkZ2VzID0gdmlzaWJsZTtcclxuICAgIHRoaXMub3ZlcmZsb3dCYWRnZXMgPSBvdmVyZmxvdztcclxuICAgIHRoaXMub3ZlcmZsb3dDb3VudCA9IG92ZXJmbG93Lmxlbmd0aDtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXN0aW1hdGVCYWRnZVdpZHRoKGJhZGdlOiBCYWRnZUl0ZW0pOiBudW1iZXIge1xyXG4gICAgLy8gUm91Z2ggZXN0aW1hdGlvbjogdGV4dCBsZW5ndGggKiA4cHggcGVyIGNoYXJhY3RlciArIHBhZGRpbmdcclxuICAgIGNvbnN0IHRleHRXaWR0aCA9IGJhZGdlLnRleHQubGVuZ3RoICogODtcclxuICAgIGNvbnN0IHBhZGRpbmcgPSAxNjsgLy8gOHB4IGxlZnQgKyA4cHggcmlnaHRcclxuICAgIHJldHVybiB0ZXh0V2lkdGggKyBwYWRkaW5nO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlc3RpbWF0ZUNvdW50QmFkZ2VXaWR0aChjb3VudDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIGNvbnN0IHRleHQgPSBgKyR7Y291bnR9YDtcclxuICAgIGNvbnN0IHRleHRXaWR0aCA9IHRleHQubGVuZ3RoICogODtcclxuICAgIGNvbnN0IHBhZGRpbmcgPSAxNjtcclxuICAgIHJldHVybiB0ZXh0V2lkdGggKyBwYWRkaW5nO1xyXG4gIH1cclxuXHJcbiAgZ2V0T3ZlcmZsb3dUb29sdGlwKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5vdmVyZmxvd0JhZGdlcy5tYXAoYiA9PiBiLnRleHQpLmpvaW4oJywgJyk7XHJcbiAgfVxyXG5cclxuICBvbkJhZGdlTW91c2VFbnRlcihldmVudDogTW91c2VFdmVudCwgYmFkZ2U6IEJhZGdlSXRlbSkge1xyXG4gICAgdGhpcy5iYWRnZU1vdXNlRW50ZXIuZW1pdCh7IGV2ZW50LCBiYWRnZSB9KTtcclxuICB9XHJcblxyXG4gIG9uQmFkZ2VNb3VzZUxlYXZlKGV2ZW50OiBNb3VzZUV2ZW50LCBiYWRnZTogQmFkZ2VJdGVtKSB7XHJcbiAgICB0aGlzLmJhZGdlTW91c2VMZWF2ZS5lbWl0KHsgZXZlbnQsIGJhZGdlIH0pO1xyXG4gIH1cclxuXHJcbiAgb25PdmVyZmxvd0NvdW50Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIHRoaXMub3ZlcmZsb3dDb3VudENsaWNrLmVtaXQoeyBldmVudCwgb3ZlcmZsb3dCYWRnZXM6IHRoaXMub3ZlcmZsb3dCYWRnZXMgfSk7XHJcbiAgfVxyXG4gIC8vIEluIEJhZGdlT3ZlcmZsb3dDb21wb25lbnRcclxucmVmcmVzaCgpIHtcclxuICB0aGlzLnVwZGF0ZUJhZGdlVmlzaWJpbGl0eSgpO1xyXG59XHJcbn0iLCI8ZGl2IGNsYXNzPVwiYmFkZ2Utb3ZlcmZsb3ctY29udGFpbmVyXCIgI2NvbnRhaW5lcj5cclxuICA8c3BhblxyXG4gICAgKm5nRm9yPVwibGV0IGJhZGdlIG9mIHZpc2libGVCYWRnZXM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgY2xhc3M9XCJiYWRnZVwiXHJcbiAgICBbY2xhc3NdPVwiYmFkZ2UuY2xhc3MgfHwgJ2JhZGdlLXNlY29uZGFyeSdcIlxyXG4gICAgXHJcbiAgICAobW91c2VlbnRlcik9XCJvbkJhZGdlTW91c2VFbnRlcigkZXZlbnQsIGJhZGdlKVwiXHJcbiAgICAobW91c2VsZWF2ZSk9XCJvbkJhZGdlTW91c2VMZWF2ZSgkZXZlbnQsIGJhZGdlKVwiXHJcbiAgPlxyXG4gICAge3sgYmFkZ2UudGV4dCB9fVxyXG4gIDwvc3Bhbj5cclxuICA8c3BhblxyXG4gICAgKm5nSWY9XCJvdmVyZmxvd0NvdW50ID4gMFwiXHJcbiAgICBjbGFzcz1cImJhZGdlIGJhZGdlLW92ZXJmbG93LWNvdW50XCJcclxuICAgIFt0aXRsZV09XCJnZXRPdmVyZmxvd1Rvb2x0aXAoKVwiXHJcbiAgICAoY2xpY2spPVwib25PdmVyZmxvd0NvdW50Q2xpY2soJGV2ZW50KVwiXHJcbiAgPlxyXG4gICAgK3t7IG92ZXJmbG93Q291bnQgfX1cclxuICA8L3NwYW4+XHJcbjwvZGl2PiJdfQ==
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFkZ2Utb3ZlcmZsb3cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXMtdGltZS1zaGVldC9zcmMvbGliL2NvbXBvbmVudHMvYmFkZ2Utb3ZlcmZsb3cvYmFkZ2Utb3ZlcmZsb3cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXMtdGltZS1zaGVldC9zcmMvbGliL2NvbXBvbmVudHMvYmFkZ2Utb3ZlcmZsb3cvYmFkZ2Utb3ZlcmZsb3cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBMkQsTUFBTSxlQUFlLENBQUM7QUFDaEksT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFxSC9DLE1BQU0sT0FBTyxzQkFBc0I7SUFjakMsWUFDVSxVQUFzQixFQUN0QixHQUFzQjtRQUR0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBZnZCLFdBQU0sR0FBZ0IsRUFBRSxDQUFDO1FBQ3pCLGFBQVEsR0FBVyxHQUFHLENBQUM7UUFDdEIsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBeUMsQ0FBQztRQUM1RSxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUF5QyxDQUFDO1FBQzVFLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFzRCxDQUFDO1FBRXRHLGtCQUFhLEdBQWdCLEVBQUUsQ0FBQztRQUNoQyxtQkFBYyxHQUFnQixFQUFFLENBQUM7UUFDakMsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFFVixtQkFBYyxHQUEwQixJQUFJLENBQUM7UUFDN0MscUJBQWdCLEdBQXVCLElBQUksQ0FBQztJQUtqRCxDQUFDO0lBRUosZUFBZTtRQUNiLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMs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QWMsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBQ0QsNEJBQTRCO0lBQzlCLE9BQU87UUFDTCxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUMvQixDQUFDOytHQXRIWSxzQkFBc0I7bUdBQXRCLHNCQUFzQixpUUN0SG5DLG1qQkFtQk0sOHpERE5NLFlBQVk7OzRGQXlHWCxzQkFBc0I7a0JBNUdsQyxTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUM7K0dBMEdkLE1BQU07c0JBQWQsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgRWxlbWVudFJlZiwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuZXhwb3J0IGludGVyZmFjZSBCYWRnZUl0ZW0ge1xuICB0ZXh0OiBzdHJpbmc7XG4gIGNsYXNzPzogc3RyaW5nO1xuICB0b29sdGlwPzogc3RyaW5nO1xuICBkYXRhPzogYW55OyAvLyBBZGRpdGlvbmFsIGRhdGEgZm9yIGNhbGxiYWNrc1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtYmFkZ2Utb3ZlcmZsb3cnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2JhZGdlLW92ZXJmbG93LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbYFxuICAgIC5iYWRnZS1vdmVyZmxvdy1jb250YWluZXIge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgICAgZ2FwOiA0cHg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC5iYWRnZSB7XG4gICAgICBmbGV4LXNocmluazogMDtcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICBmb250LXNpemU6IDEycHg7XG4gICAgICBwYWRkaW5nOiA0cHggOHB4O1xuICAgICAgYm9yZGVyLXJhZGl1czogNTAlOyAvKiBNYWtlIGJhZGdlcyBjaXJjdWxhciBsaWtlIGNpcmNsZS12YWx1ZSAqL1xuICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBmb250LXdlaWdodDogNjAwOyAvKiBNYXRjaCBjaXJjbGUtdmFsdWUgZm9udC13ZWlnaHQgKi9cbiAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgIGxldHRlci1zcGFjaW5nOiAwLjVweDtcbiAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7IC8qIE1hdGNoIGNpcmNsZS12YWx1ZSB0cmFuc2l0aW9uICovXG4gICAgICBib3JkZXI6IDJweCBzb2xpZCB0cmFuc3BhcmVudDsgLyogTWF0Y2ggY2lyY2xlLXZhbHVlIGJvcmRlciBzdHlsZSAqL1xuICAgICAgd2lkdGg6IDMycHg7IC8qIEZpeGVkIGNpcmN1bGFyIHNpemUgKi9cbiAgICAgIGhlaWdodDogMzJweDsgLyogRml4ZWQgY2lyY3VsYXIgc2l6ZSAqL1xuICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjsgLyogTWF0Y2ggY2lyY2xlLXZhbHVlIGN1cnNvciAqL1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApOyAvKiBIYXJkd2FyZSBhY2NlbGVyYXRpb24gKi9cbiAgICAgIHdpbGwtY2hhbmdlOiB0cmFuc2Zvcm0sIGJveC1zaGFkb3csIGJhY2tncm91bmQtY29sb3I7XG4gICAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDtcblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xNSkgdHJhbnNsYXRlWSgtMnB4KTsgLyogTWF0Y2ggY2lyY2xlLXZhbHVlIGhvdmVyIGVmZmVjdCAqL1xuICAgICAgICBib3gtc2hhZG93OiAwIDZweCAxNnB4IHJnYmEoMCwgMTIzLCAyNTUsIDAuMjUpOyAvKiBNYXRjaCBjaXJjbGUtdmFsdWUgc2hhZG93ICovXG4gICAgICB9XG5cbiAgICAgICY6YWN0aXZlIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjA4KSB0cmFuc2xhdGVZKC0xcHgpOyAvKiBNYXRjaCBjaXJjbGUtdmFsdWUgYWN0aXZlIGVmZmVjdCAqL1xuICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjE1cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKiBCcmVhayBjb2xvciBjbGFzc2VzIGZvciBwcm9wZXIgYmFkZ2UgY29sb3JpbmcgKi9cbiAgICAuYnJlYWstY29sb3ItcGFpZCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNENBRjUwICFpbXBvcnRhbnQ7XG4gICAgICBib3JkZXItY29sb3I6ICM0Q0FGNTAgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuYnJlYWstY29sb3ItdW5wYWlkIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGNDQzMzYgIWltcG9ydGFudDtcbiAgICAgIGJvcmRlci1jb2xvcjogI0Y0NDMzNiAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC5icmVhay1jb2xvci1sdW5jaCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjE5NkYzICFpbXBvcnRhbnQ7XG4gICAgICBib3JkZXItY29sb3I6ICMyMTk2RjMgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuYnJlYWstY29sb3ItZGVmYXVsdCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjQ0MzM2ICFpbXBvcnRhbnQ7XG4gICAgICBib3JkZXItY29sb3I6ICNGNDQzMzYgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuYmFkZ2Utb3ZlcmZsb3ctY291bnQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzZjNzU3ZCAhaW1wb3J0YW50O1xuICAgICAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICBib3JkZXI6IDJweCBzb2xpZCAjNmM3NTdkICFpbXBvcnRhbnQ7IC8qIE1hdGNoIGNpcmN1bGFyIGJvcmRlciBzdHlsZSAqL1xuICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICBib3JkZXItcmFkaXVzOiA1MCU7IC8qIE1ha2UgY291bnQgYmFkZ2UgY2lyY3VsYXIgdG9vICovXG4gICAgICB3aWR0aDogMzJweDsgLyogTWF0Y2ggc2l6ZSAqL1xuICAgICAgaGVpZ2h0OiAzMnB4OyAvKiBNYXRjaCBzaXplICovXG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7IC8qIE1hdGNoIGZvbnQtd2VpZ2h0ICovXG4gICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOyAvKiBNYXRjaCB0cmFuc2l0aW9uICovXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7XG4gICAgICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtLCBib3gtc2hhZG93LCBiYWNrZ3JvdW5kLWNvbG9yO1xuICAgICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuNXB4O1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzVhNjI2OCAhaW1wb3J0YW50O1xuICAgICAgICBib3JkZXItY29sb3I6ICM1YTYyNjggIWltcG9ydGFudDtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjE1KSB0cmFuc2xhdGVZKC0ycHgpOyAvKiBNYXRjaCBob3ZlciBlZmZlY3QgKi9cbiAgICAgICAgYm94LXNoYWRvdzogMCA2cHggMTZweCByZ2JhKDAsIDEyMywgMjU1LCAwLjI1KTtcbiAgICAgIH1cblxuICAgICAgJjphY3RpdmUge1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDgpIHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuMTVzO1xuICAgICAgfVxuICAgIH1cbiAgYF1cbn0pXG5leHBvcnQgY2xhc3MgQmFkZ2VPdmVyZmxvd0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGJhZGdlczogQmFkZ2VJdGVtW10gPSBbXTtcbiAgQElucHV0KCkgbWF4V2lkdGg6IG51bWJlciA9IDIwMDtcbiAgQE91dHB1dCgpIGJhZGdlTW91c2VFbnRlciA9IG5ldyBFdmVudEVtaXR0ZXI8e2V2ZW50OiBNb3VzZUV2ZW50LCBiYWRnZTogQmFkZ2VJdGVtfT4oKTtcbiAgQE91dHB1dCgpIGJhZGdlTW91c2VMZWF2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8e2V2ZW50OiBNb3VzZUV2ZW50LCBiYWRnZTogQmFkZ2VJdGVtfT4oKTtcbiAgQE91dHB1dCgpIG92ZXJmbG93Q291bnRDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8eyBldmVudDogTW91c2VFdmVudDsgb3ZlcmZsb3dCYWRnZXM6IEJhZGdlSXRlbVtdIH0+KCk7XG5cbiAgdmlzaWJsZUJhZGdlczogQmFkZ2VJdGVtW10gPSBbXTtcbiAgb3ZlcmZsb3dCYWRnZXM6IEJhZGdlSXRlbVtdID0gW107XG4gIG92ZXJmbG93Q291bnQgPSAwO1xuXG4gIHByaXZhdGUgcmVzaXplT2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgY29udGFpbmVyRWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge31cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5jb250YWluZXJFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmJhZGdlLW92ZXJmbG93LWNvbnRhaW5lcicpO1xuICAgIHRoaXMuc2V0dXBSZXNpemVPYnNlcnZlcigpO1xuICAgIHRoaXMudXBkYXRlQmFkZ2VWaXNpYmlsaXR5KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5yZXNpemVPYnNlcnZlcikge1xuICAgICAgdGhpcy5yZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFJlc2l6ZU9ic2VydmVyKCkge1xuICAgIGlmICghdGhpcy5jb250YWluZXJFbGVtZW50KSByZXR1cm47XG5cbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKCgpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlQmFkZ2VWaXNpYmlsaXR5KCk7XG4gICAgfSk7XG5cbiAgICAvLyBPYnNlcnZlIHRoZSBwYXJlbnQgY29udGFpbmVyIGZvciB3aWR0aCBjaGFuZ2VzXG4gICAgY29uc3QgcGFyZW50RWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgaWYgKHBhcmVudEVsZW1lbnQpIHtcbiAgICAgIHRoaXMucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShwYXJlbnRFbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUJhZGdlVmlzaWJpbGl0eSgpIHtcbiAgICBpZiAoIXRoaXMuY29udGFpbmVyRWxlbWVudCB8fCAhdGhpcy5iYWRnZXMubGVuZ3RoKSByZXR1cm47XG5cbiAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IHRoaXMuY29udGFpbmVyRWxlbWVudC5wYXJlbnRFbGVtZW50Py5jbGllbnRXaWR0aCB8fCB0aGlzLm1heFdpZHRoO1xuICAgIGxldCB0b3RhbFdpZHRoID0gMDtcbiAgICBjb25zdCB2aXNpYmxlOiBCYWRnZUl0ZW1bXSA9IFtdO1xuICAgIGNvbnN0IG92ZXJmbG93OiBCYWRnZUl0ZW1bXSA9IFtdO1xuXG4gICAgLy8gQ2FsY3VsYXRlIHdpZHRoIG5lZWRlZCBmb3IgZWFjaCBiYWRnZVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5iYWRnZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGJhZGdlID0gdGhpcy5iYWRnZXNbaV07XG4gICAgICBjb25zdCBiYWRnZVdpZHRoID0gdGhpcy5lc3RpbWF0ZUJhZGdlV2lkdGgoYmFkZ2UpO1xuXG4gICAgICBpZiAodG90YWxXaWR0aCArIGJhZGdlV2lkdGggPD0gY29udGFpbmVyV2lkdGggfHwgdmlzaWJsZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdmlzaWJsZS5wdXNoKGJhZGdlKTtcbiAgICAgICAgdG90YWxXaWR0aCArPSBiYWRnZVdpZHRoICsgNDsgLy8gKzQgZm9yIGdhcFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3ZlcmZsb3cucHVzaChiYWRnZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSWYgd2UgaGF2ZSBvdmVyZmxvdywgY2hlY2sgaWYgd2UgbmVlZCB0byBzaG93IGNvdW50IGJhZGdlXG4gICAgaWYgKG92ZXJmbG93Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGNvdW50QmFkZ2VXaWR0aCA9IHRoaXMuZXN0aW1hdGVDb3VudEJhZGdlV2lkdGgob3ZlcmZsb3cubGVuZ3RoKTtcbiAgICAgIGNvbnN0IGxhc3RWaXNpYmxlSW5kZXggPSB2aXNpYmxlLmxlbmd0aCAtIDE7XG5cbiAgICAgIC8vIElmIGFkZGluZyBjb3VudCBiYWRnZSB3b3VsZCBleGNlZWQgd2lkdGgsIHJlbW92ZSBvbmUgbW9yZSB2aXNpYmxlIGJhZGdlXG4gICAgICBpZiAodG90YWxXaWR0aCArIGNvdW50QmFkZ2VXaWR0aCA+IGNvbnRhaW5lcldpZHRoICYmIHZpc2libGUubGVuZ3RoID4gMSkge1xuICAgICAgICBjb25zdCByZW1vdmVkQmFkZ2UgPSB2aXNpYmxlLnBvcCgpO1xuICAgICAgICBpZiAocmVtb3ZlZEJhZGdlKSB7XG4gICAgICAgICAgb3ZlcmZsb3cudW5zaGlmdChyZW1vdmVkQmFkZ2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy52aXNpYmxlQmFkZ2VzID0gdmlzaWJsZTtcbiAgICB0aGlzLm92ZXJmbG93QmFkZ2VzID0gb3ZlcmZsb3c7XG4gICAgdGhpcy5vdmVyZmxvd0NvdW50ID0gb3ZlcmZsb3cubGVuZ3RoO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgZXN0aW1hdGVCYWRnZVdpZHRoKGJhZGdlOiBCYWRnZUl0ZW0pOiBudW1iZXIge1xuICAgIC8vIFJvdWdoIGVzdGltYXRpb246IHRleHQgbGVuZ3RoICogOHB4IHBlciBjaGFyYWN0ZXIgKyBwYWRkaW5nXG4gICAgY29uc3QgdGV4dFdpZHRoID0gYmFkZ2UudGV4dC5sZW5ndGggKiA4O1xuICAgIGNvbnN0IHBhZGRpbmcgPSAxNjsgLy8gOHB4IGxlZnQgKyA4cHggcmlnaHRcbiAgICByZXR1cm4gdGV4dFdpZHRoICsgcGFkZGluZztcbiAgfVxuXG4gIHByaXZhdGUgZXN0aW1hdGVDb3VudEJhZGdlV2lkdGgoY291bnQ6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgdGV4dCA9IGArJHtjb3VudH1gO1xuICAgIGNvbnN0IHRleHRXaWR0aCA9IHRleHQubGVuZ3RoICogODtcbiAgICBjb25zdCBwYWRkaW5nID0gMTY7XG4gICAgcmV0dXJuIHRleHRXaWR0aCArIHBhZGRpbmc7XG4gIH1cblxuICBnZXRPdmVyZmxvd1Rvb2x0aXAoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5vdmVyZmxvd0JhZGdlcy5tYXAoYiA9PiBiLnRleHQpLmpvaW4oJywgJyk7XG4gIH1cblxuICBvbkJhZGdlTW91c2VFbnRlcihldmVudDogTW91c2VFdmVudCwgYmFkZ2U6IEJhZGdlSXRlbSkge1xuICAgIHRoaXMuYmFkZ2VNb3VzZUVudGVyLmVtaXQoeyBldmVudCwgYmFkZ2UgfSk7XG4gIH1cblxuICBvbkJhZGdlTW91c2VMZWF2ZShldmVudDogTW91c2VFdmVudCwgYmFkZ2U6IEJhZGdlSXRlbSkge1xuICAgIHRoaXMuYmFkZ2VNb3VzZUxlYXZlLmVtaXQoeyBldmVudCwgYmFkZ2UgfSk7XG4gIH1cblxuICBvbk92ZXJmbG93Q291bnRDbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgIHRoaXMub3ZlcmZsb3dDb3VudENsaWNrLmVtaXQoeyBldmVudCwgb3ZlcmZsb3dCYWRnZXM6IHRoaXMub3ZlcmZsb3dCYWRnZXMgfSk7XG4gIH1cbiAgLy8gSW4gQmFkZ2VPdmVyZmxvd0NvbXBvbmVudFxucmVmcmVzaCgpIHtcbiAgdGhpcy51cGRhdGVCYWRnZVZpc2liaWxpdHkoKTtcbn1cbn0iLCI8ZGl2IGNsYXNzPVwiYmFkZ2Utb3ZlcmZsb3ctY29udGFpbmVyXCIgI2NvbnRhaW5lcj5cbiAgPHNwYW5cbiAgICAqbmdGb3I9XCJsZXQgYmFkZ2Ugb2YgdmlzaWJsZUJhZGdlczsgbGV0IGkgPSBpbmRleFwiXG4gICAgY2xhc3M9XCJiYWRnZVwiXG4gICAgW2NsYXNzXT1cImJhZGdlLmNsYXNzIHx8ICdiYWRnZS1zZWNvbmRhcnknXCJcbiAgICBcbiAgICAobW91c2VlbnRlcik9XCJvbkJhZGdlTW91c2VFbnRlcigkZXZlbnQsIGJhZGdlKVwiXG4gICAgKG1vdXNlbGVhdmUpPVwib25CYWRnZU1vdXNlTGVhdmUoJGV2ZW50LCBiYWRnZSlcIlxuICA+XG4gICAge3sgYmFkZ2UudGV4dCB9fVxuICA8L3NwYW4+XG4gIDxzcGFuXG4gICAgKm5nSWY9XCJvdmVyZmxvd0NvdW50ID4gMFwiXG4gICAgY2xhc3M9XCJiYWRnZSBiYWRnZS1vdmVyZmxvdy1jb3VudFwiXG4gICAgW3RpdGxlXT1cImdldE92ZXJmbG93VG9vbHRpcCgpXCJcbiAgICAoY2xpY2spPVwib25PdmVyZmxvd0NvdW50Q2xpY2soJGV2ZW50KVwiXG4gID5cbiAgICAre3sgb3ZlcmZsb3dDb3VudCB9fVxuICA8L3NwYW4+XG48L2Rpdj4iXX0=
|