@coolon/angular-ui-powerups 0.0.72 → 0.0.75

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 (113) hide show
  1. package/bundles/coolon-angular-ui-powerups.umd.js +1793 -1331
  2. package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
  3. package/bundles/coolon-angular-ui-powerups.umd.min.js +1 -1
  4. package/bundles/coolon-angular-ui-powerups.umd.min.js.map +1 -1
  5. package/coolon-angular-ui-powerups.d.ts +35 -32
  6. package/coolon-angular-ui-powerups.metadata.json +1 -1
  7. package/esm2015/coolon-angular-ui-powerups.js +35 -32
  8. package/esm2015/index.js +2 -2
  9. package/esm2015/lib/angular-ui-powerups.module.js +8 -22
  10. package/esm2015/lib/components/components.module.js +47 -0
  11. package/esm2015/lib/components/forms/number-input/number-input.component.js +2 -2
  12. package/esm2015/lib/components/forms/password-input/password-input.component.js +2 -2
  13. package/esm2015/lib/components/forms/select-input/select-input.component.js +2 -2
  14. package/esm2015/lib/components/forms/string-input/string-input.component.js +2 -2
  15. package/esm2015/lib/components/index.js +2 -1
  16. package/esm2015/lib/components/noop/noop.component.js +2 -2
  17. package/esm2015/lib/directives/directives.module.js +36 -0
  18. package/esm2015/lib/directives/index.js +2 -1
  19. package/esm2015/lib/interaction/components/activity-container/activity-container.component.js +72 -49
  20. package/esm2015/lib/interaction/components/activity-outlet/activity-outlet.component.js +2 -2
  21. package/esm2015/lib/interaction/components/alert-dialog/alert-dialog.component.js +3 -3
  22. package/esm2015/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.js +3 -3
  23. package/esm2015/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js +3 -3
  24. package/esm2015/lib/interaction/components/inplace-interaction-context/inplace-interaction-context.component.js +128 -0
  25. package/esm2015/lib/interaction/components/interaction-outlet/interaction-outlet.component.js +2 -2
  26. package/esm2015/lib/interaction/index.js +2 -1
  27. package/esm2015/lib/interaction/interaction.module.js +6 -3
  28. package/esm2015/lib/interaction/services/dialog-interaction.service.js +10 -7
  29. package/esm2015/lib/place/components/abstract-place-navigation.component.js +38 -3
  30. package/esm2015/lib/place/components/busy-overlay/busy-overlay.component.js +2 -2
  31. package/esm2015/lib/place/components/empty-state/empty-state.component.js +3 -3
  32. package/esm2015/lib/place/components/list-place-nav/list-place-nav.component.js +3 -3
  33. package/esm2015/lib/place/components/place-outlet/place-outlet.component.js +73 -33
  34. package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +3 -3
  35. package/esm2015/lib/place/index.js +2 -2
  36. package/esm2015/lib/place/place-component.js +3 -1
  37. package/esm2015/lib/place/place-definition.js +2 -6
  38. package/esm2015/lib/place/place-router.js +7 -9
  39. package/esm2015/lib/place/place.decorator.js +2 -4
  40. package/esm2015/lib/place/place.module.js +4 -2
  41. package/esm2015/lib/place/route/guards/enter-place-guard.service.js +283 -0
  42. package/esm2015/lib/place/route/guards/leave-place.guard.js +73 -53
  43. package/esm2015/lib/place/visit.js +10 -1
  44. package/esm2015/public_api.js +5 -5
  45. package/esm5/coolon-angular-ui-powerups.js +35 -32
  46. package/esm5/index.js +2 -2
  47. package/esm5/lib/angular-ui-powerups.module.js +8 -22
  48. package/esm5/lib/components/components.module.js +51 -0
  49. package/esm5/lib/components/forms/number-input/number-input.component.js +2 -2
  50. package/esm5/lib/components/forms/password-input/password-input.component.js +2 -2
  51. package/esm5/lib/components/forms/select-input/select-input.component.js +2 -2
  52. package/esm5/lib/components/forms/string-input/string-input.component.js +2 -2
  53. package/esm5/lib/components/index.js +2 -1
  54. package/esm5/lib/components/noop/noop.component.js +2 -2
  55. package/esm5/lib/directives/directives.module.js +40 -0
  56. package/esm5/lib/directives/index.js +2 -1
  57. package/esm5/lib/interaction/components/activity-container/activity-container.component.js +80 -50
  58. package/esm5/lib/interaction/components/activity-outlet/activity-outlet.component.js +2 -2
  59. package/esm5/lib/interaction/components/alert-dialog/alert-dialog.component.js +3 -3
  60. package/esm5/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.js +3 -3
  61. package/esm5/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js +3 -3
  62. package/esm5/lib/interaction/components/inplace-interaction-context/inplace-interaction-context.component.js +171 -0
  63. package/esm5/lib/interaction/components/interaction-outlet/interaction-outlet.component.js +2 -2
  64. package/esm5/lib/interaction/index.js +2 -1
  65. package/esm5/lib/interaction/interaction.module.js +6 -3
  66. package/esm5/lib/interaction/services/dialog-interaction.service.js +10 -7
  67. package/esm5/lib/place/components/abstract-place-navigation.component.js +38 -3
  68. package/esm5/lib/place/components/busy-overlay/busy-overlay.component.js +2 -2
  69. package/esm5/lib/place/components/empty-state/empty-state.component.js +3 -3
  70. package/esm5/lib/place/components/list-place-nav/list-place-nav.component.js +3 -3
  71. package/esm5/lib/place/components/place-outlet/place-outlet.component.js +85 -39
  72. package/esm5/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +3 -3
  73. package/esm5/lib/place/index.js +2 -2
  74. package/esm5/lib/place/place-component.js +3 -1
  75. package/esm5/lib/place/place-definition.js +2 -5
  76. package/esm5/lib/place/place-router.js +11 -10
  77. package/esm5/lib/place/place.decorator.js +2 -4
  78. package/esm5/lib/place/place.module.js +4 -2
  79. package/esm5/lib/place/route/guards/enter-place-guard.service.js +319 -0
  80. package/esm5/lib/place/route/guards/leave-place.guard.js +75 -11
  81. package/esm5/lib/place/visit.js +13 -1
  82. package/esm5/public_api.js +5 -5
  83. package/fesm2015/coolon-angular-ui-powerups.js +1308 -970
  84. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  85. package/fesm5/coolon-angular-ui-powerups.js +1747 -1292
  86. package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
  87. package/lib/components/components.module.d.ts +2 -0
  88. package/lib/components/index.d.ts +1 -0
  89. package/lib/directives/directives.module.d.ts +2 -0
  90. package/lib/directives/index.d.ts +1 -0
  91. package/lib/interaction/components/activity-container/activity-container.component.d.ts +9 -6
  92. package/lib/interaction/components/inplace-interaction-context/inplace-interaction-context.component.d.ts +21 -0
  93. package/lib/interaction/index.d.ts +1 -0
  94. package/lib/place/components/abstract-place-navigation.component.d.ts +7 -1
  95. package/lib/place/components/place-outlet/place-outlet.component.d.ts +8 -5
  96. package/lib/place/index.d.ts +1 -1
  97. package/lib/place/place-component.d.ts +2 -0
  98. package/lib/place/place-definition.d.ts +1 -2
  99. package/lib/place/place.decorator.d.ts +0 -1
  100. package/lib/place/route/guards/{place-route.guard.d.ts → enter-place-guard.service.d.ts} +6 -4
  101. package/lib/place/visit.d.ts +2 -0
  102. package/package.json +1 -1
  103. package/schematics/place-routes/place-builder.js +0 -1
  104. package/schematics/place-routes/place-builder.js.map +1 -1
  105. package/schematics/place-routes/place-class-scanner.js +0 -1
  106. package/schematics/place-routes/place-class-scanner.js.map +1 -1
  107. package/schematics/place-routes/place-def.d.ts +0 -2
  108. package/schematics/place-routes/place-def.js +12 -11
  109. package/schematics/place-routes/place-def.js.map +1 -1
  110. package/schematics/place-routes/templates/place-routes.ts.template +1 -1
  111. package/styles/styles.scss +7 -2
  112. package/esm2015/lib/place/route/guards/place-route.guard.js +0 -243
  113. package/esm5/lib/place/route/guards/place-route.guard.js +0 -273
