@smarterplan/ngx-smarterplan-core 1.4.20 → 1.4.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/README.md +24 -24
  2. package/esm2022/lib/components/csv-export/csv-export.component.mjs +3 -3
  3. package/esm2022/lib/components/loader/loader.component.mjs +3 -3
  4. package/esm2022/lib/components/menu-bar/avatar/avatar.component.mjs +1 -1
  5. package/esm2022/lib/components/menu-bar/menu-bar.component.mjs +3 -3
  6. package/esm2022/lib/components/menu-bar/navigation-bar/navigation-bar.component.mjs +3 -3
  7. package/esm2022/lib/components/modal-switch-visit/modal-switch-visit.component.mjs +3 -3
  8. package/esm2022/lib/components/search-bar/search-bar.component.mjs +3 -3
  9. package/esm2022/lib/components/support-modal/support-modal.component.mjs +3 -3
  10. package/esm2022/lib/config.mjs +1 -1
  11. package/esm2022/lib/helpers.service.mjs +1 -1
  12. package/esm2022/lib/matterport-extensions/nest-thermostat/CanvasImage.mjs +1 -1
  13. package/esm2022/lib/matterport-extensions/nest-thermostat/CanvasRenderer.mjs +1 -1
  14. package/esm2022/lib/matterport-extensions/nest-thermostat/NestThermostat.mjs +1 -1
  15. package/esm2022/lib/matterport-extensions/nest-thermostat/PlaneRenderer.mjs +1 -1
  16. package/esm2022/lib/matterport-extensions/scene-component/SceneComponent.mjs +1 -1
  17. package/esm2022/lib/matterport-extensions/security-camera/SecurityCamera.mjs +49 -28
  18. package/esm2022/lib/matterport-extensions/tv-player/TvPlayer.mjs +1 -1
  19. package/esm2022/lib/matterport-extensions/view-frustum-mesh/ViewFrustumMesh.mjs +22 -22
  20. package/esm2022/lib/mattertagData.mjs +1 -1
  21. package/esm2022/lib/ngx-smarterplan-core.module.mjs +1 -1
  22. package/esm2022/lib/ngx-smarterplan-core.service.mjs +1 -1
  23. package/esm2022/lib/pipes/duration-to-string.pipe.mjs +1 -1
  24. package/esm2022/lib/pipes/format-date-number-to-digits.pipe.mjs +1 -1
  25. package/esm2022/lib/pipes/hashtag-from-id.pipe.mjs +1 -1
  26. package/esm2022/lib/pipes/safe-url.pipe.mjs +1 -1
  27. package/esm2022/lib/pipes/time-date-to-local-string.pipe.mjs +1 -1
  28. package/esm2022/lib/pipes/username-from-id.pipe.mjs +1 -1
  29. package/esm2022/lib/services/amplify-cache.service.mjs +1 -1
  30. package/esm2022/lib/services/base-tab.service.mjs +1 -1
  31. package/esm2022/lib/services/baseVisibility.service.mjs +1 -1
  32. package/esm2022/lib/services/content.service.mjs +1 -1
  33. package/esm2022/lib/services/filter.service.mjs +1 -1
  34. package/esm2022/lib/services/intervention.service.mjs +1 -1
  35. package/esm2022/lib/services/locale.service.mjs +1 -1
  36. package/esm2022/lib/services/matterport-import.service.mjs +1 -1
  37. package/esm2022/lib/services/matterport-measurement.service.mjs +1 -1
  38. package/esm2022/lib/services/matterport-navigation.service.mjs +1 -1
  39. package/esm2022/lib/services/matterport-object3d.service.mjs +657 -133
  40. package/esm2022/lib/services/matterport-pointer.service.mjs +6 -6
  41. package/esm2022/lib/services/matterport-tag-copy.service.mjs +1 -1
  42. package/esm2022/lib/services/matterport-tag.service.mjs +1 -1
  43. package/esm2022/lib/services/matterport.service.mjs +346 -25
  44. package/esm2022/lib/services/models/affectation.service.mjs +1 -1
  45. package/esm2022/lib/services/models/base-object.service.mjs +1 -1
  46. package/esm2022/lib/services/models/capture.service.mjs +1 -1
  47. package/esm2022/lib/services/models/comment.service.mjs +1 -1
  48. package/esm2022/lib/services/models/domain.service.mjs +1 -1
  49. package/esm2022/lib/services/models/equipment.service.mjs +1 -1
  50. package/esm2022/lib/services/models/event.service.mjs +1 -1
  51. package/esm2022/lib/services/models/feature.service.mjs +1 -1
  52. package/esm2022/lib/services/models/hashtag.service.mjs +1 -1
  53. package/esm2022/lib/services/models/layer.service.mjs +1 -1
  54. package/esm2022/lib/services/models/measurement.service.mjs +1 -1
  55. package/esm2022/lib/services/models/mission.service.mjs +1 -1
  56. package/esm2022/lib/services/models/navigation.service.mjs +1 -1
  57. package/esm2022/lib/services/models/node.service.mjs +1 -1
  58. package/esm2022/lib/services/models/object3D.service.mjs +1 -1
  59. package/esm2022/lib/services/models/operation.service.mjs +1 -1
  60. package/esm2022/lib/services/models/organisation.service.mjs +1 -1
  61. package/esm2022/lib/services/models/plan.service.mjs +1 -1
  62. package/esm2022/lib/services/models/poi.service.mjs +27 -27
  63. package/esm2022/lib/services/models/profile.service.mjs +1 -1
  64. package/esm2022/lib/services/models/property.service.mjs +1 -1
  65. package/esm2022/lib/services/models/space.service.mjs +1 -1
  66. package/esm2022/lib/services/models/template.service.mjs +1 -1
  67. package/esm2022/lib/services/models/ticket.service.mjs +1 -1
  68. package/esm2022/lib/services/models/visit.service.mjs +1 -1
  69. package/esm2022/lib/services/models/zone.service.mjs +1 -1
  70. package/esm2022/lib/services/navigator.service.mjs +1 -1
  71. package/esm2022/lib/services/s3.service.mjs +1 -1
  72. package/esm2022/lib/services/search.service.mjs +1 -1
  73. package/esm2022/lib/services/support.service.mjs +1 -1
  74. package/esm2022/lib/services/sweep-locator.service.mjs +1 -1
  75. package/esm2022/lib/services/tag.service.mjs +16 -16
  76. package/esm2022/lib/services/threejs-import.service.mjs +1 -1
  77. package/esm2022/lib/services/threejs.service.mjs +1 -1
  78. package/esm2022/lib/services/user.service.mjs +1 -1
  79. package/esm2022/lib/services/utils/matterport-framing.util.mjs +63 -0
  80. package/esm2022/lib/services/utils/matterport-transform.util.mjs +1 -1
  81. package/esm2022/lib/services/validators.service.mjs +1 -1
  82. package/esm2022/lib/services/viewer.service.mjs +1 -1
  83. package/esm2022/lib/services/zone-drawer.service.mjs +1 -1
  84. package/esm2022/lib/services/zoneChange.service.mjs +1 -1
  85. package/esm2022/lib/tokens/matterport-sdk-key.token.mjs +1 -1
  86. package/esm2022/lib/types.service.mjs +3 -1
  87. package/esm2022/lib/validators/email.directive.mjs +1 -1
  88. package/esm2022/lib/validators/no-empty.directive.mjs +1 -1
  89. package/esm2022/lib/validators/number.directive.mjs +1 -1
  90. package/esm2022/lib/validators/text.directive.mjs +1 -1
  91. package/esm2022/public-api.mjs +1 -1
  92. package/fesm2022/smarterplan-ngx-smarterplan-core.mjs +1192 -263
  93. package/fesm2022/smarterplan-ngx-smarterplan-core.mjs.map +1 -1
  94. package/lib/services/matterport-object3d.service.d.ts +125 -5
  95. package/lib/services/matterport.service.d.ts +106 -7
  96. package/lib/services/utils/matterport-framing.util.d.ts +40 -0
  97. package/lib/types.service.d.ts +42 -1
  98. package/package.json +1 -1
  99. package/src/assets/vs-app.json +67 -67
@@ -228,4 +228,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
228
228
  type: Inject,
229
229
  args: ['currentAPIService']
230
230
  }] }, { type: i1.BaseUserService }] });
