ngx-snotifire 1.0.2-beta → 1.0.2

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 (27) hide show
  1. package/README.md +1 -0
  2. package/esm2020/lib/components/buttons/buttons-config.interface.mjs +1 -1
  3. package/esm2020/lib/components/buttons/buttons.component.mjs +3 -3
  4. package/esm2020/lib/components/ngx-notifire/ngx-snotifire.component.mjs +3 -3
  5. package/esm2020/lib/components/prompt/prompt.component.mjs +1 -1
  6. package/esm2020/lib/components/toast/notifire-toast.model.mjs +2 -2
  7. package/esm2020/lib/components/toast/toast.component.mjs +5 -5
  8. package/esm2020/lib/defaults/defaults.interface.mjs +1 -1
  9. package/esm2020/lib/defaults/global-config.interface.mjs +1 -1
  10. package/esm2020/lib/models/snotifire-notifications.interface.mjs +1 -1
  11. package/esm2020/lib/ngx-snotifire.module.mjs +3 -3
  12. package/esm2020/lib/services/notification.service.mjs +24 -16
  13. package/fesm2015/ngx-snotifire.mjs +33 -25
  14. package/fesm2015/ngx-snotifire.mjs.map +1 -1
  15. package/fesm2020/ngx-snotifire.mjs +33 -25
  16. package/fesm2020/ngx-snotifire.mjs.map +1 -1
  17. package/lib/components/buttons/buttons-config.interface.d.ts +2 -2
  18. package/lib/components/buttons/buttons.component.d.ts +4 -4
  19. package/lib/components/ngx-notifire/ngx-snotifire.component.d.ts +7 -7
  20. package/lib/components/prompt/prompt.component.d.ts +2 -2
  21. package/lib/components/toast/notifire-toast.model.d.ts +2 -2
  22. package/lib/components/toast/toast.component.d.ts +4 -4
  23. package/lib/defaults/defaults.interface.d.ts +3 -3
  24. package/lib/defaults/global-config.interface.d.ts +1 -1
  25. package/lib/models/snotifire-notifications.interface.d.ts +10 -10
  26. package/lib/services/notification.service.d.ts +47 -41
  27. package/package.json +2 -1
@@ -4,10 +4,10 @@ import { from, Subject } from 'rxjs';
4
4
  import { SetToastType } from '../decorators/set-toast-type.decorator';
5
5
  import { TransformArgument } from '../decorators/transform-argument.decorator';
6
6
  import { SnotifireEventType, SnotifireType } from '../models';
7
- import { NotifireModel } from '../components/toast/notifire-toast.model';
7
+ import { SnotifireToastModel } from '../components/toast/notifire-toast.model';
8
8
  import { mergeDeep, uuid } from '../utils';
9
9
  import * as i0 from "@angular/core";
10
- export class SnotificationService {
10
+ export class SnotifireService {
11
11
  constructor(defaultConfig) {
12
12
  this.defaultConfig = defaultConfig;
13
13
  /**
@@ -30,12 +30,12 @@ export class SnotificationService {
30
30
  create(notif) {
31
31
  if (this.defaultConfig.type && notif.config && notif.config.type) {
32
32
  const config = mergeDeep(this.defaultConfig.snotifireConfig, this.defaultConfig.type[notif.config.type], notif.config);
33
- const toast = new NotifireModel(uuid(), notif.title ? notif.title : '', notif.body ? notif.body : '', config);
33
+ const toast = new SnotifireToastModel(uuid(), notif.title ? notif.title : '', notif.body ? notif.body : '', config);
34
34
  this.add(toast);
35
35
  return toast;
36
36
  }
37
37
  const config = mergeDeep(this.defaultConfig.snotifireConfig, notif.config);
38
- const defaulToast = new NotifireModel(uuid(), notif.title ? notif.title : '', notif.body ? notif.body : '', config);
38
+ const defaulToast = new SnotifireToastModel(uuid(), notif.title ? notif.title : '', notif.body ? notif.body : '', config);
39
39
  this.add(defaulToast);
40
40
  return defaulToast;
41
41
  }
@@ -206,9 +206,17 @@ export class SnotificationService {
206
206
  this.emit();
207
207
  this.toastChanged.next(toast);
208
208
  }
209
+ /**
210
+ * returns SnotifyToast object
211
+ * @param id Number
212
+ * @return SnotifyToast|undefined
213
+ */
214
+ get(id) {
215
+ return (this.notifications && this.notifications.find((toast) => toast.id === id));
216
+ }
209
217
  }
210
- SnotificationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: SnotificationService, deps: [{ token: 'NotifireConfig' }], target: i0.ɵɵFactoryTarget.Injectable });
211
- SnotificationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: SnotificationService });
218
+ SnotifireService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: SnotifireService, deps: [{ token: 'snotifireConfig' }], target: i0.ɵɵFactoryTarget.Injectable });
219
+ SnotifireService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: SnotifireService });
212
220
  __decorate([
213
221
  TransformArgument
214
222
  /**
@@ -216,7 +224,7 @@ __decorate([
216
224
  */
217
225
  ,
218
226
  SetToastType
219
- ], SnotificationService.prototype, "success", null);
227
+ ], SnotifireService.prototype, "success", null);
220
228
  __decorate([
221
229
  TransformArgument
222
230
  /**
@@ -224,7 +232,7 @@ __decorate([
224
232
  */
225
233
  ,
226
234
  SetToastType
227
- ], SnotificationService.prototype, "error", null);
235
+ ], SnotifireService.prototype, "error", null);
228
236
  __decorate([
229
237
  TransformArgument
230
238
  /**
@@ -232,7 +240,7 @@ __decorate([
232
240
  */
233
241
  ,
234
242
  SetToastType
235
- ], SnotificationService.prototype, "info", null);
243
+ ], SnotifireService.prototype, "info", null);
236
244
  __decorate([
237
245
  TransformArgument
238
246
  /**
@@ -240,7 +248,7 @@ __decorate([
240
248
  */
241
249
  ,
242
250
  SetToastType
243
- ], SnotificationService.prototype, "warning", null);
251
+ ], SnotifireService.prototype, "warning", null);
244
252
  __decorate([
245
253
  TransformArgument
246
254
  /**
@@ -248,7 +256,7 @@ __decorate([
248
256
  */
249
257
  ,
250
258
  SetToastType
251
- ], SnotificationService.prototype, "confirm", null);
259
+ ], SnotifireService.prototype, "confirm", null);
252
260
  __decorate([
253
261
  TransformArgument
254
262
  /**
@@ -256,7 +264,7 @@ __decorate([
256
264
  */
257
265
  ,
258
266
  SetToastType
259
- ], SnotificationService.prototype, "prompt", null);
267
+ ], SnotifireService.prototype, "prompt", null);
260
268
  __decorate([
261
269
  TransformArgument
262
270
  /**
@@ -264,11 +272,11 @@ __decorate([
264
272
  */
265
273
  ,
266
274
  SetToastType
267
- ], SnotificationService.prototype, "async", null);
268
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: SnotificationService, decorators: [{
275
+ ], SnotifireService.prototype, "async", null);
276
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: SnotifireService, decorators: [{
269
277
  type: Injectable
270
278
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
271
279
  type: Inject,
272
- args: ['NotifireConfig']
280
+ args: ['snotifireConfig']
273
281
  }] }]; }, propDecorators: { success: [], error: [], info: [], warning: [], confirm: [], prompt: [], async: [] } });
