@alauda-fe/common 1.3.1 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/api/auth-api.service.d.ts +14 -0
  2. package/api/platform-ui.service.d.ts +1 -0
  3. package/api/public-api.d.ts +1 -0
  4. package/array-form-table/form/component.d.ts +6 -2
  5. package/assets/icons/icon-refresh-drag.svg +1 -0
  6. package/authorization/interceptor.service.d.ts +2 -1
  7. package/authorization/public-api.d.ts +1 -0
  8. package/authorization/session-manage.service.d.ts +2 -4
  9. package/authorization/state.service.d.ts +19 -18
  10. package/authorization/storage-token.d.ts +4 -10
  11. package/core/constants/patterns.d.ts +4 -0
  12. package/core/directives/feature-gate.directive.d.ts +2 -1
  13. package/core/module.d.ts +21 -21
  14. package/core/pipes/minimum-format.pipe.d.ts +1 -1
  15. package/core/pipes/time.pipe.d.ts +1 -1
  16. package/core/services/context.service.d.ts +3 -4
  17. package/core/services/feature-gate.service.d.ts +1 -0
  18. package/core/services/workspace-helper.service.d.ts +3 -1
  19. package/core/types/commons.d.ts +2 -0
  20. package/core/types/k8s/crd.d.ts +64 -0
  21. package/core/types/resource-definitions.d.ts +3 -3
  22. package/core/utils/cache-store.d.ts +15 -13
  23. package/core/utils/common.d.ts +1 -2
  24. package/core/utils/public-api.d.ts +1 -0
  25. package/core/utils/router.d.ts +3 -0
  26. package/editable/editable.component.d.ts +23 -0
  27. package/editable/editable.directive.d.ts +9 -0
  28. package/editable/editable.type.d.ts +5 -0
  29. package/editable/public-api.d.ts +2 -0
  30. package/effect-directive/event.directive.d.ts +36 -0
  31. package/esm2022/api/auth-api.service.mjs +34 -0
  32. package/esm2022/api/platform-ui.service.mjs +2 -1
  33. package/esm2022/api/public-api.mjs +2 -1
  34. package/esm2022/array-form-table/form/component.mjs +30 -15
  35. package/esm2022/authorization/guard.service.mjs +2 -2
  36. package/esm2022/authorization/interceptor.service.mjs +31 -24
  37. package/esm2022/authorization/public-api.mjs +2 -1
  38. package/esm2022/authorization/session-manage.service.mjs +11 -24
  39. package/esm2022/authorization/state.service.mjs +94 -100
  40. package/esm2022/authorization/storage-token.mjs +12 -88
  41. package/esm2022/core/constants/patterns.mjs +6 -4
  42. package/esm2022/core/directives/feature-gate.directive.mjs +7 -4
  43. package/esm2022/core/guards/feature.guard.mjs +3 -2
  44. package/esm2022/core/module.mjs +7 -12
  45. package/esm2022/core/pipes/minimum-format.pipe.mjs +4 -3
  46. package/esm2022/core/pipes/time.pipe.mjs +3 -3
  47. package/esm2022/core/services/context.service.mjs +9 -12
  48. package/esm2022/core/services/feature-gate.service.mjs +4 -3
  49. package/esm2022/core/services/workspace-helper.service.mjs +7 -1
  50. package/esm2022/core/types/commons.mjs +1 -1
  51. package/esm2022/core/types/k8s/crd.mjs +8 -1
  52. package/esm2022/core/types/resource-definitions.mjs +2 -2
  53. package/esm2022/core/utils/cache-store.mjs +51 -29
  54. package/esm2022/core/utils/common.mjs +8 -10
  55. package/esm2022/core/utils/public-api.mjs +2 -1
  56. package/esm2022/core/utils/router.mjs +20 -0
  57. package/esm2022/editable/editable.component.mjs +136 -0
  58. package/esm2022/editable/editable.directive.mjs +25 -0
  59. package/esm2022/editable/editable.type.mjs +6 -0
  60. package/esm2022/editable/public-api.mjs +3 -0
  61. package/esm2022/effect-directive/event.directive.mjs +79 -4
  62. package/esm2022/exec/terminal/component.mjs +12 -19
  63. package/esm2022/k8s-resource-list/footer/component.mjs +63 -25
  64. package/esm2022/k8s-resource-list/k8s-resource-list.module.mjs +18 -6
  65. package/esm2022/k8s-resource-list/utils.mjs +7 -3
  66. package/esm2022/multi-search/multi-search-tags/component.mjs +2 -2
  67. package/esm2022/multi-search/types.mjs +1 -1
  68. package/esm2022/page-scaffold/navigation/breadcrumb/breadcrumb.component.mjs +55 -53
  69. package/esm2022/page-scaffold/navigation/navconfig-loader/navconfig-loader.service.mjs +4 -4
  70. package/esm2022/page-scaffold/page-header/account-menu/component/component.mjs +3 -8
  71. package/esm2022/page-scaffold/page-header/common-layout/product-select/component.mjs +6 -10
  72. package/esm2022/pie-derivative-chart/pie-derivative-chart.module.mjs +6 -6
  73. package/esm2022/pie-derivative-chart/radial-bar/radial-bar-chart.component.mjs +51 -40
  74. package/esm2022/pie-derivative-chart/units.mjs +14 -0
  75. package/esm2022/pod-status/component.mjs +34 -55
  76. package/esm2022/public-api.mjs +2 -1
  77. package/esm2022/searchable-selector/component.mjs +2 -2
  78. package/esm2022/table/component.mjs +47 -30
  79. package/esm2022/table/module.mjs +1 -1
  80. package/esm2022/view-chart/view-chart.component.mjs +5 -8
  81. package/esm2022/widget/public-api.mjs +2 -1
  82. package/esm2022/widget/resource-label/component.mjs +131 -0
  83. package/esm2022/widget/zero-state/zero-state.component.mjs +36 -21
  84. package/exec/terminal/component.d.ts +1 -3
  85. package/k8s-resource-list/footer/component.d.ts +8 -1
  86. package/k8s-resource-list/k8s-resource-list.module.d.ts +1 -1
  87. package/multi-search/types.d.ts +1 -0
  88. package/package.json +1 -1
  89. package/page-scaffold/page-header/common-layout/product-select/component.d.ts +1 -3
  90. package/pie-derivative-chart/radial-bar/radial-bar-chart.component.d.ts +4 -0
  91. package/pie-derivative-chart/units.d.ts +2 -0
  92. package/pod-status/component.d.ts +1 -3
  93. package/public-api.d.ts +1 -0
  94. package/styles/global.scss +1 -0
  95. package/styles/tailwind-preset.scss +1 -1
  96. package/table/component.d.ts +4 -3
  97. package/widget/public-api.d.ts +1 -0
  98. package/widget/resource-label/component.d.ts +25 -0
  99. package/widget/zero-state/zero-state.component.d.ts +4 -1
@@ -2,7 +2,7 @@ import { ChangeDetectionStrategy, Component, Input, } from '@angular/core';
2
2
  import { Router } from '@angular/router';
3
3
  import { get } from 'lodash-es';
4
4
  import { combineLatest, map, switchMap } from 'rxjs';
5
- import { AuthorizationStateService } from '../../../../authorization/public-api';
5
+ import { redirectSSOEntry } from '../../../../authorization/state.service';
6
6
  import { publishRef, } from '../../../../core/public-api';
7
7
  import { K8sPermissionService } from '../../../../permission/k8s-permission.service';
8
8
  import { ProductEntryName } from '../context.service';
@@ -13,7 +13,6 @@ import * as i1 from "../store.service";
13
13
  import * as i2 from "@angular/router";
14
14
  import * as i3 from "../../../../permission/k8s-permission.service";
15
15
  import * as i4 from "./service";
16
- import * as i5 from "../../../../authorization/public-api";
17
16
  const _c0 = a0 => ({ "acl-product-select--disabled": a0 });
18
17
  const _c1 = a0 => ({ "menu__item--active": a0 });
19
18
  const _c2 = () => ({});
@@ -155,12 +154,11 @@ export const PRODUCT_ICON_MAP = {
155
154
  'console-cec': 'cloud_edge_collaboration',
156
155
  };