231
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9uZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9tb2RlbHMvem9uZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBT25ELE1BQU0sT0FBTyxXQUFXO0lBS1o7SUFKVixHQUFHLENBQU0sQ0FBQyxnQkFBZ0I7SUFFMUIsWUFDK0IsV0FBZ0IsRUFDckMsV0FBNEI7UUFBNUIsZ0JBQVcsR0FBWCxXQUFXLENBQWlCO1FBRXBDLElBQUksQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQWU7UUFDbkMsTUFBTSxJQUFJLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDdEQsd0ZBQXdGO1lBQ3hGLHNEQUFzRDtZQUN0RCxJQUFJLFNBQVMsR0FBa0IsSUFBSSxDQUFDO1lBQ3BDLEdBQUcsQ0FBQztnQkFDRixNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQzFGLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsQ0FBQztvQkFDdEMsTUFBTSxVQUFVLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBVSxDQUFDO29CQUN2QyxVQUFVLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7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QUFHLENBQUMsU0FBUzthQUN0QixXQUFXLENBQUMsWUFBWSxDQUFDO2FBQ3pCLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7d0dBalFVLFdBQVcsa0JBSVosbUJBQW1COzRHQUpsQixXQUFXLGNBRlYsTUFBTTs7NEZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUtJLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgY2xhc3MtbWV0aG9kcy11c2UtdGhpcyAqL1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYk9iamVjdFR5cGUsIFpvbmUgfSBmcm9tICcuLi8uLi90eXBlcy5zZXJ2aWNlJztcbmltcG9ydCB7IEJhc2VVc2VyU2VydmljZSB9IGZyb20gJy4uL3VzZXIuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBab25lU2VydmljZSB7XG4gIEFQSTogYW55OyAvL0FXUyBBUElTZXJ2aWNlXG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdCgnY3VycmVudEFQSVNlcnZpY2UnKSBhcGlJbmplY3RlZDogYW55LFxuICAgIHByaXZhdGUgdXNlclNlcnZpY2U6IEJhc2VVc2VyU2VydmljZVxuICApIHtcbiAgICB0aGlzLkFQSSA9IGFwaUluamVjdGVkO1xuICB9XG5cbiAgYXN5bmMgZ2V0Wm9uZXNCeVNwYWNlKHNwYWNlSUQ6IHN0cmluZyk6IFByb21pc2U8QXJyYXk8Wm9uZT4+IHtcbiAgICBjb25zdCBsaXN0OiBab25lW10gPSBbXTtcbiAgICBpZiAodGhpcy5BUEkuX19wcm90b19fLmhhc093blByb3BlcnR5KCdab25lc0J5U3BhY2UnKSkge1xuICAgICAgLy8gUGFnaW5hdGVkOiB3aXRob3V0IGEgbmV4dFRva2VuIGxvb3AsIG9ubHkgdGhlIGZpcnN0IHBhZ2UgKDEwMCB6b25lcykgd2FzIHJldHVybmVkIGFuZFxuICAgICAgLy8gdGhlIHN3ZWVwcyBvZiB0aGUgb3RoZXIgem9uZXMgc2lsZW50bHkgZGlzYXBwZWFyZWQuXG4gICAgICBsZXQgbmV4dFRva2VuOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICAgIGRvIHtcbiAgICAgICAgY29uc3Qgem9uZXMgPSBhd2FpdCB0aGlzLkFQSS5fX3Byb3RvX18uWm9uZXNCeVNwYWNlKHNwYWNlSUQsIG51bGwsIG51bGwsIDEwMDAsIG5leHRUb2tlbik7XG4gICAgICAgIGZvciAoY29uc3Qgem9uZSBvZiB6b25lcz8uaXRlbXMgfHwgW10pIHtcbiAgICAgICAgICBjb25zdCB6b25lT2JqZWN0ID0geyAuLi56b25lIH0gYXMgWm9uZTtcbiAgICAgICAgICB6b25lT2JqZWN0LnZpcnR1YWwgPSB0aGlzLnpvbmVJc1ZpcnR1YWwoem9uZSk7XG4gICAgICAgICAgbGlzdC5wdXNoKHpvbmVPYmplY3QpO1xuICAgICAgICB9XG4gICAgICAgIG5leHRUb2tlbiA9IHpvbmVzPy5uZXh0VG9rZW4gPz8gbnVsbDtcbiAgICAgIH0gd2hpbGUgKG5leHRUb2tlbik7XG4gICAgICByZXR1cm4gbGlzdDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdab25lc0J5U3BhY2Ugbm90IGltcGxlbWVudGVkJyk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0Wm9uZXNCeVNwYWNlRm9yVXNlcihzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPFpvbmVbXT4ge1xuICAgIGNvbnN0IG1pc3Npb25Gb3JMb2NhdGlvbiA9IHRoaXMudXNlclNlcnZpY2UuY3VycmVudE1pc3Npb24oc3BhY2VJRCk7XG4gICAgY29uc3QgbGlzdCA9IFtdO1xuICAgIGlmIChtaXNzaW9uRm9yTG9jYXRpb24gJiYgbWlzc2lvbkZvckxvY2F0aW9uLnpvbmVJRCkge1xuICAgICAgY29uc3QgYWxsb3dlZFpvbmUgPSBhd2FpdCB0aGlzLmdldFpvbmUobWlzc2lvbkZvckxvY2F0aW9uLnpvbmVJRCk7XG4gICAgICBhbGxvd2VkWm9uZS52aXJ0dWFsID0gdGhpcy56b25lSXNWaXJ0dWFsKGFsbG93ZWRab25lKTtcbiAgICAgIGlmICghYWxsb3dlZFpvbmUucGFyZW50KSB7XG4gICAgICAgIC8vIHRoZSB3aG9sZSBidWlsZGluZyBpcyBhdXRob3JpemVkXG4gICAgICAgIHJldHVybiB0aGlzLmdldFpvbmVzQnlTcGFjZShzcGFjZUlEKTtcbiAgICAgIH1cbiAgICAgIGxpc3QucHVzaChhbGxvd2VkWm9uZSk7XG4gICAgICAvLyBhbGxvdyBhbGwgY2hpbGRyZW4gem9uZXMgb2YgYW4gYWxsb3dlZCBwYXJlbnRcbiAgICAgIGNvbnN0IGNoaWxkcmVuID0gKGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5ab25lc0J5Wm9uZShhbGxvd2VkWm9uZS5pZCkpXG4gICAgICAgIC5pdGVtcztcbiAgICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIHtcbiAgICAgICAgICBjb25zdCBjaGlsZFpvbmUgPSB7IC4uLmNoaWxkIH0gYXMgWm9uZTtcbiAgICAgICAgICBjaGlsZFpvbmUudmlydHVhbCA9IHRoaXMuem9uZUlzVmlydHVhbChjaGlsZCk7XG4gICAgICAgICAgbGlzdC5wdXNoKGNoaWxkWm9uZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIGFsbG93IHRoZSBwYXJlbnQgRmxvb3Igb2YgdGhlIGFsbG93ZWQgem9uZVxuICAgICAgaWYgKFxuICAgICAgICBhbGxvd2VkWm9uZS5wYXJlbnQubGF5ZXIgJiZcbiAgICAgICAgYWxsb3dlZFpvbmUucGFyZW50LmxheWVyLm5hbWUgPT09ICdGTE9PUidcbiAgICAgICkge1xuICAgICAgICBsaXN0LnB1c2goYWxsb3dlZFpvbmUucGFyZW50KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0Wm9uZXNCeVNwYWNlKHNwYWNlSUQpO1xuICAgIH1cbiAgICByZXR1cm4gbGlzdDtcbiAgfVxuXG4gIGFzeW5jIGZpbHRlclpvbmVzSURzRm9yVXNlcih6b25lczogWm9uZVtdKTogUHJvbWlzZTxab25lW10+IHtcbiAgICBjb25zdCB7IHNwYWNlSUQgfSA9IHpvbmVzWzBdO1xuICAgIGNvbnN0IHpvbmVJRHMgPSBuZXcgU2V0KHpvbmVzLm1hcCgoem9uZSkgPT4gem9uZS5pZCkpO1xuICAgIGNvbnN0IGFsbG93ZWRab25lcyA9IGF3YWl0IHRoaXMuZ2V0Wm9uZXNCeVNwYWNlRm9yVXNlcihzcGFjZUlEKTtcbiAgICBjb25zdCBmaWx0ZXJlZFpvbmVzID0gYWxsb3dlZFpvbmVzLmZpbHRlcigoem9uZSkgPT4gem9uZUlEcy5oYXMoem9uZS5pZCkpO1xuICAgIHJldHVybiBmaWx0ZXJlZFpvbmVzO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlWm9uZSh6b25lSUQ6IHN0cmluZyk6IFByb21pc2U8Wm9uZT4ge1xuICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uRGVsZXRlWm9uZSh7IGlkOiB6b25lSUQgfSk7XG4gIH1cblxuICBhc3luYyBnZXRab25lc0ZvclN3ZWVwRm9yU3BhY2UoXG4gICAgc3dlZXBJRDogc3RyaW5nLFxuICAgIHNwYWNlSUQ6IHN0cmluZ1xuICApOiBQcm9taXNlPFpvbmVbXT4ge1xuICAgIGNvbnN0IHpvbmVzU3BhY2UgPSAoYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLlpvbmVzQnlTcGFjZShzcGFjZUlEKSkuaXRlbXM7XG4gICAgcmV0dXJuIHpvbmVzU3BhY2UuZmlsdGVyKFxuICAgICAgKHpvbmUpID0+IHpvbmUuc3dlZXBJRHMgJiYgem9uZS5zd2VlcElEcy5pbmNsdWRlcyhzd2VlcElEKVxuICAgICk7XG4gIH1cblxuICAvLyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY2xhc3MtbWV0aG9kcy11c2UtdGhpc1xuICBzb3J0Wm9uZXNGcm9tQ2hpbGRUb1BhcmVudCh6b25lc1RvU29ydDogWm9uZVtdKSB7XG4gICAgLy8gZ2V0IGRlZmF1bHRcbiAgICBjb25zdCBkZWZhdWx0Wm9uZSA9IHpvbmVzVG9Tb3J0LmZpbmQoKHopID0+ICF6LnBhcmVudElEKTtcbiAgICBpZiAoZGVmYXVsdFpvbmUpIHtcbiAgICAgIGNvbnN0IGluZGV4T2YgPSB6b25lc1RvU29ydC5pbmRleE9mKGRlZmF1bHRab25lKTtcbiAgICAgIHpvbmVzVG9Tb3J0LnNwbGljZShpbmRleE9mLCAxKTtcbiAgICB9XG4gICAgY29uc3Qgem9uZXMgPSB6b25lc1RvU29ydC5zb3J0KChhLCBiKSA9PiB7XG4gICAgICBpZiAoYS5wYXJlbnRJRCA9PT0gYi5pZCkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9XG4gICAgICByZXR1cm4gMDtcbiAgICB9KTtcbiAgICAvLyBzbyBmYXIgYnkgbnVtYmVyIG9mIG5hdmlnYXRpb24gcG9pbnRzIGluIHRoZW1cbiAgICAvLyBjb25zdCB6b25lcyA9IHpvbmVzVG9Tb3J0LnNvcnQoXG4gICAgLy8gICAgIChhLCBiKSA9PiBhLm5hdmlnYXRpb25zLml0ZW1zLmxlbmd0aCAtIGIubmF2aWdhdGlvbnMuaXRlbXMubGVuZ3RoLFxuICAgIC8vICk7XG4gICAgaWYgKGRlZmF1bHRab25lKSB7XG4gICAgICB6b25lcy5wdXNoKGRlZmF1bHRab25lKTtcbiAgICB9XG4gICAgcmV0dXJuIHpvbmVzO1xuICB9XG5cbiAgYXN5bmMgZ2V0Wm9uZXNGb3JPYmplY3Qob2JqZWN0OiBEYk9iamVjdFR5cGUpOiBQcm9taXNlPFpvbmVbXT4ge1xuICAgIGlmIChvYmplY3QucG9pcy5pdGVtcyAmJiBvYmplY3QucG9pcy5pdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBbcG9pXSA9IG9iamVjdC5wb2lzLml0ZW1zO1xuICAgICAgaWYgKHBvaS5tYXR0ZXJwb3J0U3dlZXBJRCkge1xuICAgICAgICBjb25zdCB6b25lcyA9IGF3YWl0IHRoaXMuZ2V0Wm9uZXNGb3JTd2VlcEZvclNwYWNlKFxuICAgICAgICAgIHBvaS5tYXR0ZXJwb3J0U3dlZXBJRCxcbiAgICAgICAgICBvYmplY3Quc3BhY2VJRFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gem9uZXM7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlVmlydHVhbFpvbmUoem9uZUlucHV0OiBab25lKTogUHJvbWlzZTxab25lPiB7XG4gICAgem9uZUlucHV0LnN3ZWVwSURzID0gW107XG4gICAgY29uc3Qgem9uZSA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVab25lKHpvbmVJbnB1dCk7XG4gICAgY29uc29sZS5sb2coJ3ZpcnR1YWwgem9uZSBjcmVhdGVkJywgem9uZSk7XG4gICAgcmV0dXJuIHpvbmU7XG4gIH1cblxuICB6b25lSXNWaXJ0dWFsKHpvbmU6IFpvbmUpOiBib29sZWFuIHtcbiAgICBpZiAoIXpvbmUuc3dlZXBJRHMpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICAoem9uZS50YWdzICYmIHpvbmUudGFncy5pbmNsdWRlcygndmlydHVhbCcpKSB8fFxuICAgICAgem9uZS5zd2VlcElEcy5sZW5ndGggPT09IDBcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBhc3luYyBnZXRNb2RlbDNERm9yWm9uZSh6b25lSUQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3Qgem9uZSA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5HZXRab25lKHpvbmVJRCk7XG4gICAgaWYgKHpvbmUubm9kZUlEcykge1xuICAgICAgY29uc3Qgbm9kZSA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5HZXROb2RlKHpvbmUubm9kZUlEc1swXSk7XG4gICAgICByZXR1cm4gbm9kZS5tb2RlbDNEO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGFzeW5jIGdldFpvbmUoem9uZUlEOiBzdHJpbmcpOiBQcm9taXNlPFpvbmU+IHtcbiAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkdldFpvbmUoem9uZUlEKTtcbiAgfVxuXG4gIGFzeW5jIGdldERlZmF1bHRab25lRm9yU3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxab25lPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Wm9uZXNCeVNwYWNlKHNwYWNlSUQpLnRoZW4oYXN5bmMgKHpvbmVzKSA9PiB7XG4gICAgICBjb25zdCB6b25lc0J1aWxkaW5nID0gem9uZXMuZmlsdGVyKFxuICAgICAgICAoem9uZSkgPT4gem9uZS5sYXllciAmJiB6b25lLmxheWVyLm5hbWUgPT09ICdCVUlMRElORydcbiAgICAgICk7XG4gICAgICBpZiAoem9uZXNCdWlsZGluZy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIHpvbmVzQnVpbGRpbmdbMF07XG4gICAgICB9XG4gICAgICBjb25zdCBwYXJlbnRab25lID0gem9uZXMuZmluZCgoem9uZSkgPT4gIXpvbmUucGFyZW50SUQpO1xuICAgICAgcmV0dXJuIHBhcmVudFpvbmU7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBjcmVhdGUoaW5wdXQ6IFpvbmUpOiBQcm9taXNlPFpvbmU+IHtcbiAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkNyZWF0ZVpvbmUoaW5wdXQpO1xuICB9XG5cbiAgLy8gYXN5bmMgZ2V0U29ydGVkWm9uZXNGb3JTd2VlcEZvclVzZXIoXG4gIC8vICAgICBzd2VlcDogc3RyaW5nLFxuICAvLyAgICAgc3BhY2VJRDogc3RyaW5nLFxuICAvLyApOiBQcm9taXNlPFpvbmVbXT4ge1xuICAvLyAgICAgaWYgKCFzcGFjZUlEKSB7XG4gIC8vICAgICAgICAgcmV0dXJuIFtdO1xuICAvLyAgICAgfVxuICAvLyAgICAgY29uc3Qgem9uZXMgPSBhd2FpdCB0aGlzLmdldFpvbmVzRm9yU3dlZXBGb3JTcGFjZShzd2VlcCwgc3BhY2VJRCk7XG4gIC8vICAgICBpZiAoem9uZXMubGVuZ3RoID09PSAwKSB7XG4gIC8vICAgICAgICAgcmV0dXJuIFtdO1xuICAvLyAgICAgfVxuICAvLyAgICAgY29uc3QgZmlsdGVyZWRab25lcyA9IGF3YWl0IHRoaXMuZmlsdGVyWm9uZXNJRHNGb3JVc2VyKHpvbmVzKTtcbiAgLy8gICAgIGlmIChmaWx0ZXJlZFpvbmVzLmxlbmd0aCA+IDApIHtcbiAgLy8gICAgICAgICBsZXQgem9uZXNTb3J0ZWQgPSB0aGlzLnNvcnRab25lc0Zyb21DaGlsZFRvUGFyZW50KGZpbHRlcmVkWm9uZXMpO1xuICAvLyAgICAgICAgIHpvbmVzU29ydGVkID0gem9uZXNTb3J0ZWQuZmlsdGVyKCh6b25lKSA9PiB6b25lICE9PSB1bmRlZmluZWQpO1xuICAvLyAgICAgICAgIHJldHVybiB6b25lc1NvcnRlZDtcbiAgLy8gICAgIH1cbiAgLy8gICAgIHJldHVybiBbXTtcbiAgLy8gfVxuXG4gIGFzeW5jIHVwZGF0ZVpvbmUoaW5wdXQ6IGFueSk6IFByb21pc2U8Wm9uZT4ge1xuICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uVXBkYXRlWm9uZShpbnB1dCk7XG4gIH1cblxuICBhc3luYyBnZXRab25lc0Zvck5vZGVGb3JTcGFjZShcbiAgICBub2RlSUQ6IHN0cmluZyxcbiAgICBzcGFjZUlEOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxab25lW10+IHtcbiAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLlpvbmVzQnlTcGFjZShzcGFjZUlEKS50aGVuKGFzeW5jICh6b25lcykgPT4ge1xuICAgICAgY29uc3QgZmlsdGVyZWRab25lcyA9IHpvbmVzLml0ZW1zLmZpbHRlcihcbiAgICAgICAgKHpvbmUpID0+IHpvbmUubm9kZUlEcyAmJiB6b25lLm5vZGVJRHMuaW5jbHVkZXMobm9kZUlEKVxuICAgICAgKTtcbiAgICAgIHJldHVybiBmaWx0ZXJlZFpvbmVzO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIFpvbmUgKGxheWVyIEZMT09SKSBmb3IgYSBtYXR0ZXJwb3J0IHN3ZWVwIElEIGluIGEgZ2l2ZW4gU3BhY2VcbiAgICogQHBhcmFtIHN3ZWVwSURcbiAgICogQHBhcmFtIHNwYWNlSURcbiAgICogQHJldHVybnMgWm9uZVxuICAgKi9cbiAgYXN5bmMgZ2V0Rmxvb3Jab25lRm9yU3dlZXBJblNwYWNlKFxuICAgIHN3ZWVwSUQ6IHN0cmluZyxcbiAgICBzcGFjZUlEOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxab25lPiB7XG4gICAgY29uc3Qgem9uZXMgPSBhd2FpdCB0aGlzLmdldFpvbmVzRm9yU3dlZXBGb3JTcGFjZShzd2VlcElELCBzcGFjZUlEKTtcbiAgICBjb25zdCBmbG9vcnMgPSB6b25lcy5maWx0ZXIoXG4gICAgICAoem9uZSkgPT4gem9uZS5sYXllciAmJiB6b25lLmxheWVyLm5hbWUuaW5jbHVkZXMoJ0ZMT09SJylcbiAgICApO1xuICAgIHJldHVybiBmbG9vcnMubGVuZ3RoID4gMCA/IGZsb29yc1swXSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHpvbmVzIHdpdGggYXVkaW8gdHJhY2sgZm9yIGVudGlyZSBzcGFjZVxuICAgKiBAcGFyYW0gc3BhY2VJRFxuICAgKiBAcmV0dXJucyAgUHJvbWlzZTxab25lW10+XG4gICAqL1xuICBhc3luYyBnZXRBdWRpb1pvbmVzRm9yU3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxab25lW10+IHtcbiAgICBjb25zdCBhbGxab25lcyA9IGF3YWl0IHRoaXMuZ2V0Wm9uZXNCeVNwYWNlKHNwYWNlSUQpO1xuICAgIHJldHVybiBhbGxab25lcy5maWx0ZXIoKHpvbmUpID0+IHpvbmUuYXVkaW9JRCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGF1ZGlvIHpvbmVzIGZvciB1c2VyICh3aXRoaW4gYWxsb3dlZCB6b25lcylcbiAgICogQHBhcmFtIHNwYWNlSURcbiAgICogQHJldHVybnMgIFByb21pc2U8Wm9uZVtdPlxuICAgKi9cbiAgYXN5bmMgZ2V0QXVkaW9ab25lc0ZvclVzZXJGb3JTcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPFpvbmVbXT4ge1xuICAgIGNvbnN0IHVzZXJab25lcyA9IGF3YWl0IHRoaXMuZ2V0Wm9uZXNCeVNwYWNlRm9yVXNlcihzcGFjZUlEKTtcbiAgICByZXR1cm4gdXNlclpvbmVzLmZpbHRlcigoem9uZSkgPT4gem9uZS5hdWRpb0lEKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgWm9uZXMgYnkgUGFyZW50IFpvbmUgSURcbiAgICogQHBhcmFtIHBhcmVudFpvbmVJRCBzdHJpbmdcbiAgICogQHJldHVybnMgUHJvbWlzZTxab25lW10+XG4gICAqL1xuICBhc3luYyBnZXRab25lc0J5UGFyZW50Wm9uZShwYXJlbnRab25lSUQ6IHN0cmluZyk6IFByb21pc2U8Wm9uZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fX1xuICAgICAgLlpvbmVzQnlab25lKHBhcmVudFpvbmVJRClcbiAgICAgIC50aGVuKChyZXMpID0+IHJlcy5pdGVtcyk7XG4gIH1cbn1cbiJdfQ==
231
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9uZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9tb2RlbHMvem9uZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBT25ELE1BQU0sT0FBTyxXQUFXO0lBS1o7SUFKVixHQUFHLENBQU0sQ0FBQyxnQkFBZ0I7SUFFMUIsWUFDK0IsV0FBZ0IsRUFDckMsV0FBNEI7UUFBNUIsZ0JBQVcsR0FBWCxXQUFXLENBQWlCO1FBRXBDLElBQUksQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQWU7UUFDbkMsTUFBTSxJQUFJLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDdEQsd0ZBQXdGO1lBQ3hGLHNEQUFzRDtZQUN0RCxJQUFJLFNBQVMsR0FBa0IsSUFBSSxDQUFDO1lBQ3BDLEdBQUcsQ0FBQztnQkFDRixNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQzFGLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsQ0FBQztvQkFDdEMsTUFBTSxVQUFVLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBVSxDQUFDO29CQUN2QyxVQUFVLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7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QUFHLENBQUMsU0FBUzthQUN0QixXQUFXLENBQUMsWUFBWSxDQUFDO2FBQ3pCLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7d0dBalFVLFdBQVcsa0JBSVosbUJBQW1COzRHQUpsQixXQUFXLGNBRlYsTUFBTTs7NEZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUtJLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgY2xhc3MtbWV0aG9kcy11c2UtdGhpcyAqL1xyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGJPYmplY3RUeXBlLCBab25lIH0gZnJvbSAnLi4vLi4vdHlwZXMuc2VydmljZSc7XHJcbmltcG9ydCB7IEJhc2VVc2VyU2VydmljZSB9IGZyb20gJy4uL3VzZXIuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgWm9uZVNlcnZpY2Uge1xyXG4gIEFQSTogYW55OyAvL0FXUyBBUElTZXJ2aWNlXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdCgnY3VycmVudEFQSVNlcnZpY2UnKSBhcGlJbmplY3RlZDogYW55LFxyXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogQmFzZVVzZXJTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLkFQSSA9IGFwaUluamVjdGVkO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0Wm9uZXNCeVNwYWNlKHNwYWNlSUQ6IHN0cmluZyk6IFByb21pc2U8QXJyYXk8Wm9uZT4+IHtcclxuICAgIGNvbnN0IGxpc3Q6IFpvbmVbXSA9IFtdO1xyXG4gICAgaWYgKHRoaXMuQVBJLl9fcHJvdG9fXy5oYXNPd25Qcm9wZXJ0eSgnWm9uZXNCeVNwYWNlJykpIHtcclxuICAgICAgLy8gUGFnaW5hdGVkOiB3aXRob3V0IGEgbmV4dFRva2VuIGxvb3AsIG9ubHkgdGhlIGZpcnN0IHBhZ2UgKDEwMCB6b25lcykgd2FzIHJldHVybmVkIGFuZFxyXG4gICAgICAvLyB0aGUgc3dlZXBzIG9mIHRoZSBvdGhlciB6b25lcyBzaWxlbnRseSBkaXNhcHBlYXJlZC5cclxuICAgICAgbGV0IG5leHRUb2tlbjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgICAgIGRvIHtcclxuICAgICAgICBjb25zdCB6b25lcyA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5ab25lc0J5U3BhY2Uoc3BhY2VJRCwgbnVsbCwgbnVsbCwgMTAwMCwgbmV4dFRva2VuKTtcclxuICAgICAgICBmb3IgKGNvbnN0IHpvbmUgb2Ygem9uZXM/Lml0ZW1zIHx8IFtdKSB7XHJcbiAgICAgICAgICBjb25zdCB6b25lT2JqZWN0ID0geyAuLi56b25lIH0gYXMgWm9uZTtcclxuICAgICAgICAgIHpvbmVPYmplY3QudmlydHVhbCA9IHRoaXMuem9uZUlzVmlydHVhbCh6b25lKTtcclxuICAgICAgICAgIGxpc3QucHVzaCh6b25lT2JqZWN0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbmV4dFRva2VuID0gem9uZXM/Lm5leHRUb2tlbiA/PyBudWxsO1xyXG4gICAgICB9IHdoaWxlIChuZXh0VG9rZW4pO1xyXG4gICAgICByZXR1cm4gbGlzdDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignWm9uZXNCeVNwYWNlIG5vdCBpbXBsZW1lbnRlZCcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0Wm9uZXNCeVNwYWNlRm9yVXNlcihzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPFpvbmVbXT4ge1xyXG4gICAgY29uc3QgbWlzc2lvbkZvckxvY2F0aW9uID0gdGhpcy51c2VyU2VydmljZS5jdXJyZW50TWlzc2lvbihzcGFjZUlEKTtcclxuICAgIGNvbnN0IGxpc3QgPSBbXTtcclxuICAgIGlmIChtaXNzaW9uRm9yTG9jYXRpb24gJiYgbWlzc2lvbkZvckxvY2F0aW9uLnpvbmVJRCkge1xyXG4gICAgICBjb25zdCBhbGxvd2VkWm9uZSA9IGF3YWl0IHRoaXMuZ2V0Wm9uZShtaXNzaW9uRm9yTG9jYXRpb24uem9uZUlEKTtcclxuICAgICAgYWxsb3dlZFpvbmUudmlydHVhbCA9IHRoaXMuem9uZUlzVmlydHVhbChhbGxvd2VkWm9uZSk7XHJcbiAgICAgIGlmICghYWxsb3dlZFpvbmUucGFyZW50KSB7XHJcbiAgICAgICAgLy8gdGhlIHdob2xlIGJ1aWxkaW5nIGlzIGF1dGhvcml6ZWRcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRab25lc0J5U3BhY2Uoc3BhY2VJRCk7XHJcbiAgICAgIH1cclxuICAgICAgbGlzdC5wdXNoKGFsbG93ZWRab25lKTtcclxuICAgICAgLy8gYWxsb3cgYWxsIGNoaWxkcmVuIHpvbmVzIG9mIGFuIGFsbG93ZWQgcGFyZW50XHJcbiAgICAgIGNvbnN0IGNoaWxkcmVuID0gKGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5ab25lc0J5Wm9uZShhbGxvd2VkWm9uZS5pZCkpXHJcbiAgICAgICAgLml0ZW1zO1xyXG4gICAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIHtcclxuICAgICAgICAgIGNvbnN0IGNoaWxkWm9uZSA9IHsgLi4uY2hpbGQgfSBhcyBab25lO1xyXG4gICAgICAgICAgY2hpbGRab25lLnZpcnR1YWwgPSB0aGlzLnpvbmVJc1ZpcnR1YWwoY2hpbGQpO1xyXG4gICAgICAgICAgbGlzdC5wdXNoKGNoaWxkWm9uZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vIGFsbG93IHRoZSBwYXJlbnQgRmxvb3Igb2YgdGhlIGFsbG93ZWQgem9uZVxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgYWxsb3dlZFpvbmUucGFyZW50LmxheWVyICYmXHJcbiAgICAgICAgYWxsb3dlZFpvbmUucGFyZW50LmxheWVyLm5hbWUgPT09ICdGTE9PUidcclxuICAgICAgKSB7XHJcbiAgICAgICAgbGlzdC5wdXNoKGFsbG93ZWRab25lLnBhcmVudCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmdldFpvbmVzQnlTcGFjZShzcGFjZUlEKTtcclxuICAgIH1cclxuICAgIHJldHVybiBsaXN0O1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZmlsdGVyWm9uZXNJRHNGb3JVc2VyKHpvbmVzOiBab25lW10pOiBQcm9taXNlPFpvbmVbXT4ge1xyXG4gICAgY29uc3QgeyBzcGFjZUlEIH0gPSB6b25lc1swXTtcclxuICAgIGNvbnN0IHpvbmVJRHMgPSBuZXcgU2V0KHpvbmVzLm1hcCgoem9uZSkgPT4gem9uZS5pZCkpO1xyXG4gICAgY29uc3QgYWxsb3dlZFpvbmVzID0gYXdhaXQgdGhpcy5nZXRab25lc0J5U3BhY2VGb3JVc2VyKHNwYWNlSUQpO1xyXG4gICAgY29uc3QgZmlsdGVyZWRab25lcyA9IGFsbG93ZWRab25lcy5maWx0ZXIoKHpvbmUpID0+IHpvbmVJRHMuaGFzKHpvbmUuaWQpKTtcclxuICAgIHJldHVybiBmaWx0ZXJlZFpvbmVzO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZGVsZXRlWm9uZSh6b25lSUQ6IHN0cmluZyk6IFByb21pc2U8Wm9uZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuQVBJLl9fcHJvdG9fXy5EZWxldGVab25lKHsgaWQ6IHpvbmVJRCB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldFpvbmVzRm9yU3dlZXBGb3JTcGFjZShcclxuICAgIHN3ZWVwSUQ6IHN0cmluZyxcclxuICAgIHNwYWNlSUQ6IHN0cmluZ1xyXG4gICk6IFByb21pc2U8Wm9uZVtdPiB7XHJcbiAgICBjb25zdCB6b25lc1NwYWNlID0gKGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5ab25lc0J5U3BhY2Uoc3BhY2VJRCkpLml0ZW1zO1xyXG4gICAgcmV0dXJuIHpvbmVzU3BhY2UuZmlsdGVyKFxyXG4gICAgICAoem9uZSkgPT4gem9uZS5zd2VlcElEcyAmJiB6b25lLnN3ZWVwSURzLmluY2x1ZGVzKHN3ZWVwSUQpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLy8gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXNcclxuICBzb3J0Wm9uZXNGcm9tQ2hpbGRUb1BhcmVudCh6b25lc1RvU29ydDogWm9uZVtdKSB7XHJcbiAgICAvLyBnZXQgZGVmYXVsdFxyXG4gICAgY29uc3QgZGVmYXVsdFpvbmUgPSB6b25lc1RvU29ydC5maW5kKCh6KSA9PiAhei5wYXJlbnRJRCk7XHJcbiAgICBpZiAoZGVmYXVsdFpvbmUpIHtcclxuICAgICAgY29uc3QgaW5kZXhPZiA9IHpvbmVzVG9Tb3J0LmluZGV4T2YoZGVmYXVsdFpvbmUpO1xyXG4gICAgICB6b25lc1RvU29ydC5zcGxpY2UoaW5kZXhPZiwgMSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCB6b25lcyA9IHpvbmVzVG9Tb3J0LnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgaWYgKGEucGFyZW50SUQgPT09IGIuaWQpIHtcclxuICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIDA7XHJcbiAgICB9KTtcclxuICAgIC8vIHNvIGZhciBieSBudW1iZXIgb2YgbmF2aWdhdGlvbiBwb2ludHMgaW4gdGhlbVxyXG4gICAgLy8gY29uc3Qgem9uZXMgPSB6b25lc1RvU29ydC5zb3J0KFxyXG4gICAgLy8gICAgIChhLCBiKSA9PiBhLm5hdmlnYXRpb25zLml0ZW1zLmxlbmd0aCAtIGIubmF2aWdhdGlvbnMuaXRlbXMubGVuZ3RoLFxyXG4gICAgLy8gKTtcclxuICAgIGlmIChkZWZhdWx0Wm9uZSkge1xyXG4gICAgICB6b25lcy5wdXNoKGRlZmF1bHRab25lKTtcclxuICAgIH1cclxuICAgIHJldHVybiB6b25lcztcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldFpvbmVzRm9yT2JqZWN0KG9iamVjdDogRGJPYmplY3RUeXBlKTogUHJvbWlzZTxab25lW10+IHtcclxuICAgIGlmIChvYmplY3QucG9pcy5pdGVtcyAmJiBvYmplY3QucG9pcy5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IFtwb2ldID0gb2JqZWN0LnBvaXMuaXRlbXM7XHJcbiAgICAgIGlmIChwb2kubWF0dGVycG9ydFN3ZWVwSUQpIHtcclxuICAgICAgICBjb25zdCB6b25lcyA9IGF3YWl0IHRoaXMuZ2V0Wm9uZXNGb3JTd2VlcEZvclNwYWNlKFxyXG4gICAgICAgICAgcG9pLm1hdHRlcnBvcnRTd2VlcElELFxyXG4gICAgICAgICAgb2JqZWN0LnNwYWNlSURcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiB6b25lcztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBhc3luYyBjcmVhdGVWaXJ0dWFsWm9uZSh6b25lSW5wdXQ6IFpvbmUpOiBQcm9taXNlPFpvbmU+IHtcclxuICAgIHpvbmVJbnB1dC5zd2VlcElEcyA9IFtdO1xyXG4gICAgY29uc3Qgem9uZSA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5DcmVhdGVab25lKHpvbmVJbnB1dCk7XHJcbiAgICBjb25zb2xlLmxvZygndmlydHVhbCB6b25lIGNyZWF0ZWQnLCB6b25lKTtcclxuICAgIHJldHVybiB6b25lO1xyXG4gIH1cclxuXHJcbiAgem9uZUlzVmlydHVhbCh6b25lOiBab25lKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIXpvbmUuc3dlZXBJRHMpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgICh6b25lLnRhZ3MgJiYgem9uZS50YWdzLmluY2x1ZGVzKCd2aXJ0dWFsJykpIHx8XHJcbiAgICAgIHpvbmUuc3dlZXBJRHMubGVuZ3RoID09PSAwXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRNb2RlbDNERm9yWm9uZSh6b25lSUQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICBjb25zdCB6b25lID0gYXdhaXQgdGhpcy5BUEkuX19wcm90b19fLkdldFpvbmUoem9uZUlEKTtcclxuICAgIGlmICh6b25lLm5vZGVJRHMpIHtcclxuICAgICAgY29uc3Qgbm9kZSA9IGF3YWl0IHRoaXMuQVBJLl9fcHJvdG9fXy5HZXROb2RlKHpvbmUubm9kZUlEc1swXSk7XHJcbiAgICAgIHJldHVybiBub2RlLm1vZGVsM0Q7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldFpvbmUoem9uZUlEOiBzdHJpbmcpOiBQcm9taXNlPFpvbmU+IHtcclxuICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uR2V0Wm9uZSh6b25lSUQpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0RGVmYXVsdFpvbmVGb3JTcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPFpvbmU+IHtcclxuICAgIHJldHVybiB0aGlzLmdldFpvbmVzQnlTcGFjZShzcGFjZUlEKS50aGVuKGFzeW5jICh6b25lcykgPT4ge1xyXG4gICAgICBjb25zdCB6b25lc0J1aWxkaW5nID0gem9uZXMuZmlsdGVyKFxyXG4gICAgICAgICh6b25lKSA9PiB6b25lLmxheWVyICYmIHpvbmUubGF5ZXIubmFtZSA9PT0gJ0JVSUxESU5HJ1xyXG4gICAgICApO1xyXG4gICAgICBpZiAoem9uZXNCdWlsZGluZy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICByZXR1cm4gem9uZXNCdWlsZGluZ1swXTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBwYXJlbnRab25lID0gem9uZXMuZmluZCgoem9uZSkgPT4gIXpvbmUucGFyZW50SUQpO1xyXG4gICAgICByZXR1cm4gcGFyZW50Wm9uZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgY3JlYXRlKGlucHV0OiBab25lKTogUHJvbWlzZTxab25lPiB7XHJcbiAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fLkNyZWF0ZVpvbmUoaW5wdXQpO1xyXG4gIH1cclxuXHJcbiAgLy8gYXN5bmMgZ2V0U29ydGVkWm9uZXNGb3JTd2VlcEZvclVzZXIoXHJcbiAgLy8gICAgIHN3ZWVwOiBzdHJpbmcsXHJcbiAgLy8gICAgIHNwYWNlSUQ6IHN0cmluZyxcclxuICAvLyApOiBQcm9taXNlPFpvbmVbXT4ge1xyXG4gIC8vICAgICBpZiAoIXNwYWNlSUQpIHtcclxuICAvLyAgICAgICAgIHJldHVybiBbXTtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgICBjb25zdCB6b25lcyA9IGF3YWl0IHRoaXMuZ2V0Wm9uZXNGb3JTd2VlcEZvclNwYWNlKHN3ZWVwLCBzcGFjZUlEKTtcclxuICAvLyAgICAgaWYgKHpvbmVzLmxlbmd0aCA9PT0gMCkge1xyXG4gIC8vICAgICAgICAgcmV0dXJuIFtdO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICAgIGNvbnN0IGZpbHRlcmVkWm9uZXMgPSBhd2FpdCB0aGlzLmZpbHRlclpvbmVzSURzRm9yVXNlcih6b25lcyk7XHJcbiAgLy8gICAgIGlmIChmaWx0ZXJlZFpvbmVzLmxlbmd0aCA+IDApIHtcclxuICAvLyAgICAgICAgIGxldCB6b25lc1NvcnRlZCA9IHRoaXMuc29ydFpvbmVzRnJvbUNoaWxkVG9QYXJlbnQoZmlsdGVyZWRab25lcyk7XHJcbiAgLy8gICAgICAgICB6b25lc1NvcnRlZCA9IHpvbmVzU29ydGVkLmZpbHRlcigoem9uZSkgPT4gem9uZSAhPT0gdW5kZWZpbmVkKTtcclxuICAvLyAgICAgICAgIHJldHVybiB6b25lc1NvcnRlZDtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgICByZXR1cm4gW107XHJcbiAgLy8gfVxyXG5cclxuICBhc3luYyB1cGRhdGVab25lKGlucHV0OiBhbnkpOiBQcm9taXNlPFpvbmU+IHtcclxuICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uVXBkYXRlWm9uZShpbnB1dCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRab25lc0Zvck5vZGVGb3JTcGFjZShcclxuICAgIG5vZGVJRDogc3RyaW5nLFxyXG4gICAgc3BhY2VJRDogc3RyaW5nXHJcbiAgKTogUHJvbWlzZTxab25lW10+IHtcclxuICAgIHJldHVybiB0aGlzLkFQSS5fX3Byb3RvX18uWm9uZXNCeVNwYWNlKHNwYWNlSUQpLnRoZW4oYXN5bmMgKHpvbmVzKSA9PiB7XHJcbiAgICAgIGNvbnN0IGZpbHRlcmVkWm9uZXMgPSB6b25lcy5pdGVtcy5maWx0ZXIoXHJcbiAgICAgICAgKHpvbmUpID0+IHpvbmUubm9kZUlEcyAmJiB6b25lLm5vZGVJRHMuaW5jbHVkZXMobm9kZUlEKVxyXG4gICAgICApO1xyXG4gICAgICByZXR1cm4gZmlsdGVyZWRab25lcztcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgWm9uZSAobGF5ZXIgRkxPT1IpIGZvciBhIG1hdHRlcnBvcnQgc3dlZXAgSUQgaW4gYSBnaXZlbiBTcGFjZVxyXG4gICAqIEBwYXJhbSBzd2VlcElEXHJcbiAgICogQHBhcmFtIHNwYWNlSURcclxuICAgKiBAcmV0dXJucyBab25lXHJcbiAgICovXHJcbiAgYXN5bmMgZ2V0Rmxvb3Jab25lRm9yU3dlZXBJblNwYWNlKFxyXG4gICAgc3dlZXBJRDogc3RyaW5nLFxyXG4gICAgc3BhY2VJRDogc3RyaW5nXHJcbiAgKTogUHJvbWlzZTxab25lPiB7XHJcbiAgICBjb25zdCB6b25lcyA9IGF3YWl0IHRoaXMuZ2V0Wm9uZXNGb3JTd2VlcEZvclNwYWNlKHN3ZWVwSUQsIHNwYWNlSUQpO1xyXG4gICAgY29uc3QgZmxvb3JzID0gem9uZXMuZmlsdGVyKFxyXG4gICAgICAoem9uZSkgPT4gem9uZS5sYXllciAmJiB6b25lLmxheWVyLm5hbWUuaW5jbHVkZXMoJ0ZMT09SJylcclxuICAgICk7XHJcbiAgICByZXR1cm4gZmxvb3JzLmxlbmd0aCA+IDAgPyBmbG9vcnNbMF0gOiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHpvbmVzIHdpdGggYXVkaW8gdHJhY2sgZm9yIGVudGlyZSBzcGFjZVxyXG4gICAqIEBwYXJhbSBzcGFjZUlEXHJcbiAgICogQHJldHVybnMgIFByb21pc2U8Wm9uZVtdPlxyXG4gICAqL1xyXG4gIGFzeW5jIGdldEF1ZGlvWm9uZXNGb3JTcGFjZShzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPFpvbmVbXT4ge1xyXG4gICAgY29uc3QgYWxsWm9uZXMgPSBhd2FpdCB0aGlzLmdldFpvbmVzQnlTcGFjZShzcGFjZUlEKTtcclxuICAgIHJldHVybiBhbGxab25lcy5maWx0ZXIoKHpvbmUpID0+IHpvbmUuYXVkaW9JRCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgYXVkaW8gem9uZXMgZm9yIHVzZXIgKHdpdGhpbiBhbGxvd2VkIHpvbmVzKVxyXG4gICAqIEBwYXJhbSBzcGFjZUlEXHJcbiAgICogQHJldHVybnMgIFByb21pc2U8Wm9uZVtdPlxyXG4gICAqL1xyXG4gIGFzeW5jIGdldEF1ZGlvWm9uZXNGb3JVc2VyRm9yU3BhY2Uoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxab25lW10+IHtcclxuICAgIGNvbnN0IHVzZXJab25lcyA9IGF3YWl0IHRoaXMuZ2V0Wm9uZXNCeVNwYWNlRm9yVXNlcihzcGFjZUlEKTtcclxuICAgIHJldHVybiB1c2VyWm9uZXMuZmlsdGVyKCh6b25lKSA9PiB6b25lLmF1ZGlvSUQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IFpvbmVzIGJ5IFBhcmVudCBab25lIElEXHJcbiAgICogQHBhcmFtIHBhcmVudFpvbmVJRCBzdHJpbmdcclxuICAgKiBAcmV0dXJucyBQcm9taXNlPFpvbmVbXT5cclxuICAgKi9cclxuICBhc3luYyBnZXRab25lc0J5UGFyZW50Wm9uZShwYXJlbnRab25lSUQ6IHN0cmluZyk6IFByb21pc2U8Wm9uZVtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5BUEkuX19wcm90b19fXHJcbiAgICAgIC5ab25lc0J5Wm9uZShwYXJlbnRab25lSUQpXHJcbiAgICAgIC50aGVuKChyZXMpID0+IHJlcy5pdGVtcyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -249,4 +249,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
249
249
  providedIn: 'root',
