@spicainternational/ngx-sds-components 7.12.0-beta.1 → 7.13.0
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 +13 -57
- package/esm2020/src/lib/navigation/navigation-group/navigation-group.component.mjs +12 -3
- package/esm2020/src/lib/timeline/components/timeline.component.mjs +37 -9
- package/esm2020/src/lib/timeline/services/timeline.service.mjs +55 -23
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-navigation.mjs +11 -2
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-navigation.mjs.map +1 -1
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-timeline.mjs +90 -30
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-timeline.mjs.map +1 -1
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-navigation.mjs +11 -2
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-navigation.mjs.map +1 -1
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-timeline.mjs +90 -30
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-timeline.mjs.map +1 -1
- package/package.json +1 -1
- package/src/lib/navigation/navigation-group/navigation-group.component.d.ts +3 -2
- package/src/lib/timeline/components/timeline.component.d.ts +17 -1
- package/src/lib/timeline/services/timeline.service.d.ts +4 -1
package/README.md
CHANGED
|
@@ -1,61 +1,17 @@
|
|
|
1
|
-
#
|
|
1
|
+
# ngx-sds-components
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
ngx-sds-components is a comprehensive Angular component library based on Spica Design System designed to accelerate the development of modern, consistent, and accessible web applications. It provides a wide range of reusable UI components, utilities, and services that follow best practices and design guidelines, making it easy to build scalable and maintainable Angular projects.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Features
|
|
6
|
+
- Rich set of UI components (forms, navigation, layout, feedback, and more)
|
|
7
|
+
- Consistent design system for seamless user experience
|
|
8
|
+
- Accessibility (a11y) support
|
|
9
|
+
- Customizable and themeable components
|
|
10
|
+
- Well-documented API and usage examples
|
|
11
|
+
- Designed for Angular 13+
|
|
6
12
|
|
|
7
|
-
|
|
8
|
-
or
|
|
9
|
-
- Create new module `ng generate module module-name --project ngx-sds-components`.
|
|
10
|
-
- Add components/pipes/services to it.
|
|
13
|
+
## Installation
|
|
11
14
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project ngx-sds-components`.
|
|
16
|
-
|
|
17
|
-
> Note: Don't forget to add `--project ngx-sds-components` or else it will be added to the default project in your `angular.json` file.
|
|
18
|
-
|
|
19
|
-
## Build
|
|
20
|
-
|
|
21
|
-
Run `ng build ngx-sds-components` to build the project. The build artifacts will be stored in the `dist/` directory.
|
|
22
|
-
|
|
23
|
-
## Publishing
|
|
24
|
-
|
|
25
|
-
Prior publishing it is necessary to update the change log so we keep track of changes. Usually we merge changes into the master from devops portal so you will have all the changes in the master. Now you must update the CHANGELOG.md file with list of breaking changes, features and fixes. Depending on the contents the semantic version of the package must be set.
|
|
26
|
-
|
|
27
|
-
**Git aliases to help out**
|
|
28
|
-
You may find these two git aliases handy when preparing new release:
|
|
29
|
-
- Condensed list of last 15 commits `git config alias.log15 '!f() { git log --max-count=15 --pretty="format:%C(black) %<(15,trunc)%ar %C(magenta)%h %C(green)%<(20,trunc)%an %C(white)%<(130,trunc)%s" --no-merges; }; f'`
|
|
30
|
-
run: `git log15`
|
|
31
|
-
|
|
32
|
-
- Create branch for committing CHANGELOG.md and package.json changes `alias.newrelease !f() { git checkout -b release-$1 && git push -u origin release-$1; }; f`
|
|
33
|
-
run: `git newrelease 6.3.0`
|
|
34
|
-
|
|
35
|
-
- Create and push tag to remote `git config alias.newtag '!f() { git tag $1 && git push origin $1; }; f'`
|
|
36
|
-
run: `git newtag 6.3.0`
|
|
37
|
-
|
|
38
|
-
To get the list of aliases defined in the repo run `git config --get-regexp alias`.
|
|
39
|
-
|
|
40
|
-
After files were updated and branch pushed to origin you may proceed with publishing procedure.
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
**Publish package on npm**
|
|
44
|
-
Publish new package by running `npm run lib:publish` This script will take care of building and publishing the package. You must have login rights on the npmjs to approve the deploy.
|
|
45
|
-
- Changes should be included in the change.log file.
|
|
46
|
-
- Each published version should have a tag on the git repo.
|
|
47
|
-
|
|
48
|
-
To publish a beta version prepare all the artefacts and run `npm run lib:publish-beta`. The version should be in the format `package@7.1.120-beta.1`.
|
|
49
|
-
|
|
50
|
-
**Creating tag**
|
|
51
|
-
- tag name equals the version number `git tag 5.29.0`
|
|
52
|
-
- push the tag to origin `git push origin 5.29.0`
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
## Running unit tests
|
|
56
|
-
|
|
57
|
-
Run `ng test ngx-sds-components` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
|
58
|
-
|
|
59
|
-
## Further help
|
|
60
|
-
|
|
61
|
-
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
|
|
15
|
+
```bash
|
|
16
|
+
npm install ngx-sds-components --save
|
|
17
|
+
```
|
|
@@ -52,10 +52,19 @@ export class SdsNavigationGroupComponent {
|
|
|
52
52
|
const route = activeRoute.split('/').filter(item => item.length > 0);
|
|
53
53
|
this.currentUrl = route;
|
|
54
54
|
this.isGroupActive = isUrlPartOfNavigationGroup(this.currentUrl, this.navigationGroupNestedRoutes, this.defaultRouterLink);
|
|
55
|
-
console.debug(`Nav group [${this.text}] active check: isGroupActive = ${this.isGroupActive} for route ${this.currentUrl}, navigationGroupNestedRoutes = ${this.navigationGroupNestedRoutes}, defaultRouterLink = ${this.defaultRouterLink}`);
|
|
55
|
+
//console.debug(`Nav group [${this.text}] active check (NavigationEnd): isGroupActive = ${this.isGroupActive} for route ${this.currentUrl}, navigationGroupNestedRoutes = ${this.navigationGroupNestedRoutes}, defaultRouterLink = ${this.defaultRouterLink}`);
|
|
56
56
|
}
|
|
57
57
|
});
|
|
58
58
|
}
|
|
59
|
+
ngOnChanges(changes) {
|
|
60
|
+
if (changes['navigationGroupNestedRoutes'] || changes['defaultRouterLink']) {
|
|
61
|
+
const activeRoute = this.ignoreQueryParamsInActiveRoute ? removeQueryParams(this._router.url) : this._router.url;
|
|
62
|
+
const route = activeRoute.split('/').filter(item => item.length > 0);
|
|
63
|
+
this.currentUrl = route;
|
|
64
|
+
this.isGroupActive = isUrlPartOfNavigationGroup(this.currentUrl, this.navigationGroupNestedRoutes, this.defaultRouterLink);
|
|
65
|
+
//console.debug(`Nav group [${this.text}] active check (onChanges): isGroupActive = ${this.isGroupActive} for route ${this.currentUrl}, navigationGroupNestedRoutes = ${this.navigationGroupNestedRoutes}, defaultRouterLink = ${this.defaultRouterLink}`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
59
68
|
ngOnDestroy() {
|
|
60
69
|
this._unsubscribe.next();
|
|
61
70
|
this._unsubscribe.complete();
|
|
@@ -71,7 +80,7 @@ export class SdsNavigationGroupComponent {
|
|
|
71
80
|
}
|
|
72
81
|
}
|
|
73
82
|
SdsNavigationGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SdsNavigationGroupComponent, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Component });
|
|
74
|
-
SdsNavigationGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SdsNavigationGroupComponent, selector: "sds-navigation-group", inputs: { navigationGroupNestedRoutes: "navigationGroupNestedRoutes", text: "text", icon: "icon", defaultRouterLink: "defaultRouterLink", reverse: "reverse", ignoreQueryParamsInActiveRoute: "ignoreQueryParamsInActiveRoute", disabled: "disabled", showPopover: "showPopover", showPopoverHeader: "showPopoverHeader" }, queries: [{ propertyName: "routerLinkComponents", predicate: SdsNavigationRouteLinkComponent }], ngImport: i0, template: "<div \r\n #navigationGroup\r\n class=\"sds-navigation-group sds-navigation-item-container d-flex\"\r\n [class.flex-column-reverse]=\"reverse\"\r\n [class.flex-column]=\"!reverse\"\r\n [class.disabled]=\"disabled\"\r\n [class.active]=\"isGroupActive\"\r\n >\r\n <a \r\n class=\"w-100 sds-navigation-item-content\"\r\n style=\"cursor: pointer\"\r\n [routerLink]=\"[defaultRouterLink]\">\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"sds-navigation-icon\" >\r\n <ng-content select=\"[navigationIcon]\"></ng-content>\r\n </div>\r\n <div class=\"sds-navigation-text user-select-none\">\r\n {{ text }}\r\n </div>\r\n <div class=\"text-right\">\r\n <fa-icon *ngIf=\"!reverse\" [icon]=\"faAngleDownRegular\"></fa-icon>\r\n <fa-icon *ngIf=\"reverse\" [icon]=\"faAngleUpRegular\"></fa-icon>\r\n </div>\r\n </div>\r\n </a>\r\n\r\n <div *ngIf=\"isGroupActive\" class=\"sds-navigation-group-items\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n\r\n<ng-container *ngIf=\"showPopover && !isGroupActive\">\r\n <dx-popover\r\n [target]=\"navigationGroup\"\r\n [showEvent]=\"{ name: 'dxhoverstart', delay: 100 }\"\r\n [hideEvent]=\"{ name: 'dxhoverend', delay: 100 }\"\r\n (onHiding)=\"onHiding($event)\"\r\n width=\"15rem\"\r\n [wrapperAttr]=\"{ class: 'sds-navigation-group-popover-wrapper sds-dx-popup-content-padding-2' }\"\r\n [hideOnOutsideClick]=\"true\"\r\n [hideOnParentScroll]=\"true\"\r\n [animation]=\"{}\"\r\n >\r\n\r\n <dxo-position\r\n my=\"top left\"\r\n at=\"top right\"\r\n [of]=\"navigationGroup\"\r\n offset=\"-12 0\"\r\n >\r\n </dxo-position>\r\n\r\n <div *ngIf=\"showPopoverHeader\" class=\"group-header user-select-none\">\r\n {{ text }}\r\n </div>\r\n <div \r\n class=\"sds-navigation-container sds-navigation-popover-container sds-scrollbar sds-scrollbar-thin sds-scrollbar-no-hide\"\r\n >\r\n <div class=\"sds-navigation-group-items\">\r\n <ng-content select=\"[popoverContent]\"></ng-content>\r\n </div>\r\n </div>\r\n </dx-popover>\r\n</ng-container>\r\n", styles: [".sds-navigation-group.sds-navigation-item-container.disabled{pointer-events:none;opacity:.6}::ng-deep .sds-navigation-group-popover-wrapper.sds-dx-popup-content-padding-0 .dx-popup-content{padding:0rem}::ng-deep .sds-navigation-group-popover-wrapper.sds-dx-popup-content-padding-1 .dx-popup-content{padding:.25rem}::ng-deep .sds-navigation-group-popover-wrapper.sds-dx-popup-content-padding-2 .dx-popup-content{padding:.5rem}::ng-deep .sds-navigation-group-popover-wrapper.sds-dx-popup-content-padding-3 .dx-popup-content{padding:1rem}::ng-deep .sds-navigation-group-popover-wrapper .dx-popover-arrow{display:none}::ng-deep .sds-navigation-group-popover-wrapper .group-header{font-weight:600;padding:.25rem .75rem .5rem .5rem}::ng-deep .sds-navigation-group-popover-wrapper .sds-navigation-container.sds-navigation-popover-container{color:var(--bs-body-color)!important;padding-bottom:.07rem;overflow-y:auto;max-height:45vh}::ng-deep .sds-navigation-group-popover-wrapper .sds-navigation-container.sds-navigation-popover-container .sds-navigation-group-items .sds-navigation-icon{display:none}::ng-deep .sds-navigation-group-popover-wrapper .sds-navigation-container.sds-navigation-popover-container .sds-navigation-group-items .sds-navigation-item-container{border-left:none;padding-top:.25rem;padding-bottom:.25rem;border-radius:var(--bs-border-radius);color:var(--bs-body-color)!important}::ng-deep .sds-navigation-group-popover-wrapper .sds-navigation-container.sds-navigation-popover-container .sds-navigation-group-items .sds-navigation-item-container .sds-navigation-item-content{padding-top:.25rem;padding-bottom:.25rem;padding-left:1rem;color:var(--bs-body-color)!important}::ng-deep .sds-navigation-group-popover-wrapper .sds-navigation-container.sds-navigation-popover-container .sds-navigation-group-items .sds-navigation-item-container .sds-navigation-header{color:var(--bs-body-color)!important}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i3.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "component", type: i4.DxPopoverComponent, selector: "dx-popover", inputs: ["animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "elementAttr", "height", "hideEvent", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showCloseButton", "showEvent", "showTitle", "target", "title", "titleTemplate", "toolbarItems", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "onTitleRendered", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "elementAttrChange", "heightChange", "hideEventChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showCloseButtonChange", "showEventChange", "showTitleChange", "targetChange", "titleChange", "titleTemplateChange", "toolbarItemsChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { kind: "component", type: i5.DxoPositionComponent, selector: "dxo-position", inputs: ["at", "boundary", "boundaryOffset", "collision", "my", "of", "offset"] }] });
|
|
83
|
+
SdsNavigationGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SdsNavigationGroupComponent, selector: "sds-navigation-group", inputs: { navigationGroupNestedRoutes: "navigationGroupNestedRoutes", text: "text", icon: "icon", defaultRouterLink: "defaultRouterLink", reverse: "reverse", ignoreQueryParamsInActiveRoute: "ignoreQueryParamsInActiveRoute", disabled: "disabled", showPopover: "showPopover", showPopoverHeader: "showPopoverHeader" }, queries: [{ propertyName: "routerLinkComponents", predicate: SdsNavigationRouteLinkComponent }], usesOnChanges: true, ngImport: i0, template: "<div \r\n #navigationGroup\r\n class=\"sds-navigation-group sds-navigation-item-container d-flex\"\r\n [class.flex-column-reverse]=\"reverse\"\r\n [class.flex-column]=\"!reverse\"\r\n [class.disabled]=\"disabled\"\r\n [class.active]=\"isGroupActive\"\r\n >\r\n <a \r\n class=\"w-100 sds-navigation-item-content\"\r\n style=\"cursor: pointer\"\r\n [routerLink]=\"[defaultRouterLink]\">\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"sds-navigation-icon\" >\r\n <ng-content select=\"[navigationIcon]\"></ng-content>\r\n </div>\r\n <div class=\"sds-navigation-text user-select-none\">\r\n {{ text }}\r\n </div>\r\n <div class=\"text-right\">\r\n <fa-icon *ngIf=\"!reverse\" [icon]=\"faAngleDownRegular\"></fa-icon>\r\n <fa-icon *ngIf=\"reverse\" [icon]=\"faAngleUpRegular\"></fa-icon>\r\n </div>\r\n </div>\r\n </a>\r\n\r\n <div *ngIf=\"isGroupActive\" class=\"sds-navigation-group-items\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n\r\n<ng-container *ngIf=\"showPopover && !isGroupActive\">\r\n <dx-popover\r\n [target]=\"navigationGroup\"\r\n [showEvent]=\"{ name: 'dxhoverstart', delay: 100 }\"\r\n [hideEvent]=\"{ name: 'dxhoverend', delay: 100 }\"\r\n (onHiding)=\"onHiding($event)\"\r\n width=\"15rem\"\r\n [wrapperAttr]=\"{ class: 'sds-navigation-group-popover-wrapper sds-dx-popup-content-padding-2' }\"\r\n [hideOnOutsideClick]=\"true\"\r\n [hideOnParentScroll]=\"true\"\r\n [animation]=\"{}\"\r\n >\r\n\r\n <dxo-position\r\n my=\"top left\"\r\n at=\"top right\"\r\n [of]=\"navigationGroup\"\r\n offset=\"-12 0\"\r\n >\r\n </dxo-position>\r\n\r\n <div *ngIf=\"showPopoverHeader\" class=\"group-header user-select-none\">\r\n {{ text }}\r\n </div>\r\n <div \r\n class=\"sds-navigation-container sds-navigation-popover-container sds-scrollbar sds-scrollbar-thin sds-scrollbar-no-hide\"\r\n >\r\n <div class=\"sds-navigation-group-items\">\r\n <ng-content select=\"[popoverContent]\"></ng-content>\r\n </div>\r\n </div>\r\n </dx-popover>\r\n</ng-container>\r\n", styles: [".sds-navigation-group.sds-navigation-item-container.disabled{pointer-events:none;opacity:.6}::ng-deep .sds-navigation-group-popover-wrapper.sds-dx-popup-content-padding-0 .dx-popup-content{padding:0rem}::ng-deep .sds-navigation-group-popover-wrapper.sds-dx-popup-content-padding-1 .dx-popup-content{padding:.25rem}::ng-deep .sds-navigation-group-popover-wrapper.sds-dx-popup-content-padding-2 .dx-popup-content{padding:.5rem}::ng-deep .sds-navigation-group-popover-wrapper.sds-dx-popup-content-padding-3 .dx-popup-content{padding:1rem}::ng-deep .sds-navigation-group-popover-wrapper .dx-popover-arrow{display:none}::ng-deep .sds-navigation-group-popover-wrapper .group-header{font-weight:600;padding:.25rem .75rem .5rem .5rem}::ng-deep .sds-navigation-group-popover-wrapper .sds-navigation-container.sds-navigation-popover-container{color:var(--bs-body-color)!important;padding-bottom:.07rem;overflow-y:auto;max-height:45vh}::ng-deep .sds-navigation-group-popover-wrapper .sds-navigation-container.sds-navigation-popover-container .sds-navigation-group-items .sds-navigation-icon{display:none}::ng-deep .sds-navigation-group-popover-wrapper .sds-navigation-container.sds-navigation-popover-container .sds-navigation-group-items .sds-navigation-item-container{border-left:none;padding-top:.25rem;padding-bottom:.25rem;border-radius:var(--bs-border-radius);color:var(--bs-body-color)!important}::ng-deep .sds-navigation-group-popover-wrapper .sds-navigation-container.sds-navigation-popover-container .sds-navigation-group-items .sds-navigation-item-container .sds-navigation-item-content{padding-top:.25rem;padding-bottom:.25rem;padding-left:1rem;color:var(--bs-body-color)!important}::ng-deep .sds-navigation-group-popover-wrapper .sds-navigation-container.sds-navigation-popover-container .sds-navigation-group-items .sds-navigation-item-container .sds-navigation-header{color:var(--bs-body-color)!important}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i3.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "animation", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "component", type: i4.DxPopoverComponent, selector: "dx-popover", inputs: ["animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "elementAttr", "height", "hideEvent", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showCloseButton", "showEvent", "showTitle", "target", "title", "titleTemplate", "toolbarItems", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "onTitleRendered", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "elementAttrChange", "heightChange", "hideEventChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showCloseButtonChange", "showEventChange", "showTitleChange", "targetChange", "titleChange", "titleTemplateChange", "toolbarItemsChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { kind: "component", type: i5.DxoPositionComponent, selector: "dxo-position", inputs: ["at", "boundary", "boundaryOffset", "collision", "my", "of", "offset"] }] });
|
|
75
84
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SdsNavigationGroupComponent, decorators: [{
|
|
76
85
|
type: Component,
|
|
77
86
|
args: [{ selector: 'sds-navigation-group', template: "<div \r\n #navigationGroup\r\n class=\"sds-navigation-group sds-navigation-item-container d-flex\"\r\n [class.flex-column-reverse]=\"reverse\"\r\n [class.flex-column]=\"!reverse\"\r\n [class.disabled]=\"disabled\"\r\n [class.active]=\"isGroupActive\"\r\n >\r\n <a \r\n class=\"w-100 sds-navigation-item-content\"\r\n style=\"cursor: pointer\"\r\n [routerLink]=\"[defaultRouterLink]\">\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"sds-navigation-icon\" >\r\n <ng-content select=\"[navigationIcon]\"></ng-content>\r\n </div>\r\n <div class=\"sds-navigation-text user-select-none\">\r\n {{ text }}\r\n </div>\r\n <div class=\"text-right\">\r\n <fa-icon *ngIf=\"!reverse\" [icon]=\"faAngleDownRegular\"></fa-icon>\r\n <fa-icon *ngIf=\"reverse\" [icon]=\"faAngleUpRegular\"></fa-icon>\r\n </div>\r\n </div>\r\n </a>\r\n\r\n <div *ngIf=\"isGroupActive\" class=\"sds-navigation-group-items\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n\r\n<ng-container *ngIf=\"showPopover && !isGroupActive\">\r\n <dx-popover\r\n [target]=\"navigationGroup\"\r\n [showEvent]=\"{ name: 'dxhoverstart', delay: 100 }\"\r\n [hideEvent]=\"{ name: 'dxhoverend', delay: 100 }\"\r\n (onHiding)=\"onHiding($event)\"\r\n width=\"15rem\"\r\n [wrapperAttr]=\"{ class: 'sds-navigation-group-popover-wrapper sds-dx-popup-content-padding-2' }\"\r\n [hideOnOutsideClick]=\"true\"\r\n [hideOnParentScroll]=\"true\"\r\n [animation]=\"{}\"\r\n >\r\n\r\n <dxo-position\r\n my=\"top left\"\r\n at=\"top right\"\r\n [of]=\"navigationGroup\"\r\n offset=\"-12 0\"\r\n >\r\n </dxo-position>\r\n\r\n <div *ngIf=\"showPopoverHeader\" class=\"group-header user-select-none\">\r\n {{ text }}\r\n </div>\r\n <div \r\n class=\"sds-navigation-container sds-navigation-popover-container sds-scrollbar sds-scrollbar-thin sds-scrollbar-no-hide\"\r\n >\r\n <div class=\"sds-navigation-group-items\">\r\n <ng-content select=\"[popoverContent]\"></ng-content>\r\n </div>\r\n </div>\r\n </dx-popover>\r\n</ng-container>\r\n", styles: [".sds-navigation-group.sds-navigation-item-container.disabled{pointer-events:none;opacity:.6}::ng-deep .sds-navigation-group-popover-wrapper.sds-dx-popup-content-padding-0 .dx-popup-content{padding:0rem}::ng-deep .sds-navigation-group-popover-wrapper.sds-dx-popup-content-padding-1 .dx-popup-content{padding:.25rem}::ng-deep .sds-navigation-group-popover-wrapper.sds-dx-popup-content-padding-2 .dx-popup-content{padding:.5rem}::ng-deep .sds-navigation-group-popover-wrapper.sds-dx-popup-content-padding-3 .dx-popup-content{padding:1rem}::ng-deep .sds-navigation-group-popover-wrapper .dx-popover-arrow{display:none}::ng-deep .sds-navigation-group-popover-wrapper .group-header{font-weight:600;padding:.25rem .75rem .5rem .5rem}::ng-deep .sds-navigation-group-popover-wrapper .sds-navigation-container.sds-navigation-popover-container{color:var(--bs-body-color)!important;padding-bottom:.07rem;overflow-y:auto;max-height:45vh}::ng-deep .sds-navigation-group-popover-wrapper .sds-navigation-container.sds-navigation-popover-container .sds-navigation-group-items .sds-navigation-icon{display:none}::ng-deep .sds-navigation-group-popover-wrapper .sds-navigation-container.sds-navigation-popover-container .sds-navigation-group-items .sds-navigation-item-container{border-left:none;padding-top:.25rem;padding-bottom:.25rem;border-radius:var(--bs-border-radius);color:var(--bs-body-color)!important}::ng-deep .sds-navigation-group-popover-wrapper .sds-navigation-container.sds-navigation-popover-container .sds-navigation-group-items .sds-navigation-item-container .sds-navigation-item-content{padding-top:.25rem;padding-bottom:.25rem;padding-left:1rem;color:var(--bs-body-color)!important}::ng-deep .sds-navigation-group-popover-wrapper .sds-navigation-container.sds-navigation-popover-container .sds-navigation-group-items .sds-navigation-item-container .sds-navigation-header{color:var(--bs-body-color)!important}\n"] }]
|
|
@@ -97,4 +106,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
97
106
|
type: ContentChildren,
|
|
98
107
|
args: [SdsNavigationRouteLinkComponent]
|
|
99
108
|
}] } });
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2RzLWNvbXBvbmVudHMvc3JjL2xpYi9uYXZpZ2F0aW9uL25hdmlnYXRpb24tZ3JvdXAvbmF2aWdhdGlvbi1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2RzLWNvbXBvbmVudHMvc3JjL2xpYi9uYXZpZ2F0aW9uL25hdmlnYXRpb24tZ3JvdXAvbmF2aWdhdGlvbi1ncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsU0FBUyxFQUNULGVBQWUsRUFDZixLQUFLLEVBR0wsU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUUzRyxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7OztBQU8xRixNQUFNLE9BQU8sMkJBQTJCO0lBUXBDLElBQ0ksMkJBQTJCLENBQUMsS0FBZTtRQUMzQyxJQUFJLENBQUMsNEJBQTRCLEdBQUcsS0FBSyxDQUFDO0lBQzlDLENBQUM7SUFDRCxJQUFJLDJCQUEyQjtRQUMzQixPQUFPLElBQUksQ0FBQyw0QkFBNEIsQ0FBQztJQUM3QyxDQUFDO0lBNkJELFlBQW9CLE9BQWU7UUFBZixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBMUNuQzs7Ozs7V0FLRztRQUNLLGlDQUE0QixHQUFhLEVBQUUsQ0FBQztRQVMzQyxTQUFJLEdBQVcsRUFBRSxDQUFDO1FBQ2xCLFNBQUksR0FBVyxFQUFFLENBQUM7UUFDbEIsc0JBQWlCLEdBQVcsRUFBRSxDQUFDO1FBQy9CLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsbUNBQThCLEdBQUcsS0FBSyxDQUFDO1FBQ3ZDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBR25DLHlCQUFvQixHQUErQyxJQUFJLFNBQVMsRUFBbUMsQ0FBQztRQUVwSCxXQUFNLEdBQVksS0FBSyxDQUFDO1FBRXhCLHFCQUFnQixHQUFHLFNBQVMsQ0FBQztRQUM3Qix1QkFBa0IsR0FBRyxXQUFXLENBQUM7UUFFakM7O1dBRUc7UUFDSCxlQUFVLEdBQWEsRUFBRSxDQUFDO1FBRWxCLGlCQUFZLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7UUFFbkQsa0JBQWEsR0FBWSxLQUFLLENBQUM7SUFHQSxDQUFDO0lBRXZDLFFBQVE7UUFDSixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ3BCLE1BQU0sQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsS0FBSyxZQUFZLGFBQWEsQ0FBQyxFQUN0RCxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUMvQixDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2xCLElBQUksS0FBSyxZQUFZLGFBQWEsRUFBRTtnQkFDaEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDO2dCQUMvSCxNQUFNLEtBQUssR0FBYSxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQy9FLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO2dCQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLDBCQUEwQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLDJCQUEyQixFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO2dCQUUzSCxPQUFPLENBQUMsS0FBSyxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksbUNBQW1DLElBQUksQ0FBQyxhQUFhLGNBQWMsSUFBSSxDQUFDLFVBQVUsbUNBQW1DLElBQUksQ0FBQywyQkFBMkIseUJBQXlCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7YUFDaFA7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxRQUFRLENBQUMsQ0FBTTtRQUNYLE1BQU0sY0FBYyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUMsVUFBVSxDQUFDO1FBQ3hELE1BQU0sb0JBQW9CLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5RCxDQUFDLENBQUMsTUFBTSxHQUFHLG9CQUFvQixDQUFDO1FBRWhDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFO1lBQy9DLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7WUFDM0QsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUV2QixDQUFDLENBQUMsQ0FBQztJQUVQLENBQUM7O3lIQTdFUSwyQkFBMkI7NkdBQTNCLDJCQUEyQiw2WkF5Qm5CLCtCQUErQiw2QkM5Q3BELGk0RUFnRUE7NEZEM0NhLDJCQUEyQjtrQkFMdkMsU0FBUzsrQkFDSSxzQkFBc0I7NkZBYTVCLDJCQUEyQjtzQkFEOUIsS0FBSztnQkFRRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csOEJBQThCO3NCQUF0QyxLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBR04sb0JBQW9CO3NCQURuQixlQUFlO3VCQUFDLCtCQUErQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBBZnRlckNvbnRlbnRJbml0LFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgQ29udGVudENoaWxkcmVuLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkRlc3Ryb3ksXHJcbiAgICBPbkluaXQsXHJcbiAgICBRdWVyeUxpc3QsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFNkc05hdmlnYXRpb25Sb3V0ZUxpbmtDb21wb25lbnQgfSBmcm9tICcuLi9uYXZpZ2F0aW9uLXJvdXRlLWxpbmsvbmF2aWdhdGlvbi1yb3V0ZS1saW5rLmNvbXBvbmVudCc7XHJcblxyXG5pbXBvcnQgeyBmYUFuZ2xlVXAsIGZhQW5nbGVEb3duIH0gZnJvbSAnQGZvcnRhd2Vzb21lL3Byby1yZWd1bGFyLXN2Zy1pY29ucyc7XHJcbmltcG9ydCB7IGZpbHRlciwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGlzVXJsUGFydE9mTmF2aWdhdGlvbkdyb3VwLCByZW1vdmVRdWVyeVBhcmFtcyB9IGZyb20gJy4uL3V0aWxzL25hdmlnYXRpb24udXRpbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3Nkcy1uYXZpZ2F0aW9uLWdyb3VwJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9uYXZpZ2F0aW9uLWdyb3VwLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL25hdmlnYXRpb24tZ3JvdXAuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNkc05hdmlnYXRpb25Hcm91cENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAgIC8qKlxyXG4gICAgICogTGlzdCBvZiBwYXRocyBhbGxvd2VkL2V4cGVjdGVkIHdpdGhpbiB0aGlzIG1vZHVsZS5cclxuICAgICAqIFRoZXNlIGFyZSBwYXRocyB0aGF0IGFyZSBub3QgYWNjZXNzaWJsZSB0aHJvdWdoIGNoaWxkIG5hdmlnYXRpb25cclxuICAgICAqIGVsZW1lbnRzLCBidXQgdGhyb3VnaCBsaW5rcyBpbiBvdGhlciBwYXJ0cyBvZiB0aGUgYXBwbGljYXRpb24gKGUuZy4gbGlua1xyXG4gICAgICogb24gZm9ybSlcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfbmF2aWdhdGlvbkdyb3VwTmVzdGVkUm91dGVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgQElucHV0KClcclxuICAgIHNldCBuYXZpZ2F0aW9uR3JvdXBOZXN0ZWRSb3V0ZXModmFsdWU6IHN0cmluZ1tdKSB7XHJcbiAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkdyb3VwTmVzdGVkUm91dGVzID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgICBnZXQgbmF2aWdhdGlvbkdyb3VwTmVzdGVkUm91dGVzKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9uYXZpZ2F0aW9uR3JvdXBOZXN0ZWRSb3V0ZXM7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KCkgdGV4dDogc3RyaW5nID0gJyc7XHJcbiAgICBASW5wdXQoKSBpY29uOiBzdHJpbmcgPSAnJztcclxuICAgIEBJbnB1dCgpIGRlZmF1bHRSb3V0ZXJMaW5rOiBzdHJpbmcgPSAnJztcclxuICAgIEBJbnB1dCgpIHJldmVyc2UgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIGlnbm9yZVF1ZXJ5UGFyYW1zSW5BY3RpdmVSb3V0ZSA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIHNob3dQb3BvdmVyID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBzaG93UG9wb3ZlckhlYWRlciA9IGZhbHNlO1xyXG5cclxuICAgIEBDb250ZW50Q2hpbGRyZW4oU2RzTmF2aWdhdGlvblJvdXRlTGlua0NvbXBvbmVudClcclxuICAgIHJvdXRlckxpbmtDb21wb25lbnRzOiBRdWVyeUxpc3Q8U2RzTmF2aWdhdGlvblJvdXRlTGlua0NvbXBvbmVudD4gPSBuZXcgUXVlcnlMaXN0PFNkc05hdmlnYXRpb25Sb3V0ZUxpbmtDb21wb25lbnQ+KCk7XHJcblxyXG4gICAgYWN0aXZlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgZmFBbmdsZVVwUmVndWxhciA9IGZhQW5nbGVVcDtcclxuICAgIGZhQW5nbGVEb3duUmVndWxhciA9IGZhQW5nbGVEb3duO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3VycmVudCBhcHAgVVJMIChlLmcuIFsnbGF5b3V0LXNob3djYXNlJywgJ2RlZmF1bHQnXSlcclxuICAgICAqL1xyXG4gICAgY3VycmVudFVybDogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICBwcml2YXRlIF91bnN1YnNjcmliZTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gICAgcHVibGljIGlzR3JvdXBBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIpIHt9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fcm91dGVyLmV2ZW50cy5waXBlKFxyXG4gICAgICAgICAgICBmaWx0ZXIoKGV2ZW50OiBhbnkpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCksXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZSlcclxuICAgICAgICApLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcclxuICAgICAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlUm91dGUgPSB0aGlzLmlnbm9yZVF1ZXJ5UGFyYW1zSW5BY3RpdmVSb3V0ZSA/IHJlbW92ZVF1ZXJ5UGFyYW1zKGV2ZW50LnVybEFmdGVyUmVkaXJlY3RzKSA6IGV2ZW50LnVybEFmdGVyUmVkaXJlY3RzO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgcm91dGU6IHN0cmluZ1tdID0gYWN0aXZlUm91dGUuc3BsaXQoJy8nKS5maWx0ZXIoaXRlbSA9PiBpdGVtLmxlbmd0aCA+IDApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50VXJsID0gcm91dGU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzR3JvdXBBY3RpdmUgPSBpc1VybFBhcnRPZk5hdmlnYXRpb25Hcm91cCh0aGlzLmN1cnJlbnRVcmwsIHRoaXMubmF2aWdhdGlvbkdyb3VwTmVzdGVkUm91dGVzLCB0aGlzLmRlZmF1bHRSb3V0ZXJMaW5rKTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmRlYnVnKGBOYXYgZ3JvdXAgWyR7dGhpcy50ZXh0fV0gYWN0aXZlIGNoZWNrOiBpc0dyb3VwQWN0aXZlID0gJHt0aGlzLmlzR3JvdXBBY3RpdmV9IGZvciByb3V0ZSAke3RoaXMuY3VycmVudFVybH0sIG5hdmlnYXRpb25Hcm91cE5lc3RlZFJvdXRlcyA9ICR7dGhpcy5uYXZpZ2F0aW9uR3JvdXBOZXN0ZWRSb3V0ZXN9LCBkZWZhdWx0Um91dGVyTGluayA9ICR7dGhpcy5kZWZhdWx0Um91dGVyTGlua31gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3Vuc3Vic2NyaWJlLm5leHQoKTtcclxuICAgICAgICB0aGlzLl91bnN1YnNjcmliZS5jb21wbGV0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uSGlkaW5nKGU6IGFueSkge1xyXG4gICAgICAgIGNvbnN0IHBvcG92ZXJDb250ZW50ID0gZS5jb21wb25lbnQuY29udGVudCgpLnBhcmVudE5vZGU7XHJcbiAgICAgICAgY29uc3QgaXNNb3VzZUluc2lkZVBvcG92ZXIgPSBwb3BvdmVyQ29udGVudC5tYXRjaGVzKCc6aG92ZXInKTtcclxuICAgICAgICBlLmNhbmNlbCA9IGlzTW91c2VJbnNpZGVQb3BvdmVyO1xyXG5cclxuICAgICAgICBwb3BvdmVyQ29udGVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgKCkgPT4ge1xyXG4gICAgICAgICAgICBwb3BvdmVyQ29udGVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgKCkgPT4ge30pO1xyXG4gICAgICAgICAgICBlLmNvbXBvbmVudC5oaWRlKCk7XHJcblxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IFxyXG4gICAgI25hdmlnYXRpb25Hcm91cFxyXG4gICAgY2xhc3M9XCJzZHMtbmF2aWdhdGlvbi1ncm91cCBzZHMtbmF2aWdhdGlvbi1pdGVtLWNvbnRhaW5lciBkLWZsZXhcIlxyXG4gICAgW2NsYXNzLmZsZXgtY29sdW1uLXJldmVyc2VdPVwicmV2ZXJzZVwiXHJcbiAgICBbY2xhc3MuZmxleC1jb2x1bW5dPVwiIXJldmVyc2VcIlxyXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgIFtjbGFzcy5hY3RpdmVdPVwiaXNHcm91cEFjdGl2ZVwiXHJcbiAgICA+XHJcbiAgICA8YSBcclxuICAgICAgICBjbGFzcz1cInctMTAwIHNkcy1uYXZpZ2F0aW9uLWl0ZW0tY29udGVudFwiXHJcbiAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxyXG4gICAgICAgIFtyb3V0ZXJMaW5rXT1cIltkZWZhdWx0Um91dGVyTGlua11cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2RzLW5hdmlnYXRpb24taWNvblwiID5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltuYXZpZ2F0aW9uSWNvbl1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2RzLW5hdmlnYXRpb24tdGV4dCB1c2VyLXNlbGVjdC1ub25lXCI+XHJcbiAgICAgICAgICAgICAgICB7eyB0ZXh0IH19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgPGZhLWljb24gKm5nSWY9XCIhcmV2ZXJzZVwiIFtpY29uXT1cImZhQW5nbGVEb3duUmVndWxhclwiPjwvZmEtaWNvbj5cclxuICAgICAgICAgICAgICAgIDxmYS1pY29uICpuZ0lmPVwicmV2ZXJzZVwiIFtpY29uXT1cImZhQW5nbGVVcFJlZ3VsYXJcIj48L2ZhLWljb24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9hPlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJpc0dyb3VwQWN0aXZlXCIgY2xhc3M9XCJzZHMtbmF2aWdhdGlvbi1ncm91cC1pdGVtc1wiPlxyXG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93UG9wb3ZlciAmJiAhaXNHcm91cEFjdGl2ZVwiPlxyXG4gICAgPGR4LXBvcG92ZXJcclxuICAgICAgICBbdGFyZ2V0XT1cIm5hdmlnYXRpb25Hcm91cFwiXHJcbiAgICAgICAgW3Nob3dFdmVudF09XCJ7IG5hbWU6ICdkeGhvdmVyc3RhcnQnLCBkZWxheTogMTAwIH1cIlxyXG4gICAgICAgIFtoaWRlRXZlbnRdPVwieyBuYW1lOiAnZHhob3ZlcmVuZCcsIGRlbGF5OiAxMDAgfVwiXHJcbiAgICAgICAgKG9uSGlkaW5nKT1cIm9uSGlkaW5nKCRldmVudClcIlxyXG4gICAgICAgIHdpZHRoPVwiMTVyZW1cIlxyXG4gICAgICAgIFt3cmFwcGVyQXR0cl09XCJ7IGNsYXNzOiAnc2RzLW5hdmlnYXRpb24tZ3JvdXAtcG9wb3Zlci13cmFwcGVyIHNkcy1keC1wb3B1cC1jb250ZW50LXBhZGRpbmctMicgfVwiXHJcbiAgICAgICAgW2hpZGVPbk91dHNpZGVDbGlja109XCJ0cnVlXCJcclxuICAgICAgICBbaGlkZU9uUGFyZW50U2Nyb2xsXT1cInRydWVcIlxyXG4gICAgICAgIFthbmltYXRpb25dPVwie31cIlxyXG4gICAgPlxyXG5cclxuICAgICAgICA8ZHhvLXBvc2l0aW9uXHJcbiAgICAgICAgICAgIG15PVwidG9wIGxlZnRcIlxyXG4gICAgICAgICAgICBhdD1cInRvcCByaWdodFwiXHJcbiAgICAgICAgICAgIFtvZl09XCJuYXZpZ2F0aW9uR3JvdXBcIlxyXG4gICAgICAgICAgICBvZmZzZXQ9XCItMTIgMFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICA8L2R4by1wb3NpdGlvbj5cclxuXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dQb3BvdmVySGVhZGVyXCIgY2xhc3M9XCJncm91cC1oZWFkZXIgdXNlci1zZWxlY3Qtbm9uZVwiPlxyXG4gICAgICAgICAgICB7eyB0ZXh0IH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgY2xhc3M9XCJzZHMtbmF2aWdhdGlvbi1jb250YWluZXIgc2RzLW5hdmlnYXRpb24tcG9wb3Zlci1jb250YWluZXIgc2RzLXNjcm9sbGJhciBzZHMtc2Nyb2xsYmFyLXRoaW4gc2RzLXNjcm9sbGJhci1uby1oaWRlXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2RzLW5hdmlnYXRpb24tZ3JvdXAtaXRlbXNcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltwb3BvdmVyQ29udGVudF1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9keC1wb3BvdmVyPlxyXG48L25nLWNvbnRhaW5lcj5cclxuIl19
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2RzLWNvbXBvbmVudHMvc3JjL2xpYi9uYXZpZ2F0aW9uL25hdmlnYXRpb24tZ3JvdXAvbmF2aWdhdGlvbi1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2RzLWNvbXBvbmVudHMvc3JjL2xpYi9uYXZpZ2F0aW9uL25hdmlnYXRpb24tZ3JvdXAvbmF2aWdhdGlvbi1ncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsU0FBUyxFQUNULGVBQWUsRUFDZixLQUFLLEVBSUwsU0FBUyxHQUVaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUUzRyxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7OztBQU8xRixNQUFNLE9BQU8sMkJBQTJCO0lBUXBDLElBQ0ksMkJBQTJCLENBQUMsS0FBZTtRQUMzQyxJQUFJLENBQUMsNEJBQTRCLEdBQUcsS0FBSyxDQUFDO0lBQzlDLENBQUM7SUFDRCxJQUFJLDJCQUEyQjtRQUMzQixPQUFPLElBQUksQ0FBQyw0QkFBNEIsQ0FBQztJQUM3QyxDQUFDO0lBNkJELFlBQW9CLE9BQWU7UUFBZixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBMUNuQzs7Ozs7V0FLRztRQUNLLGlD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QyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUMsVUFBVSxDQUFDO1FBQ3hELE1BQU0sb0JBQW9CLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5RCxDQUFDLENBQUMsTUFBTSxHQUFHLG9CQUFvQixDQUFDO1FBRWhDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFO1lBQy9DLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7WUFDM0QsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUV2QixDQUFDLENBQUMsQ0FBQztJQUVQLENBQUM7O3lIQXhGUSwyQkFBMkI7NkdBQTNCLDJCQUEyQiw2WkF5Qm5CLCtCQUErQixrRENoRHBELGk0RUFnRUE7NEZEekNhLDJCQUEyQjtrQkFMdkMsU0FBUzsrQkFDSSxzQkFBc0I7NkZBYTVCLDJCQUEyQjtzQkFEOUIsS0FBSztnQkFRRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csOEJBQThCO3NCQUF0QyxLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBR04sb0JBQW9CO3NCQURuQixlQUFlO3VCQUFDLCtCQUErQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBBZnRlckNvbnRlbnRJbml0LFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgQ29udGVudENoaWxkcmVuLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBPbkRlc3Ryb3ksXHJcbiAgICBPbkluaXQsXHJcbiAgICBRdWVyeUxpc3QsXHJcbiAgICBTaW1wbGVDaGFuZ2VzLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBTZHNOYXZpZ2F0aW9uUm91dGVMaW5rQ29tcG9uZW50IH0gZnJvbSAnLi4vbmF2aWdhdGlvbi1yb3V0ZS1saW5rL25hdmlnYXRpb24tcm91dGUtbGluay5jb21wb25lbnQnO1xyXG5cclxuaW1wb3J0IHsgZmFBbmdsZVVwLCBmYUFuZ2xlRG93biB9IGZyb20gJ0Bmb3J0YXdlc29tZS9wcm8tcmVndWxhci1zdmctaWNvbnMnO1xyXG5pbXBvcnQgeyBmaWx0ZXIsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBpc1VybFBhcnRPZk5hdmlnYXRpb25Hcm91cCwgcmVtb3ZlUXVlcnlQYXJhbXMgfSBmcm9tICcuLi91dGlscy9uYXZpZ2F0aW9uLnV0aWxzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzZHMtbmF2aWdhdGlvbi1ncm91cCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vbmF2aWdhdGlvbi1ncm91cC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9uYXZpZ2F0aW9uLWdyb3VwLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZHNOYXZpZ2F0aW9uR3JvdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcclxuICAgIC8qKlxyXG4gICAgICogTGlzdCBvZiBwYXRocyBhbGxvd2VkL2V4cGVjdGVkIHdpdGhpbiB0aGlzIG1vZHVsZS5cclxuICAgICAqIFRoZXNlIGFyZSBwYXRocyB0aGF0IGFyZSBub3QgYWNjZXNzaWJsZSB0aHJvdWdoIGNoaWxkIG5hdmlnYXRpb25cclxuICAgICAqIGVsZW1lbnRzLCBidXQgdGhyb3VnaCBsaW5rcyBpbiBvdGhlciBwYXJ0cyBvZiB0aGUgYXBwbGljYXRpb24gKGUuZy4gbGlua1xyXG4gICAgICogb24gZm9ybSlcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfbmF2aWdhdGlvbkdyb3VwTmVzdGVkUm91dGVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgQElucHV0KClcclxuICAgIHNldCBuYXZpZ2F0aW9uR3JvdXBOZXN0ZWRSb3V0ZXModmFsdWU6IHN0cmluZ1tdKSB7XHJcbiAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkdyb3VwTmVzdGVkUm91dGVzID0gdmFsdWU7XHJcbiAgICB9XHJcbiAgICBnZXQgbmF2aWdhdGlvbkdyb3VwTmVzdGVkUm91dGVzKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9uYXZpZ2F0aW9uR3JvdXBOZXN0ZWRSb3V0ZXM7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KCkgdGV4dDogc3RyaW5nID0gJyc7XHJcbiAgICBASW5wdXQoKSBpY29uOiBzdHJpbmcgPSAnJztcclxuICAgIEBJbnB1dCgpIGRlZmF1bHRSb3V0ZXJMaW5rOiBzdHJpbmcgPSAnJztcclxuICAgIEBJbnB1dCgpIHJldmVyc2UgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIGlnbm9yZVF1ZXJ5UGFyYW1zSW5BY3RpdmVSb3V0ZSA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIHNob3dQb3BvdmVyID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBzaG93UG9wb3ZlckhlYWRlciA9IGZhbHNlO1xyXG5cclxuICAgIEBDb250ZW50Q2hpbGRyZW4oU2RzTmF2aWdhdGlvblJvdXRlTGlua0NvbXBvbmVudClcclxuICAgIHJvdXRlckxpbmtDb21wb25lbnRzOiBRdWVyeUxpc3Q8U2RzTmF2aWdhdGlvblJvdXRlTGlua0NvbXBvbmVudD4gPSBuZXcgUXVlcnlMaXN0PFNkc05hdmlnYXRpb25Sb3V0ZUxpbmtDb21wb25lbnQ+KCk7XHJcblxyXG4gICAgYWN0aXZlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgZmFBbmdsZVVwUmVndWxhciA9IGZhQW5nbGVVcDtcclxuICAgIGZhQW5nbGVEb3duUmVndWxhciA9IGZhQW5nbGVEb3duO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3VycmVudCBhcHAgVVJMIChlLmcuIFsnbGF5b3V0LXNob3djYXNlJywgJ2RlZmF1bHQnXSlcclxuICAgICAqL1xyXG4gICAgY3VycmVudFVybDogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICBwcml2YXRlIF91bnN1YnNjcmliZTogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gICAgcHVibGljIGlzR3JvdXBBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIpIHt9XHJcblxyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fcm91dGVyLmV2ZW50cy5waXBlKFxyXG4gICAgICAgICAgICBmaWx0ZXIoKGV2ZW50OiBhbnkpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCksXHJcbiAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZSlcclxuICAgICAgICApLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcclxuICAgICAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlUm91dGUgPSB0aGlzLmlnbm9yZVF1ZXJ5UGFyYW1zSW5BY3RpdmVSb3V0ZSA/IHJlbW92ZVF1ZXJ5UGFyYW1zKGV2ZW50LnVybEFmdGVyUmVkaXJlY3RzKSA6IGV2ZW50LnVybEFmdGVyUmVkaXJlY3RzO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgcm91dGU6IHN0cmluZ1tdID0gYWN0aXZlUm91dGUuc3BsaXQoJy8nKS5maWx0ZXIoaXRlbSA9PiBpdGVtLmxlbmd0aCA+IDApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50VXJsID0gcm91dGU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzR3JvdXBBY3RpdmUgPSBpc1VybFBhcnRPZk5hdmlnYXRpb25Hcm91cCh0aGlzLmN1cnJlbnRVcmwsIHRoaXMubmF2aWdhdGlvbkdyb3VwTmVzdGVkUm91dGVzLCB0aGlzLmRlZmF1bHRSb3V0ZXJMaW5rKTtcclxuXHJcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUuZGVidWcoYE5hdiBncm91cCBbJHt0aGlzLnRleHR9XSBhY3RpdmUgY2hlY2sgKE5hdmlnYXRpb25FbmQpOiBpc0dyb3VwQWN0aXZlID0gJHt0aGlzLmlzR3JvdXBBY3RpdmV9IGZvciByb3V0ZSAke3RoaXMuY3VycmVudFVybH0sIG5hdmlnYXRpb25Hcm91cE5lc3RlZFJvdXRlcyA9ICR7dGhpcy5uYXZpZ2F0aW9uR3JvdXBOZXN0ZWRSb3V0ZXN9LCBkZWZhdWx0Um91dGVyTGluayA9ICR7dGhpcy5kZWZhdWx0Um91dGVyTGlua31gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgICAgICBpZiAoY2hhbmdlc1snbmF2aWdhdGlvbkdyb3VwTmVzdGVkUm91dGVzJ10gfHwgY2hhbmdlc1snZGVmYXVsdFJvdXRlckxpbmsnXSkge1xyXG4gICAgICAgICAgICBjb25zdCBhY3RpdmVSb3V0ZSA9IHRoaXMuaWdub3JlUXVlcnlQYXJhbXNJbkFjdGl2ZVJvdXRlID8gcmVtb3ZlUXVlcnlQYXJhbXModGhpcy5fcm91dGVyLnVybCkgOiB0aGlzLl9yb3V0ZXIudXJsO1xyXG4gICAgICAgICAgICBjb25zdCByb3V0ZTogc3RyaW5nW10gPSBhY3RpdmVSb3V0ZS5zcGxpdCgnLycpLmZpbHRlcihpdGVtID0+IGl0ZW0ubGVuZ3RoID4gMCk7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFVybCA9IHJvdXRlO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5pc0dyb3VwQWN0aXZlID0gaXNVcmxQYXJ0T2ZOYXZpZ2F0aW9uR3JvdXAodGhpcy5jdXJyZW50VXJsLCB0aGlzLm5hdmlnYXRpb25Hcm91cE5lc3RlZFJvdXRlcywgdGhpcy5kZWZhdWx0Um91dGVyTGluayk7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5kZWJ1ZyhgTmF2IGdyb3VwIFske3RoaXMudGV4dH1dIGFjdGl2ZSBjaGVjayAob25DaGFuZ2VzKTogaXNHcm91cEFjdGl2ZSA9ICR7dGhpcy5pc0dyb3VwQWN0aXZlfSBmb3Igcm91dGUgJHt0aGlzLmN1cnJlbnRVcmx9LCBuYXZpZ2F0aW9uR3JvdXBOZXN0ZWRSb3V0ZXMgPSAke3RoaXMubmF2aWdhdGlvbkdyb3VwTmVzdGVkUm91dGVzfSwgZGVmYXVsdFJvdXRlckxpbmsgPSAke3RoaXMuZGVmYXVsdFJvdXRlckxpbmt9YCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3Vuc3Vic2NyaWJlLm5leHQoKTtcclxuICAgICAgICB0aGlzLl91bnN1YnNjcmliZS5jb21wbGV0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uSGlkaW5nKGU6IGFueSkge1xyXG4gICAgICAgIGNvbnN0IHBvcG92ZXJDb250ZW50ID0gZS5jb21wb25lbnQuY29udGVudCgpLnBhcmVudE5vZGU7XHJcbiAgICAgICAgY29uc3QgaXNNb3VzZUluc2lkZVBvcG92ZXIgPSBwb3BvdmVyQ29udGVudC5tYXRjaGVzKCc6aG92ZXInKTtcclxuICAgICAgICBlLmNhbmNlbCA9IGlzTW91c2VJbnNpZGVQb3BvdmVyO1xyXG5cclxuICAgICAgICBwb3BvdmVyQ29udGVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgKCkgPT4ge1xyXG4gICAgICAgICAgICBwb3BvdmVyQ29udGVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgKCkgPT4ge30pO1xyXG4gICAgICAgICAgICBlLmNvbXBvbmVudC5oaWRlKCk7XHJcblxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IFxyXG4gICAgI25hdmlnYXRpb25Hcm91cFxyXG4gICAgY2xhc3M9XCJzZHMtbmF2aWdhdGlvbi1ncm91cCBzZHMtbmF2aWdhdGlvbi1pdGVtLWNvbnRhaW5lciBkLWZsZXhcIlxyXG4gICAgW2NsYXNzLmZsZXgtY29sdW1uLXJldmVyc2VdPVwicmV2ZXJzZVwiXHJcbiAgICBbY2xhc3MuZmxleC1jb2x1bW5dPVwiIXJldmVyc2VcIlxyXG4gICAgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgIFtjbGFzcy5hY3RpdmVdPVwiaXNHcm91cEFjdGl2ZVwiXHJcbiAgICA+XHJcbiAgICA8YSBcclxuICAgICAgICBjbGFzcz1cInctMTAwIHNkcy1uYXZpZ2F0aW9uLWl0ZW0tY29udGVudFwiXHJcbiAgICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIlxyXG4gICAgICAgIFtyb3V0ZXJMaW5rXT1cIltkZWZhdWx0Um91dGVyTGlua11cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2RzLW5hdmlnYXRpb24taWNvblwiID5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltuYXZpZ2F0aW9uSWNvbl1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2RzLW5hdmlnYXRpb24tdGV4dCB1c2VyLXNlbGVjdC1ub25lXCI+XHJcbiAgICAgICAgICAgICAgICB7eyB0ZXh0IH19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgPGZhLWljb24gKm5nSWY9XCIhcmV2ZXJzZVwiIFtpY29uXT1cImZhQW5nbGVEb3duUmVndWxhclwiPjwvZmEtaWNvbj5cclxuICAgICAgICAgICAgICAgIDxmYS1pY29uICpuZ0lmPVwicmV2ZXJzZVwiIFtpY29uXT1cImZhQW5nbGVVcFJlZ3VsYXJcIj48L2ZhLWljb24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9hPlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCJpc0dyb3VwQWN0aXZlXCIgY2xhc3M9XCJzZHMtbmF2aWdhdGlvbi1ncm91cC1pdGVtc1wiPlxyXG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93UG9wb3ZlciAmJiAhaXNHcm91cEFjdGl2ZVwiPlxyXG4gICAgPGR4LXBvcG92ZXJcclxuICAgICAgICBbdGFyZ2V0XT1cIm5hdmlnYXRpb25Hcm91cFwiXHJcbiAgICAgICAgW3Nob3dFdmVudF09XCJ7IG5hbWU6ICdkeGhvdmVyc3RhcnQnLCBkZWxheTogMTAwIH1cIlxyXG4gICAgICAgIFtoaWRlRXZlbnRdPVwieyBuYW1lOiAnZHhob3ZlcmVuZCcsIGRlbGF5OiAxMDAgfVwiXHJcbiAgICAgICAgKG9uSGlkaW5nKT1cIm9uSGlkaW5nKCRldmVudClcIlxyXG4gICAgICAgIHdpZHRoPVwiMTVyZW1cIlxyXG4gICAgICAgIFt3cmFwcGVyQXR0cl09XCJ7IGNsYXNzOiAnc2RzLW5hdmlnYXRpb24tZ3JvdXAtcG9wb3Zlci13cmFwcGVyIHNkcy1keC1wb3B1cC1jb250ZW50LXBhZGRpbmctMicgfVwiXHJcbiAgICAgICAgW2hpZGVPbk91dHNpZGVDbGlja109XCJ0cnVlXCJcclxuICAgICAgICBbaGlkZU9uUGFyZW50U2Nyb2xsXT1cInRydWVcIlxyXG4gICAgICAgIFthbmltYXRpb25dPVwie31cIlxyXG4gICAgPlxyXG5cclxuICAgICAgICA8ZHhvLXBvc2l0aW9uXHJcbiAgICAgICAgICAgIG15PVwidG9wIGxlZnRcIlxyXG4gICAgICAgICAgICBhdD1cInRvcCByaWdodFwiXHJcbiAgICAgICAgICAgIFtvZl09XCJuYXZpZ2F0aW9uR3JvdXBcIlxyXG4gICAgICAgICAgICBvZmZzZXQ9XCItMTIgMFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICA8L2R4by1wb3NpdGlvbj5cclxuXHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInNob3dQb3BvdmVySGVhZGVyXCIgY2xhc3M9XCJncm91cC1oZWFkZXIgdXNlci1zZWxlY3Qtbm9uZVwiPlxyXG4gICAgICAgICAgICB7eyB0ZXh0IH19XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgY2xhc3M9XCJzZHMtbmF2aWdhdGlvbi1jb250YWluZXIgc2RzLW5hdmlnYXRpb24tcG9wb3Zlci1jb250YWluZXIgc2RzLXNjcm9sbGJhciBzZHMtc2Nyb2xsYmFyLXRoaW4gc2RzLXNjcm9sbGJhci1uby1oaWRlXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2RzLW5hdmlnYXRpb24tZ3JvdXAtaXRlbXNcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltwb3BvdmVyQ29udGVudF1cIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9keC1wb3BvdmVyPlxyXG48L25nLWNvbnRhaW5lcj5cclxuIl19
|
|
@@ -142,11 +142,27 @@ export class SdsTimelineComponent {
|
|
|
142
142
|
* @memberof SdsTimelineComponent
|
|
143
143
|
*/
|
|
144
144
|
this.offSetMinutes = 15;
|
|
145
|
+
/**
|
|
146
|
+
* Control if those parts of segments (or whole segments) that fall into the Offset
|
|
147
|
+
* period are displayed or not
|
|
148
|
+
*
|
|
149
|
+
* @type {boolean}
|
|
150
|
+
* @memberof SdsTimelineComponent
|
|
151
|
+
*/
|
|
152
|
+
this.cutOffset = false;
|
|
153
|
+
/**
|
|
154
|
+
* Sets default cursor, that should be shown when hovering over timeline component.
|
|
155
|
+
* Default value is 'default'.
|
|
156
|
+
*
|
|
157
|
+
* @type {string}
|
|
158
|
+
* @memberof SdsTimelineComponent
|
|
159
|
+
*/
|
|
160
|
+
this.defaultCursor = "default";
|
|
145
161
|
// protected
|
|
146
162
|
this.hourTicks = [];
|
|
147
163
|
this.hourLabels = [];
|
|
148
164
|
this.dayLabels = [];
|
|
149
|
-
this._timelineService = new SdsTimelineService(this.start, this.end, this.offSetMinutes);
|
|
165
|
+
this._timelineService = new SdsTimelineService(this.start, this.end, this.offSetMinutes, this.cutOffset);
|
|
150
166
|
this.presentationItems = [];
|
|
151
167
|
this.presentationPointInTimeItems = [];
|
|
152
168
|
this.isDragging = false;
|
|
@@ -158,12 +174,12 @@ export class SdsTimelineComponent {
|
|
|
158
174
|
}
|
|
159
175
|
ngOnChanges(changes) {
|
|
160
176
|
if (this.start && this.end) {
|
|
161
|
-
this._timelineService = new SdsTimelineService(this.start, this.end, this.offSetMinutes);
|
|
177
|
+
this._timelineService = new SdsTimelineService(this.start, this.end, this.offSetMinutes, this.cutOffset);
|
|
162
178
|
this.generateTicks();
|
|
163
179
|
this.generateInternalTimelineItems();
|
|
164
180
|
}
|
|
165
|
-
if (changes['start'] || changes['end'] || changes['offSetMinutes']) {
|
|
166
|
-
this._timelineService = new SdsTimelineService(this.start, this.end, this.offSetMinutes);
|
|
181
|
+
if (changes['start'] || changes['end'] || changes['offSetMinutes'] || changes['cutOffset']) {
|
|
182
|
+
this._timelineService = new SdsTimelineService(this.start, this.end, this.offSetMinutes, this.cutOffset);
|
|
167
183
|
this.generateTicks();
|
|
168
184
|
this.generateInternalTimelineItems();
|
|
169
185
|
}
|
|
@@ -258,7 +274,11 @@ export class SdsTimelineComponent {
|
|
|
258
274
|
this.hourLabels = this._timelineService.getHourLabels(this.hourLabelFrequency);
|
|
259
275
|
}
|
|
260
276
|
generateInternalTimelineItems() {
|
|
261
|
-
this.
|
|
277
|
+
const cuttOffStart = this.cutOffset ? this.start : new Date(this.start.getTime() - this.offSetMinutes * 60000);
|
|
278
|
+
const cuttOffEnd = this.cutOffset ? this.end : new Date(this.end.getTime() + this.offSetMinutes * 60000);
|
|
279
|
+
this.presentationItems = this.items
|
|
280
|
+
.filter((item) => item.end < cuttOffStart || item.start > cuttOffEnd ? false : true)
|
|
281
|
+
.map((item) => {
|
|
262
282
|
const startTime = new Date(item.start).toLocaleTimeString(this.locales ?? [], { hour: 'numeric', minute: '2-digit' });
|
|
263
283
|
const endTime = new Date(item.end).toLocaleTimeString(this.locales ?? [], { hour: 'numeric', minute: '2-digit' });
|
|
264
284
|
const timeRange = `${startTime} - ${endTime}`;
|
|
@@ -275,7 +295,11 @@ export class SdsTimelineComponent {
|
|
|
275
295
|
});
|
|
276
296
|
}
|
|
277
297
|
generateInternalTimelinePointInTimeItems() {
|
|
278
|
-
this.
|
|
298
|
+
const cuttOffStart = this.cutOffset ? this.start : new Date(this.start.getTime() - this.offSetMinutes * 60000);
|
|
299
|
+
const cuttOffEnd = this.cutOffset ? this.end : new Date(this.end.getTime() + this.offSetMinutes * 60000);
|
|
300
|
+
this.presentationPointInTimeItems = this.pointInTimeItems
|
|
301
|
+
.filter((item) => item.date < cuttOffStart || item.date > cuttOffEnd ? false : true)
|
|
302
|
+
.map((item) => {
|
|
279
303
|
const timePointString = new Date(item.date).toLocaleTimeString(this.locales ?? [], { hour: 'numeric', minute: '2-digit' });
|
|
280
304
|
return {
|
|
281
305
|
data: item.data,
|
|
@@ -291,10 +315,10 @@ export class SdsTimelineComponent {
|
|
|
291
315
|
}
|
|
292
316
|
}
|
|
293
317
|
SdsTimelineComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SdsTimelineComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
294
|
-
SdsTimelineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SdsTimelineComponent, selector: "sds-timeline", inputs: { start: "start", end: "end", items: "items", pointInTimeItems: "pointInTimeItems", itemTemplate: "itemTemplate", pointInTimeTemplate: "pointInTimeTemplate", dayLabelTemplate: "dayLabelTemplate", dayLabelCustomDataFn: "dayLabelCustomDataFn", tickFrequency: "tickFrequency", hourLabelFrequency: "hourLabelFrequency", zoomPercent: "zoomPercent", viewOffsetPercent: "viewOffsetPercent", maxZoomPercent: "maxZoomPercent", showHourLabels: "showHourLabels", hourLabelClass: "hourLabelClass", showDayLabels: "showDayLabels", dayLabelClass: "dayLabelClass", showTimeline: "showTimeline", hourTickClass: "hourTickClass", timelineHeight: "timelineHeight", enableZoomAndDrag: "enableZoomAndDrag", offSetMinutes: "offSetMinutes", locales: "locales" }, outputs: { zoomPercentChange: "zoomPercentChange", viewOffsetPercentChange: "viewOffsetPercentChange" }, host: { listeners: { "window:mousemove": "onDragMove($event)", "window:touchmove": "onDragMoveTouch($event)", "window:mouseup": "onDragEnd($event)", "window:touchend": "onDragEnd($event)" } }, viewQueries: [{ propertyName: "_viewport", first: true, predicate: ["viewport"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #defaultItemTemplate let-item=\"item\">\r\n <div \r\n class=\"sds-timeline-item h-100\"\r\n [title]=\"item.hint\"\r\n >\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #defaultPointInTimeItemTemplate let-item=\"item\">\r\n <div \r\n class=\"sds-timeline-item h-100\"\r\n [title]=\"item.hint\"\r\n >\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #defaultDayLabelTemplate let-label=\"label\">\r\n {{label.label}}\r\n</ng-template>\r\n\r\n<div \r\n #viewport\r\n class=\"sds-timeline-viewport\"\r\n (wheel)=\"onScroll($event)\"\r\n\r\n (mousedown)=\"onDragStart($event)\"\r\n (touchstart)=\"onDragStart($event)\"\r\n >\r\n\r\n <div \r\n class=\"sds-timeline-container d-flex flex-column\"\r\n [style.left.%]=\"viewOffsetPercent\"\r\n [style.width.%]=\"zoomPercent\"\r\n [style.cursor]=\"isDragging ? 'ew-resize' :
|
|
318
|
+
SdsTimelineComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: SdsTimelineComponent, selector: "sds-timeline", inputs: { start: "start", end: "end", items: "items", pointInTimeItems: "pointInTimeItems", itemTemplate: "itemTemplate", pointInTimeTemplate: "pointInTimeTemplate", dayLabelTemplate: "dayLabelTemplate", dayLabelCustomDataFn: "dayLabelCustomDataFn", tickFrequency: "tickFrequency", hourLabelFrequency: "hourLabelFrequency", zoomPercent: "zoomPercent", viewOffsetPercent: "viewOffsetPercent", maxZoomPercent: "maxZoomPercent", showHourLabels: "showHourLabels", hourLabelClass: "hourLabelClass", showDayLabels: "showDayLabels", dayLabelClass: "dayLabelClass", showTimeline: "showTimeline", hourTickClass: "hourTickClass", timelineHeight: "timelineHeight", enableZoomAndDrag: "enableZoomAndDrag", offSetMinutes: "offSetMinutes", locales: "locales", cutOffset: "cutOffset", defaultCursor: "defaultCursor" }, outputs: { zoomPercentChange: "zoomPercentChange", viewOffsetPercentChange: "viewOffsetPercentChange" }, host: { listeners: { "window:mousemove": "onDragMove($event)", "window:touchmove": "onDragMoveTouch($event)", "window:mouseup": "onDragEnd($event)", "window:touchend": "onDragEnd($event)" } }, viewQueries: [{ propertyName: "_viewport", first: true, predicate: ["viewport"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #defaultItemTemplate let-item=\"item\">\r\n <div \r\n class=\"sds-timeline-item h-100\"\r\n [title]=\"item.hint\"\r\n >\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #defaultPointInTimeItemTemplate let-item=\"item\">\r\n <div \r\n class=\"sds-timeline-item h-100\"\r\n [title]=\"item.hint\"\r\n >\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #defaultDayLabelTemplate let-label=\"label\">\r\n {{label.label}}\r\n</ng-template>\r\n\r\n<div \r\n #viewport\r\n class=\"sds-timeline-viewport\"\r\n (wheel)=\"onScroll($event)\"\r\n\r\n (mousedown)=\"onDragStart($event)\"\r\n (touchstart)=\"onDragStart($event)\"\r\n >\r\n\r\n <div \r\n class=\"sds-timeline-container d-flex flex-column\"\r\n [style.left.%]=\"viewOffsetPercent\"\r\n [style.width.%]=\"zoomPercent\"\r\n [style.cursor]=\"isDragging ? 'ew-resize' : defaultCursor\"\r\n >\r\n\r\n <div\r\n *ngIf=\"showDayLabels\" \r\n class=\"sds-timeline-day-header\">\r\n\r\n <div \r\n *ngFor=\"let label of dayLabels\"\r\n class=\"sds-day-label\" \r\n [ngClass]=\"dayLabelClass ?? null\"\r\n [style.left.%]=\"label.x\"\r\n [style.width.%]=\"label.width\"\r\n >\r\n <ng-container \r\n [ngTemplateOutlet]=\"dayLabelTemplate ? dayLabelTemplate : defaultDayLabelTemplate\"\r\n [ngTemplateOutletContext]=\"{label: label}\">\r\n </ng-container> \r\n </div>\r\n </div>\r\n\r\n <div \r\n *ngIf=\"showHourLabels\" \r\n class=\"sds-timeline-hour-header\">\r\n\r\n <div \r\n *ngFor=\"let label of hourLabels;\"\r\n class=\"sds-hour-label\" \r\n [ngClass]=\"hourLabelClass ?? null\"\r\n [style.left.%]=\"label.x\"\r\n [style.width.rem]=\"1.2\"\r\n [ngStyle]=\"{'left': 'calc(' + label.x + '% - 0.6rem)'}\"\r\n >\r\n \r\n {{label.label}}\r\n \r\n </div>\r\n </div>\r\n\r\n <div \r\n *ngIf=\"showTimeline\"\r\n class=\"sds-timeline flex-grow-1\"\r\n [style.height]=\"timelineHeight\"\r\n >\r\n\r\n <div \r\n *ngFor=\"let tick of hourTicks\"\r\n class=\"sds-timeline-tick\" \r\n [ngClass]=\"hourTickClass ?? null\"\t\r\n [ngStyle]=\"tick.x == 100 ? {'left': 'calc(' + tick.x +'% - 1px)'} : {'left': 'calc(' + tick.x + '% - 0.5px)'}\"\r\n >\r\n </div>\r\n\r\n <div \r\n *ngFor=\"let item of presentationItems\"\r\n class=\"sds-timeline-item-container\"\r\n [ngClass]=\"item.class ?? null\"\r\n [ngStyle]=\"{\r\n 'width': 'max(' + item.width +'%, 1px)',\r\n 'top': 'calc(' + item.top + ' - max(calc(' + item.height +'/2), 1px))', \r\n }\"\r\n\r\n [style.left.%]=\"item.x\"\r\n [style.height]=\"item.height\"\r\n [style.backgroundColor]=\"item.backgroundColor\"\r\n >\r\n\r\n <ng-container \r\n [ngTemplateOutlet]=\"itemTemplate ? itemTemplate : defaultItemTemplate\"\r\n [ngTemplateOutletContext]=\"{item: item}\">\r\n </ng-container> \r\n </div>\r\n\r\n\r\n <div *ngFor=\"let item of presentationPointInTimeItems\"\r\n class=\"sds-timeline-point-in-time-item-container\"\r\n [ngClass]=\"item.class\"\t\r\n [style.height]=\"item.height\"\r\n [style.width]=\"item.width\"\r\n [ngStyle]=\"{\r\n 'top': 'calc(' + item.top + ' - max(calc(' + item.height +'/2), 1px))', \r\n 'left': 'calc(' + item.x + '% - max( calc(' + item.width +'/2), 1px))',\r\n \r\n }\"\r\n [style.backgroundColor]=\"item.backgroundColor\"\r\n >\r\n\r\n <ng-container \r\n [ngTemplateOutlet]=\"pointInTimeTemplate ? pointInTimeTemplate : defaultPointInTimeItemTemplate\"\r\n [ngTemplateOutletContext]=\"{item: item}\">\r\n </ng-container> \r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".sds-timeline-viewport{overflow:hidden}.sds-timeline-viewport .sds-timeline-container{width:100%;min-height:0;position:relative;-webkit-user-select:none;user-select:none}.sds-timeline-viewport .sds-timeline-container .sds-timeline-day-header{height:1.6rem;position:relative}.sds-timeline-viewport .sds-timeline-container .sds-timeline-day-header .sds-day-label{position:absolute;display:inline;text-align:center;font-size:.875rem}.sds-timeline-viewport .sds-timeline-container .sds-timeline-hour-header{height:1.6rem;position:relative;font-size:.8em}.sds-timeline-viewport .sds-timeline-container .sds-timeline-hour-header .sds-hour-label{position:absolute;display:inline;text-align:center;font-size:.875rem}.sds-timeline-viewport .sds-timeline-container .sds-timeline{position:relative}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-tick{border-left:1px solid rgb(187,187,187);height:100%;position:absolute;display:inline}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-item-container{height:100%;position:absolute;display:inline;top:20%;height:60%}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-item-container .sds-timeline-item{position:relative;width:100%}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-point-in-time-item-container{width:1px;height:1px;position:absolute}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-point-in-time-item-container .sds-timeline-item{position:relative;width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
|
|
295
319
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: SdsTimelineComponent, decorators: [{
|
|
296
320
|
type: Component,
|
|
297
|
-
args: [{ selector: 'sds-timeline', template: "<ng-template #defaultItemTemplate let-item=\"item\">\r\n <div \r\n class=\"sds-timeline-item h-100\"\r\n [title]=\"item.hint\"\r\n >\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #defaultPointInTimeItemTemplate let-item=\"item\">\r\n <div \r\n class=\"sds-timeline-item h-100\"\r\n [title]=\"item.hint\"\r\n >\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #defaultDayLabelTemplate let-label=\"label\">\r\n {{label.label}}\r\n</ng-template>\r\n\r\n<div \r\n #viewport\r\n class=\"sds-timeline-viewport\"\r\n (wheel)=\"onScroll($event)\"\r\n\r\n (mousedown)=\"onDragStart($event)\"\r\n (touchstart)=\"onDragStart($event)\"\r\n >\r\n\r\n <div \r\n class=\"sds-timeline-container d-flex flex-column\"\r\n [style.left.%]=\"viewOffsetPercent\"\r\n [style.width.%]=\"zoomPercent\"\r\n [style.cursor]=\"isDragging ? 'ew-resize' :
|
|
321
|
+
args: [{ selector: 'sds-timeline', template: "<ng-template #defaultItemTemplate let-item=\"item\">\r\n <div \r\n class=\"sds-timeline-item h-100\"\r\n [title]=\"item.hint\"\r\n >\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #defaultPointInTimeItemTemplate let-item=\"item\">\r\n <div \r\n class=\"sds-timeline-item h-100\"\r\n [title]=\"item.hint\"\r\n >\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #defaultDayLabelTemplate let-label=\"label\">\r\n {{label.label}}\r\n</ng-template>\r\n\r\n<div \r\n #viewport\r\n class=\"sds-timeline-viewport\"\r\n (wheel)=\"onScroll($event)\"\r\n\r\n (mousedown)=\"onDragStart($event)\"\r\n (touchstart)=\"onDragStart($event)\"\r\n >\r\n\r\n <div \r\n class=\"sds-timeline-container d-flex flex-column\"\r\n [style.left.%]=\"viewOffsetPercent\"\r\n [style.width.%]=\"zoomPercent\"\r\n [style.cursor]=\"isDragging ? 'ew-resize' : defaultCursor\"\r\n >\r\n\r\n <div\r\n *ngIf=\"showDayLabels\" \r\n class=\"sds-timeline-day-header\">\r\n\r\n <div \r\n *ngFor=\"let label of dayLabels\"\r\n class=\"sds-day-label\" \r\n [ngClass]=\"dayLabelClass ?? null\"\r\n [style.left.%]=\"label.x\"\r\n [style.width.%]=\"label.width\"\r\n >\r\n <ng-container \r\n [ngTemplateOutlet]=\"dayLabelTemplate ? dayLabelTemplate : defaultDayLabelTemplate\"\r\n [ngTemplateOutletContext]=\"{label: label}\">\r\n </ng-container> \r\n </div>\r\n </div>\r\n\r\n <div \r\n *ngIf=\"showHourLabels\" \r\n class=\"sds-timeline-hour-header\">\r\n\r\n <div \r\n *ngFor=\"let label of hourLabels;\"\r\n class=\"sds-hour-label\" \r\n [ngClass]=\"hourLabelClass ?? null\"\r\n [style.left.%]=\"label.x\"\r\n [style.width.rem]=\"1.2\"\r\n [ngStyle]=\"{'left': 'calc(' + label.x + '% - 0.6rem)'}\"\r\n >\r\n \r\n {{label.label}}\r\n \r\n </div>\r\n </div>\r\n\r\n <div \r\n *ngIf=\"showTimeline\"\r\n class=\"sds-timeline flex-grow-1\"\r\n [style.height]=\"timelineHeight\"\r\n >\r\n\r\n <div \r\n *ngFor=\"let tick of hourTicks\"\r\n class=\"sds-timeline-tick\" \r\n [ngClass]=\"hourTickClass ?? null\"\t\r\n [ngStyle]=\"tick.x == 100 ? {'left': 'calc(' + tick.x +'% - 1px)'} : {'left': 'calc(' + tick.x + '% - 0.5px)'}\"\r\n >\r\n </div>\r\n\r\n <div \r\n *ngFor=\"let item of presentationItems\"\r\n class=\"sds-timeline-item-container\"\r\n [ngClass]=\"item.class ?? null\"\r\n [ngStyle]=\"{\r\n 'width': 'max(' + item.width +'%, 1px)',\r\n 'top': 'calc(' + item.top + ' - max(calc(' + item.height +'/2), 1px))', \r\n }\"\r\n\r\n [style.left.%]=\"item.x\"\r\n [style.height]=\"item.height\"\r\n [style.backgroundColor]=\"item.backgroundColor\"\r\n >\r\n\r\n <ng-container \r\n [ngTemplateOutlet]=\"itemTemplate ? itemTemplate : defaultItemTemplate\"\r\n [ngTemplateOutletContext]=\"{item: item}\">\r\n </ng-container> \r\n </div>\r\n\r\n\r\n <div *ngFor=\"let item of presentationPointInTimeItems\"\r\n class=\"sds-timeline-point-in-time-item-container\"\r\n [ngClass]=\"item.class\"\t\r\n [style.height]=\"item.height\"\r\n [style.width]=\"item.width\"\r\n [ngStyle]=\"{\r\n 'top': 'calc(' + item.top + ' - max(calc(' + item.height +'/2), 1px))', \r\n 'left': 'calc(' + item.x + '% - max( calc(' + item.width +'/2), 1px))',\r\n \r\n }\"\r\n [style.backgroundColor]=\"item.backgroundColor\"\r\n >\r\n\r\n <ng-container \r\n [ngTemplateOutlet]=\"pointInTimeTemplate ? pointInTimeTemplate : defaultPointInTimeItemTemplate\"\r\n [ngTemplateOutletContext]=\"{item: item}\">\r\n </ng-container> \r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".sds-timeline-viewport{overflow:hidden}.sds-timeline-viewport .sds-timeline-container{width:100%;min-height:0;position:relative;-webkit-user-select:none;user-select:none}.sds-timeline-viewport .sds-timeline-container .sds-timeline-day-header{height:1.6rem;position:relative}.sds-timeline-viewport .sds-timeline-container .sds-timeline-day-header .sds-day-label{position:absolute;display:inline;text-align:center;font-size:.875rem}.sds-timeline-viewport .sds-timeline-container .sds-timeline-hour-header{height:1.6rem;position:relative;font-size:.8em}.sds-timeline-viewport .sds-timeline-container .sds-timeline-hour-header .sds-hour-label{position:absolute;display:inline;text-align:center;font-size:.875rem}.sds-timeline-viewport .sds-timeline-container .sds-timeline{position:relative}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-tick{border-left:1px solid rgb(187,187,187);height:100%;position:absolute;display:inline}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-item-container{height:100%;position:absolute;display:inline;top:20%;height:60%}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-item-container .sds-timeline-item{position:relative;width:100%}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-point-in-time-item-container{width:1px;height:1px;position:absolute}.sds-timeline-viewport .sds-timeline-container .sds-timeline .sds-timeline-point-in-time-item-container .sds-timeline-item{position:relative;width:100%}\n"] }]
|
|
298
322
|
}], ctorParameters: function () { return []; }, propDecorators: { start: [{
|
|
299
323
|
type: Input
|
|
300
324
|
}], end: [{
|
|
@@ -345,6 +369,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
345
369
|
type: Input
|
|
346
370
|
}], locales: [{
|
|
347
371
|
type: Input
|
|
372
|
+
}], cutOffset: [{
|
|
373
|
+
type: Input
|
|
374
|
+
}], defaultCursor: [{
|
|
375
|
+
type: Input
|
|
348
376
|
}], _viewport: [{
|
|
349
377
|
type: ViewChild,
|
|
350
378
|
args: ['viewport', { static: true }]
|
|
@@ -361,4 +389,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
361
389
|
type: HostListener,
|
|
362
390
|
args: ['window:touchend', ['$event']]
|
|
363
391
|
}] } });
|
|
364
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNkcy1jb21wb25lbnRzL3NyYy9saWIvdGltZWxpbmUvY29tcG9uZW50cy90aW1lbGluZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2RzLWNvbXBvbmVudHMvc3JjL2xpYi90aW1lbGluZS9jb21wb25lbnRzL3RpbWVsaW5lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBR04sU0FBUyxFQUNULFlBQVksRUFDZixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7O0FBZWxFLE1BQU0sT0FBTyxvQkFBb0I7SUFvTjdCO1FBbk5BOzs7OztXQUtHO1FBQ00sVUFBSyxHQUFTLElBQUksSUFBSSxFQUFFLENBQUM7UUFFbEM7Ozs7O1dBS0c7UUFDTSxRQUFHLEdBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUVoQzs7Ozs7O1dBTUc7UUFDTSxVQUFLLEdBQW1CLEVBQUUsQ0FBQztRQUVwQzs7Ozs7O1dBTUc7UUFDTSxxQkFBZ0IsR0FBOEIsRUFBRSxDQUFDO1FBRTFEOzs7OztXQUtHO1FBQ00saUJBQVksR0FBaUMsU0FBUyxDQUFDO1FBRWhFOzs7OztXQUtHO1FBQ00sd0JBQW1CLEdBQWlDLFNBQVMsQ0FBQztRQUV2RTs7Ozs7V0FLRztRQUNNLHFCQUFnQixHQUFpQyxTQUFTLENBQUM7UUFFcEU7Ozs7O1dBS0c7UUFDTSx5QkFBb0IsR0FBK0MsU0FBUyxDQUFDO1FBRXRGOzs7OztXQUtHO1FBQ00sa0JBQWEsR0FBMEIsUUFBUSxDQUFDO1FBRXpEOzs7OztXQUtHO1FBQ00sdUJBQWtCLEdBQTBCLE1B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LGlCQUFpQjtzQkFBekIsS0FBSztnQkFDSSx1QkFBdUI7c0JBQWhDLE1BQU07Z0JBUUUsY0FBYztzQkFBdEIsS0FBSztnQkFRRyxjQUFjO3NCQUF0QixLQUFLO2dCQVFHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBUUcsYUFBYTtzQkFBckIsS0FBSztnQkFRRyxhQUFhO3NCQUFyQixLQUFLO2dCQVFHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBUUcsYUFBYTtzQkFBckIsS0FBSztnQkFRRyxjQUFjO3NCQUF0QixLQUFLO2dCQVFHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFRRyxhQUFhO3NCQUFyQixLQUFLO2dCQVFHLE9BQU87c0JBQWYsS0FBSztnQkFxQm1DLFNBQVM7c0JBQWpELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkEwRmhDLFVBQVU7c0JBRGhCLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBVzVDLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFZckMsU0FBUztzQkFGZixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDekMsWUFBWTt1QkFBQyxpQkFBaUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBBZnRlclZpZXdJbml0LFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIEhvc3RMaXN0ZW5lcixcclxuICAgIElucHV0LFxyXG4gICAgT25DaGFuZ2VzLFxyXG4gICAgT25Jbml0LFxyXG4gICAgT3V0cHV0LFxyXG4gICAgU2ltcGxlQ2hhbmdlcyxcclxuICAgIFRlbXBsYXRlUmVmLFxyXG4gICAgVmlld0NoaWxkLFxyXG4gICAgRXZlbnRFbWl0dGVyXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRpbWVsaW5lQ3VzdG9tRGF0ZURhdGFQcm92aWRlciwgVGltZWxpbmVUaWNrRnJlcXVlbmN5IH0gZnJvbSAnLi4vdHlwZXMvdGltZWxpbmUudHlwZXMnO1xyXG5pbXBvcnQgeyBTZHNUaW1lbGluZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90aW1lbGluZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICAgIFRpbWVsaW5lSW50ZXJ2YWxMYWJlbCxcclxuICAgIFRpbWVsaW5lSXRlbSxcclxuICAgIFRpbWVsaW5lSXRlbVByZXNlbnRhdGlvbixcclxuICAgIFRpbWVsaW5lUG9pbnRJblRpbWVJdGVtLFxyXG4gICAgVGltZWxpbmVQb2ludEluVGltZUl0ZW1QcmVzZW50YXRpb24sXHJcbiAgICBUaW1lbGluZVRpY2ssXHJcbn0gZnJvbSAnLi4vbW9kZWxzL3RpbWVsaW5lLm1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzZHMtdGltZWxpbmUnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RpbWVsaW5lLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3RpbWVsaW5lLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZHNUaW1lbGluZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcclxuICAgIC8qKlxyXG4gICAgICogVGhlIHN0YXJ0IGRhdGUgYW5kIHRpbWUgZm9yIHRoZSB0aW1lbGluZS5cclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7RGF0ZX1cclxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBzdGFydDogRGF0ZSA9IG5ldyBEYXRlKCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgZW5kIGRhdGUgYW5kIHRpbWUgZm9yIHRoZSB0aW1lbGluZS5cclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7RGF0ZX1cclxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBlbmQ6IERhdGUgPSBuZXcgRGF0ZSgpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHBlcmlvZCBiYXNlZCBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgb24gdGhlIHRpbWVsaW5lLiBTcGVjaWZ5IGRhdGEgaWYgeW91IG5lZWQgXHJcbiAgICAgKiBhZGRpdGlvbmFsIGRhdGEgZm9yIGN1c3RvbSByZW5kZXJpbmcgb2YgdGhlIGl0ZW1zLlxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHtUaW1lbGluZUl0ZW1bXX1cclxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBpdGVtczogVGltZWxpbmVJdGVtW10gPSBbXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEl0ZW1zIHRvIGJlIGRpc3BsYXllZCBvbiB0aGUgdGltZWxpbmUgYXQgYSBzcGVjaWZpYyBwb2ludCBpbiB0aW1lLlxyXG4gICAgICogU3BlY2lmeSBkYXRhIGlmIHlvdSBuZWVkIGFkZGl0aW9uYWwgZGF0YSBmb3IgY3VzdG9tIHJlbmRlcmluZyBvZiB0aGUgaXRlbXMuXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUge1RpbWVsaW5lUG9pbnRJblRpbWVJdGVtW119XHJcbiAgICAgKiBAbWVtYmVyb2YgU2RzVGltZWxpbmVDb21wb25lbnRcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgcG9pbnRJblRpbWVJdGVtczogVGltZWxpbmVQb2ludEluVGltZUl0ZW1bXSA9IFtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHRlbXBsYXRlIHRvIGJlIHVzZWQgZm9yIGN1c3RvbSByZW5kZXJpbmcgb2YgdGhlIGl0ZW1zLlxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHsoVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCl9XHJcbiAgICAgKiBAbWVtYmVyb2YgU2RzVGltZWxpbmVDb21wb25lbnRcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgaXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHRlbXBsYXRlIHRvIGJlIHVzZWQgZm9yIGN1c3RvbSByZW5kZXJpbmcgb2YgdGhlIHBvaW4taW4tdGltZSBpdGVtcy5cclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7KFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQpfVxyXG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHBvaW50SW5UaW1lVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgdGVtcGxhdGUgdG8gYmUgdXNlZCBmb3IgY3VzdG9tIHJlbmRlcmluZyBvZiB0aGUgZGF5IGxhYmVscy5cclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7KFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQpfVxyXG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGRheUxhYmVsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogQSBjdXN0b20gZGF0YSBmdW5jdGlvbiBmb3IgdGhlIGRheSBsYWJlbHMuIFxyXG4gICAgICogVGhpcyBmdW5jdGlvbiB0YWtlcyBhIERhdGUgb2JqZWN0IGFzIGlucHV0IGFuZCByZXR1cm5zIGFueSBjdXN0b20gZGF0YSB0aGF0IHdpbGwgYmUgYXZhaWxhYmxlIGZvciB0aGUgY3VzdG9tIHRlbXBsYXRlXHJcbiAgICAgKlxyXG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGRheUxhYmVsQ3VzdG9tRGF0YUZuOiBUaW1lbGluZUN1c3RvbURhdGVEYXRhUHJvdmlkZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgZnJlcXVlbmN5IG9mIHRoZSB0aWNrcyBvbiB0aGUgdGltZWxpbmUuXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUge1RpbWVsaW5lVGlja0ZyZXF1ZW5jeX1cclxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSB0aWNrRnJlcXVlbmN5OiBUaW1lbGluZVRpY2tGcmVxdWVuY3kgPSAnaG91cmx5JztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBmcmVxdWVuY3kgb2YgdGhlIGhvdXIgbGFiZWxzIG9uIHRoZSB0aW1lbGluZS5cclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7VGltZWxpbmVUaWNrRnJlcXVlbmN5fVxyXG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGhvdXJMYWJlbEZyZXF1ZW5jeTogVGltZWxpbmVUaWNrRnJlcXVlbmN5ID0gJzNocnMnO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBjdXJyZW50IHpvb20gbGV2ZWwgb2YgdGhlIHRpbWVsaW5lLiBJbiBwZXJjZW50LlxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHtudW1iZXJ9XHJcbiAgICAgKiBAbWVtYmVyb2YgU2RzVGltZWxpbmVDb21wb25lbnRcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgem9vbVBlcmNlbnQ6IG51bWJlciA9IDEwMDtcclxuICAgIEBPdXRwdXQoKSB6b29tUGVyY2VudENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5pdGlhbCBvZmZzZXQgb2YgdGhlIHZpZXdwb3J0IGluIHBlcmNlbnQuIFRoaXMgaXMgdXNlZCBpbiBzY2VuYXJpb3MgXHJcbiAgICAgKiB3aXRoIG11bHRpcGxlIGRheXMgd2hlbiB5b3Ugd2FudCB0byBzaG93IG5vbi1maXJzdCBkYXkgYXMgZGVmdWx0LlxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHtudW1iZXJ9XHJcbiAgICAgKiBAbWVtYmVyb2YgU2RzVGltZWxpbmVDb21wb25lbnRcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgdmlld09mZnNldFBlcmNlbnQ6IG51bWJlciA9IDA7XHJcbiAgICBAT3V0cHV0KCkgdmlld09mZnNldFBlcmNlbnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBtYXhpbXVtIGFsbG93ZWQgem9vbSBsZXZlbCBvZiB0aGUgdGltZWxpbmUuIEluIHBlcmNlbnQuXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUge251bWJlcn1cclxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBtYXhab29tUGVyY2VudDogbnVtYmVyID0gNTAwO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2hldGhlciB0byBzaG93IGhvdXIgbGFiZWxzLlxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHtib29sZWFufVxyXG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHNob3dIb3VyTGFiZWxzOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBDU1MgY2xhc3MgdG8gYmUgYXBwbGllZCB0byB0aGUgaG91ciBsYWJlbHMuXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUge3N0cmluZ31cclxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBob3VyTGFiZWxDbGFzcz86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFdoZXRoZXIgdG8gc2hvdyBkYXkgbGFiZWxzLiBcclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cclxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBzaG93RGF5TGFiZWxzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgQ1NTIGNsYXNzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIGRheSBsYWJlbHMuXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUge3N0cmluZ31cclxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBkYXlMYWJlbENsYXNzPzogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2hldGhlciB0byBzaG93IHRpbWVsaW5lLiBVc2VmdWwgZm9yIGhpZGluZyB0aGUgdGltZWxpbmUgd2hlbiB3ZSBvbmx5IG5lZWQgaGVhZGVyLlxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHtib29sZWFufVxyXG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHNob3dUaW1lbGluZTogYm9vbGVhbiA9IHRydWU7ICAgIFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIENTUyBjbGFzcyB0byBiZSBhcHBsaWVkIHRvIHRoZSBob3VyIHRpY2tzLlxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHtzdHJpbmd9XHJcbiAgICAgKiBAbWVtYmVyb2YgU2RzVGltZWxpbmVDb21wb25lbnRcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgaG91clRpY2tDbGFzcz86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBoZWlnaHQgb2YgdGhlIHRpbWVsaW5lLiBEZWZhdWx0IGlzIDJyZW0uXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUge3N0cmluZ31cclxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSB0aW1lbGluZUhlaWdodDogc3RyaW5nID0gJzJyZW0nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2hldGhlciB0byBlbmFibGUgem9vbSBhbmQgZHJhZyBmdW5jdGlvbmFsaXR5LlxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHtib29sZWFufVxyXG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGVuYWJsZVpvb21BbmREcmFnOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE51bWJlciBvZiBtaW51dGVzIGFkZGVkIHRvIHN0YXJ0IGFuZCBzdG9wIHRvIGZpdCB0aGUgZGF0YSBvbiB0aGUgZWRnZXNcclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxyXG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIG9mZlNldE1pbnV0ZXM6IG51bWJlciA9IDE1O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGxvY2FsZXMgdG8gYmUgdXNlZCBmb3IgZm9ybWF0dGluZyB0aGUgdGltZWxpbmUuXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUgeyhzdHJpbmcgfCBBcnJheTxzdHJpbmc+KX1cclxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBsb2NhbGVzPzogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPjtcclxuXHJcbiAgICAvLyBwcm90ZWN0ZWRcclxuICAgIGhvdXJUaWNrczogVGltZWxpbmVUaWNrW10gPSBbXTtcclxuICAgIGhvdXJMYWJlbHM6IFRpbWVsaW5lSW50ZXJ2YWxMYWJlbFtdID0gW107XHJcbiAgICBkYXlMYWJlbHM6IFRpbWVsaW5lSW50ZXJ2YWxMYWJlbFtdID0gW107XHJcblxyXG4gICAgcHJpdmF0ZSBfdGltZWxpbmVTZXJ2aWNlOiBTZHNUaW1lbGluZVNlcnZpY2UgPSBuZXcgU2RzVGltZWxpbmVTZXJ2aWNlKFxyXG4gICAgICAgIHRoaXMuc3RhcnQsXHJcbiAgICAgICAgdGhpcy5lbmQsXHJcbiAgICAgICAgdGhpcy5vZmZTZXRNaW51dGVzXHJcbiAgICApO1xyXG5cclxuICAgIHB1YmxpYyBwcmVzZW50YXRpb25JdGVtczogVGltZWxpbmVJdGVtUHJlc2VudGF0aW9uW10gPSBbXTtcclxuICAgIHB1YmxpYyBwcmVzZW50YXRpb25Qb2ludEluVGltZUl0ZW1zOiBUaW1lbGluZVBvaW50SW5UaW1lSXRlbVByZXNlbnRhdGlvbltdID0gW107XHJcblxyXG4gICAgcHVibGljIGlzRHJhZ2dpbmcgPSBmYWxzZTtcclxuICAgIHB1YmxpYyBpbml0aWFsRHJhZ1ggPSAwO1xyXG5cclxuICAgIHByaXZhdGUgdmlld09mZnNldFBlcmNlbnREcmFnU3RhcnQgPSAwO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ3ZpZXdwb3J0JywgeyBzdGF0aWM6IHRydWUgfSkgX3ZpZXdwb3J0OiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge31cclxuXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5nZW5lcmF0ZVRpY2tzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnN0YXJ0ICYmIHRoaXMuZW5kKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3RpbWVsaW5lU2VydmljZSA9IG5ldyBTZHNUaW1lbGluZVNlcnZpY2UoXHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0LFxyXG4gICAgICAgICAgICAgICAgdGhpcy5lbmQsXHJcbiAgICAgICAgICAgICAgICB0aGlzLm9mZlNldE1pbnV0ZXNcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZVRpY2tzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVJbnRlcm5hbFRpbWVsaW5lSXRlbXMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjaGFuZ2VzWydzdGFydCddIHx8IGNoYW5nZXNbJ2VuZCddIHx8IGNoYW5nZXNbJ29mZlNldE1pbnV0ZXMnXSkge1xyXG4gICAgICAgICAgICB0aGlzLl90aW1lbGluZVNlcnZpY2UgPSBuZXcgU2RzVGltZWxpbmVTZXJ2aWNlKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydCxcclxuICAgICAgICAgICAgICAgIHRoaXMuZW5kLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5vZmZTZXRNaW51dGVzXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVUaWNrcygpO1xyXG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlSW50ZXJuYWxUaW1lbGluZUl0ZW1zKCk7ICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY2hhbmdlc1snaXRlbXMnXSkge1xyXG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlSW50ZXJuYWxUaW1lbGluZUl0ZW1zKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY2hhbmdlc1sncG9pbnRJblRpbWVJdGVtcyddKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVJbnRlcm5hbFRpbWVsaW5lUG9pbnRJblRpbWVJdGVtcygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3pvb21QZXJjZW50J10pIHtcclxuICAgICAgICAgICAgLy8gdGhpcy52aWV3T2Zmc2V0UGVyY2VudCA9ICh0aGlzLnpvb21QZXJjZW50IC0gMTAwKSAvIC0yO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3Nob3dEYXlMYWJlbHMnXSB8fCBjaGFuZ2VzWydzaG93SG91ckxhYmVscyddKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVUaWNrcygpO1xyXG4gICAgICAgIH0gICAgICBcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHt9XHJcblxyXG4gICAgLy8jcmVnaW9uIG1vdXNlIHdoZWVsIHpvb21cclxuICAgIG9uU2Nyb2xsKGV2ZW50OiBXaGVlbEV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuZW5hYmxlWm9vbUFuZERyYWcpIHtcclxuXHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBkZWx0YSA9IE1hdGguc2lnbihldmVudC5kZWx0YVkpO1xyXG4gICAgICAgICAgICBjb25zdCBuZXdab29tUGVyY2VudCA9IE1hdGgubWluKFxyXG4gICAgICAgICAgICAgICAgTWF0aC5tYXgodGhpcy56b29tUGVyY2VudCArIC1kZWx0YSAqIDIwLCAxMDApLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5tYXhab29tUGVyY2VudFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjb25zdCBkZWx0YVpvb21QZXJjZW50ID0gbmV3Wm9vbVBlcmNlbnQgLSB0aGlzLnpvb21QZXJjZW50O1xyXG4gICAgICAgICAgICB0aGlzLnpvb21QZXJjZW50ID0gbmV3Wm9vbVBlcmNlbnQ7XHJcbiAgICAgICAgICAgIHRoaXMuem9vbVBlcmNlbnRDaGFuZ2UuZW1pdCh0aGlzLnpvb21QZXJjZW50KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIGdldCB0aGUgcmVsYXRpdmUgcG9zaXRpb24gb2YgdGhlIGN1cnNvciBvbiB0aGUgdmlld3BvcnQgc28gd2UgY2FuIHpvb20gaW4gaW50byB0aGlzIHBvc2l0aW9uXHJcbiAgICAgICAgICAgIGNvbnN0IHggPSBldmVudC5jbGllbnRYIC0gdGhpcy5fdmlld3BvcnQ/Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcclxuICAgICAgICAgICAgY29uc3QgY3Vyc29yUmVsYXRpdmVQb3NpdGlvbiA9IHggLyB0aGlzLl92aWV3cG9ydD8ubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcclxuICAgICAgICAgICAgLy8gdGhpcy52aWV3T2Zmc2V0UGVyY2VudCA9IHRoaXMudmlld09mZnNldFBlcmNlbnQgLSBkZWx0YVpvb21QZXJjZW50ICogY3Vyc29yUmVsYXRpdmVQb3NpdGlvbjtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuY29uc3RyYWluT2Zmc2V0KHRoaXMudmlld09mZnNldFBlcmNlbnQgLSBkZWx0YVpvb21QZXJjZW50ICogY3Vyc29yUmVsYXRpdmVQb3NpdGlvbik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8jZW5kcmVnaW9uXHJcblxyXG4gICAgLy8jcmVnaW9uIGRyYWdnaW5nXHJcbiAgICBcclxuICAgIHB1YmxpYyBvbkRyYWdTdGFydChldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5lbmFibGVab29tQW5kRHJhZyAmJiB0aGlzLnpvb21QZXJjZW50ID4gMTAwKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIHRoaXMuaXNEcmFnZ2luZyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMudmlld09mZnNldFBlcmNlbnREcmFnU3RhcnQgPSB0aGlzLnZpZXdPZmZzZXRQZXJjZW50O1xyXG5cclxuICAgICAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsRHJhZ1ggPSBldmVudC5jbGllbnRYO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50IGluc3RhbmNlb2YgVG91Y2hFdmVudCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsRHJhZ1ggPSBldmVudC50b3VjaGVzWzBdLmNsaWVudFg7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93Om1vdXNlbW92ZScsIFsnJGV2ZW50J10pXHJcbiAgICBwdWJsaWMgb25EcmFnTW92ZShldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmVuYWJsZVpvb21BbmREcmFnKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmlzRHJhZ2dpbmcpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRYID0gZXZlbnQuY2xpZW50WDtcclxuICAgICAgICAgICAgICAgIHRoaXMubW92ZUVsZW1lbnQoY3VycmVudFgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzp0b3VjaG1vdmUnLCBbJyRldmVudCddKVxyXG4gICAgb25EcmFnTW92ZVRvdWNoKGV2ZW50OiBUb3VjaEV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuZW5hYmxlWm9vbUFuZERyYWcpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaXNEcmFnZ2luZykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFggPSBldmVudC50b3VjaGVzWzBdLmNsaWVudFg7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1vdmVFbGVtZW50KGN1cnJlbnRYKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6bW91c2V1cCcsIFsnJGV2ZW50J10pXHJcbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6dG91Y2hlbmQnLCBbJyRldmVudCddKVxyXG4gICAgcHVibGljIG9uRHJhZ0VuZChldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5lbmFibGVab29tQW5kRHJhZykge1xyXG4gICAgICAgICAgICB0aGlzLmlzRHJhZ2dpbmcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBtb3ZlRWxlbWVudChjdXJyZW50WDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZGlmZiA9IGN1cnJlbnRYIC0gdGhpcy5pbml0aWFsRHJhZ1g7XHJcbiAgICAgICAgaWYgKHRoaXMuX3ZpZXdwb3J0ICYmIHRoaXMuX3ZpZXdwb3J0Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgY29uc3QgZGlmZkluUGVyY2VudCA9IChkaWZmIC8gdGhpcy5fdmlld3BvcnQ/Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpICogMTAwO1xyXG4gICAgICAgICAgICAvLyB0aGlzLnZpZXdPZmZzZXRQZXJjZW50ID0gdGhpcy52aWV3T2Zmc2V0UGVyY2VudERyYWdTdGFydCArIGRpZmZJblBlcmNlbnQ7XHJcbiAgICAgICAgICAgIHRoaXMuY29uc3RyYWluT2Zmc2V0KHRoaXMudmlld09mZnNldFBlcmNlbnREcmFnU3RhcnQgKyBkaWZmSW5QZXJjZW50KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8jZW5kcmVnaW9uXHJcblxyXG4gICAgcHJpdmF0ZSBjb25zdHJhaW5PZmZzZXQobmV3T2Zmc2V0OiBudW1iZXIpOiB2b2lkIHsgICAgICAgIFxyXG4gICAgICAgIGlmICh0aGlzLnpvb21QZXJjZW50ICsgbmV3T2Zmc2V0IDwgMTAwKSB7XHJcbiAgICAgICAgICAgIG5ld09mZnNldCA9IC10aGlzLnpvb21QZXJjZW50ICsgMTAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICBuZXdPZmZzZXQgPSBNYXRoLm1pbigwLCBuZXdPZmZzZXQpO1xyXG4gICAgICAgIGlmIChuZXdPZmZzZXQgIT0gdGhpcy52aWV3T2Zmc2V0UGVyY2VudCkge1xyXG4gICAgICAgICAgICB0aGlzLnZpZXdPZmZzZXRQZXJjZW50ID0gbmV3T2Zmc2V0O1xyXG4gICAgICAgICAgICB0aGlzLnZpZXdPZmZzZXRQZXJjZW50Q2hhbmdlLmVtaXQodGhpcy52aWV3T2Zmc2V0UGVyY2VudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2VuZXJhdGVUaWNrcygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmhvdXJUaWNrcyA9IHRoaXMuX3RpbWVsaW5lU2VydmljZS5nZXRIb3VyVGlja3ModGhpcy50aWNrRnJlcXVlbmN5KTtcclxuICAgICAgICB0aGlzLmRheUxhYmVscyA9IHRoaXMuX3RpbWVsaW5lU2VydmljZS5nZXREYXlMYWJlbHModGhpcy5sb2NhbGVzLCB0aGlzLmRheUxhYmVsQ3VzdG9tRGF0YUZuKTtcclxuICAgICAgICB0aGlzLmhvdXJMYWJlbHMgPSB0aGlzLl90aW1lbGluZVNlcnZpY2UuZ2V0SG91ckxhYmVscyh0aGlzLmhvdXJMYWJlbEZyZXF1ZW5jeSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUludGVybmFsVGltZWxpbmVJdGVtcygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnByZXNlbnRhdGlvbkl0ZW1zID0gdGhpcy5pdGVtcy5tYXAoKGl0ZW0pID0+IHtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0VGltZSA9IG5ldyBEYXRlKGl0ZW0uc3RhcnQpLnRvTG9jYWxlVGltZVN0cmluZyh0aGlzLmxvY2FsZXM/PyBbXSwgeyBob3VyOiAnbnVtZXJpYycsIG1pbnV0ZTogJzItZGlnaXQnIH0pO1xyXG4gICAgICAgICAgICBjb25zdCBlbmRUaW1lID0gbmV3IERhdGUoaXRlbS5lbmQpLnRvTG9jYWxlVGltZVN0cmluZyh0aGlzLmxvY2FsZXM/PyBbXSwgeyBob3VyOiAnbnVtZXJpYycsIG1pbnV0ZTogJzItZGlnaXQnIH0pO1xyXG4gICAgICAgICAgICBjb25zdCB0aW1lUmFuZ2UgPSBgJHtzdGFydFRpbWV9IC0gJHtlbmRUaW1lfWA7XHJcbiAgICBcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGRhdGE6IGl0ZW0uZGF0YSxcclxuICAgICAgICAgICAgICAgIHg6IHRoaXMuX3RpbWVsaW5lU2VydmljZS5nZXRYKGl0ZW0uc3RhcnQpLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6IHRoaXMuX3RpbWVsaW5lU2VydmljZS5nZXRXaWR0aEZyb21UaW1lKFxyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uc3RhcnQsXHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5lbmRcclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICBoaW50OiBpdGVtLmhpbnQgPz8gdGltZVJhbmdlLFxyXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBpdGVtLmJhY2tncm91bmRDb2xvcixcclxuICAgICAgICAgICAgICAgIHRvcDogaXRlbS50b3AgPz8gJzUwJScsXHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGl0ZW0uaGVpZ2h0ID8/ICc2MCUnLFxyXG4gICAgICAgICAgICAgICAgY2xhc3M6IGl0ZW0uY2xhc3MsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHByaXZhdGUgZ2VuZXJhdGVJbnRlcm5hbFRpbWVsaW5lUG9pbnRJblRpbWVJdGVtcygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnByZXNlbnRhdGlvblBvaW50SW5UaW1lSXRlbXMgPSB0aGlzLnBvaW50SW5UaW1lSXRlbXMubWFwKChpdGVtKSA9PiB7XHJcblxyXG4gICAgICAgICAgICBjb25zdCB0aW1lUG9pbnRTdHJpbmcgPSBuZXcgRGF0ZShpdGVtLmRhdGUpLnRvTG9jYWxlVGltZVN0cmluZyh0aGlzLmxvY2FsZXM/PyBbXSwgeyBob3VyOiAnbnVtZXJpYycsIG1pbnV0ZTogJzItZGlnaXQnIH0pO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGRhdGE6IGl0ZW0uZGF0YSxcclxuICAgICAgICAgICAgICAgIHg6IHRoaXMuX3RpbWVsaW5lU2VydmljZS5nZXRYKGl0ZW0uZGF0ZSksXHJcbiAgICAgICAgICAgICAgICBoaW50OiBpdGVtLmhpbnQgPz8gdGltZVBvaW50U3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgdG9wOiBpdGVtLnRvcCA/PyAnMjAlJyxcclxuICAgICAgICAgICAgICAgIGhlaWdodDogaXRlbS5oZWlnaHQgPz8gJzFyZW0nLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6IGl0ZW0ud2lkdGggPz8gJzFyZW0nLFxyXG4gICAgICAgICAgICAgICAgY2xhc3M6IGl0ZW0uY2xhc3MsXHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGl0ZW0uYmFja2dyb3VuZENvbG9yLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiIsIjxuZy10ZW1wbGF0ZSAjZGVmYXVsdEl0ZW1UZW1wbGF0ZSBsZXQtaXRlbT1cIml0ZW1cIj5cclxuICAgIDxkaXYgXHJcbiAgICAgICAgY2xhc3M9XCJzZHMtdGltZWxpbmUtaXRlbSBoLTEwMFwiXHJcbiAgICAgICAgW3RpdGxlXT1cIml0ZW0uaGludFwiXHJcbiAgICAgICAgPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2RlZmF1bHRQb2ludEluVGltZUl0ZW1UZW1wbGF0ZSBsZXQtaXRlbT1cIml0ZW1cIj5cclxuICAgIDxkaXYgXHJcbiAgICAgICAgY2xhc3M9XCJzZHMtdGltZWxpbmUtaXRlbSBoLTEwMFwiXHJcbiAgICAgICAgW3RpdGxlXT1cIml0ZW0uaGludFwiXHJcbiAgICAgICAgPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2RlZmF1bHREYXlMYWJlbFRlbXBsYXRlIGxldC1sYWJlbD1cImxhYmVsXCI+XHJcbiAgICB7e2xhYmVsLmxhYmVsfX1cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxkaXYgXHJcbiAgICAjdmlld3BvcnRcclxuICAgIGNsYXNzPVwic2RzLXRpbWVsaW5lLXZpZXdwb3J0XCJcclxuICAgICh3aGVlbCk9XCJvblNjcm9sbCgkZXZlbnQpXCJcclxuXHJcbiAgICAobW91c2Vkb3duKT1cIm9uRHJhZ1N0YXJ0KCRldmVudClcIlxyXG4gICAgKHRvdWNoc3RhcnQpPVwib25EcmFnU3RhcnQoJGV2ZW50KVwiXHJcbiAgICA+XHJcblxyXG4gICAgPGRpdiBcclxuICAgICAgICBjbGFzcz1cInNkcy10aW1lbGluZS1jb250YWluZXIgZC1mbGV4IGZsZXgtY29sdW1uXCJcclxuICAgICAgICBbc3R5bGUubGVmdC4lXT1cInZpZXdPZmZzZXRQZXJjZW50XCJcclxuICAgICAgICBbc3R5bGUud2lkdGguJV09XCJ6b29tUGVyY2VudFwiXHJcbiAgICAgICAgW3N0eWxlLmN1cnNvcl09XCJpc0RyYWdnaW5nID8gJ2V3LXJlc2l6ZScgOiAnZGVmYXVsdCdcIlxyXG4gICAgICAgID5cclxuXHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdJZj1cInNob3dEYXlMYWJlbHNcIiBcclxuICAgICAgICAgICAgY2xhc3M9XCJzZHMtdGltZWxpbmUtZGF5LWhlYWRlclwiPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBsYWJlbCBvZiBkYXlMYWJlbHNcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZHMtZGF5LWxhYmVsXCIgIFxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZGF5TGFiZWxDbGFzcyA/PyBudWxsXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0LiVdPVwibGFiZWwueFwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGguJV09XCJsYWJlbC53aWR0aFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgXHJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGF5TGFiZWxUZW1wbGF0ZSA/IGRheUxhYmVsVGVtcGxhdGUgOiBkZWZhdWx0RGF5TGFiZWxUZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntsYWJlbDogbGFiZWx9XCI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4gIFxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgKm5nSWY9XCJzaG93SG91ckxhYmVsc1wiIFxyXG4gICAgICAgICAgICBjbGFzcz1cInNkcy10aW1lbGluZS1ob3VyLWhlYWRlclwiPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBsYWJlbCBvZiBob3VyTGFiZWxzO1wiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNkcy1ob3VyLWxhYmVsXCIgIFxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiaG91ckxhYmVsQ2xhc3MgPz8gbnVsbFwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUubGVmdC4lXT1cImxhYmVsLnhcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnJlbV09XCIxLjJcIlxyXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieydsZWZ0JzogJ2NhbGMoJyArIGxhYmVsLnggKyAnJSAtIDAuNnJlbSknfVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAge3tsYWJlbC5sYWJlbH19XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd1RpbWVsaW5lXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJzZHMtdGltZWxpbmUgZmxleC1ncm93LTFcIlxyXG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cInRpbWVsaW5lSGVpZ2h0XCJcclxuICAgICAgICAgICAgPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0aWNrIG9mIGhvdXJUaWNrc1wiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNkcy10aW1lbGluZS10aWNrXCIgIFxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiaG91clRpY2tDbGFzcyA/PyBudWxsXCJcdFxyXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwidGljay54ID09IDEwMCA/IHsnbGVmdCc6ICdjYWxjKCcgKyB0aWNrLnggKyclIC0gMXB4KSd9IDogeydsZWZ0JzogJ2NhbGMoJyArIHRpY2sueCArICclIC0gMC41cHgpJ31cIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHByZXNlbnRhdGlvbkl0ZW1zXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2RzLXRpbWVsaW5lLWl0ZW0tY29udGFpbmVyXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIml0ZW0uY2xhc3MgPz8gbnVsbFwiXHJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgJ3dpZHRoJzogJ21heCgnICsgaXRlbS53aWR0aCArJyUsIDFweCknLFxyXG4gICAgICAgICAgICAgICAgICAgICd0b3AnOiAnY2FsYygnICsgaXRlbS50b3AgKyAnIC0gbWF4KGNhbGMoJyArIGl0ZW0uaGVpZ2h0ICsnLzIpLCAxcHgpKScsIFxyXG4gICAgICAgICAgICAgICAgfVwiXHJcblxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmxlZnQuJV09XCJpdGVtLnhcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodF09XCJpdGVtLmhlaWdodFwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIml0ZW0uYmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgICAgICAgID5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW1UZW1wbGF0ZSA/IGl0ZW1UZW1wbGF0ZSA6IGRlZmF1bHRJdGVtVGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7aXRlbTogaXRlbX1cIj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPiAgXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcHJlc2VudGF0aW9uUG9pbnRJblRpbWVJdGVtc1wiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNkcy10aW1lbGluZS1wb2ludC1pbi10aW1lLWl0ZW0tY29udGFpbmVyXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIml0ZW0uY2xhc3NcIlx0XHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cIml0ZW0uaGVpZ2h0XCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJpdGVtLndpZHRoXCJcclxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAndG9wJzogJ2NhbGMoJyArIGl0ZW0udG9wICsgJyAtIG1heChjYWxjKCcgKyBpdGVtLmhlaWdodCArJy8yKSwgMXB4KSknLCBcclxuICAgICAgICAgICAgICAgICAgICAnbGVmdCc6ICdjYWxjKCcgKyBpdGVtLnggKyAnJSAtIG1heCggY2FsYygnICsgaXRlbS53aWR0aCArJy8yKSwgMXB4KSknLFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIml0ZW0uYmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgICAgICAgID5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBvaW50SW5UaW1lVGVtcGxhdGUgPyBwb2ludEluVGltZVRlbXBsYXRlIDogZGVmYXVsdFBvaW50SW5UaW1lSXRlbVRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2l0ZW06IGl0ZW19XCI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4gIFxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
392
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZWxpbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNkcy1jb21wb25lbnRzL3NyYy9saWIvdGltZWxpbmUvY29tcG9uZW50cy90aW1lbGluZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2RzLWNvbXBvbmVudHMvc3JjL2xpYi90aW1lbGluZS9jb21wb25lbnRzL3RpbWVsaW5lLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFSCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBR04sU0FBUyxFQUNULFlBQVksRUFDZixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7O0FBZWxFLE1BQU0sT0FBTyxvQkFBb0I7SUF1TzdCO1FBdE9BOzs7OztXQUtHO1FBQ00sVUFBSyxHQUFTLElBQUksSUFBSSxFQUFFLENBQUM7UUFFbEM7Ozs7O1dBS0c7UUFDTSxRQUFHLEdBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUVoQzs7Ozs7O1dBTUc7UUFDTSxVQUFLLEdBQW1CLEVBQUUsQ0FBQztRQUVwQzs7Ozs7O1dBTUc7UUFDTSxxQkFBZ0IsR0FBOEIsRUFBRSxDQUFDO1FBRTFEOzs7OztXQUtHO1FBQ00saUJBQVksR0FBaUMsU0FBUyxDQUFDO1FBRWhFOzs7OztXQUtHO1FBQ00sd0JBQW1CLEdBQWlDLFNBQVMsQ0FBQztRQUV2RTs7Ozs7V0FLRztRQUNNLHFCQUFnQixHQUFpQyxTQUFTLENBQUM7UUFFcEU7Ozs7O1dBS0c7UUFDTSx5QkFBb0IsR0FBK0MsU0FBUyxDQUFDO1FBRXRGOzs7OztXQUtHO1FBQ00sa0JBQWEsR0FBMEIsUUFBUSxDQUFDO1FBRXpEOzs7OztXQUtHO1FBQ00sdUJBQWtCLEdBQTBCLE1B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ICBDb21wb25lbnQsXHJcbiAgICBFbGVtZW50UmVmLFxyXG4gICAgSG9zdExpc3RlbmVyLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBPbkluaXQsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBTaW1wbGVDaGFuZ2VzLFxyXG4gICAgVGVtcGxhdGVSZWYsXHJcbiAgICBWaWV3Q2hpbGQsXHJcbiAgICBFdmVudEVtaXR0ZXJcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVGltZWxpbmVDdXN0b21EYXRlRGF0YVByb3ZpZGVyLCBUaW1lbGluZVRpY2tGcmVxdWVuY3kgfSBmcm9tICcuLi90eXBlcy90aW1lbGluZS50eXBlcyc7XHJcbmltcG9ydCB7IFNkc1RpbWVsaW5lU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RpbWVsaW5lLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gICAgVGltZWxpbmVJbnRlcnZhbExhYmVsLFxyXG4gICAgVGltZWxpbmVJdGVtLFxyXG4gICAgVGltZWxpbmVJdGVtUHJlc2VudGF0aW9uLFxyXG4gICAgVGltZWxpbmVQb2ludEluVGltZUl0ZW0sXHJcbiAgICBUaW1lbGluZVBvaW50SW5UaW1lSXRlbVByZXNlbnRhdGlvbixcclxuICAgIFRpbWVsaW5lVGljayxcclxufSBmcm9tICcuLi9tb2RlbHMvdGltZWxpbmUubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3Nkcy10aW1lbGluZScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vdGltZWxpbmUuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vdGltZWxpbmUuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNkc1RpbWVsaW5lQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgc3RhcnQgZGF0ZSBhbmQgdGltZSBmb3IgdGhlIHRpbWVsaW5lLlxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHtEYXRlfVxyXG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHN0YXJ0OiBEYXRlID0gbmV3IERhdGUoKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBlbmQgZGF0ZSBhbmQgdGltZSBmb3IgdGhlIHRpbWVsaW5lLlxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHtEYXRlfVxyXG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGVuZDogRGF0ZSA9IG5ldyBEYXRlKCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgcGVyaW9kIGJhc2VkIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBvbiB0aGUgdGltZWxpbmUuIFNwZWNpZnkgZGF0YSBpZiB5b3UgbmVlZCBcclxuICAgICAqIGFkZGl0aW9uYWwgZGF0YSBmb3IgY3VzdG9tIHJlbmRlcmluZyBvZiB0aGUgaXRlbXMuXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUge1RpbWVsaW5lSXRlbVtdfVxyXG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGl0ZW1zOiBUaW1lbGluZUl0ZW1bXSA9IFtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSXRlbXMgdG8gYmUgZGlzcGxheWVkIG9uIHRoZSB0aW1lbGluZSBhdCBhIHNwZWNpZmljIHBvaW50IGluIHRpbWUuXHJcbiAgICAgKiBTcGVjaWZ5IGRhdGEgaWYgeW91IG5lZWQgYWRkaXRpb25hbCBkYXRhIGZvciBjdXN0b20gcmVuZGVyaW5nIG9mIHRoZSBpdGVtcy5cclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7VGltZWxpbmVQb2ludEluVGltZUl0ZW1bXX1cclxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwb2ludEluVGltZUl0ZW1zOiBUaW1lbGluZVBvaW50SW5UaW1lSXRlbVtdID0gW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgdGVtcGxhdGUgdG8gYmUgdXNlZCBmb3IgY3VzdG9tIHJlbmRlcmluZyBvZiB0aGUgaXRlbXMuXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUgeyhUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkKX1cclxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBpdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgdGVtcGxhdGUgdG8gYmUgdXNlZCBmb3IgY3VzdG9tIHJlbmRlcmluZyBvZiB0aGUgcG9pbi1pbi10aW1lIGl0ZW1zLlxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHsoVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCl9XHJcbiAgICAgKiBAbWVtYmVyb2YgU2RzVGltZWxpbmVDb21wb25lbnRcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgcG9pbnRJblRpbWVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSB0ZW1wbGF0ZSB0byBiZSB1c2VkIGZvciBjdXN0b20gcmVuZGVyaW5nIG9mIHRoZSBkYXkgbGFiZWxzLlxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHsoVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCl9XHJcbiAgICAgKiBAbWVtYmVyb2YgU2RzVGltZWxpbmVDb21wb25lbnRcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgZGF5TGFiZWxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBBIGN1c3RvbSBkYXRhIGZ1bmN0aW9uIGZvciB0aGUgZGF5IGxhYmVscy4gXHJcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIHRha2VzIGEgRGF0ZSBvYmplY3QgYXMgaW5wdXQgYW5kIHJldHVybnMgYW55IGN1c3RvbSBkYXRhIHRoYXQgd2lsbCBiZSBhdmFpbGFibGUgZm9yIHRoZSBjdXN0b20gdGVtcGxhdGVcclxuICAgICAqXHJcbiAgICAgKiBAbWVtYmVyb2YgU2RzVGltZWxpbmVDb21wb25lbnRcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgZGF5TGFiZWxDdXN0b21EYXRhRm46IFRpbWVsaW5lQ3VzdG9tRGF0ZURhdGFQcm92aWRlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBmcmVxdWVuY3kgb2YgdGhlIHRpY2tzIG9uIHRoZSB0aW1lbGluZS5cclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7VGltZWxpbmVUaWNrRnJlcXVlbmN5fVxyXG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHRpY2tGcmVxdWVuY3k6IFRpbWVsaW5lVGlja0ZyZXF1ZW5jeSA9ICdob3VybHknO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGZyZXF1ZW5jeSBvZiB0aGUgaG91ciBsYWJlbHMgb24gdGhlIHRpbWVsaW5lLlxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHtUaW1lbGluZVRpY2tGcmVxdWVuY3l9XHJcbiAgICAgKiBAbWVtYmVyb2YgU2RzVGltZWxpbmVDb21wb25lbnRcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgaG91ckxhYmVsRnJlcXVlbmN5OiBUaW1lbGluZVRpY2tGcmVxdWVuY3kgPSAnM2hycyc7XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGN1cnJlbnQgem9vbSBsZXZlbCBvZiB0aGUgdGltZWxpbmUuIEluIHBlcmNlbnQuXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUge251bWJlcn1cclxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSB6b29tUGVyY2VudDogbnVtYmVyID0gMTAwO1xyXG4gICAgQE91dHB1dCgpIHpvb21QZXJjZW50Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbml0aWFsIG9mZnNldCBvZiB0aGUgdmlld3BvcnQgaW4gcGVyY2VudC4gVGhpcyBpcyB1c2VkIGluIHNjZW5hcmlvcyBcclxuICAgICAqIHdpdGggbXVsdGlwbGUgZGF5cyB3aGVuIHlvdSB3YW50IHRvIHNob3cgbm9uLWZpcnN0IGRheSBhcyBkZWZ1bHQuXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUge251bWJlcn1cclxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSB2aWV3T2Zmc2V0UGVyY2VudDogbnVtYmVyID0gMDtcclxuICAgIEBPdXRwdXQoKSB2aWV3T2Zmc2V0UGVyY2VudENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIG1heGltdW0gYWxsb3dlZCB6b29tIGxldmVsIG9mIHRoZSB0aW1lbGluZS4gSW4gcGVyY2VudC5cclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxyXG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIG1heFpvb21QZXJjZW50OiBudW1iZXIgPSA1MDA7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBXaGV0aGVyIHRvIHNob3cgaG91ciBsYWJlbHMuXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUge2Jvb2xlYW59XHJcbiAgICAgKiBAbWVtYmVyb2YgU2RzVGltZWxpbmVDb21wb25lbnRcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgc2hvd0hvdXJMYWJlbHM6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIENTUyBjbGFzcyB0byBiZSBhcHBsaWVkIHRvIHRoZSBob3VyIGxhYmVscy5cclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGhvdXJMYWJlbENsYXNzPzogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2hldGhlciB0byBzaG93IGRheSBsYWJlbHMuIFxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHtib29sZWFufVxyXG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHNob3dEYXlMYWJlbHM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBDU1MgY2xhc3MgdG8gYmUgYXBwbGllZCB0byB0aGUgZGF5IGxhYmVscy5cclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGRheUxhYmVsQ2xhc3M/OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBXaGV0aGVyIHRvIHNob3cgdGltZWxpbmUuIFVzZWZ1bCBmb3IgaGlkaW5nIHRoZSB0aW1lbGluZSB3aGVuIHdlIG9ubHkgbmVlZCBoZWFkZXIuXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUge2Jvb2xlYW59XHJcbiAgICAgKiBAbWVtYmVyb2YgU2RzVGltZWxpbmVDb21wb25lbnRcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgc2hvd1RpbWVsaW5lOiBib29sZWFuID0gdHJ1ZTsgICAgXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgQ1NTIGNsYXNzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIGhvdXIgdGlja3MuXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUge3N0cmluZ31cclxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBob3VyVGlja0NsYXNzPzogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGhlaWdodCBvZiB0aGUgdGltZWxpbmUuIERlZmF1bHQgaXMgMnJlbS5cclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHRpbWVsaW5lSGVpZ2h0OiBzdHJpbmcgPSAnMnJlbSc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBXaGV0aGVyIHRvIGVuYWJsZSB6b29tIGFuZCBkcmFnIGZ1bmN0aW9uYWxpdHkuXHJcbiAgICAgKlxyXG4gICAgICogQHR5cGUge2Jvb2xlYW59XHJcbiAgICAgKiBAbWVtYmVyb2YgU2RzVGltZWxpbmVDb21wb25lbnRcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgZW5hYmxlWm9vbUFuZERyYWc6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTnVtYmVyIG9mIG1pbnV0ZXMgYWRkZWQgdG8gc3RhcnQgYW5kIHN0b3AgdG8gZml0IHRoZSBkYXRhIG9uIHRoZSBlZGdlc1xyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHtudW1iZXJ9XHJcbiAgICAgKiBAbWVtYmVyb2YgU2RzVGltZWxpbmVDb21wb25lbnRcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgb2ZmU2V0TWludXRlczogbnVtYmVyID0gMTU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgbG9jYWxlcyB0byBiZSB1c2VkIGZvciBmb3JtYXR0aW5nIHRoZSB0aW1lbGluZS5cclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7KHN0cmluZyB8IEFycmF5PHN0cmluZz4pfVxyXG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGxvY2FsZXM/OiBzdHJpbmcgfCBBcnJheTxzdHJpbmc+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29udHJvbCBpZiB0aG9zZSBwYXJ0cyBvZiBzZWdtZW50cyAob3Igd2hvbGUgc2VnbWVudHMpIHRoYXQgZmFsbCBpbnRvIHRoZSBPZmZzZXQgXHJcbiAgICAgKiBwZXJpb2QgYXJlIGRpc3BsYXllZCBvciBub3RcclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cclxuICAgICAqIEBtZW1iZXJvZiBTZHNUaW1lbGluZUNvbXBvbmVudFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBjdXRPZmZzZXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgZGVmYXVsdCBjdXJzb3IsIHRoYXQgc2hvdWxkIGJlIHNob3duIHdoZW4gaG92ZXJpbmcgb3ZlciB0aW1lbGluZSBjb21wb25lbnQuXHJcbiAgICAgKiBEZWZhdWx0IHZhbHVlIGlzICdkZWZhdWx0Jy5cclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAgICogQG1lbWJlcm9mIFNkc1RpbWVsaW5lQ29tcG9uZW50XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIGRlZmF1bHRDdXJzb3I6IHN0cmluZyA9IFwiZGVmYXVsdFwiO1xyXG5cclxuICAgIC8vIHByb3RlY3RlZFxyXG4gICAgaG91clRpY2tzOiBUaW1lbGluZVRpY2tbXSA9IFtdO1xyXG4gICAgaG91ckxhYmVsczogVGltZWxpbmVJbnRlcnZhbExhYmVsW10gPSBbXTtcclxuICAgIGRheUxhYmVsczogVGltZWxpbmVJbnRlcnZhbExhYmVsW10gPSBbXTtcclxuXHJcbiAgICBwcml2YXRlIF90aW1lbGluZVNlcnZpY2U6IFNkc1RpbWVsaW5lU2VydmljZSA9IG5ldyBTZHNUaW1lbGluZVNlcnZpY2UoXHJcbiAgICAgICAgdGhpcy5zdGFydCxcclxuICAgICAgICB0aGlzLmVuZCxcclxuICAgICAgICB0aGlzLm9mZlNldE1pbnV0ZXMsXHJcbiAgICAgICAgdGhpcy5jdXRPZmZzZXRcclxuICAgICk7XHJcblxyXG4gICAgcHVibGljIHByZXNlbnRhdGlvbkl0ZW1zOiBUaW1lbGluZUl0ZW1QcmVzZW50YXRpb25bXSA9IFtdO1xyXG4gICAgcHVibGljIHByZXNlbnRhdGlvblBvaW50SW5UaW1lSXRlbXM6IFRpbWVsaW5lUG9pbnRJblRpbWVJdGVtUHJlc2VudGF0aW9uW10gPSBbXTtcclxuXHJcbiAgICBwdWJsaWMgaXNEcmFnZ2luZyA9IGZhbHNlO1xyXG4gICAgcHVibGljIGluaXRpYWxEcmFnWCA9IDA7XHJcblxyXG4gICAgcHJpdmF0ZSB2aWV3T2Zmc2V0UGVyY2VudERyYWdTdGFydCA9IDA7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgndmlld3BvcnQnLCB7IHN0YXRpYzogdHJ1ZSB9KSBfdmlld3BvcnQ6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7fVxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmdlbmVyYXRlVGlja3MoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3RhcnQgJiYgdGhpcy5lbmQpIHtcclxuICAgICAgICAgICAgdGhpcy5fdGltZWxpbmVTZXJ2aWNlID0gbmV3IFNkc1RpbWVsaW5lU2VydmljZShcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnQsXHJcbiAgICAgICAgICAgICAgICB0aGlzLmVuZCxcclxuICAgICAgICAgICAgICAgIHRoaXMub2ZmU2V0TWludXRlcyxcclxuICAgICAgICAgICAgICAgIHRoaXMuY3V0T2Zmc2V0XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVUaWNrcygpO1xyXG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlSW50ZXJuYWxUaW1lbGluZUl0ZW1zKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY2hhbmdlc1snc3RhcnQnXSB8fCBjaGFuZ2VzWydlbmQnXSB8fCBjaGFuZ2VzWydvZmZTZXRNaW51dGVzJ10gfHwgY2hhbmdlc1snY3V0T2Zmc2V0J10pIHtcclxuICAgICAgICAgICAgdGhpcy5fdGltZWxpbmVTZXJ2aWNlID0gbmV3IFNkc1RpbWVsaW5lU2VydmljZShcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnQsXHJcbiAgICAgICAgICAgICAgICB0aGlzLmVuZCxcclxuICAgICAgICAgICAgICAgIHRoaXMub2ZmU2V0TWludXRlcyxcclxuICAgICAgICAgICAgICAgIHRoaXMuY3V0T2Zmc2V0XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVUaWNrcygpO1xyXG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlSW50ZXJuYWxUaW1lbGluZUl0ZW1zKCk7ICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY2hhbmdlc1snaXRlbXMnXSkge1xyXG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlSW50ZXJuYWxUaW1lbGluZUl0ZW1zKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY2hhbmdlc1sncG9pbnRJblRpbWVJdGVtcyddKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVJbnRlcm5hbFRpbWVsaW5lUG9pbnRJblRpbWVJdGVtcygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3pvb21QZXJjZW50J10pIHtcclxuICAgICAgICAgICAgLy8gdGhpcy52aWV3T2Zmc2V0UGVyY2VudCA9ICh0aGlzLnpvb21QZXJjZW50IC0gMTAwKSAvIC0yO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3Nob3dEYXlMYWJlbHMnXSB8fCBjaGFuZ2VzWydzaG93SG91ckxhYmVscyddKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVUaWNrcygpO1xyXG4gICAgICAgIH0gICAgICBcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHt9XHJcblxyXG4gICAgLy8jcmVnaW9uIG1vdXNlIHdoZWVsIHpvb21cclxuICAgIG9uU2Nyb2xsKGV2ZW50OiBXaGVlbEV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuZW5hYmxlWm9vbUFuZERyYWcpIHtcclxuXHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBkZWx0YSA9IE1hdGguc2lnbihldmVudC5kZWx0YVkpO1xyXG4gICAgICAgICAgICBjb25zdCBuZXdab29tUGVyY2VudCA9IE1hdGgubWluKFxyXG4gICAgICAgICAgICAgICAgTWF0aC5tYXgodGhpcy56b29tUGVyY2VudCArIC1kZWx0YSAqIDIwLCAxMDApLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5tYXhab29tUGVyY2VudFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjb25zdCBkZWx0YVpvb21QZXJjZW50ID0gbmV3Wm9vbVBlcmNlbnQgLSB0aGlzLnpvb21QZXJjZW50O1xyXG4gICAgICAgICAgICB0aGlzLnpvb21QZXJjZW50ID0gbmV3Wm9vbVBlcmNlbnQ7XHJcbiAgICAgICAgICAgIHRoaXMuem9vbVBlcmNlbnRDaGFuZ2UuZW1pdCh0aGlzLnpvb21QZXJjZW50KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIGdldCB0aGUgcmVsYXRpdmUgcG9zaXRpb24gb2YgdGhlIGN1cnNvciBvbiB0aGUgdmlld3BvcnQgc28gd2UgY2FuIHpvb20gaW4gaW50byB0aGlzIHBvc2l0aW9uXHJcbiAgICAgICAgICAgIGNvbnN0IHggPSBldmVudC5jbGllbnRYIC0gdGhpcy5fdmlld3BvcnQ/Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdDtcclxuICAgICAgICAgICAgY29uc3QgY3Vyc29yUmVsYXRpdmVQb3NpdGlvbiA9IHggLyB0aGlzLl92aWV3cG9ydD8ubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcclxuICAgICAgICAgICAgLy8gdGhpcy52aWV3T2Zmc2V0UGVyY2VudCA9IHRoaXMudmlld09mZnNldFBlcmNlbnQgLSBkZWx0YVpvb21QZXJjZW50ICogY3Vyc29yUmVsYXRpdmVQb3NpdGlvbjtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuY29uc3RyYWluT2Zmc2V0KHRoaXMudmlld09mZnNldFBlcmNlbnQgLSBkZWx0YVpvb21QZXJjZW50ICogY3Vyc29yUmVsYXRpdmVQb3NpdGlvbik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8jZW5kcmVnaW9uXHJcblxyXG4gICAgLy8jcmVnaW9uIGRyYWdnaW5nXHJcbiAgICBcclxuICAgIHB1YmxpYyBvbkRyYWdTdGFydChldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5lbmFibGVab29tQW5kRHJhZyAmJiB0aGlzLnpvb21QZXJjZW50ID4gMTAwKSB7XHJcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIHRoaXMuaXNEcmFnZ2luZyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMudmlld09mZnNldFBlcmNlbnREcmFnU3RhcnQgPSB0aGlzLnZpZXdPZmZzZXRQZXJjZW50O1xyXG5cclxuICAgICAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsRHJhZ1ggPSBldmVudC5jbGllbnRYO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50IGluc3RhbmNlb2YgVG91Y2hFdmVudCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsRHJhZ1ggPSBldmVudC50b3VjaGVzWzBdLmNsaWVudFg7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93Om1vdXNlbW92ZScsIFsnJGV2ZW50J10pXHJcbiAgICBwdWJsaWMgb25EcmFnTW92ZShldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmVuYWJsZVpvb21BbmREcmFnKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmlzRHJhZ2dpbmcpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRYID0gZXZlbnQuY2xpZW50WDtcclxuICAgICAgICAgICAgICAgIHRoaXMubW92ZUVsZW1lbnQoY3VycmVudFgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzp0b3VjaG1vdmUnLCBbJyRldmVudCddKVxyXG4gICAgb25EcmFnTW92ZVRvdWNoKGV2ZW50OiBUb3VjaEV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuZW5hYmxlWm9vbUFuZERyYWcpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuaXNEcmFnZ2luZykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFggPSBldmVudC50b3VjaGVzWzBdLmNsaWVudFg7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1vdmVFbGVtZW50KGN1cnJlbnRYKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6bW91c2V1cCcsIFsnJGV2ZW50J10pXHJcbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6dG91Y2hlbmQnLCBbJyRldmVudCddKVxyXG4gICAgcHVibGljIG9uRHJhZ0VuZChldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5lbmFibGVab29tQW5kRHJhZykge1xyXG4gICAgICAgICAgICB0aGlzLmlzRHJhZ2dpbmcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBtb3ZlRWxlbWVudChjdXJyZW50WDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZGlmZiA9IGN1cnJlbnRYIC0gdGhpcy5pbml0aWFsRHJhZ1g7XHJcbiAgICAgICAgaWYgKHRoaXMuX3ZpZXdwb3J0ICYmIHRoaXMuX3ZpZXdwb3J0Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgY29uc3QgZGlmZkluUGVyY2VudCA9IChkaWZmIC8gdGhpcy5fdmlld3BvcnQ/Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpICogMTAwO1xyXG4gICAgICAgICAgICAvLyB0aGlzLnZpZXdPZmZzZXRQZXJjZW50ID0gdGhpcy52aWV3T2Zmc2V0UGVyY2VudERyYWdTdGFydCArIGRpZmZJblBlcmNlbnQ7XHJcbiAgICAgICAgICAgIHRoaXMuY29uc3RyYWluT2Zmc2V0KHRoaXMudmlld09mZnNldFBlcmNlbnREcmFnU3RhcnQgKyBkaWZmSW5QZXJjZW50KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8jZW5kcmVnaW9uXHJcblxyXG4gICAgcHJpdmF0ZSBjb25zdHJhaW5PZmZzZXQobmV3T2Zmc2V0OiBudW1iZXIpOiB2b2lkIHsgICAgICAgIFxyXG4gICAgICAgIGlmICh0aGlzLnpvb21QZXJjZW50ICsgbmV3T2Zmc2V0IDwgMTAwKSB7XHJcbiAgICAgICAgICAgIG5ld09mZnNldCA9IC10aGlzLnpvb21QZXJjZW50ICsgMTAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICBuZXdPZmZzZXQgPSBNYXRoLm1pbigwLCBuZXdPZmZzZXQpO1xyXG4gICAgICAgIGlmIChuZXdPZmZzZXQgIT0gdGhpcy52aWV3T2Zmc2V0UGVyY2VudCkge1xyXG4gICAgICAgICAgICB0aGlzLnZpZXdPZmZzZXRQZXJjZW50ID0gbmV3T2Zmc2V0O1xyXG4gICAgICAgICAgICB0aGlzLnZpZXdPZmZzZXRQZXJjZW50Q2hhbmdlLmVtaXQodGhpcy52aWV3T2Zmc2V0UGVyY2VudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2VuZXJhdGVUaWNrcygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmhvdXJUaWNrcyA9IHRoaXMuX3RpbWVsaW5lU2VydmljZS5nZXRIb3VyVGlja3ModGhpcy50aWNrRnJlcXVlbmN5KTtcclxuICAgICAgICB0aGlzLmRheUxhYmVscyA9IHRoaXMuX3RpbWVsaW5lU2VydmljZS5nZXREYXlMYWJlbHModGhpcy5sb2NhbGVzLCB0aGlzLmRheUxhYmVsQ3VzdG9tRGF0YUZuKTtcclxuICAgICAgICB0aGlzLmhvdXJMYWJlbHMgPSB0aGlzLl90aW1lbGluZVNlcnZpY2UuZ2V0SG91ckxhYmVscyh0aGlzLmhvdXJMYWJlbEZyZXF1ZW5jeSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUludGVybmFsVGltZWxpbmVJdGVtcygpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBjdXR0T2ZmU3RhcnQgPSB0aGlzLmN1dE9mZnNldCA/IHRoaXMuc3RhcnQgOiBuZXcgRGF0ZSh0aGlzLnN0YXJ0LmdldFRpbWUoKSAtIHRoaXMub2ZmU2V0TWludXRlcyAqIDYwMDAwKTtcclxuICAgICAgICBjb25zdCBjdXR0T2ZmRW5kID0gdGhpcy5jdXRPZmZzZXQgPyB0aGlzLmVuZCA6IG5ldyBEYXRlKHRoaXMuZW5kLmdldFRpbWUoKSArIHRoaXMub2ZmU2V0TWludXRlcyAqIDYwMDAwKTtcclxuXHJcbiAgICAgICAgdGhpcy5wcmVzZW50YXRpb25JdGVtcyA9IHRoaXMuaXRlbXNcclxuICAgICAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5lbmQgPCBjdXR0T2ZmU3RhcnQgfHwgaXRlbS5zdGFydCA+IGN1dHRPZmZFbmQgPyBmYWxzZSA6IHRydWUpXHJcbiAgICAgICAgICAgIC5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0VGltZSA9IG5ldyBEYXRlKGl0ZW0uc3RhcnQpLnRvTG9jYWxlVGltZVN0cmluZyh0aGlzLmxvY2FsZXM/PyBbXSwgeyBob3VyOiAnbnVtZXJpYycsIG1pbnV0ZTogJzItZGlnaXQnIH0pO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZW5kVGltZSA9IG5ldyBEYXRlKGl0ZW0uZW5kKS50b0xvY2FsZVRpbWVTdHJpbmcodGhpcy5sb2NhbGVzPz8gW10sIHsgaG91cjogJ251bWVyaWMnLCBtaW51dGU6ICcyLWRpZ2l0JyB9KTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRpbWVSYW5nZSA9IGAke3N0YXJ0VGltZX0gLSAke2VuZFRpbWV9YDtcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogaXRlbS5kYXRhLFxyXG4gICAgICAgICAgICAgICAgICAgIHg6IHRoaXMuX3RpbWVsaW5lU2VydmljZS5nZXRYKGl0ZW0uc3RhcnQpLFxyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiB0aGlzLl90aW1lbGluZVNlcnZpY2UuZ2V0V2lkdGhGcm9tVGltZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5zdGFydCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5lbmRcclxuICAgICAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgICAgIGhpbnQ6IGl0ZW0uaGludCA/PyB0aW1lUmFuZ2UsXHJcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBpdGVtLmJhY2tncm91bmRDb2xvcixcclxuICAgICAgICAgICAgICAgICAgICB0b3A6IGl0ZW0udG9wID8/ICc1MCUnLFxyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogaXRlbS5oZWlnaHQgPz8gJzYwJScsXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M6IGl0ZW0uY2xhc3MsXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUludGVybmFsVGltZWxpbmVQb2ludEluVGltZUl0ZW1zKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGN1dHRPZmZTdGFydCA9IHRoaXMuY3V0T2Zmc2V0ID8gdGhpcy5zdGFydCA6IG5ldyBEYXRlKHRoaXMuc3RhcnQuZ2V0VGltZSgpIC0gdGhpcy5vZmZTZXRNaW51dGVzICogNjAwMDApO1xyXG4gICAgICAgIGNvbnN0IGN1dHRPZmZFbmQgPSB0aGlzLmN1dE9mZnNldCA/IHRoaXMuZW5kIDogbmV3IERhdGUodGhpcy5lbmQuZ2V0VGltZSgpICsgdGhpcy5vZmZTZXRNaW51dGVzICogNjAwMDApO1xyXG5cclxuICAgICAgICB0aGlzLnByZXNlbnRhdGlvblBvaW50SW5UaW1lSXRlbXMgPSB0aGlzLnBvaW50SW5UaW1lSXRlbXNcclxuICAgICAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5kYXRlIDwgY3V0dE9mZlN0YXJ0IHx8IGl0ZW0uZGF0ZSA+IGN1dHRPZmZFbmQgPyBmYWxzZSA6IHRydWUpXHJcbiAgICAgICAgICAgIC5tYXAoKGl0ZW0pID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCB0aW1lUG9pbnRTdHJpbmcgPSBuZXcgRGF0ZShpdGVtLmRhdGUpLnRvTG9jYWxlVGltZVN0cmluZyh0aGlzLmxvY2FsZXM/PyBbXSwgeyBob3VyOiAnbnVtZXJpYycsIG1pbnV0ZTogJzItZGlnaXQnIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogaXRlbS5kYXRhLFxyXG4gICAgICAgICAgICAgICAgICAgIHg6IHRoaXMuX3RpbWVsaW5lU2VydmljZS5nZXRYKGl0ZW0uZGF0ZSksXHJcbiAgICAgICAgICAgICAgICAgICAgaGludDogaXRlbS5oaW50ID8/IHRpbWVQb2ludFN0cmluZyxcclxuICAgICAgICAgICAgICAgICAgICB0b3A6IGl0ZW0udG9wID8/ICcyMCUnLFxyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogaXRlbS5oZWlnaHQgPz8gJzFyZW0nLFxyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBpdGVtLndpZHRoID8/ICcxcmVtJyxcclxuICAgICAgICAgICAgICAgICAgICBjbGFzczogaXRlbS5jbGFzcyxcclxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGl0ZW0uYmFja2dyb3VuZENvbG9yLFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuIiwiPG5nLXRlbXBsYXRlICNkZWZhdWx0SXRlbVRlbXBsYXRlIGxldC1pdGVtPVwiaXRlbVwiPlxyXG4gICAgPGRpdiBcclxuICAgICAgICBjbGFzcz1cInNkcy10aW1lbGluZS1pdGVtIGgtMTAwXCJcclxuICAgICAgICBbdGl0bGVdPVwiaXRlbS5oaW50XCJcclxuICAgICAgICA+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdFBvaW50SW5UaW1lSXRlbVRlbXBsYXRlIGxldC1pdGVtPVwiaXRlbVwiPlxyXG4gICAgPGRpdiBcclxuICAgICAgICBjbGFzcz1cInNkcy10aW1lbGluZS1pdGVtIGgtMTAwXCJcclxuICAgICAgICBbdGl0bGVdPVwiaXRlbS5oaW50XCJcclxuICAgICAgICA+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdERheUxhYmVsVGVtcGxhdGUgbGV0LWxhYmVsPVwibGFiZWxcIj5cclxuICAgIHt7bGFiZWwubGFiZWx9fVxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPGRpdiBcclxuICAgICN2aWV3cG9ydFxyXG4gICAgY2xhc3M9XCJzZHMtdGltZWxpbmUtdmlld3BvcnRcIlxyXG4gICAgKHdoZWVsKT1cIm9uU2Nyb2xsKCRldmVudClcIlxyXG5cclxuICAgIChtb3VzZWRvd24pPVwib25EcmFnU3RhcnQoJGV2ZW50KVwiXHJcbiAgICAodG91Y2hzdGFydCk9XCJvbkRyYWdTdGFydCgkZXZlbnQpXCJcclxuICAgID5cclxuXHJcbiAgICA8ZGl2IFxyXG4gICAgICAgIGNsYXNzPVwic2RzLXRpbWVsaW5lLWNvbnRhaW5lciBkLWZsZXggZmxleC1jb2x1bW5cIlxyXG4gICAgICAgIFtzdHlsZS5sZWZ0LiVdPVwidmlld09mZnNldFBlcmNlbnRcIlxyXG4gICAgICAgIFtzdHlsZS53aWR0aC4lXT1cInpvb21QZXJjZW50XCJcclxuICAgICAgICBbc3R5bGUuY3Vyc29yXT1cImlzRHJhZ2dpbmcgPyAnZXctcmVzaXplJyA6IGRlZmF1bHRDdXJzb3JcIlxyXG4gICAgICAgID5cclxuXHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAqbmdJZj1cInNob3dEYXlMYWJlbHNcIiBcclxuICAgICAgICAgICAgY2xhc3M9XCJzZHMtdGltZWxpbmUtZGF5LWhlYWRlclwiPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBsYWJlbCBvZiBkYXlMYWJlbHNcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZHMtZGF5LWxhYmVsXCIgIFxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZGF5TGFiZWxDbGFzcyA/PyBudWxsXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS5sZWZ0LiVdPVwibGFiZWwueFwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGguJV09XCJsYWJlbC53aWR0aFwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgXHJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGF5TGFiZWxUZW1wbGF0ZSA/IGRheUxhYmVsVGVtcGxhdGUgOiBkZWZhdWx0RGF5TGFiZWxUZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntsYWJlbDogbGFiZWx9XCI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4gIFxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgKm5nSWY9XCJzaG93SG91ckxhYmVsc1wiIFxyXG4gICAgICAgICAgICBjbGFzcz1cInNkcy10aW1lbGluZS1ob3VyLWhlYWRlclwiPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBsYWJlbCBvZiBob3VyTGFiZWxzO1wiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNkcy1ob3VyLWxhYmVsXCIgIFxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiaG91ckxhYmVsQ2xhc3MgPz8gbnVsbFwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUubGVmdC4lXT1cImxhYmVsLnhcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoLnJlbV09XCIxLjJcIlxyXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieydsZWZ0JzogJ2NhbGMoJyArIGxhYmVsLnggKyAnJSAtIDAuNnJlbSknfVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAge3tsYWJlbC5sYWJlbH19XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgXHJcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd1RpbWVsaW5lXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJzZHMtdGltZWxpbmUgZmxleC1ncm93LTFcIlxyXG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cInRpbWVsaW5lSGVpZ2h0XCJcclxuICAgICAgICAgICAgPlxyXG5cclxuICAgICAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0aWNrIG9mIGhvdXJUaWNrc1wiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNkcy10aW1lbGluZS10aWNrXCIgIFxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiaG91clRpY2tDbGFzcyA/PyBudWxsXCJcdFxyXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwidGljay54ID09IDEwMCA/IHsnbGVmdCc6ICdjYWxjKCcgKyB0aWNrLnggKyclIC0gMXB4KSd9IDogeydsZWZ0JzogJ2NhbGMoJyArIHRpY2sueCArICclIC0gMC41cHgpJ31cIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHByZXNlbnRhdGlvbkl0ZW1zXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2RzLXRpbWVsaW5lLWl0ZW0tY29udGFpbmVyXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIml0ZW0uY2xhc3MgPz8gbnVsbFwiXHJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgJ3dpZHRoJzogJ21heCgnICsgaXRlbS53aWR0aCArJyUsIDFweCknLFxyXG4gICAgICAgICAgICAgICAgICAgICd0b3AnOiAnY2FsYygnICsgaXRlbS50b3AgKyAnIC0gbWF4KGNhbGMoJyArIGl0ZW0uaGVpZ2h0ICsnLzIpLCAxcHgpKScsIFxyXG4gICAgICAgICAgICAgICAgfVwiXHJcblxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmxlZnQuJV09XCJpdGVtLnhcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodF09XCJpdGVtLmhlaWdodFwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIml0ZW0uYmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgICAgICAgID5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW1UZW1wbGF0ZSA/IGl0ZW1UZW1wbGF0ZSA6IGRlZmF1bHRJdGVtVGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7aXRlbTogaXRlbX1cIj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPiAgXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcHJlc2VudGF0aW9uUG9pbnRJblRpbWVJdGVtc1wiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNkcy10aW1lbGluZS1wb2ludC1pbi10aW1lLWl0ZW0tY29udGFpbmVyXCJcclxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIml0ZW0uY2xhc3NcIlx0XHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cIml0ZW0uaGVpZ2h0XCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJpdGVtLndpZHRoXCJcclxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAndG9wJzogJ2NhbGMoJyArIGl0ZW0udG9wICsgJyAtIG1heChjYWxjKCcgKyBpdGVtLmhlaWdodCArJy8yKSwgMXB4KSknLCBcclxuICAgICAgICAgICAgICAgICAgICAnbGVmdCc6ICdjYWxjKCcgKyBpdGVtLnggKyAnJSAtIG1heCggY2FsYygnICsgaXRlbS53aWR0aCArJy8yKSwgMXB4KSknLFxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIml0ZW0uYmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgICAgICAgID5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBvaW50SW5UaW1lVGVtcGxhdGUgPyBwb2ludEluVGltZVRlbXBsYXRlIDogZGVmYXVsdFBvaW50SW5UaW1lSXRlbVRlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2l0ZW06IGl0ZW19XCI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4gIFxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|