@@ -17,7 +17,7 @@ export function Place(options) {
17
17
  */
18
18
  function (target) {
19
19
  if (PlaceComponent.isPlaceComponentConstructor(target)) {
20
- PlaceComponent.injectDefinition(target, new PlaceDefinition(target, options.path, _.isNil(options.authenticate) ? false : options.authenticate, options.order, options.data, PlaceComponent.getRouteParameters(target), (options.children || []).map((/**
20
+ PlaceComponent.injectDefinition(target, new PlaceDefinition(target, options.path, _.isNil(options.authenticate) ? false : options.authenticate, options.data, PlaceComponent.getRouteParameters(target), (options.children || []).map((/**
21
21
  * @param {?} c
22
22
  * @return {?}
23
23
  */
@@ -37,8 +37,6 @@ export function Place(options) {
37
37
  if (false) {
38
38
  /** @type {?} */
39
39
  Options.prototype.path;
40
- /** @type {?} */
41
- Options.prototype.order;
42
40
  /** @type {?|undefined} */
43
41
  Options.prototype.data;
44
42
  /** @type {?|undefined} */
@@ -49,4 +47,4 @@ export function Place(options) {
49
47
  Options.prototype.defaultChild;
50
48
  }
51
49
  })(Place || (Place = {}));
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UuZGVjb3JhdG9yLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3BsYWNlLmRlY29yYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFpQixJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7OztBQUVyRCxNQUFNLFVBQVUsS0FBSyxDQUFDLE9BQXNCO0lBQzFDOzs7O0lBQU8sVUFBQyxNQUFnQjtRQUN0QixJQUFJLGNBQWMsQ0FBQywyQkFBMkIsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN0RCxjQUFjLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLElBQUksZUFBZSxDQUN6RCxNQUFNLEVBQ04sT0FBTyxDQUFDLElBQUksRUFDWixDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUM1RCxPQUFPLENBQUMsS0FBSyxFQUNiLE9BQU8sQ0FBQyxJQUFJLEVBQ1osY0FBYyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxFQUN6QyxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRzs7OztZQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBL0IsQ0FBK0IsRUFBQyxDQUNuRSxDQUFDLENBQUM7U0FFSjthQUFNO1lBQ0wsSUFBSSxDQUFDLFlBQVksQ0FBSSxNQUFNLDREQUF5RCxDQUFDLENBQUM7U0FDdkY7SUFDSCxDQUFDLEVBQUM7QUFDSixDQUFDO0FBRUQsV0FBaUIsS0FBSzs7OztJQUVwQixzQkFPQzs7OztRQU5DLHVCQUFhOztRQUNiLHdCQUFjOztRQUNkLHVCQUE4Qjs7UUFDOUIsK0JBQXVCOztRQUN2QiwyQkFBMEM7O1FBQzFDLCtCQUE0Qzs7QUFHaEQsQ0FBQyxFQVhnQixLQUFLLEtBQUwsS0FBSyxRQVdyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdGFibGUsIGxhbmcgfSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBQbGFjZUNvbXBvbmVudCB9IGZyb20gJy4vcGxhY2UtY29tcG9uZW50JztcbmltcG9ydCB7IFBsYWNlRGVmaW5pdGlvbiB9IGZyb20gJy4vcGxhY2UtZGVmaW5pdGlvbic7XG5cbmV4cG9ydCBmdW5jdGlvbiBQbGFjZShvcHRpb25zOiBQbGFjZS5PcHRpb25zKSB7XG4gIHJldHVybiAodGFyZ2V0OiBGdW5jdGlvbikgPT4ge1xuICAgIGlmIChQbGFjZUNvbXBvbmVudC5pc1BsYWNlQ29tcG9uZW50Q29uc3RydWN0b3IodGFyZ2V0KSkge1xuICAgICAgUGxhY2VDb21wb25lbnQuaW5qZWN0RGVmaW5pdGlvbih0YXJnZXQsIG5ldyBQbGFjZURlZmluaXRpb24oXG4gICAgICAgIHRhcmdldCxcbiAgICAgICAgb3B0aW9ucy5wYXRoLFxuICAgICAgICBfLmlzTmlsKG9wdGlvbnMuYXV0aGVudGljYXRlKSA/IGZhbHNlIDogb3B0aW9ucy5hdXRoZW50aWNhdGUsXG4gICAgICAgIG9wdGlvbnMub3JkZXIsXG4gICAgICAgIG9wdGlvbnMuZGF0YSxcbiAgICAgICAgUGxhY2VDb21wb25lbnQuZ2V0Um91dGVQYXJhbWV0ZXJzKHRhcmdldCksXG4gICAgICAgIChvcHRpb25zLmNoaWxkcmVuIHx8IFtdKS5tYXAoYyA9PiBQbGFjZUNvbXBvbmVudC5nZXREZWZpbml0aW9uKGMpKVxuICAgICAgKSk7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgbGFuZy5pbGxlZ2FsU3RhdGUoYCR7dGFyZ2V0fSBtdXN0IGV4dGVuZCBQbGFjZUNvbXBvbmVudCB0byB1c2UgdGhlIEBQbGFjZSBkZWNvcmF0b3JgKTtcbiAgICB9XG4gIH07XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgUGxhY2Uge1xuXG4gIGV4cG9ydCBpbnRlcmZhY2UgT3B0aW9ucyB7XG4gICAgcGF0aDogc3RyaW5nLFxuICAgIG9yZGVyOiBudW1iZXI7XG4gICAgZGF0YT86IHsgW2tleTogc3RyaW5nXTogYW55IH0sIC8vIGRlZmF1bHRzIHRvIHRydWVcbiAgICBhdXRoZW50aWNhdGU/OiBib29sZWFuLCAvLyBkZWZhdWx0cyB0byB0cnVlXG4gICAgY2hpbGRyZW4/OiBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50PltdXG4gICAgZGVmYXVsdENoaWxkPzogQ29uc3RydWN0YWJsZTxQbGFjZUNvbXBvbmVudD5cbiAgfVxuXG59XG4iXX0=
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UuZGVjb3JhdG9yLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3BsYWNlLmRlY29yYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFpQixJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7OztBQUVyRCxNQUFNLFVBQVUsS0FBSyxDQUFDLE9BQXNCO0lBQzFDOzs7O0lBQU8sVUFBQyxNQUFnQjtRQUN0QixJQUFJLGNBQWMsQ0FBQywyQkFBMkIsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN0RCxjQUFjLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLElBQUksZUFBZSxDQUN6RCxNQUFNLEVBQ04sT0FBTyxDQUFDLElBQUksRUFDWixDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUM1RCxPQUFPLENBQUMsSUFBSSxFQUNaLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsRUFDekMsQ0FBQyxPQUFPLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUc7Ozs7WUFBQyxVQUFBLENBQUMsSUFBSSxPQUFBLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQS9CLENBQStCLEVBQUMsQ0FDbkUsQ0FBQyxDQUFDO1NBRUo7YUFBTTtZQUNMLElBQUksQ0FBQyxZQUFZLENBQUksTUFBTSw0REFBeUQsQ0FBQyxDQUFDO1NBQ3ZGO0lBQ0gsQ0FBQyxFQUFDO0FBQ0osQ0FBQztBQUVELFdBQWlCLEtBQUs7Ozs7SUFFcEIsc0JBTUM7Ozs7UUFMQyx1QkFBYTs7UUFDYix1QkFBOEI7O1FBQzlCLCtCQUF1Qjs7UUFDdkIsMkJBQTBDOztRQUMxQywrQkFBNEM7O0FBR2hELENBQUMsRUFWZ0IsS0FBSyxLQUFMLEtBQUssUUFVckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3RhYmxlLCBsYW5nIH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgUGxhY2VDb21wb25lbnQgfSBmcm9tICcuL3BsYWNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBQbGFjZURlZmluaXRpb24gfSBmcm9tICcuL3BsYWNlLWRlZmluaXRpb24nO1xuXG5leHBvcnQgZnVuY3Rpb24gUGxhY2Uob3B0aW9uczogUGxhY2UuT3B0aW9ucykge1xuICByZXR1cm4gKHRhcmdldDogRnVuY3Rpb24pID0+IHtcbiAgICBpZiAoUGxhY2VDb21wb25lbnQuaXNQbGFjZUNvbXBvbmVudENvbnN0cnVjdG9yKHRhcmdldCkpIHtcbiAgICAgIFBsYWNlQ29tcG9uZW50LmluamVjdERlZmluaXRpb24odGFyZ2V0LCBuZXcgUGxhY2VEZWZpbml0aW9uKFxuICAgICAgICB0YXJnZXQsXG4gICAgICAgIG9wdGlvbnMucGF0aCxcbiAgICAgICAgXy5pc05pbChvcHRpb25zLmF1dGhlbnRpY2F0ZSkgPyBmYWxzZSA6IG9wdGlvbnMuYXV0aGVudGljYXRlLFxuICAgICAgICBvcHRpb25zLmRhdGEsXG4gICAgICAgIFBsYWNlQ29tcG9uZW50LmdldFJvdXRlUGFyYW1ldGVycyh0YXJnZXQpLFxuICAgICAgICAob3B0aW9ucy5jaGlsZHJlbiB8fCBbXSkubWFwKGMgPT4gUGxhY2VDb21wb25lbnQuZ2V0RGVmaW5pdGlvbihjKSlcbiAgICAgICkpO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIGxhbmcuaWxsZWdhbFN0YXRlKGAke3RhcmdldH0gbXVzdCBleHRlbmQgUGxhY2VDb21wb25lbnQgdG8gdXNlIHRoZSBAUGxhY2UgZGVjb3JhdG9yYCk7XG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgbmFtZXNwYWNlIFBsYWNlIHtcblxuICBleHBvcnQgaW50ZXJmYWNlIE9wdGlvbnMge1xuICAgIHBhdGg6IHN0cmluZyxcbiAgICBkYXRhPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgLy8gZGVmYXVsdHMgdG8gdHJ1ZVxuICAgIGF1dGhlbnRpY2F0ZT86IGJvb2xlYW4sIC8vIGRlZmF1bHRzIHRvIHRydWVcbiAgICBjaGlsZHJlbj86IENvbnN0cnVjdGFibGU8UGxhY2VDb21wb25lbnQ+W11cbiAgICBkZWZhdWx0Q2hpbGQ/OiBDb25zdHJ1Y3RhYmxlPFBsYWNlQ29tcG9uZW50PlxuICB9XG5cbn1cbiJdfQ==
@@ -11,6 +11,7 @@ import { MatTabsModule } from '@angular/material/tabs';
11
11
  import { MatTooltipModule } from '@angular/material/tooltip';
12
12
  import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
13
13
  import { RouterModule } from '@angular/router';
14
+ import { DirectivesModule } from '../directives/directives.module';
14
15
  import { BusyOverlayComponent } from './components/busy-overlay/busy-overlay.component';
15
16
  import { EmptyStateComponent } from './components/empty-state/empty-state.component';
16
17
  import { ListPlaceNavComponent } from './components/list-place-nav/list-place-nav.component';
@@ -29,7 +30,8 @@ var PlaceModule = /** @class */ (function () {
29
30
  MatTabsModule,
30
31
  MatListModule,
31
32
  MatTooltipModule,
32
- MatIconModule
33
+ MatIconModule,
34
+ DirectivesModule
33
35
  ],
34
36
  declarations: [
35
37
  EmptyStateComponent,
@@ -52,4 +54,4 @@ var PlaceModule = /** @class */ (function () {
52
54
  return PlaceModule;
53
55
  }());
54
56
  export { PlaceModule };
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3BsYWNlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHdFQUF3RSxDQUFDO0FBRXhIO0lBQUE7SUE4QkEsQ0FBQzs7Z0JBOUJBLFFBQVEsU0FBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWix1QkFBdUI7d0JBQ3ZCLHdCQUF3Qjt3QkFDeEIsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixhQUFhO3FCQUNkO29CQUNELFlBQVksRUFBRTt3QkFDWixtQkFBbUI7d0JBQ25CLG9CQUFvQjt3QkFDcEIsb0JBQW9CO3dCQUNwQiw4QkFBOEI7d0JBQzlCLHFCQUFxQjtxQkFDdEI7b0JBQ0QsZUFBZSxFQUFFLENBQUMsb0JBQW9CLENBQUM7b0JBQ3ZDLE9BQU8sRUFBRTt3QkFDUCxvQkFBb0I7d0JBQ3BCLG9CQUFvQjt3QkFDcEIsbUJBQW1CO3dCQUNuQiw4QkFBOEI7d0JBQzlCLHFCQUFxQjtxQkFDdEI7b0JBQ0QsU0FBUyxFQUFFLEVBQUU7aUJBQ2Q7O0lBR0Qsa0JBQUM7Q0FBQSxBQTlCRCxJQThCQztTQUZZLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdExpc3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9saXN0JztcbmltcG9ydCB7IE1hdFRhYnNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IEJyb3dzZXJBbmltYXRpb25zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci9hbmltYXRpb25zJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBCdXN5T3ZlcmxheUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9idXN5LW92ZXJsYXkvYnVzeS1vdmVybGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMaXN0UGxhY2VOYXZDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbGlzdC1wbGFjZS1uYXYvbGlzdC1wbGFjZS1uYXYuY29tcG9uZW50JztcbmltcG9ydCB7IFBsYWNlT3V0bGV0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3BsYWNlLW91dGxldC9wbGFjZS1vdXRsZXQuY29tcG9uZW50JztcbmltcG9ydCB7IFRhYmJlZFBsYWNlTmF2aWdhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YWJiZWQtcGxhY2UtbmF2aWdhdGlvbi90YWJiZWQtcGxhY2UtbmF2aWdhdGlvbi5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEJyb3dzZXJBbmltYXRpb25zTW9kdWxlLFxuICAgIE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgTWF0VGFic01vZHVsZSxcbiAgICBNYXRMaXN0TW9kdWxlLFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZVxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBFbXB0eVN0YXRlQ29tcG9uZW50LFxuICAgIEJ1c3lPdmVybGF5Q29tcG9uZW50LFxuICAgIFBsYWNlT3V0bGV0Q29tcG9uZW50LFxuICAgIFRhYmJlZFBsYWNlTmF2aWdhdGlvbkNvbXBvbmVudCxcbiAgICBMaXN0UGxhY2VOYXZDb21wb25lbnRcbiAgXSxcbiAgZW50cnlDb21wb25lbnRzOiBbQnVzeU92ZXJsYXlDb21wb25lbnRdLFxuICBleHBvcnRzOiBbXG4gICAgQnVzeU92ZXJsYXlDb21wb25lbnQsXG4gICAgUGxhY2VPdXRsZXRDb21wb25lbnQsXG4gICAgRW1wdHlTdGF0ZUNvbXBvbmVudCxcbiAgICBUYWJiZWRQbGFjZU5hdmlnYXRpb25Db21wb25lbnQsXG4gICAgTGlzdFBsYWNlTmF2Q29tcG9uZW50XG4gIF0sXG4gIHByb3ZpZGVyczogW11cbn0pXG5leHBvcnQgY2xhc3MgUGxhY2VNb2R1bGUge1xuXG59XG4iXX0=
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2UubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNvb2xvbi9hbmd1bGFyLXVpLXBvd2VydXBzLyIsInNvdXJjZXMiOlsibGliL3BsYWNlL3BsYWNlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHdFQUF3RSxDQUFDO0FBRXhIO0lBQUE7SUErQkEsQ0FBQzs7Z0JBL0JBLFFBQVEsU0FBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWix1QkFBdUI7d0JBQ3ZCLHdCQUF3Qjt3QkFDeEIsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLGdCQUFnQjtxQkFDakI7b0JBQ0QsWUFBWSxFQUFFO3dCQUNaLG1CQUFtQjt3QkFDbkIsb0JBQW9CO3dCQUNwQixvQkFBb0I7d0JBQ3BCLDhCQUE4Qjt3QkFDOUIscUJBQXFCO3FCQUN0QjtvQkFDRCxlQUFlLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztvQkFDdkMsT0FBTyxFQUFFO3dCQUNQLG9CQUFvQjt3QkFDcEIsb0JBQW9CO3dCQUNwQixtQkFBbUI7d0JBQ25CLDhCQUE4Qjt3QkFDOUIscUJBQXFCO3FCQUN0QjtvQkFDRCxTQUFTLEVBQUUsRUFBRTtpQkFDZDs7SUFHRCxrQkFBQztDQUFBLEFBL0JELElBK0JDO1NBRlksV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0TGlzdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QnO1xuaW1wb3J0IHsgTWF0VGFic01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuaW1wb3J0IHsgQnJvd3NlckFuaW1hdGlvbnNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEFuZ3VsYXJVaVBvd2VydXBzTW9kdWxlIH0gZnJvbSAnLi4vYW5ndWxhci11aS1wb3dlcnVwcy5tb2R1bGUnO1xuaW1wb3J0IHsgRGlyZWN0aXZlc01vZHVsZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvZGlyZWN0aXZlcy5tb2R1bGUnO1xuaW1wb3J0IHsgQnVzeU92ZXJsYXlDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYnVzeS1vdmVybGF5L2J1c3ktb3ZlcmxheS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRW1wdHlTdGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9lbXB0eS1zdGF0ZS9lbXB0eS1zdGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGlzdFBsYWNlTmF2Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2xpc3QtcGxhY2UtbmF2L2xpc3QtcGxhY2UtbmF2LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQbGFjZU91dGxldENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9wbGFjZS1vdXRsZXQvcGxhY2Utb3V0bGV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJiZWRQbGFjZU5hdmlnYXRpb25Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGFiYmVkLXBsYWNlLW5hdmlnYXRpb24vdGFiYmVkLXBsYWNlLW5hdmlnYXRpb24uY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBCcm93c2VyQW5pbWF0aW9uc01vZHVsZSxcbiAgICBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUsXG4gICAgUm91dGVyTW9kdWxlLFxuICAgIE1hdFRhYnNNb2R1bGUsXG4gICAgTWF0TGlzdE1vZHVsZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgRGlyZWN0aXZlc01vZHVsZVxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBFbXB0eVN0YXRlQ29tcG9uZW50LFxuICAgIEJ1c3lPdmVybGF5Q29tcG9uZW50LFxuICAgIFBsYWNlT3V0bGV0Q29tcG9uZW50LFxuICAgIFRhYmJlZFBsYWNlTmF2aWdhdGlvbkNvbXBvbmVudCxcbiAgICBMaXN0UGxhY2VOYXZDb21wb25lbnRcbiAgXSxcbiAgZW50cnlDb21wb25lbnRzOiBbQnVzeU92ZXJsYXlDb21wb25lbnRdLFxuICBleHBvcnRzOiBbXG4gICAgQnVzeU92ZXJsYXlDb21wb25lbnQsXG4gICAgUGxhY2VPdXRsZXRDb21wb25lbnQsXG4gICAgRW1wdHlTdGF0ZUNvbXBvbmVudCxcbiAgICBUYWJiZWRQbGFjZU5hdmlnYXRpb25Db21wb25lbnQsXG4gICAgTGlzdFBsYWNlTmF2Q29tcG9uZW50XG4gIF0sXG4gIHByb3ZpZGVyczogW11cbn0pXG5leHBvcnQgY2xhc3MgUGxhY2VNb2R1bGUge1xuXG59XG4iXX0=
@@ -0,0 +1,319 @@
1
+ /**
2
+ * @fileoverview added by tsickle
3
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
+ */
5
+ import * as tslib_1 from "tslib";
6
+ import { Injectable, Injector } from '@angular/core';
7
+ import { Router, UrlSerializer } from '@angular/router';
8
+ import { lang } from '@coolon/pectin';
9
+ import { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';
10
+ import { PlaceComponent } from '../../place-component';
11
+ import { PlaceHistory } from '../../place-history';
12
+ import { PlaceRouter } from '../../place-router';
13
+ import { Visit } from '../../visit';
14
+ import { VisitSanitiser } from '../visit-sanitiser';
15
+ import * as i0 from "@angular/core";
16
+ import * as i1 from "@angular/router";
17
+ import * as i2 from "../../place-router";
18
+ import * as i3 from "../../place-history";
19
+ var EnterPlaceGuard = /** @class */ (function () {
20
+ function EnterPlaceGuard(router, urlSerializer, placeRouter, placeHistory, injector) {
21
+ this.router = router;
22
+ this.urlSerializer = urlSerializer;
23
+ this.placeRouter = placeRouter;
24
+ this.placeHistory = placeHistory;
25
+ this.injector = injector;
26
+ }
27
+ // @Trace()
28
+ // @Trace()
29
+ /**
30
+ * @param {?} activatedRoute
31
+ * @param {?} state
32
+ * @return {?}
33
+ */
34
+ EnterPlaceGuard.prototype.canActivate =
35
+ // @Trace()
36
+ /**
37
+ * @param {?} activatedRoute
38
+ * @param {?} state
39
+ * @return {?}
40
+ */
41
+ function (activatedRoute, state) {
42
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
43
+ var placeDefinition, params, parsedParams, initialVisit, sanitiser, sanitisedVisit, routerStateUrlTree, commands;
44
+ return tslib_1.__generator(this, function (_a) {
45
+ switch (_a.label) {
46
+ case 0:
47
+ if (!PlaceComponent.isPlaceComponentConstructor(activatedRoute.component)) return [3 /*break*/, 2];
48
+ placeDefinition = PlaceComponent.getDefinition(activatedRoute.component);
49
+ // Parse our route params.
50
+ params = new EnterPlaceGuard.ConsolidatedParameterMap(activatedRoute.paramMap, activatedRoute.url);
51
+ parsedParams = placeDefinition.parseRouteParams(params);
52
+ initialVisit = this.placeRouter.navigationSession.getVisitFor(placeDefinition) || new Visit(placeDefinition, parsedParams);
53
+ sanitiser = new VisitSanitiser(activatedRoute, this.router, this.placeHistory, this.injector);
54
+ return [4 /*yield*/, sanitiser.sanitise(initialVisit.mergeRouteParameters(parsedParams))];
55
+ case 1:
56
+ sanitisedVisit = _a.sent();
57
+ // Save the visit with any updated parameters. We need to save it so we remember any non route parameters
58
+ this.placeRouter.navigationSession.storeVisit(sanitisedVisit);
59
+ if (initialVisit.hasRoutingChangedFrom(sanitisedVisit)) {
60
+ routerStateUrlTree = this.urlSerializer.parse(state.url);
61
+ // Regenerate the url
62
+ commands = this.createRedirectCommands(sanitisedVisit, tslib_1.__spread(routerStateUrlTree.root.children.primary.segments)).commands;
63
+ console.log('##### Place Guard Redirect', commands);
64
+ return [2 /*return*/, this.router.createUrlTree(commands, {
65
+ replaceUrl: true,
66
+ skipLocationChange: false
67
+ })];
68
+ }
69
+ else {
70
+ return [2 /*return*/, true];
71
+ }
72
+ return [3 /*break*/, 3];
73
+ case 2: return [2 /*return*/, lang.illegalState("expected component to be an instance of PlaceComponent, got " + activatedRoute.component)];
74
+ case 3: return [2 /*return*/];
75
+ }
76
+ });
77
+ });
78
+ };
79
+ /**
80
+ * @private
81
+ * @param {?} sanitisedVisit
82
+ * @param {?} path
83
+ * @return {?}
84
+ */
85
+ EnterPlaceGuard.prototype.createRedirectCommands = /**
86
+ * @private
87
+ * @param {?} sanitisedVisit
88
+ * @param {?} path
89
+ * @return {?}
90
+ */
91
+ function (sanitisedVisit, path) {
92
+ // Ugly, but it works for now.
93
+ /** @type {?} */
94
+ var newSegments = sanitisedVisit.getUrlSegments();
95
+ /** @type {?} */
96
+ var replaceAt = path.findIndex((/**
97
+ * @param {?} segment
98
+ * @return {?}
99
+ */
100
+ function (segment) { return segment.path === newSegments[0].path; }));
101
+ /** @type {?} */
102
+ var newPath = tslib_1.__spread(path);
103
+ newPath.splice.apply(newPath, tslib_1.__spread([replaceAt, newSegments.length], newSegments)); // do not use the return value, it's the items that were removed!
104
+ // do not use the return value, it's the items that were removed!
105
+ /** @type {?} */
106
+ var commands = [];
107
+ newPath.forEach((/**
108
+ * @param {?} s
109
+ * @return {?}
110
+ */
111
+ function (s) {
112
+ commands.push(s.path);
113
+ if (s.parameterMap.keys.length > 0) {
114
+ commands.push(s.parameters);
115
+ }
116
+ }));
117
+ return { newPath: newPath, commands: commands };
118
+ };
119
+ EnterPlaceGuard.decorators = [
120
+ { type: Injectable, args: [{
121
+ providedIn: 'root'
122
+ },] }
123
+ ];
124
+ /** @nocollapse */
125
+ EnterPlaceGuard.ctorParameters = function () { return [
126
+ { type: Router },
127
+ { type: UrlSerializer },
128
+ { type: PlaceRouter },
129
+ { type: PlaceHistory },
130
+ { type: Injector }
131
+ ]; };
132
+ /** @nocollapse */ EnterPlaceGuard.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function EnterPlaceGuard_Factory() { return new EnterPlaceGuard(i0.ɵɵinject(i1.Router), i0.ɵɵinject(i1.UrlSerializer), i0.ɵɵinject(i2.PlaceRouter), i0.ɵɵinject(i3.PlaceHistory), i0.ɵɵinject(i0.INJECTOR)); }, token: EnterPlaceGuard, providedIn: "root" });
133
+ return EnterPlaceGuard;
134
+ }());
135
+ export { EnterPlaceGuard };
136
+ if (false) {
137
+ /**
138
+ * @type {?}
139
+ * @private
140
+ */
141
+ EnterPlaceGuard.prototype.router;
142
+ /**
143
+ * @type {?}
144
+ * @private
145
+ */
146
+ EnterPlaceGuard.prototype.urlSerializer;
147
+ /**
148
+ * @type {?}
149
+ * @private
150
+ */
151
+ EnterPlaceGuard.prototype.placeRouter;
152
+ /**
153
+ * @type {?}
154
+ * @private
155
+ */
156
+ EnterPlaceGuard.prototype.placeHistory;
157
+ /**
158
+ * @type {?}
159
+ * @private
160
+ */
161
+ EnterPlaceGuard.prototype.injector;
162
+ }
163
+ (function (EnterPlaceGuard) {
164
+ /**
165
+ * This a work around for the fact that an activated route with multiple segments doesn't
166
+ * include the segment params in the paramMap as well as each segment returns an empty
167
+ * param map even when `parameter`s has content.
168
+ */
169
+ var ConsolidatedParameterMap = /** @class */ (function () {
170
+ function ConsolidatedParameterMap(paramMap, urlSegments) {
171
+ this.paramMaps = [paramMap].concat((urlSegments || []).map((/**
172
+ * @param {?} s
173
+ * @return {?}
174
+ */
175
+ function (s) { return new ParamMapAdapter(s.parameters); }))).filter((/**
176
+ * @param {?} m
177
+ * @return {?}
178
+ */
179
+ function (m) { return !!m; })); // the activated route param map can be null
180
+ }
181
+ /**
182
+ * @param {?} name
183
+ * @return {?}
184
+ */
185
+ ConsolidatedParameterMap.prototype.get = /**
186
+ * @param {?} name
187
+ * @return {?}
188
+ */
189
+ function (name) {
190
+ /** @type {?} */
191
+ var paramMap = this.paramMaps.find((/**
192
+ * @param {?} m
193
+ * @return {?}
194
+ */
195
+ function (m) { return m.has(name); }));
196
+ return paramMap.get(name);
197
+ };
198
+ /**
199
+ * @param {?} name
200
+ * @return {?}
201
+ */
202
+ ConsolidatedParameterMap.prototype.getAll = /**
203
+ * @param {?} name
204
+ * @return {?}
205
+ */
206
+ function (name) {
207
+ /** @type {?} */
208
+ var paramMap = this.paramMaps.find((/**
209
+ * @param {?} m
210
+ * @return {?}
211
+ */
212
+ function (m) { return m.has(name); }));
213
+ return paramMap.getAll(name);
214
+ };
215
+ /**
216
+ * @param {?} name
217
+ * @return {?}
218
+ */
219
+ ConsolidatedParameterMap.prototype.has = /**
220
+ * @param {?} name
221
+ * @return {?}
222
+ */
223
+ function (name) {
224
+ return !!this.paramMaps.find((/**
225
+ * @param {?} m
226
+ * @return {?}
227
+ */
228
+ function (m) { return m.has(name); }));
229
+ };
230
+ Object.defineProperty(ConsolidatedParameterMap.prototype, "keys", {
231
+ get: /**
232
+ * @return {?}
233
+ */
234
+ function () {
235
+ return this.paramMaps.reduce((/**
236
+ * @param {?} result
237
+ * @param {?} params
238
+ * @return {?}
239
+ */
240
+ function (result, params) { return result.concat(params.keys); }), []);
241
+ },
242
+ enumerable: true,
243
+ configurable: true
244
+ });
245
+ tslib_1.__decorate([
246
+ Memoize(),
247
+ tslib_1.__metadata("design:type", Array),
248
+ tslib_1.__metadata("design:paramtypes", [])
249
+ ], ConsolidatedParameterMap.prototype, "keys", null);
250
+ return ConsolidatedParameterMap;
251
+ }());
252
+ EnterPlaceGuard.ConsolidatedParameterMap = ConsolidatedParameterMap;
253
+ if (false) {
254
+ /**
255
+ * @type {?}
256
+ * @private
257
+ */
258
+ ConsolidatedParameterMap.prototype.paramMaps;
259
+ }
260
+ var ParamMapAdapter = /** @class */ (function () {
261
+ function ParamMapAdapter(params) {
262
+ this.params = params;
263
+ }
264
+ /**
265
+ * @param {?} name
266
+ * @return {?}
267
+ */
268
+ ParamMapAdapter.prototype.get = /**
269
+ * @param {?} name
270
+ * @return {?}
271
+ */
272
+ function (name) {
273
+ return this.params[name];
274
+ };
275
+ /**
276
+ * @param {?} name
277
+ * @return {?}
278
+ */
279
+ ParamMapAdapter.prototype.getAll = /**
280
+ * @param {?} name
281
+ * @return {?}
282
+ */
283
+ function (name) {
284
+ /** @type {?} */
285
+ var value = this.get(name);
286
+ return Array.isArray(value) ? value : [value];
287
+ };
288
+ /**
289
+ * @param {?} name
290
+ * @return {?}
291
+ */
292
+ ParamMapAdapter.prototype.has = /**
293
+ * @param {?} name
294
+ * @return {?}
295
+ */
296
+ function (name) {
297
+ return this.keys.includes(name);
298
+ };
299
+ Object.defineProperty(ParamMapAdapter.prototype, "keys", {
300
+ get: /**
301
+ * @return {?}
302
+ */
303
+ function () {
304
+ return Object.keys(this.params);
305
+ },
306
+ enumerable: true,
307
+ configurable: true
308
+ });
309
+ return ParamMapAdapter;
310
+ }());
311
+ if (false) {
312
+ /**
313
+ * @type {?}
314
+ * @private
315
+ */
316
+ ParamMapAdapter.prototype.params;
317
+ }
318
+ })(EnterPlaceGuard || (EnterPlaceGuard = {}));
319
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50ZXItcGxhY2UtZ3VhcmQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bjb29sb24vYW5ndWxhci11aS1wb3dlcnVwcy8iLCJzb3VyY2VzIjpbImxpYi9wbGFjZS9yb3V0ZS9ndWFyZHMvZW50ZXItcGxhY2UtZ3VhcmQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFJTCxNQUFNLEVBR04sYUFBYSxFQUVkLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUMzRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7QUFFcEQ7SUFLRSx5QkFBNkIsTUFBYyxFQUN2QixhQUE0QixFQUNuQixXQUF3QixFQUN4QixZQUEwQixFQUMxQixRQUFrQjtRQUpsQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ3ZCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQ25CLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGFBQVEsR0FBUixRQUFRLENBQVU7SUFDL0MsQ0FBQztJQUVELFdBQVc7Ozs7Ozs7SUFDTCxxQ0FBVzs7Ozs7OztJQUFqQixVQUFrQixjQUFzQyxFQUFFLEtBQTBCOzs7Ozs7NkJBQzlFLGNBQWMsQ0FBQywy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SUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxDQUFDO1FBRUQsc0JBQUksaUNBQUk7Ozs7WUFBUjtnQkFDRSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2xDLENBQUM7OztXQUFBO1FBRUgsc0JBQUM7SUFBRCxDQUFDLEFBckJELElBcUJDOzs7Ozs7UUFwQmEsaUNBQWdEOztBQXFCaEUsQ0FBQyxFQTFEZ0IsZUFBZSxLQUFmLGVBQWUsUUEwRC9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gIENhbkFjdGl2YXRlLFxuICBQYXJhbU1hcCxcbiAgUm91dGVyLFxuICBSb3V0ZXJTdGF0ZVNuYXBzaG90LFxuICBVcmxTZWdtZW50LFxuICBVcmxTZXJpYWxpemVyLFxuICBVcmxUcmVlXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBsYW5nIH0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IHsgTWVtb2l6ZSB9IGZyb20gJ0B0eXBlc2NyaXB0LXBsdXMvZmFzdC1tZW1vaXplLWRlY29yYXRvci9kaXN0L3NyYyc7XG5pbXBvcnQgeyBQbGFjZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL3BsYWNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBQbGFjZUhpc3RvcnkgfSBmcm9tICcuLi8uLi9wbGFjZS1oaXN0b3J5JztcbmltcG9ydCB7IFBsYWNlUm91dGVyIH0gZnJvbSAnLi4vLi4vcGxhY2Utcm91dGVyJztcbmltcG9ydCB7IFZpc2l0IH0gZnJvbSAnLi4vLi4vdmlzaXQnO1xuaW1wb3J0IHsgVmlzaXRTYW5pdGlzZXIgfSBmcm9tICcuLi92aXNpdC1zYW5pdGlzZXInO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBFbnRlclBsYWNlR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSB1cmxTZXJpYWxpemVyOiBVcmxTZXJpYWxpemVyLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHBsYWNlUm91dGVyOiBQbGFjZVJvdXRlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBwbGFjZUhpc3Rvcnk6IFBsYWNlSGlzdG9yeSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIGFzeW5jIGNhbkFjdGl2YXRlKGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IFByb21pc2U8Ym9vbGVhbiB8IFVybFRyZWU+IHtcbiAgICBpZiAoUGxhY2VDb21wb25lbnQuaXNQbGFjZUNvbXBvbmVudENvbnN0cnVjdG9yKGFjdGl2YXRlZFJvdXRlLmNvbXBvbmVudCkpIHtcbiAgICAgIGNvbnN0IHBsYWNlRGVmaW5pdGlvbiA9IFBsYWNlQ29tcG9uZW50LmdldERlZmluaXRpb24oYWN0aXZhdGVkUm91dGUuY29tcG9uZW50KTtcbiAgICAgIC8vIFBhcnNlIG91ciByb3V0ZSBwYXJhbXMuXG4gICAgICBjb25zdCBwYXJhbXMgPSBuZXcgRW50ZXJQbGFjZUd1YXJkLkNvbnNvbGlkYXRlZFBhcmFtZXRlck1hcChhY3RpdmF0ZWRSb3V0ZS5wYXJhbU1hcCwgYWN0aXZhdGVkUm91dGUudXJsKTtcbiAgICAgIGNvbnN0IHBhcnNlZFBhcmFtcyA9IHBsYWNlRGVmaW5pdGlvbi5wYXJzZVJvdXRlUGFyYW1zKHBhcmFtcyk7XG5cbiAgICAgIGNvbnN0IGluaXRpYWxWaXNpdCA9IHRoaXMucGxhY2VSb3V0ZXIubmF2aWdhdGlvblNlc3Npb24uZ2V0VmlzaXRGb3IocGxhY2VEZWZpbml0aW9uKSB8fCBuZXcgVmlzaXQocGxhY2VEZWZpbml0aW9uLCBwYXJzZWRQYXJhbXMpO1xuICAgICAgY29uc3Qgc2FuaXRpc2VyID0gbmV3IFZpc2l0U2FuaXRpc2VyKGFjdGl2YXRlZFJvdXRlLCB0aGlzLnJvdXRlciwgdGhpcy5wbGFjZUhpc3RvcnksIHRoaXMuaW5qZWN0b3IpO1xuICAgICAgY29uc3Qgc2FuaXRpc2VkVmlzaXQgPSBhd2FpdCBzYW5pdGlzZXIuc2FuaXRpc2UoaW5pdGlhbFZpc2l0Lm1lcmdlUm91dGVQYXJhbWV0ZXJzKHBhcnNlZFBhcmFtcykpO1xuXG4gICAgICAvLyBTYXZlIHRoZSB2aXNpdCB3aXRoIGFueSB1cGRhdGVkIHBhcmFtZXRlcnMuICBXZSBuZWVkIHRvIHNhdmUgaXQgc28gd2UgcmVtZW1iZXIgYW55IG5vbiByb3V0ZSBwYXJhbWV0ZXJzXG4gICAgICB0aGlzLnBsYWNlUm91dGVyLm5hdmlnYXRpb25TZXNzaW9uLnN0b3JlVmlzaXQoc2FuaXRpc2VkVmlzaXQpO1xuICAgICAgaWYgKGluaXRpYWxWaXNpdC5oYXNSb3V0aW5nQ2hhbmdlZEZyb20oc2FuaXRpc2VkVmlzaXQpKSB7XG4gICAgICAgIGNvbnN0IHJvdXRlclN0YXRlVXJsVHJlZSA9IHRoaXMudXJsU2VyaWFsaXplci5wYXJzZShzdGF0ZS51cmwpO1xuXG4gICAgICAgIC8vIFJlZ2VuZXJhdGUgdGhlIHVybFxuICAgICAgICBjb25zdCB7IGNvbW1hbmRzIH0gPSB0aGlzLmNyZWF0ZVJlZGlyZWN0Q29tbWFuZHMoc2FuaXRpc2VkVmlzaXQsIFsuLi5yb3V0ZXJTdGF0ZVVybFRyZWUucm9vdC5jaGlsZHJlbi5wcmltYXJ5LnNlZ21lbnRzXSk7XG5cbiAgICAgICAgY29uc29sZS5sb2coJyMjIyMjIFBsYWNlIEd1YXJkIFJlZGlyZWN0JywgY29tbWFuZHMpO1xuICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShjb21tYW5kcywge1xuICAgICAgICAgIHJlcGxhY2VVcmw6IHRydWUsXG4gICAgICAgICAgc2tpcExvY2F0aW9uQ2hhbmdlOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbGFuZy5pbGxlZ2FsU3RhdGUoYGV4cGVjdGVkIGNvbXBvbmVudCB0byBiZSBhbiBpbnN0YW5jZSBvZiBQbGFjZUNvbXBvbmVudCwgZ290ICR7YWN0aXZhdGVkUm91dGUuY29tcG9uZW50fWApO1xuICAgIH1cbiAgfVxuXG5cbiAgcHJpdmF0ZSBjcmVhdGVSZWRpcmVjdENvbW1hbmRzKHNhbml0aXNlZFZpc2l0LCBwYXRoKSB7XG4gICAgLy8gVWdseSwgYnV0IGl0IHdvcmtzIGZvciBub3cuXG4gICAgY29uc3QgbmV3U2VnbWVudHMgPSBzYW5pdGlzZWRWaXNpdC5nZXRVcmxTZWdtZW50cygpO1xuICAgIGNvbnN0IHJlcGxhY2VBdCA9IHBhdGguZmluZEluZGV4KHNlZ21lbnQgPT4gc2VnbWVudC5wYXRoID09PSBuZXdTZWdtZW50c1swXS5wYXRoKTtcbiAgICBjb25zdCBuZXdQYXRoID0gWy4uLnBhdGhdO1xuICAgIG5ld1BhdGguc3BsaWNlKHJlcGxhY2VBdCwgbmV3U2VnbWVudHMubGVuZ3RoLCAuLi5uZXdTZWdtZW50cyk7IC8vIGRvIG5vdCB1c2UgdGhlIHJldHVybiB2YWx1ZSwgaXQncyB0aGUgaXRlbXMgdGhhdCB3ZXJlIHJlbW92ZWQhXG5cbiAgICBjb25zdCBjb21tYW5kcyA9IFtdO1xuICAgIG5ld1BhdGguZm9yRWFjaChzID0+IHtcbiAgICAgIGNvbW1hbmRzLnB1c2gocy5wYXRoKTtcbiAgICAgIGlmIChzLnBhcmFtZXRlck1hcC5rZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29tbWFuZHMucHVzaChzLnBhcmFtZXRlcnMpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB7IG5ld1BhdGgsIGNvbW1hbmRzIH07XG4gIH1cbn1cblxuZXhwb3J0IG5hbWVzcGFjZSBFbnRlclBsYWNlR3VhcmQge1xuICAvKipcbiAgICogVGhpcyBhIHdvcmsgYXJvdW5kIGZvciB0aGUgZmFjdCB0aGF0IGFuIGFjdGl2YXRlZCByb3V0ZSB3aXRoIG11bHRpcGxlIHNlZ21lbnRzIGRvZXNuJ3RcbiAgICogaW5jbHVkZSB0aGUgc2VnbWVudCBwYXJhbXMgaW4gdGhlIHBhcmFtTWFwIGFzIHdlbGwgYXMgZWFjaCBzZWdtZW50IHJldHVybnMgYW4gZW1wdHlcbiAgICogcGFyYW0gbWFwIGV2ZW4gd2hlbiBgcGFyYW1ldGVyYHMgaGFzIGNvbnRlbnQuXG4gICAqL1xuICBleHBvcnQgY2xhc3MgQ29uc29saWRhdGVkUGFyYW1ldGVyTWFwIGltcGxlbWVudHMgUGFyYW1NYXAge1xuXG4gICAgcHJpdmF0ZSBwYXJhbU1hcHM6IFBhcmFtTWFwW107XG5cbiAgICBjb25zdHJ1Y3RvcihwYXJhbU1hcDogUGFyYW1NYXAsIHVybFNlZ21lbnRzOiBVcmxTZWdtZW50W10pIHtcbiAgICAgIHRoaXMucGFyYW1NYXBzID0gW3BhcmFtTWFwXS5jb25jYXQoXG4gICAgICAgICh1cmxTZWdtZW50cyB8fCBbXSkubWFwKHMgPT4gbmV3IFBhcmFtTWFwQWRhcHRlcihzLnBhcmFtZXRlcnMpKVxuICAgICAgKS5maWx0ZXIobSA9PiAhIW0pOyAvLyB0aGUgYWN0aXZhdGVkIHJvdXRlIHBhcmFtIG1hcCBjYW4gYmUgbnVsbFxuICAgIH1cblxuICAgIGdldChuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgIGNvbnN0IHBhcmFtTWFwID0gdGhpcy5wYXJhbU1hcHMuZmluZChtID0+IG0uaGFzKG5hbWUpKTtcbiAgICAgIHJldHVybiBwYXJhbU1hcC5nZXQobmFtZSk7XG4gICAgfVxuXG4gICAgZ2V0QWxsKG5hbWU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICAgIGNvbnN0IHBhcmFtTWFwID0gdGhpcy5wYXJhbU1hcHMuZmluZChtID0+IG0uaGFzKG5hbWUpKTtcbiAgICAgIHJldHVybiBwYXJhbU1hcC5nZXRBbGwobmFtZSk7XG4gICAgfVxuXG4gICAgaGFzKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuICEhdGhpcy5wYXJhbU1hcHMuZmluZChtID0+IG0uaGFzKG5hbWUpKTtcbiAgICB9XG5cbiAgICBATWVtb2l6ZSgpXG4gICAgZ2V0IGtleXMoKTogc3RyaW5nW10ge1xuICAgICAgcmV0dXJuIHRoaXMucGFyYW1NYXBzLnJlZHVjZSgocmVzdWx0LCBwYXJhbXMpID0+IHJlc3VsdC5jb25jYXQocGFyYW1zLmtleXMpLCBbXSk7XG4gICAgfVxuICB9XG5cbiAgY2xhc3MgUGFyYW1NYXBBZGFwdGVyIGltcGxlbWVudHMgUGFyYW1NYXAge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcGFyYW1zOiB7IFtwOiBzdHJpbmddOiBzdHJpbmcgfSkge1xuICAgIH1cblxuICAgIGdldChuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgIHJldHVybiB0aGlzLnBhcmFtc1tuYW1lXTtcbiAgICB9XG5cbiAgICBnZXRBbGwobmFtZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldChuYW1lKTtcbiAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcbiAgICB9XG5cbiAgICBoYXMobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gdGhpcy5rZXlzLmluY2x1ZGVzKG5hbWUpO1xuICAgIH1cblxuICAgIGdldCBrZXlzKCk6IHN0cmluZ1tdIHtcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLnBhcmFtcyk7XG4gICAgfVxuXG4gIH1cbn1cbiJdfQ==
@@ -5,8 +5,10 @@
5
5
  import * as tslib_1 from "tslib";
6
6
  import { Location } from '@angular/common';
7
7
  import { Injectable, Injector } from '@angular/core';
8
- import { Router } from '@angular/router';
8
+ import { Router, RouterStateSnapshot } from '@angular/router';
9
+ import { Trace } from '@coolon/pectin';
9
10
  import { InteractionContext } from '../../../interaction/interaction-context';
11
+ import { PlaceDefinition } from '../../place-definition';
10
12
  import { PlaceRouter } from '../../place-router';
11
13
  import * as i0 from "@angular/core";
12
14
  import * as i1 from "@angular/router";
@@ -24,17 +26,74 @@ var LeavePlaceGuard = /** @class */ (function () {
24
26
  /**
25
27
  * @private
26
28
  * @param {?} nextState
27
- * @param {?} placeDefinitionPath
29
+ * @param {?} placeDefinition
28
30
  * @return {?}
29
31
  */
30
32
  LeavePlaceGuard.prototype.isLeavingTheCurrentPlace = /**
31
33
  * @private
32
34
  * @param {?} nextState
33
- * @param {?} placeDefinitionPath
35
+ * @param {?} placeDefinition
34
36
  * @return {?}
35
37
  */
36
- function (nextState, placeDefinitionPath) {
38
+ function (nextState, placeDefinition) {
37
39
  // TODO: this will break with child routes... need to examine the router states properly.
40
+ // console.log('canDeactivate', {
41
+ // staticPath: placeDefinitionPath,
42
+ // currentStateUrl: currentState.url,
43
+ // nextStateUrl: nextState.url
44
+ // // alreadyDeclined: this._alreadyAccepted
45
+ // });
46
+ // Example of the above when navigating to a different child route.
47
+ // canDeactivate {staticPath: "/hero-details",
48
+ // currentStateUrl: "/route-parameters/-1;dv=A;dl=a,b,c;rdv=A;rdl=a,b,c/hero-details",
49
+ // nextStateUrl: "/route-parameters/-1;dv=A;dl=a,b,c;rdv=A;rdl=a,b,c/hero-stats"
50
+ // }
51
+ // TODO: this will break with child routes... need to examine the router states properly.
52
+ // console.log('canDeactivate', {
53
+ // staticPath: placeDefinitionPath,
54
+ // currentStateUrl: currentState.url,
55
+ // nextStateUrl: nextState.url
56
+ // // alreadyDeclined: this._alreadyAccepted
57
+ // });
58
+ // Example of the above when navigating to a different child route.
59
+ // canDeactivate {staticPath: "/hero-details",
60
+ // currentStateUrl: "/route-parameters/-1;dv=A;dl=a,b,c;rdv=A;rdl=a,b,c/hero-details",
61
+ // nextStateUrl: "/route-parameters/-1;dv=A;dl=a,b,c;rdv=A;rdl=a,b,c/hero-stats"
62
+ // }
63
+ // Example clicking on router tab of the parent component (de-activates the parent due to route param changes)
64
+ // canDeactivate {
65
+ // staticPath: "/hero-stats",
66
+ // currentStateUrl: "/route-parameters/-1;dv=A;dl=a,b,c;rdv=A;rdl=a,b,c/hero-stats",
67
+ // nextStateUrl: "/route-parameters/"
68
+ // }
69
+ // canDeactivate {
70
+ // staticPath: "/route-parameters",
71
+ // currentStateUrl: "/route-parameters/-1;dv=A;dl=a,b,c;rdv=A;rdl=a,b,c/hero-stats",
72
+ // nextStateUrl: "/route-parameters/"
73
+ // }
74
+ // logger.class.js:54 ParameterSnapshot.sanitise -> {idModel: -1, pv: undefined, pl: Array(0), dv: undefined, dl: Array(0), …}
75
+ // parameter-snapshot.ts:20 {name: "idModel", mine: -1, theirs: null}
76
+ // place-router.ts:28 redirect path (3) ["route-parameters", "-1", {…}]
77
+ // canDeactivate {
78
+ // staticPath: "/hero-stats",
79
+ // currentStateUrl: "/route-parameters/-1;dv=A;dl=a,b,c;rdv=A;rdl=a,b,c/hero-stats",
80
+ // nextStateUrl: "/route-parameters/-1"
81
+ // }
82
+ // canDeactivate {
83
+ // staticPath: "/route-parameters",
84
+ // currentStateUrl: "/route-parameters/-1;dv=A;dl=a,b,c;rdv=A;rdl=a,b,c/hero-stats",
85
+ // nextStateUrl: "/route-parameters/-1"
86
+ // }
87
+ // logger.class.js:54 ParameterSnapshot.sanitise -> {idModel: -1, pv: undefined, pl: Array(0), dv: "A", dl: Array(3), …}
88
+ // parameter-snapshot.ts:20 {name: "dv", mine: "A", theirs: undefined}
89
+ // place-router.ts:28 redirect path (3) ["route-parameters", "-1", {…}]
90
+ // canDeactivate {
91
+ // staticPath: "/hero-stats",
92
+ // currentStateUrl: "/route-parameters/-1;dv=A;dl=a,b,c;rdv=A;rdl=a,b,c/hero-stats",
93
+ // nextStateUrl: "/route-parameters/-1;dv=A;dl=a,b,c;rdv=A;rdl=a,b,c"
94
+ // }
95
+ /** @type {?} */
96
+ var placeDefinitionPath = "/" + placeDefinition.path;
38
97
  return !nextState.url.startsWith(placeDefinitionPath);
39
98
  };
40
99
  /**
@@ -53,11 +112,10 @@ var LeavePlaceGuard = /** @class */ (function () {
53
112
  */
54
113
  function (component, currentRoute, currentState, nextState) {
55
114
  return tslib_1.__awaiter(this, void 0, void 0, function () {
56
- var placeDefinitionPath, self_1, canLeave;
115
+ var self_1, canLeave;
57
116
  return tslib_1.__generator(this, function (_a) {
58
117
  switch (_a.label) {
59
118
  case 0:
60
- placeDefinitionPath = "/" + component.placeDefinition.path;
61
119
  if (!this.placeRouter.navigationSession.alreadyAccepted(component)) return [3 /*break*/, 1];
62
120
  // We'll get called multiple times if there's any parameter sanitisation so
63
121
  // we always return true if we accepted on a previous cycle of the current
@@ -66,14 +124,14 @@ var LeavePlaceGuard = /** @class */ (function () {
66
124
  case 1:
67
125
  self_1 = this;
68
126
  canLeave = true;
69
- if (!this.isLeavingTheCurrentPlace(nextState, placeDefinitionPath)) return [3 /*break*/, 4];
127
+ if (!this.isLeavingTheCurrentPlace(nextState, component.placeDefinition)) return [3 /*break*/, 4];
70
128
  // we check the interaction first, so that components that don't need to check if they're in an
71
129
  // interaction during the canDeactivate cycle.
72
130
  // TODO: Add tests: show dialog -> hit back -> same route
73
- if (this.interactionContext.isActive()) {
131
+ if (component.interactionContext && component.interactionContext.isActive()) {
74
132
  canLeave = false;
75
- console.log('cancelling', { activity: this.interactionContext.currentActivity });
76
- this.interactionContext.currentActivity.cancel(null);
133
+ console.log('cancelling', { activity: component.interactionContext.currentActivity });
134
+ component.interactionContext.currentActivity.cancel(null);
77
135
  }
78
136
  if (!canLeave) return [3 /*break*/, 3];
79
137
  return [4 /*yield*/, component.canDeactivate()];
@@ -125,6 +183,12 @@ var LeavePlaceGuard = /** @class */ (function () {
125
183
  { type: Location }
126
184
  ]; };
127
185
  /** @nocollapse */ LeavePlaceGuard.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function LeavePlaceGuard_Factory() { return new LeavePlaceGuard(i0.ɵɵinject(i1.Router), i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(i2.PlaceRouter), i0.ɵɵinject(i3.InteractionContext), i0.ɵɵinject(i4.Location)); }, token: LeavePlaceGuard, providedIn: "root" });
186
+ tslib_1.__decorate([
187
+ Trace(),
188
+ tslib_1.__metadata("design:type", Function),
189
+ tslib_1.__metadata("design:paramtypes", [RouterStateSnapshot, PlaceDefinition]),
190
+ tslib_1.__metadata("design:returntype", void 0)
191
+ ], LeavePlaceGuard.prototype, "isLeavingTheCurrentPlace", null);
128
192
  return LeavePlaceGuard;
129
193
  }());
130
194
  export { LeavePlaceGuard };
@@ -149,4 +213,4 @@ if (false) {
149
213
  /** @type {?} */
150
214
  LeavePlaceGuard.prototype.angularLocation;
151
215
  }
152
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVhdmUtcGxhY2UuZ3VhcmQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvcGxhY2Uvcm91dGUvZ3VhcmRzL2xlYXZlLXBsYWNlLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBeUMsTUFBTSxFQUF1QixNQUFNLGlCQUFpQixDQUFDO0FBQ3JHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7O0FBRWpEO0lBS0UseUJBQW9CLE1BQWMsRUFDZCxRQUFrQixFQUNsQixXQUF3QixFQUN2QixrQkFBc0MsRUFBVyxlQUF5QjtRQUgzRSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN2Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQVcsb0JBQWUsR0FBZixlQUFlLENBQVU7SUFDL0YsQ0FBQzs7Ozs7OztJQUVPLGtEQUF3Qjs7Ozs7O0lBQWhDLFVBQWlDLFNBQThCLEVBQUUsbUJBQTJCO1FBQzFGLHlGQUF5RjtRQUN6RixPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUN4RCxDQUFDOzs7Ozs7OztJQUVLLHVDQUFhOzs7Ozs7O0lBQW5CLFVBQW9CLFNBQXlCLEVBQUUsWUFBb0MsRUFBRSxZQUFpQyxFQUFFLFNBQStCOzs7Ozs7d0JBQy9JLG1CQUFtQixHQUFHLE1BQUksU0FBUyxDQUFDLGVBQWUsQ0FBQyxJQUFNOzZCQWdENUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLEVBQTdELHdCQUE2RDt3QkFDL0QsMkVBQTJFO3dCQUMzRSwwRUFBMEU7d0JBQzFFLHNCQUFzQjt3QkFDdEIsc0JBQU8sSUFBSSxFQUFDOzt3QkFFTixTQUFPLElBQUk7d0JBQ2IsUUFBUSxHQUFHLElBQUk7NkJBRWYsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFNBQVMsRUFBRSxtQkFBbUIsQ0FBQyxFQUE3RCx3QkFBNkQ7d0JBQy9ELCtGQUErRjt3QkFDL0YsOENBQThDO3dCQUM5Qyx5REFBeUQ7d0JBQ3pELElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxFQUFFOzRCQUN0QyxRQUFRLEdBQUcsS0FBSyxDQUFDOzRCQUNqQixPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQzs0QkFDakYsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7eUJBQ3REOzZCQUtHLFFBQVEsRUFBUix3QkFBUTt3QkFFQyxxQkFBTSxTQUFTLENBQUMsYUFBYSxFQUFFLEVBQUE7O3dCQUQxQyxzSEFBc0g7d0JBQ3RILFFBQVEsR0FBRyxTQUErQixDQUFDOzs7O3dCQVU3QyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsRUFBRTs0QkFDdEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUM7NEJBQ2pGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDOzRCQUNyRCxRQUFRLEdBQUcsS0FBSyxDQUFDO3lCQUNsQjs2QkFBTTs0QkFDTCxRQUFRLEdBQUcsSUFBSSxDQUFDO3lCQUNqQjs7O3dCQUdILElBQUksUUFBUSxFQUFFOzRCQUNaLDJFQUEyRTs0QkFDM0UsaUZBQWlGOzRCQUNqRixNQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDO3lCQUNwRTs2QkFBTTs0QkFDTCx5RUFBeUU7NEJBQ3pFLDZFQUE2RTs0QkFDN0UsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLFVBQVUsRUFBRTtnQ0FDakQsT0FBTyxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO2dDQUN6QyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDLENBQUM7NkJBQy9FO3lCQUNGO3dCQUVELHNCQUFPLFFBQVEsRUFBQzs7OztLQUVuQjs7Z0JBM0hGLFVBQVUsU0FBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7Ozs7Z0JBUCtDLE1BQU07Z0JBRGpDLFFBQVE7Z0JBSXBCLFdBQVc7Z0JBRlgsa0JBQWtCO2dCQUhsQixRQUFROzs7MEJBQWpCO0NBbUlDLEFBNUhELElBNEhDO1NBekhZLGVBQWU7Ozs7OztJQUVkLGlDQUFzQjs7Ozs7SUFDdEIsbUNBQTBCOzs7OztJQUMxQixzQ0FBZ0M7O0lBQ2hDLDZDQUErQzs7SUFBRSwwQ0FBa0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgQ2FuRGVhY3RpdmF0ZSwgUm91dGVyLCBSb3V0ZXJTdGF0ZVNuYXBzaG90IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEludGVyYWN0aW9uQ29udGV4dCB9IGZyb20gJy4uLy4uLy4uL2ludGVyYWN0aW9uL2ludGVyYWN0aW9uLWNvbnRleHQnO1xuaW1wb3J0IHsgUGxhY2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9wbGFjZS1jb21wb25lbnQnO1xuaW1wb3J0IHsgUGxhY2VSb3V0ZXIgfSBmcm9tICcuLi8uLi9wbGFjZS1yb3V0ZXInO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBMZWF2ZVBsYWNlR3VhcmQgaW1wbGVtZW50cyBDYW5EZWFjdGl2YXRlPFBsYWNlQ29tcG9uZW50PiB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgICAgICAgIHByaXZhdGUgcGxhY2VSb3V0ZXI6IFBsYWNlUm91dGVyLFxuICAgICAgICAgICAgICByZWFkb25seSBpbnRlcmFjdGlvbkNvbnRleHQ6IEludGVyYWN0aW9uQ29udGV4dCwgcmVhZG9ubHkgYW5ndWxhckxvY2F0aW9uOiBMb2NhdGlvbikge1xuICB9XG5cbiAgcHJpdmF0ZSBpc0xlYXZpbmdUaGVDdXJyZW50UGxhY2UobmV4dFN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBwbGFjZURlZmluaXRpb25QYXRoOiBzdHJpbmcpIHtcbiAgICAvLyBUT0RPOiB0aGlzIHdpbGwgYnJlYWsgd2l0aCBjaGlsZCByb3V0ZXMuLi4gbmVlZCB0byBleGFtaW5lIHRoZSByb3V0ZXIgc3RhdGVzIHByb3Blcmx5LlxuICAgIHJldHVybiAhbmV4dFN0YXRlLnVybC5zdGFydHNXaXRoKHBsYWNlRGVmaW5pdGlvblBhdGgpO1xuICB9XG5cbiAgYXN5bmMgY2FuRGVhY3RpdmF0ZShjb21wb25lbnQ6IFBsYWNlQ29tcG9uZW50LCBjdXJyZW50Um91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIGN1cnJlbnRTdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCwgbmV4dFN0YXRlPzogUm91dGVyU3RhdGVTbmFwc2hvdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHBsYWNlRGVmaW5pdGlvblBhdGggPSBgLyR7Y29tcG9uZW50LnBsYWNlRGVmaW5pdGlvbi5wYXRofWA7XG4gICAgLy8gY29uc29sZS5sb2coJ2NhbkRlYWN0aXZhdGUnLCB7XG4gICAgLy8gICBzdGF0aWNQYXRoOiBwbGFjZURlZmluaXRpb25QYXRoLFxuICAgIC8vICAgY3VycmVudFN0YXRlVXJsOiBjdXJyZW50U3RhdGUudXJsLFxuICAgIC8vICAgbmV4dFN0YXRlVXJsOiBuZXh0U3RhdGUudXJsXG4gICAgLy8gICAvLyBhbHJlYWR5RGVjbGluZWQ6IHRoaXMuX2FscmVhZHlBY2NlcHRlZFxuICAgIC8vIH0pO1xuICAgIC8vIEV4YW1wbGUgb2YgdGhlIGFib3ZlIHdoZW4gbmF2aWdhdGluZyB0byBhIGRpZmZlcmVudCBjaGlsZCByb3V0ZS5cbiAgICAvLyBjYW5EZWFjdGl2YXRlIHtzdGF0aWNQYXRoOiBcIi9oZXJvLWRldGFpbHNcIixcbiAgICAvLyAgICBjdXJyZW50U3RhdGVVcmw6IFwiL3JvdXRlLXBhcmFtZXRlcnMvLTE7ZHY9QTtkbD1hLGIsYztyZHY9QTtyZGw9YSxiLGMvaGVyby1kZXRhaWxzXCIsXG4gICAgLy8gICAgbmV4dFN0YXRlVXJsOiBcIi9yb3V0ZS1wYXJhbWV0ZXJzLy0xO2R2PUE7ZGw9YSxiLGM7cmR2PUE7cmRsPWEsYixjL2hlcm8tc3RhdHNcIlxuICAgIC8vIH1cblxuICAgIC8vIEV4YW1wbGUgY2xpY2tpbmcgb24gcm91dGVyIHRhYiBvZiB0aGUgcGFyZW50IGNvbXBvbmVudCAoZGUtYWN0aXZhdGVzIHRoZSBwYXJlbnQgZHVlIHRvIHJvdXRlIHBhcmFtIGNoYW5nZXMpXG4gICAgLy8gY2FuRGVhY3RpdmF0ZSB7XG4gICAgLy8gICAgc3RhdGljUGF0aDogXCIvaGVyby1zdGF0c1wiLFxuICAgIC8vICAgIGN1cnJlbnRTdGF0ZVVybDogXCIvcm91dGUtcGFyYW1ldGVycy8tMTtkdj1BO2RsPWEsYixjO3Jkdj1BO3JkbD1hLGIsYy9oZXJvLXN0YXRzXCIsXG4gICAgLy8gICAgbmV4dFN0YXRlVXJsOiBcIi9yb3V0ZS1wYXJhbWV0ZXJzL1wiXG4gICAgLy8gfVxuICAgIC8vIGNhbkRlYWN0aXZhdGUge1xuICAgIC8vICAgIHN0YXRpY1BhdGg6IFwiL3JvdXRlLXBhcmFtZXRlcnNcIixcbiAgICAvLyAgICBjdXJyZW50U3RhdGVVcmw6IFwiL3JvdXRlLXBhcmFtZXRlcnMvLTE7ZHY9QTtkbD1hLGIsYztyZHY9QTtyZGw9YSxiLGMvaGVyby1zdGF0c1wiLFxuICAgIC8vICAgIG5leHRTdGF0ZVVybDogXCIvcm91dGUtcGFyYW1ldGVycy9cIlxuICAgIC8vIH1cbiAgICAvLyBsb2dnZXIuY2xhc3MuanM6NTQgUGFyYW1ldGVyU25hcHNob3Quc2FuaXRpc2UgLT4ge2lkTW9kZWw6IC0xLCBwdjogdW5kZWZpbmVkLCBwbDogQXJyYXkoMCksIGR2OiB1bmRlZmluZWQsIGRsOiBBcnJheSgwKSzCoOKApn1cbiAgICAvLyBwYXJhbWV0ZXItc25hcHNob3QudHM6MjAge25hbWU6IFwiaWRNb2RlbFwiLCBtaW5lOiAtMSwgdGhlaXJzOiBudWxsfVxuICAgIC8vIHBsYWNlLXJvdXRlci50czoyOCByZWRpcmVjdCBwYXRoICgzKcKgW1wicm91dGUtcGFyYW1ldGVyc1wiLCBcIi0xXCIsIHvigKZ9XVxuICAgIC8vIGNhbkRlYWN0aXZhdGUge1xuICAgIC8vICAgIHN0YXRpY1BhdGg6IFwiL2hlcm8tc3RhdHNcIixcbiAgICAvLyAgICBjdXJyZW50U3RhdGVVcmw6IFwiL3JvdXRlLXBhcmFtZXRlcnMvLTE7ZHY9QTtkbD1hLGIsYztyZHY9QTtyZGw9YSxiLGMvaGVyby1zdGF0c1wiLFxuICAgIC8vICAgIG5leHRTdGF0ZVVybDogXCIvcm91dGUtcGFyYW1ldGVycy8tMVwiXG4gICAgLy8gfVxuICAgIC8vIGNhbkRlYWN0aXZhdGUge1xuICAgIC8vICAgIHN0YXRpY1BhdGg6IFwiL3JvdXRlLXBhcmFtZXRlcnNcIixcbiAgICAvLyAgICBjdXJyZW50U3RhdGVVcmw6IFwiL3JvdXRlLXBhcmFtZXRlcnMvLTE7ZHY9QTtkbD1hLGIsYztyZHY9QTtyZGw9YSxiLGMvaGVyby1zdGF0c1wiLFxuICAgIC8vICAgIG5leHRTdGF0ZVVybDogXCIvcm91dGUtcGFyYW1ldGVycy8tMVwiXG4gICAgLy8gfVxuICAgIC8vIGxvZ2dlci5jbGFzcy5qczo1NCBQYXJhbWV0ZXJTbmFwc2hvdC5zYW5pdGlzZSAtPiB7aWRNb2RlbDogLTEsIHB2OiB1bmRlZmluZWQsIHBsOiBBcnJheSgwKSwgZHY6IFwiQVwiLCBkbDogQXJyYXkoMykswqDigKZ9XG4gICAgLy8gcGFyYW1ldGVyLXNuYXBzaG90LnRzOjIwIHtuYW1lOiBcImR2XCIsIG1pbmU6IFwiQVwiLCB0aGVpcnM6IHVuZGVmaW5lZH1cbiAgICAvLyBwbGFjZS1yb3V0ZXIudHM6MjggcmVkaXJlY3QgcGF0aCAoMynCoFtcInJvdXRlLXBhcmFtZXRlcnNcIiwgXCItMVwiLCB74oCmfV1cbiAgICAvLyBjYW5EZWFjdGl2YXRlIHtcbiAgICAvLyAgICBzdGF0aWNQYXRoOiBcIi9oZXJvLXN0YXRzXCIsXG4gICAgLy8gICAgY3VycmVudFN0YXRlVXJsOiBcIi9yb3V0ZS1wYXJhbWV0ZXJzLy0xO2R2PUE7ZGw9YSxiLGM7cmR2PUE7cmRsPWEsYixjL2hlcm8tc3RhdHNcIixcbiAgICAvLyAgICBuZXh0U3RhdGVVcmw6IFwiL3JvdXRlLXBhcmFtZXRlcnMvLTE7ZHY9QTtkbD1hLGIsYztyZHY9QTtyZGw9YSxiLGNcIlxuICAgIC8vIH1cblxuXG4gICAgLy8gVE9ETzogQWRkIHRlc3RzXG4gICAgaWYgKHRoaXMucGxhY2VSb3V0ZXIubmF2aWdhdGlvblNlc3Npb24uYWxyZWFkeUFjY2VwdGVkKGNvbXBvbmVudCkpIHtcbiAgICAgIC8vIFdlJ2xsIGdldCBjYWxsZWQgbXVsdGlwbGUgdGltZXMgaWYgdGhlcmUncyBhbnkgcGFyYW1ldGVyIHNhbml0aXNhdGlvbiBzb1xuICAgICAgLy8gd2UgYWx3YXlzIHJldHVybiB0cnVlIGlmIHdlIGFjY2VwdGVkIG9uIGEgcHJldmlvdXMgY3ljbGUgb2YgdGhlIGN1cnJlbnRcbiAgICAgIC8vIG5hdmlnYXRpb24gc2Vzc2lvbi5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgIGxldCBjYW5MZWF2ZSA9IHRydWU7XG5cbiAgICAgIGlmICh0aGlzLmlzTGVhdmluZ1RoZUN1cnJlbnRQbGFjZShuZXh0U3RhdGUsIHBsYWNlRGVmaW5pdGlvblBhdGgpKSB7XG4gICAgICAgIC8vIHdlIGNoZWNrIHRoZSBpbnRlcmFjdGlvbiBmaXJzdCwgc28gdGhhdCBjb21wb25lbnRzIHRoYXQgZG9uJ3QgbmVlZCB0byBjaGVjayBpZiB0aGV5J3JlIGluIGFuXG4gICAgICAgIC8vIGludGVyYWN0aW9uIGR1cmluZyB0aGUgY2FuRGVhY3RpdmF0ZSBjeWNsZS5cbiAgICAgICAgLy8gVE9ETzogQWRkIHRlc3RzOiBzaG93IGRpYWxvZyAtPiBoaXQgYmFjayAtPiBzYW1lIHJvdXRlXG4gICAgICAgIGlmICh0aGlzLmludGVyYWN0aW9uQ29udGV4dC5pc0FjdGl2ZSgpKSB7XG4gICAgICAgICAgY2FuTGVhdmUgPSBmYWxzZTtcbiAgICAgICAgICBjb25zb2xlLmxvZygnY2FuY2VsbGluZycsIHsgYWN0aXZpdHk6IHRoaXMuaW50ZXJhY3Rpb25Db250ZXh0LmN1cnJlbnRBY3Rpdml0eSB9KTtcbiAgICAgICAgICB0aGlzLmludGVyYWN0aW9uQ29udGV4dC5jdXJyZW50QWN0aXZpdHkuY2FuY2VsKG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIC8vIE5vIGludGVyYWN0aW9uIGluIHByb2dyZXNzLCBzbyBhc2sgdGhlIGNvbXBvbmVudCAuXG4gICAgICAgIC8vIFRoaXMgbWF5IHN0YXJ0IGFuIGludGVyYWN0aW9uLCBoZW5jZSBjaGVja2luZyB0aGUgaW50ZXJhY3Rpb24gY29udGV4dCBhYm92ZS4gSS5lLiBpZiB0aGUgcGxhY2UgcG9wcyB1cCB0aGUgZGlhbG9nLCBhbmRcbiAgICAgICAgLy8gdGhlIHVzZXIgY2xpY2tzIGJhY2sgYWdhaW4sIHdlJ2xsIHJlLWVudGVyIGhlcmUgYW5kIGdvIGJhbmcgd2hlbiB0aGUgY29tcG9uZW50IHRyaWVzIHRvIG9wZW4gYW5vdGhlclxuICAgICAgICAvLyBkaWFsb2cuXG4gICAgICAgIGlmIChjYW5MZWF2ZSkge1xuICAgICAgICAgIC8vIFRPRE86IEFkZCB0ZXN0czogaGl0IGJhY2sgLT4gY29uZmlybSBsZWF2ZSBkaWFsb2cgLT4gaGl0IGJhY2sgLT4gY2xvc2UgZGlhbG9nIC0+ICBoaXQgYmFjayAtPiBjb25maXJtIGxlYXZlIGRpYWxvZy5cbiAgICAgICAgICBjYW5MZWF2ZSA9IGF3YWl0IGNvbXBvbmVudC5jYW5EZWFjdGl2YXRlKCk7XG4gICAgICAgIH1cblxuXG4gICAgICAgIC8vIFdlIGFsc28gYmxvY2sgYmFjayBidXR0b24gcGFyYW1ldGVyIGNoYW5nZXMgd2hpbGUgdGhlIGRpYWxvZyBpcyBvcGVuLlxuICAgICAgICAvLyBOT1RFOiBOb3cgdGhhdCBJJ20gY2F0Y2hpbmcgcGFyYW1ldGVyIGNoYW5nZXMgSSBjb3VsZCBwb3NzaWJseSByZXRyeSB1c2luZyBhIGZyYWdtZW50IG9yXG4gICAgICAgIC8vIHF1ZXJ5IHBhcmFtZXRlciB0byB0cmFjayB0aGUgZGlhbG9nIGJlaW5nIG9wZW4uICBQcmV2aW91c2x5IEkgd2FzIGp1c3QgY2hlY2tpbmcgdGhpcyBvblxuICAgICAgICAvLyBwYXRoIGNoYW5nZXMuLi4gaWYgdGhhdCB3b3JrZWQgaXQnZCBmaXggdGhlIGNhc2Ugd2hlcmUgdGhlIGJhY2sgYnV0dG9uIGJyZWFrcyB3aXRoIGFuIGFjdGl2aXR5XG4gICAgICAgIC8vIG9wZW4gb24gdGhlIGZpcnN0IHBhZ2U6IGh0dHBzOi8vY29vbG9uLmF0bGFzc2lhbi5uZXQvYnJvd3NlL0FVUC0zM1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMuaW50ZXJhY3Rpb25Db250ZXh0LmlzQWN0aXZlKCkpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnY2FuY2VsbGluZycsIHsgYWN0aXZpdHk6IHRoaXMuaW50ZXJhY3Rpb25Db250ZXh0LmN1cnJlbnRBY3Rpdml0eSB9KTtcbiAgICAgICAgICB0aGlzLmludGVyYWN0aW9uQ29udGV4dC5jdXJyZW50QWN0aXZpdHkuY2FuY2VsKG51bGwpO1xuICAgICAgICAgIGNhbkxlYXZlID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2FuTGVhdmUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChjYW5MZWF2ZSkge1xuICAgICAgICAvLyBXZSdsbCBnZXQgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGlmIHRoZXJlJ3MgYW55IHBhcmFtZXRlciBzYW5pdGlzYXRpb24gc29cbiAgICAgICAgLy8gd2UgcmVtZW1iZXIgdGhlIGFjY2VwdGFuY2UgZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUgY3VycmVudCBuYXZpZ2F0aW9uIHNlc3Npb24uXG4gICAgICAgIHNlbGYucGxhY2VSb3V0ZXIubmF2aWdhdGlvblNlc3Npb24ucmVtZW1iZXJBY2NlcHRhbmNlT2YoY29tcG9uZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEFuZ3VsYXIgZG9lc24ndCBwcmVzZXJ2ZSB0aGUgdXJsIHdoZW4gYSBndWFyZCBjYW5jZWxzIHRoZSBiYWNrIGJ1dHRvbi5cbiAgICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzEzNTg2I2lzc3VlY29tbWVudC00MzI3OTU3MjBcbiAgICAgICAgaWYgKHRoaXMucGxhY2VSb3V0ZXIubmF2aWdhdGlvblNlc3Npb24uaXNQb3BTdGF0ZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdjYW5jZWxsZWQgZHVyaW5nIHBvcHN0YXRlJyk7XG4gICAgICAgICAgdGhpcy5hbmd1bGFyTG9jYXRpb24uZ28odGhpcy5wbGFjZVJvdXRlci5uYXZpZ2F0aW9uU2Vzc2lvbi5wb3BTdGF0ZVJldHVyblVybCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNhbkxlYXZlO1xuICAgIH1cbiAgfVxufVxuIl19
216
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGVhdmUtcGxhY2UuZ3VhcmQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY29vbG9uL2FuZ3VsYXItdWktcG93ZXJ1cHMvIiwic291cmNlcyI6WyJsaWIvcGxhY2Uvcm91dGUvZ3VhcmRzL2xlYXZlLXBsYWNlLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBeUMsTUFBTSxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckcsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7OztBQUVqRDtJQUtFLHlCQUFvQixNQUFjLEVBQ2QsUUFBa0IsRUFDbEIsV0FBd0IsRUFDdkIsa0JBQXNDLEVBQ3RDLGVBQXlCO1FBSjFCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3ZCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsb0JBQWUsR0FBZixlQUFlLENBQVU7SUFDOUMsQ0FBQzs7Ozs7OztJQUdPLGtEQUF3Qjs7Ozs7O0lBQWhDLFVBQWlDLFNBQThCLEVBQUUsZUFBZ0M7UUFDL0YseUZBQXlGO1FBQ3pGLGlDQUFpQztRQUNqQyxxQ0FBcUM7UUFDckMsdUNBQXVDO1FBQ3ZDLGdDQUFnQztRQUNoQyw4Q0FBOEM7UUFDOUMsTUFBTTtRQUNOLG1FQUFtRTtRQUNuRSw4Q0FBOEM7UUFDOUMseUZB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Q0FBc0I7Ozs7O0lBQ3RCLG1DQUEwQjs7Ozs7SUFDMUIsc0NBQWdDOztJQUNoQyw2Q0FBK0M7O0lBQy9DLDBDQUFrQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5EZWFjdGl2YXRlLCBSb3V0ZXIsIFJvdXRlclN0YXRlU25hcHNob3QgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVHJhY2UgfSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgeyBJbnRlcmFjdGlvbkNvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmFjdGlvbi9pbnRlcmFjdGlvbi1jb250ZXh0JztcbmltcG9ydCB7IFBsYWNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcGxhY2UtY29tcG9uZW50JztcbmltcG9ydCB7IFBsYWNlRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL3BsYWNlLWRlZmluaXRpb24nO1xuaW1wb3J0IHsgUGxhY2VSb3V0ZXIgfSBmcm9tICcuLi8uLi9wbGFjZS1yb3V0ZXInO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBMZWF2ZVBsYWNlR3VhcmQgaW1wbGVtZW50cyBDYW5EZWFjdGl2YXRlPFBsYWNlQ29tcG9uZW50PiB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgICAgICAgIHByaXZhdGUgcGxhY2VSb3V0ZXI6IFBsYWNlUm91dGVyLFxuICAgICAgICAgICAgICByZWFkb25seSBpbnRlcmFjdGlvbkNvbnRleHQ6IEludGVyYWN0aW9uQ29udGV4dCxcbiAgICAgICAgICAgICAgcmVhZG9ubHkgYW5ndWxhckxvY2F0aW9uOiBMb2NhdGlvbikge1xuICB9XG5cbiAgQFRyYWNlKClcbiAgcHJpdmF0ZSBpc0xlYXZpbmdUaGVDdXJyZW50UGxhY2UobmV4dFN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBwbGFjZURlZmluaXRpb246IFBsYWNlRGVmaW5pdGlvbikge1xuICAgIC8vIFRPRE86IHRoaXMgd2lsbCBicmVhayB3aXRoIGNoaWxkIHJvdXRlcy4uLiBuZWVkIHRvIGV4YW1pbmUgdGhlIHJvdXRlciBzdGF0ZXMgcHJvcGVybHkuXG4gICAgLy8gY29uc29sZS5sb2coJ2NhbkRlYWN0aXZhdGUnLCB7XG4gICAgLy8gICBzdGF0aWNQYXRoOiBwbGFjZURlZmluaXRpb25QYXRoLFxuICAgIC8vICAgY3VycmVudFN0YXRlVXJsOiBjdXJyZW50U3RhdGUudXJsLFxuICAgIC8vICAgbmV4dFN0YXRlVXJsOiBuZXh0U3RhdGUudXJsXG4gICAgLy8gICAvLyBhbHJlYWR5RGVjbGluZWQ6IHRoaXMuX2FscmVhZHlBY2NlcHRlZFxuICAgIC8vIH0pO1xuICAgIC8vIEV4YW1wbGUgb2YgdGhlIGFib3ZlIHdoZW4gbmF2aWdhdGluZyB0byBhIGRpZmZlcmVudCBjaGlsZCByb3V0ZS5cbiAgICAvLyBjYW5EZWFjdGl2YXRlIHtzdGF0aWNQYXRoOiBcIi9oZXJvLWRldGFpbHNcIixcbiAgICAvLyAgICBjdXJyZW50U3RhdGVVcmw6IFwiL3JvdXRlLXBhcmFtZXRlcnMvLTE7ZHY9QTtkbD1hLGIsYztyZHY9QTtyZGw9YSxiLGMvaGVyby1kZXRhaWxzXCIsXG4gICAgLy8gICAgbmV4dFN0YXRlVXJsOiBcIi9yb3V0ZS1wYXJhbWV0ZXJzLy0xO2R2PUE7ZGw9YSxiLGM7cmR2PUE7cmRsPWEsYixjL2hlcm8tc3RhdHNcIlxuICAgIC8vIH1cblxuICAgIC8vIEV4YW1wbGUgY2xpY2tpbmcgb24gcm91dGVyIHRhYiBvZiB0aGUgcGFyZW50IGNvbXBvbmVudCAoZGUtYWN0aXZhdGVzIHRoZSBwYXJlbnQgZHVlIHRvIHJvdXRlIHBhcmFtIGNoYW5nZXMpXG4gICAgLy8gY2FuRGVhY3RpdmF0ZSB7XG4gICAgLy8gICAgc3RhdGljUGF0aDogXCIvaGVyby1zdGF0c1wiLFxuICAgIC8vICAgIGN1cnJlbnRTdGF0ZVVybDogXCIvcm91dGUtcGFyYW1ldGVycy8tMTtkdj1BO2RsPWEsYixjO3Jkdj1BO3JkbD1hLGIsYy9oZXJvLXN0YXRzXCIsXG4gICAgLy8gICAgbmV4dFN0YXRlVXJsOiBcIi9yb3V0ZS1wYXJhbWV0ZXJzL1wiXG4gICAgLy8gfVxuICAgIC8vIGNhbkRlYWN0aXZhdGUge1xuICAgIC8vICAgIHN0YXRpY1BhdGg6IFwiL3JvdXRlLXBhcmFtZXRlcnNcIixcbiAgICAvLyAgICBjdXJyZW50U3RhdGVVcmw6IFwiL3JvdXRlLXBhcmFtZXRlcnMvLTE7ZHY9QTtkbD1hLGIsYztyZHY9QTtyZGw9YSxiLGMvaGVyby1zdGF0c1wiLFxuICAgIC8vICAgIG5leHRTdGF0ZVVybDogXCIvcm91dGUtcGFyYW1ldGVycy9cIlxuICAgIC8vIH1cbiAgICAvLyBsb2dnZXIuY2xhc3MuanM6NTQgUGFyYW1ldGVyU25hcHNob3Quc2FuaXRpc2UgLT4ge2lkTW9kZWw6IC0xLCBwdjogdW5kZWZpbmVkLCBwbDogQXJyYXkoMCksIGR2OiB1bmRlZmluZWQsIGRsOiBBcnJheSgwKSzCoOKApn1cbiAgICAvLyBwYXJhbWV0ZXItc25hcHNob3QudHM6MjAge25hbWU6IFwiaWRNb2RlbFwiLCBtaW5lOiAtMSwgdGhlaXJzOiBudWxsfVxuICAgIC8vIHBsYWNlLXJvdXRlci50czoyOCByZWRpcmVjdCBwYXRoICgzKcKgW1wicm91dGUtcGFyYW1ldGVyc1wiLCBcIi0xXCIsIHvigKZ9XVxuICAgIC8vIGNhbkRlYWN0aXZhdGUge1xuICAgIC8vICAgIHN0YXRpY1BhdGg6IFwiL2hlcm8tc3RhdHNcIixcbiAgICAvLyAgICBjdXJyZW50U3RhdGVVcmw6IFwiL3JvdXRlLXBhcmFtZXRlcnMvLTE7ZHY9QTtkbD1hLGIsYztyZHY9QTtyZGw9YSxiLGMvaGVyby1zdGF0c1wiLFxuICAgIC8vICAgIG5leHRTdGF0ZVVybDogXCIvcm91dGUtcGFyYW1ldGVycy8tMVwiXG4gICAgLy8gfVxuICAgIC8vIGNhbkRlYWN0aXZhdGUge1xuICAgIC8vICAgIHN0YXRpY1BhdGg6IFwiL3JvdXRlLXBhcmFtZXRlcnNcIixcbiAgICAvLyAgICBjdXJyZW50U3RhdGVVcmw6IFwiL3JvdXRlLXBhcmFtZXRlcnMvLTE7ZHY9QTtkbD1hLGIsYztyZHY9QTtyZGw9YSxiLGMvaGVyby1zdGF0c1wiLFxuICAgIC8vICAgIG5leHRTdGF0ZVVybDogXCIvcm91dGUtcGFyYW1ldGVycy8tMVwiXG4gICAgLy8gfVxuICAgIC8vIGxvZ2dlci5jbGFzcy5qczo1NCBQYXJhbWV0ZXJTbmFwc2hvdC5zYW5pdGlzZSAtPiB7aWRNb2RlbDogLTEsIHB2OiB1bmRlZmluZWQsIHBsOiBBcnJheSgwKSwgZHY6IFwiQVwiLCBkbDogQXJyYXkoMykswqDigKZ9XG4gICAgLy8gcGFyYW1ldGVyLXNuYXBzaG90LnRzOjIwIHtuYW1lOiBcImR2XCIsIG1pbmU6IFwiQVwiLCB0aGVpcnM6IHVuZGVmaW5lZH1cbiAgICAvLyBwbGFjZS1yb3V0ZXIudHM6MjggcmVkaXJlY3QgcGF0aCAoMynCoFtcInJvdXRlLXBhcmFtZXRlcnNcIiwgXCItMVwiLCB74oCmfV1cbiAgICAvLyBjYW5EZWFjdGl2YXRlIHtcbiAgICAvLyAgICBzdGF0aWNQYXRoOiBcIi9oZXJvLXN0YXRzXCIsXG4gICAgLy8gICAgY3VycmVudFN0YXRlVXJsOiBcIi9yb3V0ZS1wYXJhbWV0ZXJzLy0xO2R2PUE7ZGw9YSxiLGM7cmR2PUE7cmRsPWEsYixjL2hlcm8tc3RhdHNcIixcbiAgICAvLyAgICBuZXh0U3RhdGVVcmw6IFwiL3JvdXRlLXBhcmFtZXRlcnMvLTE7ZHY9QTtkbD1hLGIsYztyZHY9QTtyZGw9YSxiLGNcIlxuICAgIC8vIH1cbiAgICBjb25zdCBwbGFjZURlZmluaXRpb25QYXRoID0gYC8ke3BsYWNlRGVmaW5pdGlvbi5wYXRofWA7XG4gICAgcmV0dXJuICFuZXh0U3RhdGUudXJsLnN0YXJ0c1dpdGgocGxhY2VEZWZpbml0aW9uUGF0aCk7XG4gIH1cblxuICBhc3luYyBjYW5EZWFjdGl2YXRlKGNvbXBvbmVudDogUGxhY2VDb21wb25lbnQsIGN1cnJlbnRSb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgY3VycmVudFN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBuZXh0U3RhdGU/OiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogUHJvbWlzZTxib29sZWFuPiB7XG5cbiAgICAvLyBUT0RPOiBBZGQgdGVzdHNcbiAgICBpZiAodGhpcy5wbGFjZVJvdXRlci5uYXZpZ2F0aW9uU2Vzc2lvbi5hbHJlYWR5QWNjZXB0ZWQoY29tcG9uZW50KSkge1xuICAgICAgLy8gV2UnbGwgZ2V0IGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBpZiB0aGVyZSdzIGFueSBwYXJhbWV0ZXIgc2FuaXRpc2F0aW9uIHNvXG4gICAgICAvLyB3ZSBhbHdheXMgcmV0dXJuIHRydWUgaWYgd2UgYWNjZXB0ZWQgb24gYSBwcmV2aW91cyBjeWNsZSBvZiB0aGUgY3VycmVudFxuICAgICAgLy8gbmF2aWdhdGlvbiBzZXNzaW9uLlxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgbGV0IGNhbkxlYXZlID0gdHJ1ZTtcblxuICAgICAgaWYgKHRoaXMuaXNMZWF2aW5nVGhlQ3VycmVudFBsYWNlKG5leHRTdGF0ZSwgY29tcG9uZW50LnBsYWNlRGVmaW5pdGlvbikpIHtcbiAgICAgICAgLy8gd2UgY2hlY2sgdGhlIGludGVyYWN0aW9uIGZpcnN0LCBzbyB0aGF0IGNvbXBvbmVudHMgdGhhdCBkb24ndCBuZWVkIHRvIGNoZWNrIGlmIHRoZXkncmUgaW4gYW5cbiAgICAgICAgLy8gaW50ZXJhY3Rpb24gZHVyaW5nIHRoZSBjYW5EZWFjdGl2YXRlIGN5Y2xlLlxuICAgICAgICAvLyBUT0RPOiBBZGQgdGVzdHM6IHNob3cgZGlhbG9nIC0+IGhpdCBiYWNrIC0+IHNhbWUgcm91dGVcbiAgICAgICAgaWYgKGNvbXBvbmVudC5pbnRlcmFjdGlvbkNvbnRleHQgJiYgY29tcG9uZW50LmludGVyYWN0aW9uQ29udGV4dC5pc0FjdGl2ZSgpKSB7XG4gICAgICAgICAgY2FuTGVhdmUgPSBmYWxzZTtcbiAgICAgICAgICBjb25zb2xlLmxvZygnY2FuY2VsbGluZycsIHsgYWN0aXZpdHk6IGNvbXBvbmVudC5pbnRlcmFjdGlvbkNvbnRleHQuY3VycmVudEFjdGl2aXR5IH0pO1xuICAgICAgICAgIGNvbXBvbmVudC5pbnRlcmFjdGlvbkNvbnRleHQuY3VycmVudEFjdGl2aXR5LmNhbmNlbChudWxsKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBObyBpbnRlcmFjdGlvbiBpbiBwcm9ncmVzcywgc28gYXNrIHRoZSBjb21wb25lbnQgLlxuICAgICAgICAvLyBUaGlzIG1heSBzdGFydCBhbiBpbnRlcmFjdGlvbiwgaGVuY2UgY2hlY2tpbmcgdGhlIGludGVyYWN0aW9uIGNvbnRleHQgYWJvdmUuIEkuZS4gaWYgdGhlIHBsYWNlIHBvcHMgdXAgdGhlIGRpYWxvZywgYW5kXG4gICAgICAgIC8vIHRoZSB1c2VyIGNsaWNrcyBiYWNrIGFnYWluLCB3ZSdsbCByZS1lbnRlciBoZXJlIGFuZCBnbyBiYW5nIHdoZW4gdGhlIGNvbXBvbmVudCB0cmllcyB0byBvcGVuIGFub3RoZXJcbiAgICAgICAgLy8gZGlhbG9nLlxuICAgICAgICBpZiAoY2FuTGVhdmUpIHtcbiAgICAgICAgICAvLyBUT0RPOiBBZGQgdGVzdHM6IGhpdCBiYWNrIC0+IGNvbmZpcm0gbGVhdmUgZGlhbG9nIC0+IGhpdCBiYWNrIC0+IGNsb3NlIGRpYWxvZyAtPiAgaGl0IGJhY2sgLT4gY29uZmlybSBsZWF2ZSBkaWFsb2cuXG4gICAgICAgICAgY2FuTGVhdmUgPSBhd2FpdCBjb21wb25lbnQuY2FuRGVhY3RpdmF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gV2UgYWxzbyBibG9jayBiYWNrIGJ1dHRvbiBwYXJhbWV0ZXIgY2hhbmdlcyB3aGlsZSB0aGUgZGlhbG9nIGlzIG9wZW4uXG4gICAgICAgIC8vIE5PVEU6IE5vdyB0aGF0IEknbSBjYXRjaGluZyBwYXJhbWV0ZXIgY2hhbmdlcyBJIGNvdWxkIHBvc3NpYmx5IHJldHJ5IHVzaW5nIGEgZnJhZ21lbnQgb3JcbiAgICAgICAgLy8gcXVlcnkgcGFyYW1ldGVyIHRvIHRyYWNrIHRoZSBkaWFsb2cgYmVpbmcgb3Blbi4gIFByZXZpb3VzbHkgSSB3YXMganVzdCBjaGVja2luZyB0aGlzIG9uXG4gICAgICAgIC8vIHBhdGggY2hhbmdlcy4uLiBpZiB0aGF0IHdvcmtlZCBpdCdkIGZpeCB0aGUgY2FzZSB3aGVyZSB0aGUgYmFjayBidXR0b24gYnJlYWtzIHdpdGggYW4gYWN0aXZpdHlcbiAgICAgICAgLy8gb3BlbiBvbiB0aGUgZmlyc3QgcGFnZTogaHR0cHM6Ly9jb29sb24uYXRsYXNzaWFuLm5ldC9icm93c2UvQVVQLTMzXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5pbnRlcmFjdGlvbkNvbnRleHQuaXNBY3RpdmUoKSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdjYW5jZWxsaW5nJywgeyBhY3Rpdml0eTogdGhpcy5pbnRlcmFjdGlvbkNvbnRleHQuY3VycmVudEFjdGl2aXR5IH0pO1xuICAgICAgICAgIHRoaXMuaW50ZXJhY3Rpb25Db250ZXh0LmN1cnJlbnRBY3Rpdml0eS5jYW5jZWwobnVsbCk7XG4gICAgICAgICAgY2FuTGVhdmUgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjYW5MZWF2ZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGNhbkxlYXZlKSB7XG4gICAgICAgIC8vIFdlJ2xsIGdldCBjYWxsZWQgbXVsdGlwbGUgdGltZXMgaWYgdGhlcmUncyBhbnkgcGFyYW1ldGVyIHNhbml0aXNhdGlvbiBzb1xuICAgICAgICAvLyB3ZSByZW1lbWJlciB0aGUgYWNjZXB0YW5jZSBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSBjdXJyZW50IG5hdmlnYXRpb24gc2Vzc2lvbi5cbiAgICAgICAgc2VsZi5wbGFjZVJvdXRlci5uYXZpZ2F0aW9uU2Vzc2lvbi5yZW1lbWJlckFjY2VwdGFuY2VPZihjb21wb25lbnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQW5ndWxhciBkb2Vzbid0IHByZXNlcnZlIHRoZSB1cmwgd2hlbiBhIGd1YXJkIGNhbmNlbHMgdGhlIGJhY2sgYnV0dG9uLlxuICAgICAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTM1ODYjaXNzdWVjb21tZW50LTQzMjc5NTcyMFxuICAgICAgICBpZiAodGhpcy5wbGFjZVJvdXRlci5uYXZpZ2F0aW9uU2Vzc2lvbi5pc1BvcFN0YXRlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ2NhbmNlbGxlZCBkdXJpbmcgcG9wc3RhdGUnKTtcbiAgICAgICAgICB0aGlzLmFuZ3VsYXJMb2NhdGlvbi5nbyh0aGlzLnBsYWNlUm91dGVyLm5hdmlnYXRpb25TZXNzaW9uLnBvcFN0YXRlUmV0dXJuVXJsKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gY2FuTGVhdmU7XG4gICAgfVxuICB9XG59XG4iXX0=