274
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc25vdGlmaXJlL3NyYy9saWIvc2VydmljZXMvbm90aWZpY2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxJQUFJLEVBQWMsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDL0UsT0FBTyxFQUFtQixrQkFBa0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFHL0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sVUFBVSxDQUFDOztBQUczQyxNQUFNLE9BQU8sb0JBQW9CO0lBZ0IvQixZQUNtQyxhQUFtQztRQUFuQyxrQkFBYSxHQUFiLGFBQWEsQ0FBc0I7UUFoQnRFOztXQUVHO1FBQ2MseUJBQW9CLEdBQUcsSUFBSSxDQUFDO1FBRTdDOztXQUVHO1FBQ00sWUFBTyxHQUFHLElBQUksT0FBTyxFQUFtQixDQUFDO1FBRXpDLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUNyQyxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFpQixDQUFDO1FBRXJELGtCQUFhLEdBQXlCLEVBQUUsQ0FBQztJQUl0QyxDQUFDO0lBRUo7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxLQUFxQjtRQUMxQixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLE1BQU0s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QUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDOztrSEFqZlUsb0JBQW9CLGtCQWlCckIsZ0JBQWdCO3NIQWpCZixvQkFBb0I7O0lBaUw5QixpQkFBaUI7SUFDbEI7O09BRUc7O0lBQ0YsWUFBWTttREFNWjs7SUFpQ0EsaUJBQWlCO0lBQ2xCOztPQUVHOztJQUNGLFlBQVk7aURBR1o7O0lBaUNBLGlCQUFpQjtJQUNsQjs7T0FFRzs7SUFDRixZQUFZO2dEQUdaOztJQWlDQSxpQkFBaUI7SUFDbEI7O09BRUc7O0lBQ0YsWUFBWTttREFHWjs7SUFpQ0EsaUJBQWlCO0lBQ2xCOztPQUVHOztJQUNGLFlBQVk7bURBR1o7O0lBaUNBLGlCQUFpQjtJQUNsQjs7T0FFRzs7SUFDRixZQUFZO2tEQUdaOztJQXFEQSxpQkFBaUI7SUFDbEI7O09BRUc7O0lBQ0YsWUFBWTtpREE0Qlo7NEZBeGRVLG9CQUFvQjtrQkFEaEMsVUFBVTs7MEJBa0JOLE1BQU07MkJBQUMsZ0JBQWdCOzRDQXFLMUIsT0FBTyxNQTJDUCxLQUFLLE1Bd0NMLElBQUksTUF3Q0osT0FBTyxNQXdDUCxPQUFPLE1Bd0NQLE1BQU0sTUE0RE4sS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2V0VG9hc3RUeXBlIH0gZnJvbSAnLi4vZGVjb3JhdG9ycy9zZXQtdG9hc3QtdHlwZS5kZWNvcmF0b3InO1xuaW1wb3J0IHsgVHJhbnNmb3JtQXJndW1lbnQgfSBmcm9tICcuLi9kZWNvcmF0b3JzL3RyYW5zZm9ybS1hcmd1bWVudC5kZWNvcmF0b3InO1xuaW1wb3J0IHsgU25vdGlmaXJlQ29uZmlnLCBTbm90aWZpcmVFdmVudFR5cGUsIFNub3RpZmlyZVR5cGUgfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uRGVmYXVsdHMgfSBmcm9tICcuLi9kZWZhdWx0cy9kZWZhdWx0cy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU25vdGlmaXJlTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvc25vdGlmaXJlLm1vZGVsJztcbmltcG9ydCB7IE5vdGlmaXJlTW9kZWwgfSBmcm9tICcuLi9jb21wb25lbnRzL3RvYXN0L25vdGlmaXJlLXRvYXN0Lm1vZGVsJztcbmltcG9ydCB7IG1lcmdlRGVlcCwgdXVpZCB9IGZyb20gJy4uL3V0aWxzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNub3RpZmljYXRpb25TZXJ2aWNlIHtcbiAgLyoqXG4gICAqIE1pbmltdW0gZGlzcGxheSB0aW1lIG9mIHRoZSBub3RpZmljYXRpb24gbWVzc2FnZVxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBtaW5pbXVtRGlzcGxheWVkVGltZSA9IDMwMDA7XG5cbiAgLyoqXG4gICAqIEVtaXRzIE5vdGlmaXJlIE5vdGlmaWNhdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IGVtaXR0ZXIgPSBuZXcgU3ViamVjdDxOb3RpZmlyZU1vZGVsW10+KCk7XG5cbiAgcmVhZG9ubHkgdG9hc3REZWxldGVkID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuICByZWFkb25seSB0b2FzdENoYW5nZWQgPSBuZXcgU3ViamVjdDxOb3RpZmlyZU1vZGVsPigpO1xuXG4gIG5vdGlmaWNhdGlvbnM6IEFycmF5PE5vdGlmaXJlTW9kZWw+ID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdCgnTm90aWZpcmVDb25maWcnKSBwdWJsaWMgZGVmYXVsdENvbmZpZzogTm90aWZpY2F0aW9uRGVmYXVsdHNcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRvYXN0IGFuZCBhZGQgaXQgdG8gYXJyYXksIHJldHVybnMgdG9hc3QgaWRcbiAgICogQHBhcmFtIE5vdGlmaWNhdGlvbk1vZGVsIE5vdGlmaWNhdGlvbk1vZGVsXG4gICAqIEByZXR1cm4gbnVtYmVyXG4gICAqL1xuICBjcmVhdGUobm90aWY6IFNub3RpZmlyZU1vZGVsKTogTm90aWZpcmVNb2RlbCB7XG4gICAgaWYgKHRoaXMuZGVmYXVsdENvbmZpZy50eXBlICYmIG5vdGlmLmNvbmZpZyAmJiBub3RpZi5jb25maWcudHlwZSkge1xuICAgICAgY29uc3QgY29uZmlnID0gbWVyZ2VEZWVwKFxuICAgICAgICB0aGlzLmRlZmF1bHRDb25maWcuc25vdGlmaXJlQ29uZmlnLFxuICAgICAgICB0aGlzLmRlZmF1bHRDb25maWcudHlwZVtub3RpZi5jb25maWcudHlwZV0sXG4gICAgICAgIG5vdGlmLmNvbmZpZ1xuICAgICAgKTtcbiAgICAgIGNvbnN0IHRvYXN0ID0gbmV3IE5vdGlmaXJlTW9kZWwoXG4gICAgICAgIHV1aWQoKSxcbiAgICAgICAgbm90aWYudGl0bGUgPyBub3RpZi50aXRsZSA6ICcnLFxuICAgICAgICBub3RpZi5ib2R5ID8gbm90aWYuYm9keSA6ICcnLFxuICAgICAgICBjb25maWdcbiAgICAgICk7XG4gICAgICB0aGlzLmFkZCh0b2FzdCk7XG4gICAgICByZXR1cm4gdG9hc3Q7XG4gICAgfVxuICAgIGNvbnN0IGNvbmZpZyA9IG1lcmdlRGVlcCh0aGlzLmRlZmF1bHRDb25maWcuc25vdGlmaXJlQ29uZmlnLCBub3RpZi5jb25maWcpO1xuICAgIGNvbnN0IGRlZmF1bFRvYXN0ID0gbmV3IE5vdGlmaXJlTW9kZWwoXG4gICAgICB1dWlkKCksXG4gICAgICBub3RpZi50aXRsZSA/IG5vdGlmLnRpdGxlIDogJycsXG4gICAgICBub3RpZi5ib2R5ID8gbm90aWYuYm9keSA6ICcnLFxuICAgICAgY29uZmlnXG4gICAgKTtcbiAgICB0aGlzLmFkZChkZWZhdWxUb2FzdCk7XG4gICAgcmV0dXJuIGRlZmF1bFRvYXN0O1xuICB9XG4gIC8qKlxuICAgKiBJZiBJRCBwYXNzZWQsIGVtaXRzIHRvYXN0IGFuaW1hdGlvbiByZW1vdmUsIGlmIElEICYgUkVNT1ZFIHBhc3NlZCwgcmVtb3ZlcyB0b2FzdCBmcm9tIG5vdGlmaWNhdGlvbnMgYXJyYXlcbiAgICogQHBhcmFtIGlkIG51bWJlclxuICAgKiBAcGFyYW0gcmVtb3ZlIGJvb2xlYW5cbiAgICovXG4gIHJlbW92ZShpZDogbnVtYmVyLCByZW1vdmU/OiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKCFpZCkge1xuICAgICAgcmV0dXJuIHRoaXMuY2xlYXIoKTtcbiAgICB9XG4gICAgaWYgKHJlbW92ZSkge1xuICAgICAgdGhpcy5ub3RpZmljYXRpb25zID0gdGhpcy5ub3RpZmljYXRpb25zLmZpbHRlcihcbiAgICAgICAgKHRvYXN0KSA9PiB0b2FzdC5pZCAhPT0gaWRcbiAgICAgICk7XG4gICAgICByZXR1cm4gdGhpcy5lbWl0KCk7XG4gICAgfVxuICAgIHRoaXMudG9hc3REZWxldGVkLm5leHQoaWQpO1xuICB9XG5cbiAgc2V0RGVmYXVsdHMoZGVmYXVsdHM6IE5vdGlmaWNhdGlvbkRlZmF1bHRzKTogTm90aWZpY2F0aW9uRGVmYXVsdHMge1xuICAgIGNvbnN0IG1lcmdlZENvbmZpZyA9ICh0aGlzLmRlZmF1bHRDb25maWcgPSBtZXJnZURlZXAoXG4gICAgICB0aGlzLmRlZmF1bHRDb25maWcsXG4gICAgICBkZWZhdWx0c1xuICAgICkgYXMgTm90aWZpY2F0aW9uRGVmYXVsdHMpO1xuICAgIHJldHVybiBtZXJnZWRDb25maWc7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgbm90aWZpY2F0aW9ucyBhcnJheVxuICAgKi9cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5ub3RpZmljYXRpb25zID0gW107XG4gICAgdGhpcy5lbWl0KCk7XG4gIH1cblxuICAvKipcbiAgICogYWRkIE5vdGlmaXJlVG9hc3QgdG8gbm90aWZpY2F0aW9ucyBhcnJheVxuICAgKiBAcGFyYW0gdG9hc3QgTm90aWZpcmVUb2FzdFxuICAgKi9cbiAgcHJpdmF0ZSBhZGQodG9hc3Q6IE5vdGlmaXJlTW9kZWwpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmRlZmF1bHRDb25maWcgJiZcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZy5nbG9iYWwgJiZcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZy5nbG9iYWwuZmlsdGVyRHVwbGljYXRlcyAmJlxuICAgICAgdGhpcy5jb250YWluc1RvYXN0KHRvYXN0KVxuICAgICkge1xuICAgICAgaWYgKCF0aGlzLmRlZmF1bHRDb25maWcuZ2xvYmFsLmZpbHRlckR1cGxpY2F0ZXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIGdsb2JhbCBjb25maWcnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnICYmXG4gICAgICB0aGlzLmRlZmF1bHRDb25maWcuZ2xvYmFsICYmXG4gICAgICB0aGlzLmRlZmF1bHRDb25maWcuZ2xvYmFsLm5ld09uVG9wXG4gICAgKSB7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvbnMudW5zaGlmdCh0b2FzdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubm90aWZpY2F0aW9ucy5wdXNoKHRvYXN0KTtcbiAgICB9XG4gICAgdGhpcy5lbWl0KCk7XG4gIH1cblxuICAvKipcbiAgICogZW1pdCBjaGFuZ2VzIGluIG5vdGlmaWNhdGlvbnMgYXJyYXlcbiAgICovXG4gIHByaXZhdGUgZW1pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmVtaXR0ZXIubmV4dCh0aGlzLm5vdGlmaWNhdGlvbnMuc2xpY2UoKSk7XG4gIH1cblxuICAvKipcbiAgICogY2hlY2tzIGlmIHRoZSB0b2FzdCBpcyBpbiB0aGUgY29sbGVjdGlvbi5cbiAgICogQHBhcmFtIGluVG9hc3QgTm90aWZpcmVUb2FzdFxuICAgKiBAcmV0dXJucyBib29sZWFuXG4gICAqL1xuICBwcml2YXRlIGNvbnRhaW5zVG9hc3QoaW5Ub2FzdDogTm90aWZpcmVNb2RlbCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm5vdGlmaWNhdGlvbnMuc29tZSgodG9hc3QpID0+IHRvYXN0LmVxdWFscyhpblRvYXN0KSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBlbXB0eSB0b2FzdCB3aXRoIGh0bWwgc3RyaW5nIGluc2lkZVxuICAgKiBAcGFyYW0gaHRtbCBzdHJpbmcgfCBTYWZlSHRtbFxuICAgKiBAcGFyYW0gY29uZmlnIE5vdGlmaXJlQ29uZmlnXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgaHRtbChodG1sOiBzdHJpbmcgfCBTYWZlSHRtbCwgY29uZmlnPzogU25vdGlmaXJlQ29uZmlnKTogTm90aWZpcmVNb2RlbCB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlKHtcbiAgICAgIHRpdGxlOiB1bmRlZmluZWQsXG4gICAgICBib2R5OiB1bmRlZmluZWQsXG4gICAgICBjb25maWc6IHtcbiAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICAuLi57IGh0bWwgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIENyZWF0ZSB0b2FzdCB3aXRoIHN1Y2Nlc3Mgc3R5bGUgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgc3VjY2Vzcyhib2R5OiBzdHJpbmcpOiBOb3RpZmlyZU1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggc3VjY2VzcyBzdHlsZSByZXR1cm5zIHRvYXN0IGlkO1xuICAgKiBAcGFyYW0gYm9keSBzdHJpbmdcbiAgICogQHBhcmFtIHRpdGxlIHN0cmluZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIHN1Y2Nlc3MoYm9keTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKTogTm90aWZpcmVNb2RlbDtcbiAgLyoqXG4gICAqIENyZWF0ZSB0b2FzdCB3aXRoIHN1Y2Nlc3Mgc3R5bGUgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEBwYXJhbSBjb25maWcgTm90aWZpY2F0aW9uQ29uZmlnXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgc3VjY2Vzcyhib2R5OiBzdHJpbmcsIGNvbmZpZzogU25vdGlmaXJlQ29uZmlnKTogTm90aWZpcmVNb2RlbDtcbiAgLyoqXG4gICAqIENyZWF0ZSB0b2FzdCB3aXRoIHN1Y2Nlc3Mgc3R5bGUgIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBbYm9keV0gc3RyaW5nXG4gICAqIEBwYXJhbSBbdGl0bGVdIHN0cmluZ1xuICAgKiBAcGFyYW0gW2NvbmZpZ10gTm90aWZpY2F0aW9uQ29uZmlnXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgc3VjY2Vzcyhib2R5OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcsIGNvbmZpZzogU25vdGlmaXJlQ29uZmlnKTogTm90aWZpcmVNb2RlbDtcblxuICAvKipcbiAgICogVHJhbnNmb3JtIHRvYXN0IGFyZ3VtZW50cyBpbnRvIE5vdGlmaWNhdGlvbk1vZGVsIG9iamVjdFxuICAgKi9cbiAgQFRyYW5zZm9ybUFyZ3VtZW50XG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGN1cnJlbnQgdG9hc3QgdHlwZSBhbmQgY29sbGVjdHMgZGVmYXVsdCBjb25maWd1cmF0aW9uXG4gICAqL1xuICBAU2V0VG9hc3RUeXBlXG4gIHN1Y2Nlc3MoYXJnczogYW55KTogTm90aWZpcmVNb2RlbCB7XG4gICAgaWYgKCFhcmdzLmNvbmZpZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIGNvbmZpZywgcGxlYXNlIGNvbmZpZ3VyZSBzZXJ2aWNlIGFjY29yZGluZ2x5Jyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNyZWF0ZShhcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBlcnJvciBzdHlsZSByZXR1cm5zIHRvYXN0IGlkO1xuICAgKiBAcGFyYW0gYm9keSBzdHJpbmdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBlcnJvcihib2R5OiBzdHJpbmcpOiBOb3RpZmlyZU1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggZXJyb3Igc3R5bGUgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEBwYXJhbSB0aXRsZSBzdHJpbmdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBlcnJvcihib2R5OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcpOiBOb3RpZmlyZU1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggZXJyb3Igc3R5bGUgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEBwYXJhbSBjb25maWcgTm90aWZpY2F0aW9uQ29uZmlnXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgZXJyb3IoYm9keTogc3RyaW5nLCBjb25maWc6IFNub3RpZmlyZUNvbmZpZyk6IE5vdGlmaXJlTW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBlcnJvciBzdHlsZSAgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIFtib2R5XSBzdHJpbmdcbiAgICogQHBhcmFtIFt0aXRsZV0gc3RyaW5nXG4gICAqIEBwYXJhbSBbY29uZmlnXSBOb3RpZmljYXRpb25Db25maWdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBlcnJvcihib2R5OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcsIGNvbmZpZzogU25vdGlmaXJlQ29uZmlnKTogTm90aWZpcmVNb2RlbDtcbiAgLyoqXG4gICAqIFRyYW5zZm9ybSB0b2FzdCBhcmd1bWVudHMgaW50byBOb3RpZmljYXRpb25Nb2RlbCBvYmplY3RcbiAgICovXG4gIEBUcmFuc2Zvcm1Bcmd1bWVudFxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBjdXJyZW50IHRvYXN0IHR5cGUgYW5kIGNvbGxlY3RzIGRlZmF1bHQgY29uZmlndXJhdGlvblxuICAgKi9cbiAgQFNldFRvYXN0VHlwZVxuICBlcnJvcihhcmdzOiBhbnkpOiBOb3RpZmlyZU1vZGVsIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGUoYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggaW5mbyBzdHlsZSByZXR1cm5zIHRvYXN0IGlkO1xuICAgKiBAcGFyYW0gYm9keSBzdHJpbmdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBpbmZvKGJvZHk6IHN0cmluZyk6IE5vdGlmaXJlTW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBpbmZvIHN0eWxlIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcGFyYW0gdGl0bGUgc3RyaW5nXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgaW5mbyhib2R5OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcpOiBOb3RpZmlyZU1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggaW5mbyBzdHlsZSByZXR1cm5zIHRvYXN0IGlkO1xuICAgKiBAcGFyYW0gYm9keSBzdHJpbmdcbiAgICogQHBhcmFtIGNvbmZpZyBOb3RpZmljYXRpb25Db25maWdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBpbmZvKGJvZHk6IHN0cmluZywgY29uZmlnOiBTbm90aWZpcmVDb25maWcpOiBOb3RpZmlyZU1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggaW5mbyBzdHlsZSAgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIFtib2R5XSBzdHJpbmdcbiAgICogQHBhcmFtIFt0aXRsZV0gc3RyaW5nXG4gICAqIEBwYXJhbSBbY29uZmlnXSBOb3RpZmljYXRpb25Db25maWdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBpbmZvKGJvZHk6IHN0cmluZywgdGl0bGU6IHN0cmluZywgY29uZmlnOiBTbm90aWZpcmVDb25maWcpOiBOb3RpZmlyZU1vZGVsO1xuICAvKipcbiAgICogVHJhbnNmb3JtIHRvYXN0IGFyZ3VtZW50cyBpbnRvIE5vdGlmaWNhdGlvbk1vZGVsIG9iamVjdFxuICAgKi9cbiAgQFRyYW5zZm9ybUFyZ3VtZW50XG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGN1cnJlbnQgdG9hc3QgdHlwZSBhbmQgY29sbGVjdHMgZGVmYXVsdCBjb25maWd1cmF0aW9uXG4gICAqL1xuICBAU2V0VG9hc3RUeXBlXG4gIGluZm8oYXJnczogYW55KTogTm90aWZpcmVNb2RlbCB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlKGFyZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSB0b2FzdCB3aXRoIHdhcm5pbmcgc3R5bGUgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgd2FybmluZyhib2R5OiBzdHJpbmcpOiBOb3RpZmlyZU1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggd2FybmluZyBzdHlsZSByZXR1cm5zIHRvYXN0IGlkO1xuICAgKiBAcGFyYW0gYm9keSBzdHJpbmdcbiAgICogQHBhcmFtIHRpdGxlIHN0cmluZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIHdhcm5pbmcoYm9keTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKTogTm90aWZpcmVNb2RlbDtcbiAgLyoqXG4gICAqIENyZWF0ZSB0b2FzdCB3aXRoIHdhcm5pbmcgc3R5bGUgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEBwYXJhbSBjb25maWcgTm90aWZpY2F0aW9uQ29uZmlnXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgd2FybmluZyhib2R5OiBzdHJpbmcsIGNvbmZpZzogU25vdGlmaXJlQ29uZmlnKTogTm90aWZpcmVNb2RlbDtcbiAgLyoqXG4gICAqIENyZWF0ZSB0b2FzdCB3aXRoIHdhcm5pbmcgc3R5bGUgIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBbYm9keV0gc3RyaW5nXG4gICAqIEBwYXJhbSBbdGl0bGVdIHN0cmluZ1xuICAgKiBAcGFyYW0gW2NvbmZpZ10gTm90aWZpY2F0aW9uQ29uZmlnXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgd2FybmluZyhib2R5OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcsIGNvbmZpZzogU25vdGlmaXJlQ29uZmlnKTogTm90aWZpcmVNb2RlbDtcbiAgLyoqXG4gICAqIFRyYW5zZm9ybSB0b2FzdCBhcmd1bWVudHMgaW50byBOb3RpZmljYXRpb25Nb2RlbCBvYmplY3RcbiAgICovXG4gIEBUcmFuc2Zvcm1Bcmd1bWVudFxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBjdXJyZW50IHRvYXN0IHR5cGUgYW5kIGNvbGxlY3RzIGRlZmF1bHQgY29uZmlndXJhdGlvblxuICAgKi9cbiAgQFNldFRvYXN0VHlwZVxuICB3YXJuaW5nKGFyZ3M6IGFueSk6IE5vdGlmaXJlTW9kZWwge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZShhcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBjb25maXJtIHN0eWxlIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIGNvbmZpcm0oYm9keTogc3RyaW5nKTogTm90aWZpcmVNb2RlbDtcbiAgLyoqXG4gICAqIENyZWF0ZSB0b2FzdCB3aXRoIGNvbmZpcm0gc3R5bGUgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEBwYXJhbSB0aXRsZSBzdHJpbmdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBjb25maXJtKGJvZHk6IHN0cmluZywgdGl0bGU6IHN0cmluZyk6IE5vdGlmaXJlTW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBjb25maXJtIHN0eWxlIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcGFyYW0gY29uZmlnIE5vdGlmaWNhdGlvbkNvbmZpZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIGNvbmZpcm0oYm9keTogc3RyaW5nLCBjb25maWc6IFNub3RpZmlyZUNvbmZpZyk6IE5vdGlmaXJlTW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBjb25maXJtIHN0eWxlICByZXR1cm5zIHRvYXN0IGlkO1xuICAgKiBAcGFyYW0gW2JvZHldIHN0cmluZ1xuICAgKiBAcGFyYW0gW3RpdGxlXSBzdHJpbmdcbiAgICogQHBhcmFtIFtjb25maWddIE5vdGlmaWNhdGlvbkNvbmZpZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIGNvbmZpcm0oYm9keTogc3RyaW5nLCB0aXRsZTogc3RyaW5nLCBjb25maWc6IFNub3RpZmlyZUNvbmZpZyk6IE5vdGlmaXJlTW9kZWw7XG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gdG9hc3QgYXJndW1lbnRzIGludG8gTm90aWZpY2F0aW9uTW9kZWwgb2JqZWN0XG4gICAqL1xuICBAVHJhbnNmb3JtQXJndW1lbnRcbiAgLyoqXG4gICAqIERldGVybWluZXMgY3VycmVudCB0b2FzdCB0eXBlIGFuZCBjb2xsZWN0cyBkZWZhdWx0IGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIEBTZXRUb2FzdFR5cGVcbiAgY29uZmlybShhcmdzOiBhbnkpOiBOb3RpZmlyZU1vZGVsIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGUoYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggUHJvbXB0IHN0eWxlIHdpdGggdHdvIGJ1dHRvbnMsIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIHByb21wdChib2R5OiBzdHJpbmcpOiBOb3RpZmlyZU1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggUHJvbXB0IHN0eWxlIHdpdGggdHdvIGJ1dHRvbnMsIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcGFyYW0gdGl0bGUgc3RyaW5nXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgcHJvbXB0KGJvZHk6IHN0cmluZywgdGl0bGU6IHN0cmluZyk6IE5vdGlmaXJlTW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBQcm9tcHQgc3R5bGUgd2l0aCB0d28gYnV0dG9ucywgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEBwYXJhbSBjb25maWcgTm90aWZpY2F0aW9uQ29uZmlnXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgcHJvbXB0KGJvZHk6IHN0cmluZywgY29uZmlnOiBTbm90aWZpcmVDb25maWcpOiBOb3RpZmlyZU1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggUHJvbXB0IHN0eWxlIHdpdGggdHdvIGJ1dHRvbnMsIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBbYm9keV0gc3RyaW5nXG4gICAqIEBwYXJhbSBbdGl0bGVdIHN0cmluZ1xuICAgKiBAcGFyYW0gW2NvbmZpZ10gTm90aWZpY2F0aW9uQ29uZmlnXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgcHJvbXB0KGJvZHk6IHN0cmluZywgdGl0bGU6IHN0cmluZywgY29uZmlnOiBTbm90aWZpcmVDb25maWcpOiBOb3RpZmlyZU1vZGVsO1xuICAvKipcbiAgICogVHJhbnNmb3JtIHRvYXN0IGFyZ3VtZW50cyBpbnRvIE5vdGlmaWNhdGlvbk1vZGVsIG9iamVjdFxuICAgKi9cbiAgQFRyYW5zZm9ybUFyZ3VtZW50XG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIGN1cnJlbnQgdG9hc3QgdHlwZSBhbmQgY29sbGVjdHMgZGVmYXVsdCBjb25maWd1cmF0aW9uXG4gICAqL1xuICBAU2V0VG9hc3RUeXBlXG4gIHByb21wdChhcmdzOiBhbnkpOiBOb3RpZmlyZU1vZGVsIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGUoYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhc3luYyB0b2FzdCB3aXRoIEluZm8gc3R5bGUuIFBhc3MgYWN0aW9uLCBhbmQgcmVzb2x2ZSBvciByZWplY3QgaXQuXG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcGFyYW0gYWN0aW9uIFByb21pc2U8Tm90aWZpY2F0aW9uTW9kZWw+IHwgT2JzZXJ2YWJsZTxOb3RpZmljYXRpb25Nb2RlbD5cbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBhc3luYyhcbiAgICBib2R5OiBzdHJpbmcsXG4gICAgYWN0aW9uOiBQcm9taXNlPFNub3RpZmlyZU1vZGVsPiB8IE9ic2VydmFibGU8U25vdGlmaXJlTW9kZWw+XG4gICk6IE5vdGlmaXJlTW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGFzeW5jIHRvYXN0IHdpdGggSW5mbyBzdHlsZS4gUGFzcyBhY3Rpb24sIGFuZCByZXNvbHZlIG9yIHJlamVjdCBpdC5cbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEBwYXJhbSB0aXRsZSBzdHJpbmdcbiAgICogQHBhcmFtIGFjdGlvbiBQcm9taXNlPE5vdGlmaWNhdGlvbk1vZGVsPiB8IE9ic2VydmFibGU8Tm90aWZpY2F0aW9uTW9kZWw+XG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgYXN5bmMoXG4gICAgYm9keTogc3RyaW5nLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgYWN0aW9uOiBQcm9taXNlPFNub3RpZmlyZU1vZGVsPiB8IE9ic2VydmFibGU8U25vdGlmaXJlTW9kZWw+XG4gICk6IE5vdGlmaXJlTW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGFzeW5jIHRvYXN0IHdpdGggSW5mbyBzdHlsZS4gUGFzcyBhY3Rpb24sIGFuZCByZXNvbHZlIG9yIHJlamVjdCBpdC5cbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEBwYXJhbSBhY3Rpb24gUHJvbWlzZTxOb3RpZmljYXRpb25Nb2RlbD4gfCBPYnNlcnZhYmxlPE5vdGlmaWNhdGlvbk1vZGVsPlxuICAgKiBAcGFyYW0gW2NvbmZpZ10gTm90aWZpY2F0aW9uQ29uZmlnXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgYXN5bmMoXG4gICAgYm9keTogc3RyaW5nLFxuICAgIGFjdGlvbjogUHJvbWlzZTxTbm90aWZpcmVNb2RlbD4gfCBPYnNlcnZhYmxlPFNub3RpZmlyZU1vZGVsPixcbiAgICBjb25maWc6IFNub3RpZmlyZUNvbmZpZ1xuICApOiBOb3RpZmlyZU1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlcyBhc3luYyB0b2FzdCB3aXRoIEluZm8gc3R5bGUuIFBhc3MgYWN0aW9uLCBhbmQgcmVzb2x2ZSBvciByZWplY3QgaXQuXG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcGFyYW0gdGl0bGUgc3RyaW5nXG4gICAqIEBwYXJhbSBhY3Rpb24gUHJvbWlzZTxOb3RpZmljYXRpb25Nb2RlbD4gfCBPYnNlcnZhYmxlPE5vdGlmaWNhdGlvbk1vZGVsPlxuICAgKiBAcGFyYW0gW2NvbmZpZ10gTm90aWZpY2F0aW9uQ29uZmlnXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgYXN5bmMoXG4gICAgYm9keTogc3RyaW5nLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgYWN0aW9uOiBQcm9taXNlPFNub3RpZmlyZU1vZGVsPiB8IE9ic2VydmFibGU8U25vdGlmaXJlTW9kZWw+LFxuICAgIGNvbmZpZzogU25vdGlmaXJlQ29uZmlnXG4gICk6IE5vdGlmaXJlTW9kZWw7XG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gdG9hc3QgYXJndW1lbnRzIGludG8gTm90aWZpY2F0aW9uTW9kZWwgb2JqZWN0XG4gICAqL1xuICBAVHJhbnNmb3JtQXJndW1lbnRcbiAgLyoqXG4gICAqIERldGVybWluZXMgY3VycmVudCB0b2FzdCB0eXBlIGFuZCBjb2xsZWN0cyBkZWZhdWx0IGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIEBTZXRUb2FzdFR5cGVcbiAgYXN5bmMoYXJnczogYW55KTogTm90aWZpcmVNb2RlbCB7XG4gICAgbGV0IGFzeW5jOiBPYnNlcnZhYmxlPGFueT47XG4gICAgaWYgKGFyZ3MuYWN0aW9uIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgYXN5bmMgPSBmcm9tKGFyZ3MuYWN0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXN5bmMgPSBhcmdzLmFjdGlvbjtcbiAgICB9XG5cbiAgICBjb25zdCB0b2FzdCA9IHRoaXMuY3JlYXRlKGFyZ3MpO1xuXG4gICAgdG9hc3Qub24oU25vdGlmaXJlRXZlbnRUeXBlLk1PVU5URUQsICgpID0+IHtcbiAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gYXN5bmMuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKG5leHQ/OiBTbm90aWZpcmVNb2RlbCkgPT4ge1xuICAgICAgICAgIHRoaXMubWVyZ2VUb2FzdCh0b2FzdCwgbmV4dCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyb3I/OiBTbm90aWZpcmVNb2RlbCkgPT4ge1xuICAgICAgICAgIHRoaXMubWVyZ2VUb2FzdCh0b2FzdCwgZXJyb3IsIFNub3RpZmlyZVR5cGUuRVJST1IpO1xuICAgICAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9LFxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xuICAgICAgICAgIHRoaXMubWVyZ2VUb2FzdCh0b2FzdCwge30sIFNub3RpZmlyZVR5cGUuU1VDQ0VTUyk7XG4gICAgICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHJldHVybiB0b2FzdDtcbiAgfVxuXG4gIHByaXZhdGUgbWVyZ2VUb2FzdCh0b2FzdDogYW55LCBuZXh0OiBhbnksIHR5cGU/OiBTbm90aWZpcmVUeXBlKSB7XG4gICAgaWYgKG5leHQuYm9keSkge1xuICAgICAgdG9hc3QuYm9keSA9IG5leHQuYm9keTtcbiAgICB9XG4gICAgaWYgKG5leHQudGl0bGUpIHtcbiAgICAgIHRvYXN0LnRpdGxlID0gbmV4dC50aXRsZTtcbiAgICB9XG4gICAgaWYgKHR5cGUgJiYgdGhpcy5kZWZhdWx0Q29uZmlnKSB7XG4gICAgICB0b2FzdC5jb25maWcgPSBtZXJnZURlZXAoXG4gICAgICAgIHRvYXN0LmNvbmZpZyxcbiAgICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnLmdsb2JhbCxcbiAgICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnLnNub3RpZmlyZUNvbmZpZz8udHlwZSxcbiAgICAgICAgeyB0eXBlIH0sXG4gICAgICAgIG5leHQuY29uZmlnXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0b2FzdC5jb25maWcgPSBtZXJnZURlZXAodG9hc3QuY29uZmlnLCBuZXh0LmNvbmZpZyk7XG4gICAgfVxuICAgIGlmIChuZXh0Lmh0bWwpIHtcbiAgICAgIHRvYXN0LmNvbmZpZy5odG1sID0gbmV4dC5odG1sO1xuICAgIH1cbiAgICB0aGlzLmVtaXQoKTtcbiAgICB0aGlzLnRvYXN0Q2hhbmdlZC5uZXh0KHRvYXN0KTtcbiAgfVxufVxuIl19
282
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc25vdGlmaXJlL3NyYy9saWIvc2VydmljZXMvbm90aWZpY2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxJQUFJLEVBQWMsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDL0UsT0FBTyxFQUFtQixrQkFBa0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFHL0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDL0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBRzNDLE1BQU0sT0FBTyxnQkFBZ0I7SUFnQjNCLFlBQ29DLGFBQWdDO1FBQWhDLGtCQUFhLEdBQWIsYUFBYSxDQUFtQjtRQWhCcEU7O1dBRUc7UUFDYyx5QkFBb0IsR0FBRyxJQUFJLENBQUM7UUFFN0M7O1dBRUc7UUFDTSxZQUFPLEdBQUcsSUFBSSxPQUFPLEVBQXlCLENBQUM7UUFFL0MsaUJBQVksR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBQ3JDLGlCQUFZLEdBQUcsSUFBSSxPQUFPLEVBQXVCLENBQUM7UUFFM0Qsa0JBQWEsR0FBK0IsRUFBRSxDQUFDO0lBSTVDLENBQUM7SUFFSjs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLEtBQXFCO1FBQzFCLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRTtZQUNoRSxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxFQUNsQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUMxQyxLQUFLLENBQUMsTUFBTSxDQUNiLENBQUM7WUFDRixNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFtQixDQUNuQyxJQUFJLEVBQUUsRUFDTixLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQzlCLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFDNUIsTUFBTSxDQUNQLENBQUM7WUFDRixJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNFLE1BQU0sV0FBVyxHQUFHLElBQUksbUJBQW1CLENBQ3pDLElBQUksRUFBRSxFQUNOLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFDOUIsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUM1QixNQUFNLENBQ1AsQ0FBQztRQUNGLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdEIsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUNEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsRUFBVSxFQUFFLE1BQWdCO1FBQ2pDLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDUCxPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNyQjtRQUNELElBQUksTUFBTSxFQUFFO1lBQ1YsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FDNUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUMzQixDQUFDO1lBQ0YsT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDcEI7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQTJCO1FBQ3JDLE1BQU0sWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQ2xELElBQUksQ0FBQyxhQUFhLEVBQ2xCLFFBQVEsQ0FDWSxDQUFDLENBQUM7UUFDeEIsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSztRQUNILElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRDs7O09BR0c7SUFDSyxHQUFHLENBQUMsS0FBMEI7UUFDcEMsSUFDRSxJQUFJLENBQUMsYUFBYTtZQUNsQixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU07WUFDekIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCO1lBQzFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQ3pCO1lBQ0EsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFO2dCQUMvQyxNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7YUFDMUM7WUFDRCxPQUFPO1NBQ1I7UUFDRCxJQUNFLElBQUksQ0FBQyxhQUFhO1lBQ2xCLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTTtZQUN6QixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQ2xDO1lBQ0EsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDbkM7YUFBTTtZQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2hDO1FBQ0QsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVEOztPQUVHO0lBQ0ssSUFBSTtRQUNWLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGFBQWEsQ0FBQyxPQUE0QjtRQUNoRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsSUFBSSxDQUFDLElBQXVCLEVBQUUsTUFBd0I7UUFDcEQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ2pCLEtBQUssRUFBRSxTQUFTO1lBQ2hCLElBQUksRUFBRSxTQUFTO1lBQ2YsTUFBTSxFQUFFO2dCQUNOLEdBQUcsTUFBTTtnQkFDVCxHQUFHLEVBQUUsSUFBSSxFQUFFO2FBQ1o7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBa0NEOztPQUVHO0lBTUgsT0FBTyxDQUFDLElBQVM7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLHNEQUFzRCxDQUFDLENBQUM7U0FDekU7UUFDRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQWtDRDs7T0FFRztJQU1ILEtBQUssQ0FBQyxJQUFTO1FBQ2IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFrQ0Q7O09BRUc7SUFNSCxJQUFJLENBQUMsSUFBUztRQUNaLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBa0NEOztPQUVHO0lBTUgsT0FBTyxDQUFDLElBQVM7UUFDZixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQWtDRDs7T0FFRztJQU1ILE9BQU8sQ0FBQyxJQUFTO1FBQ2YsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFrQ0Q7O09BRUc7SUFNSCxNQUFNLENBQUMsSUFBUztRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBa0REOztPQUVHO0lBTUgsS0FBSyxDQUFDLElBQVM7UUFDYixJQUFJLEtBQXNCLENBQUM7UUFDM0IsSUFBSSxJQUFJLENBQUMsTUFBTSxZQUFZLE9BQU8sRUFBRTtZQUNsQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUMzQjthQUFNO1lBQ0wsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7U0FDckI7UUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRWhDLEtBQUssQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRTtZQUN4QyxNQUFNLFlBQVksR0FBaUIsS0FBSyxDQUFDLFNBQVMsQ0FBQztnQkFDakQsSUFBSSxFQUFFLENBQUMsSUFBcUIsRUFBRSxFQUFFO29CQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDL0IsQ0FBQztnQkFDRCxLQUFLLEVBQUUsQ0FBQyxLQUFzQixFQUFFLEVBQUU7b0JBQ2hDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ25ELFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDN0IsQ0FBQztnQkFDRCxRQUFRLEVBQUUsR0FBRyxFQUFFO29CQUNiLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ2xELFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDN0IsQ0FBQzthQUNGLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU8sVUFBVSxDQUFDLEtBQVUsRUFBRSxJQUFTLEVBQUUsSUFBb0I7UUFDNUQsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2IsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ3hCO1FBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2QsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQzFCO1FBQ0QsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUM5QixLQUFLLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FDdEIsS0FBSyxDQUFDLE1BQU0sRUFDWixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFDekIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLEVBQUUsSUFBSSxFQUN4QyxFQUFFLElBQUksRUFBRSxFQUNSLElBQUksQ0FBQyxNQUFNLENBQ1osQ0FBQztTQUNIO2FBQU07WUFDTCxLQUFLLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNyRDtRQUNELElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNiLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDL0I7UUFDRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDWixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILEdBQUcsQ0FBQyxFQUFVO1FBQ1osT0FBTyxDQUNMLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQzFFLENBQUM7SUFDSixDQUFDOzs4R0FuaEJVLGdCQUFnQixrQkFpQmpCLGlCQUFpQjtrSEFqQmhCLGdCQUFnQjs7SUFxTDFCLGlCQUFpQjtJQUNsQjs7T0FFRzs7SUFDRixZQUFZOytDQU1aOztJQXFDQSxpQkFBaUI7SUFDbEI7O09BRUc7O0lBQ0YsWUFBWTs2Q0FHWjs7SUFxQ0EsaUJBQWlCO0lBQ2xCOztPQUVHOztJQUNGLFlBQVk7NENBR1o7O0lBcUNBLGlCQUFpQjtJQUNsQjs7T0FFRzs7SUFDRixZQUFZOytDQUdaOztJQXFDQSxpQkFBaUI7SUFDbEI7O09BRUc7O0lBQ0YsWUFBWTsrQ0FHWjs7SUFxQ0EsaUJBQWlCO0lBQ2xCOztPQUVHOztJQUNGLFlBQVk7OENBR1o7O0lBcURBLGlCQUFpQjtJQUNsQjs7T0FFRzs7SUFDRixZQUFZOzZDQTRCWjs0RkFoZlUsZ0JBQWdCO2tCQUQ1QixVQUFVOzswQkFrQk4sTUFBTTsyQkFBQyxpQkFBaUI7NENBeUszQixPQUFPLE1BK0NQLEtBQUssTUE0Q0wsSUFBSSxNQTRDSixPQUFPLE1BNENQLE9BQU8sTUE0Q1AsTUFBTSxNQTRETixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgZnJvbSwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTZXRUb2FzdFR5cGUgfSBmcm9tICcuLi9kZWNvcmF0b3JzL3NldC10b2FzdC10eXBlLmRlY29yYXRvcic7XG5pbXBvcnQgeyBUcmFuc2Zvcm1Bcmd1bWVudCB9IGZyb20gJy4uL2RlY29yYXRvcnMvdHJhbnNmb3JtLWFyZ3VtZW50LmRlY29yYXRvcic7XG5pbXBvcnQgeyBTbm90aWZpcmVDb25maWcsIFNub3RpZmlyZUV2ZW50VHlwZSwgU25vdGlmaXJlVHlwZSB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgeyBTbm90aWZpcmVEZWZhdWx0cyB9IGZyb20gJy4uL2RlZmF1bHRzL2RlZmF1bHRzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBTbm90aWZpcmVNb2RlbCB9IGZyb20gJy4uL21vZGVscy9zbm90aWZpcmUubW9kZWwnO1xuaW1wb3J0IHsgU25vdGlmaXJlVG9hc3RNb2RlbCB9IGZyb20gJy4uL2NvbXBvbmVudHMvdG9hc3Qvbm90aWZpcmUtdG9hc3QubW9kZWwnO1xuaW1wb3J0IHsgbWVyZ2VEZWVwLCB1dWlkIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU25vdGlmaXJlU2VydmljZSB7XG4gIC8qKlxuICAgKiBNaW5pbXVtIGRpc3BsYXkgdGltZSBvZiB0aGUgbm90aWZpY2F0aW9uIG1lc3NhZ2VcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgbWluaW11bURpc3BsYXllZFRpbWUgPSAzMDAwO1xuXG4gIC8qKlxuICAgKiBFbWl0cyBOb3RpZmlyZSBOb3RpZmljYXRpb25zXG4gICAqL1xuICByZWFkb25seSBlbWl0dGVyID0gbmV3IFN1YmplY3Q8U25vdGlmaXJlVG9hc3RNb2RlbFtdPigpO1xuXG4gIHJlYWRvbmx5IHRvYXN0RGVsZXRlZCA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcbiAgcmVhZG9ubHkgdG9hc3RDaGFuZ2VkID0gbmV3IFN1YmplY3Q8U25vdGlmaXJlVG9hc3RNb2RlbD4oKTtcblxuICBub3RpZmljYXRpb25zOiBBcnJheTxTbm90aWZpcmVUb2FzdE1vZGVsPiA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoJ3Nub3RpZmlyZUNvbmZpZycpIHB1YmxpYyBkZWZhdWx0Q29uZmlnOiBTbm90aWZpcmVEZWZhdWx0c1xuICApIHt9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdG9hc3QgYW5kIGFkZCBpdCB0byBhcnJheSwgcmV0dXJucyB0b2FzdCBpZFxuICAgKiBAcGFyYW0gTm90aWZpY2F0aW9uTW9kZWwgTm90aWZpY2F0aW9uTW9kZWxcbiAgICogQHJldHVybiBudW1iZXJcbiAgICovXG4gIGNyZWF0ZShub3RpZjogU25vdGlmaXJlTW9kZWwpOiBTbm90aWZpcmVUb2FzdE1vZGVsIHtcbiAgICBpZiAodGhpcy5kZWZhdWx0Q29uZmlnLnR5cGUgJiYgbm90aWYuY29uZmlnICYmIG5vdGlmLmNvbmZpZy50eXBlKSB7XG4gICAgICBjb25zdCBjb25maWcgPSBtZXJnZURlZXAoXG4gICAgICAgIHRoaXMuZGVmYXVsdENvbmZpZy5zbm90aWZpcmVDb25maWcsXG4gICAgICAgIHRoaXMuZGVmYXVsdENvbmZpZy50eXBlW25vdGlmLmNvbmZpZy50eXBlXSxcbiAgICAgICAgbm90aWYuY29uZmlnXG4gICAgICApO1xuICAgICAgY29uc3QgdG9hc3QgPSBuZXcgU25vdGlmaXJlVG9hc3RNb2RlbChcbiAgICAgICAgdXVpZCgpLFxuICAgICAgICBub3RpZi50aXRsZSA/IG5vdGlmLnRpdGxlIDogJycsXG4gICAgICAgIG5vdGlmLmJvZHkgPyBub3RpZi5ib2R5IDogJycsXG4gICAgICAgIGNvbmZpZ1xuICAgICAgKTtcbiAgICAgIHRoaXMuYWRkKHRvYXN0KTtcbiAgICAgIHJldHVybiB0b2FzdDtcbiAgICB9XG4gICAgY29uc3QgY29uZmlnID0gbWVyZ2VEZWVwKHRoaXMuZGVmYXVsdENvbmZpZy5zbm90aWZpcmVDb25maWcsIG5vdGlmLmNvbmZpZyk7XG4gICAgY29uc3QgZGVmYXVsVG9hc3QgPSBuZXcgU25vdGlmaXJlVG9hc3RNb2RlbChcbiAgICAgIHV1aWQoKSxcbiAgICAgIG5vdGlmLnRpdGxlID8gbm90aWYudGl0bGUgOiAnJyxcbiAgICAgIG5vdGlmLmJvZHkgPyBub3RpZi5ib2R5IDogJycsXG4gICAgICBjb25maWdcbiAgICApO1xuICAgIHRoaXMuYWRkKGRlZmF1bFRvYXN0KTtcbiAgICByZXR1cm4gZGVmYXVsVG9hc3Q7XG4gIH1cbiAgLyoqXG4gICAqIElmIElEIHBhc3NlZCwgZW1pdHMgdG9hc3QgYW5pbWF0aW9uIHJlbW92ZSwgaWYgSUQgJiBSRU1PVkUgcGFzc2VkLCByZW1vdmVzIHRvYXN0IGZyb20gbm90aWZpY2F0aW9ucyBhcnJheVxuICAgKiBAcGFyYW0gaWQgbnVtYmVyXG4gICAqIEBwYXJhbSByZW1vdmUgYm9vbGVhblxuICAgKi9cbiAgcmVtb3ZlKGlkOiBudW1iZXIsIHJlbW92ZT86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoIWlkKSB7XG4gICAgICByZXR1cm4gdGhpcy5jbGVhcigpO1xuICAgIH1cbiAgICBpZiAocmVtb3ZlKSB7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvbnMgPSB0aGlzLm5vdGlmaWNhdGlvbnMuZmlsdGVyKFxuICAgICAgICAodG9hc3QpID0+IHRvYXN0LmlkICE9PSBpZFxuICAgICAgKTtcbiAgICAgIHJldHVybiB0aGlzLmVtaXQoKTtcbiAgICB9XG4gICAgdGhpcy50b2FzdERlbGV0ZWQubmV4dChpZCk7XG4gIH1cblxuICBzZXREZWZhdWx0cyhkZWZhdWx0czogU25vdGlmaXJlRGVmYXVsdHMpOiBTbm90aWZpcmVEZWZhdWx0cyB7XG4gICAgY29uc3QgbWVyZ2VkQ29uZmlnID0gKHRoaXMuZGVmYXVsdENvbmZpZyA9IG1lcmdlRGVlcChcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZyxcbiAgICAgIGRlZmF1bHRzXG4gICAgKSBhcyBTbm90aWZpcmVEZWZhdWx0cyk7XG4gICAgcmV0dXJuIG1lcmdlZENvbmZpZztcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciBub3RpZmljYXRpb25zIGFycmF5XG4gICAqL1xuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLm5vdGlmaWNhdGlvbnMgPSBbXTtcbiAgICB0aGlzLmVtaXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBhZGQgTm90aWZpcmVUb2FzdCB0byBub3RpZmljYXRpb25zIGFycmF5XG4gICAqIEBwYXJhbSB0b2FzdCBOb3RpZmlyZVRvYXN0XG4gICAqL1xuICBwcml2YXRlIGFkZCh0b2FzdDogU25vdGlmaXJlVG9hc3RNb2RlbCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZyAmJlxuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnLmdsb2JhbCAmJlxuICAgICAgdGhpcy5kZWZhdWx0Q29uZmlnLmdsb2JhbC5maWx0ZXJEdXBsaWNhdGVzICYmXG4gICAgICB0aGlzLmNvbnRhaW5zVG9hc3QodG9hc3QpXG4gICAgKSB7XG4gICAgICBpZiAoIXRoaXMuZGVmYXVsdENvbmZpZy5nbG9iYWwuZmlsdGVyRHVwbGljYXRlcykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgZ2xvYmFsIGNvbmZpZycpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICB0aGlzLmRlZmF1bHRDb25maWcgJiZcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZy5nbG9iYWwgJiZcbiAgICAgIHRoaXMuZGVmYXVsdENvbmZpZy5nbG9iYWwubmV3T25Ub3BcbiAgICApIHtcbiAgICAgIHRoaXMubm90aWZpY2F0aW9ucy51bnNoaWZ0KHRvYXN0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ub3RpZmljYXRpb25zLnB1c2godG9hc3QpO1xuICAgIH1cbiAgICB0aGlzLmVtaXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBlbWl0IGNoYW5nZXMgaW4gbm90aWZpY2F0aW9ucyBhcnJheVxuICAgKi9cbiAgcHJpdmF0ZSBlbWl0KCk6IHZvaWQge1xuICAgIHRoaXMuZW1pdHRlci5uZXh0KHRoaXMubm90aWZpY2F0aW9ucy5zbGljZSgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBjaGVja3MgaWYgdGhlIHRvYXN0IGlzIGluIHRoZSBjb2xsZWN0aW9uLlxuICAgKiBAcGFyYW0gaW5Ub2FzdCBOb3RpZmlyZVRvYXN0XG4gICAqIEByZXR1cm5zIGJvb2xlYW5cbiAgICovXG4gIHByaXZhdGUgY29udGFpbnNUb2FzdChpblRvYXN0OiBTbm90aWZpcmVUb2FzdE1vZGVsKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubm90aWZpY2F0aW9ucy5zb21lKCh0b2FzdCkgPT4gdG9hc3QuZXF1YWxzKGluVG9hc3QpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGVtcHR5IHRvYXN0IHdpdGggaHRtbCBzdHJpbmcgaW5zaWRlXG4gICAqIEBwYXJhbSBodG1sIHN0cmluZyB8IFNhZmVIdG1sXG4gICAqIEBwYXJhbSBjb25maWcgTm90aWZpcmVDb25maWdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBodG1sKGh0bWw6IHN0cmluZyB8IFNhZmVIdG1sLCBjb25maWc/OiBTbm90aWZpcmVDb25maWcpOiBTbm90aWZpcmVUb2FzdE1vZGVsIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGUoe1xuICAgICAgdGl0bGU6IHVuZGVmaW5lZCxcbiAgICAgIGJvZHk6IHVuZGVmaW5lZCxcbiAgICAgIGNvbmZpZzoge1xuICAgICAgICAuLi5jb25maWcsXG4gICAgICAgIC4uLnsgaHRtbCB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggc3VjY2VzcyBzdHlsZSByZXR1cm5zIHRvYXN0IGlkO1xuICAgKiBAcGFyYW0gYm9keSBzdHJpbmdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBzdWNjZXNzKGJvZHk6IHN0cmluZyk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBzdWNjZXNzIHN0eWxlIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcGFyYW0gdGl0bGUgc3RyaW5nXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgc3VjY2Vzcyhib2R5OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcpOiBTbm90aWZpcmVUb2FzdE1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggc3VjY2VzcyBzdHlsZSByZXR1cm5zIHRvYXN0IGlkO1xuICAgKiBAcGFyYW0gYm9keSBzdHJpbmdcbiAgICogQHBhcmFtIGNvbmZpZyBOb3RpZmljYXRpb25Db25maWdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBzdWNjZXNzKGJvZHk6IHN0cmluZywgY29uZmlnOiBTbm90aWZpcmVDb25maWcpOiBTbm90aWZpcmVUb2FzdE1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggc3VjY2VzcyBzdHlsZSAgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIFtib2R5XSBzdHJpbmdcbiAgICogQHBhcmFtIFt0aXRsZV0gc3RyaW5nXG4gICAqIEBwYXJhbSBbY29uZmlnXSBOb3RpZmljYXRpb25Db25maWdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBzdWNjZXNzKFxuICAgIGJvZHk6IHN0cmluZyxcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIGNvbmZpZzogU25vdGlmaXJlQ29uZmlnXG4gICk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybSB0b2FzdCBhcmd1bWVudHMgaW50byBOb3RpZmljYXRpb25Nb2RlbCBvYmplY3RcbiAgICovXG4gIEBUcmFuc2Zvcm1Bcmd1bWVudFxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBjdXJyZW50IHRvYXN0IHR5cGUgYW5kIGNvbGxlY3RzIGRlZmF1bHQgY29uZmlndXJhdGlvblxuICAgKi9cbiAgQFNldFRvYXN0VHlwZVxuICBzdWNjZXNzKGFyZ3M6IGFueSk6IFNub3RpZmlyZVRvYXN0TW9kZWwge1xuICAgIGlmICghYXJncy5jb25maWcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBjb25maWcsIHBsZWFzZSBjb25maWd1cmUgc2VydmljZSBhY2NvcmRpbmdseScpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jcmVhdGUoYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggZXJyb3Igc3R5bGUgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgZXJyb3IoYm9keTogc3RyaW5nKTogU25vdGlmaXJlVG9hc3RNb2RlbDtcbiAgLyoqXG4gICAqIENyZWF0ZSB0b2FzdCB3aXRoIGVycm9yIHN0eWxlIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcGFyYW0gdGl0bGUgc3RyaW5nXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgZXJyb3IoYm9keTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKTogU25vdGlmaXJlVG9hc3RNb2RlbDtcbiAgLyoqXG4gICAqIENyZWF0ZSB0b2FzdCB3aXRoIGVycm9yIHN0eWxlIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcGFyYW0gY29uZmlnIE5vdGlmaWNhdGlvbkNvbmZpZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIGVycm9yKGJvZHk6IHN0cmluZywgY29uZmlnOiBTbm90aWZpcmVDb25maWcpOiBTbm90aWZpcmVUb2FzdE1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggZXJyb3Igc3R5bGUgIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBbYm9keV0gc3RyaW5nXG4gICAqIEBwYXJhbSBbdGl0bGVdIHN0cmluZ1xuICAgKiBAcGFyYW0gW2NvbmZpZ10gTm90aWZpY2F0aW9uQ29uZmlnXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgZXJyb3IoXG4gICAgYm9keTogc3RyaW5nLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgY29uZmlnOiBTbm90aWZpcmVDb25maWdcbiAgKTogU25vdGlmaXJlVG9hc3RNb2RlbDtcbiAgLyoqXG4gICAqIFRyYW5zZm9ybSB0b2FzdCBhcmd1bWVudHMgaW50byBOb3RpZmljYXRpb25Nb2RlbCBvYmplY3RcbiAgICovXG4gIEBUcmFuc2Zvcm1Bcmd1bWVudFxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBjdXJyZW50IHRvYXN0IHR5cGUgYW5kIGNvbGxlY3RzIGRlZmF1bHQgY29uZmlndXJhdGlvblxuICAgKi9cbiAgQFNldFRvYXN0VHlwZVxuICBlcnJvcihhcmdzOiBhbnkpOiBTbm90aWZpcmVUb2FzdE1vZGVsIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGUoYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggaW5mbyBzdHlsZSByZXR1cm5zIHRvYXN0IGlkO1xuICAgKiBAcGFyYW0gYm9keSBzdHJpbmdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBpbmZvKGJvZHk6IHN0cmluZyk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBpbmZvIHN0eWxlIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcGFyYW0gdGl0bGUgc3RyaW5nXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgaW5mbyhib2R5OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcpOiBTbm90aWZpcmVUb2FzdE1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggaW5mbyBzdHlsZSByZXR1cm5zIHRvYXN0IGlkO1xuICAgKiBAcGFyYW0gYm9keSBzdHJpbmdcbiAgICogQHBhcmFtIGNvbmZpZyBOb3RpZmljYXRpb25Db25maWdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBpbmZvKGJvZHk6IHN0cmluZywgY29uZmlnOiBTbm90aWZpcmVDb25maWcpOiBTbm90aWZpcmVUb2FzdE1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggaW5mbyBzdHlsZSAgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIFtib2R5XSBzdHJpbmdcbiAgICogQHBhcmFtIFt0aXRsZV0gc3RyaW5nXG4gICAqIEBwYXJhbSBbY29uZmlnXSBOb3RpZmljYXRpb25Db25maWdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBpbmZvKFxuICAgIGJvZHk6IHN0cmluZyxcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIGNvbmZpZzogU25vdGlmaXJlQ29uZmlnXG4gICk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gdG9hc3QgYXJndW1lbnRzIGludG8gTm90aWZpY2F0aW9uTW9kZWwgb2JqZWN0XG4gICAqL1xuICBAVHJhbnNmb3JtQXJndW1lbnRcbiAgLyoqXG4gICAqIERldGVybWluZXMgY3VycmVudCB0b2FzdCB0eXBlIGFuZCBjb2xsZWN0cyBkZWZhdWx0IGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIEBTZXRUb2FzdFR5cGVcbiAgaW5mbyhhcmdzOiBhbnkpOiBTbm90aWZpcmVUb2FzdE1vZGVsIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGUoYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggd2FybmluZyBzdHlsZSByZXR1cm5zIHRvYXN0IGlkO1xuICAgKiBAcGFyYW0gYm9keSBzdHJpbmdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICB3YXJuaW5nKGJvZHk6IHN0cmluZyk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCB3YXJuaW5nIHN0eWxlIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcGFyYW0gdGl0bGUgc3RyaW5nXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgd2FybmluZyhib2R5OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcpOiBTbm90aWZpcmVUb2FzdE1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggd2FybmluZyBzdHlsZSByZXR1cm5zIHRvYXN0IGlkO1xuICAgKiBAcGFyYW0gYm9keSBzdHJpbmdcbiAgICogQHBhcmFtIGNvbmZpZyBOb3RpZmljYXRpb25Db25maWdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICB3YXJuaW5nKGJvZHk6IHN0cmluZywgY29uZmlnOiBTbm90aWZpcmVDb25maWcpOiBTbm90aWZpcmVUb2FzdE1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggd2FybmluZyBzdHlsZSAgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIFtib2R5XSBzdHJpbmdcbiAgICogQHBhcmFtIFt0aXRsZV0gc3RyaW5nXG4gICAqIEBwYXJhbSBbY29uZmlnXSBOb3RpZmljYXRpb25Db25maWdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICB3YXJuaW5nKFxuICAgIGJvZHk6IHN0cmluZyxcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIGNvbmZpZzogU25vdGlmaXJlQ29uZmlnXG4gICk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gdG9hc3QgYXJndW1lbnRzIGludG8gTm90aWZpY2F0aW9uTW9kZWwgb2JqZWN0XG4gICAqL1xuICBAVHJhbnNmb3JtQXJndW1lbnRcbiAgLyoqXG4gICAqIERldGVybWluZXMgY3VycmVudCB0b2FzdCB0eXBlIGFuZCBjb2xsZWN0cyBkZWZhdWx0IGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIEBTZXRUb2FzdFR5cGVcbiAgd2FybmluZyhhcmdzOiBhbnkpOiBTbm90aWZpcmVUb2FzdE1vZGVsIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGUoYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggY29uZmlybSBzdHlsZSByZXR1cm5zIHRvYXN0IGlkO1xuICAgKiBAcGFyYW0gYm9keSBzdHJpbmdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBjb25maXJtKGJvZHk6IHN0cmluZyk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBjb25maXJtIHN0eWxlIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcGFyYW0gdGl0bGUgc3RyaW5nXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgY29uZmlybShib2R5OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcpOiBTbm90aWZpcmVUb2FzdE1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggY29uZmlybSBzdHlsZSByZXR1cm5zIHRvYXN0IGlkO1xuICAgKiBAcGFyYW0gYm9keSBzdHJpbmdcbiAgICogQHBhcmFtIGNvbmZpZyBOb3RpZmljYXRpb25Db25maWdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBjb25maXJtKGJvZHk6IHN0cmluZywgY29uZmlnOiBTbm90aWZpcmVDb25maWcpOiBTbm90aWZpcmVUb2FzdE1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggY29uZmlybSBzdHlsZSAgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIFtib2R5XSBzdHJpbmdcbiAgICogQHBhcmFtIFt0aXRsZV0gc3RyaW5nXG4gICAqIEBwYXJhbSBbY29uZmlnXSBOb3RpZmljYXRpb25Db25maWdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBjb25maXJtKFxuICAgIGJvZHk6IHN0cmluZyxcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIGNvbmZpZzogU25vdGlmaXJlQ29uZmlnXG4gICk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gdG9hc3QgYXJndW1lbnRzIGludG8gTm90aWZpY2F0aW9uTW9kZWwgb2JqZWN0XG4gICAqL1xuICBAVHJhbnNmb3JtQXJndW1lbnRcbiAgLyoqXG4gICAqIERldGVybWluZXMgY3VycmVudCB0b2FzdCB0eXBlIGFuZCBjb2xsZWN0cyBkZWZhdWx0IGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIEBTZXRUb2FzdFR5cGVcbiAgY29uZmlybShhcmdzOiBhbnkpOiBTbm90aWZpcmVUb2FzdE1vZGVsIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGUoYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggUHJvbXB0IHN0eWxlIHdpdGggdHdvIGJ1dHRvbnMsIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIHByb21wdChib2R5OiBzdHJpbmcpOiBTbm90aWZpcmVUb2FzdE1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggUHJvbXB0IHN0eWxlIHdpdGggdHdvIGJ1dHRvbnMsIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBib2R5IHN0cmluZ1xuICAgKiBAcGFyYW0gdGl0bGUgc3RyaW5nXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgcHJvbXB0KGJvZHk6IHN0cmluZywgdGl0bGU6IHN0cmluZyk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGUgdG9hc3Qgd2l0aCBQcm9tcHQgc3R5bGUgd2l0aCB0d28gYnV0dG9ucywgcmV0dXJucyB0b2FzdCBpZDtcbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEBwYXJhbSBjb25maWcgTm90aWZpY2F0aW9uQ29uZmlnXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgcHJvbXB0KGJvZHk6IHN0cmluZywgY29uZmlnOiBTbm90aWZpcmVDb25maWcpOiBTbm90aWZpcmVUb2FzdE1vZGVsO1xuICAvKipcbiAgICogQ3JlYXRlIHRvYXN0IHdpdGggUHJvbXB0IHN0eWxlIHdpdGggdHdvIGJ1dHRvbnMsIHJldHVybnMgdG9hc3QgaWQ7XG4gICAqIEBwYXJhbSBbYm9keV0gc3RyaW5nXG4gICAqIEBwYXJhbSBbdGl0bGVdIHN0cmluZ1xuICAgKiBAcGFyYW0gW2NvbmZpZ10gTm90aWZpY2F0aW9uQ29uZmlnXG4gICAqIEByZXR1cm5zIG51bWJlclxuICAgKi9cbiAgcHJvbXB0KFxuICAgIGJvZHk6IHN0cmluZyxcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIGNvbmZpZzogU25vdGlmaXJlQ29uZmlnXG4gICk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBUcmFuc2Zvcm0gdG9hc3QgYXJndW1lbnRzIGludG8gTm90aWZpY2F0aW9uTW9kZWwgb2JqZWN0XG4gICAqL1xuICBAVHJhbnNmb3JtQXJndW1lbnRcbiAgLyoqXG4gICAqIERldGVybWluZXMgY3VycmVudCB0b2FzdCB0eXBlIGFuZCBjb2xsZWN0cyBkZWZhdWx0IGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIEBTZXRUb2FzdFR5cGVcbiAgcHJvbXB0KGFyZ3M6IGFueSk6IFNub3RpZmlyZVRvYXN0TW9kZWwge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZShhcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFzeW5jIHRvYXN0IHdpdGggSW5mbyBzdHlsZS4gUGFzcyBhY3Rpb24sIGFuZCByZXNvbHZlIG9yIHJlamVjdCBpdC5cbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEBwYXJhbSBhY3Rpb24gUHJvbWlzZTxOb3RpZmljYXRpb25Nb2RlbD4gfCBPYnNlcnZhYmxlPE5vdGlmaWNhdGlvbk1vZGVsPlxuICAgKiBAcmV0dXJucyBudW1iZXJcbiAgICovXG4gIGFzeW5jKFxuICAgIGJvZHk6IHN0cmluZyxcbiAgICBhY3Rpb246IFByb21pc2U8U25vdGlmaXJlTW9kZWw+IHwgT2JzZXJ2YWJsZTxTbm90aWZpcmVNb2RlbD5cbiAgKTogU25vdGlmaXJlVG9hc3RNb2RlbDtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYXN5bmMgdG9hc3Qgd2l0aCBJbmZvIHN0eWxlLiBQYXNzIGFjdGlvbiwgYW5kIHJlc29sdmUgb3IgcmVqZWN0IGl0LlxuICAgKiBAcGFyYW0gYm9keSBzdHJpbmdcbiAgICogQHBhcmFtIHRpdGxlIHN0cmluZ1xuICAgKiBAcGFyYW0gYWN0aW9uIFByb21pc2U8Tm90aWZpY2F0aW9uTW9kZWw+IHwgT2JzZXJ2YWJsZTxOb3RpZmljYXRpb25Nb2RlbD5cbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBhc3luYyhcbiAgICBib2R5OiBzdHJpbmcsXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICBhY3Rpb246IFByb21pc2U8U25vdGlmaXJlTW9kZWw+IHwgT2JzZXJ2YWJsZTxTbm90aWZpcmVNb2RlbD5cbiAgKTogU25vdGlmaXJlVG9hc3RNb2RlbDtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYXN5bmMgdG9hc3Qgd2l0aCBJbmZvIHN0eWxlLiBQYXNzIGFjdGlvbiwgYW5kIHJlc29sdmUgb3IgcmVqZWN0IGl0LlxuICAgKiBAcGFyYW0gYm9keSBzdHJpbmdcbiAgICogQHBhcmFtIGFjdGlvbiBQcm9taXNlPE5vdGlmaWNhdGlvbk1vZGVsPiB8IE9ic2VydmFibGU8Tm90aWZpY2F0aW9uTW9kZWw+XG4gICAqIEBwYXJhbSBbY29uZmlnXSBOb3RpZmljYXRpb25Db25maWdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBhc3luYyhcbiAgICBib2R5OiBzdHJpbmcsXG4gICAgYWN0aW9uOiBQcm9taXNlPFNub3RpZmlyZU1vZGVsPiB8IE9ic2VydmFibGU8U25vdGlmaXJlTW9kZWw+LFxuICAgIGNvbmZpZzogU25vdGlmaXJlQ29uZmlnXG4gICk6IFNub3RpZmlyZVRvYXN0TW9kZWw7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGFzeW5jIHRvYXN0IHdpdGggSW5mbyBzdHlsZS4gUGFzcyBhY3Rpb24sIGFuZCByZXNvbHZlIG9yIHJlamVjdCBpdC5cbiAgICogQHBhcmFtIGJvZHkgc3RyaW5nXG4gICAqIEBwYXJhbSB0aXRsZSBzdHJpbmdcbiAgICogQHBhcmFtIGFjdGlvbiBQcm9taXNlPE5vdGlmaWNhdGlvbk1vZGVsPiB8IE9ic2VydmFibGU8Tm90aWZpY2F0aW9uTW9kZWw+XG4gICAqIEBwYXJhbSBbY29uZmlnXSBOb3RpZmljYXRpb25Db25maWdcbiAgICogQHJldHVybnMgbnVtYmVyXG4gICAqL1xuICBhc3luYyhcbiAgICBib2R5OiBzdHJpbmcsXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICBhY3Rpb246IFByb21pc2U8U25vdGlmaXJlTW9kZWw+IHwgT2JzZXJ2YWJsZTxTbm90aWZpcmVNb2RlbD4sXG4gICAgY29uZmlnOiBTbm90aWZpcmVDb25maWdcbiAgKTogU25vdGlmaXJlVG9hc3RNb2RlbDtcbiAgLyoqXG4gICAqIFRyYW5zZm9ybSB0b2FzdCBhcmd1bWVudHMgaW50byBOb3RpZmljYXRpb25Nb2RlbCBvYmplY3RcbiAgICovXG4gIEBUcmFuc2Zvcm1Bcmd1bWVudFxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBjdXJyZW50IHRvYXN0IHR5cGUgYW5kIGNvbGxlY3RzIGRlZmF1bHQgY29uZmlndXJhdGlvblxuICAgKi9cbiAgQFNldFRvYXN0VHlwZVxuICBhc3luYyhhcmdzOiBhbnkpOiBTbm90aWZpcmVUb2FzdE1vZGVsIHtcbiAgICBsZXQgYXN5bmM6IE9ic2VydmFibGU8YW55PjtcbiAgICBpZiAoYXJncy5hY3Rpb24gaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICBhc3luYyA9IGZyb20oYXJncy5hY3Rpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3luYyA9IGFyZ3MuYWN0aW9uO1xuICAgIH1cblxuICAgIGNvbnN0IHRvYXN0ID0gdGhpcy5jcmVhdGUoYXJncyk7XG5cbiAgICB0b2FzdC5vbihTbm90aWZpcmVFdmVudFR5cGUuTU9VTlRFRCwgKCkgPT4ge1xuICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gPSBhc3luYy5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAobmV4dD86IFNub3RpZmlyZU1vZGVsKSA9PiB7XG4gICAgICAgICAgdGhpcy5tZXJnZVRvYXN0KHRvYXN0LCBuZXh0KTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnJvcj86IFNub3RpZmlyZU1vZGVsKSA9PiB7XG4gICAgICAgICAgdGhpcy5tZXJnZVRvYXN0KHRvYXN0LCBlcnJvciwgU25vdGlmaXJlVHlwZS5FUlJPUik7XG4gICAgICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5tZXJnZVRvYXN0KHRvYXN0LCB7fSwgU25vdGlmaXJlVHlwZS5TVUNDRVNTKTtcbiAgICAgICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRvYXN0O1xuICB9XG5cbiAgcHJpdmF0ZSBtZXJnZVRvYXN0KHRvYXN0OiBhbnksIG5leHQ6IGFueSwgdHlwZT86IFNub3RpZmlyZVR5cGUpIHtcbiAgICBpZiAobmV4dC5ib2R5KSB7XG4gICAgICB0b2FzdC5ib2R5ID0gbmV4dC5ib2R5O1xuICAgIH1cbiAgICBpZiAobmV4dC50aXRsZSkge1xuICAgICAgdG9hc3QudGl0bGUgPSBuZXh0LnRpdGxlO1xuICAgIH1cbiAgICBpZiAodHlwZSAmJiB0aGlzLmRlZmF1bHRDb25maWcpIHtcbiAgICAgIHRvYXN0LmNvbmZpZyA9IG1lcmdlRGVlcChcbiAgICAgICAgdG9hc3QuY29uZmlnLFxuICAgICAgICB0aGlzLmRlZmF1bHRDb25maWcuZ2xvYmFsLFxuICAgICAgICB0aGlzLmRlZmF1bHRDb25maWcuc25vdGlmaXJlQ29uZmlnPy50eXBlLFxuICAgICAgICB7IHR5cGUgfSxcbiAgICAgICAgbmV4dC5jb25maWdcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRvYXN0LmNvbmZpZyA9IG1lcmdlRGVlcCh0b2FzdC5jb25maWcsIG5leHQuY29uZmlnKTtcbiAgICB9XG4gICAgaWYgKG5leHQuaHRtbCkge1xuICAgICAgdG9hc3QuY29uZmlnLmh0bWwgPSBuZXh0Lmh0bWw7XG4gICAgfVxuICAgIHRoaXMuZW1pdCgpO1xuICAgIHRoaXMudG9hc3RDaGFuZ2VkLm5leHQodG9hc3QpO1xuICB9XG4gIC8qKlxuICAgKiByZXR1cm5zIFNub3RpZnlUb2FzdCBvYmplY3RcbiAgICogQHBhcmFtIGlkIE51bWJlclxuICAgKiBAcmV0dXJuIFNub3RpZnlUb2FzdHx1bmRlZmluZWRcbiAgICovXG4gIGdldChpZDogbnVtYmVyKTogU25vdGlmaXJlVG9hc3RNb2RlbCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMubm90aWZpY2F0aW9ucyAmJiB0aGlzLm5vdGlmaWNhdGlvbnMuZmluZCgodG9hc3QpID0+IHRvYXN0LmlkID09PSBpZClcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -175,7 +175,7 @@ function TransformArgument(target, propertyKey, descriptor) {
175
175
  /**
176
176
  * Toast main model
177
177
  */
178
- class NotifireModel {
178
+ class SnotifireToastModel {
179
179
  constructor(id, title, body, config) {
180
180
  this.id = id;
181
181
  this.title = title;
@@ -271,7 +271,7 @@ function isObject(item) {
271
271
  return item && typeof item === 'object' && !Array.isArray(item);
272
272
  }
273
273
 
274
- class SnotificationService {
274
+ class SnotifireService {
275
275
  constructor(defaultConfig) {
276
276
  this.defaultConfig = defaultConfig;
277
277
  /**
@@ -294,12 +294,12 @@ class SnotificationService {
294
294
  create(notif) {
295
295
  if (this.defaultConfig.type && notif.config && notif.config.type) {
296
296
  const config = mergeDeep(this.defaultConfig.snotifireConfig, this.defaultConfig.type[notif.config.type], notif.config);
297
- const toast = new NotifireModel(uuid(), notif.title ? notif.title : '', notif.body ? notif.body : '', config);
297
+ const toast = new SnotifireToastModel(uuid(), notif.title ? notif.title : '', notif.body ? notif.body : '', config);
298
298
  this.add(toast);
299
299
  return toast;
300
300
  }
301
301
  const config = mergeDeep(this.defaultConfig.snotifireConfig, notif.config);
302
- const defaulToast = new NotifireModel(uuid(), notif.title ? notif.title : '', notif.body ? notif.body : '', config);
302
+ const defaulToast = new SnotifireToastModel(uuid(), notif.title ? notif.title : '', notif.body ? notif.body : '', config);
303
303
  this.add(defaulToast);
304
304
  return defaulToast;
305
305
  }
@@ -468,9 +468,17 @@ class SnotificationService {
468
468
  this.emit();
469
469
  this.toastChanged.next(toast);
470
470
  }
471
+ /**
472
+ * returns SnotifyToast object
473
+ * @param id Number
474
+ * @return SnotifyToast|undefined
475
+ */
476
+ get(id) {
477
+ return (this.notifications && this.notifications.find((toast) => toast.id === id));
478
+ }
471
479
  }
472
- SnotificationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: SnotificationService, deps: [{ token: 'NotifireConfig' }], target: i0.ɵɵFactoryTarget.Injectable });
473
- SnotificationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: SnotificationService });
480
+ SnotifireService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: SnotifireService, deps: [{ token: 'snotifireConfig' }], target: i0.ɵɵFactoryTarget.Injectable });
481
+ SnotifireService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: SnotifireService });
474
482
  __decorate([
475
483
  TransformArgument
476
484
  /**
@@ -478,7 +486,7 @@ __decorate([
478
486
  */
479
487
  ,
480
488
  SetToastType
481
- ], SnotificationService.prototype, "success", null);
489
+ ], SnotifireService.prototype, "success", null);
482
490
  __decorate([
483
491
  TransformArgument
484
492
  /**
@@ -486,7 +494,7 @@ __decorate([
486
494
  */
487
495
  ,
488
496
  SetToastType
489
- ], SnotificationService.prototype, "error", null);
497
+ ], SnotifireService.prototype, "error", null);
490
498
  __decorate([
491
499
  TransformArgument
492
500
  /**
@@ -494,7 +502,7 @@ __decorate([
494
502
  */
495
503
  ,
496
504
  SetToastType
497
- ], SnotificationService.prototype, "info", null);
505
+ ], SnotifireService.prototype, "info", null);
498
506
  __decorate([
499
507
  TransformArgument
500
508
  /**
@@ -502,7 +510,7 @@ __decorate([
502
510
  */
503
511
  ,
504
512
  SetToastType
505
- ], SnotificationService.prototype, "warning", null);
513
+ ], SnotifireService.prototype, "warning", null);
506
514
  __decorate([
507
515
  TransformArgument
508
516
  /**
@@ -510,7 +518,7 @@ __decorate([
510
518
  */
511
519
  ,
512
520
  SetToastType
513
- ], SnotificationService.prototype, "confirm", null);
521
+ ], SnotifireService.prototype, "confirm", null);
514
522
  __decorate([
515
523
  TransformArgument
516
524
  /**
@@ -518,7 +526,7 @@ __decorate([
518
526
  */
519
527
  ,
520
528
  SetToastType
521
- ], SnotificationService.prototype, "prompt", null);
529
+ ], SnotifireService.prototype, "prompt", null);
522
530
  __decorate([
523
531
  TransformArgument
524
532
  /**
@@ -526,13 +534,13 @@ __decorate([
526
534
  */
527
535
  ,
528
536
  SetToastType
529
- ], SnotificationService.prototype, "async", null);
530
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: SnotificationService, decorators: [{
537
+ ], SnotifireService.prototype, "async", null);
538
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: SnotifireService, decorators: [{
531
539
  type: Injectable
532
540
  }], ctorParameters: function () {
533
541
  return [{ type: undefined, decorators: [{
534
542
  type: Inject,
535
- args: ['NotifireConfig']
543
+ args: ['snotifireConfig']
536
544
  }] }];
537
545
  }, propDecorators: { success: [], error: [], info: [], warning: [], confirm: [], prompt: [], async: [] } });