157
156
  export class ProductSelectComponent {
158
- constructor(store, router, k8sPermission, productSelectService, authState) {
157
+ constructor(store, router, k8sPermission, productSelectService) {
159
158
  this.store = store;
160
159
  this.router = router;
161
160
  this.k8sPermission = k8sPermission;
162
161
  this.productSelectService = productSelectService;
163
- this.authState = authState;
164
162
  this.platformPath = '/console-platform';
165
163
  this.PRODUCT_ICON_MAP = PRODUCT_ICON_MAP;
166
164
  this.allProducts$ = combineLatest([
@@ -188,9 +186,7 @@ export class ProductSelectComponent {
188
186
  this.isPortal = this.router.url.startsWith('/portal');
189
187
  }
190
188
  jump(entrypoint, ssoEnabled, target = '_self') {
191
- window.open(ssoEnabled
192
- ? `${entrypoint}?id_token=${this.authState.stateSnapshot.idToken}`
193
- : entrypoint, target);
189
+ window.open(ssoEnabled ? redirectSSOEntry(entrypoint) : entrypoint, target);
194
190
  }
195
191
  navigateToPortal(event) {
196
192
  event.stopPropagation();
@@ -231,7 +227,7 @@ export class ProductSelectComponent {
231
227
  isPortalProduct(item) {
232
228
  return item.metadata.name === 'console-portal';
233
229
  }
234
- static { this.ɵfac = function ProductSelectComponent_Factory(t) { return new (t || ProductSelectComponent)(i0.ɵɵdirectiveInject(i1.CommonLayoutStoreService), i0.ɵɵdirectiveInject(i2.Router), i0.ɵɵdirectiveInject(i3.K8sPermissionService), i0.ɵɵdirectiveInject(i4.ProductSelectService), i0.ɵɵdirectiveInject(i5.AuthorizationStateService)); }; }
230
+ static { this.ɵfac = function ProductSelectComponent_Factory(t) { return new (t || ProductSelectComponent)(i0.ɵɵdirectiveInject(i1.CommonLayoutStoreService), i0.ɵɵdirectiveInject(i2.Router), i0.ɵɵdirectiveInject(i3.K8sPermissionService), i0.ɵɵdirectiveInject(i4.ProductSelectService)); }; }
235
231
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ProductSelectComponent, selectors: [["acl-product-select"]], inputs: { platformPath: "platformPath", current: "current", title: "title" }, decls: 17, vars: 36, consts: [["menu", ""], ["loading", ""], ["logo", ""], ["auiTooltipType", "plain", "auiTooltipTrigger", "click", "auiTooltipPosition", "bottom start", "auiTooltipClass", "aui-product-select-tooltip", 1, "acl-product-select", 3, "auiTooltip", "auiTooltipHideOnClick", "disabled", "title", "ngClass"], ["class", "acl-product-select__title", 4, "ngIf"], ["icon", "menu_dot_s", "size", "16px", "auiTooltipPosition", "bottom start", 3, "auiTooltip", "auiTooltipDisabled"], [1, "acl-product-select__title"], [1, "menu"], [4, "ngIf", "ngIfElse"], ["class", "portal", 3, "ngClass", 4, "ngIf"], ["class", "menu__item", 3, "ngClass", "click", 4, "ngFor", "ngForOf", "ngForTrackBy"], [1, "menu__item", 3, "click", "ngClass"], [1, "menu__item-icon"], [1, "menu__item-info", "tw-line-clamp-2"], ["class", "check-triangle-badge", "icon", "check", 4, "ngIf"], ["size", "50", 1, "acl-colorful-icon", 3, "ngClass", "icon"], [1, "default", 3, "src"], ["icon", "check", 1, "check-triangle-badge"], [1, "portal", 3, "ngClass"], [1, "portal__item", 3, "click"], ["icon", "home_s"], [2, "height", "148px", 3, "loading"]], template: function ProductSelectComponent_Template(rf, ctx) { if (rf & 1) {
236
232
  i0.ɵɵelementStart(0, "button", 3);
237
233
  i0.ɵɵpipe(1, "async");
@@ -260,7 +256,7 @@ export class ProductSelectComponent {
260
256
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ProductSelectComponent, [{
261
257
  type: Component,
262
258
  args: [{ selector: 'acl-product-select', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n class=\"acl-product-select\"\n [auiTooltip]=\"menu\"\n auiTooltipType=\"plain\"\n auiTooltipTrigger=\"click\"\n auiTooltipPosition=\"bottom start\"\n auiTooltipClass=\"aui-product-select-tooltip\"\n [auiTooltipHideOnClick]=\"true\"\n [disabled]=\"disabled$ | async\"\n [title]=\"\n (disabled$ | async)\n ? ''\n : (allProducts$ | async | pure: getProductTitle:title:current | translate)\n \"\n [ngClass]=\"{ 'acl-product-select--disabled': disabled$ | async }\"\n>\n <span\n *ngIf=\"\n allProducts$ | async | pure: getProductTitle:title:current as productTitle\n \"\n class=\"acl-product-select__title\"\n >\n {{ productTitle | translate }}\n </span>\n <aui-icon\n icon=\"menu_dot_s\"\n size=\"16px\"\n [auiTooltip]=\"'no_product_and_contact_admin' | translate\"\n [auiTooltipDisabled]=\"!(disabled$ | async)\"\n auiTooltipPosition=\"bottom start\"\n ></aui-icon>\n</button>\n<ng-template #menu>\n <div class=\"menu\">\n <ng-container *ngIf=\"selectableProducts$ | async as products; else loading\">\n <div\n class=\"menu__item\"\n [ngClass]=\"{\n 'menu__item--active': item | pure: isProductActive:current\n }\"\n *ngFor=\"let item of products; trackBy: trackFn\"\n (click)=\"navigateToProduct(item, $event)\"\n >\n <div class=\"menu__item-icon\">\n <ng-container\n *ngIf=\"\n item.spec.packType !== 'Integrated' && !item.spec.logo;\n else logo\n \"\n >\n <aui-icon\n class=\"acl-colorful-icon\"\n [ngClass]=\"{\n highlight: item | pure: isProductActive:current\n }\"\n size=\"50\"\n [icon]=\"'bicolor:' + PRODUCT_ICON_MAP[item.metadata.name]\"\n ></aui-icon>\n </ng-container>\n <ng-template #logo>\n <img\n [src]=\"\n (item.spec.logo | aclImageHeader) ||\n 'images/product-default-logo.png' | aclSafe: 'url'\n \"\n class=\"default\"\n />\n </ng-template>\n </div>\n <div class=\"menu__item-info tw-line-clamp-2\">\n {{ item.spec.displayName | translate: {}:true }}\n </div>\n <aui-icon\n *ngIf=\"item | pure: isProductActive:current\"\n class=\"check-triangle-badge\"\n icon=\"check\"\n ></aui-icon>\n </div>\n </ng-container>\n </div>\n <div\n *ngIf=\"portalProduct$ | async as portalMenu\"\n class=\"portal\"\n [ngClass]=\"{ 'portal--active': isPortal }\"\n >\n <div\n class=\"portal__item\"\n (click)=\"navigateToPortal($event)\"\n >\n <aui-icon icon=\"home_s\"></aui-icon>\n {{ portalMenu.spec.displayName | translate: {}:true }}\n </div>\n </div>\n</ng-template>\n\n<ng-template #loading>\n <acl-loading-mask\n style=\"height: 148px\"\n [loading]=\"true\"\n ></acl-loading-mask>\n</ng-template>\n", styles: ["::ng-deep .aui-product-select-tooltip.aui-tooltip{margin-top:calc((var(--acl-page-header-height) - 32px) / 2 + 4px);background-color:rgb(var(--aui-color-n-10));padding:20px 20px 12px;border-radius:var(--aui-border-radius-l);max-width:840px}.portal{display:flex;justify-content:flex-end}.portal__item{display:flex;align-items:center;height:26px;padding:0 8px;font-size:var(--aui-font-size-l);font-weight:var(--aui-font-weight-bolder);color:rgb(var(--aui-color-primary));border-radius:var(--aui-border-radius-m);cursor:pointer}.portal__item:hover{color:rgb(var(--aui-color-p-1))}.portal aui-icon{font-size:var(--aui-icon-size-l);margin-right:8px}.acl-product-select{width:100%;min-height:32px;border-radius:2px;border:none;background:none;padding:4px 8px;cursor:pointer;outline:none;display:flex;align-items:center}.acl-product-select__title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.acl-product-select--disabled{opacity:.3;cursor:default}.acl-product-select span{margin-right:8px;height:24px;line-height:24px;font-size:18px;font-weight:var(--aui-font-weight-bolder);color:var(--acl-page-header-title-color);white-space:nowrap;word-break:keep-all}.acl-product-select aui-icon{height:16px;color:rgb(var(--aui-color-n-4))}.acl-product-select.isActive,.acl-product-select:not(.acl-product-select--disabled):hover{background-color:rgb(var(--aui-color-primary))}.acl-product-select.isActive aui-icon,.acl-product-select.isActive span,.acl-product-select:not(.acl-product-select--disabled):hover aui-icon,.acl-product-select:not(.acl-product-select--disabled):hover span{color:#fff}::ng-deep .acl-product-select__menu .aui-menu{padding:0;max-width:unset}.menu{display:flex;flex-wrap:wrap;width:calc(100% + 16px)}.menu__item{width:120px;height:148px;display:flex;position:relative;flex-direction:column;border-radius:4px;padding:20px 8px 12px;margin-right:16px;margin-bottom:12px;align-items:center;cursor:pointer;background-color:rgb(var(--aui-color-n-9))}.menu__item:hover{border-color:rgb(var(--aui-color-primary));box-shadow:0 0 8px rgba(var(--aui-color-primary),.5)}.menu__item:not(.menu__item--active){position:relative}.menu__item:not(.menu__item--active):after{position:absolute;content:\"\";top:0;right:0;bottom:0;left:0;border:1px solid rgb(var(--aui-color-n-7));border-radius:4px;pointer-events:none;transition:all .2s ease-in-out}.menu__item:not(.menu__item--active).disabled{background-color:rgb(var(--aui-color-n-8));color:rgb(var(--aui-color-n-6));cursor:not-allowed}.menu__item:not(.menu__item--active):not(.disabled):hover:after{top:-4px;right:-4px;bottom:-4px;left:-4px;border-color:rgb(var(--aui-color-primary));box-shadow:inset 0 0 0 4px rgb(var(--aui-color-n-10)),0 0 8px rgba(var(--aui-color-primary),.5)}.menu__item:not(.menu__item--active):not(.disabled):active:after{top:0;right:0;bottom:0;left:0;box-shadow:0 0 4px rgba(var(--aui-color-primary),.5)}.menu__item:not(.menu__item--active):hover:after{box-shadow:inset 0 0 0 4px rgb(var(--aui-color-n-9)),0 0 8px rgba(var(--aui-color-primary),.5)!important}.menu__item-icon{height:60px;width:60px;display:flex;justify-content:center;align-items:center;color:rgb(var(--aui-color-primary));margin-bottom:12px}.menu__item-icon img{display:block;width:50px}.menu__item-icon img.activated{display:none}.menu__item-info{min-width:0;height:44px;line-height:22px;font-size:16px;font-weight:var(--aui-font-weight-bolder);color:rgb(var(--aui-color-n-1));text-align:center;overflow:hidden;overflow-wrap:anywhere}.menu__item--active{border:1px solid rgb(var(--aui-color-n-7));border-radius:var(--aui-border-radius-l);background-color:rgb(var(--aui-color-primary));border-color:rgb(var(--aui-color-primary));color:#fff;cursor:default;position:relative}.menu__item--active:hover{box-shadow:none}.menu__item--active .menu__item-info{color:#fff;width:90px;height:40px}acl-loading-mask{height:148px;width:800px;display:flex;align-items:center;justify-content:center}\n"] }]
263
- }], () => [{ type: i1.CommonLayoutStoreService }, { type: i2.Router }, { type: i3.K8sPermissionService }, { type: i4.ProductSelectService }, { type: i5.AuthorizationStateService }], { platformPath: [{
259
+ }], () => [{ type: i1.CommonLayoutStoreService }, { type: i2.Router }, { type: i3.K8sPermissionService }, { type: i4.ProductSelectService }], { platformPath: [{
264
260
  type: Input
265
261
  }], current: [{
266
262
  type: Input
@@ -268,4 +264,4 @@ export class ProductSelectComponent {
268
264
  type: Input
269
265
  }] }); })();
270
266
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ProductSelectComponent, { className: "ProductSelectComponent" }); })();
271
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL3BhZ2Utc2NhZmZvbGQvcGFnZS1oZWFkZXIvY29tbW9uLWxheW91dC9wcm9kdWN0LXNlbGVjdC9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvcGFnZS1zY2FmZm9sZC9wYWdlLWhlYWRlci9jb21tb24tbGF5b3V0L3Byb2R1Y3Qtc2VsZWN0L2NvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssR0FFTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoQyxPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFckQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDakYsT0FBTyxFQUdMLFVBQVUsR0FDWCxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTVELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7Ozs7Ozs7Ozs7OztJQ0ovQywrQkFLQztJQUNDLFlBQ0Y7O0lBQUEsaUJBQU87OztJQURMLGNBQ0Y7SUFERSxzRUFDRjs7O0lBcUJRLDZCQUtDO0lBQ0MsK0JBT1k7Ozs7OztJQUxWLGNBRUU7SUFFRixBQUpB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eSxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBnZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgbWFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQXV0aG9yaXphdGlvblN0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2F1dGhvcml6YXRpb24vcHVibGljLWFwaSc7XG5pbXBvcnQge1xuICBTdHJpbmdNYXAsXG4gIFByb2R1Y3RFbnRyeSxcbiAgcHVibGlzaFJlZixcbn0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9wdWJsaWMtYXBpJztcbmltcG9ydCB7IEs4c1Blcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vcGVybWlzc2lvbi9rOHMtcGVybWlzc2lvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2R1Y3RFbnRyeU5hbWUgfSBmcm9tICcuLi9jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tbW9uTGF5b3V0U3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi4vc3RvcmUuc2VydmljZSc7XG5cbmltcG9ydCB7IFByb2R1Y3RTZWxlY3RTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlJztcblxuY29uc3QgQURNSU5fVklFV19NQVA6IHtcbiAgW2tleTogc3RyaW5nXToge1xuICAgIHZpZXc6IHN0cmluZztcbiAgICBocmVmOiBzdHJpbmc7XG4gIH07XG59ID0ge1xuICAnY29uc29sZS1wbGF0Zm9ybSc6IHtcbiAgICBocmVmOiAnL21hbmFnZS1wbGF0Zm9ybScsXG4gICAgdmlldzogJ3BsYXRmb3JtdmlldycsXG4gIH0sXG4gICdjb25zb2xlLXByb2plY3QnOiB7XG4gICAgaHJlZjogJy9ob21lL3Byb2plY3QnLFxuICAgIHZpZXc6ICdwcm9qZWN0dmlldycsXG4gIH0sXG4gICdjb25zb2xlLXNlY3VyaXR5Jzoge1xuICAgIGhyZWY6ICcvY29udGFpbmVyLXNlY3VyaXR5L2hvbWUnLFxuICAgIHZpZXc6ICdjb250YWluZXJzZWN1cml0eXZpZXcnLFxuICB9LFxufTtcblxuY29uc3QgVklFVyA9IHtcbiAgdHlwZTogJ3ZpZXdzJyxcbiAgYXBpR3JvdXA6ICdhdXRoLmFsYXVkYS5pbycsXG59O1xuXG5jb25zdCBQUkVGSVggPSAnY29uc29sZS0nO1xuXG5leHBvcnQgY29uc3QgUFJPRFVDVF9JQ09OX01BUDogU3RyaW5nTWFwID0ge1xuICAnY29uc29sZS1hY3AnOiAnYWNwJyxcbiAgJ2NvbnNvbGUtYXNtJzogJ2FzbScsXG4gICdjb25zb2xlLWRldm9wcyc6ICdkZXZvcHMnLFxuICAvLyBjb25zb2xlLWUtYWFtIHByZWZpeCDkuLrkuoblhbzlrrnpu5jorqTmjpLluo/vvIznrYnlkI7nu63mjpLluo/mlrnmoYjlh7rmnaXlj6/ku6XmlLnmiJBjb25zb2xlLWFhbVxuICAnY29uc29sZS1lLWFhbSc6ICdhcHBfc3RvcmUnLFxuICAnY29uc29sZS1zZWN1cml0eSc6ICdidWdfc2VhcmNoJyxcbiAgJ2NvbnNvbGUtcGxhdGZvcm0nOiAncGxhdGZvcm1fbWFuYWdlbWVudCcsXG4gICdjb25zb2xlLXByb2plY3QnOiAncHJvamVjdF9tYW5hZ2VtZW50JyxcbiAgJ2NvbnNvbGUtZGF0YXNlcnZpY2VzJzogJ2RhdGFfc2VydmljZXMnLFxuICAnY29uc29sZS1jZWMnOiAnY2xvdWRfZWRnZV9jb2xsYWJvcmF0aW9uJyxcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjbC1wcm9kdWN0LXNlbGVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9kdWN0U2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KClcbiAgcGxhdGZvcm1QYXRoID0gJy9jb25zb2xlLXBsYXRmb3JtJztcblxuICBASW5wdXQoKVxuICBjdXJyZW50PzogUHJvZHVjdEVudHJ5TmFtZTtcblxuICBASW5wdXQoKVxuICB0aXRsZT86IHN0cmluZztcblxuICBQUk9EVUNUX0lDT05fTUFQID0gUFJPRFVDVF9JQ09OX01BUDtcblxuICBhbGxQcm9kdWN0cyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLnByb2R1Y3RTZWxlY3RTZXJ2aWNlLnJlbG9hZCQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnN0b3JlLnNlbGVjdEFsbFByb2R1Y3RzKCkpLFxuICAgICksXG4gICAgdGhpcy5rOHNQZXJtaXNzaW9uLmlzQWxsb3dlZCh7XG4gICAgICB0eXBlOiBWSUVXLFxuICAgICAgbmFtZTogT2JqZWN0LnZhbHVlcyhBRE1JTl9WSUVXX01BUCkubWFwKGl0ZW0gPT4gaXRlbS52aWV3KSxcbiAgICB9KSxcbiAgXSkucGlwZShcbiAgICBtYXAoKFtwcm9kdWN0cywgdmlld3NdKSA9PiB7XG4gICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoQURNSU5fVklFV19NQVApO1xuICAgICAgY29uc3QgcGVybWlzc2lvbk1hcDoge1xuICAgICAgICBba2V5OiBzdHJpbmddOiBib29sZWFuO1xuICAgICAgfSA9IHt9O1xuICAgICAga2V5cy5mb3JFYWNoKChrZXksIGluZGV4KSA9PiAocGVybWlzc2lvbk1hcFtrZXldID0gdmlld3NbaW5kZXhdKSk7XG4gICAgICByZXR1cm4gcHJvZHVjdHMuZmlsdGVyKHAgPT5cbiAgICAgICAga2V5cy5pbmNsdWRlcyhwLm1ldGFkYXRhLm5hbWUpID8gcGVybWlzc2lvbk1hcFtwLm1ldGFkYXRhLm5hbWVdIDogdHJ1ZSxcbiAgICAgICk7XG4gICAgfSksXG4gICAgcHVibGlzaFJlZigpLFxuICApO1xuXG4gIHNlbGVjdGFibGVQcm9kdWN0cyQgPSB0aGlzLmFsbFByb2R1Y3RzJC5waXBlKFxuICAgIG1hcChwcm9kdWN0cyA9PlxuICAgICAgKHByb2R1Y3RzIHx8IFtdKS5maWx0ZXIoXG4gICAgICAgIHByb2R1Y3QgPT5cbiAgICAgICAgICAhdGhpcy5pc1BvcnRhbFByb2R1Y3QocHJvZHVjdCkgJiZcbiAgICAgICAgICAoIXByb2R1Y3Quc3RhdHVzIHx8IHByb2R1Y3Quc3RhdHVzLmhpZGRlbk9uUG9ydGFsICE9PSB0cnVlKSxcbiAgICAgICksXG4gICAgKSxcbiAgICBwdWJsaXNoUmVmKCksXG4gICk7XG5cbiAgcG9ydGFsUHJvZHVjdCQgPSB0aGlzLmFsbFByb2R1Y3RzJC5waXBlKFxuICAgIG1hcChyZXMgPT4gcmVzLmZpbmQocCA9PiB0aGlzLmlzUG9ydGFsUHJvZHVjdChwKSkpLFxuICAgIHB1Ymxpc2hSZWYoKSxcbiAgKTtcblxuICBkaXNhYmxlZCQgPSB0aGlzLnNlbGVjdGFibGVQcm9kdWN0cyQucGlwZShcbiAgICBtYXAocHJvZHVjdHMgPT4gIXByb2R1Y3RzLmxlbmd0aCksXG4gICAgcHVibGlzaFJlZigpLFxuICApO1xuXG4gIGlzUG9ydGFsID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yZTogQ29tbW9uTGF5b3V0U3RvcmVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBrOHNQZXJtaXNzaW9uOiBLOHNQZXJtaXNzaW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb2R1Y3RTZWxlY3RTZXJ2aWNlOiBQcm9kdWN0U2VsZWN0U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGF1dGhTdGF0ZTogQXV0aG9yaXphdGlvblN0YXRlU2VydmljZSxcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaXNQb3J0YWwgPSB0aGlzLnJvdXRlci51cmwuc3RhcnRzV2l0aCgnL3BvcnRhbCcpO1xuICB9XG5cbiAganVtcChlbnRyeXBvaW50OiBzdHJpbmcsIHNzb0VuYWJsZWQ6IGJvb2xlYW4sIHRhcmdldCA9ICdfc2VsZicpIHtcbiAgICB3aW5kb3cub3BlbihcbiAgICAgIHNzb0VuYWJsZWRcbiAgICAgICAgPyBgJHtlbnRyeXBvaW50fT9pZF90b2tlbj0ke3RoaXMuYXV0aFN0YXRlLnN0YXRlU25hcHNob3QuaWRUb2tlbn1gXG4gICAgICAgIDogZW50cnlwb2ludCxcbiAgICAgIHRhcmdldCxcbiAgICApO1xuICB9XG5cbiAgbmF2aWdhdGVUb1BvcnRhbChldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgd2luZG93Lm9wZW4oJy9jb25zb2xlLXBvcnRhbCcsICdfc2VsZicpO1xuICB9XG5cbiAgbmF2aWdhdGVUb1Byb2R1Y3QoaXRlbTogUHJvZHVjdEVudHJ5LCBldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmICh0aGlzLmlzUHJvZHVjdEFjdGl2ZShpdGVtLCB0aGlzLmN1cnJlbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpdGVtLnNwZWMucGFja1R5cGUgPT09ICdBZG1pblBhZ2UnKSB7XG4gICAgICB0aGlzLm5hdmlnYXRlVG9QbGF0Zm9ybShpdGVtKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGl0ZW0uc3BlYy5wYWNrVHlwZSA9PT0gJ0J1aWxkSW4nKSB7XG4gICAgICB0aGlzLmp1bXAoaXRlbS5zcGVjLmVudHJ5cG9pbnQsIGZhbHNlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGl0ZW0uc3BlYy5wYWNrVHlwZSA9PT0gJ0ludGVncmF0ZWQnKSB7XG4gICAgICB0aGlzLmp1bXAoaXRlbS5zcGVjLmVudHJ5cG9pbnQsIGl0ZW0uc3BlYy5zc29FbmFibGVkLCAnX2JsYW5rJyk7XG4gICAgfVxuICB9XG5cbiAgdHJhY2tGbiA9IChfOiBudW1iZXIsIGl0ZW06IFByb2R1Y3RFbnRyeSkgPT4gaXRlbS5tZXRhZGF0YS5uYW1lO1xuXG4gIG5hdmlnYXRlVG9QbGF0Zm9ybShpdGVtOiBQcm9kdWN0RW50cnkpIHtcbiAgICBjb25zdCBocmVmID0gQURNSU5fVklFV19NQVBbaXRlbS5tZXRhZGF0YS5uYW1lXS5ocmVmO1xuICAgIGlmICh0aGlzLnBsYXRmb3JtUGF0aCkge1xuICAgICAgd2luZG93Lm9wZW4oYCR7dGhpcy5wbGF0Zm9ybVBhdGh9JHtocmVmfWAsICdfc2VsZicpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbaHJlZl0pO1xuICAgIH1cbiAgfVxuXG4gIGlzUHJvZHVjdEFjdGl2ZShpdGVtOiBQcm9kdWN0RW50cnksIGN1cnJlbnQ6IFByb2R1Y3RFbnRyeU5hbWUpIHtcbiAgICByZXR1cm4gKFxuICAgICAgY3VycmVudCAmJlxuICAgICAgaXRlbS5tZXRhZGF0YS5uYW1lID09PVxuICAgICAgICAoY3VycmVudC5zdGFydHNXaXRoKFBSRUZJWCkgPyBjdXJyZW50IDogUFJFRklYICsgY3VycmVudClcbiAgICApO1xuICB9XG5cbiAgaXNQb3J0YWxQcm9kdWN0KGl0ZW06IFByb2R1Y3RFbnRyeSkge1xuICAgIHJldHVybiBpdGVtLm1ldGFkYXRhLm5hbWUgPT09ICdjb25zb2xlLXBvcnRhbCc7XG4gIH1cblxuICBnZXRQcm9kdWN0VGl0bGUgPSAoXG4gICAgcHJvZHVjdHM6IFByb2R1Y3RFbnRyeVtdLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgY3VycmVudDogUHJvZHVjdEVudHJ5TmFtZSxcbiAgKSA9PlxuICAgIHRpdGxlIHx8XG4gICAgZ2V0KFxuICAgICAgKHByb2R1Y3RzIHx8IFtdKS5maW5kKHAgPT4gdGhpcy5pc1Byb2R1Y3RBY3RpdmUocCwgY3VycmVudCkpLFxuICAgICAgWydzcGVjJywgJ2Rpc3BsYXlOYW1lJ10sXG4gICAgKTtcbn1cbiIsIjxidXR0b25cbiAgY2xhc3M9XCJhY2wtcHJvZHVjdC1zZWxlY3RcIlxuICBbYXVpVG9vbHRpcF09XCJtZW51XCJcbiAgYXVpVG9vbHRpcFR5cGU9XCJwbGFpblwiXG4gIGF1aVRvb2x0aXBUcmlnZ2VyPVwiY2xpY2tcIlxuICBhdWlUb29sdGlwUG9zaXRpb249XCJib3R0b20gc3RhcnRcIlxuICBhdWlUb29sdGlwQ2xhc3M9XCJhdWktcHJvZHVjdC1zZWxlY3QtdG9vbHRpcFwiXG4gIFthdWlUb29sdGlwSGlkZU9uQ2xpY2tdPVwidHJ1ZVwiXG4gIFtkaXNhYmxlZF09XCJkaXNhYmxlZCQgfCBhc3luY1wiXG4gIFt0aXRsZV09XCJcbiAgICAoZGlzYWJsZWQkIHwgYXN5bmMpXG4gICAgICA/ICcnXG4gICAgICA6IChhbGxQcm9kdWN0cyQgfCBhc3luYyB8IHB1cmU6IGdldFByb2R1Y3RUaXRsZTp0aXRsZTpjdXJyZW50IHwgdHJhbnNsYXRlKVxuICBcIlxuICBbbmdDbGFzc109XCJ7ICdhY2wtcHJvZHVjdC1zZWxlY3QtLWRpc2FibGVkJzogZGlzYWJsZWQkIHwgYXN5bmMgfVwiXG4+XG4gIDxzcGFuXG4gICAgKm5nSWY9XCJcbiAgICAgIGFsbFByb2R1Y3RzJCB8IGFzeW5jIHwgcHVyZTogZ2V0UHJvZHVjdFRpdGxlOnRpdGxlOmN1cnJlbnQgYXMgcHJvZHVjdFRpdGxlXG4gICAgXCJcbiAgICBjbGFzcz1cImFjbC1wcm9kdWN0LXNlbGVjdF9fdGl0bGVcIlxuICA+XG4gICAge3sgcHJvZHVjdFRpdGxlIHwgdHJhbnNsYXRlIH19XG4gIDwvc3Bhbj5cbiAgPGF1aS1pY29uXG4gICAgaWNvbj1cIm1lbnVfZG90X3NcIlxuICAgIHNpemU9XCIxNnB4XCJcbiAgICBbYXVpVG9vbHRpcF09XCInbm9fcHJvZHVjdF9hbmRfY29udGFjdF9hZG1pbicgfCB0cmFuc2xhdGVcIlxuICAgIFthdWlUb29sdGlwRGlzYWJsZWRdPVwiIShkaXNhYmxlZCQgfCBhc3luYylcIlxuICAgIGF1aVRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbSBzdGFydFwiXG4gID48L2F1aS1pY29uPlxuPC9idXR0b24+XG48bmctdGVtcGxhdGUgI21lbnU+XG4gIDxkaXYgY2xhc3M9XCJtZW51XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGFibGVQcm9kdWN0cyQgfCBhc3luYyBhcyBwcm9kdWN0czsgZWxzZSBsb2FkaW5nXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwibWVudV9faXRlbVwiXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAnbWVudV9faXRlbS0tYWN0aXZlJzogaXRlbSB8IHB1cmU6IGlzUHJvZHVjdEFjdGl2ZTpjdXJyZW50XG4gICAgICAgIH1cIlxuICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBwcm9kdWN0czsgdHJhY2tCeTogdHJhY2tGblwiXG4gICAgICAgIChjbGljayk9XCJuYXZpZ2F0ZVRvUHJvZHVjdChpdGVtLCAkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnVfX2l0ZW0taWNvblwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIGl0ZW0uc3BlYy5wYWNrVHlwZSAhPT0gJ0ludGVncmF0ZWQnICYmICFpdGVtLnNwZWMubG9nbztcbiAgICAgICAgICAgICAgZWxzZSBsb2dvXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxhdWktaWNvblxuICAgICAgICAgICAgICBjbGFzcz1cImFjbC1jb2xvcmZ1bC1pY29uXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgIGhpZ2hsaWdodDogaXRlbSB8IHB1cmU6IGlzUHJvZHVjdEFjdGl2ZTpjdXJyZW50XG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICBzaXplPVwiNTBcIlxuICAgICAgICAgICAgICBbaWNvbl09XCInYmljb2xvcjonICsgUFJPRFVDVF9JQ09OX01BUFtpdGVtLm1ldGFkYXRhLm5hbWVdXCJcbiAgICAgICAgICAgID48L2F1aS1pY29uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbG9nbz5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgW3NyY109XCJcbiAgICAgICAgICAgICAgICAoaXRlbS5zcGVjLmxvZ28gfCBhY2xJbWFnZUhlYWRlcikgfHxcbiAgICAgICAgICAgICAgICAgICdpbWFnZXMvcHJvZHVjdC1kZWZhdWx0LWxvZ28ucG5nJyB8IGFjbFNhZmU6ICd1cmwnXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZGVmYXVsdFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWVudV9faXRlbS1pbmZvIHR3LWxpbmUtY2xhbXAtMlwiPlxuICAgICAgICAgIHt7IGl0ZW0uc3BlYy5kaXNwbGF5TmFtZSB8IHRyYW5zbGF0ZToge306dHJ1ZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGF1aS1pY29uXG4gICAgICAgICAgKm5nSWY9XCJpdGVtIHwgcHVyZTogaXNQcm9kdWN0QWN0aXZlOmN1cnJlbnRcIlxuICAgICAgICAgIGNsYXNzPVwiY2hlY2stdHJpYW5nbGUtYmFkZ2VcIlxuICAgICAgICAgIGljb249XCJjaGVja1wiXG4gICAgICAgID48L2F1aS1pY29uPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgKm5nSWY9XCJwb3J0YWxQcm9kdWN0JCB8IGFzeW5jIGFzIHBvcnRhbE1lbnVcIlxuICAgIGNsYXNzPVwicG9ydGFsXCJcbiAgICBbbmdDbGFzc109XCJ7ICdwb3J0YWwtLWFjdGl2ZSc6IGlzUG9ydGFsIH1cIlxuICA+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJwb3J0YWxfX2l0ZW1cIlxuICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlVG9Qb3J0YWwoJGV2ZW50KVwiXG4gICAgPlxuICAgICAgPGF1aS1pY29uIGljb249XCJob21lX3NcIj48L2F1aS1pY29uPlxuICAgICAge3sgcG9ydGFsTWVudS5zcGVjLmRpc3BsYXlOYW1lIHwgdHJhbnNsYXRlOiB7fTp0cnVlIH19XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nPlxuICA8YWNsLWxvYWRpbmctbWFza1xuICAgIHN0eWxlPVwiaGVpZ2h0OiAxNDhweFwiXG4gICAgW2xvYWRpbmddPVwidHJ1ZVwiXG4gID48L2FjbC1sb2FkaW5nLW1hc2s+XG48L25nLXRlbXBsYXRlPlxuIl19
267
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL3BhZ2Utc2NhZmZvbGQvcGFnZS1oZWFkZXIvY29tbW9uLWxheW91dC9wcm9kdWN0LXNlbGVjdC9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvcGFnZS1zY2FmZm9sZC9wYWdlLWhlYWRlci9jb21tb24tbGF5b3V0L3Byb2R1Y3Qtc2VsZWN0L2NvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssR0FFTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoQyxPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDM0UsT0FBTyxFQUdMLFVBQVUsR0FDWCxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTVELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7Ozs7Ozs7Ozs7O0lDSi9DLCtCQUtDO0lBQ0MsWUFDRjs7SUFBQSxpQkFBTzs7O0lBREwsY0FDRjtJQURFLHNFQUNGOzs7SUFxQlEsNkJBS0M7SUFDQywrQkFPWTs7Ozs7O0lBTFYsY0FFRTtJQUVGLEFBSkEs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QUFDLENBQUM7UUFDdEQsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDL0IsQ0FBQztJQUNILENBQUM7SUFFRCxlQUFlLENBQUMsSUFBa0IsRUFBRSxPQUF5QjtRQUMzRCxPQUFPLENBQ0wsT0FBTztZQUNQLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSTtnQkFDaEIsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FDNUQsQ0FBQztJQUNKLENBQUM7SUFFRCxlQUFlLENBQUMsSUFBa0I7UUFDaEMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxnQkFBZ0IsQ0FBQztJQUNqRCxDQUFDO3VGQXJIVSxzQkFBc0I7b0VBQXRCLHNCQUFzQjtZQ3BFbkMsaUNBZUM7Ozs7Ozs7WUFDQyx5RUFLQzs7O1lBR0QsK0JBTVk7OztZQUNkLGlCQUFTO1lBZ0VULEFBL0RBLDBIQUFtQiw2R0ErREc7OztZQWpGcEIsQUFMQSxBQURBLEFBREEsQUFMQSxxQ0FBbUIsK0JBS1csaURBQ0EseUxBSzdCLDhFQUNnRTtZQUc5RCxlQUNtRTtZQURuRSxrSUFDbUU7WUFTcEUsZUFBeUQ7WUFDekQsQUFEQSxtRkFBeUQsOERBQ2Q7OztpRkR3Q2xDLHNCQUFzQjtjQU5sQyxTQUFTOzJCQUNFLG9CQUFvQixtQkFHYix1QkFBdUIsQ0FBQyxNQUFNO29KQUkvQyxZQUFZO2tCQURYLEtBQUs7WUFJTixPQUFPO2tCQUROLEtBQUs7WUFJTixLQUFLO2tCQURKLEtBQUs7O2tGQVBLLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGdldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyByZWRpcmVjdFNTT0VudHJ5IH0gZnJvbSAnLi4vLi4vLi4vLi4vYXV0aG9yaXphdGlvbi9zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIFN0cmluZ01hcCxcbiAgUHJvZHVjdEVudHJ5LFxuICBwdWJsaXNoUmVmLFxufSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgSzhzUGVybWlzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9wZXJtaXNzaW9uL2s4cy1wZXJtaXNzaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJvZHVjdEVudHJ5TmFtZSB9IGZyb20gJy4uL2NvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBDb21tb25MYXlvdXRTdG9yZVNlcnZpY2UgfSBmcm9tICcuLi9zdG9yZS5zZXJ2aWNlJztcblxuaW1wb3J0IHsgUHJvZHVjdFNlbGVjdFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2UnO1xuXG5jb25zdCBBRE1JTl9WSUVXX01BUDoge1xuICBba2V5OiBzdHJpbmddOiB7XG4gICAgdmlldzogc3RyaW5nO1xuICAgIGhyZWY6IHN0cmluZztcbiAgfTtcbn0gPSB7XG4gICdjb25zb2xlLXBsYXRmb3JtJzoge1xuICAgIGhyZWY6ICcvbWFuYWdlLXBsYXRmb3JtJyxcbiAgICB2aWV3OiAncGxhdGZvcm12aWV3JyxcbiAgfSxcbiAgJ2NvbnNvbGUtcHJvamVjdCc6IHtcbiAgICBocmVmOiAnL2hvbWUvcHJvamVjdCcsXG4gICAgdmlldzogJ3Byb2plY3R2aWV3JyxcbiAgfSxcbiAgJ2NvbnNvbGUtc2VjdXJpdHknOiB7XG4gICAgaHJlZjogJy9jb250YWluZXItc2VjdXJpdHkvaG9tZScsXG4gICAgdmlldzogJ2NvbnRhaW5lcnNlY3VyaXR5dmlldycsXG4gIH0sXG59O1xuXG5jb25zdCBWSUVXID0ge1xuICB0eXBlOiAndmlld3MnLFxuICBhcGlHcm91cDogJ2F1dGguYWxhdWRhLmlvJyxcbn07XG5cbmNvbnN0IFBSRUZJWCA9ICdjb25zb2xlLSc7XG5cbmV4cG9ydCBjb25zdCBQUk9EVUNUX0lDT05fTUFQOiBTdHJpbmdNYXAgPSB7XG4gICdjb25zb2xlLWFjcCc6ICdhY3AnLFxuICAnY29uc29sZS1hc20nOiAnYXNtJyxcbiAgJ2NvbnNvbGUtZGV2b3BzJzogJ2Rldm9wcycsXG4gIC8vIGNvbnNvbGUtZS1hYW0gcHJlZml4IOS4uuS6huWFvOWuuem7mOiupOaOkuW6j++8jOetieWQjue7reaOkuW6j+aWueahiOWHuuadpeWPr+S7peaUueaIkGNvbnNvbGUtYWFtXG4gICdjb25zb2xlLWUtYWFtJzogJ2FwcF9zdG9yZScsXG4gICdjb25zb2xlLXNlY3VyaXR5JzogJ2J1Z19zZWFyY2gnLFxuICAnY29uc29sZS1wbGF0Zm9ybSc6ICdwbGF0Zm9ybV9tYW5hZ2VtZW50JyxcbiAgJ2NvbnNvbGUtcHJvamVjdCc6ICdwcm9qZWN0X21hbmFnZW1lbnQnLFxuICAnY29uc29sZS1kYXRhc2VydmljZXMnOiAnZGF0YV9zZXJ2aWNlcycsXG4gICdjb25zb2xlLWNlYyc6ICdjbG91ZF9lZGdlX2NvbGxhYm9yYXRpb24nLFxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWNsLXByb2R1Y3Qtc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFByb2R1Y3RTZWxlY3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKVxuICBwbGF0Zm9ybVBhdGggPSAnL2NvbnNvbGUtcGxhdGZvcm0nO1xuXG4gIEBJbnB1dCgpXG4gIGN1cnJlbnQ/OiBQcm9kdWN0RW50cnlOYW1lO1xuXG4gIEBJbnB1dCgpXG4gIHRpdGxlPzogc3RyaW5nO1xuXG4gIFBST0RVQ1RfSUNPTl9NQVAgPSBQUk9EVUNUX0lDT05fTUFQO1xuXG4gIGFsbFByb2R1Y3RzJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMucHJvZHVjdFNlbGVjdFNlcnZpY2UucmVsb2FkJC5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuc3RvcmUuc2VsZWN0QWxsUHJvZHVjdHMoKSksXG4gICAgKSxcbiAgICB0aGlzLms4c1Blcm1pc3Npb24uaXNBbGxvd2VkKHtcbiAgICAgIHR5cGU6IFZJRVcsXG4gICAgICBuYW1lOiBPYmplY3QudmFsdWVzKEFETUlOX1ZJRVdfTUFQKS5tYXAoaXRlbSA9PiBpdGVtLnZpZXcpLFxuICAgIH0pLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW3Byb2R1Y3RzLCB2aWV3c10pID0+IHtcbiAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhBRE1JTl9WSUVXX01BUCk7XG4gICAgICBjb25zdCBwZXJtaXNzaW9uTWFwOiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IGJvb2xlYW47XG4gICAgICB9ID0ge307XG4gICAgICBrZXlzLmZvckVhY2goKGtleSwgaW5kZXgpID0+IChwZXJtaXNzaW9uTWFwW2tleV0gPSB2aWV3c1tpbmRleF0pKTtcbiAgICAgIHJldHVybiBwcm9kdWN0cy5maWx0ZXIocCA9PlxuICAgICAgICBrZXlzLmluY2x1ZGVzKHAubWV0YWRhdGEubmFtZSkgPyBwZXJtaXNzaW9uTWFwW3AubWV0YWRhdGEubmFtZV0gOiB0cnVlLFxuICAgICAgKTtcbiAgICB9KSxcbiAgICBwdWJsaXNoUmVmKCksXG4gICk7XG5cbiAgc2VsZWN0YWJsZVByb2R1Y3RzJCA9IHRoaXMuYWxsUHJvZHVjdHMkLnBpcGUoXG4gICAgbWFwKHByb2R1Y3RzID0+XG4gICAgICAocHJvZHVjdHMgfHwgW10pLmZpbHRlcihcbiAgICAgICAgcHJvZHVjdCA9PlxuICAgICAgICAgICF0aGlzLmlzUG9ydGFsUHJvZHVjdChwcm9kdWN0KSAmJlxuICAgICAgICAgICghcHJvZHVjdC5zdGF0dXMgfHwgcHJvZHVjdC5zdGF0dXMuaGlkZGVuT25Qb3J0YWwgIT09IHRydWUpLFxuICAgICAgKSxcbiAgICApLFxuICAgIHB1Ymxpc2hSZWYoKSxcbiAgKTtcblxuICBwb3J0YWxQcm9kdWN0JCA9IHRoaXMuYWxsUHJvZHVjdHMkLnBpcGUoXG4gICAgbWFwKHJlcyA9PiByZXMuZmluZChwID0+IHRoaXMuaXNQb3J0YWxQcm9kdWN0KHApKSksXG4gICAgcHVibGlzaFJlZigpLFxuICApO1xuXG4gIGRpc2FibGVkJCA9IHRoaXMuc2VsZWN0YWJsZVByb2R1Y3RzJC5waXBlKFxuICAgIG1hcChwcm9kdWN0cyA9PiAhcHJvZHVjdHMubGVuZ3RoKSxcbiAgICBwdWJsaXNoUmVmKCksXG4gICk7XG5cbiAgaXNQb3J0YWwgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JlOiBDb21tb25MYXlvdXRTdG9yZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGs4c1Blcm1pc3Npb246IEs4c1Blcm1pc3Npb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvZHVjdFNlbGVjdFNlcnZpY2U6IFByb2R1Y3RTZWxlY3RTZXJ2aWNlLFxuICApIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pc1BvcnRhbCA9IHRoaXMucm91dGVyLnVybC5zdGFydHNXaXRoKCcvcG9ydGFsJyk7XG4gIH1cblxuICBqdW1wKGVudHJ5cG9pbnQ6IHN0cmluZywgc3NvRW5hYmxlZDogYm9vbGVhbiwgdGFyZ2V0ID0gJ19zZWxmJykge1xuICAgIHdpbmRvdy5vcGVuKHNzb0VuYWJsZWQgPyByZWRpcmVjdFNTT0VudHJ5KGVudHJ5cG9pbnQpIDogZW50cnlwb2ludCwgdGFyZ2V0KTtcbiAgfVxuXG4gIG5hdmlnYXRlVG9Qb3J0YWwoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHdpbmRvdy5vcGVuKCcvY29uc29sZS1wb3J0YWwnLCAnX3NlbGYnKTtcbiAgfVxuXG4gIG5hdmlnYXRlVG9Qcm9kdWN0KGl0ZW06IFByb2R1Y3RFbnRyeSwgZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAodGhpcy5pc1Byb2R1Y3RBY3RpdmUoaXRlbSwgdGhpcy5jdXJyZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoaXRlbS5zcGVjLnBhY2tUeXBlID09PSAnQWRtaW5QYWdlJykge1xuICAgICAgdGhpcy5uYXZpZ2F0ZVRvUGxhdGZvcm0oaXRlbSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpdGVtLnNwZWMucGFja1R5cGUgPT09ICdCdWlsZEluJykge1xuICAgICAgdGhpcy5qdW1wKGl0ZW0uc3BlYy5lbnRyeXBvaW50LCBmYWxzZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChpdGVtLnNwZWMucGFja1R5cGUgPT09ICdJbnRlZ3JhdGVkJykge1xuICAgICAgdGhpcy5qdW1wKGl0ZW0uc3BlYy5lbnRyeXBvaW50LCBpdGVtLnNwZWMuc3NvRW5hYmxlZCwgJ19ibGFuaycpO1xuICAgIH1cbiAgfVxuXG4gIHRyYWNrRm4gPSAoXzogbnVtYmVyLCBpdGVtOiBQcm9kdWN0RW50cnkpID0+IGl0ZW0ubWV0YWRhdGEubmFtZTtcblxuICBuYXZpZ2F0ZVRvUGxhdGZvcm0oaXRlbTogUHJvZHVjdEVudHJ5KSB7XG4gICAgY29uc3QgaHJlZiA9IEFETUlOX1ZJRVdfTUFQW2l0ZW0ubWV0YWRhdGEubmFtZV0uaHJlZjtcbiAgICBpZiAodGhpcy5wbGF0Zm9ybVBhdGgpIHtcbiAgICAgIHdpbmRvdy5vcGVuKGAke3RoaXMucGxhdGZvcm1QYXRofSR7aHJlZn1gLCAnX3NlbGYnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2hyZWZdKTtcbiAgICB9XG4gIH1cblxuICBpc1Byb2R1Y3RBY3RpdmUoaXRlbTogUHJvZHVjdEVudHJ5LCBjdXJyZW50OiBQcm9kdWN0RW50cnlOYW1lKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGN1cnJlbnQgJiZcbiAgICAgIGl0ZW0ubWV0YWRhdGEubmFtZSA9PT1cbiAgICAgICAgKGN1cnJlbnQuc3RhcnRzV2l0aChQUkVGSVgpID8gY3VycmVudCA6IFBSRUZJWCArIGN1cnJlbnQpXG4gICAgKTtcbiAgfVxuXG4gIGlzUG9ydGFsUHJvZHVjdChpdGVtOiBQcm9kdWN0RW50cnkpIHtcbiAgICByZXR1cm4gaXRlbS5tZXRhZGF0YS5uYW1lID09PSAnY29uc29sZS1wb3J0YWwnO1xuICB9XG5cbiAgZ2V0UHJvZHVjdFRpdGxlID0gKFxuICAgIHByb2R1Y3RzOiBQcm9kdWN0RW50cnlbXSxcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIGN1cnJlbnQ6IFByb2R1Y3RFbnRyeU5hbWUsXG4gICkgPT5cbiAgICB0aXRsZSB8fFxuICAgIGdldChcbiAgICAgIChwcm9kdWN0cyB8fCBbXSkuZmluZChwID0+IHRoaXMuaXNQcm9kdWN0QWN0aXZlKHAsIGN1cnJlbnQpKSxcbiAgICAgIFsnc3BlYycsICdkaXNwbGF5TmFtZSddLFxuICAgICk7XG59XG4iLCI8YnV0dG9uXG4gIGNsYXNzPVwiYWNsLXByb2R1Y3Qtc2VsZWN0XCJcbiAgW2F1aVRvb2x0aXBdPVwibWVudVwiXG4gIGF1aVRvb2x0aXBUeXBlPVwicGxhaW5cIlxuICBhdWlUb29sdGlwVHJpZ2dlcj1cImNsaWNrXCJcbiAgYXVpVG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tIHN0YXJ0XCJcbiAgYXVpVG9vbHRpcENsYXNzPVwiYXVpLXByb2R1Y3Qtc2VsZWN0LXRvb2x0aXBcIlxuICBbYXVpVG9vbHRpcEhpZGVPbkNsaWNrXT1cInRydWVcIlxuICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQkIHwgYXN5bmNcIlxuICBbdGl0bGVdPVwiXG4gICAgKGRpc2FibGVkJCB8IGFzeW5jKVxuICAgICAgPyAnJ1xuICAgICAgOiAoYWxsUHJvZHVjdHMkIHwgYXN5bmMgfCBwdXJlOiBnZXRQcm9kdWN0VGl0bGU6dGl0bGU6Y3VycmVudCB8IHRyYW5zbGF0ZSlcbiAgXCJcbiAgW25nQ2xhc3NdPVwieyAnYWNsLXByb2R1Y3Qtc2VsZWN0LS1kaXNhYmxlZCc6IGRpc2FibGVkJCB8IGFzeW5jIH1cIlxuPlxuICA8c3BhblxuICAgICpuZ0lmPVwiXG4gICAgICBhbGxQcm9kdWN0cyQgfCBhc3luYyB8IHB1cmU6IGdldFByb2R1Y3RUaXRsZTp0aXRsZTpjdXJyZW50IGFzIHByb2R1Y3RUaXRsZVxuICAgIFwiXG4gICAgY2xhc3M9XCJhY2wtcHJvZHVjdC1zZWxlY3RfX3RpdGxlXCJcbiAgPlxuICAgIHt7IHByb2R1Y3RUaXRsZSB8IHRyYW5zbGF0ZSB9fVxuICA8L3NwYW4+XG4gIDxhdWktaWNvblxuICAgIGljb249XCJtZW51X2RvdF9zXCJcbiAgICBzaXplPVwiMTZweFwiXG4gICAgW2F1aVRvb2x0aXBdPVwiJ25vX3Byb2R1Y3RfYW5kX2NvbnRhY3RfYWRtaW4nIHwgdHJhbnNsYXRlXCJcbiAgICBbYXVpVG9vbHRpcERpc2FibGVkXT1cIiEoZGlzYWJsZWQkIHwgYXN5bmMpXCJcbiAgICBhdWlUb29sdGlwUG9zaXRpb249XCJib3R0b20gc3RhcnRcIlxuICA+PC9hdWktaWNvbj5cbjwvYnV0dG9uPlxuPG5nLXRlbXBsYXRlICNtZW51PlxuICA8ZGl2IGNsYXNzPVwibWVudVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RhYmxlUHJvZHVjdHMkIHwgYXN5bmMgYXMgcHJvZHVjdHM7IGVsc2UgbG9hZGluZ1wiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cIm1lbnVfX2l0ZW1cIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgJ21lbnVfX2l0ZW0tLWFjdGl2ZSc6IGl0ZW0gfCBwdXJlOiBpc1Byb2R1Y3RBY3RpdmU6Y3VycmVudFxuICAgICAgICB9XCJcbiAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgcHJvZHVjdHM7IHRyYWNrQnk6IHRyYWNrRm5cIlxuICAgICAgICAoY2xpY2spPVwibmF2aWdhdGVUb1Byb2R1Y3QoaXRlbSwgJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtZW51X19pdGVtLWljb25cIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICBpdGVtLnNwZWMucGFja1R5cGUgIT09ICdJbnRlZ3JhdGVkJyAmJiAhaXRlbS5zcGVjLmxvZ287XG4gICAgICAgICAgICAgIGVsc2UgbG9nb1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YXVpLWljb25cbiAgICAgICAgICAgICAgY2xhc3M9XCJhY2wtY29sb3JmdWwtaWNvblwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICBoaWdobGlnaHQ6IGl0ZW0gfCBwdXJlOiBpc1Byb2R1Y3RBY3RpdmU6Y3VycmVudFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgc2l6ZT1cIjUwXCJcbiAgICAgICAgICAgICAgW2ljb25dPVwiJ2JpY29sb3I6JyArIFBST0RVQ1RfSUNPTl9NQVBbaXRlbS5tZXRhZGF0YS5uYW1lXVwiXG4gICAgICAgICAgICA+PC9hdWktaWNvbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2xvZ28+XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgIFtzcmNdPVwiXG4gICAgICAgICAgICAgICAgKGl0ZW0uc3BlYy5sb2dvIHwgYWNsSW1hZ2VIZWFkZXIpIHx8XG4gICAgICAgICAgICAgICAgICAnaW1hZ2VzL3Byb2R1Y3QtZGVmYXVsdC1sb2dvLnBuZycgfCBhY2xTYWZlOiAndXJsJ1xuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBjbGFzcz1cImRlZmF1bHRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1lbnVfX2l0ZW0taW5mbyB0dy1saW5lLWNsYW1wLTJcIj5cbiAgICAgICAgICB7eyBpdGVtLnNwZWMuZGlzcGxheU5hbWUgfCB0cmFuc2xhdGU6IHt9OnRydWUgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxhdWktaWNvblxuICAgICAgICAgICpuZ0lmPVwiaXRlbSB8IHB1cmU6IGlzUHJvZHVjdEFjdGl2ZTpjdXJyZW50XCJcbiAgICAgICAgICBjbGFzcz1cImNoZWNrLXRyaWFuZ2xlLWJhZGdlXCJcbiAgICAgICAgICBpY29uPVwiY2hlY2tcIlxuICAgICAgICA+PC9hdWktaWNvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgPGRpdlxuICAgICpuZ0lmPVwicG9ydGFsUHJvZHVjdCQgfCBhc3luYyBhcyBwb3J0YWxNZW51XCJcbiAgICBjbGFzcz1cInBvcnRhbFwiXG4gICAgW25nQ2xhc3NdPVwieyAncG9ydGFsLS1hY3RpdmUnOiBpc1BvcnRhbCB9XCJcbiAgPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwicG9ydGFsX19pdGVtXCJcbiAgICAgIChjbGljayk9XCJuYXZpZ2F0ZVRvUG9ydGFsKCRldmVudClcIlxuICAgID5cbiAgICAgIDxhdWktaWNvbiBpY29uPVwiaG9tZV9zXCI+PC9hdWktaWNvbj5cbiAgICAgIHt7IHBvcnRhbE1lbnUuc3BlYy5kaXNwbGF5TmFtZSB8IHRyYW5zbGF0ZToge306dHJ1ZSB9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbG9hZGluZz5cbiAgPGFjbC1sb2FkaW5nLW1hc2tcbiAgICBzdHlsZT1cImhlaWdodDogMTQ4cHhcIlxuICAgIFtsb2FkaW5nXT1cInRydWVcIlxuICA+PC9hY2wtbG9hZGluZy1tYXNrPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -13,9 +13,9 @@ import * as i1 from "@angular/common";
13
13
  import * as i2 from "../effect-directive/e2e-attribute-binding.directive";
14
14
  import * as i3 from "@alauda/ui";
15
15
  import * as i4 from "../core/pipes/field-not-available.pipe";
16
- import * as i5 from "../translate/translate.pipe";
17
- import * as i6 from "../view-chart/view-chart.component";
18
- import * as i7 from "../core/pipes/pure.pipe";
16
+ import * as i5 from "../core/pipes/pure.pipe";
17
+ import * as i6 from "../translate/translate.pipe";
18
+ import * as i7 from "../view-chart/view-chart.component";
19
19
  const PIE_COMPONENT = [
20
20
  RadialBarChartComponent,
21
21
  DonutStatusChartComponent,
@@ -62,6 +62,6 @@ export class PieDerivativeChartModule {
62
62
  DonutStatusChartComponent,
63
63
  NumericalLimitPipe,
64
64
  IndicatorColorDirective] }); })();
65
- i0.ɵɵsetComponentScope(RadialBarChartComponent, [i1.NgForOf, i1.NgIf, i2.E2eAttributeBindingDirective, i3.TooltipDirective, i3.IconComponent, i3.ButtonComponent, IndicatorColorDirective], [i4.FieldNotAvailablePipe, i5.TranslatePipe, NumericalLimitPipe]);
66
- i0.ɵɵsetComponentScope(DonutStatusChartComponent, [i1.NgForOf, i1.NgIf, i1.NgStyle, i6.ViewChartComponent], [i1.AsyncPipe, i1.DecimalPipe, i4.FieldNotAvailablePipe, i7.PurePipe, i5.TranslatePipe]);
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGllLWRlcml2YXRpdmUtY2hhcnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL3BpZS1kZXJpdmF0aXZlLWNoYXJ0L3BpZS1kZXJpdmF0aXZlLWNoYXJ0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7Ozs7OztBQUVsRixNQUFNLGFBQWEsR0FBRztJQUNwQix1QkFBdUI7SUFDdkIseUJBQXlCO0lBQ3pCLGtCQUFrQjtJQUNsQix1QkFBdUI7Q0FDeEIsQ0FBQztBQWVGLE1BQU0sT0FBTyx3QkFBd0I7eUZBQXhCLHdCQUF3QjttRUFBeEIsd0JBQXdCO3VFQVhqQyxZQUFZO1lBQ1osVUFBVTtZQUNWLGFBQWE7WUFDYixlQUFlO1lBQ2YsZUFBZTtZQUNmLFVBQVU7WUFDVixZQUFZOztpRkFLSCx3QkFBd0I7Y0FicEMsUUFBUTtlQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxZQUFZO29CQUNaLFVBQVU7b0JBQ1YsYUFBYTtvQkFDYixlQUFlO29CQUNmLGVBQWU7b0JBQ2YsVUFBVTtvQkFDVixZQUFZO2lCQUNiO2dCQUNELFlBQVksRUFBRSxhQUFhO2dCQUMzQixPQUFPLEVBQUUsYUFBYTthQUN2Qjs7d0ZBQ1ksd0JBQXdCLG1CQW5CbkMsdUJBQXVCO1FBQ3ZCLHlCQUF5QjtRQUN6QixrQkFBa0I7UUFDbEIsdUJBQXVCLGFBS3JCLFlBQVk7UUFDWixVQUFVO1FBQ1YsYUFBYTtRQUNiLGVBQWU7UUFDZixlQUFlO1FBQ2YsVUFBVTtRQUNWLFlBQVksYUFkZCx1QkFBdUI7UUFDdkIseUJBQXlCO1FBQ3pCLGtCQUFrQjtRQUNsQix1QkFBdUI7dUJBSHZCLHVCQUF1QixvSEFHdkIsdUJBQXVCLGdEQUR2QixrQkFBa0I7dUJBRGxCLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRvb2x0aXBNb2R1bGUsIEljb25Nb2R1bGUsIEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhbGF1ZGEvdWknO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENvcmVNb2R1bGUgfSBmcm9tICcuLi9jb3JlL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnLi4vdHJhbnNsYXRlL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgVmlld0NoYXJ0TW9kdWxlIH0gZnJvbSAnLi4vdmlldy1jaGFydC9wdWJsaWMtYXBpJztcblxuaW1wb3J0IHsgRG9udXRTdGF0dXNDaGFydENvbXBvbmVudCB9IGZyb20gJy4vZG9udXQtc3RhdHVzL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBJbmRpY2F0b3JDb2xvckRpcmVjdGl2ZSB9IGZyb20gJy4vaW5kaWNhdG9yLWNvbG9yLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBOdW1lcmljYWxMaW1pdFBpcGUgfSBmcm9tICcuL251bWVyaWNhbC1saW1pdC5waXBlJztcbmltcG9ydCB7IFJhZGlhbEJhckNoYXJ0Q29tcG9uZW50IH0gZnJvbSAnLi9yYWRpYWwtYmFyL3JhZGlhbC1iYXItY2hhcnQuY29tcG9uZW50JztcblxuY29uc3QgUElFX0NPTVBPTkVOVCA9IFtcbiAgUmFkaWFsQmFyQ2hhcnRDb21wb25lbnQsXG4gIERvbnV0U3RhdHVzQ2hhcnRDb21wb25lbnQsXG4gIE51bWVyaWNhbExpbWl0UGlwZSxcbiAgSW5kaWNhdG9yQ29sb3JEaXJlY3RpdmUsXG5dO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIENvcmVNb2R1bGUsXG4gICAgVG9vbHRpcE1vZHVsZSxcbiAgICBWaWV3Q2hhcnRNb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIEljb25Nb2R1bGUsXG4gICAgQnV0dG9uTW9kdWxlLFxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFBJRV9DT01QT05FTlQsXG4gIGV4cG9ydHM6IFBJRV9DT01QT05FTlQsXG59KVxuZXhwb3J0IGNsYXNzIFBpZURlcml2YXRpdmVDaGFydE1vZHVsZSB7fVxuIl19
65
+ i0.ɵɵsetComponentScope(RadialBarChartComponent, [i1.NgForOf, i1.NgIf, i2.E2eAttributeBindingDirective, i3.TooltipDirective, i3.IconComponent, i3.ButtonComponent, IndicatorColorDirective], [i4.FieldNotAvailablePipe, i5.PurePipe, i6.TranslatePipe, NumericalLimitPipe]);
66
+ i0.ɵɵsetComponentScope(DonutStatusChartComponent, [i1.NgForOf, i1.NgIf, i1.NgStyle, i7.ViewChartComponent], [i1.AsyncPipe, i1.DecimalPipe, i4.FieldNotAvailablePipe, i5.PurePipe, i6.TranslatePipe]);
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGllLWRlcml2YXRpdmUtY2hhcnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL3BpZS1kZXJpdmF0aXZlLWNoYXJ0L3BpZS1kZXJpdmF0aXZlLWNoYXJ0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDckUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7Ozs7OztBQUVsRixNQUFNLGFBQWEsR0FBRztJQUNwQix1QkFBdUI7SUFDdkIseUJBQXlCO0lBQ3pCLGtCQUFrQjtJQUNsQix1QkFBdUI7Q0FDeEIsQ0FBQztBQWVGLE1BQU0sT0FBTyx3QkFBd0I7eUZBQXhCLHdCQUF3QjttRUFBeEIsd0JBQXdCO3VFQVhqQyxZQUFZO1lBQ1osVUFBVTtZQUNWLGFBQWE7WUFDYixlQUFlO1lBQ2YsZUFBZTtZQUNmLFVBQVU7WUFDVixZQUFZOztpRkFLSCx3QkFBd0I7Y0FicEMsUUFBUTtlQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxZQUFZO29CQUNaLFVBQVU7b0JBQ1YsYUFBYTtvQkFDYixlQUFlO29CQUNmLGVBQWU7b0JBQ2YsVUFBVTtvQkFDVixZQUFZO2lCQUNiO2dCQUNELFlBQVksRUFBRSxhQUFhO2dCQUMzQixPQUFPLEVBQUUsYUFBYTthQUN2Qjs7d0ZBQ1ksd0JBQXdCLG1CQW5CbkMsdUJBQXVCO1FBQ3ZCLHlCQUF5QjtRQUN6QixrQkFBa0I7UUFDbEIsdUJBQXVCLGFBS3JCLFlBQVk7UUFDWixVQUFVO1FBQ1YsYUFBYTtRQUNiLGVBQWU7UUFDZixlQUFlO1FBQ2YsVUFBVTtRQUNWLFlBQVksYUFkZCx1QkFBdUI7UUFDdkIseUJBQXlCO1FBQ3pCLGtCQUFrQjtRQUNsQix1QkFBdUI7dUJBSHZCLHVCQUF1QixvSEFHdkIsdUJBQXVCLDZEQUR2QixrQkFBa0I7dUJBRGxCLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRvb2x0aXBNb2R1bGUsIEljb25Nb2R1bGUsIEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0BhbGF1ZGEvdWknO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENvcmVNb2R1bGUgfSBmcm9tICcuLi9jb3JlL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnLi4vdHJhbnNsYXRlL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgVmlld0NoYXJ0TW9kdWxlIH0gZnJvbSAnLi4vdmlldy1jaGFydC9wdWJsaWMtYXBpJztcblxuaW1wb3J0IHsgRG9udXRTdGF0dXNDaGFydENvbXBvbmVudCB9IGZyb20gJy4vZG9udXQtc3RhdHVzL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBJbmRpY2F0b3JDb2xvckRpcmVjdGl2ZSB9IGZyb20gJy4vaW5kaWNhdG9yLWNvbG9yLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBOdW1lcmljYWxMaW1pdFBpcGUgfSBmcm9tICcuL251bWVyaWNhbC1saW1pdC5waXBlJztcbmltcG9ydCB7IFJhZGlhbEJhckNoYXJ0Q29tcG9uZW50IH0gZnJvbSAnLi9yYWRpYWwtYmFyL3JhZGlhbC1iYXItY2hhcnQuY29tcG9uZW50JztcblxuY29uc3QgUElFX0NPTVBPTkVOVCA9IFtcbiAgUmFkaWFsQmFyQ2hhcnRDb21wb25lbnQsXG4gIERvbnV0U3RhdHVzQ2hhcnRDb21wb25lbnQsXG4gIE51bWVyaWNhbExpbWl0UGlwZSxcbiAgSW5kaWNhdG9yQ29sb3JEaXJlY3RpdmUsXG5dO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIENvcmVNb2R1bGUsXG4gICAgVG9vbHRpcE1vZHVsZSxcbiAgICBWaWV3Q2hhcnRNb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIEljb25Nb2R1bGUsXG4gICAgQnV0dG9uTW9kdWxlLFxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFBJRV9DT01QT05FTlQsXG4gIGV4cG9ydHM6IFBJRV9DT01QT05FTlQsXG59KVxuZXhwb3J0IGNsYXNzIFBpZURlcml2YXRpdmVDaGFydE1vZHVsZSB7fVxuIl19
@@ -1,53 +1,58 @@
1
1
  import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
2
2
  import { arc } from 'd3';
3
+ import { NumericalLimitPipe } from '../numerical-limit.pipe';
4
+ import { measureText } from '../units';
3
5
  import * as i0 from "@angular/core";
6
+ import * as i1 from "../numerical-limit.pipe";
4
7
  const _c0 = (a0, a1) => ({ index: a0, arc: a1 });
5
8
  function RadialBarChartComponent__svg_g_2__svg_text_3_Template(rf, ctx) { if (rf & 1) {
6
9
  i0.ɵɵnamespaceSVG();
7
10
  i0.ɵɵelementStart(0, "text", 9);
8
- i0.ɵɵtext(1);
9
- i0.ɵɵpipe(2, "translate");
10
- i0.ɵɵpipe(3, "aclNumericalLimit");
11
- i0.ɵɵpipe(4, "aclFieldNotAvailable");
11
+ i0.ɵɵpipe(1, "pure");
12
+ i0.ɵɵtext(2);
13
+ i0.ɵɵpipe(3, "translate");
14
+ i0.ɵɵpipe(4, "aclNumericalLimit");
15
+ i0.ɵɵpipe(5, "aclFieldNotAvailable");
12
16
  i0.ɵɵelementEnd();
13
17
  } if (rf & 2) {
14
18
  const label_r1 = ctx.$implicit;
15
19
  const labelIndex_r2 = ctx.index;
16
20
  const arc_r3 = i0.ɵɵnextContext().$implicit;
21
+ const ctx_r3 = i0.ɵɵnextContext();
17
22
  i0.ɵɵproperty("indicator", labelIndex_r2 || (arc_r3 == null ? null : arc_r3.hideIndicator) ? 0 : label_r1);
18
- i0.ɵɵattribute("dx", arc_r3.labelCoord.dx - 50 * labelIndex_r2)("dy", arc_r3.labelCoord.dy);
19
- i0.ɵɵadvance();
20
- i0.ɵɵtextInterpolate2(" ", labelIndex_r2 ? i0.ɵɵpipeBind1(2, 5, label_r1) : i0.ɵɵpipeBind1(4, 9, i0.ɵɵpipeBind1(3, 7, +label_r1)), "", labelIndex_r2 ? "" : "%", " ");
23
+ i0.ɵɵattribute("dx", i0.ɵɵpipeBind4(1, 5, arc_r3.labelCoord.dx, ctx_r3.getLabelDx, arc_r3.labels[labelIndex_r2 ? labelIndex_r2 - 1 : labelIndex_r2], labelIndex_r2))("dy", arc_r3.labelCoord.dy);
24
+ i0.ɵɵadvance(2);
25
+ i0.ɵɵtextInterpolate2(" ", labelIndex_r2 ? i0.ɵɵpipeBind1(3, 10, label_r1) : i0.ɵɵpipeBind1(5, 14, i0.ɵɵpipeBind1(4, 12, +label_r1)), "", labelIndex_r2 ? "" : "%", " ");
21
26
  } }
22
27
  function RadialBarChartComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {
23
28
  i0.ɵɵnamespaceSVG();
24
29
  i0.ɵɵelementStart(0, "g");
25
30
  i0.ɵɵelement(1, "path", 6)(2, "path", 7);
26
- i0.ɵɵtemplate(3, RadialBarChartComponent__svg_g_2__svg_text_3_Template, 5, 11, "text", 8);
31
+ i0.ɵɵtemplate(3, RadialBarChartComponent__svg_g_2__svg_text_3_Template, 6, 16, "text", 8);
27
32
  i0.ɵɵelementEnd();
28
33
  } if (rf & 2) {
29
34
  const arc_r3 = ctx.$implicit;
30
- const i_r4 = ctx.index;
35
+ const i_r5 = ctx.index;
31
36
  i0.ɵɵnextContext();
32
- const tooltipTemplate_r5 = i0.ɵɵreference(13);
37
+ const tooltipTemplate_r6 = i0.ɵɵreference(13);
33
38
  i0.ɵɵadvance();
34
- i0.ɵɵproperty("auiTooltip", tooltipTemplate_r5)("auiTooltipContext", i0.ɵɵpureFunction2(12, _c0, i_r4, arc_r3));
39
+ i0.ɵɵproperty("auiTooltip", tooltipTemplate_r6)("auiTooltipContext", i0.ɵɵpureFunction2(12, _c0, i_r5, arc_r3));
35
40
  i0.ɵɵattribute("d", arc_r3.backgroundArcPath);
36
41
  i0.ɵɵadvance();
37
42
  i0.ɵɵstyleProp("color", arc_r3.color)("opacity", arc_r3.fractionArcOpacity);
38
- i0.ɵɵproperty("auiTooltip", tooltipTemplate_r5)("auiTooltipContext", i0.ɵɵpureFunction2(15, _c0, i_r4, arc_r3));
43
+ i0.ɵɵproperty("auiTooltip", tooltipTemplate_r6)("auiTooltipContext", i0.ɵɵpureFunction2(15, _c0, i_r5, arc_r3));
39
44
  i0.ɵɵattribute("fill", arc_r3.color)("d", arc_r3.fractionArcPath);
40
45
  i0.ɵɵadvance();
41
46
  i0.ɵɵproperty("ngForOf", arc_r3.labels);
42
47
  } }
43
48
  function RadialBarChartComponent_div_11_div_1_Template(rf, ctx) { if (rf & 1) {
44
- const _r6 = i0.ɵɵgetCurrentView();
49
+ const _r7 = i0.ɵɵgetCurrentView();
45
50
  i0.ɵɵelementStart(0, "div", 13);
46
51
  i0.ɵɵelement(1, "aui-icon", 14);
47
52
  i0.ɵɵtext(2);
48
53
  i0.ɵɵpipe(3, "translate");
49
54
  i0.ɵɵelementStart(4, "button", 15);
50
- i0.ɵɵlistener("click", function RadialBarChartComponent_div_11_div_1_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r6); const ctx_r6 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r6.onRefresh()); });
55
+ i0.ɵɵlistener("click", function RadialBarChartComponent_div_11_div_1_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r7); const ctx_r3 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r3.onRefresh()); });
51
56
  i0.ɵɵtext(5);