250
250
  }]
251
251
  }], ctorParameters: () => [{ type: i1.MatterportService }, { type: i2.ViewerService }, { type: i3.ZoneService }, { type: i4.BaseUserService }, { type: i5.ZoneChangeService }, { type: i6.Router }, { type: i6.ActivatedRoute }] });
252
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL25hdmlnYXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBWXZDLE1BQU0sT0FBTyxnQkFBZ0I7SUF1Q2pCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBNUNWLFlBQVksQ0FBZ0I7SUFFNUIsV0FBVyxDQUFnQjtJQUUzQixjQUFjLENBQWtDO0lBRWhELGNBQWMsQ0FBZ0I7SUFFOUIsY0FBYyxDQUFnQjtJQUU5QixXQUFXLENBQWM7SUFFekIsaUJBQWlCLEdBQWtELElBQUksR0FBRyxFQUFFLENBQUM7SUFFN0UsU0FBUyxDQUFjO0lBRXZCLGdCQUFnQixHQUEyQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRXpELGtCQUFrQixHQUEyQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRTNELGdCQUFnQixHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7SUFFMUMsdUJBQXVCLENBQVM7SUFFaEMsbUJBQW1CLENBQVM7SUFFNUIsMEJBQTBCLENBQWdCO0lBRTFDLGdCQUFnQixHQUFvQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRWxELG9CQUFvQixDQUFnQjtJQUVwQyxpQkFBaUIsQ0FBUztJQUUxQix5QkFBeUIsQ0FBUztJQUdsQyxZQUNVLGlCQUFvQyxFQUNwQyxhQUE0QixFQUM1QixXQUF3QixFQUN4QixXQUE0QixFQUM1QixpQkFBb0MsRUFDcEMsTUFBYyxFQUNkLEtBQXFCO1FBTnJCLHNCQUFpQixHQUFqQixp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Q0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5RCxDQUFDO1lBQ0QsT0FBTyxDQUFDLENBQUMsUUFBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsUUFBUyxDQUFDLE1BQU0sQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQzVDLElBQUksQ0FBQywwQkFBMEIsQ0FDaEMsQ0FBQztRQUVGLElBQ0UsSUFBSSxDQUFDLDBCQUEwQixDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQzFDLElBQUksQ0FBQyxXQUFXLEtBQUssSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxFQUN2RCxDQUFDO1lBQ0QsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDO1lBQ3JELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzRCxDQUFDO1FBQ0QsSUFBSTtJQUNOLENBQUM7d0dBblNVLGdCQUFnQjs0R0FBaEIsZ0JBQWdCLGNBRmYsTUFBTTs7NEZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgWm9uZSB9IGZyb20gJy4uL3R5cGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWF0dGVycG9ydFNlcnZpY2UgfSBmcm9tICcuL21hdHRlcnBvcnQuc2VydmljZSc7XG5pbXBvcnQgeyBab25lU2VydmljZSB9IGZyb20gJy4vbW9kZWxzL3pvbmUuc2VydmljZSc7XG5pbXBvcnQgeyBab25lQ2hhbmdlU2VydmljZSB9IGZyb20gJy4vem9uZUNoYW5nZS5zZXJ2aWNlJztcbmltcG9ydCB7IEJhc2VVc2VyU2VydmljZSB9IGZyb20gJy4vdXNlci5zZXJ2aWNlJztcbmltcG9ydCB7IFZpZXdlclNlcnZpY2UgfSBmcm9tICcuL3ZpZXdlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTmF2aWdhdG9yU2VydmljZSB7XG4gIGN1cnJlbnRTd2VlcDogc3RyaW5nIHwgbnVsbDtcblxuICB0YXJnZXRTd2VlcDogc3RyaW5nIHwgbnVsbDtcblxuICB0YXJnZXRSb3RhdGlvbjogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9IHwgbnVsbDtcblxuICBjdXJyZW50TW9kZWwzRDogc3RyaW5nIHwgbnVsbDtcblxuICBjdXJyZW50U3BhY2VJRDogc3RyaW5nIHwgbnVsbDtcblxuICBjdXJyZW50Wm9uZTogWm9uZSB8IG51bGw7XG5cbiAgdmlzaXRMYXN0UG9zaXRpb246IE1hcDxzdHJpbmcsIHsgc3dlZXA6IHN0cmluZzsgcm90YXRpb246IGFueSB9PiA9IG5ldyBNYXAoKTtcblxuICBmbG9vclRvR286IFpvbmUgfCBudWxsO1xuXG4gIGxvY2F0aW9uSURDaGFuZ2U6IFN1YmplY3Q8c3RyaW5nIHwgbnVsbD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIG5hdkJhclpvbmVJRENoYW5nZTogU3ViamVjdDxzdHJpbmcgfCBudWxsPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgaXNWaXNpYmxlQ2hhbmdlZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgY3VycmVudE5hdkJhckxvY2F0aW9uSUQ6IHN0cmluZztcblxuICBjdXJyZW50TmF2QmFyWm9uZUlEOiBzdHJpbmc7XG5cbiAgem9uZXNTb3J0ZWRGb3JDdXJyZW50U3dlZXA6IFpvbmVbXSB8IG51bGw7XG5cbiAgYXVkaW9ab25lc0NoYW5nZTogU3ViamVjdDxab25lW10+ID0gbmV3IFN1YmplY3QoKTtcblxuICB6b25lc0ZvclVzZXJGb3JTcGFjZTogWm9uZVtdIHwgbnVsbDtcblxuICBjdXJyZW50QXVkaW9ab25lczogWm9uZVtdO1xuXG4gIGF1ZGlvWm9uZXNGb3JVc2VyRm9yU3BhY2U6IFpvbmVbXTtcblxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbWF0dGVycG9ydFNlcnZpY2U6IE1hdHRlcnBvcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdmlld2VyU2VydmljZTogVmlld2VyU2VydmljZSxcbiAgICBwcml2YXRlIHpvbmVTZXJ2aWNlOiBab25lU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBCYXNlVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSB6b25lQ2hhbmdlU2VydmljZTogWm9uZUNoYW5nZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgKSB7XG4gICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5jdXJyZW50U3dlZXBcbiAgICAgIC5waXBlKGZpcnN0KCkpIC8vICB0YWtlIGZpcnN0IGluIG9yZGVyIG5vdCB0byB3YWl0IDIgc2VjIGFuIGZpcnN0IGxvYWRcbiAgICAgIC5zdWJzY3JpYmUoKHN3ZWVwOiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW50U3dlZXAgPSBzd2VlcDtcbiAgICAgICAgaWYgKHRoaXMuem9uZXNGb3JVc2VyRm9yU3BhY2UpIHtcbiAgICAgICAgICB0aGlzLnNldFpvbmVzRm9yQ3VycmVudFN3ZWVwKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuY3VycmVudFN3ZWVwXG4gICAgICAvLy5waXBlKGRlYm91bmNlVGltZTxzdHJpbmc+KDE1MDApKSAvLyAgZGVsYXlzIHZhbHVlcyBlbWl0dGVkIGFuZCByZXR1cm4gb25seSB0aGUgbGF0ZXN0XG4gICAgICAuc3Vic2NyaWJlKChzd2VlcDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmIChzd2VlcCA9PT0gdGhpcy5jdXJyZW50U3dlZXApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdXJyZW50U3dlZXAgPSBzd2VlcDtcbiAgICAgICAgaWYgKHRoaXMuem9uZXNGb3JVc2VyRm9yU3BhY2UpIHtcbiAgICAgICAgICB0aGlzLnNldFpvbmVzRm9yQ3VycmVudFN3ZWVwKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIHRoaXMudmlld2VyU2VydmljZS52aWV3ZXJJc09uLnN1YnNjcmliZShcbiAgICAgIChkYXRhOiB7XG4gICAgICAgIHNwYWNlSUQ6IHN0cmluZyB8IG51bGw7XG4gICAgICAgIG1vZGVsM0Q6IHN0cmluZyB8IG51bGw7XG4gICAgICAgIHN3ZWVwOiBzdHJpbmcgfCBudWxsO1xuICAgICAgICByb3RhdGlvbjogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9IHwgbnVsbDtcbiAgICAgIH0pID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFNwYWNlSUQgIT09IGRhdGEuc3BhY2VJRCkge1xuICAgICAgICAgIHRoaXMuY3VycmVudFNwYWNlSUQgPSBkYXRhLnNwYWNlSUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFkYXRhLnNwYWNlSUQpIHtcbiAgICAgICAgICB0aGlzLnpvbmVzRm9yVXNlckZvclNwYWNlID0gbnVsbDtcbiAgICAgICAgICB0aGlzLnpvbmVzU29ydGVkRm9yQ3VycmVudFN3ZWVwID0gbnVsbDtcbiAgICAgICAgICB0aGlzLmF1ZGlvWm9uZXNGb3JVc2VyRm9yU3BhY2UgPSBudWxsO1xuICAgICAgICAgIHRoaXMuY3VycmVudFpvbmUgPSBudWxsO1xuICAgICAgICAgIHRoaXMuem9uZUNoYW5nZVNlcnZpY2Uuem9uZUNoYW5nZS5uZXh0KG51bGwpO1xuICAgICAgICAgIHRoaXMuem9uZUNoYW5nZVNlcnZpY2Uuc3BhY2VXaXRob3V0Wm9uZXMubmV4dChudWxsKTtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRTd2VlcCA9IG51bGw7XG4gICAgICAgICAgLy8gc2F2ZSBsYXN0IHBvc2l0aW9uXG4gICAgICAgICAgY29uc3QgbGFzdFBvc2UgPSB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLnBvc2VDYW1lcmE7XG4gICAgICAgICAgaWYgKGxhc3RQb3NlICYmIHRoaXMuY3VycmVudE1vZGVsM0QgJiYgdGhpcy51c2VyU2VydmljZS5jdSkge1xuICAgICAgICAgICAgdGhpcy52aXNpdExhc3RQb3NpdGlvbi5zZXQodGhpcy5jdXJyZW50TW9kZWwzRCwge1xuICAgICAgICAgICAgICAvKipPdmVycmlkZSBzd2VlcC9yb3RhdGlvbiBpZiBleGlzdCAqL1xuICAgICAgICAgICAgICBzd2VlcDogdGhpcy50YXJnZXRTd2VlcCA/PyBsYXN0UG9zZS5zd2VlcCxcbiAgICAgICAgICAgICAgcm90YXRpb246IHRoaXMudGFyZ2V0Um90YXRpb24gPz8gbGFzdFBvc2Uucm90YXRpb24sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5jdXJyZW50TW9kZWwzRCA9IGRhdGEubW9kZWwzRDtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnZpZXdlclNlcnZpY2UuY2hlY2tNb2RlKCd0aHJlZWpzJykpIHtcbiAgICAgICAgICAvLyBBIDNEIG1vZGVsIGhhcyBubyBzd2VlcHMsIGFuZCBldmVyeSB6b25lIGlzIGRlZmluZWQgYnkgdGhlIHN3ZWVwcyBpdCBjb250YWlucywgc29cbiAgICAgICAgICAvLyBvblZpZXdlckxvYWRlZCgpIHdvdWxkIHJlc29sdmUgbm8gem9uZSBhbmQgYHpvbmVDaGFuZ2VgIHdvdWxkIG5ldmVyIGZpcmUgLSBsZWF2aW5nIHRoZVxuICAgICAgICAgIC8vIHNlcnZpY2VzIHRoYXQgbG9hZCB0aWNrZXRzLCBlcXVpcG1lbnRzIGFuZCBmZWF0dXJlcyB3aXRoIG5vIHNwYWNlIHRvIGxvYWQgdGhlbSBmb3IuXG4gICAgICAgICAgdGhpcy5jdXJyZW50TW9kZWwzRCA9IGRhdGEubW9kZWwzRDtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRTd2VlcCA9IG51bGw7XG4gICAgICAgICAgdGhpcy5jdXJyZW50Wm9uZSA9IG51bGw7XG4gICAgICAgICAgdGhpcy56b25lc0ZvclVzZXJGb3JTcGFjZSA9IG51bGw7XG4gICAgICAgICAgdGhpcy56b25lc1NvcnRlZEZvckN1cnJlbnRTd2VlcCA9IG51bGw7XG4gICAgICAgICAgdGhpcy56b25lQ2hhbmdlU2VydmljZS56b25lc0ZvclVzZXJDaGFuZ2UubmV4dChudWxsKTtcbiAgICAgICAgICB0aGlzLnpvbmVDaGFuZ2VTZXJ2aWNlLnNwYWNlV2l0aG91dFpvbmVzLm5leHQodGhpcy5jdXJyZW50U3BhY2VJRCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5jdXJyZW50TW9kZWwzRCA9IGRhdGEubW9kZWwzRDtcbiAgICAgICAgICAvKipPdmVycmlkZSBzd2VlcC9yb3RhdGlvbiBpZiBleGlzdC4gVGFyZ2V0IGlzIHJlc2V0IGFmdGVyIChudWxsKSovXG4gICAgICAgICAgdGhpcy50YXJnZXRTd2VlcCA9IHRoaXMudGFyZ2V0U3dlZXAgPz8gZGF0YS5zd2VlcDtcbiAgICAgICAgICB0aGlzLnRhcmdldFJvdGF0aW9uID0gdGhpcy50YXJnZXRSb3RhdGlvbiA/PyBkYXRhLnJvdGF0aW9uO1xuICAgICAgICAgIHRoaXMub25WaWV3ZXJMb2FkZWQoKS5jYXRjaCgoZSkgPT4gY29uc29sZS5sb2coZSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLmlzQ2hhbmdlZC5zdWJzY3JpYmUoKGlzQ29ubmVjdGVkKSA9PiB7XG4gICAgICBpZiAoIWlzQ29ubmVjdGVkKSB7XG4gICAgICAgIC8vIHVzZXIgZGlzY29ubmVjdGVkLCBjbGVhbiBNYXBcbiAgICAgICAgdGhpcy52aXNpdExhc3RQb3NpdGlvbiA9IG5ldyBNYXAoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XG4gICAgICBjb25zdCBkZWVwUGFyYW1zQmFzZTY0ID0gcGFyYW1zWydkZWVwUGFyYW1zJ107XG4gICAgICBpZiAoZGVlcFBhcmFtc0Jhc2U2NCkge1xuICAgICAgICBjb25zdCBkZWVwUGFyYW1zOiBhbnkgPSBKU09OLnBhcnNlKGF0b2IoZGVlcFBhcmFtc0Jhc2U2NCkpO1xuICAgICAgICB0aGlzLnRhcmdldFN3ZWVwID0gZGVlcFBhcmFtcy5zd2VlcElEO1xuICAgICAgICB0aGlzLnRhcmdldFJvdGF0aW9uID0gZGVlcFBhcmFtcy5yb3RhdGlvbjtcblxuICAgICAgICAvKipDbGVhciB0aGlzIHF1ZXJ5IHBhcmFtcyAqL1xuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwge1xuICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7IGRlZXBQYXJhbXM6IG51bGwgfSwgcXVlcnlQYXJhbXNIYW5kbGluZzogXCJtZXJnZVwiXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cblxuICBnZXREZWVwTGluaygpOiBzdHJpbmcge1xuICAgIGxldCBkYXRhID0gbnVsbDtcblxuICAgIGlmICh0aGlzLmN1cnJlbnRTd2VlcCkgeyAvKipUb2RvIGNoZWNrIG1hdHRlcnBvcnQgbW9kIGFuZCBhZGFwdCAqL1xuICAgICAgZGF0YSA9IHtcbiAgICAgICAgc3dlZXBJRDogdGhpcy5jdXJyZW50U3dlZXAsXG4gICAgICAgIHJvdGF0aW9uOiB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmdldEN1cnJlbnRDYW1lcmFQb3NpdGlvbigpLnJvdGF0aW9uXG4gICAgICB9O1xuXG4gICAgICBkYXRhID0gYnRvYShKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gICAgfVxuXG4gICAgY29uc3QgbW9kZWwzRCA9IHRoaXMuY3VycmVudE1vZGVsM0Q7XG5cbiAgICBjb25zdCB1cmwgPSB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFtdLCB7XG4gICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLFxuICAgICAgcXVlcnlQYXJhbXM6IHsgZGVlcFBhcmFtczogZGF0YSwgbW9kZWwzRCB9LFxuICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogXCJtZXJnZVwiXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYCR7bG9jYXRpb24ub3JpZ2lufSR7dXJsLnRvU3RyaW5nKCl9YDtcbiAgfVxuXG4gIGdldExhc3RQb3NpdGlvbkZvck1vZGVsKG1vZGVsM0Q6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnZpc2l0TGFzdFBvc2l0aW9uLmdldChtb2RlbDNEKTtcbiAgfVxuXG4gIGdvVG9Td2VlcFdpdGhSb3RhdGlvbihcbiAgICBzd2VlcDogc3RyaW5nLFxuICAgIHJvdGF0aW9uOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0gfCBudWxsID0gbnVsbFxuICApIHtcbiAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmFjdGlvbl9nb190b19zd2VlcChzd2VlcCwgcm90YXRpb24pO1xuICB9XG5cbiAgYXN5bmMgZ29Ub0Zsb29yKGZsb29yOiBab25lKSB7XG4gICAgbGV0IG1hdHRlcnBvcnRGbG9vclNlcXVlbmNlID0gbnVsbDtcbiAgICBpZiAoZmxvb3IubWV0YWRhdGEpIHtcbiAgICAgIGNvbnN0IG1ldGFkYXRhID0gSlNPTi5wYXJzZShmbG9vci5tZXRhZGF0YSk7XG4gICAgICBpZiAobWV0YWRhdGEubWF0dGVycG9ydEZsb29yU2VxdWVuY2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBtYXR0ZXJwb3J0Rmxvb3JTZXF1ZW5jZSA9IG1ldGFkYXRhLm1hdHRlcnBvcnRGbG9vclNlcXVlbmNlO1xuICAgICAgfVxuICAgIH1cbiAgICBhd2FpdCB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmFjdGlvbl9nb190b19mbG9vcihcbiAgICAgIGZsb29yLm5hbWUsXG4gICAgICBtYXR0ZXJwb3J0Rmxvb3JTZXF1ZW5jZVxuICAgICk7XG4gIH1cblxuICBhc3luYyBvblZpZXdlckxvYWRlZCgpIHtcbiAgICBsZXQgc3dlZXBUb0dvOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgcm90YXRpb246IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSB8IG51bGwgPSBudWxsO1xuICAgIGlmICh0aGlzLnRhcmdldFN3ZWVwKSB7XG4gICAgICBzd2VlcFRvR28gPSB0aGlzLnRhcmdldFN3ZWVwO1xuICAgICAgcm90YXRpb24gPSB0aGlzLnRhcmdldFJvdGF0aW9uXG4gICAgICAgID8gdGhpcy50YXJnZXRSb3RhdGlvblxuICAgICAgICA6IHRoaXMuY2hlY2tSb3RhdGlvbkZvclN3ZWVwKHRoaXMudGFyZ2V0U3dlZXApO1xuICAgICAgLyoqUmVzZXQgLyBDb25zdW1lIHRhcmdldCAqL1xuICAgICAgdGhpcy50YXJnZXRSb3RhdGlvbiA9IG51bGw7XG4gICAgICB0aGlzLnRhcmdldFN3ZWVwID0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbGFzdFBvc3Rpb24gPSB0aGlzLmdldExhc3RQb3NpdGlvbkZvck1vZGVsKHRoaXMuY3VycmVudE1vZGVsM0QhKTtcbiAgICAgIGlmIChsYXN0UG9zdGlvbikge1xuICAgICAgICBzd2VlcFRvR28gPSBsYXN0UG9zdGlvbi5zd2VlcDtcbiAgICAgICAgcm90YXRpb24gPSBsYXN0UG9zdGlvbi5yb3RhdGlvbjtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMudGFyZ2V0Um90YXRpb24pIHtcbiAgICAgIHJvdGF0aW9uID0gdGhpcy50YXJnZXRSb3RhdGlvbjtcbiAgICB9XG4gICAgaWYgKHN3ZWVwVG9HbyAmJiAhdGhpcy5mbG9vclRvR28pIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKFwiZ28gdG8gc3dlZXBcIiwgc3dlZXBUb0dvKTtcbiAgICAgIHRoaXMuZ29Ub1N3ZWVwV2l0aFJvdGF0aW9uKHN3ZWVwVG9Hbywgcm90YXRpb24pO1xuICAgIH1cbiAgICBpZiAodGhpcy5mbG9vclRvR28pIHtcbiAgICAgIHRoaXMuZ29Ub0Zsb29yKHRoaXMuZmxvb3JUb0dvKTtcbiAgICAgIHRoaXMuZmxvb3JUb0dvID0gbnVsbDtcbiAgICB9XG4gICAgLy8gaWYgZmlyc3QgbG9hZCBhbmQgem9uZXMgYXJlIG5vdCBzZXRcbiAgICB0aGlzLnpvbmVzRm9yVXNlckZvclNwYWNlID0gYXdhaXQgdGhpcy56b25lU2VydmljZS5nZXRab25lc0J5U3BhY2VGb3JVc2VyKFxuICAgICAgdGhpcy5jdXJyZW50U3BhY2VJRFxuICAgICk7XG4gICAgdGhpcy5hdWRpb1pvbmVzRm9yVXNlckZvclNwYWNlID0gdGhpcy56b25lc0ZvclVzZXJGb3JTcGFjZS5maWx0ZXIoXG4gICAgICAoem9uZSkgPT4gem9uZS5hdWRpb0lEXG4gICAgKTtcblxuICAgIHRoaXMuem9uZXNGb3JVc2VyRm9yU3BhY2UgPSBhd2FpdCB0aGlzLnpvbmVTZXJ2aWNlLmdldFpvbmVzQnlTcGFjZUZvclVzZXIoXG4gICAgICB0aGlzLmN1cnJlbnRTcGFjZUlEXG4gICAgKTtcbiAgICB0aGlzLmF1ZGlvWm9uZXNGb3JVc2VyRm9yU3BhY2UgPSB0aGlzLnpvbmVzRm9yVXNlckZvclNwYWNlLmZpbHRlcihcbiAgICAgICh6b25lKSA9PiB6b25lLmF1ZGlvSURcbiAgICApO1xuXG4gICAgaWYgKCF0aGlzLmN1cnJlbnRTd2VlcCkge1xuICAgICAgdGhpcy5jdXJyZW50U3dlZXAgPSB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmdldEN1cnJlbnRTd2VlcCgpO1xuICAgIH1cblxuICAgIHRoaXMuc2V0Wm9uZXNGb3JDdXJyZW50U3dlZXAoKTtcbiAgfVxuXG4gIGNoZWNrUm90YXRpb25Gb3JTd2VlcChzd2VlcDogc3RyaW5nKTogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9IHwgbnVsbCB7XG4gICAgY29uc3QgbGFzdFBvc2l0aW9uID0gdGhpcy52aXNpdExhc3RQb3NpdGlvbi5nZXQodGhpcy5jdXJyZW50TW9kZWwzRCEpO1xuICAgIGlmIChsYXN0UG9zaXRpb24gJiYgbGFzdFBvc2l0aW9uLnN3ZWVwID09PSBzd2VlcCkge1xuICAgICAgcmV0dXJuIGxhc3RQb3NpdGlvbi5yb3RhdGlvbjtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBzZXRab25lc0ZvckN1cnJlbnRTd2VlcCgpIHtcbiAgICBpZiAoIXRoaXMuY3VycmVudFN3ZWVwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gY3VycmVudFN3ZWVwIGlzIGFscmVhZHkgYSB1dWlkICh0cmFuc2xhdGVkIGF0IHRoZSBzb3VyY2UgaW4gTWF0dGVycG9ydFNlcnZpY2UpLFxuICAgIC8vIHNvIGl0IG1hdGNoZXMgZGlyZWN0bHkgYWdhaW5zdCB6b25lLnN3ZWVwSURzIHdoaWNoIHN0b3JlIHV1aWRzIGZyb20gdGhlIGltcG9ydC5cbiAgICBsZXQgem9uZXNGb3JTd2VlcCA9IHRoaXMuem9uZXNGb3JVc2VyRm9yU3BhY2U/LmZpbHRlcihcbiAgICAgICh6b25lKSA9PiB6b25lLnN3ZWVwSURzICYmIHpvbmUuc3dlZXBJRHMuaW5jbHVkZXModGhpcy5jdXJyZW50U3dlZXApXG4gICAgKTtcbiAgICBjb25zdCBhdWRpb1pvbmVzID0gdGhpcy5hdWRpb1pvbmVzRm9yVXNlckZvclNwYWNlPy5maWx0ZXIoXG4gICAgICAoem9uZSkgPT4gem9uZS5zd2VlcElEcyAmJiB6b25lLnN3ZWVwSURzLmluY2x1ZGVzKHRoaXMuY3VycmVudFN3ZWVwKVxuICAgICk7XG4gICAgdGhpcy5hdWRpb1pvbmVzQ2hhbmdlLm5leHQoYXVkaW9ab25lcyk7XG4gICAgdGhpcy5jdXJyZW50QXVkaW9ab25lcyA9IGF1ZGlvWm9uZXM7XG5cbiAgICAvLyBmaWx0ZXIgb3V0IGF1ZGlvIHpvbmUgKG5vdCB0byBzaG93IHRvIHVzZXIgaXQncyBuYW1lKVxuICAgIHpvbmVzRm9yU3dlZXAgPSB6b25lc0ZvclN3ZWVwLmZpbHRlcigoem9uZSkgPT4gIXpvbmUuYXVkaW8pO1xuICAgIC8vIExJTkUgQkVMT1cgSVMgQ09NTUVOVEVEIFNJTkNFIENSRUFURVMgSU5GSU5JVEUgU1BJTk5FUiBGT1IgWk9ORVMgV0lUSE9VVCBBVURJTy4uLlxuICAgIC8vIGlmICh6b25lc0ZvclN3ZWVwICYmIHpvbmVzRm9yU3dlZXAubGVuZ3RoID4gMCkge1xuICAgIHRoaXMuem9uZXNTb3J0ZWRGb3JDdXJyZW50U3dlZXAgPSB6b25lc0ZvclN3ZWVwLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIGlmIChhLnN3ZWVwSURzIS5sZW5ndGggPT09IGIuc3dlZXBJRHMhLmxlbmd0aCkge1xuICAgICAgICAvLyBpZiB0aGUgc2FtZSBhbW91bnQgb2Ygc3dlZXBzOiBmbG9vciA9PSB0aGUgd2hvbGUgc3BhY2VcbiAgICAgICAgaWYgKGEubGF5ZXIgJiYgYi5sYXllcikge1xuICAgICAgICAgIC8vIHB1dCB0eXBlIEJVSUxESU5HIGF0IHRoZSBlbmRcbiAgICAgICAgICByZXR1cm4gYS5sYXllci5uYW1lICE9PSAnQlVJTERJTkcnXG4gICAgICAgICAgICA/IC0xXG4gICAgICAgICAgICA6IGIubGF5ZXIubmFtZSAhPT0gJ0JVSUxESU5HJ1xuICAgICAgICAgICAgICA/IDFcbiAgICAgICAgICAgICAgOiAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhLnBhcmVudD8uc3dlZXBJRHMgPyAtMSA6IGIucGFyZW50Py5zd2VlcElEcyA/IDEgOiAwO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGEuc3dlZXBJRHMhLmxlbmd0aCAtIGIuc3dlZXBJRHMhLmxlbmd0aDtcbiAgICB9KTtcbiAgICB0aGlzLnpvbmVDaGFuZ2VTZXJ2aWNlLnpvbmVzRm9yVXNlckNoYW5nZS5uZXh0KFxuICAgICAgdGhpcy56b25lc1NvcnRlZEZvckN1cnJlbnRTd2VlcFxuICAgICk7XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLnpvbmVzU29ydGVkRm9yQ3VycmVudFN3ZWVwLmxlbmd0aCA+IDAgJiZcbiAgICAgIHRoaXMuY3VycmVudFpvbmUgIT09IHRoaXMuem9uZXNTb3J0ZWRGb3JDdXJyZW50U3dlZXBbMF1cbiAgICApIHtcbiAgICAgIFt0aGlzLmN1cnJlbnRab25lXSA9IHRoaXMuem9uZXNTb3J0ZWRGb3JDdXJyZW50U3dlZXA7XG4gICAgICB0aGlzLnpvbmVDaGFuZ2VTZXJ2aWNlLnpvbmVDaGFuZ2UubmV4dCh0aGlzLmN1cnJlbnRab25lKTtcbiAgICB9XG4gICAgLy8gfVxuICB9XG59XG4iXX0=
252
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL25hdmlnYXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBWXZDLE1BQU0sT0FBTyxnQkFBZ0I7SUF1Q2pCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBNUNWLFlBQVksQ0FBZ0I7SUFFNUIsV0FBVyxDQUFnQjtJQUUzQixjQUFjLENBQWtDO0lBRWhELGNBQWMsQ0FBZ0I7SUFFOUIsY0FBYyxDQUFnQjtJQUU5QixXQUFXLENBQWM7SUFFekIsaUJBQWlCLEdBQWtELElBQUksR0FBRyxFQUFFLENBQUM7SUFFN0UsU0FBUyxDQUFjO0lBRXZCLGdCQUFnQixHQUEyQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRXpELGtCQUFrQixHQUEyQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRTNELGdCQUFnQixHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7SUFFMUMsdUJBQXVCLENBQVM7SUFFaEMsbUJBQW1CLENBQVM7SUFFNUIsMEJBQTBCLENBQWdCO0lBRTFDLGdCQUFnQixHQUFvQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRWxELG9CQUFvQixDQUFnQjtJQUVwQyxpQkFBaUIsQ0FBUztJQUUxQix5QkFBeUIsQ0FBUztJQUdsQyxZQUNVLGlCQUFvQyxFQUNwQyxhQUE0QixFQUM1QixXQUF3QixFQUN4QixXQUE0QixFQUM1QixpQkFBb0MsRUFDcEMsTUFBYyxFQUNkLEtBQXFCO1FBTnJCLHNCQUFpQixHQUFqQixp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Q0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5RCxDQUFDO1lBQ0QsT0FBTyxDQUFDLENBQUMsUUFBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsUUFBUyxDQUFDLE1BQU0sQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQzVDLElBQUksQ0FBQywwQkFBMEIsQ0FDaEMsQ0FBQztRQUVGLElBQ0UsSUFBSSxDQUFDLDBCQUEwQixDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQzFDLElBQUksQ0FBQyxXQUFXLEtBQUssSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxFQUN2RCxDQUFDO1lBQ0QsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDO1lBQ3JELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzRCxDQUFDO1FBQ0QsSUFBSTtJQUNOLENBQUM7d0dBblNVLGdCQUFnQjs0R0FBaEIsZ0JBQWdCLGNBRmYsTUFBTTs7NEZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgWm9uZSB9IGZyb20gJy4uL3R5cGVzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBNYXR0ZXJwb3J0U2VydmljZSB9IGZyb20gJy4vbWF0dGVycG9ydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgWm9uZVNlcnZpY2UgfSBmcm9tICcuL21vZGVscy96b25lLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBab25lQ2hhbmdlU2VydmljZSB9IGZyb20gJy4vem9uZUNoYW5nZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmFzZVVzZXJTZXJ2aWNlIH0gZnJvbSAnLi91c2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBWaWV3ZXJTZXJ2aWNlIH0gZnJvbSAnLi92aWV3ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5hdmlnYXRvclNlcnZpY2Uge1xyXG4gIGN1cnJlbnRTd2VlcDogc3RyaW5nIHwgbnVsbDtcclxuXHJcbiAgdGFyZ2V0U3dlZXA6IHN0cmluZyB8IG51bGw7XHJcblxyXG4gIHRhcmdldFJvdGF0aW9uOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0gfCBudWxsO1xyXG5cclxuICBjdXJyZW50TW9kZWwzRDogc3RyaW5nIHwgbnVsbDtcclxuXHJcbiAgY3VycmVudFNwYWNlSUQ6IHN0cmluZyB8IG51bGw7XHJcblxyXG4gIGN1cnJlbnRab25lOiBab25lIHwgbnVsbDtcclxuXHJcbiAgdmlzaXRMYXN0UG9zaXRpb246IE1hcDxzdHJpbmcsIHsgc3dlZXA6IHN0cmluZzsgcm90YXRpb246IGFueSB9PiA9IG5ldyBNYXAoKTtcclxuXHJcbiAgZmxvb3JUb0dvOiBab25lIHwgbnVsbDtcclxuXHJcbiAgbG9jYXRpb25JRENoYW5nZTogU3ViamVjdDxzdHJpbmcgfCBudWxsPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIG5hdkJhclpvbmVJRENoYW5nZTogU3ViamVjdDxzdHJpbmcgfCBudWxsPiA9IG5ldyBTdWJqZWN0KCk7XHJcblxyXG4gIGlzVmlzaWJsZUNoYW5nZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG5cclxuICBjdXJyZW50TmF2QmFyTG9jYXRpb25JRDogc3RyaW5nO1xyXG5cclxuICBjdXJyZW50TmF2QmFyWm9uZUlEOiBzdHJpbmc7XHJcblxyXG4gIHpvbmVzU29ydGVkRm9yQ3VycmVudFN3ZWVwOiBab25lW10gfCBudWxsO1xyXG5cclxuICBhdWRpb1pvbmVzQ2hhbmdlOiBTdWJqZWN0PFpvbmVbXT4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICB6b25lc0ZvclVzZXJGb3JTcGFjZTogWm9uZVtdIHwgbnVsbDtcclxuXHJcbiAgY3VycmVudEF1ZGlvWm9uZXM6IFpvbmVbXTtcclxuXHJcbiAgYXVkaW9ab25lc0ZvclVzZXJGb3JTcGFjZTogWm9uZVtdO1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIG1hdHRlcnBvcnRTZXJ2aWNlOiBNYXR0ZXJwb3J0U2VydmljZSxcclxuICAgIHByaXZhdGUgdmlld2VyU2VydmljZTogVmlld2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgem9uZVNlcnZpY2U6IFpvbmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1c2VyU2VydmljZTogQmFzZVVzZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB6b25lQ2hhbmdlU2VydmljZTogWm9uZUNoYW5nZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgKSB7XHJcbiAgICB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLmN1cnJlbnRTd2VlcFxyXG4gICAgICAucGlwZShmaXJzdCgpKSAvLyAgdGFrZSBmaXJzdCBpbiBvcmRlciBub3QgdG8gd2FpdCAyIHNlYyBhbiBmaXJzdCBsb2FkXHJcbiAgICAgIC5zdWJzY3JpYmUoKHN3ZWVwOiBzdHJpbmcpID0+IHtcclxuICAgICAgICB0aGlzLmN1cnJlbnRTd2VlcCA9IHN3ZWVwO1xyXG4gICAgICAgIGlmICh0aGlzLnpvbmVzRm9yVXNlckZvclNwYWNlKSB7XHJcbiAgICAgICAgICB0aGlzLnNldFpvbmVzRm9yQ3VycmVudFN3ZWVwKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMubWF0dGVycG9ydFNlcnZpY2UuY3VycmVudFN3ZWVwXHJcbiAgICAgIC8vLnBpcGUoZGVib3VuY2VUaW1lPHN0cmluZz4oMTUwMCkpIC8vICBkZWxheXMgdmFsdWVzIGVtaXR0ZWQgYW5kIHJldHVybiBvbmx5IHRoZSBsYXRlc3RcclxuICAgICAgLnN1YnNjcmliZSgoc3dlZXA6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGlmIChzd2VlcCA9PT0gdGhpcy5jdXJyZW50U3dlZXApIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jdXJyZW50U3dlZXAgPSBzd2VlcDtcclxuICAgICAgICBpZiAodGhpcy56b25lc0ZvclVzZXJGb3JTcGFjZSkge1xyXG4gICAgICAgICAgdGhpcy5zZXRab25lc0ZvckN1cnJlbnRTd2VlcCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB0aGlzLnZpZXdlclNlcnZpY2Uudmlld2VySXNPbi5zdWJzY3JpYmUoXHJcbiAgICAgIChkYXRhOiB7XHJcbiAgICAgICAgc3BhY2VJRDogc3RyaW5nIHwgbnVsbDtcclxuICAgICAgICBtb2RlbDNEOiBzdHJpbmcgfCBudWxsO1xyXG4gICAgICAgIHN3ZWVwOiBzdHJpbmcgfCBudWxsO1xyXG4gICAgICAgIHJvdGF0aW9uOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0gfCBudWxsO1xyXG4gICAgICB9KSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFNwYWNlSUQgIT09IGRhdGEuc3BhY2VJRCkge1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50U3BhY2VJRCA9IGRhdGEuc3BhY2VJRDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCFkYXRhLnNwYWNlSUQpIHtcclxuICAgICAgICAgIHRoaXMuem9uZXNGb3JVc2VyRm9yU3BhY2UgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy56b25lc1NvcnRlZEZvckN1cnJlbnRTd2VlcCA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLmF1ZGlvWm9uZXNGb3JVc2VyRm9yU3BhY2UgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50Wm9uZSA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLnpvbmVDaGFuZ2VTZXJ2aWNlLnpvbmVDaGFuZ2UubmV4dChudWxsKTtcclxuICAgICAgICAgIHRoaXMuem9uZUNoYW5nZVNlcnZpY2Uuc3BhY2VXaXRob3V0Wm9uZXMubmV4dChudWxsKTtcclxuICAgICAgICAgIHRoaXMuY3VycmVudFN3ZWVwID0gbnVsbDtcclxuICAgICAgICAgIC8vIHNhdmUgbGFzdCBwb3NpdGlvblxyXG4gICAgICAgICAgY29uc3QgbGFzdFBvc2UgPSB0aGlzLm1hdHRlcnBvcnRTZXJ2aWNlLnBvc2VDYW1lcmE7XHJcbiAgICAgICAgICBpZiAobGFzdFBvc2UgJiYgdGhpcy5jdXJyZW50TW9kZWwzRCAmJiB0aGlzLnVzZXJTZXJ2aWNlLmN1KSB7XHJcbiAgICAgICAgICAgIHRoaXMudmlzaXRMYXN0UG9zaXRpb24uc2V0KHRoaXMuY3VycmVudE1vZGVsM0QsIHtcclxuICAgICAgICAgICAgICAvKipPdmVycmlkZSBzd2VlcC9yb3RhdGlvbiBpZiBleGlzdCAqL1xyXG4gICAgICAgICAgICAgIHN3ZWVwOiB0aGlzLnRhcmdldFN3ZWVwID8/IGxhc3RQb3NlLnN3ZWVwLFxyXG4gICAgICAgICAgICAgIHJvdGF0aW9uOiB0aGlzLnRhcmdldFJvdGF0aW9uID8/IGxhc3RQb3NlLnJvdGF0aW9uLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuY3VycmVudE1vZGVsM0QgPSBkYXRhLm1vZGVsM0Q7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnZpZXdlclNlcnZpY2UuY2hlY2tNb2RlKCd0aHJlZWpzJykpIHtcclxuICAgICAgICAgIC8vIEEgM0QgbW9kZWwgaGFzIG5vIHN3ZWVwcywgYW5kIGV2ZXJ5IHpvbmUgaXMgZGVmaW5lZCBieSB0aGUgc3dlZXBzIGl0IGNvbnRhaW5zLCBzb1xyXG4gICAgICAgICAgLy8gb25WaWV3ZXJMb2FkZWQoKSB3b3VsZCByZXNvbHZlIG5vIHpvbmUgYW5kIGB6b25lQ2hhbmdlYCB3b3VsZCBuZXZlciBmaXJlIC0gbGVhdmluZyB0aGVcclxuICAgICAgICAgIC8vIHNlcnZpY2VzIHRoYXQgbG9hZCB0aWNrZXRzLCBlcXVpcG1lbnRzIGFuZCBmZWF0dXJlcyB3aXRoIG5vIHNwYWNlIHRvIGxvYWQgdGhlbSBmb3IuXHJcbiAgICAgICAgICB0aGlzLmN1cnJlbnRNb2RlbDNEID0gZGF0YS5tb2RlbDNEO1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50U3dlZXAgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50Wm9uZSA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLnpvbmVzRm9yVXNlckZvclNwYWNlID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuem9uZXNTb3J0ZWRGb3JDdXJyZW50U3dlZXAgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy56b25lQ2hhbmdlU2VydmljZS56b25lc0ZvclVzZXJDaGFuZ2UubmV4dChudWxsKTtcclxuICAgICAgICAgIHRoaXMuem9uZUNoYW5nZVNlcnZpY2Uuc3BhY2VXaXRob3V0Wm9uZXMubmV4dCh0aGlzLmN1cnJlbnRTcGFjZUlEKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50TW9kZWwzRCA9IGRhdGEubW9kZWwzRDtcclxuICAgICAgICAgIC8qKk92ZXJyaWRlIHN3ZWVwL3JvdGF0aW9uIGlmIGV4aXN0LiBUYXJnZXQgaXMgcmVzZXQgYWZ0ZXIgKG51bGwpKi9cclxuICAgICAgICAgIHRoaXMudGFyZ2V0U3dlZXAgPSB0aGlzLnRhcmdldFN3ZWVwID8/IGRhdGEuc3dlZXA7XHJcbiAgICAgICAgICB0aGlzLnRhcmdldFJvdGF0aW9uID0gdGhpcy50YXJnZXRSb3RhdGlvbiA/PyBkYXRhLnJvdGF0aW9uO1xyXG4gICAgICAgICAgdGhpcy5vblZpZXdlckxvYWRlZCgpLmNhdGNoKChlKSA9PiBjb25zb2xlLmxvZyhlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gICAgdGhpcy51c2VyU2VydmljZS5pc0NoYW5nZWQuc3Vic2NyaWJlKChpc0Nvbm5lY3RlZCkgPT4ge1xyXG4gICAgICBpZiAoIWlzQ29ubmVjdGVkKSB7XHJcbiAgICAgICAgLy8gdXNlciBkaXNjb25uZWN0ZWQsIGNsZWFuIE1hcFxyXG4gICAgICAgIHRoaXMudmlzaXRMYXN0UG9zaXRpb24gPSBuZXcgTWFwKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XHJcbiAgICAgIGNvbnN0IGRlZXBQYXJhbXNCYXNlNjQgPSBwYXJhbXNbJ2RlZXBQYXJhbXMnXTtcclxuICAgICAgaWYgKGRlZXBQYXJhbXNCYXNlNjQpIHtcclxuICAgICAgICBjb25zdCBkZWVwUGFyYW1zOiBhbnkgPSBKU09OLnBhcnNlKGF0b2IoZGVlcFBhcmFtc0Jhc2U2NCkpO1xyXG4gICAgICAgIHRoaXMudGFyZ2V0U3dlZXAgPSBkZWVwUGFyYW1zLnN3ZWVwSUQ7XHJcbiAgICAgICAgdGhpcy50YXJnZXRSb3RhdGlvbiA9IGRlZXBQYXJhbXMucm90YXRpb247XHJcblxyXG4gICAgICAgIC8qKkNsZWFyIHRoaXMgcXVlcnkgcGFyYW1zICovXHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHtcclxuICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7IGRlZXBQYXJhbXM6IG51bGwgfSwgcXVlcnlQYXJhbXNIYW5kbGluZzogXCJtZXJnZVwiXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldERlZXBMaW5rKCk6IHN0cmluZyB7XHJcbiAgICBsZXQgZGF0YSA9IG51bGw7XHJcblxyXG4gICAgaWYgKHRoaXMuY3VycmVudFN3ZWVwKSB7IC8qKlRvZG8gY2hlY2sgbWF0dGVycG9ydCBtb2QgYW5kIGFkYXB0ICovXHJcbiAgICAgIGRhdGEgPSB7XHJcbiAgICAgICAgc3dlZXBJRDogdGhpcy5jdXJyZW50U3dlZXAsXHJcbiAgICAgICAgcm90YXRpb246IHRoaXMubWF0dGVycG9ydFNlcnZpY2UuZ2V0Q3VycmVudENhbWVyYVBvc2l0aW9uKCkucm90YXRpb25cclxuICAgICAgfTtcclxuXHJcbiAgICAgIGRhdGEgPSBidG9hKEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBtb2RlbDNEID0gdGhpcy5jdXJyZW50TW9kZWwzRDtcclxuXHJcbiAgICBjb25zdCB1cmwgPSB0aGlzLnJvdXRlci5jcmVhdGVVcmxUcmVlKFtdLCB7XHJcbiAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXHJcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7IGRlZXBQYXJhbXM6IGRhdGEsIG1vZGVsM0QgfSxcclxuICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogXCJtZXJnZVwiXHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gYCR7bG9jYXRpb24ub3JpZ2lufSR7dXJsLnRvU3RyaW5nKCl9YDtcclxuICB9XHJcblxyXG4gIGdldExhc3RQb3NpdGlvbkZvck1vZGVsKG1vZGVsM0Q6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMudmlzaXRMYXN0UG9zaXRpb24uZ2V0KG1vZGVsM0QpO1xyXG4gIH1cclxuXHJcbiAgZ29Ub1N3ZWVwV2l0aFJvdGF0aW9uKFxyXG4gICAgc3dlZXA6IHN0cmluZyxcclxuICAgIHJvdGF0aW9uOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0gfCBudWxsID0gbnVsbFxyXG4gICkge1xyXG4gICAgdGhpcy5tYXR0ZXJwb3J0U2VydmljZS5hY3Rpb25fZ29fdG9fc3dlZXAoc3dlZXAsIHJvdGF0aW9uKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdvVG9GbG9vcihmbG9vcjogWm9uZSkge1xyXG4gICAgbGV0IG1hdHRlcnBvcnRGbG9vclNlcXVlbmNlID0gbnVsbDtcclxuICAgIGlmIChmbG9vci5tZXRhZGF0YSkge1xyXG4gICAgICBjb25zdCBtZXRhZGF0YSA9IEpTT04ucGFyc2UoZmxvb3IubWV0YWRhdGEpO1xyXG4gICAgICBpZiAobWV0YWRhdGEubWF0dGVycG9ydEZsb29yU2VxdWVuY2UgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIG1hdHRlcnBvcnRGbG9vclNlcXVlbmNlID0gbWV0YWRhdGEubWF0dGVycG9ydEZsb29yU2VxdWVuY2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGF3YWl0IHRoaXMubWF0dGVycG9ydFNlcnZpY2UuYWN0aW9uX2dvX3RvX2Zsb29yKFxyXG4gICAgICBmbG9vci5uYW1lLFxyXG4gICAgICBtYXR0ZXJwb3J0Rmxvb3JTZXF1ZW5jZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIG9uVmlld2VyTG9hZGVkKCkge1xyXG4gICAgbGV0IHN3ZWVwVG9Hbzogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgICBsZXQgcm90YXRpb246IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSB8IG51bGwgPSBudWxsO1xyXG4gICAgaWYgKHRoaXMudGFyZ2V0U3dlZXApIHtcclxuICAgICAgc3dlZXBUb0dvID0gdGhpcy50YXJnZXRTd2VlcDtcclxuICAgICAgcm90YXRpb24gPSB0aGlzLnRhcmdldFJvdGF0aW9uXHJcbiAgICAgICAgPyB0aGlzLnRhcmdldFJvdGF0aW9uXHJcbiAgICAgICAgOiB0aGlzLmNoZWNrUm90YXRpb25Gb3JTd2VlcCh0aGlzLnRhcmdldFN3ZWVwKTtcclxuICAgICAgLyoqUmVzZXQgLyBDb25zdW1lIHRhcmdldCAqL1xyXG4gICAgICB0aGlzLnRhcmdldFJvdGF0aW9uID0gbnVsbDtcclxuICAgICAgdGhpcy50YXJnZXRTd2VlcCA9IG51bGw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBsYXN0UG9zdGlvbiA9IHRoaXMuZ2V0TGFzdFBvc2l0aW9uRm9yTW9kZWwodGhpcy5jdXJyZW50TW9kZWwzRCEpO1xyXG4gICAgICBpZiAobGFzdFBvc3Rpb24pIHtcclxuICAgICAgICBzd2VlcFRvR28gPSBsYXN0UG9zdGlvbi5zd2VlcDtcclxuICAgICAgICByb3RhdGlvbiA9IGxhc3RQb3N0aW9uLnJvdGF0aW9uO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy50YXJnZXRSb3RhdGlvbikge1xyXG4gICAgICByb3RhdGlvbiA9IHRoaXMudGFyZ2V0Um90YXRpb247XHJcbiAgICB9XHJcbiAgICBpZiAoc3dlZXBUb0dvICYmICF0aGlzLmZsb29yVG9Hbykge1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyhcImdvIHRvIHN3ZWVwXCIsIHN3ZWVwVG9Hbyk7XHJcbiAgICAgIHRoaXMuZ29Ub1N3ZWVwV2l0aFJvdGF0aW9uKHN3ZWVwVG9Hbywgcm90YXRpb24pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZmxvb3JUb0dvKSB7XHJcbiAgICAgIHRoaXMuZ29Ub0Zsb29yKHRoaXMuZmxvb3JUb0dvKTtcclxuICAgICAgdGhpcy5mbG9vclRvR28gPSBudWxsO1xyXG4gICAgfVxyXG4gICAgLy8gaWYgZmlyc3QgbG9hZCBhbmQgem9uZXMgYXJlIG5vdCBzZXRcclxuICAgIHRoaXMuem9uZXNGb3JVc2VyRm9yU3BhY2UgPSBhd2FpdCB0aGlzLnpvbmVTZXJ2aWNlLmdldFpvbmVzQnlTcGFjZUZvclVzZXIoXHJcbiAgICAgIHRoaXMuY3VycmVudFNwYWNlSURcclxuICAgICk7XHJcbiAgICB0aGlzLmF1ZGlvWm9uZXNGb3JVc2VyRm9yU3BhY2UgPSB0aGlzLnpvbmVzRm9yVXNlckZvclNwYWNlLmZpbHRlcihcclxuICAgICAgKHpvbmUpID0+IHpvbmUuYXVkaW9JRFxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLnpvbmVzRm9yVXNlckZvclNwYWNlID0gYXdhaXQgdGhpcy56b25lU2VydmljZS5nZXRab25lc0J5U3BhY2VGb3JVc2VyKFxyXG4gICAgICB0aGlzLmN1cnJlbnRTcGFjZUlEXHJcbiAgICApO1xyXG4gICAgdGhpcy5hdWRpb1pvbmVzRm9yVXNlckZvclNwYWNlID0gdGhpcy56b25lc0ZvclVzZXJGb3JTcGFjZS5maWx0ZXIoXHJcbiAgICAgICh6b25lKSA9PiB6b25lLmF1ZGlvSURcclxuICAgICk7XHJcblxyXG4gICAgaWYgKCF0aGlzLmN1cnJlbnRTd2VlcCkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRTd2VlcCA9IHRoaXMubWF0dGVycG9ydFNlcnZpY2UuZ2V0Q3VycmVudFN3ZWVwKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZXRab25lc0ZvckN1cnJlbnRTd2VlcCgpO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tSb3RhdGlvbkZvclN3ZWVwKHN3ZWVwOiBzdHJpbmcpOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0gfCBudWxsIHtcclxuICAgIGNvbnN0IGxhc3RQb3NpdGlvbiA9IHRoaXMudmlzaXRMYXN0UG9zaXRpb24uZ2V0KHRoaXMuY3VycmVudE1vZGVsM0QhKTtcclxuICAgIGlmIChsYXN0UG9zaXRpb24gJiYgbGFzdFBvc2l0aW9uLnN3ZWVwID09PSBzd2VlcCkge1xyXG4gICAgICByZXR1cm4gbGFzdFBvc2l0aW9uLnJvdGF0aW9uO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBzZXRab25lc0ZvckN1cnJlbnRTd2VlcCgpIHtcclxuICAgIGlmICghdGhpcy5jdXJyZW50U3dlZXApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGN1cnJlbnRTd2VlcCBpcyBhbHJlYWR5IGEgdXVpZCAodHJhbnNsYXRlZCBhdCB0aGUgc291cmNlIGluIE1hdHRlcnBvcnRTZXJ2aWNlKSxcclxuICAgIC8vIHNvIGl0IG1hdGNoZXMgZGlyZWN0bHkgYWdhaW5zdCB6b25lLnN3ZWVwSURzIHdoaWNoIHN0b3JlIHV1aWRzIGZyb20gdGhlIGltcG9ydC5cclxuICAgIGxldCB6b25lc0ZvclN3ZWVwID0gdGhpcy56b25lc0ZvclVzZXJGb3JTcGFjZT8uZmlsdGVyKFxyXG4gICAgICAoem9uZSkgPT4gem9uZS5zd2VlcElEcyAmJiB6b25lLnN3ZWVwSURzLmluY2x1ZGVzKHRoaXMuY3VycmVudFN3ZWVwKVxyXG4gICAgKTtcclxuICAgIGNvbnN0IGF1ZGlvWm9uZXMgPSB0aGlzLmF1ZGlvWm9uZXNGb3JVc2VyRm9yU3BhY2U/LmZpbHRlcihcclxuICAgICAgKHpvbmUpID0+IHpvbmUuc3dlZXBJRHMgJiYgem9uZS5zd2VlcElEcy5pbmNsdWRlcyh0aGlzLmN1cnJlbnRTd2VlcClcclxuICAgICk7XHJcbiAgICB0aGlzLmF1ZGlvWm9uZXNDaGFuZ2UubmV4dChhdWRpb1pvbmVzKTtcclxuICAgIHRoaXMuY3VycmVudEF1ZGlvWm9uZXMgPSBhdWRpb1pvbmVzO1xyXG5cclxuICAgIC8vIGZpbHRlciBvdXQgYXVkaW8gem9uZSAobm90IHRvIHNob3cgdG8gdXNlciBpdCdzIG5hbWUpXHJcbiAgICB6b25lc0ZvclN3ZWVwID0gem9uZXNGb3JTd2VlcC5maWx0ZXIoKHpvbmUpID0+ICF6b25lLmF1ZGlvKTtcclxuICAgIC8vIExJTkUgQkVMT1cgSVMgQ09NTUVOVEVEIFNJTkNFIENSRUFURVMgSU5GSU5JVEUgU1BJTk5FUiBGT1IgWk9ORVMgV0lUSE9VVCBBVURJTy4uLlxyXG4gICAgLy8gaWYgKHpvbmVzRm9yU3dlZXAgJiYgem9uZXNGb3JTd2VlcC5sZW5ndGggPiAwKSB7XHJcbiAgICB0aGlzLnpvbmVzU29ydGVkRm9yQ3VycmVudFN3ZWVwID0gem9uZXNGb3JTd2VlcC5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgIGlmIChhLnN3ZWVwSURzIS5sZW5ndGggPT09IGIuc3dlZXBJRHMhLmxlbmd0aCkge1xyXG4gICAgICAgIC8vIGlmIHRoZSBzYW1lIGFtb3VudCBvZiBzd2VlcHM6IGZsb29yID09IHRoZSB3aG9sZSBzcGFjZVxyXG4gICAgICAgIGlmIChhLmxheWVyICYmIGIubGF5ZXIpIHtcclxuICAgICAgICAgIC8vIHB1dCB0eXBlIEJVSUxESU5HIGF0IHRoZSBlbmRcclxuICAgICAgICAgIHJldHVybiBhLmxheWVyLm5hbWUgIT09ICdCVUlMRElORydcclxuICAgICAgICAgICAgPyAtMVxyXG4gICAgICAgICAgICA6IGIubGF5ZXIubmFtZSAhPT0gJ0JVSUxESU5HJ1xyXG4gICAgICAgICAgICAgID8gMVxyXG4gICAgICAgICAgICAgIDogMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGEucGFyZW50Py5zd2VlcElEcyA/IC0xIDogYi5wYXJlbnQ/LnN3ZWVwSURzID8gMSA6IDA7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGEuc3dlZXBJRHMhLmxlbmd0aCAtIGIuc3dlZXBJRHMhLmxlbmd0aDtcclxuICAgIH0pO1xyXG4gICAgdGhpcy56b25lQ2hhbmdlU2VydmljZS56b25lc0ZvclVzZXJDaGFuZ2UubmV4dChcclxuICAgICAgdGhpcy56b25lc1NvcnRlZEZvckN1cnJlbnRTd2VlcFxyXG4gICAgKTtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuem9uZXNTb3J0ZWRGb3JDdXJyZW50U3dlZXAubGVuZ3RoID4gMCAmJlxyXG4gICAgICB0aGlzLmN1cnJlbnRab25lICE9PSB0aGlzLnpvbmVzU29ydGVkRm9yQ3VycmVudFN3ZWVwWzBdXHJcbiAgICApIHtcclxuICAgICAgW3RoaXMuY3VycmVudFpvbmVdID0gdGhpcy56b25lc1NvcnRlZEZvckN1cnJlbnRTd2VlcDtcclxuICAgICAgdGhpcy56b25lQ2hhbmdlU2VydmljZS56b25lQ2hhbmdlLm5leHQodGhpcy5jdXJyZW50Wm9uZSk7XHJcbiAgICB9XHJcbiAgICAvLyB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -190,4 +190,4 @@ export const copyFileInS3ViaDownload = async (sourceKey, destKey) => {
190
190
  });