538
546
 
@@ -550,12 +558,12 @@ class ButtonsComponent {
550
558
  this.service.remove(this.toast.id);
551
559
  }
552
560
  }
553
- ButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: ButtonsComponent, deps: [{ token: SnotificationService }], target: i0.ɵɵFactoryTarget.Component });
561
+ ButtonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: ButtonsComponent, deps: [{ token: SnotifireService }], target: i0.ɵɵFactoryTarget.Component });
554
562
  ButtonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.10", type: ButtonsComponent, selector: "notifire-button", inputs: { toast: "toast" }, ngImport: i0, template: "<div class=\"notifire-toast__buttons\">\n <ng-container *ngIf=\"toast.config\">\n <button\n type=\"button\"\n *ngFor=\"let button of toast.config.buttons\"\n [ngClass]=\"{ 'notifire-toast__buttons--bold': button.bold }\"\n (click)=\"button.action ? button.action(toast) : remove()\"\n >\n {{ button.text }}\n </button>\n </ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
555
563
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: ButtonsComponent, decorators: [{
556
564
  type: Component,
557
565
  args: [{ selector: 'notifire-button', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"notifire-toast__buttons\">\n <ng-container *ngIf=\"toast.config\">\n <button\n type=\"button\"\n *ngFor=\"let button of toast.config.buttons\"\n [ngClass]=\"{ 'notifire-toast__buttons--bold': button.bold }\"\n (click)=\"button.action ? button.action(toast) : remove()\"\n >\n {{ button.text }}\n </button>\n </ng-container>\n</div>\n" }]
558
- }], ctorParameters: function () { return [{ type: SnotificationService }]; }, propDecorators: { toast: [{
566
+ }], ctorParameters: function () { return [{ type: SnotifireService }]; }, propDecorators: { toast: [{
559
567
  type: Input
560
568
  }] } });
