@indice/ng-components 0.2.32 → 0.2.33

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 (111) hide show
  1. package/README.md +4 -4
  2. package/_styles.css +3457 -3457
  3. package/bundles/indice-ng-components.umd.js +3204 -3198
  4. package/bundles/indice-ng-components.umd.js.map +1 -1
  5. package/esm2015/indice-ng-components.js +6 -6
  6. package/esm2015/lib/controls/avatar-initials/avatar-initials.component.js +47 -47
  7. package/esm2015/lib/controls/collapsible-panel/collapsible-panel.component.js +20 -20
  8. package/esm2015/lib/controls/date-picker/date-picker.component.js +217 -217
  9. package/esm2015/lib/controls/drop-down-menu/drop-down-menu.component.js +62 -62
  10. package/esm2015/lib/controls/kpi-tile/kpi-tile.component.js +32 -32
  11. package/esm2015/lib/controls/list-view/list-column.component.js +19 -19
  12. package/esm2015/lib/controls/list-view/list-details-section.component.js +14 -14
  13. package/esm2015/lib/controls/list-view/list-tile.component.js +14 -14
  14. package/esm2015/lib/controls/list-view/list-view-empty-state.component.js +25 -25
  15. package/esm2015/lib/controls/list-view/list-view.component.js +133 -133
  16. package/esm2015/lib/controls/pager/pager.component.js +114 -114
  17. package/esm2015/lib/controls/side-pane/side-pane.component.js +71 -71
  18. package/esm2015/lib/controls/skeleton-loader/skeleton-loader.component.js +25 -25
  19. package/esm2015/lib/controls/toaster/toaster-container.component.js +28 -28
  20. package/esm2015/lib/controls/toaster/toaster.component.js +29 -29
  21. package/esm2015/lib/controls/toggle/toggle.component.js +56 -56
  22. package/esm2015/lib/directives/click-outside.directive.js +181 -181
  23. package/esm2015/lib/directives/dynamic-component-host.directive.js +17 -17
  24. package/esm2015/lib/helpers/base-list.component.js +182 -182
  25. package/esm2015/lib/icons.js +30 -30
  26. package/esm2015/lib/layouts/shell/shell-footer/shell-footer.component.js +17 -17
  27. package/esm2015/lib/layouts/shell/shell-header/shell-header.component.js +98 -98
  28. package/esm2015/lib/layouts/shell/shell-layout/shell-layout.component.js +92 -92
  29. package/esm2015/lib/layouts/views/form-layout/form-layout.component.js +72 -72
  30. package/esm2015/lib/layouts/views/model-view-layout/model-view-layout.component.js +47 -47
  31. package/esm2015/lib/layouts/views/side-view-layout/side-view-layout.component.js +73 -73
  32. package/esm2015/lib/layouts/views/view-layout/view-layout.component.js +87 -87
  33. package/esm2015/lib/ng-components.module.js +133 -133
  34. package/esm2015/lib/pages/auth/auth-callback/auth-callback.component.js +74 -74
  35. package/esm2015/lib/pages/auth/auth-renew/auth-renew.component.js +25 -25
  36. package/esm2015/lib/pages/auth/logged-out/logged-out.component.js +26 -26
  37. package/esm2015/lib/pages/http-status/error/error.component.js +15 -15
  38. package/esm2015/lib/pages/http-status/page-not-found/page-not-found.component.js +14 -14
  39. package/esm2015/lib/pages/http-status/unauthorized/unauthorized.component.js +22 -22
  40. package/esm2015/lib/pipes/address.pipe.js +17 -17
  41. package/esm2015/lib/pipes/duration-format.pipe.js +60 -60
  42. package/esm2015/lib/services/component-loader/component-loader-options.class.js +8 -8
  43. package/esm2015/lib/services/component-loader/component-loader.class.js +192 -192
  44. package/esm2015/lib/services/component-loader/component-loader.factory.js +35 -35
  45. package/esm2015/lib/services/component-loader/content-ref.class.js +13 -13
  46. package/esm2015/lib/services/modal-service/modal-backdrop-component.js +44 -44
  47. package/esm2015/lib/services/modal-service/modal-container-component.js +117 -117
  48. package/esm2015/lib/services/modal-service/modal-options.class.js +31 -31
  49. package/esm2015/lib/services/modal-service/modal-service.js +214 -214
  50. package/esm2015/lib/services/modal-service/modal-styles.class.js +11 -11
  51. package/esm2015/lib/services/modal-service/modal.class.js +24 -24
  52. package/esm2015/lib/services/toaster.service.js +23 -23
  53. package/esm2015/lib/tokens.js +4 -4
  54. package/esm2015/lib/types.js +104 -104
  55. package/esm2015/public-api.js +53 -53
  56. package/fesm2015/indice-ng-components.js +2758 -2758
  57. package/fesm2015/indice-ng-components.js.map +1 -1
  58. package/indice-ng-components.d.ts +6 -6
  59. package/indice-ng-components.metadata.json +1 -1
  60. package/lib/controls/avatar-initials/avatar-initials.component.d.ts +11 -11
  61. package/lib/controls/collapsible-panel/collapsible-panel.component.d.ts +7 -7
  62. package/lib/controls/date-picker/date-picker.component.d.ts +43 -43
  63. package/lib/controls/drop-down-menu/drop-down-menu.component.d.ts +22 -22
  64. package/lib/controls/kpi-tile/kpi-tile.component.d.ts +10 -10
  65. package/lib/controls/list-view/list-column.component.d.ts +6 -6
  66. package/lib/controls/list-view/list-details-section.component.d.ts +4 -4
  67. package/lib/controls/list-view/list-tile.component.d.ts +4 -4
  68. package/lib/controls/list-view/list-view-empty-state.component.d.ts +8 -8
  69. package/lib/controls/list-view/list-view.component.d.ts +50 -50
  70. package/lib/controls/pager/pager.component.d.ts +32 -32
  71. package/lib/controls/side-pane/side-pane.component.d.ts +15 -15
  72. package/lib/controls/skeleton-loader/skeleton-loader.component.d.ts +8 -8
  73. package/lib/controls/toaster/toaster-container.component.d.ts +10 -10
  74. package/lib/controls/toaster/toaster.component.d.ts +12 -12
  75. package/lib/controls/toggle/toggle.component.d.ts +16 -16
  76. package/lib/directives/click-outside.directive.d.ts +37 -37
  77. package/lib/directives/dynamic-component-host.directive.d.ts +6 -6
  78. package/lib/helpers/base-list.component.d.ts +39 -39
  79. package/lib/icons.d.ts +28 -28
  80. package/lib/layouts/shell/shell-footer/shell-footer.component.d.ts +5 -5
  81. package/lib/layouts/shell/shell-header/shell-header.component.d.ts +33 -33
  82. package/lib/layouts/shell/shell-layout/shell-layout.component.d.ts +23 -23
  83. package/lib/layouts/views/form-layout/form-layout.component.d.ts +21 -21
  84. package/lib/layouts/views/model-view-layout/model-view-layout.component.d.ts +22 -22
  85. package/lib/layouts/views/side-view-layout/side-view-layout.component.d.ts +24 -24
  86. package/lib/layouts/views/view-layout/view-layout.component.d.ts +27 -27
  87. package/lib/ng-components.module.d.ts +7 -7
  88. package/lib/pages/auth/auth-callback/auth-callback.component.d.ts +11 -11
  89. package/lib/pages/auth/auth-renew/auth-renew.component.d.ts +9 -9
  90. package/lib/pages/auth/logged-out/logged-out.component.d.ts +9 -9
  91. package/lib/pages/http-status/error/error.component.d.ts +5 -5
  92. package/lib/pages/http-status/page-not-found/page-not-found.component.d.ts +5 -5
  93. package/lib/pages/http-status/unauthorized/unauthorized.component.d.ts +8 -8
  94. package/lib/pipes/address.pipe.d.ts +5 -5
  95. package/lib/pipes/duration-format.pipe.d.ts +5 -5
  96. package/lib/services/component-loader/component-loader-options.class.d.ts +30 -30
  97. package/lib/services/component-loader/component-loader.class.d.ts +92 -92
  98. package/lib/services/component-loader/component-loader.factory.d.ts +21 -21
  99. package/lib/services/component-loader/content-ref.class.d.ts +12 -12
  100. package/lib/services/modal-service/modal-backdrop-component.d.ts +17 -17
  101. package/lib/services/modal-service/modal-container-component.d.ts +30 -30
  102. package/lib/services/modal-service/modal-options.class.d.ts +77 -77
  103. package/lib/services/modal-service/modal-service.d.ts +55 -55
  104. package/lib/services/modal-service/modal-styles.class.d.ts +10 -10
  105. package/lib/services/modal-service/modal.class.d.ts +40 -40
  106. package/lib/services/toaster.service.d.ts +8 -8
  107. package/lib/tokens.d.ts +4 -4
  108. package/lib/types.d.ts +124 -124
  109. package/modal.css +157 -157
  110. package/package.json +1 -1
  111. package/public-api.d.ts +41 -41