191
191
  return result.key;
192
192
  };
193
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvczMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR3RDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7SUFDdkMsTUFBTSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQztTQUMxQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDaEUsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHlCQUF5QixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDekUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEtBQUssRUFDL0IsSUFBWSxFQUNaLElBQVUsRUFDVixRQUF1QixFQUNSLEVBQUU7SUFDakIsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMxRCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRTtRQUNoRCxnQkFBZ0IsQ0FBQyxRQUFRO1lBQ3JCLHdDQUF3QztRQUM1QyxDQUFDO1FBQ0QsV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJO0tBQ3pCLENBQUM7U0FDRyxJQUFJ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VUFBVSxHQUFRLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUU7UUFDakQsUUFBUSxFQUFFLElBQUk7UUFDZCxLQUFLLEVBQUUsUUFBUTtLQUNsQixDQUFDLENBQUM7SUFFSCxNQUFNLElBQUksR0FBRyxVQUFVLEVBQUUsSUFBSSxDQUFDO0lBQzlCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNSLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLFNBQVMsd0JBQXdCLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQVEsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUU7UUFDakQsS0FBSyxFQUFFLFFBQVE7UUFDZixXQUFXLEVBQUUsVUFBVSxDQUFDLFdBQVcsSUFBSSxTQUFTO0tBQ25ELENBQUMsQ0FBQztJQUNILE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQztBQUN0QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdG9yYWdlIH0gZnJvbSBcImF3cy1hbXBsaWZ5XCI7XG5pbXBvcnQgeyBFcXVpcG1lbnQgfSBmcm9tIFwiLi4vdHlwZXMuc2VydmljZVwiO1xuXG5leHBvcnQgY29uc3QgZGVsZXRlRnJvbVMzID0gYXN5bmMgKHBhdGgpID0+IHtcbiAgICBhd2FpdCBTdG9yYWdlLnJlbW92ZShwYXRoLCB7IGxldmVsOiBcInB1YmxpY1wiIH0pXG4gICAgICAgIC50aGVuKChyZXN1bHQpID0+IGNvbnNvbGUubG9nKFwiU3VjY2Vzc2Z1bGx5IGRlbGV0ZWQgPT5cIiwgcmVzdWx0KSlcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gY29uc29sZS5sb2coXCJEZWxldGluZyBmcm9tIFMzIGVycm9yOlwiLCBlcnJvcikpO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwbG9hZEZpbGVUb1MzID0gYXN5bmMgKFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBmaWxlOiBGaWxlLFxuICAgIG9iamVjdElkOiBzdHJpbmcgfCBudWxsLFxuKTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcbiAgICBjb25zdCBwcmVmaXggPSBvYmplY3RJZCA/IGAke29iamVjdElkLnNsaWNlKDAsIDgpfV9gIDogXCJcIjtcbiAgICByZXR1cm4gU3RvcmFnZS5wdXQocGF0aCArIHByZWZpeCArIGZpbGUubmFtZSwgZmlsZSwge1xuICAgICAgICBwcm9ncmVzc0NhbGxiYWNrKHByb2dyZXNzKSB7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnVXBsb2FkZWQgOiAnLCBwcm9ncmVzcyk7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbnRlbnRUeXBlOiBmaWxlLnR5cGUsXG4gICAgfSlcbiAgICAgICAgLnRoZW4oKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIlN1Y2Nlc3MgPT5cIiwgcmVzdWx0KTtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQua2V5O1xuICAgICAgICB9KTtcbn07XG5cbi8qKlxuICogVXBsb2FkcyBhIGZpbGUsIHJlcG9ydGluZyBwcm9ncmVzcyBhcyBhIDAtMSBmcmFjdGlvbi5cbiAqXG4gKiB1cGxvYWRGaWxlVG9TMyBhYm92ZSBzd2FsbG93cyBwcm9ncmVzcywgd2hpY2ggaXMgZmluZSBmb3IgYSBwaG90byBhbmQgdW51c2FibGUgZm9yIGEgM0QgbW9kZWw6XG4gKiB0aGVzZSBydW4gdG8gaHVuZHJlZHMgb2YgbWVnYWJ5dGVzLCBhbmQgYW4gdXBsb2FkIHdpdGggbm8gZmVlZGJhY2sgaXMgaW5kaXN0aW5ndWlzaGFibGUgZnJvbSBhXG4gKiBmcm96ZW4gcGFnZS4gUmV0dXJucyB0aGUgc3RvcmVkIGtleSwgd2hpY2ggaXMgd2hhdCBnZXRzIHNhdmVkIG9uIHRoZSByZWNvcmQuXG4gKi9cbmV4cG9ydCBjb25zdCB1cGxvYWRGaWxlVG9TM1dpdGhQcm9ncmVzcyA9IGFzeW5jIChcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgZmlsZTogRmlsZSxcbiAgICBvblByb2dyZXNzPzogKGZyYWN0aW9uOiBudW1iZXIpID0+IHZvaWQsXG4pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICAgIHJldHVybiBTdG9yYWdlLnB1dChwYXRoICsgZmlsZS5uYW1lLCBmaWxlLCB7XG4gICAgICAgIGNvbnRlbnRUeXBlOiBmaWxlLnR5cGUgfHwgXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIixcbiAgICAgICAgcHJvZ3Jlc3NDYWxsYmFjayhwcm9ncmVzczogeyBsb2FkZWQ6IG51bWJlcjsgdG90YWw6IG51bWJlciB9KSB7XG4gICAgICAgICAgICBpZiAob25Qcm9ncmVzcyAmJiBwcm9ncmVzcy50b3RhbCA+IDApIHtcbiAgICAgICAgICAgICAgICBvblByb2dyZXNzKHByb2dyZXNzLmxvYWRlZCAvIHByb2dyZXNzLnRvdGFsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICB9KS50aGVuKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0LmtleSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U2lnbmVkSW1hZ2VVcmxGb3JFcXVpcG1lbnQgPSBhc3luYyAoXG4gICAgZXF1aXA6IEVxdWlwbWVudCxcbik6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4gPT4ge1xuICAgIGlmICghZXF1aXAucGhvdG8pIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShudWxsKTtcbiAgICB9XG4gICAgcmV0dXJuIFN0b3JhZ2UuZ2V0KGVxdWlwLnBob3RvLCB7IGxldmVsOiBcInB1YmxpY1wiIH0pXG4gICAgICAgIC50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQgYXMgc3RyaW5nO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yIGZldGNoaW5nIGZpbGUgZnJvbSBzMyA9PlwiLCBlcnJvcik7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSk7XG5cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTaWduZWRJbWFnZVVybEZvclByb2ZpbGUgPSBhc3luYyAoXG4gICAgcHJvZmlsZSxcbik6IFByb21pc2U8c3RyaW5nIHwgdm9pZD4gPT4ge1xuICAgIHJldHVybiBTdG9yYWdlLmdldChwcm9maWxlLmF2YXRhciwgeyBsZXZlbDogXCJwdWJsaWNcIiB9KVxuICAgICAgICAudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0IGFzIHN0cmluZztcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvciBmZXRjaGluZyBmaWxlIGZyb20gczMgPT5cIiwgZXJyb3IpO1xuICAgICAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTaWduZWRJbWFnZVVybEZvclNwYWNlID0gYXN5bmMgKFxuICAgIHNwYWNlLFxuKTogUHJvbWlzZTxzdHJpbmcgfCB2b2lkPiA9PiB7XG4gICAgcmV0dXJuIFN0b3JhZ2UuZ2V0KHNwYWNlLmFubmV4ZXMsIHsgbGV2ZWw6IFwicHVibGljXCIgfSlcbiAgICAgICAgLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCBhcyBzdHJpbmc7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3IgZmV0Y2hpbmcgZmlsZSBmcm9tIHMzID0+XCIsIGVycm9yKTtcbiAgICAgICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgdXBsb2FkQmFzZTY0SW1hZ2UgPSBhc3luYyAoXG4gICAgdXJpOiBzdHJpbmcsXG4gICAgb2JqZWN0SWQ6IHN0cmluZyB8IG51bGwsXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIGZyaWVuZGx5RmlsZU5hbWU6IHN0cmluZyxcbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gICAgcmV0dXJuIGZldGNoKHVyaSlcbiAgICAgICAgLnRoZW4oKHJlcykgPT4gcmVzLmJsb2IoKSlcbiAgICAgICAgLnRoZW4oKGJsb2IpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGUgPSBuZXcgRmlsZShbYmxvYl0sIGAke2ZyaWVuZGx5RmlsZU5hbWV9LmpwZWdgLCB7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJpbWFnZS9qcGVnXCIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiB1cGxvYWRGaWxlVG9TMyhwYXRoLCBmaWxlLCBvYmplY3RJZCk7XG4gICAgICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwbG9hZEJhc2U2NEltYWdlV2l0aFJldHJ5ID0gYXN5bmMgKFxuICAgIHVyaTogc3RyaW5nLFxuICAgIG9iamVjdElkOiBzdHJpbmcgfCBudWxsLFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBmcmllbmRseUZpbGVOYW1lOiBzdHJpbmcsXG4gICAgcmV0cnk6IG51bWJlclxuKTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgd2hpbGUgKHJldHJ5ID4gMCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCByID0gYXdhaXQgdXBsb2FkQmFzZTY0SW1hZ2UodXJpLCBvYmplY3RJZCwgcGF0aCwgZnJpZW5kbHlGaWxlTmFtZSk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgcmV0cnktLTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBVcGxvYWQgZXJyb3IsIHJldHJ5IG7CsCAke3JldHJ5fSA6IGAsIGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHJlamVjdChcIk1heCByZXRyeSBleGNlZWRlZFwiKTtcbiAgICB9KTtcbn07XG5cblxuZXhwb3J0IGNvbnN0IHJlbW92ZUFsbEZpbGVzRnJvbUZvbGRlclMzID0gYXN5bmMgKFxuICAgIGZvbGRlclBhdGg6IHN0cmluZyxcbik6IFByb21pc2U8YW55PiA9PiB7XG4gICAgY29uc3QgYXJyYXlPZlByb21pc2VzID0gW107XG4gICAgU3RvcmFnZS5saXN0KGZvbGRlclBhdGgsIHsgbGV2ZWw6IFwicHVibGljXCIgfSlcbiAgICAgICAgLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICAgICAgT2JqZWN0LmtleXMocmVzKS5tYXAoYXN5bmMgKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGUgPSByZXNba2V5XTtcbiAgICAgICAgICAgICAgICBhcnJheU9mUHJvbWlzZXMucHVzaChkZWxldGVGcm9tUzMoZmlsZS5rZXkpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiBjb25zb2xlLmVycm9yKFwiTGlzdCBmYWlsdXJlXCIsIGVycm9yKSk7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKGFycmF5T2ZQcm9taXNlcyk7XG59O1xuXG5leHBvcnQgY29uc3QgbGlzdEZpbGVzSW5Gb2xkZXIgPSBhc3luYyAoZm9sZGVyUGF0aDogc3RyaW5nKTogUHJvbWlzZTxhbnk+ID0+IHtcbiAgICByZXR1cm4gU3RvcmFnZS5saXN0KGZvbGRlclBhdGgsIHsgbGV2ZWw6IFwicHVibGljXCIsIHBhZ2VTaXplOiAnQUxMJyB9KVxuICAgICAgICAudGhlbigocmVzKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzLnJlc3VsdHM7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IGNvbnNvbGUuZXJyb3IoXCJMaXN0IGZhaWx1cmVcIiwgZXJyb3IpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTaWduZWRGaWxlID0gYXN5bmMgKHBhdGgpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+ID0+IHtcbiAgICByZXR1cm4gU3RvcmFnZS5nZXQocGF0aCwgeyBsZXZlbDogXCJwdWJsaWNcIiB9KVxuICAgICAgICAudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0IGFzIHN0cmluZztcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvciBmZXRjaGluZyBmaWxlIGZyb20gczMgPT5cIiwgZXJyb3IpO1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0pO1xuXG59O1xuXG5leHBvcnQgY29uc3QgZG93bmxvYWRGaWxlQXNPYmplY3QgPSBhc3luYyAocGF0aCk6IFByb21pc2U8T2JqZWN0IHwgdm9pZD4gPT4ge1xuICAgIHJldHVybiBTdG9yYWdlLmdldChwYXRoLCB7IGRvd25sb2FkOiB0cnVlLCBsZXZlbDogXCJwdWJsaWNcIiB9KVxuICAgICAgICAudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0IGFzIE9iamVjdDtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvciBmZXRjaGluZyBmaWxlIGZyb20gczMgPT5cIiwgZXJyb3IpO1xuICAgICAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRCdWZmZXJGb3JGaWxlRnJvbVMzID0gYXN5bmMgKHBhdGgpOiBQcm9taXNlPEFycmF5QnVmZmVyPiA9PiB7XG4gICAgY29uc3Qgb2JqZWN0ID0gYXdhaXQgZG93bmxvYWRGaWxlQXNPYmplY3QocGF0aCk7XG4gICAgaWYgKG9iamVjdCkge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHJldHVybiBuZXcgQXJyYXlCdWZmZXIob2JqZWN0LkJvZHksIFwiYmluYXJ5XCIpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCB1cGxvYWRKc29uVG9TMyA9IGFzeW5jIChcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAganNvbjogc3RyaW5nLFxuICAgIGZpbGVuYW1lOiBzdHJpbmcsXG4pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICAgIHJldHVybiBTdG9yYWdlLnB1dChwYXRoICsgZmlsZW5hbWUsIGpzb24sIHtcbiAgICAgICAgY29udGVudFR5cGU6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgIH0pXG4gICAgICAgIC50aGVuKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJTdWNjZXNzID0+XCIsIHJlc3VsdCk7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LmtleTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvciA9PlwiLCBlcnJvcik7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfSk7XG59O1xuXG4vKipcbiAqIFBoeXNpY2FsbHkgZHVwbGljYXRlcyBhbiBTMyBvYmplY3QgdG8gYSBuZXcga2V5LiBVc2VkIHdoZW4gY29weWluZyBhdHRhY2htZW50c1xuICogYmV0d2VlbiBmZWF0dXJlcy90aWNrZXRzL2V0Yy4gc28gdGhlIGNvcHkgaXMgZnVsbHkgaW5kZXBlbmRlbnQ6IGRlbGV0aW5nIHRoZVxuICogb3JpZ2luYWwgZmlsZSBsYXRlciBtdXN0IG5vdCBhZmZlY3QgdGhlIGNvcHkuXG4gKiBJTVBPUlRBTlQ6IGRvZXMgTk9UIHN3YWxsb3cgZXJyb3JzIOKAlCBjYWxsZXJzIG5lZWQgdGhlIHJlYWwgZXJyb3IgKGUuZy4gTm9TdWNoS2V5KVxuICogdG8gZGlzdGluZ3Vpc2ggYW4gb3JwaGFuZWQgREIgcmVmZXJlbmNlIGZyb20gYSBnZW51aW5lIGNvcHkgZmFpbHVyZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGNvcHlGaWxlSW5TMyA9IGFzeW5jIChcbiAgICBzb3VyY2VLZXk6IHN0cmluZyxcbiAgICBkZXN0S2V5OiBzdHJpbmcsXG4pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICAgIGNvbnN0IHJlc3VsdDogYW55ID0gYXdhaXQgU3RvcmFnZS5jb3B5KFxuICAgICAgICB7IGtleTogc291cmNlS2V5LCBsZXZlbDogXCJwdWJsaWNcIiB9LFxuICAgICAgICB7IGtleTogZGVzdEtleSwgbGV2ZWw6IFwicHVibGljXCIgfSxcbiAgICApO1xuICAgIHJldHVybiByZXN1bHQua2V5O1xufTtcblxuLyoqXG4gKiBGYWxsYmFjayBkdXBsaWNhdGlvbjogZG93bmxvYWRzIHRoZSBvYmplY3QgYW5kIHJlLXVwbG9hZHMgaXQgdW5kZXIgdGhlIG5ldyBrZXkuXG4gKlxuICogU3RvcmFnZS5jb3B5KCkgYnVpbGRzIHRoZSBTMyBgeC1hbXotY29weS1zb3VyY2VgIGhlYWRlciBieSBwbGFpbiBzdHJpbmcgY29uY2F0ZW5hdGlvblxuICogKHNlZSBAYXdzLWFtcGxpZnkvc3RvcmFnZSBBV1NTM1Byb3ZpZGVyLmNvcHk6IGAke2J1Y2tldH0vJHtzcmNQcmVmaXh9JHtzcmNLZXl9YCksIHdpdGggbm9cbiAqIFVSTC1lbmNvZGluZyBvZiB0aGUga2V5LiBBIGtleSBob2xkaW5nIGEgc3BhY2UsIGFuIGFjY2VudCBvciBhIHBhcmVudGhlc2lzIHRoZXJlZm9yZVxuICogeWllbGRzIGEgaGVhZGVyIHRoYXQgZG9lcyBub3QgbWF0Y2ggdGhlIHNpZ25lZCBjYW5vbmljYWwgcmVxdWVzdCwgYW5kIFMzIGFuc3dlcnNcbiAqIFwiVGhlIHJlcXVlc3Qgc2lnbmF0dXJlIHdlIGNhbGN1bGF0ZWQgZG9lcyBub3QgbWF0Y2ggdGhlIHNpZ25hdHVyZSB5b3UgcHJvdmlkZWRcIi5cbiAqXG4gKiBSb3VuZC10cmlwcGluZyB0aGUgYnl0ZXMgYXZvaWRzIHRoYXQgaGVhZGVyIGVudGlyZWx5IGFuZCB3b3JrcyBmb3IgYW55IGtleSwgYXQgdGhlIGNvc3RcbiAqIG9mIHRyYW5zZmVycmluZyB0aGUgZmlsZSB0aHJvdWdoIHRoZSBicm93c2VyIOKAlCBoZW5jZSBpdHMgdXNlIGFzIGEgZmFsbGJhY2sgb25seS5cbiAqIElNUE9SVEFOVDogbGlrZSBjb3B5RmlsZUluUzMsIHRoaXMgbXVzdCBOT1Qgc3dhbGxvdyBlcnJvcnMuXG4gKi9cbmV4cG9ydCBjb25zdCBjb3B5RmlsZUluUzNWaWFEb3dubG9hZCA9IGFzeW5jIChcbiAgICBzb3VyY2VLZXk6IHN0cmluZyxcbiAgICBkZXN0S2V5OiBzdHJpbmcsXG4pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICAgIGNvbnN0IGRvd25sb2FkZWQ6IGFueSA9IGF3YWl0IFN0b3JhZ2UuZ2V0KHNvdXJjZUtleSwge1xuICAgICAgICBkb3dubG9hZDogdHJ1ZSxcbiAgICAgICAgbGV2ZWw6IFwicHVibGljXCIsXG4gICAgfSk7XG5cbiAgICBjb25zdCBib2R5ID0gZG93bmxvYWRlZD8uQm9keTtcbiAgICBpZiAoIWJvZHkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFbXB0eSBkb3dubG9hZCBmb3IgXCIke3NvdXJjZUtleX1cIiwgY2Fubm90IGR1cGxpY2F0ZSBpdGApO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdDogYW55ID0gYXdhaXQgU3RvcmFnZS5wdXQoZGVzdEtleSwgYm9keSwge1xuICAgICAgICBsZXZlbDogXCJwdWJsaWNcIixcbiAgICAgICAgY29udGVudFR5cGU6IGRvd25sb2FkZWQuQ29udGVudFR5cGUgfHwgdW5kZWZpbmVkLFxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQua2V5O1xufTtcblxuIl19
193
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zbWFydGVycGxhbi1jb3JlL3NyYy9saWIvc2VydmljZXMvczMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR3RDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7SUFDdkMsTUFBTSxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQztTQUMxQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDaEUsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHlCQUF5QixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDekUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEtBQUssRUFDL0IsSUFBWSxFQUNaLElBQVUsRUFDVixRQUF1QixFQUNSLEVBQUU7SUFDakIsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMxRCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRTtRQUNoRCxnQkFBZ0IsQ0FBQyxRQUFRO1lBQ3JCLHdDQUF3QztRQUM1QyxDQUFDO1FBQ0QsV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJO0tBQ3pCLENBQUM7U0FDRyxJQUFJ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VUFBVSxHQUFRLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUU7UUFDakQsUUFBUSxFQUFFLElBQUk7UUFDZCxLQUFLLEVBQUUsUUFBUTtLQUNsQixDQUFDLENBQUM7SUFFSCxNQUFNLElBQUksR0FBRyxVQUFVLEVBQUUsSUFBSSxDQUFDO0lBQzlCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNSLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLFNBQVMsd0JBQXdCLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQVEsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUU7UUFDakQsS0FBSyxFQUFFLFFBQVE7UUFDZixXQUFXLEVBQUUsVUFBVSxDQUFDLFdBQVcsSUFBSSxTQUFTO0tBQ25ELENBQUMsQ0FBQztJQUNILE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQztBQUN0QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdG9yYWdlIH0gZnJvbSBcImF3cy1hbXBsaWZ5XCI7XHJcbmltcG9ydCB7IEVxdWlwbWVudCB9IGZyb20gXCIuLi90eXBlcy5zZXJ2aWNlXCI7XHJcblxyXG5leHBvcnQgY29uc3QgZGVsZXRlRnJvbVMzID0gYXN5bmMgKHBhdGgpID0+IHtcclxuICAgIGF3YWl0IFN0b3JhZ2UucmVtb3ZlKHBhdGgsIHsgbGV2ZWw6IFwicHVibGljXCIgfSlcclxuICAgICAgICAudGhlbigocmVzdWx0KSA9PiBjb25zb2xlLmxvZyhcIlN1Y2Nlc3NmdWxseSBkZWxldGVkID0+XCIsIHJlc3VsdCkpXHJcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gY29uc29sZS5sb2coXCJEZWxldGluZyBmcm9tIFMzIGVycm9yOlwiLCBlcnJvcikpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHVwbG9hZEZpbGVUb1MzID0gYXN5bmMgKFxyXG4gICAgcGF0aDogc3RyaW5nLFxyXG4gICAgZmlsZTogRmlsZSxcclxuICAgIG9iamVjdElkOiBzdHJpbmcgfCBudWxsLFxyXG4pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xyXG4gICAgY29uc3QgcHJlZml4ID0gb2JqZWN0SWQgPyBgJHtvYmplY3RJZC5zbGljZSgwLCA4KX1fYCA6IFwiXCI7XHJcbiAgICByZXR1cm4gU3RvcmFnZS5wdXQocGF0aCArIHByZWZpeCArIGZpbGUubmFtZSwgZmlsZSwge1xyXG4gICAgICAgIHByb2dyZXNzQ2FsbGJhY2socHJvZ3Jlc3MpIHtcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ1VwbG9hZGVkIDogJywgcHJvZ3Jlc3MpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29udGVudFR5cGU6IGZpbGUudHlwZSxcclxuICAgIH0pXHJcbiAgICAgICAgLnRoZW4oKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiU3VjY2VzcyA9PlwiLCByZXN1bHQpO1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LmtleTtcclxuICAgICAgICB9KTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBVcGxvYWRzIGEgZmlsZSwgcmVwb3J0aW5nIHByb2dyZXNzIGFzIGEgMC0xIGZyYWN0aW9uLlxyXG4gKlxyXG4gKiB1cGxvYWRGaWxlVG9TMyBhYm92ZSBzd2FsbG93cyBwcm9ncmVzcywgd2hpY2ggaXMgZmluZSBmb3IgYSBwaG90byBhbmQgdW51c2FibGUgZm9yIGEgM0QgbW9kZWw6XHJcbiAqIHRoZXNlIHJ1biB0byBodW5kcmVkcyBvZiBtZWdhYnl0ZXMsIGFuZCBhbiB1cGxvYWQgd2l0aCBubyBmZWVkYmFjayBpcyBpbmRpc3Rpbmd1aXNoYWJsZSBmcm9tIGFcclxuICogZnJvemVuIHBhZ2UuIFJldHVybnMgdGhlIHN0b3JlZCBrZXksIHdoaWNoIGlzIHdoYXQgZ2V0cyBzYXZlZCBvbiB0aGUgcmVjb3JkLlxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IHVwbG9hZEZpbGVUb1MzV2l0aFByb2dyZXNzID0gYXN5bmMgKFxyXG4gICAgcGF0aDogc3RyaW5nLFxyXG4gICAgZmlsZTogRmlsZSxcclxuICAgIG9uUHJvZ3Jlc3M/OiAoZnJhY3Rpb246IG51bWJlcikgPT4gdm9pZCxcclxuKTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcclxuICAgIHJldHVybiBTdG9yYWdlLnB1dChwYXRoICsgZmlsZS5uYW1lLCBmaWxlLCB7XHJcbiAgICAgICAgY29udGVudFR5cGU6IGZpbGUudHlwZSB8fCBcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiLFxyXG4gICAgICAgIHByb2dyZXNzQ2FsbGJhY2socHJvZ3Jlc3M6IHsgbG9hZGVkOiBudW1iZXI7IHRvdGFsOiBudW1iZXIgfSkge1xyXG4gICAgICAgICAgICBpZiAob25Qcm9ncmVzcyAmJiBwcm9ncmVzcy50b3RhbCA+IDApIHtcclxuICAgICAgICAgICAgICAgIG9uUHJvZ3Jlc3MocHJvZ3Jlc3MubG9hZGVkIC8gcHJvZ3Jlc3MudG90YWwpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgIH0pLnRoZW4oKHJlc3VsdDogYW55KSA9PiByZXN1bHQua2V5KTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRTaWduZWRJbWFnZVVybEZvckVxdWlwbWVudCA9IGFzeW5jIChcclxuICAgIGVxdWlwOiBFcXVpcG1lbnQsXHJcbik6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4gPT4ge1xyXG4gICAgaWYgKCFlcXVpcC5waG90bykge1xyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobnVsbCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gU3RvcmFnZS5nZXQoZXF1aXAucGhvdG8sIHsgbGV2ZWw6IFwicHVibGljXCIgfSlcclxuICAgICAgICAudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQgYXMgc3RyaW5nO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yIGZldGNoaW5nIGZpbGUgZnJvbSBzMyA9PlwiLCBlcnJvcik7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH0pO1xyXG5cclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRTaWduZWRJbWFnZVVybEZvclByb2ZpbGUgPSBhc3luYyAoXHJcbiAgICBwcm9maWxlLFxyXG4pOiBQcm9taXNlPHN0cmluZyB8IHZvaWQ+ID0+IHtcclxuICAgIHJldHVybiBTdG9yYWdlLmdldChwcm9maWxlLmF2YXRhciwgeyBsZXZlbDogXCJwdWJsaWNcIiB9KVxyXG4gICAgICAgIC50aGVuKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdCBhcyBzdHJpbmc7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3IgZmV0Y2hpbmcgZmlsZSBmcm9tIHMzID0+XCIsIGVycm9yKTtcclxuICAgICAgICB9KTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRTaWduZWRJbWFnZVVybEZvclNwYWNlID0gYXN5bmMgKFxyXG4gICAgc3BhY2UsXHJcbik6IFByb21pc2U8c3RyaW5nIHwgdm9pZD4gPT4ge1xyXG4gICAgcmV0dXJuIFN0b3JhZ2UuZ2V0KHNwYWNlLmFubmV4ZXMsIHsgbGV2ZWw6IFwicHVibGljXCIgfSlcclxuICAgICAgICAudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQgYXMgc3RyaW5nO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yIGZldGNoaW5nIGZpbGUgZnJvbSBzMyA9PlwiLCBlcnJvcik7XHJcbiAgICAgICAgfSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgdXBsb2FkQmFzZTY0SW1hZ2UgPSBhc3luYyAoXHJcbiAgICB1cmk6IHN0cmluZyxcclxuICAgIG9iamVjdElkOiBzdHJpbmcgfCBudWxsLFxyXG4gICAgcGF0aDogc3RyaW5nLFxyXG4gICAgZnJpZW5kbHlGaWxlTmFtZTogc3RyaW5nLFxyXG4pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xyXG4gICAgcmV0dXJuIGZldGNoKHVyaSlcclxuICAgICAgICAudGhlbigocmVzKSA9PiByZXMuYmxvYigpKVxyXG4gICAgICAgIC50aGVuKChibG9iKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpbGUgPSBuZXcgRmlsZShbYmxvYl0sIGAke2ZyaWVuZGx5RmlsZU5hbWV9LmpwZWdgLCB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiBcImltYWdlL2pwZWdcIixcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiB1cGxvYWRGaWxlVG9TMyhwYXRoLCBmaWxlLCBvYmplY3RJZCk7XHJcbiAgICAgICAgfSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgdXBsb2FkQmFzZTY0SW1hZ2VXaXRoUmV0cnkgPSBhc3luYyAoXHJcbiAgICB1cmk6IHN0cmluZyxcclxuICAgIG9iamVjdElkOiBzdHJpbmcgfCBudWxsLFxyXG4gICAgcGF0aDogc3RyaW5nLFxyXG4gICAgZnJpZW5kbHlGaWxlTmFtZTogc3RyaW5nLFxyXG4gICAgcmV0cnk6IG51bWJlclxyXG4pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICB3aGlsZSAocmV0cnkgPiAwKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByID0gYXdhaXQgdXBsb2FkQmFzZTY0SW1hZ2UodXJpLCBvYmplY3RJZCwgcGF0aCwgZnJpZW5kbHlGaWxlTmFtZSk7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKHIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICByZXRyeS0tO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgVXBsb2FkIGVycm9yLCByZXRyeSBuwrAgJHtyZXRyeX0gOiBgLCBlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHJlamVjdChcIk1heCByZXRyeSBleGNlZWRlZFwiKTtcclxuICAgIH0pO1xyXG59O1xyXG5cclxuXHJcbmV4cG9ydCBjb25zdCByZW1vdmVBbGxGaWxlc0Zyb21Gb2xkZXJTMyA9IGFzeW5jIChcclxuICAgIGZvbGRlclBhdGg6IHN0cmluZyxcclxuKTogUHJvbWlzZTxhbnk+ID0+IHtcclxuICAgIGNvbnN0IGFycmF5T2ZQcm9taXNlcyA9IFtdO1xyXG4gICAgU3RvcmFnZS5saXN0KGZvbGRlclBhdGgsIHsgbGV2ZWw6IFwicHVibGljXCIgfSlcclxuICAgICAgICAudGhlbigocmVzKSA9PiB7XHJcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKHJlcykubWFwKGFzeW5jIChrZXkpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGUgPSByZXNba2V5XTtcclxuICAgICAgICAgICAgICAgIGFycmF5T2ZQcm9taXNlcy5wdXNoKGRlbGV0ZUZyb21TMyhmaWxlLmtleSkpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IGNvbnNvbGUuZXJyb3IoXCJMaXN0IGZhaWx1cmVcIiwgZXJyb3IpKTtcclxuICAgIHJldHVybiBQcm9taXNlLmFsbChhcnJheU9mUHJvbWlzZXMpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGxpc3RGaWxlc0luRm9sZGVyID0gYXN5bmMgKGZvbGRlclBhdGg6IHN0cmluZyk6IFByb21pc2U8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gU3RvcmFnZS5saXN0KGZvbGRlclBhdGgsIHsgbGV2ZWw6IFwicHVibGljXCIsIHBhZ2VTaXplOiAnQUxMJyB9KVxyXG4gICAgICAgIC50aGVuKChyZXMpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlcy5yZXN1bHRzO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gY29uc29sZS5lcnJvcihcIkxpc3QgZmFpbHVyZVwiLCBlcnJvcikpO1xyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGdldFNpZ25lZEZpbGUgPSBhc3luYyAocGF0aCk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4gPT4ge1xyXG4gICAgcmV0dXJuIFN0b3JhZ2UuZ2V0KHBhdGgsIHsgbGV2ZWw6IFwicHVibGljXCIgfSlcclxuICAgICAgICAudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQgYXMgc3RyaW5nO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yIGZldGNoaW5nIGZpbGUgZnJvbSBzMyA9PlwiLCBlcnJvcik7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH0pO1xyXG5cclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBkb3dubG9hZEZpbGVBc09iamVjdCA9IGFzeW5jIChwYXRoKTogUHJvbWlzZTxPYmplY3QgfCB2b2lkPiA9PiB7XHJcbiAgICByZXR1cm4gU3RvcmFnZS5nZXQocGF0aCwgeyBkb3dubG9hZDogdHJ1ZSwgbGV2ZWw6IFwicHVibGljXCIgfSlcclxuICAgICAgICAudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXN1bHQgYXMgT2JqZWN0O1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yIGZldGNoaW5nIGZpbGUgZnJvbSBzMyA9PlwiLCBlcnJvcik7XHJcbiAgICAgICAgfSk7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgZ2V0QnVmZmVyRm9yRmlsZUZyb21TMyA9IGFzeW5jIChwYXRoKTogUHJvbWlzZTxBcnJheUJ1ZmZlcj4gPT4ge1xyXG4gICAgY29uc3Qgb2JqZWN0ID0gYXdhaXQgZG93bmxvYWRGaWxlQXNPYmplY3QocGF0aCk7XHJcbiAgICBpZiAob2JqZWN0KSB7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIHJldHVybiBuZXcgQXJyYXlCdWZmZXIob2JqZWN0LkJvZHksIFwiYmluYXJ5XCIpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgdXBsb2FkSnNvblRvUzMgPSBhc3luYyAoXHJcbiAgICBwYXRoOiBzdHJpbmcsXHJcbiAgICBqc29uOiBzdHJpbmcsXHJcbiAgICBmaWxlbmFtZTogc3RyaW5nLFxyXG4pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xyXG4gICAgcmV0dXJuIFN0b3JhZ2UucHV0KHBhdGggKyBmaWxlbmFtZSwganNvbiwge1xyXG4gICAgICAgIGNvbnRlbnRUeXBlOiBcImFwcGxpY2F0aW9uL2pzb25cIixcclxuICAgIH0pXHJcbiAgICAgICAgLnRoZW4oKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiU3VjY2VzcyA9PlwiLCByZXN1bHQpO1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LmtleTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvciA9PlwiLCBlcnJvcik7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH0pO1xyXG59O1xyXG5cclxuLyoqXHJcbiAqIFBoeXNpY2FsbHkgZHVwbGljYXRlcyBhbiBTMyBvYmplY3QgdG8gYSBuZXcga2V5LiBVc2VkIHdoZW4gY29weWluZyBhdHRhY2htZW50c1xyXG4gKiBiZXR3ZWVuIGZlYXR1cmVzL3RpY2tldHMvZXRjLiBzbyB0aGUgY29weSBpcyBmdWxseSBpbmRlcGVuZGVudDogZGVsZXRpbmcgdGhlXHJcbiAqIG9yaWdpbmFsIGZpbGUgbGF0ZXIgbXVzdCBub3QgYWZmZWN0IHRoZSBjb3B5LlxyXG4gKiBJTVBPUlRBTlQ6IGRvZXMgTk9UIHN3YWxsb3cgZXJyb3JzIOKAlCBjYWxsZXJzIG5lZWQgdGhlIHJlYWwgZXJyb3IgKGUuZy4gTm9TdWNoS2V5KVxyXG4gKiB0byBkaXN0aW5ndWlzaCBhbiBvcnBoYW5lZCBEQiByZWZlcmVuY2UgZnJvbSBhIGdlbnVpbmUgY29weSBmYWlsdXJlLlxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IGNvcHlGaWxlSW5TMyA9IGFzeW5jIChcclxuICAgIHNvdXJjZUtleTogc3RyaW5nLFxyXG4gICAgZGVzdEtleTogc3RyaW5nLFxyXG4pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xyXG4gICAgY29uc3QgcmVzdWx0OiBhbnkgPSBhd2FpdCBTdG9yYWdlLmNvcHkoXHJcbiAgICAgICAgeyBrZXk6IHNvdXJjZUtleSwgbGV2ZWw6IFwicHVibGljXCIgfSxcclxuICAgICAgICB7IGtleTogZGVzdEtleSwgbGV2ZWw6IFwicHVibGljXCIgfSxcclxuICAgICk7XHJcbiAgICByZXR1cm4gcmVzdWx0LmtleTtcclxufTtcclxuXHJcbi8qKlxyXG4gKiBGYWxsYmFjayBkdXBsaWNhdGlvbjogZG93bmxvYWRzIHRoZSBvYmplY3QgYW5kIHJlLXVwbG9hZHMgaXQgdW5kZXIgdGhlIG5ldyBrZXkuXHJcbiAqXHJcbiAqIFN0b3JhZ2UuY29weSgpIGJ1aWxkcyB0aGUgUzMgYHgtYW16LWNvcHktc291cmNlYCBoZWFkZXIgYnkgcGxhaW4gc3RyaW5nIGNvbmNhdGVuYXRpb25cclxuICogKHNlZSBAYXdzLWFtcGxpZnkvc3RvcmFnZSBBV1NTM1Byb3ZpZGVyLmNvcHk6IGAke2J1Y2tldH0vJHtzcmNQcmVmaXh9JHtzcmNLZXl9YCksIHdpdGggbm9cclxuICogVVJMLWVuY29kaW5nIG9mIHRoZSBrZXkuIEEga2V5IGhvbGRpbmcgYSBzcGFjZSwgYW4gYWNjZW50IG9yIGEgcGFyZW50aGVzaXMgdGhlcmVmb3JlXHJcbiAqIHlpZWxkcyBhIGhlYWRlciB0aGF0IGRvZXMgbm90IG1hdGNoIHRoZSBzaWduZWQgY2Fub25pY2FsIHJlcXVlc3QsIGFuZCBTMyBhbnN3ZXJzXHJcbiAqIFwiVGhlIHJlcXVlc3Qgc2lnbmF0dXJlIHdlIGNhbGN1bGF0ZWQgZG9lcyBub3QgbWF0Y2ggdGhlIHNpZ25hdHVyZSB5b3UgcHJvdmlkZWRcIi5cclxuICpcclxuICogUm91bmQtdHJpcHBpbmcgdGhlIGJ5dGVzIGF2b2lkcyB0aGF0IGhlYWRlciBlbnRpcmVseSBhbmQgd29ya3MgZm9yIGFueSBrZXksIGF0IHRoZSBjb3N0XHJcbiAqIG9mIHRyYW5zZmVycmluZyB0aGUgZmlsZSB0aHJvdWdoIHRoZSBicm93c2VyIOKAlCBoZW5jZSBpdHMgdXNlIGFzIGEgZmFsbGJhY2sgb25seS5cclxuICogSU1QT1JUQU5UOiBsaWtlIGNvcHlGaWxlSW5TMywgdGhpcyBtdXN0IE5PVCBzd2FsbG93IGVycm9ycy5cclxuICovXHJcbmV4cG9ydCBjb25zdCBjb3B5RmlsZUluUzNWaWFEb3dubG9hZCA9IGFzeW5jIChcclxuICAgIHNvdXJjZUtleTogc3RyaW5nLFxyXG4gICAgZGVzdEtleTogc3RyaW5nLFxyXG4pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xyXG4gICAgY29uc3QgZG93bmxvYWRlZDogYW55ID0gYXdhaXQgU3RvcmFnZS5nZXQoc291cmNlS2V5LCB7XHJcbiAgICAgICAgZG93bmxvYWQ6IHRydWUsXHJcbiAgICAgICAgbGV2ZWw6IFwicHVibGljXCIsXHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBib2R5ID0gZG93bmxvYWRlZD8uQm9keTtcclxuICAgIGlmICghYm9keSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRW1wdHkgZG93bmxvYWQgZm9yIFwiJHtzb3VyY2VLZXl9XCIsIGNhbm5vdCBkdXBsaWNhdGUgaXRgKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCByZXN1bHQ6IGFueSA9IGF3YWl0IFN0b3JhZ2UucHV0KGRlc3RLZXksIGJvZHksIHtcclxuICAgICAgICBsZXZlbDogXCJwdWJsaWNcIixcclxuICAgICAgICBjb250ZW50VHlwZTogZG93bmxvYWRlZC5Db250ZW50VHlwZSB8fCB1bmRlZmluZWQsXHJcbiAgICB9KTtcclxuICAgIHJldHVybiByZXN1bHQua2V5O1xyXG59O1xyXG5cclxuIl19
@@ -123,4 +123,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
123
123
  providedIn: "root",