561
569
 
@@ -771,12 +779,12 @@ class ToastComponent {
771
779
  this.unsubscribe$.complete();
772
780
  }
773
781
  }
774
- ToastComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: ToastComponent, deps: [{ token: SnotificationService }], target: i0.ɵɵFactoryTarget.Component });
775
- ToastComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.10", type: ToastComponent, selector: "ngx-toast", inputs: { toast: "toast" }, outputs: { stateChanged: "stateChanged" }, ngImport: i0, template: "<ng-container *ngIf=\"toast && toast.config\">\n <div\n [attr.role]=\"toast.config.type === state.promptType ? 'dialog' : 'alert'\"\n [attr.aria-labelledby]=\"'snotify_' + toast.id\"\n [attr.aria-modal]=\"toast.config.type === state.promptType\"\n [ngClass]=\"[\n 'notifire-toast animated',\n 'snotify-' + toast.config.type,\n state.animation, toast.valid === undefined ? '' : toast.valid ? 'snotifyToast--valid' : 'snotifyToast--invalid'\n]\"\n [ngStyle]=\"{\n '-webkit-transition': toast.config.animation && toast.config.animation.time + 'ms',\n transition: toast.config.animation && toast.config.animation.time + 'ms',\n '-webkit-animation-duration': toast.config.animation && toast.config.animation.time + 'ms',\n 'animation-duration': toast.config.animation && toast.config.animation.time + 'ms'\n}\"\n (animationend)=\"onExitTransitionEnd()\"\n (click)=\"onClick()\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n >\n <div\n class=\"notifire-toast__progressBar\"\n *ngIf=\"toast.config.showProgressBar\"\n >\n <span\n class=\"notifire-toast__progressBar__percentage\"\n [ngStyle]=\"{ width: state.progress * 100 + '%' }\"\n ></span>\n </div>\n <div\n class=\"notifire-toast__inner\"\n *ngIf=\"!toast.config.html; else toastHTML\"\n >\n <div\n class=\"notifire-toast__title\"\n [attr.id]=\"'snotify_' + toast.id\"\n *ngIf=\"toast.title\"\n >\n {{ toast.title | truncate: toast.config.titleMaxLength }}\n </div>\n <div\n class=\"notifire-toast__body\"\n *ngIf=\"toast.body\"\n >\n {{ toast.body | truncate: toast.config.bodyMaxLength }}\n </div>\n <ngx-snotify-prompt\n *ngIf=\"toast.config.type === state.promptType\"\n [toast]=\"toast\"\n >\n </ngx-snotify-prompt>\n <div\n *ngIf=\"!toast.config.icon; else elseBlock\"\n [ngClass]=\"['snotify-icon', toast.config.iconClass || 'snotify-icon--' + toast.config.type]\"\n ></div>\n <ng-template #elseBlock>\n <img\n class=\"snotify-icon\"\n [src]=\"toast.config.icon\"\n >\n </ng-template>\n </div>\n <ng-template #toastHTML>\n <div\n class=\"notifire-toast__inner\"\n [innerHTML]=\"toast.config.html\"\n ></div>\n </ng-template>\n <notifire-button\n *ngIf=\"toast.config.buttons\"\n [toast]=\"toast\"\n ></notifire-button>\n </div>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: PromptComponent, selector: "ngx-snotify-prompt", inputs: ["toast"] }, { kind: "component", type: ButtonsComponent, selector: "notifire-button", inputs: ["toast"] }, { kind: "pipe", type: TruncatePipe, name: "truncate" }], encapsulation: i0.ViewEncapsulation.None });
782
+ ToastComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: ToastComponent, deps: [{ token: SnotifireService }], target: i0.ɵɵFactoryTarget.Component });
783
+ ToastComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.10", type: ToastComponent, selector: "ngx-toast", inputs: { toast: "toast" }, outputs: { stateChanged: "stateChanged" }, ngImport: i0, template: "<ng-container *ngIf=\"toast && toast.config\">\n <div\n [attr.role]=\"toast.config.type === state.promptType ? 'dialog' : 'alert'\"\n [attr.aria-labelledby]=\"'snotify_' + toast.id\"\n [attr.aria-modal]=\"toast.config.type === state.promptType\"\n [ngClass]=\"[\n 'notifire-toast animated',\n 'snotify-' + toast.config.type,\n state.animation, toast.valid === undefined ? '' : toast.valid ? 'snotifyToast--valid' : 'snotifyToast--invalid'\n]\"\n [ngStyle]=\"{\n '-webkit-transition': toast.config.animation && toast.config.animation.time + 'ms',\n transition: toast.config.animation && toast.config.animation.time + 'ms',\n '-webkit-animation-duration': toast.config.animation && toast.config.animation.time + 'ms',\n 'animation-duration': toast.config.animation && toast.config.animation.time + 'ms'\n}\"\n (animationend)=\"onExitTransitionEnd()\"\n (click)=\"onClick()\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n >\n <div\n class=\"notifire-toast__progressBar\"\n *ngIf=\"toast.config.showProgressBar\"\n >\n <span\n class=\"notifire-toast__progressBar__percentage\"\n [ngStyle]=\"{ width: state.progress * 100 + '%' }\"\n ></span>\n </div>\n <div\n class=\"notifire-toast__inner\"\n *ngIf=\"!toast.config.html; else toastHTML\"\n >\n <div\n class=\"notifire-toast__title\"\n [attr.id]=\"'snotify_' + toast.id\"\n *ngIf=\"toast.title\"\n >\n {{ toast.title | truncate: toast.config.titleMaxLength }}\n </div>\n <div\n class=\"notifire-toast__body\"\n *ngIf=\"toast.body\"\n >\n {{ toast.body | truncate: toast.config.bodyMaxLength }}\n </div>\n <ngx-snotify-prompt\n *ngIf=\"toast.config.type === state.promptType\"\n [toast]=\"toast\"\n >\n </ngx-snotify-prompt>\n <div\n *ngIf=\"!toast.config.icon; else elseBlock\"\n [ngClass]=\"['snotifire-icon', toast.config.iconClass || 'snotifire-icon--' + toast.config.type]\"\n ></div>\n <ng-template #elseBlock>\n <img\n class=\"snotifire-icon\"\n [src]=\"toast.config.icon\"\n >\n </ng-template>\n </div>\n <ng-template #toastHTML>\n <div\n class=\"notifire-toast__inner\"\n [innerHTML]=\"toast.config.html\"\n ></div>\n </ng-template>\n <notifire-button\n *ngIf=\"toast.config.buttons\"\n [toast]=\"toast\"\n ></notifire-button>\n </div>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: PromptComponent, selector: "ngx-snotify-prompt", inputs: ["toast"] }, { kind: "component", type: ButtonsComponent, selector: "notifire-button", inputs: ["toast"] }, { kind: "pipe", type: TruncatePipe, name: "truncate" }], encapsulation: i0.ViewEncapsulation.None });
776
784
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: ToastComponent, decorators: [{
777
785
  type: Component,
778
- args: [{ selector: 'ngx-toast', encapsulation: ViewEncapsulation.None, template: "<ng-container *ngIf=\"toast && toast.config\">\n <div\n [attr.role]=\"toast.config.type === state.promptType ? 'dialog' : 'alert'\"\n [attr.aria-labelledby]=\"'snotify_' + toast.id\"\n [attr.aria-modal]=\"toast.config.type === state.promptType\"\n [ngClass]=\"[\n 'notifire-toast animated',\n 'snotify-' + toast.config.type,\n state.animation, toast.valid === undefined ? '' : toast.valid ? 'snotifyToast--valid' : 'snotifyToast--invalid'\n]\"\n [ngStyle]=\"{\n '-webkit-transition': toast.config.animation && toast.config.animation.time + 'ms',\n transition: toast.config.animation && toast.config.animation.time + 'ms',\n '-webkit-animation-duration': toast.config.animation && toast.config.animation.time + 'ms',\n 'animation-duration': toast.config.animation && toast.config.animation.time + 'ms'\n}\"\n (animationend)=\"onExitTransitionEnd()\"\n (click)=\"onClick()\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n >\n <div\n class=\"notifire-toast__progressBar\"\n *ngIf=\"toast.config.showProgressBar\"\n >\n <span\n class=\"notifire-toast__progressBar__percentage\"\n [ngStyle]=\"{ width: state.progress * 100 + '%' }\"\n ></span>\n </div>\n <div\n class=\"notifire-toast__inner\"\n *ngIf=\"!toast.config.html; else toastHTML\"\n >\n <div\n class=\"notifire-toast__title\"\n [attr.id]=\"'snotify_' + toast.id\"\n *ngIf=\"toast.title\"\n >\n {{ toast.title | truncate: toast.config.titleMaxLength }}\n </div>\n <div\n class=\"notifire-toast__body\"\n *ngIf=\"toast.body\"\n >\n {{ toast.body | truncate: toast.config.bodyMaxLength }}\n </div>\n <ngx-snotify-prompt\n *ngIf=\"toast.config.type === state.promptType\"\n [toast]=\"toast\"\n >\n </ngx-snotify-prompt>\n <div\n *ngIf=\"!toast.config.icon; else elseBlock\"\n [ngClass]=\"['snotify-icon', toast.config.iconClass || 'snotify-icon--' + toast.config.type]\"\n ></div>\n <ng-template #elseBlock>\n <img\n class=\"snotify-icon\"\n [src]=\"toast.config.icon\"\n >\n </ng-template>\n </div>\n <ng-template #toastHTML>\n <div\n class=\"notifire-toast__inner\"\n [innerHTML]=\"toast.config.html\"\n ></div>\n </ng-template>\n <notifire-button\n *ngIf=\"toast.config.buttons\"\n [toast]=\"toast\"\n ></notifire-button>\n </div>\n</ng-container>\n" }]
779
- }], ctorParameters: function () { return [{ type: SnotificationService }]; }, propDecorators: { toast: [{
786
+ args: [{ selector: 'ngx-toast', encapsulation: ViewEncapsulation.None, template: "<ng-container *ngIf=\"toast && toast.config\">\n <div\n [attr.role]=\"toast.config.type === state.promptType ? 'dialog' : 'alert'\"\n [attr.aria-labelledby]=\"'snotify_' + toast.id\"\n [attr.aria-modal]=\"toast.config.type === state.promptType\"\n [ngClass]=\"[\n 'notifire-toast animated',\n 'snotify-' + toast.config.type,\n state.animation, toast.valid === undefined ? '' : toast.valid ? 'snotifyToast--valid' : 'snotifyToast--invalid'\n]\"\n [ngStyle]=\"{\n '-webkit-transition': toast.config.animation && toast.config.animation.time + 'ms',\n transition: toast.config.animation && toast.config.animation.time + 'ms',\n '-webkit-animation-duration': toast.config.animation && toast.config.animation.time + 'ms',\n 'animation-duration': toast.config.animation && toast.config.animation.time + 'ms'\n}\"\n (animationend)=\"onExitTransitionEnd()\"\n (click)=\"onClick()\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n >\n <div\n class=\"notifire-toast__progressBar\"\n *ngIf=\"toast.config.showProgressBar\"\n >\n <span\n class=\"notifire-toast__progressBar__percentage\"\n [ngStyle]=\"{ width: state.progress * 100 + '%' }\"\n ></span>\n </div>\n <div\n class=\"notifire-toast__inner\"\n *ngIf=\"!toast.config.html; else toastHTML\"\n >\n <div\n class=\"notifire-toast__title\"\n [attr.id]=\"'snotify_' + toast.id\"\n *ngIf=\"toast.title\"\n >\n {{ toast.title | truncate: toast.config.titleMaxLength }}\n </div>\n <div\n class=\"notifire-toast__body\"\n *ngIf=\"toast.body\"\n >\n {{ toast.body | truncate: toast.config.bodyMaxLength }}\n </div>\n <ngx-snotify-prompt\n *ngIf=\"toast.config.type === state.promptType\"\n [toast]=\"toast\"\n >\n </ngx-snotify-prompt>\n <div\n *ngIf=\"!toast.config.icon; else elseBlock\"\n [ngClass]=\"['snotifire-icon', toast.config.iconClass || 'snotifire-icon--' + toast.config.type]\"\n ></div>\n <ng-template #elseBlock>\n <img\n class=\"snotifire-icon\"\n [src]=\"toast.config.icon\"\n >\n </ng-template>\n </div>\n <ng-template #toastHTML>\n <div\n class=\"notifire-toast__inner\"\n [innerHTML]=\"toast.config.html\"\n ></div>\n </ng-template>\n <notifire-button\n *ngIf=\"toast.config.buttons\"\n [toast]=\"toast\"\n ></notifire-button>\n </div>\n</ng-container>\n" }]
787
+ }], ctorParameters: function () { return [{ type: SnotifireService }]; }, propDecorators: { toast: [{
780
788
  type: Input
781
789
  }], stateChanged: [{
782
790
  type: Output
@@ -920,18 +928,18 @@ class NgxSnotifireComponent {
920
928
  this.unsubscribe$.complete();
921
929
  }
922
930
  }
923
- NgxSnotifireComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: NgxSnotifireComponent, deps: [{ token: SnotificationService }], target: i0.ɵɵFactoryTarget.Component });
931
+ NgxSnotifireComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: NgxSnotifireComponent, deps: [{ token: SnotifireService }], target: i0.ɵɵFactoryTarget.Component });
924
932
  NgxSnotifireComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.10", type: NgxSnotifireComponent, selector: "ngx-snotifire", ngImport: i0, template: "<div\n class=\"snotifire-backdrop\"\n *ngIf=\"backdrop && backdrop >= 0\"\n [style.opacity]=\"backdrop\"\n></div>\n\n<div\n *ngFor=\"let position of notifications | keys\"\n class=\"snotify snotify-{{ position }}\"\n>\n <ngx-toast\n *ngFor=\"let notification of getNotificationArray(notifications, position) | slice: blockSizeA:blockSizeB\"\n [toast]=\"notification\"\n (stateChanged)=\"stateChanged($event)\"\n >\n </ngx-toast>\n\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ToastComponent, selector: "ngx-toast", inputs: ["toast"], outputs: ["stateChanged"] }, { kind: "pipe", type: i2.SlicePipe, name: "slice" }, { kind: "pipe", type: KeysPipe, name: "keys" }], encapsulation: i0.ViewEncapsulation.None });