@@ -1,214 +1,214 @@
1
- import { DOCUMENT } from '@angular/common';
2
- import { Inject, Injectable, Optional, RendererFactory2 } from '@angular/core';
3
- import { Subject } from 'rxjs';
4
- import { animationTime, cssClassNames } from './modal-styles.class';
5
- import { ModalBackdropComponent } from './modal-backdrop-component';
6
- import { ModalContainerComponent } from './modal-container-component';
7
- import { modalConfigDefaults, ModalOptions, MODAL_CONFIG_DEFAULT_OVERRIDE } from './modal-options.class';
8
- import { Modal } from './modal.class';
9
- import { ComponentLoaderFactory } from '../component-loader/component-loader.factory';
10
- /**
11
- * A service for using modals.
12
- *
13
- * @public
14
- */
15
- export class ModalService {
16
- constructor(clf, rendererFactory, document, modalDefaultOption) {
17
- this.clf = clf;
18
- this.document = document;
19
- this.onBeforeShow = new Subject();
20
- this.onShown = new Subject();
21
- this.onBeforeHide = new Subject();
22
- this.onHidden = new Subject();
23
- this.loaders = [];
24
- this.modalsCount = 0;
25
- this.initialPadding = '0px';
26
- this.backdropLoader = this.clf.createLoader();
27
- this.defaultConfig = Object.assign(Object.assign({}, modalConfigDefaults), modalDefaultOption);
28
- this.renderer = rendererFactory.createRenderer(null, null);
29
- }
30
- ngOnDestroy() {
31
- this.loaders.forEach((loader) => { var _a; return (_a = loader.instance) === null || _a === void 0 ? void 0 : _a.hide(); });
32
- }
33
- /**
34
- * Opens a new modal.
35
- *
36
- * @param content - `Component` or `TemplateRef` type.
37
- * @param config - Specific {@link ModalOptions | options} for this modal. Global and specific options are merged.
38
- * @returns An instance of {@link Modal}
39
- */
40
- show(content, config) {
41
- this.modalsCount++;
42
- const combinedConfig = Object.assign(Object.assign({}, this.defaultConfig), config);
43
- combinedConfig.id = (config === null || config === void 0 ? void 0 : config.id) || new Date().getUTCMilliseconds();
44
- this.createLoaders();
45
- this.addBodyPadding();
46
- if (this.modalsCount === 1) {
47
- this.renderer.addClass(this.document.body, cssClassNames.modalOpen);
48
- }
49
- this.showBackdrop(combinedConfig);
50
- return this.showModal(content, combinedConfig);
51
- }
52
- /**
53
- * Hide an active modal.
54
- * @param id - Id of modal to hide. If not provided all active modals are hidden.
55
- * @param result - A result to be sent to observers.
56
- */
57
- hide(id, result) {
58
- if (this.modalsCount === 1 || id == null) {
59
- this.hideBackdrop();
60
- this.revertScrollbar();
61
- this.renderer.removeClass(this.document.body, cssClassNames.modalOpen);
62
- }
63
- this.modalsCount = this.modalsCount >= 1 && id != null ? this.modalsCount - 1 : 0;
64
- setTimeout(() => {
65
- this.hideModal(id, result);
66
- this.removeLoaders(id);
67
- },
68
- //Bug
69
- //Should use combined config but for the moment is not possible to pass it this parameter.
70
- //If config is an instance variable then every newly opened modal will override the config
71
- //resulting in opened modals to get a new configuration
72
- this.defaultConfig.animated ? animationTime.backdrop : 0);
73
- }
74
- getActiveModal() {
75
- return this.loaders[this.modalsCount - 1].instance;
76
- }
77
- showModal(content, combinedConfig) {
78
- var _a;
79
- const modalLoader = this.loaders[this.loaders.length - 1];
80
- if (combinedConfig && combinedConfig.providers) {
81
- combinedConfig.providers.forEach((provider) => modalLoader.provide(provider));
82
- }
83
- const modal = new Modal();
84
- const modalContainerRef = modalLoader
85
- .provide({ provide: ModalOptions, useValue: combinedConfig })
86
- .provide({ provide: Modal, useValue: modal })
87
- .attach(ModalContainerComponent)
88
- .to('body');
89
- modal.setClass = (newClass) => {
90
- if (modalContainerRef.instance) {
91
- modalContainerRef.instance.config.class = newClass;
92
- }
93
- };
94
- modal.onBeforeHide = new Subject();
95
- modal.onHidden = new Subject();
96
- this.copyEvent(modalLoader.onBeforeHide, modal.onBeforeHide);
97
- this.copyEvent(modalLoader.onHidden, modal.onHidden);
98
- modalContainerRef.show({
99
- content,
100
- animationsEnabled: combinedConfig.animated,
101
- initialState: combinedConfig.initialState,
102
- modalService: this,
103
- id: combinedConfig.id,
104
- });
105
- if (modalContainerRef.instance) {
106
- modalContainerRef.instance.level = this.modalsCount;
107
- modal.content = modalLoader.getInnerComponent();
108
- modal.id = (_a = modalContainerRef.instance.config) === null || _a === void 0 ? void 0 : _a.id;
109
- modal.hide = (res) => { var _a; return (_a = modalContainerRef.instance) === null || _a === void 0 ? void 0 : _a.hide(res); };
110
- }
111
- return modal;
112
- }
113
- hideModal(id, result) {
114
- if (id != null) {
115
- const indexToRemove = this.loaders.findIndex((loader) => { var _a; return ((_a = loader.instance) === null || _a === void 0 ? void 0 : _a.config.id) === id; });
116
- const modalLoader = this.loaders[indexToRemove];
117
- if (modalLoader) {
118
- modalLoader.hide(id, result);
119
- }
120
- }
121
- else {
122
- this.loaders.forEach((loader) => {
123
- if (loader.instance) {
124
- loader.hide(loader.instance.config.id);
125
- }
126
- });
127
- }
128
- }
129
- showBackdrop(combinedConfig) {
130
- const isBackdropEnabled = combinedConfig.backdrop === true || combinedConfig.backdrop === 'static';
131
- const isBackdropInDOM = this.backdropRef != null;
132
- if (isBackdropEnabled && !isBackdropInDOM) {
133
- this.backdropLoader
134
- .attach(ModalBackdropComponent)
135
- .to('body')
136
- .show({ animationsEnabled: combinedConfig.animated, backdropLoader: this.backdropLoader });
137
- this.backdropRef = this.backdropLoader.componentRef;
138
- }
139
- }
140
- hideBackdrop() {
141
- if (!this.backdropRef) {
142
- return;
143
- }
144
- this.backdropRef.instance.hide();
145
- this.backdropRef = void 0;
146
- }
147
- removeLoaders(id) {
148
- if (id != null) {
149
- const indexToRemove = this.loaders.findIndex((loader) => { var _a; return ((_a = loader.instance) === null || _a === void 0 ? void 0 : _a.config.id) === id; });
150
- if (indexToRemove >= 0) {
151
- this.loaders.splice(indexToRemove, 1);
152
- this.loaders.forEach((loader, i) => {
153
- if (loader.instance) {
154
- loader.instance.level = i + 1;
155
- }
156
- });
157
- }
158
- }
159
- else {
160
- this.loaders.splice(0, this.loaders.length);
161
- }
162
- }
163
- addBodyPadding() {
164
- if (this.modalsCount === 1) {
165
- const width = this.getScrollbarWidth();
166
- if (this.isScrollBarPresent(width)) {
167
- this.initialPadding = this.document.body.style.paddingRight;
168
- const actualPadding = parseFloat(window.getComputedStyle(this.document.body).paddingRight);
169
- this.document.body.style.paddingRight = `${actualPadding + width}px`;
170
- }
171
- }
172
- }
173
- revertScrollbar() {
174
- this.document.body.style.paddingRight = this.initialPadding;
175
- }
176
- getScrollbarWidth() {
177
- const measurer = this.document.createElement('div');
178
- measurer.className = 'modal-scrollbar-measure';
179
- const body = this.document.body;
180
- body.appendChild(measurer);
181
- const width = measurer.getBoundingClientRect().width - measurer.clientWidth;
182
- body.removeChild(measurer);
183
- return width;
184
- }
185
- isScrollBarPresent(scrollbarWidth) {
186
- const rect = this.document.body.getBoundingClientRect();
187
- const bodyToViewportGap = window.innerWidth - (rect.left + rect.right);
188
- const uncertainty = 0.1 * scrollbarWidth;
189
- return bodyToViewportGap >= scrollbarWidth - uncertainty;
190
- }
191
- createLoaders() {
192
- const loader = this.clf.createLoader();
193
- this.copyEvent(loader.onBeforeShow, this.onBeforeShow);
194
- this.copyEvent(loader.onShown, this.onShown);
195
- this.copyEvent(loader.onBeforeHide, this.onBeforeHide);
196
- this.copyEvent(loader.onHidden, this.onHidden);
197
- this.loaders.push(loader);
198
- }
199
- copyEvent(from, to) {
200
- from.subscribe((data) => {
201
- to.next(data);
202
- });
203
- }
204
- }
205
- ModalService.decorators = [
206
- { type: Injectable }
207
- ];
208
- ModalService.ctorParameters = () => [
209
- { type: ComponentLoaderFactory },
210
- { type: RendererFactory2 },
211
- { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
212
- { type: ModalOptions, decorators: [{ type: Optional }, { type: Inject, args: [MODAL_CONFIG_DEFAULT_OVERRIDE,] }] }
213
- ];
214
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9zZXJ2aWNlcy9tb2RhbC1zZXJ2aWNlL21vZGFsLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBZ0IsTUFBTSxFQUFFLFVBQVUsRUFBYSxRQUFRLEVBQWEsZ0JBQWdCLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFDaEksT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxZQUFZLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRXRGOzs7O0dBSUc7QUFFSCxNQUFNLE9BQU8sWUFBWTtJQWF2QixZQUNVLEdBQTJCLEVBQ25DLGVBQWlDLEVBQ1AsUUFBYSxFQUNZLGtCQUFnQztRQUgzRSxRQUFHLEdBQUgsR0FBRyxDQUF3QjtRQUVULGFBQVEsR0FBUixRQUFRLENBQUs7UUFmakMsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzdCLFlBQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ3hCLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUM3QixhQUFRLEdBQUcsSUFB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QUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRU8sU0FBUyxDQUFDLElBQXNCLEVBQUUsRUFBb0I7UUFDNUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3RCLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzs7WUEzTkYsVUFBVTs7O1lBUEYsc0JBQXNCO1lBUjRDLGdCQUFnQjs0Q0FnQ3RGLE1BQU0sU0FBQyxRQUFRO1lBMUJVLFlBQVksdUJBMkJyQyxRQUFRLFlBQUksTUFBTSxTQUFDLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudFJlZiwgSW5qZWN0LCBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIE9wdGlvbmFsLCBSZW5kZXJlcjIsIFJlbmRlcmVyRmFjdG9yeTIsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb21wb25lbnRMb2FkZXIgfSBmcm9tICcuLi9jb21wb25lbnQtbG9hZGVyL2NvbXBvbmVudC1sb2FkZXIuY2xhc3MnO1xuaW1wb3J0IHsgYW5pbWF0aW9uVGltZSwgY3NzQ2xhc3NOYW1lcyB9IGZyb20gJy4vbW9kYWwtc3R5bGVzLmNsYXNzJztcbmltcG9ydCB7IE1vZGFsQmFja2Ryb3BDb21wb25lbnQgfSBmcm9tICcuL21vZGFsLWJhY2tkcm9wLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBNb2RhbENvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwtY29udGFpbmVyLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBtb2RhbENvbmZpZ0RlZmF1bHRzLCBNb2RhbE9wdGlvbnMsIE1PREFMX0NPTkZJR19ERUZBVUxUX09WRVJSSURFIH0gZnJvbSAnLi9tb2RhbC1vcHRpb25zLmNsYXNzJztcbmltcG9ydCB7IE1vZGFsIH0gZnJvbSAnLi9tb2RhbC5jbGFzcyc7XG5pbXBvcnQgeyBDb21wb25lbnRMb2FkZXJGYWN0b3J5IH0gZnJvbSAnLi4vY29tcG9uZW50LWxvYWRlci9jb21wb25lbnQtbG9hZGVyLmZhY3RvcnknO1xuXG4vKipcbiAqIEEgc2VydmljZSBmb3IgdXNpbmcgbW9kYWxzLlxuICpcbiAqIEBwdWJsaWNcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1vZGFsU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgb25CZWZvcmVTaG93ID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBvblNob3duID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBvbkJlZm9yZUhpZGUgPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIG9uSGlkZGVuID0gbmV3IFN1YmplY3QoKTtcblxuICBwcml2YXRlIGJhY2tkcm9wUmVmPzogQ29tcG9uZW50UmVmPE1vZGFsQmFja2Ryb3BDb21wb25lbnQ+O1xuICBwcml2YXRlIGRlZmF1bHRDb25maWc6IE1vZGFsT3B0aW9ucztcbiAgcHJpdmF0ZSBiYWNrZHJvcExvYWRlcjogQ29tcG9uZW50TG9hZGVyPE1vZGFsQmFja2Ryb3BDb21wb25lbnQ+O1xuICBwcml2YXRlIGxvYWRlcnM6IENvbXBvbmVudExvYWRlcjxNb2RhbENvbnRhaW5lckNvbXBvbmVudD5bXSA9IFtdO1xuICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjI7XG4gIHByaXZhdGUgbW9kYWxzQ291bnQgPSAwO1xuICBwcml2YXRlIGluaXRpYWxQYWRkaW5nID0gJzBweCc7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2xmOiBDb21wb25lbnRMb2FkZXJGYWN0b3J5LFxuICAgIHJlbmRlcmVyRmFjdG9yeTogUmVuZGVyZXJGYWN0b3J5MixcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBhbnksXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChNT0RBTF9DT05GSUdfREVGQVVMVF9PVkVSUklERSkgbW9kYWxEZWZhdWx0T3B0aW9uOiBNb2RhbE9wdGlvbnNcbiAgKSB7XG4gICAgdGhpcy5iYWNrZHJvcExvYWRlciA9IHRoaXMuY2xmLmNyZWF0ZUxvYWRlcjxNb2RhbEJhY2tkcm9wQ29tcG9uZW50PigpO1xuICAgIHRoaXMuZGVmYXVsdENvbmZpZyA9IHsgLi4ubW9kYWxDb25maWdEZWZhdWx0cywgLi4ubW9kYWxEZWZhdWx0T3B0aW9uIH07XG4gICAgdGhpcy5yZW5kZXJlciA9IHJlbmRlcmVyRmFjdG9yeS5jcmVhdGVSZW5kZXJlcihudWxsLCBudWxsKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubG9hZGVycy5mb3JFYWNoKChsb2FkZXIpID0+IGxvYWRlci5pbnN0YW5jZT8uaGlkZSgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVucyBhIG5ldyBtb2RhbC5cbiAgICpcbiAgICogQHBhcmFtIGNvbnRlbnQgLSBgQ29tcG9uZW50YCBvciBgVGVtcGxhdGVSZWZgIHR5cGUuXG4gICAqIEBwYXJhbSBjb25maWcgLSBTcGVjaWZpYyB7QGxpbmsgTW9kYWxPcHRpb25zIHwgb3B0aW9uc30gIGZvciB0aGlzIG1vZGFsLiBHbG9iYWwgYW5kIHNwZWNpZmljIG9wdGlvbnMgYXJlIG1lcmdlZC5cbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2Yge0BsaW5rIE1vZGFsfVxuICAgKi9cbiAgcHVibGljIHNob3c8VD4oY29udGVudDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PiB8IHsgbmV3ICguLi5hcmdzOiBhbnlbXSk6IFQgfSwgY29uZmlnPzogTW9kYWxPcHRpb25zPFQ+KSB7XG4gICAgdGhpcy5tb2RhbHNDb3VudCsrO1xuICAgIGNvbnN0IGNvbWJpbmVkQ29uZmlnID0geyAuLi50aGlzLmRlZmF1bHRDb25maWcsIC4uLmNvbmZpZyB9O1xuICAgIGNvbWJpbmVkQ29uZmlnLmlkID0gY29uZmlnPy5pZCB8fCBuZXcgRGF0ZSgpLmdldFVUQ01pbGxpc2Vjb25kcygpO1xuICAgIHRoaXMuY3JlYXRlTG9hZGVycygpO1xuXG4gICAgdGhpcy5hZGRCb2R5UGFkZGluZygpO1xuICAgIGlmICh0aGlzLm1vZGFsc0NvdW50ID09PSAxKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZG9jdW1lbnQuYm9keSwgY3NzQ2xhc3NOYW1lcy5tb2RhbE9wZW4pO1xuICAgIH1cbiAgICB0aGlzLnNob3dCYWNrZHJvcChjb21iaW5lZENvbmZpZyk7XG4gICAgcmV0dXJuIHRoaXMuc2hvd01vZGFsPFQ+KGNvbnRlbnQsIGNvbWJpbmVkQ29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIaWRlIGFuIGFjdGl2ZSBtb2RhbC5cbiAgICogQHBhcmFtIGlkIC0gSWQgb2YgbW9kYWwgdG8gaGlkZS4gSWYgbm90IHByb3ZpZGVkIGFsbCBhY3RpdmUgbW9kYWxzIGFyZSBoaWRkZW4uXG4gICAqIEBwYXJhbSByZXN1bHQgLSBBIHJlc3VsdCB0byBiZSBzZW50IHRvIG9ic2VydmVycy5cbiAgICovXG4gIHB1YmxpYyBoaWRlKGlkPzogbnVtYmVyIHwgc3RyaW5nLCByZXN1bHQ/OiBhbnkpIHtcbiAgICBpZiAodGhpcy5tb2RhbHNDb3VudCA9PT0gMSB8fCBpZCA9PSBudWxsKSB7XG4gICAgICB0aGlzLmhpZGVCYWNrZHJvcCgpO1xuICAgICAgdGhpcy5yZXZlcnRTY3JvbGxiYXIoKTtcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5kb2N1bWVudC5ib2R5LCBjc3NDbGFzc05hbWVzLm1vZGFsT3Blbik7XG4gICAgfVxuICAgIHRoaXMubW9kYWxzQ291bnQgPSB0aGlzLm1vZGFsc0NvdW50ID49IDEgJiYgaWQgIT0gbnVsbCA/IHRoaXMubW9kYWxzQ291bnQgLSAxIDogMDtcbiAgICBzZXRUaW1lb3V0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLmhpZGVNb2RhbChpZCwgcmVzdWx0KTtcbiAgICAgICAgdGhpcy5yZW1vdmVMb2FkZXJzKGlkKTtcbiAgICAgIH0sXG4gICAgICAvL0J1Z1xuICAgICAgLy9TaG91bGQgdXNlIGNvbWJpbmVkIGNvbmZpZyBidXQgZm9yIHRoZSBtb21lbnQgaXMgbm90IHBvc3NpYmxlIHRvIHBhc3MgaXQgdGhpcyBwYXJhbWV0ZXIuXG4gICAgICAvL0lmIGNvbmZpZyBpcyBhbiBpbnN0YW5jZSB2YXJpYWJsZSB0aGVuIGV2ZXJ5IG5ld2x5IG9wZW5lZCBtb2RhbCB3aWxsIG92ZXJyaWRlIHRoZSBjb25maWdcbiAgICAgIC8vcmVzdWx0aW5nIGluIG9wZW5lZCBtb2RhbHMgdG8gZ2V0IGEgbmV3IGNvbmZpZ3VyYXRpb25cbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZy5hbmltYXRlZCA/IGFuaW1hdGlvblRpbWUuYmFja2Ryb3AgOiAwXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRBY3RpdmVNb2RhbCgpOiBNb2RhbENvbnRhaW5lckNvbXBvbmVudCB7XG4gICAgcmV0dXJuIHRoaXMubG9hZGVyc1t0aGlzLm1vZGFsc0NvdW50IC0gMV0uaW5zdGFuY2UgYXMgTW9kYWxDb250YWluZXJDb21wb25lbnQ7XG4gIH1cblxuICBwcml2YXRlIHNob3dNb2RhbDxUPihjb250ZW50OiBhbnksIGNvbWJpbmVkQ29uZmlnOiBNb2RhbE9wdGlvbnMpOiBNb2RhbDxUPiB7XG4gICAgY29uc3QgbW9kYWxMb2FkZXIgPSB0aGlzLmxvYWRlcnNbdGhpcy5sb2FkZXJzLmxlbmd0aCAtIDFdO1xuICAgIGlmIChjb21iaW5lZENvbmZpZyAmJiBjb21iaW5lZENvbmZpZy5wcm92aWRlcnMpIHtcbiAgICAgIGNvbWJpbmVkQ29uZmlnLnByb3ZpZGVycy5mb3JFYWNoKChwcm92aWRlcikgPT4gbW9kYWxMb2FkZXIucHJvdmlkZShwcm92aWRlcikpO1xuICAgIH1cblxuICAgIGNvbnN0IG1vZGFsID0gbmV3IE1vZGFsPGFueT4oKTtcbiAgICBjb25zdCBtb2RhbENvbnRhaW5lclJlZiA9IG1vZGFsTG9hZGVyXG4gICAgICAucHJvdmlkZSh7IHByb3ZpZGU6IE1vZGFsT3B0aW9ucywgdXNlVmFsdWU6IGNvbWJpbmVkQ29uZmlnIH0pXG4gICAgICAucHJvdmlkZSh7IHByb3ZpZGU6IE1vZGFsLCB1c2VWYWx1ZTogbW9kYWwgfSlcbiAgICAgIC5hdHRhY2goTW9kYWxDb250YWluZXJDb21wb25lbnQpXG4gICAgICAudG8oJ2JvZHknKTtcblxuICAgIG1vZGFsLnNldENsYXNzID0gKG5ld0NsYXNzOiBzdHJpbmcpID0+IHtcbiAgICAgIGlmIChtb2RhbENvbnRhaW5lclJlZi5pbnN0YW5jZSkge1xuICAgICAgICBtb2RhbENvbnRhaW5lclJlZi5pbnN0YW5jZS5jb25maWcuY2xhc3MgPSBuZXdDbGFzcztcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgbW9kYWwub25CZWZvcmVIaWRlID0gbmV3IFN1YmplY3QoKTtcbiAgICBtb2RhbC5vbkhpZGRlbiA9IG5ldyBTdWJqZWN0KCk7XG4gICAgdGhpcy5jb3B5RXZlbnQobW9kYWxMb2FkZXIub25CZWZvcmVIaWRlLCBtb2RhbC5vbkJlZm9yZUhpZGUpO1xuICAgIHRoaXMuY29weUV2ZW50KG1vZGFsTG9hZGVyLm9uSGlkZGVuLCBtb2RhbC5vbkhpZGRlbik7XG4gICAgbW9kYWxDb250YWluZXJSZWYuc2hvdyh7XG4gICAgICBjb250ZW50LFxuICAgICAgYW5pbWF0aW9uc0VuYWJsZWQ6IGNvbWJpbmVkQ29uZmlnLmFuaW1hdGVkLFxuICAgICAgaW5pdGlhbFN0YXRlOiBjb21iaW5lZENvbmZpZy5pbml0aWFsU3RhdGUsXG4gICAgICBtb2RhbFNlcnZpY2U6IHRoaXMsXG4gICAgICBpZDogY29tYmluZWRDb25maWcuaWQsXG4gICAgfSk7XG5cbiAgICBpZiAobW9kYWxDb250YWluZXJSZWYuaW5zdGFuY2UpIHtcbiAgICAgIG1vZGFsQ29udGFpbmVyUmVmLmluc3RhbmNlLmxldmVsID0gdGhpcy5tb2RhbHNDb3VudDtcbiAgICAgIG1vZGFsLmNvbnRlbnQgPSBtb2RhbExvYWRlci5nZXRJbm5lckNvbXBvbmVudCgpO1xuICAgICAgbW9kYWwuaWQgPSBtb2RhbENvbnRhaW5lclJlZi5pbnN0YW5jZS5jb25maWc/LmlkO1xuICAgICAgbW9kYWwuaGlkZSA9IChyZXMpID0+IG1vZGFsQ29udGFpbmVyUmVmLmluc3RhbmNlPy5oaWRlKHJlcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vZGFsO1xuICB9XG5cbiAgcHJpdmF0ZSBoaWRlTW9kYWwoaWQ/OiBudW1iZXIgfCBzdHJpbmcsIHJlc3VsdD86IGFueSk6IHZvaWQge1xuICAgIGlmIChpZCAhPSBudWxsKSB7XG4gICAgICBjb25zdCBpbmRleFRvUmVtb3ZlID0gdGhpcy5sb2FkZXJzLmZpbmRJbmRleCgobG9hZGVyKSA9PiBsb2FkZXIuaW5zdGFuY2U/LmNvbmZpZy5pZCA9PT0gaWQpO1xuICAgICAgY29uc3QgbW9kYWxMb2FkZXIgPSB0aGlzLmxvYWRlcnNbaW5kZXhUb1JlbW92ZV07XG4gICAgICBpZiAobW9kYWxMb2FkZXIpIHtcbiAgICAgICAgbW9kYWxMb2FkZXIuaGlkZShpZCwgcmVzdWx0KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2FkZXJzLmZvckVhY2goKGxvYWRlcjogQ29tcG9uZW50TG9hZGVyPE1vZGFsQ29udGFpbmVyQ29tcG9uZW50PikgPT4ge1xuICAgICAgICBpZiAobG9hZGVyLmluc3RhbmNlKSB7XG4gICAgICAgICAgbG9hZGVyLmhpZGUobG9hZGVyLmluc3RhbmNlLmNvbmZpZy5pZCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2hvd0JhY2tkcm9wKGNvbWJpbmVkQ29uZmlnOiBNb2RhbE9wdGlvbnMpOiB2b2lkIHtcbiAgICBjb25zdCBpc0JhY2tkcm9wRW5hYmxlZCA9IGNvbWJpbmVkQ29uZmlnLmJhY2tkcm9wID09PSB0cnVlIHx8IGNvbWJpbmVkQ29uZmlnLmJhY2tkcm9wID09PSAnc3RhdGljJztcbiAgICBjb25zdCBpc0JhY2tkcm9wSW5ET00gPSB0aGlzLmJhY2tkcm9wUmVmICE9IG51bGw7XG4gICAgaWYgKGlzQmFja2Ryb3BFbmFibGVkICYmICFpc0JhY2tkcm9wSW5ET00pIHtcbiAgICAgIHRoaXMuYmFja2Ryb3BMb2FkZXJcbiAgICAgICAgLmF0dGFjaChNb2RhbEJhY2tkcm9wQ29tcG9uZW50KVxuICAgICAgICAudG8oJ2JvZHknKVxuICAgICAgICAuc2hvdyh7IGFuaW1hdGlvbnNFbmFibGVkOiBjb21iaW5lZENvbmZpZy5hbmltYXRlZCwgYmFja2Ryb3BMb2FkZXI6IHRoaXMuYmFja2Ryb3BMb2FkZXIgfSk7XG4gICAgICB0aGlzLmJhY2tkcm9wUmVmID0gdGhpcy5iYWNrZHJvcExvYWRlci5jb21wb25lbnRSZWY7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoaWRlQmFja2Ryb3AoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmJhY2tkcm9wUmVmKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuYmFja2Ryb3BSZWYuaW5zdGFuY2UuaGlkZSgpO1xuICAgIHRoaXMuYmFja2Ryb3BSZWYgPSB2b2lkIDA7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUxvYWRlcnMoaWQ/OiBudW1iZXIgfCBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoaWQgIT0gbnVsbCkge1xuICAgICAgY29uc3QgaW5kZXhUb1JlbW92ZSA9IHRoaXMubG9hZGVycy5maW5kSW5kZXgoKGxvYWRlcikgPT4gbG9hZGVyLmluc3RhbmNlPy5jb25maWcuaWQgPT09IGlkKTtcbiAgICAgIGlmIChpbmRleFRvUmVtb3ZlID49IDApIHtcbiAgICAgICAgdGhpcy5sb2FkZXJzLnNwbGljZShpbmRleFRvUmVtb3ZlLCAxKTtcbiAgICAgICAgdGhpcy5sb2FkZXJzLmZvckVhY2goKGxvYWRlcjogQ29tcG9uZW50TG9hZGVyPE1vZGFsQ29udGFpbmVyQ29tcG9uZW50PiwgaTogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgaWYgKGxvYWRlci5pbnN0YW5jZSkge1xuICAgICAgICAgICAgbG9hZGVyLmluc3RhbmNlLmxldmVsID0gaSArIDE7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2FkZXJzLnNwbGljZSgwLCB0aGlzLmxvYWRlcnMubGVuZ3RoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZEJvZHlQYWRkaW5nKCkge1xuICAgIGlmICh0aGlzLm1vZGFsc0NvdW50ID09PSAxKSB7XG4gICAgICBjb25zdCB3aWR0aCA9IHRoaXMuZ2V0U2Nyb2xsYmFyV2lkdGgoKTtcbiAgICAgIGlmICh0aGlzLmlzU2Nyb2xsQmFyUHJlc2VudCh3aWR0aCkpIHtcbiAgICAgICAgdGhpcy5pbml0aWFsUGFkZGluZyA9IHRoaXMuZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nUmlnaHQ7XG4gICAgICAgIGNvbnN0IGFjdHVhbFBhZGRpbmcgPSBwYXJzZUZsb2F0KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMuZG9jdW1lbnQuYm9keSkucGFkZGluZ1JpZ2h0KTtcbiAgICAgICAgdGhpcy5kb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmdSaWdodCA9IGAke2FjdHVhbFBhZGRpbmcgKyB3aWR0aH1weGA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXZlcnRTY3JvbGxiYXIoKSB7XG4gICAgdGhpcy5kb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmdSaWdodCA9IHRoaXMuaW5pdGlhbFBhZGRpbmc7XG4gIH1cblxuICBwcml2YXRlIGdldFNjcm9sbGJhcldpZHRoKCk6IG51bWJlciB7XG4gICAgY29uc3QgbWVhc3VyZXIgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIG1lYXN1cmVyLmNsYXNzTmFtZSA9ICdtb2RhbC1zY3JvbGxiYXItbWVhc3VyZSc7XG5cbiAgICBjb25zdCBib2R5ID0gdGhpcy5kb2N1bWVudC5ib2R5O1xuICAgIGJvZHkuYXBwZW5kQ2hpbGQobWVhc3VyZXIpO1xuICAgIGNvbnN0IHdpZHRoID0gbWVhc3VyZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggLSBtZWFzdXJlci5jbGllbnRXaWR0aDtcbiAgICBib2R5LnJlbW92ZUNoaWxkKG1lYXN1cmVyKTtcblxuICAgIHJldHVybiB3aWR0aDtcbiAgfVxuXG4gIHByaXZhdGUgaXNTY3JvbGxCYXJQcmVzZW50KHNjcm9sbGJhcldpZHRoOiBudW1iZXIpIHtcbiAgICBjb25zdCByZWN0ID0gdGhpcy5kb2N1bWVudC5ib2R5LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IGJvZHlUb1ZpZXdwb3J0R2FwID0gd2luZG93LmlubmVyV2lkdGggLSAocmVjdC5sZWZ0ICsgcmVjdC5yaWdodCk7XG4gICAgY29uc3QgdW5jZXJ0YWludHkgPSAwLjEgKiBzY3JvbGxiYXJXaWR0aDtcbiAgICByZXR1cm4gYm9keVRvVmlld3BvcnRHYXAgPj0gc2Nyb2xsYmFyV2lkdGggLSB1bmNlcnRhaW50eTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTG9hZGVycygpOiB2b2lkIHtcbiAgICBjb25zdCBsb2FkZXIgPSB0aGlzLmNsZi5jcmVhdGVMb2FkZXI8TW9kYWxDb250YWluZXJDb21wb25lbnQ+KCk7XG4gICAgdGhpcy5jb3B5RXZlbnQobG9hZGVyLm9uQmVmb3JlU2hvdywgdGhpcy5vbkJlZm9yZVNob3cpO1xuICAgIHRoaXMuY29weUV2ZW50KGxvYWRlci5vblNob3duLCB0aGlzLm9uU2hvd24pO1xuICAgIHRoaXMuY29weUV2ZW50KGxvYWRlci5vbkJlZm9yZUhpZGUsIHRoaXMub25CZWZvcmVIaWRlKTtcbiAgICB0aGlzLmNvcHlFdmVudChsb2FkZXIub25IaWRkZW4sIHRoaXMub25IaWRkZW4pO1xuICAgIHRoaXMubG9hZGVycy5wdXNoKGxvYWRlcik7XG4gIH1cblxuICBwcml2YXRlIGNvcHlFdmVudChmcm9tOiBTdWJqZWN0PHVua25vd24+LCB0bzogU3ViamVjdDx1bmtub3duPikge1xuICAgIGZyb20uc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICB0by5uZXh0KGRhdGEpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
1
+ import { DOCUMENT } from '@angular/common';
2
+ import { Inject, Injectable, Optional, RendererFactory2 } from '@angular/core';
3
+ import { Subject } from 'rxjs';
4
+ import { animationTime, cssClassNames } from './modal-styles.class';
5
+ import { ModalBackdropComponent } from './modal-backdrop-component';
6
+ import { ModalContainerComponent } from './modal-container-component';
7
+ import { modalConfigDefaults, ModalOptions, MODAL_CONFIG_DEFAULT_OVERRIDE } from './modal-options.class';
8
+ import { Modal } from './modal.class';
9
+ import { ComponentLoaderFactory } from '../component-loader/component-loader.factory';
10
+ /**
11
+ * A service for using modals.
12
+ *
13
+ * @public
14
+ */
15
+ export class ModalService {
16
+ constructor(clf, rendererFactory, document, modalDefaultOption) {
17
+ this.clf = clf;
18
+ this.document = document;
19
+ this.onBeforeShow = new Subject();
20
+ this.onShown = new Subject();
21
+ this.onBeforeHide = new Subject();
22
+ this.onHidden = new Subject();
23
+ this.loaders = [];
24
+ this.modalsCount = 0;
25
+ this.initialPadding = '0px';
26
+ this.backdropLoader = this.clf.createLoader();
27
+ this.defaultConfig = Object.assign(Object.assign({}, modalConfigDefaults), modalDefaultOption);
28
+ this.renderer = rendererFactory.createRenderer(null, null);
29
+ }
30
+ ngOnDestroy() {
31
+ this.loaders.forEach((loader) => { var _a; return (_a = loader.instance) === null || _a === void 0 ? void 0 : _a.hide(); });
32
+ }
33
+ /**
34
+ * Opens a new modal.
35
+ *
36
+ * @param content - `Component` or `TemplateRef` type.
37
+ * @param config - Specific {@link ModalOptions | options} for this modal. Global and specific options are merged.
38
+ * @returns An instance of {@link Modal}
39
+ */
40
+ show(content, config) {
41
+ this.modalsCount++;
42
+ const combinedConfig = Object.assign(Object.assign({}, this.defaultConfig), config);
43
+ combinedConfig.id = (config === null || config === void 0 ? void 0 : config.id) || new Date().getUTCMilliseconds();
44
+ this.createLoaders();
45
+ this.addBodyPadding();
46
+ if (this.modalsCount === 1) {
47
+ this.renderer.addClass(this.document.body, cssClassNames.modalOpen);
48
+ }
49
+ this.showBackdrop(combinedConfig);
50
+ return this.showModal(content, combinedConfig);
51
+ }
52
+ /**
53
+ * Hide an active modal.
54
+ * @param id - Id of modal to hide. If not provided all active modals are hidden.
55
+ * @param result - A result to be sent to observers.
56
+ */
57
+ hide(id, result) {
58
+ if (this.modalsCount === 1 || id == null) {
59
+ this.hideBackdrop();
60
+ this.revertScrollbar();
61
+ this.renderer.removeClass(this.document.body, cssClassNames.modalOpen);
62
+ }
63
+ this.modalsCount = this.modalsCount >= 1 && id != null ? this.modalsCount - 1 : 0;
64
+ setTimeout(() => {
65
+ this.hideModal(id, result);
66
+ this.removeLoaders(id);
67
+ },
68
+ //Bug
69
+ //Should use combined config but for the moment is not possible to pass it this parameter.
70
+ //If config is an instance variable then every newly opened modal will override the config
71
+ //resulting in opened modals to get a new configuration
72
+ this.defaultConfig.animated ? animationTime.backdrop : 0);
73
+ }
74
+ getActiveModal() {
75
+ return this.loaders[this.modalsCount - 1].instance;
76
+ }
77
+ showModal(content, combinedConfig) {
78
+ var _a;
79
+ const modalLoader = this.loaders[this.loaders.length - 1];
80
+ if (combinedConfig && combinedConfig.providers) {
81
+ combinedConfig.providers.forEach((provider) => modalLoader.provide(provider));
82
+ }
83
+ const modal = new Modal();
84
+ const modalContainerRef = modalLoader
85
+ .provide({ provide: ModalOptions, useValue: combinedConfig })
86
+ .provide({ provide: Modal, useValue: modal })
87
+ .attach(ModalContainerComponent)
88
+ .to('body');
89
+ modal.setClass = (newClass) => {
90
+ if (modalContainerRef.instance) {
91
+ modalContainerRef.instance.config.class = newClass;
92
+ }
93
+ };
94
+ modal.onBeforeHide = new Subject();
95
+ modal.onHidden = new Subject();
96
+ this.copyEvent(modalLoader.onBeforeHide, modal.onBeforeHide);
97
+ this.copyEvent(modalLoader.onHidden, modal.onHidden);
98
+ modalContainerRef.show({
99
+ content,
100
+ animationsEnabled: combinedConfig.animated,
101
+ initialState: combinedConfig.initialState,
102
+ modalService: this,
103
+ id: combinedConfig.id,
104
+ });
105
+ if (modalContainerRef.instance) {
106
+ modalContainerRef.instance.level = this.modalsCount;
107
+ modal.content = modalLoader.getInnerComponent();
108
+ modal.id = (_a = modalContainerRef.instance.config) === null || _a === void 0 ? void 0 : _a.id;
109
+ modal.hide = (res) => { var _a; return (_a = modalContainerRef.instance) === null || _a === void 0 ? void 0 : _a.hide(res); };
110
+ }
111
+ return modal;
112
+ }
113
+ hideModal(id, result) {
114
+ if (id != null) {
115
+ const indexToRemove = this.loaders.findIndex((loader) => { var _a; return ((_a = loader.instance) === null || _a === void 0 ? void 0 : _a.config.id) === id; });
116
+ const modalLoader = this.loaders[indexToRemove];
117
+ if (modalLoader) {
118
+ modalLoader.hide(id, result);
119
+ }
120
+ }
121
+ else {
122
+ this.loaders.forEach((loader) => {
123
+ if (loader.instance) {
124
+ loader.hide(loader.instance.config.id);
125
+ }
126
+ });
127
+ }
128
+ }
129
+ showBackdrop(combinedConfig) {
130
+ const isBackdropEnabled = combinedConfig.backdrop === true || combinedConfig.backdrop === 'static';
131
+ const isBackdropInDOM = this.backdropRef != null;
132
+ if (isBackdropEnabled && !isBackdropInDOM) {
133
+ this.backdropLoader
134
+ .attach(ModalBackdropComponent)
135
+ .to('body')
136
+ .show({ animationsEnabled: combinedConfig.animated, backdropLoader: this.backdropLoader });
137
+ this.backdropRef = this.backdropLoader.componentRef;
138
+ }
139
+ }
140
+ hideBackdrop() {
141
+ if (!this.backdropRef) {
142
+ return;
143
+ }
144
+ this.backdropRef.instance.hide();
145
+ this.backdropRef = void 0;
146
+ }
147
+ removeLoaders(id) {
148
+ if (id != null) {
149
+ const indexToRemove = this.loaders.findIndex((loader) => { var _a; return ((_a = loader.instance) === null || _a === void 0 ? void 0 : _a.config.id) === id; });
150
+ if (indexToRemove >= 0) {
151
+ this.loaders.splice(indexToRemove, 1);
152
+ this.loaders.forEach((loader, i) => {
153
+ if (loader.instance) {
154
+ loader.instance.level = i + 1;
155
+ }
156
+ });
157
+ }
158
+ }
159
+ else {
160
+ this.loaders.splice(0, this.loaders.length);
161
+ }
162
+ }
163
+ addBodyPadding() {
164
+ if (this.modalsCount === 1) {
165
+ const width = this.getScrollbarWidth();
166
+ if (this.isScrollBarPresent(width)) {
167
+ this.initialPadding = this.document.body.style.paddingRight;
168
+ const actualPadding = parseFloat(window.getComputedStyle(this.document.body).paddingRight);
169
+ this.document.body.style.paddingRight = `${actualPadding + width}px`;
170
+ }
171
+ }
172
+ }
173
+ revertScrollbar() {
174
+ this.document.body.style.paddingRight = this.initialPadding;
175
+ }
176
+ getScrollbarWidth() {
177
+ const measurer = this.document.createElement('div');
178
+ measurer.className = 'modal-scrollbar-measure';
179
+ const body = this.document.body;
180
+ body.appendChild(measurer);
181
+ const width = measurer.getBoundingClientRect().width - measurer.clientWidth;
182
+ body.removeChild(measurer);
183
+ return width;
184
+ }
185
+ isScrollBarPresent(scrollbarWidth) {
186
+ const rect = this.document.body.getBoundingClientRect();
187
+ const bodyToViewportGap = window.innerWidth - (rect.left + rect.right);
188
+ const uncertainty = 0.1 * scrollbarWidth;
189
+ return bodyToViewportGap >= scrollbarWidth - uncertainty;
190
+ }
191
+ createLoaders() {
192
+ const loader = this.clf.createLoader();
193
+ this.copyEvent(loader.onBeforeShow, this.onBeforeShow);
194
+ this.copyEvent(loader.onShown, this.onShown);
195
+ this.copyEvent(loader.onBeforeHide, this.onBeforeHide);
196
+ this.copyEvent(loader.onHidden, this.onHidden);
197
+ this.loaders.push(loader);
198
+ }
199
+ copyEvent(from, to) {
200
+ from.subscribe((data) => {
201
+ to.next(data);
202
+ });
203
+ }
204
+ }
205
+ ModalService.decorators = [
206
+ { type: Injectable }
207
+ ];
208
+ ModalService.ctorParameters = () => [
209
+ { type: ComponentLoaderFactory },
210
+ { type: RendererFactory2 },
211
+ { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
212
+ { type: ModalOptions, decorators: [{ type: Optional }, { type: Inject, args: [MODAL_CONFIG_DEFAULT_OVERRIDE,] }] }
213
+ ];
214
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWNvbXBvbmVudHMvc3JjL2xpYi9zZXJ2aWNlcy9tb2RhbC1zZXJ2aWNlL21vZGFsLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBZ0IsTUFBTSxFQUFFLFVBQVUsRUFBYSxRQUFRLEVBQWEsZ0JBQWdCLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFDaEksT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUvQixPQUFPLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxZQUFZLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRXRGOzs7O0dBSUc7QUFFSCxNQUFNLE9BQU8sWUFBWTtJQWF2QixZQUNVLEdBQTJCLEVBQ25DLGVBQWlDLEVBQ1AsUUFBYSxFQUNZLGtCQUFnQztRQUgzRSxRQUFHLEdBQUgsR0FBRyxDQUF3QjtRQUVULGFBQVEsR0FBUixRQUFRLENBQUs7UUFmakMsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzdCLFlBQU8sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ3hCLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUM3QixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUt6QixZQUFPLEdBQStDLEVBQUUsQ0FBQztRQUV6RCxnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUNoQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQU83QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUEwQixDQUFDO1FBQ3RFLElBQUksQ0FBQyxhQUFhLG1DQUFRLG1CQUFtQixHQUFLLGtCQUFrQixDQUFFLENBQUM7UUFDdkUsSUFBSSxDQUFDLFFBQVEsR0FBRyxlQUFlLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsV0FBQyxPQUFBLE1BQUEsTUFBTSxDQUFDLFFBQVEsMENBQUUsSUFBSSxFQUFFLENBQUEsRUFBQSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLElBQUksQ0FBSSxPQUFnRSxFQUFFLE1BQXdCO1FBQ3ZHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQixNQUFNLGNBQWMsbUNBQVEsSUFBSSxDQUFDLGFBQWEsR0FBSyxNQUFNLENBQUUsQ0FBQztRQUM1RCxjQUFjLENBQUMsRUFBRSxHQUFHLENBQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLEVBQUUsS0FBSSxJQUFJLElBQUksRUFBRSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDbEUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRXJCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssQ0FBQyxFQUFFO1lBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUNyRTtRQUNELElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFJLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLElBQUksQ0FBQyxFQUFvQixFQUFFLE1BQVk7UUFDNUMsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3hFO1FBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xGLFVBQVUsQ0FDUixHQUFHLEVBQUU7WUFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUMzQixJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pCLENBQUM7UUFDRCxLQUFLO1FBQ0wsMEZBQTBGO1FBQzFGLDBGQUEwRjtRQUMxRix1REFBdUQ7UUFDdkQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDekQsQ0FBQztJQUNKLENBQUM7SUFFTSxjQUFjO1FBQ25CLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQW1DLENBQUM7SUFDaEYsQ0FBQztJQUVPLFNBQVMsQ0FBSSxPQUFZLEVBQUUsY0FBNEI7O1FBQzdELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDMUQsSUFBSSxjQUFjLElBQUksY0FBYyxDQUFDLFNBQVMsRUFBRTtZQUM5QyxjQUFjLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1NBQy9FO1FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQU8sQ0FBQztRQUMvQixNQUFNLGlCQUFpQixHQUFHLFdBQVc7YUFDbEMsT0FBTyxDQUFDLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLENBQUM7YUFDNUQsT0FBTyxDQUFDLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUM7YUFDNUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDO2FBQy9CLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVkLEtBQUssQ0FBQyxRQUFRLEdBQUcsQ0FBQyxRQUFnQixFQUFFLEVBQUU7WUFDcEMsSUFBSSxpQkFBaUIsQ0FBQyxRQUFRLEVBQUU7Z0JBQzlCLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQzthQUNwRDtRQUNILENBQUMsQ0FBQztRQUVGLEtBQUssQ0FBQyxZQUFZLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNuQyxLQUFLLENBQUMsUUFBUSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3JELGlCQUFpQixDQUFDLElBQUksQ0FBQztZQUNyQixPQUFPO1lBQ1AsaUJBQWlCLEVBQUUsY0FBYyxDQUFDLFFBQVE7WUFDMUMsWUFBWSxFQUFFLGNBQWMsQ0FBQyxZQUFZO1lBQ3pDLFlBQVksRUFBRSxJQUFJO1lBQ2xCLEVBQUUsRUFBRSxjQUFjLENBQUMsRUFBRTtTQUN0QixDQUFDLENBQUM7UUFFSCxJQUFJLGlCQUFpQixDQUFDLFFBQVEsRUFBRTtZQUM5QixpQkFBaUIsQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7WUFDcEQsS0FBSyxDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNoRCxLQUFLLENBQUMsRUFBRSxHQUFHLE1BQUEsaUJBQWlCLENBQUMsUUFBUSxDQUFDLE1BQU0sMENBQUUsRUFBRSxDQUFDO1lBQ2pELEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxXQUFDLE9BQUEsTUFBQSxpQkFBaUIsQ0FBQyxRQUFRLDBDQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQSxFQUFBLENBQUM7U0FDN0Q7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyxTQUFTLENBQUMsRUFBb0IsRUFBRSxNQUFZO1FBQ2xELElBQUksRUFBRSxJQUFJLElBQUksRUFBRTtZQUNkLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsV0FBQyxPQUFBLENBQUEsTUFBQSxNQUFNLENBQUMsUUFBUSwwQ0FBRSxNQUFNLENBQUMsRUFBRSxNQUFLLEVBQUUsQ0FBQSxFQUFBLENBQUMsQ0FBQztZQUM1RixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ2hELElBQUksV0FBVyxFQUFFO2dCQUNmLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2FBQzlCO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBZ0QsRUFBRSxFQUFFO2dCQUN4RSxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUU7b0JBQ25CLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQ3hDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFTyxZQUFZLENBQUMsY0FBNEI7UUFDL0MsTUFBTSxpQkFBaUIsR0FBRyxjQUFjLENBQUMsUUFBUSxLQUFLLElBQUksSUFBSSxjQUFjLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQztRQUNuRyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQztRQUNqRCxJQUFJLGlCQUFpQixJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3pDLElBQUksQ0FBQyxjQUFjO2lCQUNoQixNQUFNLENBQUMsc0JBQXNCLENBQUM7aUJBQzlCLEVBQUUsQ0FBQyxNQUFNLENBQUM7aUJBQ1YsSUFBSSxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxDQUFDLFFBQVEsRUFBRSxjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7WUFDN0YsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQztTQUNyRDtJQUNILENBQUM7SUFFTyxZQUFZO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3JCLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVPLGFBQWEsQ0FBQyxFQUFvQjtRQUN4QyxJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUU7WUFDZCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLFdBQUMsT0FBQSxDQUFBLE1BQUEsTUFBTSxDQUFDLFFBQVEsMENBQUUsTUFBTSxDQUFDLEVBQUUsTUFBSyxFQUFFLENBQUEsRUFBQSxDQUFDLENBQUM7WUFDNUYsSUFBSSxhQUFhLElBQUksQ0FBQyxFQUFFO2dCQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBZ0QsRUFBRSxDQUFTLEVBQUUsRUFBRTtvQkFDbkYsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFO3dCQUNuQixNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3FCQUMvQjtnQkFDSCxDQUFDLENBQUMsQ0FBQzthQUNKO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzdDO0lBQ0gsQ0FBQztJQUVPLGNBQWM7UUFDcEIsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLENBQUMsRUFBRTtZQUMxQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN2QyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDbEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDO2dCQUM1RCxNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQzNGLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsR0FBRyxhQUFhLEdBQUcsS0FBSyxJQUFJLENBQUM7YUFDdEU7U0FDRjtJQUNILENBQUM7SUFFTyxlQUFlO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM5RCxDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BELFFBQVEsQ0FBQyxTQUFTLEdBQUcseUJBQXlCLENBQUM7UUFFL0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDaEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzQixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQztRQUM1RSxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTNCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVPLGtCQUFrQixDQUFDLGNBQXNCO1FBQy9DLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDeEQsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkUsTUFBTSxXQUFXLEdBQUcsR0FBRyxHQUFHLGNBQWMsQ0FBQztRQUN6QyxPQUFPLGlCQUFpQixJQUFJLGNBQWMsR0FBRyxXQUFXLENBQUM7SUFDM0QsQ0FBQztJQUVPLGFBQWE7UUFDbkIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQTJCLENBQUM7UUFDaEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRU8sU0FBUyxDQUFDLElBQXNCLEVBQUUsRUFBb0I7UUFDNUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3RCLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzs7WUEzTkYsVUFBVTs7O1lBUEYsc0JBQXNCO1lBUjRDLGdCQUFnQjs0Q0FnQ3RGLE1BQU0sU0FBQyxRQUFRO1lBMUJVLFlBQVksdUJBMkJyQyxRQUFRLFlBQUksTUFBTSxTQUFDLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBJbmplY3QsIEluamVjdGFibGUsIE9uRGVzdHJveSwgT3B0aW9uYWwsIFJlbmRlcmVyMiwgUmVuZGVyZXJGYWN0b3J5MiwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRMb2FkZXIgfSBmcm9tICcuLi9jb21wb25lbnQtbG9hZGVyL2NvbXBvbmVudC1sb2FkZXIuY2xhc3MnO1xyXG5pbXBvcnQgeyBhbmltYXRpb25UaW1lLCBjc3NDbGFzc05hbWVzIH0gZnJvbSAnLi9tb2RhbC1zdHlsZXMuY2xhc3MnO1xyXG5pbXBvcnQgeyBNb2RhbEJhY2tkcm9wQ29tcG9uZW50IH0gZnJvbSAnLi9tb2RhbC1iYWNrZHJvcC1jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNb2RhbENvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwtY29udGFpbmVyLWNvbXBvbmVudCc7XHJcbmltcG9ydCB7IG1vZGFsQ29uZmlnRGVmYXVsdHMsIE1vZGFsT3B0aW9ucywgTU9EQUxfQ09ORklHX0RFRkFVTFRfT1ZFUlJJREUgfSBmcm9tICcuL21vZGFsLW9wdGlvbnMuY2xhc3MnO1xyXG5pbXBvcnQgeyBNb2RhbCB9IGZyb20gJy4vbW9kYWwuY2xhc3MnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRMb2FkZXJGYWN0b3J5IH0gZnJvbSAnLi4vY29tcG9uZW50LWxvYWRlci9jb21wb25lbnQtbG9hZGVyLmZhY3RvcnknO1xyXG5cclxuLyoqXHJcbiAqIEEgc2VydmljZSBmb3IgdXNpbmcgbW9kYWxzLlxyXG4gKlxyXG4gKiBAcHVibGljXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBNb2RhbFNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIHByaXZhdGUgb25CZWZvcmVTaG93ID0gbmV3IFN1YmplY3QoKTtcclxuICBwcml2YXRlIG9uU2hvd24gPSBuZXcgU3ViamVjdCgpO1xyXG4gIHByaXZhdGUgb25CZWZvcmVIaWRlID0gbmV3IFN1YmplY3QoKTtcclxuICBwcml2YXRlIG9uSGlkZGVuID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgcHJpdmF0ZSBiYWNrZHJvcFJlZj86IENvbXBvbmVudFJlZjxNb2RhbEJhY2tkcm9wQ29tcG9uZW50PjtcclxuICBwcml2YXRlIGRlZmF1bHRDb25maWc6IE1vZGFsT3B0aW9ucztcclxuICBwcml2YXRlIGJhY2tkcm9wTG9hZGVyOiBDb21wb25lbnRMb2FkZXI8TW9kYWxCYWNrZHJvcENvbXBvbmVudD47XHJcbiAgcHJpdmF0ZSBsb2FkZXJzOiBDb21wb25lbnRMb2FkZXI8TW9kYWxDb250YWluZXJDb21wb25lbnQ+W10gPSBbXTtcclxuICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjI7XHJcbiAgcHJpdmF0ZSBtb2RhbHNDb3VudCA9IDA7XHJcbiAgcHJpdmF0ZSBpbml0aWFsUGFkZGluZyA9ICcwcHgnO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjbGY6IENvbXBvbmVudExvYWRlckZhY3RvcnksXHJcbiAgICByZW5kZXJlckZhY3Rvcnk6IFJlbmRlcmVyRmFjdG9yeTIsXHJcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBhbnksXHJcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE1PREFMX0NPTkZJR19ERUZBVUxUX09WRVJSSURFKSBtb2RhbERlZmF1bHRPcHRpb246IE1vZGFsT3B0aW9uc1xyXG4gICkge1xyXG4gICAgdGhpcy5iYWNrZHJvcExvYWRlciA9IHRoaXMuY2xmLmNyZWF0ZUxvYWRlcjxNb2RhbEJhY2tkcm9wQ29tcG9uZW50PigpO1xyXG4gICAgdGhpcy5kZWZhdWx0Q29uZmlnID0geyAuLi5tb2RhbENvbmZpZ0RlZmF1bHRzLCAuLi5tb2RhbERlZmF1bHRPcHRpb24gfTtcclxuICAgIHRoaXMucmVuZGVyZXIgPSByZW5kZXJlckZhY3RvcnkuY3JlYXRlUmVuZGVyZXIobnVsbCwgbnVsbCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMubG9hZGVycy5mb3JFYWNoKChsb2FkZXIpID0+IGxvYWRlci5pbnN0YW5jZT8uaGlkZSgpKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9wZW5zIGEgbmV3IG1vZGFsLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGNvbnRlbnQgLSBgQ29tcG9uZW50YCBvciBgVGVtcGxhdGVSZWZgIHR5cGUuXHJcbiAgICogQHBhcmFtIGNvbmZpZyAtIFNwZWNpZmljIHtAbGluayBNb2RhbE9wdGlvbnMgfCBvcHRpb25zfSAgZm9yIHRoaXMgbW9kYWwuIEdsb2JhbCBhbmQgc3BlY2lmaWMgb3B0aW9ucyBhcmUgbWVyZ2VkLlxyXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHtAbGluayBNb2RhbH1cclxuICAgKi9cclxuICBwdWJsaWMgc2hvdzxUPihjb250ZW50OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+IHwgeyBuZXcgKC4uLmFyZ3M6IGFueVtdKTogVCB9LCBjb25maWc/OiBNb2RhbE9wdGlvbnM8VD4pIHtcclxuICAgIHRoaXMubW9kYWxzQ291bnQrKztcclxuICAgIGNvbnN0IGNvbWJpbmVkQ29uZmlnID0geyAuLi50aGlzLmRlZmF1bHRDb25maWcsIC4uLmNvbmZpZyB9O1xyXG4gICAgY29tYmluZWRDb25maWcuaWQgPSBjb25maWc/LmlkIHx8IG5ldyBEYXRlKCkuZ2V0VVRDTWlsbGlzZWNvbmRzKCk7XHJcbiAgICB0aGlzLmNyZWF0ZUxvYWRlcnMoKTtcclxuXHJcbiAgICB0aGlzLmFkZEJvZHlQYWRkaW5nKCk7XHJcbiAgICBpZiAodGhpcy5tb2RhbHNDb3VudCA9PT0gMSkge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZG9jdW1lbnQuYm9keSwgY3NzQ2xhc3NOYW1lcy5tb2RhbE9wZW4pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zaG93QmFja2Ryb3AoY29tYmluZWRDb25maWcpO1xyXG4gICAgcmV0dXJuIHRoaXMuc2hvd01vZGFsPFQ+KGNvbnRlbnQsIGNvbWJpbmVkQ29uZmlnKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhpZGUgYW4gYWN0aXZlIG1vZGFsLlxyXG4gICAqIEBwYXJhbSBpZCAtIElkIG9mIG1vZGFsIHRvIGhpZGUuIElmIG5vdCBwcm92aWRlZCBhbGwgYWN0aXZlIG1vZGFscyBhcmUgaGlkZGVuLlxyXG4gICAqIEBwYXJhbSByZXN1bHQgLSBBIHJlc3VsdCB0byBiZSBzZW50IHRvIG9ic2VydmVycy5cclxuICAgKi9cclxuICBwdWJsaWMgaGlkZShpZD86IG51bWJlciB8IHN0cmluZywgcmVzdWx0PzogYW55KSB7XHJcbiAgICBpZiAodGhpcy5tb2RhbHNDb3VudCA9PT0gMSB8fCBpZCA9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuaGlkZUJhY2tkcm9wKCk7XHJcbiAgICAgIHRoaXMucmV2ZXJ0U2Nyb2xsYmFyKCk7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5kb2N1bWVudC5ib2R5LCBjc3NDbGFzc05hbWVzLm1vZGFsT3Blbik7XHJcbiAgICB9XHJcbiAgICB0aGlzLm1vZGFsc0NvdW50ID0gdGhpcy5tb2RhbHNDb3VudCA+PSAxICYmIGlkICE9IG51bGwgPyB0aGlzLm1vZGFsc0NvdW50IC0gMSA6IDA7XHJcbiAgICBzZXRUaW1lb3V0KFxyXG4gICAgICAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5oaWRlTW9kYWwoaWQsIHJlc3VsdCk7XHJcbiAgICAgICAgdGhpcy5yZW1vdmVMb2FkZXJzKGlkKTtcclxuICAgICAgfSxcclxuICAgICAgLy9CdWdcclxuICAgICAgLy9TaG91bGQgdXNlIGNvbWJpbmVkIGNvbmZpZyBidXQgZm9yIHRoZSBtb21lbnQgaXMgbm90IHBvc3NpYmxlIHRvIHBhc3MgaXQgdGhpcyBwYXJhbWV0ZXIuXHJcbiAgICAgIC8vSWYgY29uZmlnIGlzIGFuIGluc3RhbmNlIHZhcmlhYmxlIHRoZW4gZXZlcnkgbmV3bHkgb3BlbmVkIG1vZGFsIHdpbGwgb3ZlcnJpZGUgdGhlIGNvbmZpZ1xyXG4gICAgICAvL3Jlc3VsdGluZyBpbiBvcGVuZWQgbW9kYWxzIHRvIGdldCBhIG5ldyBjb25maWd1cmF0aW9uXHJcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZy5hbmltYXRlZCA/IGFuaW1hdGlvblRpbWUuYmFja2Ryb3AgOiAwXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEFjdGl2ZU1vZGFsKCk6IE1vZGFsQ29udGFpbmVyQ29tcG9uZW50IHtcclxuICAgIHJldHVybiB0aGlzLmxvYWRlcnNbdGhpcy5tb2RhbHNDb3VudCAtIDFdLmluc3RhbmNlIGFzIE1vZGFsQ29udGFpbmVyQ29tcG9uZW50O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzaG93TW9kYWw8VD4oY29udGVudDogYW55LCBjb21iaW5lZENvbmZpZzogTW9kYWxPcHRpb25zKTogTW9kYWw8VD4ge1xyXG4gICAgY29uc3QgbW9kYWxMb2FkZXIgPSB0aGlzLmxvYWRlcnNbdGhpcy5sb2FkZXJzLmxlbmd0aCAtIDFdO1xyXG4gICAgaWYgKGNvbWJpbmVkQ29uZmlnICYmIGNvbWJpbmVkQ29uZmlnLnByb3ZpZGVycykge1xyXG4gICAgICBjb21iaW5lZENvbmZpZy5wcm92aWRlcnMuZm9yRWFjaCgocHJvdmlkZXIpID0+IG1vZGFsTG9hZGVyLnByb3ZpZGUocHJvdmlkZXIpKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBtb2RhbCA9IG5ldyBNb2RhbDxhbnk+KCk7XHJcbiAgICBjb25zdCBtb2RhbENvbnRhaW5lclJlZiA9IG1vZGFsTG9hZGVyXHJcbiAgICAgIC5wcm92aWRlKHsgcHJvdmlkZTogTW9kYWxPcHRpb25zLCB1c2VWYWx1ZTogY29tYmluZWRDb25maWcgfSlcclxuICAgICAgLnByb3ZpZGUoeyBwcm92aWRlOiBNb2RhbCwgdXNlVmFsdWU6IG1vZGFsIH0pXHJcbiAgICAgIC5hdHRhY2goTW9kYWxDb250YWluZXJDb21wb25lbnQpXHJcbiAgICAgIC50bygnYm9keScpO1xyXG5cclxuICAgIG1vZGFsLnNldENsYXNzID0gKG5ld0NsYXNzOiBzdHJpbmcpID0+IHtcclxuICAgICAgaWYgKG1vZGFsQ29udGFpbmVyUmVmLmluc3RhbmNlKSB7XHJcbiAgICAgICAgbW9kYWxDb250YWluZXJSZWYuaW5zdGFuY2UuY29uZmlnLmNsYXNzID0gbmV3Q2xhc3M7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgbW9kYWwub25CZWZvcmVIaWRlID0gbmV3IFN1YmplY3QoKTtcclxuICAgIG1vZGFsLm9uSGlkZGVuID0gbmV3IFN1YmplY3QoKTtcclxuICAgIHRoaXMuY29weUV2ZW50KG1vZGFsTG9hZGVyLm9uQmVmb3JlSGlkZSwgbW9kYWwub25CZWZvcmVIaWRlKTtcclxuICAgIHRoaXMuY29weUV2ZW50KG1vZGFsTG9hZGVyLm9uSGlkZGVuLCBtb2RhbC5vbkhpZGRlbik7XHJcbiAgICBtb2RhbENvbnRhaW5lclJlZi5zaG93KHtcclxuICAgICAgY29udGVudCxcclxuICAgICAgYW5pbWF0aW9uc0VuYWJsZWQ6IGNvbWJpbmVkQ29uZmlnLmFuaW1hdGVkLFxyXG4gICAgICBpbml0aWFsU3RhdGU6IGNvbWJpbmVkQ29uZmlnLmluaXRpYWxTdGF0ZSxcclxuICAgICAgbW9kYWxTZXJ2aWNlOiB0aGlzLFxyXG4gICAgICBpZDogY29tYmluZWRDb25maWcuaWQsXHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAobW9kYWxDb250YWluZXJSZWYuaW5zdGFuY2UpIHtcclxuICAgICAgbW9kYWxDb250YWluZXJSZWYuaW5zdGFuY2UubGV2ZWwgPSB0aGlzLm1vZGFsc0NvdW50O1xyXG4gICAgICBtb2RhbC5jb250ZW50ID0gbW9kYWxMb2FkZXIuZ2V0SW5uZXJDb21wb25lbnQoKTtcclxuICAgICAgbW9kYWwuaWQgPSBtb2RhbENvbnRhaW5lclJlZi5pbnN0YW5jZS5jb25maWc/LmlkO1xyXG4gICAgICBtb2RhbC5oaWRlID0gKHJlcykgPT4gbW9kYWxDb250YWluZXJSZWYuaW5zdGFuY2U/LmhpZGUocmVzKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbW9kYWw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhpZGVNb2RhbChpZD86IG51bWJlciB8IHN0cmluZywgcmVzdWx0PzogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoaWQgIT0gbnVsbCkge1xyXG4gICAgICBjb25zdCBpbmRleFRvUmVtb3ZlID0gdGhpcy5sb2FkZXJzLmZpbmRJbmRleCgobG9hZGVyKSA9PiBsb2FkZXIuaW5zdGFuY2U/LmNvbmZpZy5pZCA9PT0gaWQpO1xyXG4gICAgICBjb25zdCBtb2RhbExvYWRlciA9IHRoaXMubG9hZGVyc1tpbmRleFRvUmVtb3ZlXTtcclxuICAgICAgaWYgKG1vZGFsTG9hZGVyKSB7XHJcbiAgICAgICAgbW9kYWxMb2FkZXIuaGlkZShpZCwgcmVzdWx0KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5sb2FkZXJzLmZvckVhY2goKGxvYWRlcjogQ29tcG9uZW50TG9hZGVyPE1vZGFsQ29udGFpbmVyQ29tcG9uZW50PikgPT4ge1xyXG4gICAgICAgIGlmIChsb2FkZXIuaW5zdGFuY2UpIHtcclxuICAgICAgICAgIGxvYWRlci5oaWRlKGxvYWRlci5pbnN0YW5jZS5jb25maWcuaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNob3dCYWNrZHJvcChjb21iaW5lZENvbmZpZzogTW9kYWxPcHRpb25zKTogdm9pZCB7XHJcbiAgICBjb25zdCBpc0JhY2tkcm9wRW5hYmxlZCA9IGNvbWJpbmVkQ29uZmlnLmJhY2tkcm9wID09PSB0cnVlIHx8IGNvbWJpbmVkQ29uZmlnLmJhY2tkcm9wID09PSAnc3RhdGljJztcclxuICAgIGNvbnN0IGlzQmFja2Ryb3BJbkRPTSA9IHRoaXMuYmFja2Ryb3BSZWYgIT0gbnVsbDtcclxuICAgIGlmIChpc0JhY2tkcm9wRW5hYmxlZCAmJiAhaXNCYWNrZHJvcEluRE9NKSB7XHJcbiAgICAgIHRoaXMuYmFja2Ryb3BMb2FkZXJcclxuICAgICAgICAuYXR0YWNoKE1vZGFsQmFja2Ryb3BDb21wb25lbnQpXHJcbiAgICAgICAgLnRvKCdib2R5JylcclxuICAgICAgICAuc2hvdyh7IGFuaW1hdGlvbnNFbmFibGVkOiBjb21iaW5lZENvbmZpZy5hbmltYXRlZCwgYmFja2Ryb3BMb2FkZXI6IHRoaXMuYmFja2Ryb3BMb2FkZXIgfSk7XHJcbiAgICAgIHRoaXMuYmFja2Ryb3BSZWYgPSB0aGlzLmJhY2tkcm9wTG9hZGVyLmNvbXBvbmVudFJlZjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGlkZUJhY2tkcm9wKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmJhY2tkcm9wUmVmKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuYmFja2Ryb3BSZWYuaW5zdGFuY2UuaGlkZSgpO1xyXG4gICAgdGhpcy5iYWNrZHJvcFJlZiA9IHZvaWQgMDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlTG9hZGVycyhpZD86IG51bWJlciB8IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKGlkICE9IG51bGwpIHtcclxuICAgICAgY29uc3QgaW5kZXhUb1JlbW92ZSA9IHRoaXMubG9hZGVycy5maW5kSW5kZXgoKGxvYWRlcikgPT4gbG9hZGVyLmluc3RhbmNlPy5jb25maWcuaWQgPT09IGlkKTtcclxuICAgICAgaWYgKGluZGV4VG9SZW1vdmUgPj0gMCkge1xyXG4gICAgICAgIHRoaXMubG9hZGVycy5zcGxpY2UoaW5kZXhUb1JlbW92ZSwgMSk7XHJcbiAgICAgICAgdGhpcy5sb2FkZXJzLmZvckVhY2goKGxvYWRlcjogQ29tcG9uZW50TG9hZGVyPE1vZGFsQ29udGFpbmVyQ29tcG9uZW50PiwgaTogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICBpZiAobG9hZGVyLmluc3RhbmNlKSB7XHJcbiAgICAgICAgICAgIGxvYWRlci5pbnN0YW5jZS5sZXZlbCA9IGkgKyAxO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmxvYWRlcnMuc3BsaWNlKDAsIHRoaXMubG9hZGVycy5sZW5ndGgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhZGRCb2R5UGFkZGluZygpIHtcclxuICAgIGlmICh0aGlzLm1vZGFsc0NvdW50ID09PSAxKSB7XHJcbiAgICAgIGNvbnN0IHdpZHRoID0gdGhpcy5nZXRTY3JvbGxiYXJXaWR0aCgpO1xyXG4gICAgICBpZiAodGhpcy5pc1Njcm9sbEJhclByZXNlbnQod2lkdGgpKSB7XHJcbiAgICAgICAgdGhpcy5pbml0aWFsUGFkZGluZyA9IHRoaXMuZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nUmlnaHQ7XHJcbiAgICAgICAgY29uc3QgYWN0dWFsUGFkZGluZyA9IHBhcnNlRmxvYXQod2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5kb2N1bWVudC5ib2R5KS5wYWRkaW5nUmlnaHQpO1xyXG4gICAgICAgIHRoaXMuZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nUmlnaHQgPSBgJHthY3R1YWxQYWRkaW5nICsgd2lkdGh9cHhgO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJldmVydFNjcm9sbGJhcigpIHtcclxuICAgIHRoaXMuZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nUmlnaHQgPSB0aGlzLmluaXRpYWxQYWRkaW5nO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRTY3JvbGxiYXJXaWR0aCgpOiBudW1iZXIge1xyXG4gICAgY29uc3QgbWVhc3VyZXIgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgbWVhc3VyZXIuY2xhc3NOYW1lID0gJ21vZGFsLXNjcm9sbGJhci1tZWFzdXJlJztcclxuXHJcbiAgICBjb25zdCBib2R5ID0gdGhpcy5kb2N1bWVudC5ib2R5O1xyXG4gICAgYm9keS5hcHBlbmRDaGlsZChtZWFzdXJlcik7XHJcbiAgICBjb25zdCB3aWR0aCA9IG1lYXN1cmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoIC0gbWVhc3VyZXIuY2xpZW50V2lkdGg7XHJcbiAgICBib2R5LnJlbW92ZUNoaWxkKG1lYXN1cmVyKTtcclxuXHJcbiAgICByZXR1cm4gd2lkdGg7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzU2Nyb2xsQmFyUHJlc2VudChzY3JvbGxiYXJXaWR0aDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCByZWN0ID0gdGhpcy5kb2N1bWVudC5ib2R5LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgY29uc3QgYm9keVRvVmlld3BvcnRHYXAgPSB3aW5kb3cuaW5uZXJXaWR0aCAtIChyZWN0LmxlZnQgKyByZWN0LnJpZ2h0KTtcclxuICAgIGNvbnN0IHVuY2VydGFpbnR5ID0gMC4xICogc2Nyb2xsYmFyV2lkdGg7XHJcbiAgICByZXR1cm4gYm9keVRvVmlld3BvcnRHYXAgPj0gc2Nyb2xsYmFyV2lkdGggLSB1bmNlcnRhaW50eTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlTG9hZGVycygpOiB2b2lkIHtcclxuICAgIGNvbnN0IGxvYWRlciA9IHRoaXMuY2xmLmNyZWF0ZUxvYWRlcjxNb2RhbENvbnRhaW5lckNvbXBvbmVudD4oKTtcclxuICAgIHRoaXMuY29weUV2ZW50KGxvYWRlci5vbkJlZm9yZVNob3csIHRoaXMub25CZWZvcmVTaG93KTtcclxuICAgIHRoaXMuY29weUV2ZW50KGxvYWRlci5vblNob3duLCB0aGlzLm9uU2hvd24pO1xyXG4gICAgdGhpcy5jb3B5RXZlbnQobG9hZGVyLm9uQmVmb3JlSGlkZSwgdGhpcy5vbkJlZm9yZUhpZGUpO1xyXG4gICAgdGhpcy5jb3B5RXZlbnQobG9hZGVyLm9uSGlkZGVuLCB0aGlzLm9uSGlkZGVuKTtcclxuICAgIHRoaXMubG9hZGVycy5wdXNoKGxvYWRlcik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvcHlFdmVudChmcm9tOiBTdWJqZWN0PHVua25vd24+LCB0bzogU3ViamVjdDx1bmtub3duPikge1xyXG4gICAgZnJvbS5zdWJzY3JpYmUoKGRhdGEpID0+IHtcclxuICAgICAgdG8ubmV4dChkYXRhKTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,11 +1,11 @@
1
- export const cssClassNames = {
2
- backdrop: 'modal-backdrop',
3
- show: 'show',
4
- fade: 'fade',
5
- modalOpen: 'modal-open'
6
- };
7
- export const animationTime = {
8
- backdrop: 150,
9
- modal: 300,
10
- };
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtc3R5bGVzLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL3NlcnZpY2VzL21vZGFsLXNlcnZpY2UvbW9kYWwtc3R5bGVzLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRztJQUMzQixRQUFRLEVBQUUsZ0JBQWdCO0lBQzFCLElBQUksRUFBRSxNQUFNO0lBQ1osSUFBSSxFQUFFLE1BQU07SUFDYixTQUFTLEVBQUUsWUFBWTtDQUN2QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHO0lBQzNCLFFBQVEsRUFBRSxHQUFHO0lBQ2IsS0FBSyxFQUFFLEdBQUc7Q0FDWCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGNzc0NsYXNzTmFtZXMgPSB7XG4gIGJhY2tkcm9wOiAnbW9kYWwtYmFja2Ryb3AnLFxuICBzaG93OiAnc2hvdycsXG4gIGZhZGU6ICdmYWRlJyxcblx0bW9kYWxPcGVuOiAnbW9kYWwtb3Blbidcbn07XG5cbmV4cG9ydCBjb25zdCBhbmltYXRpb25UaW1lID0ge1xuICBiYWNrZHJvcDogMTUwLFxuICBtb2RhbDogMzAwLFxufTtcbiJdfQ==
1
+ export const cssClassNames = {
2
+ backdrop: 'modal-backdrop',
3
+ show: 'show',
4
+ fade: 'fade',
5
+ modalOpen: 'modal-open'
6
+ };
7
+ export const animationTime = {
8
+ backdrop: 150,
9
+ modal: 300,
10
+ };
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtc3R5bGVzLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctY29tcG9uZW50cy9zcmMvbGliL3NlcnZpY2VzL21vZGFsLXNlcnZpY2UvbW9kYWwtc3R5bGVzLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRztJQUMzQixRQUFRLEVBQUUsZ0JBQWdCO0lBQzFCLElBQUksRUFBRSxNQUFNO0lBQ1osSUFBSSxFQUFFLE1BQU07SUFDYixTQUFTLEVBQUUsWUFBWTtDQUN2QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHO0lBQzNCLFFBQVEsRUFBRSxHQUFHO0lBQ2IsS0FBSyxFQUFFLEdBQUc7Q0FDWCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGNzc0NsYXNzTmFtZXMgPSB7XHJcbiAgYmFja2Ryb3A6ICdtb2RhbC1iYWNrZHJvcCcsXHJcbiAgc2hvdzogJ3Nob3cnLFxyXG4gIGZhZGU6ICdmYWRlJyxcclxuXHRtb2RhbE9wZW46ICdtb2RhbC1vcGVuJ1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGFuaW1hdGlvblRpbWUgPSB7XHJcbiAgYmFja2Ryb3A6IDE1MCxcclxuICBtb2RhbDogMzAwLFxyXG59O1xyXG4iXX0=
@@ -1,24 +1,24 @@
1
- import { Injectable } from '@angular/core';
2
- /**
3
- * Modal class.
4
- * @remarks
5
- * This is returned from {@link ModalService.show}.
6
- * @public
7
- */
8
- export class Modal {
9
- constructor() {
10
- /**
11
- * Hides the modal
12
- * @param result - A result to the observers.
13
- */
14
- this.hide = () => void 0;
15
- /**
16
- * Sets new class to modal window.
17
- */
18
- this.setClass = () => void 0;
19
- }
20
- }
21
- Modal.decorators = [
22
- { type: Injectable }
23
- ];
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1jb21wb25lbnRzL3NyYy9saWIvc2VydmljZXMvbW9kYWwtc2VydmljZS9tb2RhbC5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDOzs7OztHQUtHO0FBRUgsTUFBTSxPQUFPLEtBQUs7SUFEbEI7UUEwQkU7OztXQUdHO1FBQ0gsU0FBSSxHQUEyQixHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1Qzs7V0FFRztRQUNILGFBQVEsR0FBK0IsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEQsQ0FBQzs7O1lBbkNBLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogTW9kYWwgY2xhc3MuXG4gKiBAcmVtYXJrc1xuICogVGhpcyBpcyByZXR1cm5lZCBmcm9tIHtAbGluayBNb2RhbFNlcnZpY2Uuc2hvd30uXG4gKiBAcHVibGljXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNb2RhbDxUID0gYW55PiB7XG4gIC8qKlxuICAgKiBFdmVudCB0aGF0IGlzIGZpcmVkIHdoZW4gdGhlIG1vZGFsIGJlaGluZCB0aGUgcmVmIHN0YXJ0cyBoaWRpbmcuXG4gICAqIEByZXR1cm5zXG4gICAqIE1vZGFsIGNvbXBvbmVudCBpbnN0YW5jZS5cbiAgICovXG4gIG9uQmVmb3JlSGlkZT86IFN1YmplY3Q8dW5rbm93bj47XG4gIC8qKlxuICAgKiBFdmVudCB0aGF0IGlzIGZpcmVkIHdoZW4gdGhlIG1vZGFsIGJlaGluZCB0aGUgcmVmIGZpbmlzaGVzIGhpZGluZy5cbiAgICogQHJldHVybnNcbiAgICogQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGlkIG9mIHRoZSBjbG9zZWQgbW9kYWwgYW5kIHJlc3VsdC5cbiAgICovXG4gIG9uSGlkZGVuPzogU3ViamVjdDx1bmtub3duPjtcbiAgLyoqXG4gICAqICBJZCBvZiB0aGlzIG1vZGFsLlxuICAgKi9cbiAgaWQ/OiBudW1iZXIgfCBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJlZmVyZW5jZSB0byBhIGNvbXBvbmVudCBpbnNpZGUgdGhlIG1vZGFsLiBOdWxsIGlmIG1vZGFsJ3MgYmVlbiBjcmVhdGVkIHdpdGggVGVtcGxhdGVSZWYuXG4gICAqIEByZW1hcmtzXG4gICAqIFlvdSBjYW4gdXNlIHRoaXMgdG8gZG8gbmFzdHkgc3R1ZmYgd2l0aCBvcGVuZWQgbW9kYWwgaW5zdGFuY2UuXG4gICAqL1xuICBjb250ZW50PzogVDtcblxuICAvKipcbiAgICogSGlkZXMgdGhlIG1vZGFsXG4gICAqIEBwYXJhbSByZXN1bHQgLSBBIHJlc3VsdCB0byB0aGUgb2JzZXJ2ZXJzLlxuICAgKi9cbiAgaGlkZTogKHJlc3VsdD86IGFueSkgPT4gdm9pZCA9ICgpID0+IHZvaWQgMDtcbiAgLyoqXG4gICAqIFNldHMgbmV3IGNsYXNzIHRvIG1vZGFsIHdpbmRvdy5cbiAgICovXG4gIHNldENsYXNzOiAobmV3Q2xhc3M6IHN0cmluZykgPT4gdm9pZCA9ICgpID0+IHZvaWQgMDtcbn1cbiJdfQ==
1
+ import { Injectable } from '@angular/core';
2
+ /**
3
+ * Modal class.
4
+ * @remarks
5
+ * This is returned from {@link ModalService.show}.
6
+ * @public
7
+ */
8
+ export class Modal {
9
+ constructor() {
10
+ /**
11
+ * Hides the modal
12
+ * @param result - A result to the observers.
13
+ */
14
+ this.hide = () => void 0;
15
+ /**
16
+ * Sets new class to modal window.
17
+ */
18
+ this.setClass = () => void 0;
19
+ }
20
+ }
21
+ Modal.decorators = [
22
+ { type: Injectable }
23
+ ];
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1jb21wb25lbnRzL3NyYy9saWIvc2VydmljZXMvbW9kYWwtc2VydmljZS9tb2RhbC5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDOzs7OztHQUtHO0FBRUgsTUFBTSxPQUFPLEtBQUs7SUFEbEI7UUEwQkU7OztXQUdHO1FBQ0gsU0FBSSxHQUEyQixHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1Qzs7V0FFRztRQUNILGFBQVEsR0FBK0IsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEQsQ0FBQzs7O1lBbkNBLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcbi8qKlxyXG4gKiBNb2RhbCBjbGFzcy5cclxuICogQHJlbWFya3NcclxuICogVGhpcyBpcyByZXR1cm5lZCBmcm9tIHtAbGluayBNb2RhbFNlcnZpY2Uuc2hvd30uXHJcbiAqIEBwdWJsaWNcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIE1vZGFsPFQgPSBhbnk+IHtcclxuICAvKipcclxuICAgKiBFdmVudCB0aGF0IGlzIGZpcmVkIHdoZW4gdGhlIG1vZGFsIGJlaGluZCB0aGUgcmVmIHN0YXJ0cyBoaWRpbmcuXHJcbiAgICogQHJldHVybnNcclxuICAgKiBNb2RhbCBjb21wb25lbnQgaW5zdGFuY2UuXHJcbiAgICovXHJcbiAgb25CZWZvcmVIaWRlPzogU3ViamVjdDx1bmtub3duPjtcclxuICAvKipcclxuICAgKiBFdmVudCB0aGF0IGlzIGZpcmVkIHdoZW4gdGhlIG1vZGFsIGJlaGluZCB0aGUgcmVmIGZpbmlzaGVzIGhpZGluZy5cclxuICAgKiBAcmV0dXJuc1xyXG4gICAqIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBpZCBvZiB0aGUgY2xvc2VkIG1vZGFsIGFuZCByZXN1bHQuXHJcbiAgICovXHJcbiAgb25IaWRkZW4/OiBTdWJqZWN0PHVua25vd24+O1xyXG4gIC8qKlxyXG4gICAqICBJZCBvZiB0aGlzIG1vZGFsLlxyXG4gICAqL1xyXG4gIGlkPzogbnVtYmVyIHwgc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBSZWZlcmVuY2UgdG8gYSBjb21wb25lbnQgaW5zaWRlIHRoZSBtb2RhbC4gTnVsbCBpZiBtb2RhbCdzIGJlZW4gY3JlYXRlZCB3aXRoIFRlbXBsYXRlUmVmLlxyXG4gICAqIEByZW1hcmtzXHJcbiAgICogWW91IGNhbiB1c2UgdGhpcyB0byBkbyBuYXN0eSBzdHVmZiB3aXRoIG9wZW5lZCBtb2RhbCBpbnN0YW5jZS5cclxuICAgKi9cclxuICBjb250ZW50PzogVDtcclxuXHJcbiAgLyoqXHJcbiAgICogSGlkZXMgdGhlIG1vZGFsXHJcbiAgICogQHBhcmFtIHJlc3VsdCAtIEEgcmVzdWx0IHRvIHRoZSBvYnNlcnZlcnMuXHJcbiAgICovXHJcbiAgaGlkZTogKHJlc3VsdD86IGFueSkgPT4gdm9pZCA9ICgpID0+IHZvaWQgMDtcclxuICAvKipcclxuICAgKiBTZXRzIG5ldyBjbGFzcyB0byBtb2RhbCB3aW5kb3cuXHJcbiAgICovXHJcbiAgc2V0Q2xhc3M6IChuZXdDbGFzczogc3RyaW5nKSA9PiB2b2lkID0gKCkgPT4gdm9pZCAwO1xyXG59XHJcbiJdfQ==