124
124
  }]
125
125
  }], ctorParameters: () => [{ type: i1.FilterService }, { type: i2.EquipmentService }] });
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL3NlYXJjaC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlDQUF5QztBQUN6QyxzQ0FBc0M7QUFDdEMscUNBQXFDO0FBQ3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFLM0MsTUFBTSxDQUFOLElBQVksZ0JBT1g7QUFQRCxXQUFZLGdCQUFnQjtJQUN4QixpQ0FBYSxDQUFBO0lBQ2IsMkNBQXVCLENBQUE7SUFDdkIscUNBQWlCLENBQUE7SUFDakIseUNBQXFCLENBQUE7SUFDckIsdUNBQW1CLENBQUE7SUFDbkIseUNBQXFCLENBQUE7QUFDekIsQ0FBQyxFQVBXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFPM0I7QUFLRCxNQUFNLE9BQU8sYUFBYTtJQUVWO0lBQ0E7SUFGWixZQUNZLGFBQTRCLEVBQzVCLGdCQUFrQztRQURsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO0lBQzFDLENBQUM7SUFFTCxLQUFLLENBQUMseUJBQXlCLENBQzNCLElBQVksRUFDWixVQUE0QixFQUM1QixVQUFlO1FBRWYsSUFBSSxPQUFPLENBQUM7UUFDWixRQUFRLFVBQVUsRUFBRSxDQUFDO1lBQ2pCLEtBQUssZ0JBQWdCLENBQUMsU0FBUztnQkFDM0IsT0FBTyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ3BCLEtBQUssTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztvQkFDakQsTUFBTSxjQUFjLEdBQ2hCLElBQUksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQ3RDLE1BQU0sRUFDTixJQUFJLENBQ1AsQ0FBQztv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QUFFLENBQUM7d0JBQ3BCLE1BQU0sQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDO29CQUNoQyxDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUNMLENBQUM7Z0JBQ0YsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQzdDLFVBQVUsRUFDVixJQUFJLENBQ1AsQ0FBQztnQkFDRixNQUFNO1lBQ1YsS0FBSyxnQkFBZ0IsQ0FBQyxRQUFRO2dCQUMxQixPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FDL0MsVUFBVSxFQUNWLElBQUksQ0FDUCxDQUFDO2dCQUNGLE1BQU07WUFDVixLQUFLLGdCQUFnQixDQUFDLE9BQU87Z0JBQ3pCLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLHFCQUFxQixDQUM5QyxVQUFVLEVBQ1YsSUFBSSxDQUNQLENBQUM7Z0JBQ0YsTUFBTTtZQUNWO2dCQUNJLE1BQU07UUFDZCxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQzt3R0EvSlEsYUFBYTs0R0FBYixhQUFhLGNBRlYsTUFBTTs7NEZBRVQsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jYXNlLWRlY2xhcmF0aW9ucyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWF3YWl0LWluLWxvb3AgKi9cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTWlzc2lvbiB9IGZyb20gXCIuLi90eXBlcy5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBGaWx0ZXJTZXJ2aWNlIH0gZnJvbSBcIi4vZmlsdGVyLnNlcnZpY2VcIjtcbmltcG9ydCB7IEVxdWlwbWVudFNlcnZpY2UgfSBmcm9tIFwiLi9tb2RlbHMvZXF1aXBtZW50LnNlcnZpY2VcIjtcblxuZXhwb3J0IGVudW0gU2VhcmNoT2JqZWN0VHlwZSB7XG4gICAgVVNFUiA9IFwiVVNFUlwiLFxuICAgIEVRVUlQTUVOVCA9IFwiRVFVSVBNRU5UXCIsXG4gICAgVElDS0VUID0gXCJUSUNLRVRcIixcbiAgICBMT0NBVElPTiA9IFwiTE9DQVRJT05cIixcbiAgICBGRUFUVVJFID0gXCJGRUFUVVJFXCIsXG4gICAgVEVNUExBVEUgPSBcIlRFTVBMQVRFXCIsXG59XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoU2VydmljZSB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZmlsdGVyU2VydmljZTogRmlsdGVyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBlcXVpcG1lbnRTZXJ2aWNlOiBFcXVpcG1lbnRTZXJ2aWNlLFxuICAgICkgeyB9XG5cbiAgICBhc3luYyBzZWFyY2hGb3JUZXJtRm9yVHlwZUluTWFwKFxuICAgICAgICB0ZXJtOiBzdHJpbmcsXG4gICAgICAgIG9iamVjdFR5cGU6IFNlYXJjaE9iamVjdFR5cGUsXG4gICAgICAgIHNlYXJjaGFibGU6IGFueSxcbiAgICApOiBQcm9taXNlPGFueT4ge1xuICAgICAgICBsZXQgcmVzdWx0cztcbiAgICAgICAgc3dpdGNoIChvYmplY3RUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuRVFVSVBNRU5UOlxuICAgICAgICAgICAgICAgIHJlc3VsdHMgPSBuZXcgTWFwKCk7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBbc3BhY2UsIGVxdWlwc10gb2Ygc2VhcmNoYWJsZS5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRFcXVpcHMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlckVxdWlwbWVudHNGb3JUZXJtKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVxdWlwcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXJtLFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5zZXQoc3BhY2UsIGZpbHRlcmVkRXF1aXBzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuVElDS0VUOlxuICAgICAgICAgICAgICAgIHJlc3VsdHMgPSBuZXcgTWFwKCk7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBbc3BhY2UsIHRpY2tldHNdIG9mIHNlYXJjaGFibGUuZW50cmllcygpKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGlja2V0cy5tYXAoYXN5bmMgKHRpY2tldCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVxdWlwcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZXF1aXBtZW50U2VydmljZS5nZXRFcXVpcG1lbnRzRm9yVGlja2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlja2V0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcXVpcHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNrZXQuZXF1aXBtZW50cyA9IGVxdWlwcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRUaWNrZXRzID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJUaWNrZXRzRm9yVGVybShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNrZXRzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlcm0sXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRzLnNldChzcGFjZSwgZmlsdGVyZWRUaWNrZXRzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuTE9DQVRJT046XG4gICAgICAgICAgICAgICAgcmVzdWx0cyA9IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJMb2NhdGlvbnNGb3JUZXJtKFxuICAgICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlLFxuICAgICAgICAgICAgICAgICAgICB0ZXJtLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuVVNFUjpcbiAgICAgICAgICAgICAgICByZXN1bHRzID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBvcmdPYmplY3Qgb2Ygc2VhcmNoYWJsZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvcmdSZXN1bHRzID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJPcmdhbmlzYXRpb25zRm9yVGVybShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3JnT2JqZWN0Lm9yZ10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVybSxcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcmdSZXN1bHRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJvZmlsZXMgPSBvcmdPYmplY3QudXNlcnMubWFwKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvYmplY3QpID0+IG9iamVjdC51c2VyLFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVzZXJSZXN1bHRzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyVXNlcnNGb3JUZXJtKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVybSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRVc2VyTWlzc2lvbnMgPSBvcmdPYmplY3QudXNlcnMuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvYmplY3QpID0+IHVzZXJSZXN1bHRzLmluY2x1ZGVzKG9iamVjdC51c2VyKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodXNlclJlc3VsdHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZzogb3JnT2JqZWN0Lm9yZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcnM6IGZpbHRlcmVkVXNlck1pc3Npb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKG9yZ09iamVjdCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuRkVBVFVSRTpcbiAgICAgICAgICAgICAgICByZXN1bHRzID0gbmV3IE1hcCgpO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW3NwYWNlLCBmZWF0dXJlc10gb2Ygc2VhcmNoYWJsZS5lbnRyaWVzKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRGZWF0dXJlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyRmVhdHVyZXNGb3JUZXJtKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlcm0sXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRzLnNldChzcGFjZSwgZmlsdGVyZWRGZWF0dXJlcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBTZWFyY2hPYmplY3RUeXBlLlRFTVBMQVRFOlxuICAgICAgICAgICAgICAgIHJlc3VsdHMgPSBuZXcgTWFwKCk7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBbem9uZSwgdGVtcGxhdGVzXSBvZiBzZWFyY2hhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRlbXBsYXRlUmVzdWx0cyA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyVGVtcGxhdGVzRm9yVGVybShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZXMgYXMgTWlzc2lvbltdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlcm0sXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGVtcGxhdGVSZXN1bHRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMuc2V0KHpvbmUsIHRlbXBsYXRlUmVzdWx0cyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHRzO1xuICAgIH1cblxuICAgIGFzeW5jIHNlYXJjaEZvclRlcm1Gb3JUeXBlSW5MaXN0KFxuICAgICAgICB0ZXJtOiBzdHJpbmcsXG4gICAgICAgIG9iamVjdFR5cGU6IFNlYXJjaE9iamVjdFR5cGUsXG4gICAgICAgIHNlYXJjaGFibGU6IGFueVtdLFxuICAgICk6IFByb21pc2U8YW55W10+IHtcbiAgICAgICAgbGV0IHJlc3VsdHM7XG4gICAgICAgIHN3aXRjaCAob2JqZWN0VHlwZSkge1xuICAgICAgICAgICAgY2FzZSBTZWFyY2hPYmplY3RUeXBlLkVRVUlQTUVOVDpcbiAgICAgICAgICAgICAgICByZXN1bHRzID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlckVxdWlwbWVudHNGb3JUZXJtKFxuICAgICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlLFxuICAgICAgICAgICAgICAgICAgICB0ZXJtLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuVElDS0VUOlxuICAgICAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlLm1hcChhc3luYyAodGlja2V0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcXVpcHMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZXF1aXBtZW50U2VydmljZS5nZXRFcXVpcG1lbnRzRm9yVGlja2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNrZXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcXVpcHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tldC5lcXVpcGVtZW50cyA9IGVxdWlwcztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICByZXN1bHRzID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlclRpY2tldHNGb3JUZXJtKFxuICAgICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlLFxuICAgICAgICAgICAgICAgICAgICB0ZXJtLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuTE9DQVRJT046XG4gICAgICAgICAgICAgICAgcmVzdWx0cyA9IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJMb2NhdGlvbnNGb3JUZXJtKFxuICAgICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlLFxuICAgICAgICAgICAgICAgICAgICB0ZXJtLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuRkVBVFVSRTpcbiAgICAgICAgICAgICAgICByZXN1bHRzID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlckZlYXR1cmVzRm9yVGVybShcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoYWJsZSxcbiAgICAgICAgICAgICAgICAgICAgdGVybSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICB9XG59XG4iXX0=
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc21hcnRlcnBsYW4tY29yZS9zcmMvbGliL3NlcnZpY2VzL3NlYXJjaC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHlDQUF5QztBQUN6QyxzQ0FBc0M7QUFDdEMscUNBQXFDO0FBQ3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFLM0MsTUFBTSxDQUFOLElBQVksZ0JBT1g7QUFQRCxXQUFZLGdCQUFnQjtJQUN4QixpQ0FBYSxDQUFBO0lBQ2IsMkNBQXVCLENBQUE7SUFDdkIscUNBQWlCLENBQUE7SUFDakIseUNBQXFCLENBQUE7SUFDckIsdUNBQW1CLENBQUE7SUFDbkIseUNBQXFCLENBQUE7QUFDekIsQ0FBQyxFQVBXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFPM0I7QUFLRCxNQUFNLE9BQU8sYUFBYTtJQUVWO0lBQ0E7SUFGWixZQUNZLGFBQTRCLEVBQzVCLGdCQUFrQztRQURsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO0lBQzFDLENBQUM7SUFFTCxLQUFLLENBQUMseUJBQXlCLENBQzNCLElBQVksRUFDWixVQUE0QixFQUM1QixVQUFlO1FBRWYsSUFBSSxPQUFPLENBQUM7UUFDWixRQUFRLFVBQVUsRUFBRSxDQUFDO1lBQ2pCLEtBQUssZ0JBQWdCLENBQUMsU0FBUztnQkFDM0IsT0FBTyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ3BCLEtBQUssTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztvQkFDakQsTUFBTSxjQUFjLEdBQ2hCLElBQUksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQ3RDLE1BQU0sRUFDTixJQUFJLENBQ1AsQ0FBQztv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QUFFLENBQUM7d0JBQ3BCLE1BQU0sQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDO29CQUNoQyxDQUFDO2dCQUNMLENBQUMsQ0FBQyxDQUNMLENBQUM7Z0JBQ0YsT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQzdDLFVBQVUsRUFDVixJQUFJLENBQ1AsQ0FBQztnQkFDRixNQUFNO1lBQ1YsS0FBSyxnQkFBZ0IsQ0FBQyxRQUFRO2dCQUMxQixPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FDL0MsVUFBVSxFQUNWLElBQUksQ0FDUCxDQUFDO2dCQUNGLE1BQU07WUFDVixLQUFLLGdCQUFnQixDQUFDLE9BQU87Z0JBQ3pCLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLHFCQUFxQixDQUM5QyxVQUFVLEVBQ1YsSUFBSSxDQUNQLENBQUM7Z0JBQ0YsTUFBTTtZQUNWO2dCQUNJLE1BQU07UUFDZCxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQzt3R0EvSlEsYUFBYTs0R0FBYixhQUFhLGNBRlYsTUFBTTs7NEZBRVQsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jYXNlLWRlY2xhcmF0aW9ucyAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wYXJhbS1yZWFzc2lnbiAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1hd2FpdC1pbi1sb29wICovXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBNaXNzaW9uIH0gZnJvbSBcIi4uL3R5cGVzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRmlsdGVyU2VydmljZSB9IGZyb20gXCIuL2ZpbHRlci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEVxdWlwbWVudFNlcnZpY2UgfSBmcm9tIFwiLi9tb2RlbHMvZXF1aXBtZW50LnNlcnZpY2VcIjtcclxuXHJcbmV4cG9ydCBlbnVtIFNlYXJjaE9iamVjdFR5cGUge1xyXG4gICAgVVNFUiA9IFwiVVNFUlwiLFxyXG4gICAgRVFVSVBNRU5UID0gXCJFUVVJUE1FTlRcIixcclxuICAgIFRJQ0tFVCA9IFwiVElDS0VUXCIsXHJcbiAgICBMT0NBVElPTiA9IFwiTE9DQVRJT05cIixcclxuICAgIEZFQVRVUkUgPSBcIkZFQVRVUkVcIixcclxuICAgIFRFTVBMQVRFID0gXCJURU1QTEFURVwiLFxyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIFNlYXJjaFNlcnZpY2Uge1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBmaWx0ZXJTZXJ2aWNlOiBGaWx0ZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgZXF1aXBtZW50U2VydmljZTogRXF1aXBtZW50U2VydmljZSxcclxuICAgICkgeyB9XHJcblxyXG4gICAgYXN5bmMgc2VhcmNoRm9yVGVybUZvclR5cGVJbk1hcChcclxuICAgICAgICB0ZXJtOiBzdHJpbmcsXHJcbiAgICAgICAgb2JqZWN0VHlwZTogU2VhcmNoT2JqZWN0VHlwZSxcclxuICAgICAgICBzZWFyY2hhYmxlOiBhbnksXHJcbiAgICApOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIGxldCByZXN1bHRzO1xyXG4gICAgICAgIHN3aXRjaCAob2JqZWN0VHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuRVFVSVBNRU5UOlxyXG4gICAgICAgICAgICAgICAgcmVzdWx0cyA9IG5ldyBNYXAoKTtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW3NwYWNlLCBlcXVpcHNdIG9mIHNlYXJjaGFibGUuZW50cmllcygpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRFcXVpcHMgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyRXF1aXBtZW50c0ZvclRlcm0oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcXVpcHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXJtLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdHMuc2V0KHNwYWNlLCBmaWx0ZXJlZEVxdWlwcyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBTZWFyY2hPYmplY3RUeXBlLlRJQ0tFVDpcclxuICAgICAgICAgICAgICAgIHJlc3VsdHMgPSBuZXcgTWFwKCk7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFtzcGFjZSwgdGlja2V0c10gb2Ygc2VhcmNoYWJsZS5lbnRyaWVzKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGlja2V0cy5tYXAoYXN5bmMgKHRpY2tldCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXF1aXBzID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmVxdWlwbWVudFNlcnZpY2UuZ2V0RXF1aXBtZW50c0ZvclRpY2tldChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlja2V0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXF1aXBzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNrZXQuZXF1aXBtZW50cyA9IGVxdWlwcztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZFRpY2tldHMgPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyVGlja2V0c0ZvclRlcm0oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aWNrZXRzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVybSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHRzLnNldChzcGFjZSwgZmlsdGVyZWRUaWNrZXRzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuTE9DQVRJT046XHJcbiAgICAgICAgICAgICAgICByZXN1bHRzID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlckxvY2F0aW9uc0ZvclRlcm0oXHJcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoYWJsZSxcclxuICAgICAgICAgICAgICAgICAgICB0ZXJtLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFNlYXJjaE9iamVjdFR5cGUuVVNFUjpcclxuICAgICAgICAgICAgICAgIHJlc3VsdHMgPSBbXTtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgb3JnT2JqZWN0IG9mIHNlYXJjaGFibGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBvcmdSZXN1bHRzID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlck9yZ2FuaXNhdGlvbnNGb3JUZXJtKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW29yZ09iamVjdC5vcmddLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVybSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAob3JnUmVzdWx0cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJvZmlsZXMgPSBvcmdPYmplY3QudXNlcnMubWFwKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9iamVjdCkgPT4gb2JqZWN0LnVzZXIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVzZXJSZXN1bHRzID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJVc2Vyc0ZvclRlcm0oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmlsZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVybSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkVXNlck1pc3Npb25zID0gb3JnT2JqZWN0LnVzZXJzLmZpbHRlcihcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvYmplY3QpID0+IHVzZXJSZXN1bHRzLmluY2x1ZGVzKG9iamVjdC51c2VyKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVzZXJSZXN1bHRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JnOiBvcmdPYmplY3Qub3JnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJzOiBmaWx0ZXJlZFVzZXJNaXNzaW9ucyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKG9yZ09iamVjdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoT2JqZWN0VHlwZS5GRUFUVVJFOlxyXG4gICAgICAgICAgICAgICAgcmVzdWx0cyA9IG5ldyBNYXAoKTtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW3NwYWNlLCBmZWF0dXJlc10gb2Ygc2VhcmNoYWJsZS5lbnRyaWVzKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJlZEZlYXR1cmVzID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlckZlYXR1cmVzRm9yVGVybShcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVybSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHRzLnNldChzcGFjZSwgZmlsdGVyZWRGZWF0dXJlcyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBTZWFyY2hPYmplY3RUeXBlLlRFTVBMQVRFOlxyXG4gICAgICAgICAgICAgICAgcmVzdWx0cyA9IG5ldyBNYXAoKTtcclxuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgW3pvbmUsIHRlbXBsYXRlc10gb2Ygc2VhcmNoYWJsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRlbXBsYXRlUmVzdWx0cyA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJUZW1wbGF0ZXNGb3JUZXJtKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVzIGFzIE1pc3Npb25bXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlcm0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXBsYXRlUmVzdWx0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMuc2V0KHpvbmUsIHRlbXBsYXRlUmVzdWx0cyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdHM7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc2VhcmNoRm9yVGVybUZvclR5cGVJbkxpc3QoXHJcbiAgICAgICAgdGVybTogc3RyaW5nLFxyXG4gICAgICAgIG9iamVjdFR5cGU6IFNlYXJjaE9iamVjdFR5cGUsXHJcbiAgICAgICAgc2VhcmNoYWJsZTogYW55W10sXHJcbiAgICApOiBQcm9taXNlPGFueVtdPiB7XHJcbiAgICAgICAgbGV0IHJlc3VsdHM7XHJcbiAgICAgICAgc3dpdGNoIChvYmplY3RUeXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoT2JqZWN0VHlwZS5FUVVJUE1FTlQ6XHJcbiAgICAgICAgICAgICAgICByZXN1bHRzID0gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlckVxdWlwbWVudHNGb3JUZXJtKFxyXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaGFibGUsXHJcbiAgICAgICAgICAgICAgICAgICAgdGVybSxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBTZWFyY2hPYmplY3RUeXBlLlRJQ0tFVDpcclxuICAgICAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaGFibGUubWFwKGFzeW5jICh0aWNrZXQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXF1aXBzID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZXF1aXBtZW50U2VydmljZS5nZXRFcXVpcG1lbnRzRm9yVGlja2V0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tldCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcXVpcHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlja2V0LmVxdWlwZW1lbnRzID0gZXF1aXBzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0cyA9IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJUaWNrZXRzRm9yVGVybShcclxuICAgICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlLFxyXG4gICAgICAgICAgICAgICAgICAgIHRlcm0sXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoT2JqZWN0VHlwZS5MT0NBVElPTjpcclxuICAgICAgICAgICAgICAgIHJlc3VsdHMgPSB0aGlzLmZpbHRlclNlcnZpY2UuZmlsdGVyTG9jYXRpb25zRm9yVGVybShcclxuICAgICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlLFxyXG4gICAgICAgICAgICAgICAgICAgIHRlcm0sXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgU2VhcmNoT2JqZWN0VHlwZS5GRUFUVVJFOlxyXG4gICAgICAgICAgICAgICAgcmVzdWx0cyA9IHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXJGZWF0dXJlc0ZvclRlcm0oXHJcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoYWJsZSxcclxuICAgICAgICAgICAgICAgICAgICB0ZXJtLFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXN1bHRzO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -41,4 +41,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
41
41
  providedIn: 'root'