925
933
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: NgxSnotifireComponent, decorators: [{
926
934
  type: Component,
927
935
  args: [{ selector: 'ngx-snotifire', encapsulation: ViewEncapsulation.None, template: "<div\n class=\"snotifire-backdrop\"\n *ngIf=\"backdrop && backdrop >= 0\"\n [style.opacity]=\"backdrop\"\n></div>\n\n<div\n *ngFor=\"let position of notifications | keys\"\n class=\"snotify snotify-{{ position }}\"\n>\n <ngx-toast\n *ngFor=\"let notification of getNotificationArray(notifications, position) | slice: blockSizeA:blockSizeB\"\n [toast]=\"notification\"\n (stateChanged)=\"stateChanged($event)\"\n >\n </ngx-toast>\n\n</div>\n" }]
928
- }], ctorParameters: function () { return [{ type: SnotificationService }]; } });
936
+ }], ctorParameters: function () { return [{ type: SnotifireService }]; } });
929
937
 
930
938
  class NgxSnotifireModule {
931
939
  static forRoot() {
932
940
  return {
933
941
  ngModule: NgxSnotifireModule,
934
- providers: [SnotificationService],
942
+ providers: [SnotifireService],
935
943
  };
936
944
  }
937
945
  }
@@ -1034,5 +1042,5 @@ const ToastDefaults = {
1034
1042
  * Generated bundle index. Do not edit.
1035
1043
  */
1036
1044
 
1037
- export { ButtonsComponent, KeysPipe, NgxSnotifireComponent, NgxSnotifireModule, NotifireModel, PromptComponent, SnotificationPositionType, SnotificationService, SnotifireEventType, SnotifireModel, SnotifireType, ToastComponent, ToastDefaults, TruncatePipe };
1045
+ export { ButtonsComponent, KeysPipe, NgxSnotifireComponent, NgxSnotifireModule, PromptComponent, SnotificationPositionType, SnotifireEventType, SnotifireModel, SnotifireService, SnotifireToastModel, SnotifireType, ToastComponent, ToastDefaults, TruncatePipe };
1038
1046
  //# sourceMappingURL=ngx-snotifire.mjs.map