52
57
  i0.ɵɵpipe(6, "translate");
53
58
  i0.ɵɵelementEnd()();
@@ -72,11 +77,11 @@ function RadialBarChartComponent_div_11_Template(rf, ctx) { if (rf & 1) {
72
77
  i0.ɵɵtemplate(1, RadialBarChartComponent_div_11_div_1_Template, 7, 6, "div", 11)(2, RadialBarChartComponent_div_11_div_2_Template, 4, 3, "div", 12);
73
78
  i0.ɵɵelementEnd();
74
79
  } if (rf & 2) {
75
- const ctx_r6 = i0.ɵɵnextContext();
80
+ const ctx_r3 = i0.ɵɵnextContext();
76
81
  i0.ɵɵadvance();
77
- i0.ɵɵproperty("ngIf", ctx_r6.failed && !ctx_r6.loading);
82
+ i0.ɵɵproperty("ngIf", ctx_r3.failed && !ctx_r3.loading);
78
83
  i0.ɵɵadvance();
79
- i0.ɵɵproperty("ngIf", ctx_r6.loading);
84
+ i0.ɵɵproperty("ngIf", ctx_r3.loading);
80
85
  } }
81
86
  function RadialBarChartComponent_ng_template_12_Template(rf, ctx) { if (rf & 1) {
82
87
  i0.ɵɵelement(0, "i", 18);
@@ -89,15 +94,31 @@ function RadialBarChartComponent_ng_template_12_Template(rf, ctx) { if (rf & 1)
89
94
  i0.ɵɵpipe(7, "translate");
90
95
  } if (rf & 2) {
91
96
  const arc_r8 = ctx.arc;
92
- const ctx_r6 = i0.ɵɵnextContext();
97
+ const ctx_r3 = i0.ɵɵnextContext();
93
98
  i0.ɵɵstyleProp("background", arc_r8.color);
94
99
  i0.ɵɵadvance();
95
- i0.ɵɵtextInterpolate4(" ", i0.ɵɵpipeBind1(2, 6, arc_r8.labels[1]), ": ", i0.ɵɵpipeBind1(4, 10, i0.ɵɵpipeBind1(3, 8, +arc_r8.labels[0])), "% (", i0.ɵɵpipeBind1(6, 14, i0.ɵɵpipeBind1(5, 12, +arc_r8.value)), " ", i0.ɵɵpipeBind1(7, 16, ctx_r6.unit), ")\n");
100
+ i0.ɵɵtextInterpolate4(" ", i0.ɵɵpipeBind1(2, 6, arc_r8.labels[1]), ": ", i0.ɵɵpipeBind1(4, 10, i0.ɵɵpipeBind1(3, 8, +arc_r8.labels[0])), "% (", i0.ɵɵpipeBind1(6, 14, i0.ɵɵpipeBind1(5, 12, +arc_r8.value)), " ", i0.ɵɵpipeBind1(7, 16, ctx_r3.unit), ")\n");
96
101
  } }
97
102
  const MAX_VALUE = 999_999;
98
103
  const DECIMAL_MAX_VALUE = 999.99;
99
104
  export class RadialBarChartComponent {
100
- constructor() {
105
+ ngOnChanges() {
106
+ this.arcs = this.getArcs();
107
+ }
108
+ get transform() {
109
+ return `translate(${(this.size + this.offset) / 2}, ${this.size / 2})`;
110
+ }
111
+ get outerRadius() {
112
+ return this.size / 2 - this.margin;
113
+ }
114
+ get innerRadius() {
115
+ return this.outerRadius - this.pieSize;
116
+ }
117
+ arcTrackByFn(index) {
118
+ return index;
119
+ }
120
+ constructor(numericalLimitPipe) {
121
+ this.numericalLimitPipe = numericalLimitPipe;
101
122
  this.refresh = new EventEmitter();
102
123
  this.size = 160;
103
124
  this.offset = 120;
@@ -120,21 +141,11 @@ export class RadialBarChartComponent {
120
141
  hideIndicator,
121
142
  };
122
143
  };
123
- }
124
- ngOnChanges() {
125
- this.arcs = this.getArcs();
126
- }
127
- get transform() {
128
- return `translate(${(this.size + this.offset) / 2}, ${this.size / 2})`;
129
- }
130
- get outerRadius() {
131
- return this.size / 2 - this.margin;
132
- }
133
- get innerRadius() {
134
- return this.outerRadius - this.pieSize;
135
- }
136
- arcTrackByFn(index) {
137
- return index;
144
+ this.getLabelDx = (x, text, index) => {
145
+ return index
146
+ ? x - (measureText(this.numericalLimitPipe.transform(+text)).width + 20)
147
+ : x;
148
+ };
138
149
  }
139
150
  getArcs() {
140
151
  let arcs = [];
@@ -178,8 +189,8 @@ export class RadialBarChartComponent {
178
189
  dy: -(this.outerRadius - shrink - 5),
179
190
  };
180
191
  }
181
- static { this.ɵfac = function RadialBarChartComponent_Factory(t) { return new (t || RadialBarChartComponent)(); }; }
182
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: RadialBarChartComponent, selectors: [["acl-radial-bar-chart"]], inputs: { limitsFraction: "limitsFraction", requestsFraction: "requestsFraction", capacity: "capacity", data: "data", unit: "unit", color: "color", usage: "usage", request: "request", loading: "loading", failed: "failed" }, outputs: { refresh: "refresh" }, features: [i0.ɵɵNgOnChangesFeature], decls: 14, vars: 16, consts: [["tooltipTemplate", ""], [4, "ngFor", "ngForOf", "ngForTrackBy"], ["dy", "-5", 1, "center-text"], ["text-anchor", "middle", 1, "center-text__main"], ["text-anchor", "middle", "dy", "20", 1, "center-text__sub"], ["class", "status-container", 4, "ngIf"], [1, "full-arc-path", 3, "auiTooltip", "auiTooltipContext"], ["nodeName", "", 1, "fraction-arc-path", 3, "auiTooltip", "auiTooltipContext"], ["class", "fraction-label-text", "text-anchor", "end", "aclIndicatorColor", "", 3, "indicator", 4, "ngFor", "ngForOf"], ["text-anchor", "end", "aclIndicatorColor", "", 1, "fraction-label-text", 3, "indicator"], [1, "status-container"], ["class", "status failed", 4, "ngIf"], ["class", "status loading", 4, "ngIf"], [1, "status", "failed"], ["icon", "exclamation_triangle_s", "background", "triangle"], ["aui-button", "text", 3, "click"], [1, "status", "loading"], ["icon", "spinner"], [1, "dot"]], template: function RadialBarChartComponent_Template(rf, ctx) { if (rf & 1) {
192
+ static { this.ɵfac = function RadialBarChartComponent_Factory(t) { return new (t || RadialBarChartComponent)(i0.ɵɵdirectiveInject(i1.NumericalLimitPipe)); }; }
193
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: RadialBarChartComponent, selectors: [["acl-radial-bar-chart"]], inputs: { limitsFraction: "limitsFraction", requestsFraction: "requestsFraction", capacity: "capacity", data: "data", unit: "unit", color: "color", usage: "usage", request: "request", loading: "loading", failed: "failed" }, outputs: { refresh: "refresh" }, features: [i0.ɵɵProvidersFeature([NumericalLimitPipe]), i0.ɵɵNgOnChangesFeature], decls: 14, vars: 16, consts: [["tooltipTemplate", ""], [4, "ngFor", "ngForOf", "ngForTrackBy"], ["dy", "-5", 1, "center-text"], ["text-anchor", "middle", 1, "center-text__main"], ["text-anchor", "middle", "dy", "20", 1, "center-text__sub"], ["class", "status-container", 4, "ngIf"], [1, "full-arc-path", 3, "auiTooltip", "auiTooltipContext"], ["nodeName", "", 1, "fraction-arc-path", 3, "auiTooltip", "auiTooltipContext"], ["class", "fraction-label-text", "text-anchor", "end", "aclIndicatorColor", "", 3, "indicator", 4, "ngFor", "ngForOf"], ["text-anchor", "end", "aclIndicatorColor", "", 1, "fraction-label-text", 3, "indicator"], [1, "status-container"], ["class", "status failed", 4, "ngIf"], ["class", "status loading", 4, "ngIf"], [1, "status", "failed"], ["icon", "exclamation_triangle_s", "background", "triangle"], ["aui-button", "text", 3, "click"], [1, "status", "loading"], ["icon", "spinner"], [1, "dot"]], template: function RadialBarChartComponent_Template(rf, ctx) { if (rf & 1) {
183
194
  i0.ɵɵnamespaceSVG();
184
195
  i0.ɵɵelementStart(0, "svg")(1, "g");
185
196
  i0.ɵɵtemplate(2, RadialBarChartComponent__svg_g_2_Template, 4, 18, "g", 1);
@@ -211,8 +222,8 @@ export class RadialBarChartComponent {
211
222
  }
212
223
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(RadialBarChartComponent, [{
213
224
  type: Component,
214
- args: [{ selector: 'acl-radial-bar-chart', changeDetection: ChangeDetectionStrategy.OnPush, template: "<svg\n [attr.width]=\"size + offset\"\n [attr.height]=\"size\"\n>\n <svg:g [attr.transform]=\"transform\">\n <svg:g *ngFor=\"let arc of arcs; trackBy: arcTrackByFn; index as i\">\n <svg:path\n class=\"full-arc-path\"\n [auiTooltip]=\"tooltipTemplate\"\n [auiTooltipContext]=\"{ index: i, arc: arc }\"\n [attr.d]=\"arc.backgroundArcPath\"\n ></svg:path>\n <svg:path\n [style.color]=\"arc.color\"\n [auiTooltip]=\"tooltipTemplate\"\n [auiTooltipContext]=\"{ index: i, arc: arc }\"\n class=\"fraction-arc-path\"\n [attr.fill]=\"arc.color\"\n [style.opacity]=\"arc.fractionArcOpacity\"\n [attr.d]=\"arc.fractionArcPath\"\n nodeName\n ></svg:path>\n <svg:text\n *ngFor=\"let label of arc.labels; index as labelIndex\"\n class=\"fraction-label-text\"\n [attr.dx]=\"arc.labelCoord.dx - 50 * labelIndex\"\n [attr.dy]=\"arc.labelCoord.dy\"\n text-anchor=\"end\"\n aclIndicatorColor\n [indicator]=\"labelIndex || arc?.hideIndicator ? 0 : label\"\n >\n {{\n labelIndex\n ? (label | translate)\n : (+label | aclNumericalLimit | aclFieldNotAvailable)\n }}{{ labelIndex ? '' : '%' }}\n </svg:text>\n </svg:g>\n\n <svg:g\n class=\"center-text\"\n dy=\"-5\"\n >\n <svg:text\n [style.font-size]=\"\n capacity > 9999 || arcs?.length > 2 ? '16px' : '24px'\n \"\n text-anchor=\"middle\"\n class=\"center-text__main\"\n >\n {{ +capacity | aclNumericalLimit | aclFieldNotAvailable }}\n </svg:text>\n <svg:text\n text-anchor=\"middle\"\n dy=\"20\"\n class=\"center-text__sub\"\n >\n {{ 'total_number' | translate }}\n </svg:text>\n </svg:g>\n </svg:g>\n</svg>\n\n<div\n class=\"status-container\"\n *ngIf=\"loading || failed\"\n>\n <div\n *ngIf=\"failed && !loading\"\n class=\"status failed\"\n >\n <aui-icon\n icon=\"exclamation_triangle_s\"\n background=\"triangle\"\n ></aui-icon>\n {{ 'failed_load_please' | translate }}\n <button\n aui-button=\"text\"\n (click)=\"onRefresh()\"\n >\n {{ 'refresh' | translate }}\n </button>\n </div>\n <div\n *ngIf=\"loading\"\n class=\"status loading\"\n >\n <aui-icon icon=\"spinner\"></aui-icon> {{ 'loading' | translate }}\n </div>\n</div>\n\n<ng-template\n #tooltipTemplate\n let-index=\"index\"\n let-arc=\"arc\"\n>\n <i\n class=\"dot\"\n [style.background]=\"arc.color\"\n ></i>\n {{ arc.labels[1] | translate }}:\n {{ +arc.labels[0] | aclNumericalLimit | aclFieldNotAvailable }}% ({{\n +arc.value | aclNumericalLimit | aclFieldNotAvailable\n }}\n {{ unit | translate }})\n</ng-template>\n", styles: [":host{position:relative}text{dominant-baseline:middle}.center-text__main{font-size:24px;font-weight:500;fill:rgb(var(--aui-color-main-text))}.center-text__sub{font-size:12px;fill:rgb(var(--aui-color-secondary-text))}.full-arc-path{fill:rgb(var(--aui-color-n-8))}.fraction-arc-path{cursor:pointer}.fraction-arc-path:hover{stroke:currentcolor;stroke-width:2px}.fraction-label-text{font-size:12px;fill:rgb(var(--aui-color-secondary-text))}.total-text{font-size:20px;font-weight:500}.dot{width:6px;height:6px;display:inline-block;border-radius:50%;margin-right:5px}.status-container{left:50%;position:absolute;top:50%;white-space:nowrap;transform:translate(-50%,-50%)}.status{padding:6px 16px;display:flex;align-items:center;justify-content:center;background-color:rgb(var(--aui-color-n-8));color:rgb(var(--aui-color-n-4));border-radius:2px}.status aui-icon{font-size:14px;margin-right:4px}.loading aui-icon{color:rgb(var(--aui-color-primary))}.failed aui-icon{color:rgb(var(--aui-color-red))}.hide{display:none}\n"] }]
215
- }], null, { limitsFraction: [{
225
+ args: [{ selector: 'acl-radial-bar-chart', changeDetection: ChangeDetectionStrategy.OnPush, providers: [NumericalLimitPipe], template: "<svg\n [attr.width]=\"size + offset\"\n [attr.height]=\"size\"\n>\n <svg:g [attr.transform]=\"transform\">\n <svg:g *ngFor=\"let arc of arcs; trackBy: arcTrackByFn; index as i\">\n <svg:path\n class=\"full-arc-path\"\n [auiTooltip]=\"tooltipTemplate\"\n [auiTooltipContext]=\"{ index: i, arc: arc }\"\n [attr.d]=\"arc.backgroundArcPath\"\n ></svg:path>\n <svg:path\n [style.color]=\"arc.color\"\n [auiTooltip]=\"tooltipTemplate\"\n [auiTooltipContext]=\"{ index: i, arc: arc }\"\n class=\"fraction-arc-path\"\n [attr.fill]=\"arc.color\"\n [style.opacity]=\"arc.fractionArcOpacity\"\n [attr.d]=\"arc.fractionArcPath\"\n nodeName\n ></svg:path>\n <svg:text\n *ngFor=\"let label of arc.labels; index as labelIndex\"\n class=\"fraction-label-text\"\n [attr.dx]=\"\n arc.labelCoord.dx\n | pure\n : getLabelDx\n : $any(arc.labels[labelIndex ? labelIndex - 1 : labelIndex])\n : labelIndex\n \"\n [attr.dy]=\"arc.labelCoord.dy\"\n text-anchor=\"end\"\n aclIndicatorColor\n [indicator]=\"labelIndex || arc?.hideIndicator ? 0 : label\"\n >\n {{\n labelIndex\n ? (label | translate)\n : (+label | aclNumericalLimit | aclFieldNotAvailable)\n }}{{ labelIndex ? '' : '%' }}\n </svg:text>\n </svg:g>\n\n <svg:g\n class=\"center-text\"\n dy=\"-5\"\n >\n <svg:text\n [style.font-size]=\"\n capacity > 9999 || arcs?.length > 2 ? '16px' : '24px'\n \"\n text-anchor=\"middle\"\n class=\"center-text__main\"\n >\n {{ +capacity | aclNumericalLimit | aclFieldNotAvailable }}\n </svg:text>\n <svg:text\n text-anchor=\"middle\"\n dy=\"20\"\n class=\"center-text__sub\"\n >\n {{ 'total_number' | translate }}\n </svg:text>\n </svg:g>\n </svg:g>\n</svg>\n\n<div\n class=\"status-container\"\n *ngIf=\"loading || failed\"\n>\n <div\n *ngIf=\"failed && !loading\"\n class=\"status failed\"\n >\n <aui-icon\n icon=\"exclamation_triangle_s\"\n background=\"triangle\"\n ></aui-icon>\n {{ 'failed_load_please' | translate }}\n <button\n aui-button=\"text\"\n (click)=\"onRefresh()\"\n >\n {{ 'refresh' | translate }}\n </button>\n </div>\n <div\n *ngIf=\"loading\"\n class=\"status loading\"\n >\n <aui-icon icon=\"spinner\"></aui-icon> {{ 'loading' | translate }}\n </div>\n</div>\n\n<ng-template\n #tooltipTemplate\n let-index=\"index\"\n let-arc=\"arc\"\n>\n <i\n class=\"dot\"\n [style.background]=\"arc.color\"\n ></i>\n {{ arc.labels[1] | translate }}:\n {{ +arc.labels[0] | aclNumericalLimit | aclFieldNotAvailable }}% ({{\n +arc.value | aclNumericalLimit | aclFieldNotAvailable\n }}\n {{ unit | translate }})\n</ng-template>\n", styles: [":host{position:relative}text{dominant-baseline:middle}.center-text__main{font-size:24px;font-weight:500;fill:rgb(var(--aui-color-main-text))}.center-text__sub{font-size:12px;fill:rgb(var(--aui-color-secondary-text))}.full-arc-path{fill:rgb(var(--aui-color-n-8))}.fraction-arc-path{cursor:pointer}.fraction-arc-path:hover{stroke:currentcolor;stroke-width:2px}.fraction-label-text{font-size:12px;fill:rgb(var(--aui-color-secondary-text))}.total-text{font-size:20px;font-weight:500}.dot{width:6px;height:6px;display:inline-block;border-radius:50%;margin-right:5px}.status-container{left:50%;position:absolute;top:50%;white-space:nowrap;transform:translate(-50%,-50%)}.status{padding:6px 16px;display:flex;align-items:center;justify-content:center;background-color:rgb(var(--aui-color-n-8));color:rgb(var(--aui-color-n-4));border-radius:2px}.status aui-icon{font-size:14px;margin-right:4px}.loading aui-icon{color:rgb(var(--aui-color-primary))}.failed aui-icon{color:rgb(var(--aui-color-red))}.hide{display:none}\n"] }]
226
+ }], () => [{ type: i1.NumericalLimitPipe }], { limitsFraction: [{
216
227
  type: Input
217
228
  }], requestsFraction: [{
218
229
  type: Input
@@ -236,4 +247,4 @@ export class RadialBarChartComponent {
236
247
  type: Output
237
248
  }] }); })();
238
249
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(RadialBarChartComponent, { className: "RadialBarChartComponent" }); })();
239
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaWFsLWJhci1jaGFydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvcGllLWRlcml2YXRpdmUtY2hhcnQvcmFkaWFsLWJhci9yYWRpYWwtYmFyLWNoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9waWUtZGVyaXZhdGl2ZS1jaGFydC9yYWRpYWwtYmFyL3JhZGlhbC1iYXItY2hhcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQzs7Ozs7SUNjbkIsK0JBUUM7SUFDQyxZQUtGOzs7O0lBQUEsaUJBQVc7Ozs7O0lBUFQsMEdBQTBEOztJQUUxRCxjQUtGO0lBTEUscUtBS0Y7Ozs7SUEvQkYseUJBQW1FO0lBT2pFLEFBTkEsMEJBS1ksY0FVQTtJQUNaLHlGQVFDO0lBT0gsaUJBQVE7Ozs7OztJQTdCSixjQUE4QjtJQUM5QixBQURBLCtDQUE4QixnRUFDYzs7SUFJNUMsY0FBeUI7SUFLekIsQUFMQSxxQ0FBeUIsc0NBS2U7SUFIeEMsQUFEQSwrQ0FBOEIsZ0VBQ2M7O0lBUTFCLGNBQWU7SUFBZix1Q0FBZTs7OztJQTRDdkMsK0JBR0M7SUFDQywrQkFHWTtJQUNaLFlBQ0E7O0lBQUEsa0NBR0M7SUFEQywyTEFBUyxrQkFBVyxLQUFDO0lBRXJCLFlBQ0Y7O0lBQ0YsQUFERSxpQkFBUyxFQUNMOztJQVBKLGVBQ0E7SUFEQSwyRUFDQTtJQUlFLGVBQ0Y7SUFERSxnRUFDRjs7O0lBRUYsK0JBR0M7SUFDQywrQkFBb0M7SUFBQyxZQUN2Qzs7SUFBQSxpQkFBTTs7SUFEaUMsZUFDdkM7SUFEdUMsZ0VBQ3ZDOzs7SUF6QkYsK0JBR0M7SUFpQkMsQUFoQkEsZ0ZBR0MsbUVBZ0JBO0lBR0gsaUJBQU07OztJQXJCRCxjQUF3QjtJQUF4Qix1REFBd0I7SUFnQnhCLGNBQWE7SUFBYixxQ0FBYTs7O0lBWWhCLHdCQUdLO0lBQ0wsWUFLRjs7Ozs7Ozs7OztJQVBJLDBDQUE4QjtJQUVoQyxjQUtGO0lBTEUsNFBBS0Y7O0FEL0ZBLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQztBQUUxQixNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQztBQW9CakMsTUFBTSxPQUFPLHVCQUF1QjtJQU5wQztRQXFDWSxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUU5QixTQUFJLEdBQUcsR0FBRyxDQUFDO1FBRVgsV0FBTSxHQUFHLEdBQUcsQ0FBQztRQUVMLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFFYixXQUFNLEdBQUcsQ0FBQyxDQUFDO1FBRVgsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFFekIsYUFBUSxHQUFHLFNBQVMsQ0FBQztRQUVyQixvQkFBZSxHQUFHLGlCQUFpQixDQUFDO1FBaUQ3QyxXQUFNLEdBQUcsQ0FDUCxLQUFhLEVBQ2IsUUFBZ0IsRUFDaEIsS0FBYSxFQUNiLE9BQWUsRUFDZixLQUFhLEVBQ2IsYUFBYSxHQUFHLEtBQUssRUFDckIsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQ0QsRUFBRTtZQUNuQixRQUFRLEdBQUcsUUFBUSxJQUFJLENBQUMsQ0FBQztZQUN6QixPQUFPO2dCQUNMLGlCQUFpQixFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUM7Z0JBQ25ELGVBQWUsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUM7Z0JBQzlELE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQztnQkFDaEQsVUFBVSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO2dCQUNwQyxrQkFBa0IsRUFBRSxPQUFPO2dCQUMzQixRQUFRO2dCQUNSLEtBQUs7Z0JBQ0wsS0FBSztnQkFDTCxhQUFhO2FBQ2QsQ0FBQztRQUNKLENBQUMsQ0FBQztLQWdESDtJQWxIQyxXQUFXO1FBQ1QsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckMsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBYTtRQUN4QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyxPQUFPO1FBQ2IsSUFBSSxJQUFJLEdBQXNCLEVBQUUsQ0FBQztRQUNqQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUMzQixDQUFDLEVBQ0QsSUFBSSxDQUFDLGdCQUFnQixFQUNyQixjQUFjLEVBQ2QsQ0FBQyxFQUNELElBQUksQ0FBQyxPQUFPLENBQ2IsQ0FBQztRQUNGLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQzdCLENBQUMsRUFDRCxJQUFJLENBQUMsY0FBYyxFQUNuQixZQUFZLEVBQ1osR0FBRyxFQUNILElBQUksQ0FBQyxLQUFLLENBQ1gsQ0FBQztRQUNGLElBQUksR0FBRyxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUVoQyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNkLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDM0IsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQXlCRCxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUNuQyxJQUFJLENBQUMsTUFBTSxDQUNULEtBQUssRUFDTCxJQUFJLENBQUMsUUFBUSxFQUNiLElBQUksQ0FBQyxLQUFLLEVBQ1YsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUM5QyxJQUFJLENBQUMsS0FBSyxFQUNWLElBQUksQ0FBQyxhQUFhLEVBQ2xCLElBQUksQ0FBQyxLQUFLLENBQ1gsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELG9CQUFvQixDQUFDLEtBQUssR0FBRyxDQUFDO1FBQzVCLE1BQU0sTUFBTSxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3hDLE9BQU8sR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVCLFVBQVUsRUFBRSxDQUFDO1lBQ2IsUUFBUSxFQUFFLElBQUksQ0FBQyxFQUFFLEdBQUcsR0FBRztZQUN2QixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNO1lBQ3RDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU07U0FDdkMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRU8sa0JBQWtCLENBQUMsUUFBZ0IsRUFBRSxLQUFLLEdBQUcsQ0FBQztRQUNwRCxNQUFNLE1BQU0sR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUN4QyxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDbkMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDNUIsVUFBVSxFQUFFLENBQUM7WUFDYixRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxHQUFHO1lBQzFDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU07WUFDdEMsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTTtTQUN2QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sWUFBWSxDQUFDLEtBQUssR0FBRyxDQUFDO1FBQzVCLE1BQU0sTUFBTSxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3hDLE9BQU87WUFDTCxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ04sRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQUM7U0FDckMsQ0FBQztJQUNKLENBQUM7d0ZBbEtVLHVCQUF1QjtvRUFBdkIsdUJBQXVCOztZQzVCbEMsQUFKRiwyQkFHQyxRQUNxQztZQUNsQywwRUFBbUU7WUFzQ2pFLEFBSkYsNEJBR0MsY0FPRTtZQUNDLFlBQ0Y7OztZQUFBLGlCQUFXO1lBQ1gsK0JBSUM7WUFDQyxZQUNGOztZQUdOLEFBREUsQUFERSxBQURFLGlCQUFXLEVBQ0wsRUFDRixFQUNKO1lBOEJOLEFBNUJBLDBFQUdDLCtHQTZCQTs7O1lBM0ZRLGNBQTRCOztZQUNWLGNBQVM7WUFBQSxBQUFULGtDQUFTLGtDQUF1QjtZQXVDbkQsZUFFQztZQUZELHFIQUVDO1lBSUQsY0FDRjtZQURFLDRGQUNGO1lBTUUsZUFDRjtZQURFLHVFQUNGO1lBT0gsZUFBdUI7WUFBdkIsZ0RBQXVCOzs7aUZEakNiLHVCQUF1QjtjQU5uQyxTQUFTOzJCQUNFLHNCQUFzQixtQkFHZix1QkFBdUIsQ0FBQyxNQUFNO2dCQUkvQyxjQUFjO2tCQURiLEtBQUs7WUFJTixnQkFBZ0I7a0JBRGYsS0FBSztZQUlOLFFBQVE7a0JBRFAsS0FBSztZQUlOLElBQUk7a0JBREgsS0FBSztZQVNHLElBQUk7a0JBQVosS0FBSztZQUVHLEtBQUs7a0JBQWIsS0FBSztZQUVHLEtBQUs7a0JBQWIsS0FBSztZQUVHLE9BQU87a0JBQWYsS0FBSztZQUVHLE9BQU87a0JBQWYsS0FBSztZQUVHLE1BQU07a0JBQWQsS0FBSztZQUVJLE9BQU87a0JBQWhCLE1BQU07O2tGQS9CSSx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBhcmMgfSBmcm9tICdkMyc7XG5cbmNvbnN0IE1BWF9WQUxVRSA9IDk5OV85OTk7XG5cbmNvbnN0IERFQ0lNQUxfTUFYX1ZBTFVFID0gOTk5Ljk5O1xuXG5pbnRlcmZhY2UgTm9kZUZyYWN0aW9uQXJjIHtcbiAgYmFja2dyb3VuZEFyY1BhdGg6IGFueTtcbiAgZnJhY3Rpb25BcmNQYXRoOiBhbnk7XG4gIGxhYmVsczogc3RyaW5nW107XG4gIGxhYmVsQ29vcmQ6IGFueTtcbiAgZnJhY3Rpb25BcmNPcGFjaXR5OiBudW1iZXI7XG4gIGZyYWN0aW9uOiBhbnk7XG4gIGNvbG9yOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIGhpZGVJbmRpY2F0b3I/OiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY2wtcmFkaWFsLWJhci1jaGFydCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9yYWRpYWwtYmFyLWNoYXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmFkaWFsLWJhci1jaGFydC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUmFkaWFsQmFyQ2hhcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKVxuICBsaW1pdHNGcmFjdGlvbjogbnVtYmVyO1xuXG4gIEBJbnB1dCgpXG4gIHJlcXVlc3RzRnJhY3Rpb246IG51bWJlcjtcblxuICBASW5wdXQoKVxuICBjYXBhY2l0eTogbnVtYmVyO1xuXG4gIEBJbnB1dCgpXG4gIGRhdGE6IEFycmF5PHtcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgZnJhY3Rpb246IG51bWJlcjtcbiAgICBoaWRlSW5kaWNhdG9yOiBib29sZWFuO1xuICAgIGNvbG9yPzogc3RyaW5nO1xuICB9PjtcblxuICBASW5wdXQoKSB1bml0OiBzdHJpbmc7XG5cbiAgQElucHV0KCkgY29sb3I6IHN0cmluZztcblxuICBASW5wdXQoKSB1c2FnZTogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIHJlcXVlc3Q6IHN0cmluZztcblxuICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpIGZhaWxlZDogYm9vbGVhbjtcblxuICBAT3V0cHV0KCkgcmVmcmVzaCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICByZWFkb25seSBzaXplID0gMTYwO1xuXG4gIHJlYWRvbmx5IG9mZnNldCA9IDEyMDtcblxuICBwcml2YXRlIHJlYWRvbmx5IHBpZVNpemUgPSAxMDtcblxuICBwcml2YXRlIHJlYWRvbmx5IG1hcmdpbiA9IDU7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpbm5lclNocmluayA9IDE1O1xuXG4gIHJlYWRvbmx5IG1heFZhbHVlID0gTUFYX1ZBTFVFO1xuXG4gIHJlYWRvbmx5IGRlY2ltYWxNYXhWYWx1ZSA9IERFQ0lNQUxfTUFYX1ZBTFVFO1xuXG4gIGFyY3M6IE5vZGVGcmFjdGlvbkFyY1tdO1xuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuYXJjcyA9IHRoaXMuZ2V0QXJjcygpO1xuICB9XG5cbiAgZ2V0IHRyYW5zZm9ybSgpIHtcbiAgICByZXR1cm4gYHRyYW5zbGF0ZSgkeyh0aGlzLnNpemUgKyB0aGlzLm9mZnNldCkgLyAyfSwgJHt0aGlzLnNpemUgLyAyfSlgO1xuICB9XG5cbiAgZ2V0IG91dGVyUmFkaXVzKCkge1xuICAgIHJldHVybiB0aGlzLnNpemUgLyAyIC0gdGhpcy5tYXJnaW47XG4gIH1cblxuICBnZXQgaW5uZXJSYWRpdXMoKSB7XG4gICAgcmV0dXJuIHRoaXMub3V0ZXJSYWRpdXMgLSB0aGlzLnBpZVNpemU7XG4gIH1cblxuICBhcmNUcmFja0J5Rm4oaW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QXJjcygpOiBOb2RlRnJhY3Rpb25BcmNbXSB7XG4gICAgbGV0IGFyY3M6IE5vZGVGcmFjdGlvbkFyY1tdID0gW107XG4gICAgY29uc3QgbGltaXRzQXJjID0gdGhpcy5nZXRBcmMoXG4gICAgICAwLFxuICAgICAgdGhpcy5yZXF1ZXN0c0ZyYWN0aW9uLFxuICAgICAgJ3JlcXVlc3RfcmF0ZScsXG4gICAgICAxLFxuICAgICAgdGhpcy5yZXF1ZXN0LFxuICAgICk7XG4gICAgY29uc3QgcmVxdWVzdHNBcmMgPSB0aGlzLmdldEFyYyhcbiAgICAgIDEsXG4gICAgICB0aGlzLmxpbWl0c0ZyYWN0aW9uLFxuICAgICAgJ3VzYWdlX3JhdGUnLFxuICAgICAgMC43LFxuICAgICAgdGhpcy51c2FnZSxcbiAgICApO1xuICAgIGFyY3MgPSBbcmVxdWVzdHNBcmMsIGxpbWl0c0FyY107XG5cbiAgICBpZiAodGhpcy5kYXRhKSB7XG4gICAgICBhcmNzID0gdGhpcy5oYW5kZWxEYXRhKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFyY3M7XG4gIH1cblxuICBnZXRBcmMgPSAoXG4gICAgbGV2ZWw6IG51bWJlcixcbiAgICBmcmFjdGlvbjogbnVtYmVyLFxuICAgIGxhYmVsOiBzdHJpbmcsXG4gICAgb3BhY2l0eTogbnVtYmVyLFxuICAgIHZhbHVlOiBzdHJpbmcsXG4gICAgaGlkZUluZGljYXRvciA9IGZhbHNlLFxuICAgIGNvbG9yID0gdGhpcy5jb2xvcixcbiAgKTogTm9kZUZyYWN0aW9uQXJjID0+IHtcbiAgICBmcmFjdGlvbiA9IGZyYWN0aW9uIHx8IDA7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJhY2tncm91bmRBcmNQYXRoOiB0aGlzLmdldEJhY2tncm91bmRBcmNQYXRoKGxldmVsKSxcbiAgICAgIGZyYWN0aW9uQXJjUGF0aDogdGhpcy5nZXRGcmFjdGlvbkFyY1BhdGgoZnJhY3Rpb24gfHwgMCwgbGV2ZWwpLFxuICAgICAgbGFiZWxzOiBbZnJhY3Rpb24gPyAnJyArIGZyYWN0aW9uIDogbnVsbCwgbGFiZWxdLFxuICAgICAgbGFiZWxDb29yZDogdGhpcy5nZXRUZXh0Q29vcmQobGV2ZWwpLFxuICAgICAgZnJhY3Rpb25BcmNPcGFjaXR5OiBvcGFjaXR5LFxuICAgICAgZnJhY3Rpb24sXG4gICAgICBjb2xvcixcbiAgICAgIHZhbHVlLFxuICAgICAgaGlkZUluZGljYXRvcixcbiAgICB9O1xuICB9O1xuXG4gIGhhbmRlbERhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5tYXAoKGl0ZW0sIGluZGV4KSA9PlxuICAgICAgdGhpcy5nZXRBcmMoXG4gICAgICAgIGluZGV4LFxuICAgICAgICBpdGVtLmZyYWN0aW9uLFxuICAgICAgICBpdGVtLnRpdGxlLFxuICAgICAgICBpdGVtLmNvbG9yID8gMSA6ICsoMSAvIChpbmRleCArIDEpKS50b0ZpeGVkKDIpLFxuICAgICAgICBpdGVtLnZhbHVlLFxuICAgICAgICBpdGVtLmhpZGVJbmRpY2F0b3IsXG4gICAgICAgIGl0ZW0uY29sb3IsXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICBnZXRCYWNrZ3JvdW5kQXJjUGF0aChsZXZlbCA9IDApIHtcbiAgICBjb25zdCBzaHJpbmsgPSBsZXZlbCAqIHRoaXMuaW5uZXJTaHJpbms7XG4gICAgcmV0dXJuIGFyYygpLmNvcm5lclJhZGl1cygyMCkoe1xuICAgICAgc3RhcnRBbmdsZTogMCxcbiAgICAgIGVuZEFuZ2xlOiBNYXRoLlBJICogMS41LFxuICAgICAgaW5uZXJSYWRpdXM6IHRoaXMuaW5uZXJSYWRpdXMgLSBzaHJpbmssXG4gICAgICBvdXRlclJhZGl1czogdGhpcy5vdXRlclJhZGl1cyAtIHNocmluayxcbiAgICB9KTtcbiAgfVxuXG4gIG9uUmVmcmVzaCgpIHtcbiAgICB0aGlzLnJlZnJlc2gubmV4dChudWxsKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RnJhY3Rpb25BcmNQYXRoKGZyYWN0aW9uOiBudW1iZXIsIGxldmVsID0gMCkge1xuICAgIGNvbnN0IHNocmluayA9IGxldmVsICogdGhpcy5pbm5lclNocmluaztcbiAgICBmcmFjdGlvbiA9IE1hdGgubWluKDEwMCwgZnJhY3Rpb24pO1xuICAgIHJldHVybiBhcmMoKS5jb3JuZXJSYWRpdXMoMjApKHtcbiAgICAgIHN0YXJ0QW5nbGU6IDAsXG4gICAgICBlbmRBbmdsZTogKE1hdGguUEkgKiAxLjUgKiBmcmFjdGlvbikgLyAxMDAsXG4gICAgICBpbm5lclJhZGl1czogdGhpcy5pbm5lclJhZGl1cyAtIHNocmluayxcbiAgICAgIG91dGVyUmFkaXVzOiB0aGlzLm91dGVyUmFkaXVzIC0gc2hyaW5rLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUZXh0Q29vcmQobGV2ZWwgPSAwKTogeyBkeDogbnVtYmVyOyBkeTogbnVtYmVyIH0ge1xuICAgIGNvbnN0IHNocmluayA9IGxldmVsICogdGhpcy5pbm5lclNocmluaztcbiAgICByZXR1cm4ge1xuICAgICAgZHg6IC00LFxuICAgICAgZHk6IC0odGhpcy5vdXRlclJhZGl1cyAtIHNocmluayAtIDUpLFxuICAgIH07XG4gIH1cbn1cbiIsIjxzdmdcbiAgW2F0dHIud2lkdGhdPVwic2l6ZSArIG9mZnNldFwiXG4gIFthdHRyLmhlaWdodF09XCJzaXplXCJcbj5cbiAgPHN2ZzpnIFthdHRyLnRyYW5zZm9ybV09XCJ0cmFuc2Zvcm1cIj5cbiAgICA8c3ZnOmcgKm5nRm9yPVwibGV0IGFyYyBvZiBhcmNzOyB0cmFja0J5OiBhcmNUcmFja0J5Rm47IGluZGV4IGFzIGlcIj5cbiAgICAgIDxzdmc6cGF0aFxuICAgICAgICBjbGFzcz1cImZ1bGwtYXJjLXBhdGhcIlxuICAgICAgICBbYXVpVG9vbHRpcF09XCJ0b29sdGlwVGVtcGxhdGVcIlxuICAgICAgICBbYXVpVG9vbHRpcENvbnRleHRdPVwieyBpbmRleDogaSwgYXJjOiBhcmMgfVwiXG4gICAgICAgIFthdHRyLmRdPVwiYXJjLmJhY2tncm91bmRBcmNQYXRoXCJcbiAgICAgID48L3N2ZzpwYXRoPlxuICAgICAgPHN2ZzpwYXRoXG4gICAgICAgIFtzdHlsZS5jb2xvcl09XCJhcmMuY29sb3JcIlxuICAgICAgICBbYXVpVG9vbHRpcF09XCJ0b29sdGlwVGVtcGxhdGVcIlxuICAgICAgICBbYXVpVG9vbHRpcENvbnRleHRdPVwieyBpbmRleDogaSwgYXJjOiBhcmMgfVwiXG4gICAgICAgIGNsYXNzPVwiZnJhY3Rpb24tYXJjLXBhdGhcIlxuICAgICAgICBbYXR0ci5maWxsXT1cImFyYy5jb2xvclwiXG4gICAgICAgIFtzdHlsZS5vcGFjaXR5XT1cImFyYy5mcmFjdGlvbkFyY09wYWNpdHlcIlxuICAgICAgICBbYXR0ci5kXT1cImFyYy5mcmFjdGlvbkFyY1BhdGhcIlxuICAgICAgICBub2RlTmFtZVxuICAgICAgPjwvc3ZnOnBhdGg+XG4gICAgICA8c3ZnOnRleHRcbiAgICAgICAgKm5nRm9yPVwibGV0IGxhYmVsIG9mIGFyYy5sYWJlbHM7IGluZGV4IGFzIGxhYmVsSW5kZXhcIlxuICAgICAgICBjbGFzcz1cImZyYWN0aW9uLWxhYmVsLXRleHRcIlxuICAgICAgICBbYXR0ci5keF09XCJhcmMubGFiZWxDb29yZC5keCAtIDUwICogbGFiZWxJbmRleFwiXG4gICAgICAgIFthdHRyLmR5XT1cImFyYy5sYWJlbENvb3JkLmR5XCJcbiAgICAgICAgdGV4dC1hbmNob3I9XCJlbmRcIlxuICAgICAgICBhY2xJbmRpY2F0b3JDb2xvclxuICAgICAgICBbaW5kaWNhdG9yXT1cImxhYmVsSW5kZXggfHwgYXJjPy5oaWRlSW5kaWNhdG9yID8gMCA6IGxhYmVsXCJcbiAgICAgID5cbiAgICAgICAge3tcbiAgICAgICAgICBsYWJlbEluZGV4XG4gICAgICAgICAgICA/IChsYWJlbCB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgIDogKCtsYWJlbCB8IGFjbE51bWVyaWNhbExpbWl0IHwgYWNsRmllbGROb3RBdmFpbGFibGUpXG4gICAgICAgIH19e3sgbGFiZWxJbmRleCA/ICcnIDogJyUnIH19XG4gICAgICA8L3N2Zzp0ZXh0PlxuICAgIDwvc3ZnOmc+XG5cbiAgICA8c3ZnOmdcbiAgICAgIGNsYXNzPVwiY2VudGVyLXRleHRcIlxuICAgICAgZHk9XCItNVwiXG4gICAgPlxuICAgICAgPHN2Zzp0ZXh0XG4gICAgICAgIFtzdHlsZS5mb250LXNpemVdPVwiXG4gICAgICAgICAgY2FwYWNpdHkgPiA5OTk5IHx8IGFyY3M/Lmxlbmd0aCA+IDIgPyAnMTZweCcgOiAnMjRweCdcbiAgICAgICAgXCJcbiAgICAgICAgdGV4dC1hbmNob3I9XCJtaWRkbGVcIlxuICAgICAgICBjbGFzcz1cImNlbnRlci10ZXh0X19tYWluXCJcbiAgICAgID5cbiAgICAgICAge3sgK2NhcGFjaXR5IHwgYWNsTnVtZXJpY2FsTGltaXQgfCBhY2xGaWVsZE5vdEF2YWlsYWJsZSB9fVxuICAgICAgPC9zdmc6dGV4dD5cbiAgICAgIDxzdmc6dGV4dFxuICAgICAgICB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiXG4gICAgICAgIGR5PVwiMjBcIlxuICAgICAgICBjbGFzcz1cImNlbnRlci10ZXh0X19zdWJcIlxuICAgICAgPlxuICAgICAgICB7eyAndG90YWxfbnVtYmVyJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9zdmc6dGV4dD5cbiAgICA8L3N2ZzpnPlxuICA8L3N2ZzpnPlxuPC9zdmc+XG5cbjxkaXZcbiAgY2xhc3M9XCJzdGF0dXMtY29udGFpbmVyXCJcbiAgKm5nSWY9XCJsb2FkaW5nIHx8IGZhaWxlZFwiXG4+XG4gIDxkaXZcbiAgICAqbmdJZj1cImZhaWxlZCAmJiAhbG9hZGluZ1wiXG4gICAgY2xhc3M9XCJzdGF0dXMgZmFpbGVkXCJcbiAgPlxuICAgIDxhdWktaWNvblxuICAgICAgaWNvbj1cImV4Y2xhbWF0aW9uX3RyaWFuZ2xlX3NcIlxuICAgICAgYmFja2dyb3VuZD1cInRyaWFuZ2xlXCJcbiAgICA+PC9hdWktaWNvbj5cbiAgICB7eyAnZmFpbGVkX2xvYWRfcGxlYXNlJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDxidXR0b25cbiAgICAgIGF1aS1idXR0b249XCJ0ZXh0XCJcbiAgICAgIChjbGljayk9XCJvblJlZnJlc2goKVwiXG4gICAgPlxuICAgICAge3sgJ3JlZnJlc2gnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgKm5nSWY9XCJsb2FkaW5nXCJcbiAgICBjbGFzcz1cInN0YXR1cyBsb2FkaW5nXCJcbiAgPlxuICAgIDxhdWktaWNvbiBpY29uPVwic3Bpbm5lclwiPjwvYXVpLWljb24+IHt7ICdsb2FkaW5nJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGVcbiAgI3Rvb2x0aXBUZW1wbGF0ZVxuICBsZXQtaW5kZXg9XCJpbmRleFwiXG4gIGxldC1hcmM9XCJhcmNcIlxuPlxuICA8aVxuICAgIGNsYXNzPVwiZG90XCJcbiAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJhcmMuY29sb3JcIlxuICA+PC9pPlxuICB7eyBhcmMubGFiZWxzWzFdIHwgdHJhbnNsYXRlIH19OlxuICB7eyArYXJjLmxhYmVsc1swXSB8IGFjbE51bWVyaWNhbExpbWl0IHwgYWNsRmllbGROb3RBdmFpbGFibGUgfX0lICh7e1xuICAgICthcmMudmFsdWUgfCBhY2xOdW1lcmljYWxMaW1pdCB8IGFjbEZpZWxkTm90QXZhaWxhYmxlXG4gIH19XG4gIHt7IHVuaXQgfCB0cmFuc2xhdGUgfX0pXG48L25nLXRlbXBsYXRlPlxuIl19
250
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaWFsLWJhci1jaGFydC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvcGllLWRlcml2YXRpdmUtY2hhcnQvcmFkaWFsLWJhci9yYWRpYWwtYmFyLWNoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9waWUtZGVyaXZhdGl2ZS1jaGFydC9yYWRpYWwtYmFyL3JhZGlhbC1iYXItY2hhcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQztBQUV6QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sVUFBVSxDQUFDOzs7Ozs7SUNXakMsK0JBY0M7O0lBQ0MsWUFLRjs7OztJQUFBLGlCQUFXOzs7Ozs7SUFQVCwwR0FBMEQ7O0lBRTFELGVBS0Y7SUFMRSx3S0FLRjs7OztJQXJDRix5QkFBbUU7SUFPakUsQUFOQSwwQkFLWSxjQVVBO0lBQ1oseUZBY0M7SUFPSCxpQkFBUTs7Ozs7O0lBbkNKLGNBQThCO0lBQzlCLEFBREEsK0NBQThCLGdFQUNjOztJQUk1QyxjQUF5QjtJQUt6QixBQUxBLHFDQUF5QixzQ0FLZTtJQUh4QyxBQURBLCtDQUE4QixnRUFDYzs7SUFRMUIsY0FBZTtJQUFmLHVDQUFlOzs7O0lBa0R2QywrQkFHQztJQUNDLCtCQUdZO0lBQ1osWUFDQTs7SUFBQSxrQ0FHQztJQURDLDJMQUFTLGtCQUFXLEtBQUM7SUFFckIsWUFDRjs7SUFDRixBQURFLGlCQUFTLEVBQ0w7O0lBUEosZUFDQTtJQURBLDJF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O0lBQ0osQ0FBQzt3RkFuS1UsdUJBQXVCO29FQUF2Qix1QkFBdUIsMlVBRnZCLENBQUMsa0JBQWtCLENBQUM7O1lDOUIvQixBQUpGLDJCQUdDLFFBQ3FDO1lBQ2xDLDBFQUFtRTtZQTRDakUsQUFKRiw0QkFHQyxjQU9FO1lBQ0MsWUFDRjs7O1lBQUEsaUJBQVc7WUFDWCwrQkFJQztZQUNDLFlBQ0Y7O1lBR04sQUFERSxBQURFLEFBREUsaUJBQVcsRUFDTCxFQUNGLEVBQ0o7WUE4Qk4sQUE1QkEsMEVBR0MsK0dBNkJBOzs7WUFqR1EsY0FBNEI7O1lBQ1YsY0FBUztZQUFBLEFBQVQsa0NBQVMsa0NBQXVCO1lBNkNuRCxlQUVDO1lBRkQscUhBRUM7WUFJRCxjQUNGO1lBREUsNEZBQ0Y7WUFNRSxlQUNGO1lBREUsdUVBQ0Y7WUFPSCxlQUF1QjtZQUF2QixnREFBdUI7OztpRkRuQ2IsdUJBQXVCO2NBUG5DLFNBQVM7MkJBQ0Usc0JBQXNCLG1CQUdmLHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsQ0FBQyxrQkFBa0IsQ0FBQzttREFJL0IsY0FBYztrQkFEYixLQUFLO1lBSU4sZ0JBQWdCO2tCQURmLEtBQUs7WUFJTixRQUFRO2tCQURQLEtBQUs7WUFJTixJQUFJO2tCQURILEtBQUs7WUFTRyxJQUFJO2tCQUFaLEtBQUs7WUFFRyxLQUFLO2tCQUFiLEtBQUs7WUFFRyxLQUFLO2tCQUFiLEtBQUs7WUFFRyxPQUFPO2tCQUFmLEtBQUs7WUFFRyxPQUFPO2tCQUFmLEtBQUs7WUFFRyxNQUFNO2tCQUFkLEtBQUs7WUFFSSxPQUFPO2tCQUFoQixNQUFNOztrRkEvQkksdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgYXJjIH0gZnJvbSAnZDMnO1xuXG5pbXBvcnQgeyBOdW1lcmljYWxMaW1pdFBpcGUgfSBmcm9tICcuLi9udW1lcmljYWwtbGltaXQucGlwZSc7XG5pbXBvcnQgeyBtZWFzdXJlVGV4dCB9IGZyb20gJy4uL3VuaXRzJztcblxuY29uc3QgTUFYX1ZBTFVFID0gOTk5Xzk5OTtcblxuY29uc3QgREVDSU1BTF9NQVhfVkFMVUUgPSA5OTkuOTk7XG5cbmludGVyZmFjZSBOb2RlRnJhY3Rpb25BcmMge1xuICBiYWNrZ3JvdW5kQXJjUGF0aDogYW55O1xuICBmcmFjdGlvbkFyY1BhdGg6IGFueTtcbiAgbGFiZWxzOiBzdHJpbmdbXTtcbiAgbGFiZWxDb29yZDogYW55O1xuICBmcmFjdGlvbkFyY09wYWNpdHk6IG51bWJlcjtcbiAgZnJhY3Rpb246IGFueTtcbiAgY29sb3I6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbiAgaGlkZUluZGljYXRvcj86IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjbC1yYWRpYWwtYmFyLWNoYXJ0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JhZGlhbC1iYXItY2hhcnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yYWRpYWwtYmFyLWNoYXJ0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtOdW1lcmljYWxMaW1pdFBpcGVdLFxufSlcbmV4cG9ydCBjbGFzcyBSYWRpYWxCYXJDaGFydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpXG4gIGxpbWl0c0ZyYWN0aW9uOiBudW1iZXI7XG5cbiAgQElucHV0KClcbiAgcmVxdWVzdHNGcmFjdGlvbjogbnVtYmVyO1xuXG4gIEBJbnB1dCgpXG4gIGNhcGFjaXR5OiBudW1iZXI7XG5cbiAgQElucHV0KClcbiAgZGF0YTogQXJyYXk8e1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICBmcmFjdGlvbjogbnVtYmVyO1xuICAgIGhpZGVJbmRpY2F0b3I6IGJvb2xlYW47XG4gICAgY29sb3I/OiBzdHJpbmc7XG4gIH0+O1xuXG4gIEBJbnB1dCgpIHVuaXQ6IHN0cmluZztcblxuICBASW5wdXQoKSBjb2xvcjogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIHVzYWdlOiBzdHJpbmc7XG5cbiAgQElucHV0KCkgcmVxdWVzdDogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIGxvYWRpbmc6IGJvb2xlYW47XG5cbiAgQElucHV0KCkgZmFpbGVkOiBib29sZWFuO1xuXG4gIEBPdXRwdXQoKSByZWZyZXNoID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHJlYWRvbmx5IHNpemUgPSAxNjA7XG5cbiAgcmVhZG9ubHkgb2Zmc2V0ID0gMTIwO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcGllU2l6ZSA9IDEwO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbWFyZ2luID0gNTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGlubmVyU2hyaW5rID0gMTU7XG5cbiAgcmVhZG9ubHkgbWF4VmFsdWUgPSBNQVhfVkFMVUU7XG5cbiAgcmVhZG9ubHkgZGVjaW1hbE1heFZhbHVlID0gREVDSU1BTF9NQVhfVkFMVUU7XG5cbiAgYXJjczogTm9kZUZyYWN0aW9uQXJjW107XG5cbiAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5hcmNzID0gdGhpcy5nZXRBcmNzKCk7XG4gIH1cblxuICBnZXQgdHJhbnNmb3JtKCkge1xuICAgIHJldHVybiBgdHJhbnNsYXRlKCR7KHRoaXMuc2l6ZSArIHRoaXMub2Zmc2V0KSAvIDJ9LCAke3RoaXMuc2l6ZSAvIDJ9KWA7XG4gIH1cblxuICBnZXQgb3V0ZXJSYWRpdXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2l6ZSAvIDIgLSB0aGlzLm1hcmdpbjtcbiAgfVxuXG4gIGdldCBpbm5lclJhZGl1cygpIHtcbiAgICByZXR1cm4gdGhpcy5vdXRlclJhZGl1cyAtIHRoaXMucGllU2l6ZTtcbiAgfVxuXG4gIGFyY1RyYWNrQnlGbihpbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBudW1lcmljYWxMaW1pdFBpcGU6IE51bWVyaWNhbExpbWl0UGlwZSkge31cblxuICBwcml2YXRlIGdldEFyY3MoKTogTm9kZUZyYWN0aW9uQXJjW10ge1xuICAgIGxldCBhcmNzOiBOb2RlRnJhY3Rpb25BcmNbXSA9IFtdO1xuICAgIGNvbnN0IGxpbWl0c0FyYyA9IHRoaXMuZ2V0QXJjKFxuICAgICAgMCxcbiAgICAgIHRoaXMucmVxdWVzdHNGcmFjdGlvbixcbiAgICAgICdyZXF1ZXN0X3JhdGUnLFxuICAgICAgMSxcbiAgICAgIHRoaXMucmVxdWVzdCxcbiAgICApO1xuICAgIGNvbnN0IHJlcXVlc3RzQXJjID0gdGhpcy5nZXRBcmMoXG4gICAgICAxLFxuICAgICAgdGhpcy5saW1pdHNGcmFjdGlvbixcbiAgICAgICd1c2FnZV9yYXRlJyxcbiAgICAgIDAuNyxcbiAgICAgIHRoaXMudXNhZ2UsXG4gICAgKTtcbiAgICBhcmNzID0gW3JlcXVlc3RzQXJjLCBsaW1pdHNBcmNdO1xuXG4gICAgaWYgKHRoaXMuZGF0YSkge1xuICAgICAgYXJjcyA9IHRoaXMuaGFuZGVsRGF0YSgpO1xuICAgIH1cbiAgICByZXR1cm4gYXJjcztcbiAgfVxuXG4gIGdldEFyYyA9IChcbiAgICBsZXZlbDogbnVtYmVyLFxuICAgIGZyYWN0aW9uOiBudW1iZXIsXG4gICAgbGFiZWw6IHN0cmluZyxcbiAgICBvcGFjaXR5OiBudW1iZXIsXG4gICAgdmFsdWU6IHN0cmluZyxcbiAgICBoaWRlSW5kaWNhdG9yID0gZmFsc2UsXG4gICAgY29sb3IgPSB0aGlzLmNvbG9yLFxuICApOiBOb2RlRnJhY3Rpb25BcmMgPT4ge1xuICAgIGZyYWN0aW9uID0gZnJhY3Rpb24gfHwgMDtcbiAgICByZXR1cm4ge1xuICAgICAgYmFja2dyb3VuZEFyY1BhdGg6IHRoaXMuZ2V0QmFja2dyb3VuZEFyY1BhdGgobGV2ZWwpLFxuICAgICAgZnJhY3Rpb25BcmNQYXRoOiB0aGlzLmdldEZyYWN0aW9uQXJjUGF0aChmcmFjdGlvbiB8fCAwLCBsZXZlbCksXG4gICAgICBsYWJlbHM6IFtmcmFjdGlvbiA/ICcnICsgZnJhY3Rpb24gOiBudWxsLCBsYWJlbF0sXG4gICAgICBsYWJlbENvb3JkOiB0aGlzLmdldFRleHRDb29yZChsZXZlbCksXG4gICAgICBmcmFjdGlvbkFyY09wYWNpdHk6IG9wYWNpdHksXG4gICAgICBmcmFjdGlvbixcbiAgICAgIGNvbG9yLFxuICAgICAgdmFsdWUsXG4gICAgICBoaWRlSW5kaWNhdG9yLFxuICAgIH07XG4gIH07XG5cbiAgaGFuZGVsRGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLm1hcCgoaXRlbSwgaW5kZXgpID0+XG4gICAgICB0aGlzLmdldEFyYyhcbiAgICAgICAgaW5kZXgsXG4gICAgICAgIGl0ZW0uZnJhY3Rpb24sXG4gICAgICAgIGl0ZW0udGl0bGUsXG4gICAgICAgIGl0ZW0uY29sb3IgPyAxIDogKygxIC8gKGluZGV4ICsgMSkpLnRvRml4ZWQoMiksXG4gICAgICAgIGl0ZW0udmFsdWUsXG4gICAgICAgIGl0ZW0uaGlkZUluZGljYXRvcixcbiAgICAgICAgaXRlbS5jb2xvcixcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIGdldEJhY2tncm91bmRBcmNQYXRoKGxldmVsID0gMCkge1xuICAgIGNvbnN0IHNocmluayA9IGxldmVsICogdGhpcy5pbm5lclNocmluaztcbiAgICByZXR1cm4gYXJjKCkuY29ybmVyUmFkaXVzKDIwKSh7XG4gICAgICBzdGFydEFuZ2xlOiAwLFxuICAgICAgZW5kQW5nbGU6IE1hdGguUEkgKiAxLjUsXG4gICAgICBpbm5lclJhZGl1czogdGhpcy5pbm5lclJhZGl1cyAtIHNocmluayxcbiAgICAgIG91dGVyUmFkaXVzOiB0aGlzLm91dGVyUmFkaXVzIC0gc2hyaW5rLFxuICAgIH0pO1xuICB9XG5cbiAgb25SZWZyZXNoKCkge1xuICAgIHRoaXMucmVmcmVzaC5uZXh0KG51bGwpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGcmFjdGlvbkFyY1BhdGgoZnJhY3Rpb246IG51bWJlciwgbGV2ZWwgPSAwKSB7XG4gICAgY29uc3Qgc2hyaW5rID0gbGV2ZWwgKiB0aGlzLmlubmVyU2hyaW5rO1xuICAgIGZyYWN0aW9uID0gTWF0aC5taW4oMTAwLCBmcmFjdGlvbik7XG4gICAgcmV0dXJuIGFyYygpLmNvcm5lclJhZGl1cygyMCkoe1xuICAgICAgc3RhcnRBbmdsZTogMCxcbiAgICAgIGVuZEFuZ2xlOiAoTWF0aC5QSSAqIDEuNSAqIGZyYWN0aW9uKSAvIDEwMCxcbiAgICAgIGlubmVyUmFkaXVzOiB0aGlzLmlubmVyUmFkaXVzIC0gc2hyaW5rLFxuICAgICAgb3V0ZXJSYWRpdXM6IHRoaXMub3V0ZXJSYWRpdXMgLSBzaHJpbmssXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldFRleHRDb29yZChsZXZlbCA9IDApOiB7IGR4OiBudW1iZXI7IGR5OiBudW1iZXIgfSB7XG4gICAgY29uc3Qgc2hyaW5rID0gbGV2ZWwgKiB0aGlzLmlubmVyU2hyaW5rO1xuICAgIHJldHVybiB7XG4gICAgICBkeDogLTQsXG4gICAgICBkeTogLSh0aGlzLm91dGVyUmFkaXVzIC0gc2hyaW5rIC0gNSksXG4gICAgfTtcbiAgfVxuXG4gIGdldExhYmVsRHggPSAoeDogbnVtYmVyLCB0ZXh0OiBudW1iZXIsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICByZXR1cm4gaW5kZXhcbiAgICAgID8geCAtIChtZWFzdXJlVGV4dCh0aGlzLm51bWVyaWNhbExpbWl0UGlwZS50cmFuc2Zvcm0oK3RleHQpKS53aWR0aCArIDIwKVxuICAgICAgOiB4O1xuICB9O1xufVxuIiwiPHN2Z1xuICBbYXR0ci53aWR0aF09XCJzaXplICsgb2Zmc2V0XCJcbiAgW2F0dHIuaGVpZ2h0XT1cInNpemVcIlxuPlxuICA8c3ZnOmcgW2F0dHIudHJhbnNmb3JtXT1cInRyYW5zZm9ybVwiPlxuICAgIDxzdmc6ZyAqbmdGb3I9XCJsZXQgYXJjIG9mIGFyY3M7IHRyYWNrQnk6IGFyY1RyYWNrQnlGbjsgaW5kZXggYXMgaVwiPlxuICAgICAgPHN2ZzpwYXRoXG4gICAgICAgIGNsYXNzPVwiZnVsbC1hcmMtcGF0aFwiXG4gICAgICAgIFthdWlUb29sdGlwXT1cInRvb2x0aXBUZW1wbGF0ZVwiXG4gICAgICAgIFthdWlUb29sdGlwQ29udGV4dF09XCJ7IGluZGV4OiBpLCBhcmM6IGFyYyB9XCJcbiAgICAgICAgW2F0dHIuZF09XCJhcmMuYmFja2dyb3VuZEFyY1BhdGhcIlxuICAgICAgPjwvc3ZnOnBhdGg+XG4gICAgICA8c3ZnOnBhdGhcbiAgICAgICAgW3N0eWxlLmNvbG9yXT1cImFyYy5jb2xvclwiXG4gICAgICAgIFthdWlUb29sdGlwXT1cInRvb2x0aXBUZW1wbGF0ZVwiXG4gICAgICAgIFthdWlUb29sdGlwQ29udGV4dF09XCJ7IGluZGV4OiBpLCBhcmM6IGFyYyB9XCJcbiAgICAgICAgY2xhc3M9XCJmcmFjdGlvbi1hcmMtcGF0aFwiXG4gICAgICAgIFthdHRyLmZpbGxdPVwiYXJjLmNvbG9yXCJcbiAgICAgICAgW3N0eWxlLm9wYWNpdHldPVwiYXJjLmZyYWN0aW9uQXJjT3BhY2l0eVwiXG4gICAgICAgIFthdHRyLmRdPVwiYXJjLmZyYWN0aW9uQXJjUGF0aFwiXG4gICAgICAgIG5vZGVOYW1lXG4gICAgICA+PC9zdmc6cGF0aD5cbiAgICAgIDxzdmc6dGV4dFxuICAgICAgICAqbmdGb3I9XCJsZXQgbGFiZWwgb2YgYXJjLmxhYmVsczsgaW5kZXggYXMgbGFiZWxJbmRleFwiXG4gICAgICAgIGNsYXNzPVwiZnJhY3Rpb24tbGFiZWwtdGV4dFwiXG4gICAgICAgIFthdHRyLmR4XT1cIlxuICAgICAgICAgIGFyYy5sYWJlbENvb3JkLmR4XG4gICAgICAgICAgICB8IHB1cmVcbiAgICAgICAgICAgICAgOiBnZXRMYWJlbER4XG4gICAgICAgICAgICAgIDogJGFueShhcmMubGFiZWxzW2xhYmVsSW5kZXggPyBsYWJlbEluZGV4IC0gMSA6IGxhYmVsSW5kZXhdKVxuICAgICAgICAgICAgICA6IGxhYmVsSW5kZXhcbiAgICAgICAgXCJcbiAgICAgICAgW2F0dHIuZHldPVwiYXJjLmxhYmVsQ29vcmQuZHlcIlxuICAgICAgICB0ZXh0LWFuY2hvcj1cImVuZFwiXG4gICAgICAgIGFjbEluZGljYXRvckNvbG9yXG4gICAgICAgIFtpbmRpY2F0b3JdPVwibGFiZWxJbmRleCB8fCBhcmM/LmhpZGVJbmRpY2F0b3IgPyAwIDogbGFiZWxcIlxuICAgICAgPlxuICAgICAgICB7e1xuICAgICAgICAgIGxhYmVsSW5kZXhcbiAgICAgICAgICAgID8gKGxhYmVsIHwgdHJhbnNsYXRlKVxuICAgICAgICAgICAgOiAoK2xhYmVsIHwgYWNsTnVtZXJpY2FsTGltaXQgfCBhY2xGaWVsZE5vdEF2YWlsYWJsZSlcbiAgICAgICAgfX17eyBsYWJlbEluZGV4ID8gJycgOiAnJScgfX1cbiAgICAgIDwvc3ZnOnRleHQ+XG4gICAgPC9zdmc6Zz5cblxuICAgIDxzdmc6Z1xuICAgICAgY2xhc3M9XCJjZW50ZXItdGV4dFwiXG4gICAgICBkeT1cIi01XCJcbiAgICA+XG4gICAgICA8c3ZnOnRleHRcbiAgICAgICAgW3N0eWxlLmZvbnQtc2l6ZV09XCJcbiAgICAgICAgICBjYXBhY2l0eSA+IDk5OTkgfHwgYXJjcz8ubGVuZ3RoID4gMiA/ICcxNnB4JyA6ICcyNHB4J1xuICAgICAgICBcIlxuICAgICAgICB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiXG4gICAgICAgIGNsYXNzPVwiY2VudGVyLXRleHRfX21haW5cIlxuICAgICAgPlxuICAgICAgICB7eyArY2FwYWNpdHkgfCBhY2xOdW1lcmljYWxMaW1pdCB8IGFjbEZpZWxkTm90QXZhaWxhYmxlIH19XG4gICAgICA8L3N2Zzp0ZXh0PlxuICAgICAgPHN2Zzp0ZXh0XG4gICAgICAgIHRleHQtYW5jaG9yPVwibWlkZGxlXCJcbiAgICAgICAgZHk9XCIyMFwiXG4gICAgICAgIGNsYXNzPVwiY2VudGVyLXRleHRfX3N1YlwiXG4gICAgICA+XG4gICAgICAgIHt7ICd0b3RhbF9udW1iZXInIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L3N2Zzp0ZXh0PlxuICAgIDwvc3ZnOmc+XG4gIDwvc3ZnOmc+XG48L3N2Zz5cblxuPGRpdlxuICBjbGFzcz1cInN0YXR1cy1jb250YWluZXJcIlxuICAqbmdJZj1cImxvYWRpbmcgfHwgZmFpbGVkXCJcbj5cbiAgPGRpdlxuICAgICpuZ0lmPVwiZmFpbGVkICYmICFsb2FkaW5nXCJcbiAgICBjbGFzcz1cInN0YXR1cyBmYWlsZWRcIlxuICA+XG4gICAgPGF1aS1pY29uXG4gICAgICBpY29uPVwiZXhjbGFtYXRpb25fdHJpYW5nbGVfc1wiXG4gICAgICBiYWNrZ3JvdW5kPVwidHJpYW5nbGVcIlxuICAgID48L2F1aS1pY29uPlxuICAgIHt7ICdmYWlsZWRfbG9hZF9wbGVhc2UnIHwgdHJhbnNsYXRlIH19XG4gICAgPGJ1dHRvblxuICAgICAgYXVpLWJ1dHRvbj1cInRleHRcIlxuICAgICAgKGNsaWNrKT1cIm9uUmVmcmVzaCgpXCJcbiAgICA+XG4gICAgICB7eyAncmVmcmVzaCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICAqbmdJZj1cImxvYWRpbmdcIlxuICAgIGNsYXNzPVwic3RhdHVzIGxvYWRpbmdcIlxuICA+XG4gICAgPGF1aS1pY29uIGljb249XCJzcGlubmVyXCI+PC9hdWktaWNvbj4ge3sgJ2xvYWRpbmcnIHwgdHJhbnNsYXRlIH19XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZVxuICAjdG9vbHRpcFRlbXBsYXRlXG4gIGxldC1pbmRleD1cImluZGV4XCJcbiAgbGV0LWFyYz1cImFyY1wiXG4+XG4gIDxpXG4gICAgY2xhc3M9XCJkb3RcIlxuICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImFyYy5jb2xvclwiXG4gID48L2k+XG4gIHt7IGFyYy5sYWJlbHNbMV0gfCB0cmFuc2xhdGUgfX06XG4gIHt7ICthcmMubGFiZWxzWzBdIHwgYWNsTnVtZXJpY2FsTGltaXQgfCBhY2xGaWVsZE5vdEF2YWlsYWJsZSB9fSUgKHt7XG4gICAgK2FyYy52YWx1ZSB8IGFjbE51bWVyaWNhbExpbWl0IHwgYWNsRmllbGROb3RBdmFpbGFibGVcbiAgfX1cbiAge3sgdW5pdCB8IHRyYW5zbGF0ZSB9fSlcbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -0,0 +1,14 @@
1
+ let _context;
2
+ export function getCanvasContext() {
3
+ if (!_context) {
4
+ _context = document.createElement('canvas').getContext('2d');
5
+ }
6
+ return _context;
7
+ }
8
+ export function measureText(text, fontSize = 12) {
9
+ const fontStyle = `${fontSize}px`;
10
+ const context = getCanvasContext();
11
+ context.font = fontStyle;
12
+ return context.measureText(text);
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvcGllLWRlcml2YXRpdmUtY2hhcnQvdW5pdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSSxRQUFrQyxDQUFDO0FBQ3ZDLE1BQU0sVUFBVSxnQkFBZ0I7SUFDOUIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2QsUUFBUSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBRSxDQUFDO0lBQ2hFLENBQUM7SUFDRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBQyxJQUFZLEVBQUUsUUFBUSxHQUFHLEVBQUU7SUFDckQsTUFBTSxTQUFTLEdBQUcsR0FBRyxRQUFRLElBQUksQ0FBQztJQUNsQyxNQUFNLE9BQU8sR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO0lBQ25DLE9BQU8sQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO0lBQ3pCLE9BQU8sT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNuQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsibGV0IF9jb250ZXh0OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ7XG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2FudmFzQ29udGV4dCgpIHtcbiAgaWYgKCFfY29udGV4dCkge1xuICAgIF9jb250ZXh0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJykuZ2V0Q29udGV4dCgnMmQnKSE7XG4gIH1cbiAgcmV0dXJuIF9jb250ZXh0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVhc3VyZVRleHQodGV4dDogc3RyaW5nLCBmb250U2l6ZSA9IDEyKTogVGV4dE1ldHJpY3Mge1xuICBjb25zdCBmb250U3R5bGUgPSBgJHtmb250U2l6ZX1weGA7XG4gIGNvbnN0IGNvbnRleHQgPSBnZXRDYW52YXNDb250ZXh0KCk7XG4gIGNvbnRleHQuZm9udCA9IGZvbnRTdHlsZTtcbiAgcmV0dXJuIGNvbnRleHQubWVhc3VyZVRleHQodGV4dCk7XG59XG4iXX0=