42
42
  }]
43
43
  }], ctorParameters: () => [{ type: i1.NgbModal }] });
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9zdXBwb3J0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUcsR0FBRyxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7QUFNbkMsTUFBTSxPQUFPLGNBQWM7SUFHTjtJQUZuQixjQUFjLENBQUM7SUFFZixZQUFtQixZQUFzQjtRQUF0QixpQkFBWSxHQUFaLFlBQVksQ0FBVTtJQUFJLENBQUM7SUFFOUM7O09BRUc7SUFDSCxlQUFlLENBQUMsYUFBYTtRQUMzQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUMxRCxnQkFBZ0IsRUFBRSxlQUFlO1NBQ2xDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBUTtRQUN4QixPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUMsRUFBRTtZQUNsQyxNQUFNLFFBQVEsR0FBRyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLGlCQUFpQixFQUFFO2dCQUM5RCxJQUFJLEVBQUcsSUFBSTthQUNaLENBQUMsQ0FBQztZQUNILElBQUcsUUFBUSxDQUFDLEdBQUcsRUFBQyxDQUFDO2dCQUNmLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQTtZQUNsQixDQUFDO2lCQUFJLENBQUM7Z0JBQ0osT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQ2pCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7d0dBNUJVLGNBQWM7NEdBQWQsY0FBYyxjQUZiLE1BQU07OzRGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgIEFQSSB9IGZyb20gXCJhd3MtYW1wbGlmeVwiO1xuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tIFwiQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXBcIjtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU3VwcG9ydFNlcnZpY2Uge1xuICBtb2RhbFJlZmVyZW5jZTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCkgeyB9XG5cbiAgLyoqXG4gICAqIE9wZW4gdGhlIHN1cHBvcnQgZm9ybVxuICAgKi9cbiAgb3BlblN1cHBvcnRGb3JtKGZvcm1Db21wb25lbnQpIHtcbiAgICB0aGlzLm1vZGFsUmVmZXJlbmNlID0gdGhpcy5tb2RhbFNlcnZpY2Uub3Blbihmb3JtQ29tcG9uZW50LCB7XG4gICAgICBtb2RhbERpYWxvZ0NsYXNzOiAnbW9kYWwtcGFkZGluZycsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2VuZCBzdXBwb3J0IHJlcXVlc3QgdG8gamlyYVxuICAgKi9cbiAgYXN5bmMgc2VuZFN1cHBvcnQoZGF0YTphbnkpOlByb21pc2U8c3RyaW5nPntcbiAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUpPT57XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IEFQSS5wb3N0KFwiaGVscEVtYWlsXCIsIFwiL2ppcmEtZW1haWwvbmV3XCIsIHtcbiAgICAgICAgYm9keSA6IGRhdGEsXG4gICAgICB9KTtcbiAgICAgIGlmKHJlc3BvbnNlLmVycil7XG4gICAgICAgIHJlc29sdmUoJ2Vycm9yJylcbiAgICAgIH1lbHNle1xuICAgICAgICByZXNvbHZlKCdzZW5kJylcbiAgICAgIH1cbiAgICB9KVxuICB9XG59XG4iXX0=
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9zdXBwb3J0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUcsR0FBRyxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7QUFNbkMsTUFBTSxPQUFPLGNBQWM7SUFHTjtJQUZuQixjQUFjLENBQUM7SUFFZixZQUFtQixZQUFzQjtRQUF0QixpQkFBWSxHQUFaLFlBQVksQ0FBVTtJQUFJLENBQUM7SUFFOUM7O09BRUc7SUFDSCxlQUFlLENBQUMsYUFBYTtRQUMzQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUMxRCxnQkFBZ0IsRUFBRSxlQUFlO1NBQ2xDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBUTtRQUN4QixPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUMsRUFBRTtZQUNsQyxNQUFNLFFBQVEsR0FBRyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLGlCQUFpQixFQUFFO2dCQUM5RCxJQUFJLEVBQUcsSUFBSTthQUNaLENBQUMsQ0FBQztZQUNILElBQUcsUUFBUSxDQUFDLEdBQUcsRUFBQyxDQUFDO2dCQUNmLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQTtZQUNsQixDQUFDO2lCQUFJLENBQUM7Z0JBQ0osT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQ2pCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7d0dBNUJVLGNBQWM7NEdBQWQsY0FBYyxjQUZiLE1BQU07OzRGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyAgQVBJIH0gZnJvbSBcImF3cy1hbXBsaWZ5XCI7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSBcIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdXBwb3J0U2VydmljZSB7XHJcbiAgbW9kYWxSZWZlcmVuY2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsKSB7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogT3BlbiB0aGUgc3VwcG9ydCBmb3JtXHJcbiAgICovXHJcbiAgb3BlblN1cHBvcnRGb3JtKGZvcm1Db21wb25lbnQpIHtcclxuICAgIHRoaXMubW9kYWxSZWZlcmVuY2UgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKGZvcm1Db21wb25lbnQsIHtcclxuICAgICAgbW9kYWxEaWFsb2dDbGFzczogJ21vZGFsLXBhZGRpbmcnLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZW5kIHN1cHBvcnQgcmVxdWVzdCB0byBqaXJhXHJcbiAgICovXHJcbiAgYXN5bmMgc2VuZFN1cHBvcnQoZGF0YTphbnkpOlByb21pc2U8c3RyaW5nPntcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSk9PntcclxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBBUEkucG9zdChcImhlbHBFbWFpbFwiLCBcIi9qaXJhLWVtYWlsL25ld1wiLCB7XHJcbiAgICAgICAgYm9keSA6IGRhdGEsXHJcbiAgICAgIH0pO1xyXG4gICAgICBpZihyZXNwb25zZS5lcnIpe1xyXG4gICAgICAgIHJlc29sdmUoJ2Vycm9yJylcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgcmVzb2x2ZSgnc2VuZCcpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -111,4 +111,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
111
111
  providedIn: 'root',
112
112
  }]
113
113
  }], ctorParameters: () => [{ type: i1.CaptureService }, { type: i2.NavigationService }] });
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dlZXAtbG9jYXRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9zd2VlcC1sb2NhdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7QUFXakQ7Ozs7Ozs7O0dBUUc7QUFJSCxNQUFNLE9BQU8sbUJBQW1CO0lBYXBCO0lBQ0E7SUFiVjs7Ozs7T0FLRztJQUNLLE1BQU0sQ0FBVSxtQkFBbUIsR0FBRyxFQUFFLENBQUM7SUFFakQsZ0dBQWdHO0lBQy9FLGFBQWEsR0FBRyxJQUFJLEdBQUcsRUFBb0MsQ0FBQztJQUU3RSxZQUNVLGNBQThCLEVBQzlCLGlCQUFvQztRQURwQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtJQUMzQyxDQUFDO0lBRUo7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsZ0JBQWdCLENBQ3BCLEtBQTBDLEVBQzFDLE9BQWU7UUFFZixJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdkIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsSUFBSSxDQUFDO1lBQ0gsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNsRSxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUMsMkRBQTJELE9BQU8sRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzFGLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7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SUFBSSxDQUFDO2dCQUNILE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNqRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxFQUFFLENBQUM7b0JBQ3hGLE1BQU0sQ0FBQyxJQUFJLENBQUM7d0JBQ1YsT0FBTyxFQUFFLFVBQVUsQ0FBQyxpQkFBaUI7d0JBQ3JDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQzt3QkFDYixDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7d0JBQ2IsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO3FCQUNkLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQztZQUFDLE1BQU0sQ0FBQztnQkFDUCx1RUFBdUU7WUFDekUsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO3dHQXJHVSxtQkFBbUI7NEdBQW5CLG1CQUFtQixjQUZsQixNQUFNOzs0RkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FwdHVyZVZpZXdlciB9IGZyb20gJy4uL3R5cGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FwdHVyZVNlcnZpY2UgfSBmcm9tICcuL21vZGVscy9jYXB0dXJlLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuL21vZGVscy9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuXG5pbnRlcmZhY2UgU3dlZXBQb3NpdGlvbiB7XG4gIHN3ZWVwSUQ6IHN0cmluZztcbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG4gIHo6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBGaW5kcyB0aGUgTWF0dGVycG9ydCBzd2VlcCBhIHBvaW50IGluIGEgc3BhY2Ugc2l0cyBjbG9zZXN0IHRvLlxuICpcbiAqIEEgdGFnIHBsYWNlZCBpbiBNYXR0ZXJwb3J0IGlzIHJlY29yZGVkIHdpdGggdGhlIHN3ZWVwIGl0IHdhcyBwbGFjZWQgZnJvbSwgYW5kIG11Y2ggb2YgdGhlXG4gKiBNYXR0ZXJwb3J0IHNpZGUga2V5cyBvbiB0aGF0OiB3aGljaCBmbG9vciBwbGFuIGRyYXdzIHRoZSB0YWcsIHdoaWNoIHpvbmUgaXQgYmVsb25ncyB0bywgd2hpY2hcbiAqIGZsb29yIGl0IHNob3dzIG9uLiBBIHRhZyBwbGFjZWQgaW4gdGhlIFRocmVlLmpzIHZpZXdlciBoYXMgbm8gc3dlZXAsIHNvIGl0IHdhcyBtaXNzaW5nIGZyb20gYWxsXG4gKiBvZiB0aGVtLiBSZXNvbHZpbmcgdGhlIG5lYXJlc3Qgb25lIGF0IGNyZWF0aW9uIC0gd2hhdCB0aGUgdGFnIGNvcHkgdG9vbCBhbHJlYWR5IGRvZXMgZm9yIGNvcGllZFxuICogdGFncyAtIGxldHMgZXZlcnkgb25lIG9mIHRob3NlIHJlYWRlcnMgd29yayB1bmNoYW5nZWQgaW5zdGVhZCBvZiBlYWNoIGdyb3dpbmcgaXRzIG93biBleGNlcHRpb24uXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTd2VlcExvY2F0b3JTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIFN3ZWVwcyBzaXQgYSBmZXcgbWV0cmVzIGFwYXJ0LCBzbyBhIHBvaW50IG9uIGEgc2Nhbm5lZCBzdXJmYWNlIGFsd2F5cyBoYXMgb25lIG5lYXJieS4gQW55dGhpbmdcbiAgICogZnVydGhlciBtZWFucyB0aGUgY29vcmRpbmF0ZXMgYXJlIG5vdCBpbiB0aGUgTWF0dGVycG9ydCBjYXB0dXJlJ3Mgc3BhY2UgLSBhIG1vZGVsIHRoYXQgd2FzXG4gICAqIG5ldmVyIGNhbGlicmF0ZWQgLSBhbmQgYSBzd2VlcCBwaWNrZWQgZnJvbSB0aGF0IGZhciB3b3VsZCBmaWxlIHRoZSB0YWcgdW5kZXIgYW4gYXJiaXRyYXJ5XG4gICAqIGZsb29yLiBMZWF2aW5nIGl0IHdpdGhvdXQgb25lIGlzIHRoZSBob25lc3QgYW5zd2VyIHRoZXJlLlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgTUFYX0RJU1RBTkNFX01FVFJFUyA9IDEwO1xuXG4gIC8qKiBTd2VlcCBwb3NpdGlvbnMgcGVyIHNwYWNlLiBUaGV5IG9ubHkgY2hhbmdlIG9uIGltcG9ydCwgc28gb25lIGxvYWQgcGVyIHNlc3Npb24gaXMgZW5vdWdoLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHN3ZWVwc0J5U3BhY2UgPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTxTd2VlcFBvc2l0aW9uW10+PigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2FwdHVyZVNlcnZpY2U6IENhcHR1cmVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmF2aWdhdGlvblNlcnZpY2U6IE5hdmlnYXRpb25TZXJ2aWNlLFxuICApIHt9XG5cbiAgLyoqXG4gICAqIFRoZSBzd2VlcCBuZWFyZXN0IHRvIGEgcG9pbnQsIG9yIG51bGwgd2hlbiB0aGUgc3BhY2UgaGFzIG5vbmUgd2l0aGluIHJlYWNoLlxuICAgKlxuICAgKiBOZXZlciB0aHJvd3M6IHRoaXMgb25seSByZWZpbmVzIHdoZXJlIGEgdGFnIGlzIGZpbGVkLCBhbmQgYSB0YWcgdGhhdCBjYW5ub3QgYmUgZmlsZWQgaXMgc3RpbGxcbiAgICogYmV0dGVyIHNhdmVkIHdpdGhvdXQgYSBzd2VlcCB0aGFuIG5vdCBzYXZlZCBhdCBhbGwuXG4gICAqL1xuICBhc3luYyBmaW5kTmVhcmVzdFN3ZWVwKFxuICAgIHBvaW50OiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB6OiBudW1iZXIgfSxcbiAgICBzcGFjZUlEOiBzdHJpbmcsXG4gICk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICAgIGlmICghcG9pbnQgfHwgIXNwYWNlSUQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMubmVhcmVzdFN3ZWVwKHBvaW50LCBhd2FpdCB0aGlzLmxvYWRTd2VlcHMoc3BhY2VJRCkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLndhcm4oYFN3ZWVwTG9jYXRvclNlcnZpY2U6IGNvdWxkIG5vdCByZXNvbHZlIGEgc3dlZXAgaW4gc3BhY2UgJHtzcGFjZUlEfWAsIGVycm9yKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBUaGUgc3dlZXAgY2xvc2VzdCB0byBhIHBvaW50LCBvciBudWxsIHdoZW4gbm9uZSBpcyB3aXRoaW4gcmVhY2guICovXG4gIG5lYXJlc3RTd2VlcChcbiAgICBwb2ludDogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgejogbnVtYmVyIH0sXG4gICAgc3dlZXBzOiBTd2VlcFBvc2l0aW9uW10sXG4gICk6IHN0cmluZyB8IG51bGwge1xuICAgIGxldCBuZWFyZXN0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgbmVhcmVzdERpc3RhbmNlID0gU3dlZXBMb2NhdG9yU2VydmljZS5NQVhfRElTVEFOQ0VfTUVUUkVTO1xuICAgIGZvciAoY29uc3Qgc3dlZXAgb2Ygc3dlZXBzKSB7XG4gICAgICBjb25zdCBkaXN0YW5jZSA9IE1hdGguaHlwb3Qoc3dlZXAueCAtIHBvaW50LngsIHN3ZWVwLnkgLSBwb2ludC55LCBzd2VlcC56IC0gcG9pbnQueik7XG4gICAgICBpZiAoZGlzdGFuY2UgPD0gbmVhcmVzdERpc3RhbmNlKSB7XG4gICAgICAgIG5lYXJlc3REaXN0YW5jZSA9IGRpc3RhbmNlO1xuICAgICAgICBuZWFyZXN0ID0gc3dlZXAuc3dlZXBJRDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5lYXJlc3Q7XG4gIH1cblxuICBwcml2YXRlIGxvYWRTd2VlcHMoc3BhY2VJRDogc3RyaW5nKTogUHJvbWlzZTxTd2VlcFBvc2l0aW9uW10+IHtcbiAgICBsZXQgc3dlZXBzID0gdGhpcy5zd2VlcHNCeVNwYWNlLmdldChzcGFjZUlEKTtcbiAgICBpZiAoIXN3ZWVwcykge1xuICAgICAgc3dlZXBzID0gdGhpcy5mZXRjaFN3ZWVwcyhzcGFjZUlEKTtcbiAgICAgIHRoaXMuc3dlZXBzQnlTcGFjZS5zZXQoc3BhY2VJRCwgc3dlZXBzKTtcbiAgICAgIC8vIEEgZmFpbGVkIGxvYWQgbXVzdCBub3QgYmUgcmVtZW1iZXJlZCBhcyBcInRoaXMgc3BhY2UgaGFzIG5vIHN3ZWVwc1wiLlxuICAgICAgc3dlZXBzLmNhdGNoKCgpID0+IHRoaXMuc3dlZXBzQnlTcGFjZS5kZWxldGUoc3BhY2VJRCkpO1xuICAgIH1cbiAgICByZXR1cm4gc3dlZXBzO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaFN3ZWVwcyhzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPFN3ZWVwUG9zaXRpb25bXT4ge1xuICAgIGNvbnN0IGNhcHR1cmVzID0gYXdhaXQgdGhpcy5jYXB0dXJlU2VydmljZS5nZXRDYXB0dXJlc0J5U3BhY2Uoc3BhY2VJRCk7XG4gICAgLy8gQSAzRCBtb2RlbCBpcyBpbXBvcnRlZCB3aXRoIG9uZSBuYXZpZ2F0aW9uIGVudHJ5IG9mIGl0cyBvd24sIGEgcGxhY2Vob2xkZXIgc2l0dGluZyBhdCB0aGVcbiAgICAvLyBvcmlnaW4uIEl0IGlzIG5vdCBhIHN3ZWVwLCBhbmQgY291bnRpbmcgaXQgd291bGQgbWFrZSBpdCB0aGUgXCJuZWFyZXN0XCIgZm9yIGFueSB0YWcgY2xvc2UgdG9cbiAgICAvLyB0aGUgb3JpZ2luLlxuICAgIGNvbnN0IG5vZGVJRHMgPSAoY2FwdHVyZXMgPz8gW10pXG4gICAgICAuZmlsdGVyKChjYXB0dXJlKSA9PiBjYXB0dXJlLnZpZXdlciAhPT0gQ2FwdHVyZVZpZXdlci5USFJFRUpTKVxuICAgICAgLnJlZHVjZSgoYWxsLCBjYXB0dXJlKSA9PiBhbGwuY29uY2F0KGNhcHR1cmUubm9kZXM/Lml0ZW1zID8/IFtdKSwgW10pXG4gICAgICAubWFwKChub2RlKSA9PiBub2RlPy5pZClcbiAgICAgIC5maWx0ZXIoKGlkKSA9PiAhIWlkKTtcblxuICAgIGNvbnN0IG5hdmlnYXRpb25zID0gKFxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwobm9kZUlEcy5tYXAoKGlkKSA9PiB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLmdldE5hdmlnYXRpb25zRm9yTm9kZShpZCkpKVxuICAgICkucmVkdWNlKChhbGwsIGxpc3QpID0+IGFsbC5jb25jYXQobGlzdCksIFtdKTtcblxuICAgIGNvbnN0IHN3ZWVwczogU3dlZXBQb3NpdGlvbltdID0gW107XG4gICAgZm9yIChjb25zdCBuYXZpZ2F0aW9uIG9mIG5hdmlnYXRpb25zKSB7XG4gICAgICBpZiAoIW5hdmlnYXRpb24/Lm1hdHRlcnBvcnRTd2VlcElEIHx8ICFuYXZpZ2F0aW9uLnBvc2l0aW9uKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSBKU09OLnBhcnNlKG5hdmlnYXRpb24ucG9zaXRpb24pO1xuICAgICAgICBpZiAoW3Bvc2l0aW9uPy54LCBwb3NpdGlvbj8ueSwgcG9zaXRpb24/LnpdLmV2ZXJ5KCh2YWx1ZSkgPT4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykpIHtcbiAgICAgICAgICBzd2VlcHMucHVzaCh7XG4gICAgICAgICAgICBzd2VlcElEOiBuYXZpZ2F0aW9uLm1hdHRlcnBvcnRTd2VlcElELFxuICAgICAgICAgICAgeDogcG9zaXRpb24ueCxcbiAgICAgICAgICAgIHk6IHBvc2l0aW9uLnksXG4gICAgICAgICAgICB6OiBwb3NpdGlvbi56LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLy8gT25lIHVucmVhZGFibGUgcG9zaXRpb24gc2hvdWxkIG5vdCBjb3N0IHRoZSBzcGFjZSBhbGwgb2YgaXRzIHN3ZWVwcy5cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHN3ZWVwcztcbiAgfVxufVxuIl19
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dlZXAtbG9jYXRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNtYXJ0ZXJwbGFuLWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9zd2VlcC1sb2NhdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7QUFXakQ7Ozs7Ozs7O0dBUUc7QUFJSCxNQUFNLE9BQU8sbUJBQW1CO0lBYXBCO0lBQ0E7SUFiVjs7Ozs7T0FLRztJQUNLLE1BQU0sQ0FBVSxtQkFBbUIsR0FBRyxFQUFFLENBQUM7SUFFakQsZ0dBQWdHO0lBQy9FLGFBQWEsR0FBRyxJQUFJLEdBQUcsRUFBb0MsQ0FBQztJQUU3RSxZQUNVLGNBQThCLEVBQzlCLGlCQUFvQztRQURwQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtJQUMzQyxDQUFDO0lBRUo7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsZ0JBQWdCLENBQ3BCLEtBQTBDLEVBQzFDLE9BQWU7UUFFZixJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDdkIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsSUFBSSxDQUFDO1lBQ0gsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNsRSxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUMsMkRBQTJELE9BQU8sRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzFGLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7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SUFBSSxDQUFDO2dCQUNILE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNqRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxFQUFFLENBQUM7b0JBQ3hGLE1BQU0sQ0FBQyxJQUFJLENBQUM7d0JBQ1YsT0FBTyxFQUFFLFVBQVUsQ0FBQyxpQkFBaUI7d0JBQ3JDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQzt3QkFDYixDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7d0JBQ2IsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO3FCQUNkLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQztZQUFDLE1BQU0sQ0FBQztnQkFDUCx1RUFBdUU7WUFDekUsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO3dHQXJHVSxtQkFBbUI7NEdBQW5CLG1CQUFtQixjQUZsQixNQUFNOzs0RkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDYXB0dXJlVmlld2VyIH0gZnJvbSAnLi4vdHlwZXMuc2VydmljZSc7XHJcbmltcG9ydCB7IENhcHR1cmVTZXJ2aWNlIH0gZnJvbSAnLi9tb2RlbHMvY2FwdHVyZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuL21vZGVscy9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xyXG5cclxuaW50ZXJmYWNlIFN3ZWVwUG9zaXRpb24ge1xyXG4gIHN3ZWVwSUQ6IHN0cmluZztcclxuICB4OiBudW1iZXI7XHJcbiAgeTogbnVtYmVyO1xyXG4gIHo6IG51bWJlcjtcclxufVxyXG5cclxuLyoqXHJcbiAqIEZpbmRzIHRoZSBNYXR0ZXJwb3J0IHN3ZWVwIGEgcG9pbnQgaW4gYSBzcGFjZSBzaXRzIGNsb3Nlc3QgdG8uXHJcbiAqXHJcbiAqIEEgdGFnIHBsYWNlZCBpbiBNYXR0ZXJwb3J0IGlzIHJlY29yZGVkIHdpdGggdGhlIHN3ZWVwIGl0IHdhcyBwbGFjZWQgZnJvbSwgYW5kIG11Y2ggb2YgdGhlXHJcbiAqIE1hdHRlcnBvcnQgc2lkZSBrZXlzIG9uIHRoYXQ6IHdoaWNoIGZsb29yIHBsYW4gZHJhd3MgdGhlIHRhZywgd2hpY2ggem9uZSBpdCBiZWxvbmdzIHRvLCB3aGljaFxyXG4gKiBmbG9vciBpdCBzaG93cyBvbi4gQSB0YWcgcGxhY2VkIGluIHRoZSBUaHJlZS5qcyB2aWV3ZXIgaGFzIG5vIHN3ZWVwLCBzbyBpdCB3YXMgbWlzc2luZyBmcm9tIGFsbFxyXG4gKiBvZiB0aGVtLiBSZXNvbHZpbmcgdGhlIG5lYXJlc3Qgb25lIGF0IGNyZWF0aW9uIC0gd2hhdCB0aGUgdGFnIGNvcHkgdG9vbCBhbHJlYWR5IGRvZXMgZm9yIGNvcGllZFxyXG4gKiB0YWdzIC0gbGV0cyBldmVyeSBvbmUgb2YgdGhvc2UgcmVhZGVycyB3b3JrIHVuY2hhbmdlZCBpbnN0ZWFkIG9mIGVhY2ggZ3Jvd2luZyBpdHMgb3duIGV4Y2VwdGlvbi5cclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTd2VlcExvY2F0b3JTZXJ2aWNlIHtcclxuICAvKipcclxuICAgKiBTd2VlcHMgc2l0IGEgZmV3IG1ldHJlcyBhcGFydCwgc28gYSBwb2ludCBvbiBhIHNjYW5uZWQgc3VyZmFjZSBhbHdheXMgaGFzIG9uZSBuZWFyYnkuIEFueXRoaW5nXHJcbiAgICogZnVydGhlciBtZWFucyB0aGUgY29vcmRpbmF0ZXMgYXJlIG5vdCBpbiB0aGUgTWF0dGVycG9ydCBjYXB0dXJlJ3Mgc3BhY2UgLSBhIG1vZGVsIHRoYXQgd2FzXHJcbiAgICogbmV2ZXIgY2FsaWJyYXRlZCAtIGFuZCBhIHN3ZWVwIHBpY2tlZCBmcm9tIHRoYXQgZmFyIHdvdWxkIGZpbGUgdGhlIHRhZyB1bmRlciBhbiBhcmJpdHJhcnlcclxuICAgKiBmbG9vci4gTGVhdmluZyBpdCB3aXRob3V0IG9uZSBpcyB0aGUgaG9uZXN0IGFuc3dlciB0aGVyZS5cclxuICAgKi9cclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBNQVhfRElTVEFOQ0VfTUVUUkVTID0gMTA7XHJcblxyXG4gIC8qKiBTd2VlcCBwb3NpdGlvbnMgcGVyIHNwYWNlLiBUaGV5IG9ubHkgY2hhbmdlIG9uIGltcG9ydCwgc28gb25lIGxvYWQgcGVyIHNlc3Npb24gaXMgZW5vdWdoLiAqL1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgc3dlZXBzQnlTcGFjZSA9IG5ldyBNYXA8c3RyaW5nLCBQcm9taXNlPFN3ZWVwUG9zaXRpb25bXT4+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjYXB0dXJlU2VydmljZTogQ2FwdHVyZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5hdmlnYXRpb25TZXJ2aWNlOiBOYXZpZ2F0aW9uU2VydmljZSxcclxuICApIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBzd2VlcCBuZWFyZXN0IHRvIGEgcG9pbnQsIG9yIG51bGwgd2hlbiB0aGUgc3BhY2UgaGFzIG5vbmUgd2l0aGluIHJlYWNoLlxyXG4gICAqXHJcbiAgICogTmV2ZXIgdGhyb3dzOiB0aGlzIG9ubHkgcmVmaW5lcyB3aGVyZSBhIHRhZyBpcyBmaWxlZCwgYW5kIGEgdGFnIHRoYXQgY2Fubm90IGJlIGZpbGVkIGlzIHN0aWxsXHJcbiAgICogYmV0dGVyIHNhdmVkIHdpdGhvdXQgYSBzd2VlcCB0aGFuIG5vdCBzYXZlZCBhdCBhbGwuXHJcbiAgICovXHJcbiAgYXN5bmMgZmluZE5lYXJlc3RTd2VlcChcclxuICAgIHBvaW50OiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB6OiBudW1iZXIgfSxcclxuICAgIHNwYWNlSUQ6IHN0cmluZyxcclxuICApOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcclxuICAgIGlmICghcG9pbnQgfHwgIXNwYWNlSUQpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICB0cnkge1xyXG4gICAgICByZXR1cm4gdGhpcy5uZWFyZXN0U3dlZXAocG9pbnQsIGF3YWl0IHRoaXMubG9hZFN3ZWVwcyhzcGFjZUlEKSk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLndhcm4oYFN3ZWVwTG9jYXRvclNlcnZpY2U6IGNvdWxkIG5vdCByZXNvbHZlIGEgc3dlZXAgaW4gc3BhY2UgJHtzcGFjZUlEfWAsIGVycm9yKTtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogVGhlIHN3ZWVwIGNsb3Nlc3QgdG8gYSBwb2ludCwgb3IgbnVsbCB3aGVuIG5vbmUgaXMgd2l0aGluIHJlYWNoLiAqL1xyXG4gIG5lYXJlc3RTd2VlcChcclxuICAgIHBvaW50OiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB6OiBudW1iZXIgfSxcclxuICAgIHN3ZWVwczogU3dlZXBQb3NpdGlvbltdLFxyXG4gICk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgbGV0IG5lYXJlc3Q6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gICAgbGV0IG5lYXJlc3REaXN0YW5jZSA9IFN3ZWVwTG9jYXRvclNlcnZpY2UuTUFYX0RJU1RBTkNFX01FVFJFUztcclxuICAgIGZvciAoY29uc3Qgc3dlZXAgb2Ygc3dlZXBzKSB7XHJcbiAgICAgIGNvbnN0IGRpc3RhbmNlID0gTWF0aC5oeXBvdChzd2VlcC54IC0gcG9pbnQueCwgc3dlZXAueSAtIHBvaW50LnksIHN3ZWVwLnogLSBwb2ludC56KTtcclxuICAgICAgaWYgKGRpc3RhbmNlIDw9IG5lYXJlc3REaXN0YW5jZSkge1xyXG4gICAgICAgIG5lYXJlc3REaXN0YW5jZSA9IGRpc3RhbmNlO1xyXG4gICAgICAgIG5lYXJlc3QgPSBzd2VlcC5zd2VlcElEO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmVhcmVzdDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZFN3ZWVwcyhzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPFN3ZWVwUG9zaXRpb25bXT4ge1xyXG4gICAgbGV0IHN3ZWVwcyA9IHRoaXMuc3dlZXBzQnlTcGFjZS5nZXQoc3BhY2VJRCk7XHJcbiAgICBpZiAoIXN3ZWVwcykge1xyXG4gICAgICBzd2VlcHMgPSB0aGlzLmZldGNoU3dlZXBzKHNwYWNlSUQpO1xyXG4gICAgICB0aGlzLnN3ZWVwc0J5U3BhY2Uuc2V0KHNwYWNlSUQsIHN3ZWVwcyk7XHJcbiAgICAgIC8vIEEgZmFpbGVkIGxvYWQgbXVzdCBub3QgYmUgcmVtZW1iZXJlZCBhcyBcInRoaXMgc3BhY2UgaGFzIG5vIHN3ZWVwc1wiLlxyXG4gICAgICBzd2VlcHMuY2F0Y2goKCkgPT4gdGhpcy5zd2VlcHNCeVNwYWNlLmRlbGV0ZShzcGFjZUlEKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3dlZXBzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBmZXRjaFN3ZWVwcyhzcGFjZUlEOiBzdHJpbmcpOiBQcm9taXNlPFN3ZWVwUG9zaXRpb25bXT4ge1xyXG4gICAgY29uc3QgY2FwdHVyZXMgPSBhd2FpdCB0aGlzLmNhcHR1cmVTZXJ2aWNlLmdldENhcHR1cmVzQnlTcGFjZShzcGFjZUlEKTtcclxuICAgIC8vIEEgM0QgbW9kZWwgaXMgaW1wb3J0ZWQgd2l0aCBvbmUgbmF2aWdhdGlvbiBlbnRyeSBvZiBpdHMgb3duLCBhIHBsYWNlaG9sZGVyIHNpdHRpbmcgYXQgdGhlXHJcbiAgICAvLyBvcmlnaW4uIEl0IGlzIG5vdCBhIHN3ZWVwLCBhbmQgY291bnRpbmcgaXQgd291bGQgbWFrZSBpdCB0aGUgXCJuZWFyZXN0XCIgZm9yIGFueSB0YWcgY2xvc2UgdG9cclxuICAgIC8vIHRoZSBvcmlnaW4uXHJcbiAgICBjb25zdCBub2RlSURzID0gKGNhcHR1cmVzID8/IFtdKVxyXG4gICAgICAuZmlsdGVyKChjYXB0dXJlKSA9PiBjYXB0dXJlLnZpZXdlciAhPT0gQ2FwdHVyZVZpZXdlci5USFJFRUpTKVxyXG4gICAgICAucmVkdWNlKChhbGwsIGNhcHR1cmUpID0+IGFsbC5jb25jYXQoY2FwdHVyZS5ub2Rlcz8uaXRlbXMgPz8gW10pLCBbXSlcclxuICAgICAgLm1hcCgobm9kZSkgPT4gbm9kZT8uaWQpXHJcbiAgICAgIC5maWx0ZXIoKGlkKSA9PiAhIWlkKTtcclxuXHJcbiAgICBjb25zdCBuYXZpZ2F0aW9ucyA9IChcclxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwobm9kZUlEcy5tYXAoKGlkKSA9PiB0aGlzLm5hdmlnYXRpb25TZXJ2aWNlLmdldE5hdmlnYXRpb25zRm9yTm9kZShpZCkpKVxyXG4gICAgKS5yZWR1Y2UoKGFsbCwgbGlzdCkgPT4gYWxsLmNvbmNhdChsaXN0KSwgW10pO1xyXG5cclxuICAgIGNvbnN0IHN3ZWVwczogU3dlZXBQb3NpdGlvbltdID0gW107XHJcbiAgICBmb3IgKGNvbnN0IG5hdmlnYXRpb24gb2YgbmF2aWdhdGlvbnMpIHtcclxuICAgICAgaWYgKCFuYXZpZ2F0aW9uPy5tYXR0ZXJwb3J0U3dlZXBJRCB8fCAhbmF2aWdhdGlvbi5wb3NpdGlvbikge1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSBKU09OLnBhcnNlKG5hdmlnYXRpb24ucG9zaXRpb24pO1xyXG4gICAgICAgIGlmIChbcG9zaXRpb24/LngsIHBvc2l0aW9uPy55LCBwb3NpdGlvbj8uel0uZXZlcnkoKHZhbHVlKSA9PiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSkge1xyXG4gICAgICAgICAgc3dlZXBzLnB1c2goe1xyXG4gICAgICAgICAgICBzd2VlcElEOiBuYXZpZ2F0aW9uLm1hdHRlcnBvcnRTd2VlcElELFxyXG4gICAgICAgICAgICB4OiBwb3NpdGlvbi54LFxyXG4gICAgICAgICAgICB5OiBwb3NpdGlvbi55LFxyXG4gICAgICAgICAgICB6OiBwb3NpdGlvbi56LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGNhdGNoIHtcclxuICAgICAgICAvLyBPbmUgdW5yZWFkYWJsZSBwb3NpdGlvbiBzaG91bGQgbm90IGNvc3QgdGhlIHNwYWNlIGFsbCBvZiBpdHMgc3dlZXBzLlxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3dlZXBzO1xyXG4gIH1cclxufVxyXG4iXX0=