@ethlete/query 4.6.0 → 4.7.0

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 (43) hide show
  1. package/esm2022/index.mjs +2 -1
  2. package/esm2022/lib/devtools/components/public-api.mjs +2 -0
  3. package/esm2022/lib/devtools/components/query-devtools/public-api.mjs +2 -0
  4. package/esm2022/lib/devtools/components/query-devtools/query-devtools.component.mjs +72 -0
  5. package/esm2022/lib/devtools/index.mjs +2 -0
  6. package/esm2022/lib/devtools/public-api.mjs +3 -0
  7. package/esm2022/lib/devtools/utils/index.mjs +2 -0
  8. package/esm2022/lib/devtools/utils/public-api.mjs +2 -0
  9. package/esm2022/lib/devtools/utils/query-client.utils.mjs +13 -0
  10. package/esm2022/lib/directives/infinity-query-trigger.directive.mjs +3 -3
  11. package/esm2022/lib/directives/infinity-query.directive.mjs +3 -3
  12. package/esm2022/lib/directives/query.directive.mjs +3 -3
  13. package/esm2022/lib/entity/entity-store.mjs +28 -12
  14. package/esm2022/lib/entity/entity.types.mjs +1 -1
  15. package/esm2022/lib/entity/entity.utils.mjs +26 -2
  16. package/esm2022/lib/query/query.mjs +17 -4
  17. package/esm2022/lib/query-client/query-client.mjs +1 -1
  18. package/esm2022/lib/query-client/query-client.types.mjs +1 -1
  19. package/esm2022/lib/query-form/query-form.mjs +10 -5
  20. package/esm2022/lib/query-store/query-store.mjs +9 -2
  21. package/esm2022/lib/request/request.util.mjs +2 -1
  22. package/fesm2022/ethlete-query.mjs +174 -29
  23. package/fesm2022/ethlete-query.mjs.map +1 -1
  24. package/index.d.ts +1 -0
  25. package/lib/auth/auth-provider.types.d.ts +0 -5
  26. package/lib/auth/bearer-auth-provider.d.ts +0 -4
  27. package/lib/devtools/components/public-api.d.ts +1 -0
  28. package/lib/devtools/components/query-devtools/public-api.d.ts +1 -0
  29. package/lib/devtools/components/query-devtools/query-devtools.component.d.ts +28 -0
  30. package/lib/devtools/index.d.ts +1 -0
  31. package/lib/devtools/public-api.d.ts +2 -0
  32. package/lib/devtools/utils/index.d.ts +1 -0
  33. package/lib/devtools/utils/public-api.d.ts +1 -0
  34. package/lib/devtools/utils/query-client.utils.d.ts +12 -0
  35. package/lib/entity/entity-store.d.ts +4 -0
  36. package/lib/entity/entity.types.d.ts +20 -0
  37. package/lib/entity/entity.utils.d.ts +10 -0
  38. package/lib/query/query.d.ts +4 -16
  39. package/lib/query/query.types.d.ts +0 -14
  40. package/lib/query-client/query-client.d.ts +0 -1
  41. package/lib/query-client/query-client.types.d.ts +5 -0
  42. package/lib/query-store/query-store.d.ts +2 -1
  43. package/package.json +1 -1
@@ -74,4 +74,4 @@ export class QueryClient {
74
74
  });
75
75
  }
76
76
  }
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL3F1ZXJ5LWNsaWVudC9xdWVyeS1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQVd2QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSTVDLE1BQU0sT0FBTyxXQUFXO0lBR3RCLElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUM7SUFDeEcsQ0FBQztJQUNELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsWUFBWSxFQUFFLElBQUksSUFBSSxDQUFDO0lBQ2hILENBQUM7SUFHRCxZQUFvQixhQUFnQztRQUFoQyxrQkFBYSxHQUFiLGFBQWEsQ0FBbUI7UUFGbkMsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBc0IsSUFBSSxDQUFDLENBQUM7UUFXakYsUUFBRyxHQUFHLENBUUosV0FBa0YsRUFDbEYsRUFBRSxDQUNGLElBQUksQ0FBQyxLQUFLLENBQThDO1lBQ3RELEdBQUcsV0FBVztZQUNkLE1BQU0sRUFBRSxLQUFLO1NBQ2QsQ0FBQyxDQUFDO1FBRUwsU0FBSSxHQUFHLENBUUwsV0FBa0YsRUFDbEYsRUFBRSxDQUNGLElBQUksQ0FBQyxLQUFLLENB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XG5pbXBvcnQgeyBBdXRoUHJvdmlkZXIgfSBmcm9tICcuLi9hdXRoJztcbmltcG9ydCB7IEVudGl0eVN0b3JlIH0gZnJvbSAnLi4vZW50aXR5JztcbmltcG9ydCB7XG4gIEJhc2VBcmd1bWVudHMsXG4gIEdxbFF1ZXJ5Q29uZmlnLFxuICBHcWxRdWVyeUNvbmZpZ1dpdGhvdXRNZXRob2QsXG4gIFF1ZXJ5Q29uZmlnV2l0aG91dE1ldGhvZCxcbiAgUmVzdFF1ZXJ5Q29uZmlnLFxuICBSb3V0ZVR5cGUsXG59IGZyb20gJy4uL3F1ZXJ5JztcbmltcG9ydCB7IFF1ZXJ5Q3JlYXRvciB9IGZyb20gJy4uL3F1ZXJ5LWNyZWF0b3InO1xuaW1wb3J0IHsgUXVlcnlTdG9yZSB9IGZyb20gJy4uL3F1ZXJ5LXN0b3JlJztcbmltcG9ydCB7IFJlcXVlc3RIZWFkZXJzLCBSZXF1ZXN0SGVhZGVyc01ldGhvZE1hcCB9IGZyb20gJy4uL3JlcXVlc3QnO1xuaW1wb3J0IHsgUXVlcnlDbGllbnRDb25maWcgfSBmcm9tICcuL3F1ZXJ5LWNsaWVudC50eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBRdWVyeUNsaWVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N0b3JlOiBRdWVyeVN0b3JlO1xuXG4gIGdldCBjb25maWcoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NsaWVudENvbmZpZztcbiAgfVxuXG4gIGdldCBhdXRoUHJvdmlkZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2F1dGhQcm92aWRlciQuZ2V0VmFsdWUoKSA/PyB0aGlzLl9jbGllbnRDb25maWcucGFyZW50Py5fYXV0aFByb3ZpZGVyJC5nZXRWYWx1ZSgpID8/IG51bGw7XG4gIH1cbiAgZ2V0IGF1dGhQcm92aWRlciQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2F1dGhQcm92aWRlciQuYXNPYnNlcnZhYmxlKCkgPz8gdGhpcy5fY2xpZW50Q29uZmlnLnBhcmVudD8uX2F1dGhQcm92aWRlciQuYXNPYnNlcnZhYmxlKCkgPz8gbnVsbDtcbiAgfVxuICBwcml2YXRlIHJlYWRvbmx5IF9hdXRoUHJvdmlkZXIkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBdXRoUHJvdmlkZXIgfCBudWxsPihudWxsKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jbGllbnRDb25maWc6IFF1ZXJ5Q2xpZW50Q29uZmlnKSB7XG4gICAgdGhpcy5fc3RvcmUgPSBuZXcgUXVlcnlTdG9yZSh7XG4gICAgICBlbmFibGVDaGFuZ2VMb2dnaW5nOiBfY2xpZW50Q29uZmlnLmxvZ2dpbmc/LnF1ZXJ5U3RhdGVDaGFuZ2VzLFxuICAgICAgZW5hYmxlR2FyYmFnZUNvbGxlY3RvckxvZ2dpbmc6IF9jbGllbnRDb25maWcubG9nZ2luZz8ucXVlcnlTdGF0ZUdhcmJhZ2VDb2xsZWN0b3IsXG4gICAgICBhdXRvUmVmcmVzaFF1ZXJpZXNPbldpbmRvd0ZvY3VzOiBfY2xpZW50Q29uZmlnLnJlcXVlc3Q/LmF1dG9SZWZyZXNoUXVlcmllc09uV2luZG93Rm9jdXMgPz8gdHJ1ZSxcbiAgICAgIGVuYWJsZVNtYXJ0UG9sbGluZzogX2NsaWVudENvbmZpZy5yZXF1ZXN0Py5lbmFibGVTbWFydFBvbGxpbmcgPz8gdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIGdldCA9IDxcbiAgICBSb3V0ZSBleHRlbmRzIFJvdXRlVHlwZTxBcmd1bWVudHM+LFxuICAgIFJlc3BvbnNlLFxuICAgIElkLFxuICAgIERhdGEgPSBSZXNwb25zZSxcbiAgICBBcmd1bWVudHMgZXh0ZW5kcyBCYXNlQXJndW1lbnRzIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLFxuICAgIFN0b3JlIGV4dGVuZHMgRW50aXR5U3RvcmU8dW5rbm93bj4gPSBFbnRpdHlTdG9yZTx1bmtub3duPixcbiAgPihcbiAgICBxdWVyeUNvbmZpZzogUXVlcnlDb25maWdXaXRob3V0TWV0aG9kPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBTdG9yZSwgRGF0YSwgSWQ+LFxuICApID0+XG4gICAgdGhpcy5mZXRjaDxSb3V0ZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgSWQsIFN0b3JlLCBEYXRhPih7XG4gICAgICAuLi5xdWVyeUNvbmZpZyxcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgfSk7XG5cbiAgcG9zdCA9IDxcbiAgICBSb3V0ZSBleHRlbmRzIFJvdXRlVHlwZTxBcmd1bWVudHM+LFxuICAgIFJlc3BvbnNlLFxuICAgIElkLFxuICAgIERhdGEgPSBSZXNwb25zZSxcbiAgICBBcmd1bWVudHMgZXh0ZW5kcyBCYXNlQXJndW1lbnRzIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLFxuICAgIFN0b3JlIGV4dGVuZHMgRW50aXR5U3RvcmU8dW5rbm93bj4gPSBFbnRpdHlTdG9yZTx1bmtub3duPixcbiAgPihcbiAgICBxdWVyeUNvbmZpZzogUXVlcnlDb25maWdXaXRob3V0TWV0aG9kPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBTdG9yZSwgRGF0YSwgSWQ+LFxuICApID0+XG4gICAgdGhpcy5mZXRjaDxSb3V0ZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgSWQsIFN0b3JlLCBEYXRhPih7XG4gICAgICAuLi5xdWVyeUNvbmZpZyxcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIH0pO1xuXG4gIHB1dCA9IDxcbiAgICBSb3V0ZSBleHRlbmRzIFJvdXRlVHlwZTxBcmd1bWVudHM+LFxuICAgIFJlc3BvbnNlLFxuICAgIElkLFxuICAgIERhdGEgPSBSZXNwb25zZSxcbiAgICBBcmd1bWVudHMgZXh0ZW5kcyBCYXNlQXJndW1lbnRzIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLFxuICAgIFN0b3JlIGV4dGVuZHMgRW50aXR5U3RvcmU8dW5rbm93bj4gPSBFbnRpdHlTdG9yZTx1bmtub3duPixcbiAgPihcbiAgICBxdWVyeUNvbmZpZzogUXVlcnlDb25maWdXaXRob3V0TWV0aG9kPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBTdG9yZSwgRGF0YSwgSWQ+LFxuICApID0+XG4gICAgdGhpcy5mZXRjaDxSb3V0ZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgSWQsIFN0b3JlLCBEYXRhPih7XG4gICAgICAuLi5xdWVyeUNvbmZpZyxcbiAgICAgIG1ldGhvZDogJ1BVVCcsXG4gICAgfSk7XG5cbiAgcGF0Y2ggPSA8XG4gICAgUm91dGUgZXh0ZW5kcyBSb3V0ZVR5cGU8QXJndW1lbnRzPixcbiAgICBSZXNwb25zZSxcbiAgICBJZCxcbiAgICBEYXRhID0gUmVzcG9uc2UsXG4gICAgQXJndW1lbnRzIGV4dGVuZHMgQmFzZUFyZ3VtZW50cyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcbiAgICBTdG9yZSBleHRlbmRzIEVudGl0eVN0b3JlPHVua25vd24+ID0gRW50aXR5U3RvcmU8dW5rbm93bj4sXG4gID4oXG4gICAgcXVlcnlDb25maWc6IFF1ZXJ5Q29uZmlnV2l0aG91dE1ldGhvZDxSb3V0ZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgU3RvcmUsIERhdGEsIElkPixcbiAgKSA9PlxuICAgIHRoaXMuZmV0Y2g8Um91dGUsIFJlc3BvbnNlLCBBcmd1bWVudHMsIElkLCBTdG9yZSwgRGF0YT4oe1xuICAgICAgLi4ucXVlcnlDb25maWcsXG4gICAgICBtZXRob2Q6ICdQQVRDSCcsXG4gICAgfSk7XG5cbiAgZGVsZXRlID0gPFxuICAgIFJvdXRlIGV4dGVuZHMgUm91dGVUeXBlPEFyZ3VtZW50cz4sXG4gICAgUmVzcG9uc2UsXG4gICAgSWQsXG4gICAgRGF0YSA9IFJlc3BvbnNlLFxuICAgIEFyZ3VtZW50cyBleHRlbmRzIEJhc2VBcmd1bWVudHMgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQsXG4gICAgU3RvcmUgZXh0ZW5kcyBFbnRpdHlTdG9yZTx1bmtub3duPiA9IEVudGl0eVN0b3JlPHVua25vd24+LFxuICA+KFxuICAgIHF1ZXJ5Q29uZmlnOiBRdWVyeUNvbmZpZ1dpdGhvdXRNZXRob2Q8Um91dGUsIFJlc3BvbnNlLCBBcmd1bWVudHMsIFN0b3JlLCBEYXRhLCBJZD4sXG4gICkgPT5cbiAgICB0aGlzLmZldGNoPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBJZCwgU3RvcmUsIERhdGE+KHtcbiAgICAgIC4uLnF1ZXJ5Q29uZmlnLFxuICAgICAgbWV0aG9kOiAnREVMRVRFJyxcbiAgICB9KTtcblxuICBncWxRdWVyeSA9IDxcbiAgICBSb3V0ZSBleHRlbmRzIFJvdXRlVHlwZTxBcmd1bWVudHM+LFxuICAgIFJlc3BvbnNlLFxuICAgIElkLFxuICAgIERhdGEgPSBSZXNwb25zZSxcbiAgICBBcmd1bWVudHMgZXh0ZW5kcyBCYXNlQXJndW1lbnRzIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLFxuICAgIFN0b3JlIGV4dGVuZHMgRW50aXR5U3RvcmU8dW5rbm93bj4gPSBFbnRpdHlTdG9yZTx1bmtub3duPixcbiAgPihcbiAgICBxdWVyeUNvbmZpZzogR3FsUXVlcnlDb25maWdXaXRob3V0TWV0aG9kPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBTdG9yZSwgRGF0YSwgSWQ+LFxuICApID0+XG4gICAgdGhpcy5mZXRjaDxSb3V0ZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgSWQsIFN0b3JlLCBEYXRhPih7XG4gICAgICAuLi5xdWVyeUNvbmZpZyxcbiAgICAgIG1ldGhvZDogJ0dRTF9RVUVSWScsXG4gICAgfSk7XG5cbiAgZ3FsTXV0YXRlID0gPFxuICAgIFJvdXRlIGV4dGVuZHMgUm91dGVUeXBlPEFyZ3VtZW50cz4sXG4gICAgUmVzcG9uc2UsXG4gICAgSWQsXG4gICAgRGF0YSA9IFJlc3BvbnNlLFxuICAgIEFyZ3VtZW50cyBleHRlbmRzIEJhc2VBcmd1bWVudHMgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQsXG4gICAgU3RvcmUgZXh0ZW5kcyBFbnRpdHlTdG9yZTx1bmtub3duPiA9IEVudGl0eVN0b3JlPHVua25vd24+LFxuICA+KFxuICAgIHF1ZXJ5Q29uZmlnOiBHcWxRdWVyeUNvbmZpZ1dpdGhvdXRNZXRob2Q8Um91dGUsIFJlc3BvbnNlLCBBcmd1bWVudHMsIFN0b3JlLCBEYXRhLCBJZD4sXG4gICkgPT5cbiAgICB0aGlzLmZldGNoPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBJZCwgU3RvcmUsIERhdGE+KHtcbiAgICAgIC4uLnF1ZXJ5Q29uZmlnLFxuICAgICAgbWV0aG9kOiAnR1FMX01VVEFURScsXG4gICAgfSk7XG5cbiAgZmV0Y2ggPSA8XG4gICAgUm91dGUgZXh0ZW5kcyBSb3V0ZVR5cGU8QXJndW1lbnRzPixcbiAgICBSZXNwb25zZSxcbiAgICBBcmd1bWVudHMgZXh0ZW5kcyBCYXNlQXJndW1lbnRzIHwgdW5kZWZpbmVkLFxuICAgIElkLFxuICAgIFN0b3JlIGV4dGVuZHMgRW50aXR5U3RvcmU8dW5rbm93bj4gPSBFbnRpdHlTdG9yZTx1bmtub3duPixcbiAgICBEYXRhID0gUmVzcG9uc2UsXG4gID4oXG4gICAgcXVlcnlDb25maWc6XG4gICAgICB8IFJlc3RRdWVyeUNvbmZpZzxSb3V0ZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgU3RvcmUsIERhdGEsIElkPlxuICAgICAgfCBHcWxRdWVyeUNvbmZpZzxSb3V0ZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgU3RvcmUsIERhdGEsIElkPixcbiAgKSA9PiBuZXcgUXVlcnlDcmVhdG9yPEFyZ3VtZW50cywgUmVzcG9uc2UsIFJvdXRlLCBTdG9yZSwgRGF0YSwgSWQ+KHF1ZXJ5Q29uZmlnLCB0aGlzLCB0aGlzLl9zdG9yZSk7XG5cbiAgc2V0QXV0aFByb3ZpZGVyID0gKGF1dGhQcm92aWRlcjogQXV0aFByb3ZpZGVyKSA9PiB7XG4gICAgaWYgKHRoaXMuYXV0aFByb3ZpZGVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBhdXRoIHByb3ZpZGVyIGlzIGFscmVhZHkgc2V0LiBQbGVhc2UgY2FsbCBjbGVhckF1dGhQcm92aWRlcigpIGZpcnN0LicpO1xuICAgIH1cblxuICAgIHRoaXMuX2F1dGhQcm92aWRlciQubmV4dChhdXRoUHJvdmlkZXIpO1xuICB9O1xuXG4gIHNldERlZmF1bHRIZWFkZXJzID0gKGNvbmZpZzoge1xuICAgIGhlYWRlcnM6IFJlcXVlc3RIZWFkZXJzIHwgUmVxdWVzdEhlYWRlcnNNZXRob2RNYXAgfCBudWxsO1xuICAgIHJlZnJlc2hRdWVyaWVzSW5Vc2U/OiBib29sZWFuO1xuICB9KSA9PiB7XG4gICAgaWYgKCF0aGlzLl9jbGllbnRDb25maWcucmVxdWVzdCkge1xuICAgICAgdGhpcy5fY2xpZW50Q29uZmlnLnJlcXVlc3QgPSB7XG4gICAgICAgIGhlYWRlcnM6IGNvbmZpZy5oZWFkZXJzID8/IHVuZGVmaW5lZCxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2NsaWVudENvbmZpZy5yZXF1ZXN0LmhlYWRlcnMgPSBjb25maWcuaGVhZGVycyA/PyB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZy5yZWZyZXNoUXVlcmllc0luVXNlKSB7XG4gICAgICB0aGlzLl9zdG9yZS5yZWZyZXNoUXVlcmllc0luVXNlKHsgcHVyZ2VVbnVzZWQ6IHRydWUsIGlnbm9yZUNhY2hlVmFsaWRpdHk6IHRydWUgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNsZWFyQXV0aFByb3ZpZGVyID0gKCkgPT4ge1xuICAgIHRoaXMuYXV0aFByb3ZpZGVyPy5jbGVhblVwKCk7XG4gICAgdGhpcy5fYXV0aFByb3ZpZGVyJC5uZXh0KG51bGwpO1xuICB9O1xufVxuIl19
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL3F1ZXJ5LWNsaWVudC9xdWVyeS1jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQVd2QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSTVDLE1BQU0sT0FBTyxXQUFXO0lBTXRCLElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUM7SUFDeEcsQ0FBQztJQUNELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsWUFBWSxFQUFFLElBQUksSUFBSSxDQUFDO0lBQ2hILENBQUM7SUFHRCxZQUFvQixhQUFnQztRQUFoQyxrQkFBYSxHQUFiLGFBQWEsQ0FBbUI7UUFGbkMsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBc0IsSUFBSSxDQUFDLENBQUM7UUFXakYsUUFBRyxHQUFHLENBUUosV0FBa0YsRUFDbEYsRUFBRSxDQUNGLElBQUksQ0FBQyxLQUFLLENBQThDO1lBQ3RELEdBQUcsV0FBVztZQUNkLE1BQU0sRUFBRSxLQUFLO1NBQ2QsQ0FBQyxDQUFDO1FBRUwsU0FBSSxHQUFHLENBUUwsV0FBa0YsRUFDbEYsRUFBRSxDQUNGLElBQUksQ0FBQyxLQUFLLENB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XG5pbXBvcnQgeyBBdXRoUHJvdmlkZXIgfSBmcm9tICcuLi9hdXRoJztcbmltcG9ydCB7IEVudGl0eVN0b3JlIH0gZnJvbSAnLi4vZW50aXR5JztcbmltcG9ydCB7XG4gIEJhc2VBcmd1bWVudHMsXG4gIEdxbFF1ZXJ5Q29uZmlnLFxuICBHcWxRdWVyeUNvbmZpZ1dpdGhvdXRNZXRob2QsXG4gIFF1ZXJ5Q29uZmlnV2l0aG91dE1ldGhvZCxcbiAgUmVzdFF1ZXJ5Q29uZmlnLFxuICBSb3V0ZVR5cGUsXG59IGZyb20gJy4uL3F1ZXJ5JztcbmltcG9ydCB7IFF1ZXJ5Q3JlYXRvciB9IGZyb20gJy4uL3F1ZXJ5LWNyZWF0b3InO1xuaW1wb3J0IHsgUXVlcnlTdG9yZSB9IGZyb20gJy4uL3F1ZXJ5LXN0b3JlJztcbmltcG9ydCB7IFJlcXVlc3RIZWFkZXJzLCBSZXF1ZXN0SGVhZGVyc01ldGhvZE1hcCB9IGZyb20gJy4uL3JlcXVlc3QnO1xuaW1wb3J0IHsgUXVlcnlDbGllbnRDb25maWcgfSBmcm9tICcuL3F1ZXJ5LWNsaWVudC50eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBRdWVyeUNsaWVudCB7XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHJlYWRvbmx5IF9zdG9yZTogUXVlcnlTdG9yZTtcblxuICBnZXQgY29uZmlnKCkge1xuICAgIHJldHVybiB0aGlzLl9jbGllbnRDb25maWc7XG4gIH1cblxuICBnZXQgYXV0aFByb3ZpZGVyKCkge1xuICAgIHJldHVybiB0aGlzLl9hdXRoUHJvdmlkZXIkLmdldFZhbHVlKCkgPz8gdGhpcy5fY2xpZW50Q29uZmlnLnBhcmVudD8uX2F1dGhQcm92aWRlciQuZ2V0VmFsdWUoKSA/PyBudWxsO1xuICB9XG4gIGdldCBhdXRoUHJvdmlkZXIkKCkge1xuICAgIHJldHVybiB0aGlzLl9hdXRoUHJvdmlkZXIkLmFzT2JzZXJ2YWJsZSgpID8/IHRoaXMuX2NsaWVudENvbmZpZy5wYXJlbnQ/Ll9hdXRoUHJvdmlkZXIkLmFzT2JzZXJ2YWJsZSgpID8/IG51bGw7XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfYXV0aFByb3ZpZGVyJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXV0aFByb3ZpZGVyIHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfY2xpZW50Q29uZmlnOiBRdWVyeUNsaWVudENvbmZpZykge1xuICAgIHRoaXMuX3N0b3JlID0gbmV3IFF1ZXJ5U3RvcmUoe1xuICAgICAgZW5hYmxlQ2hhbmdlTG9nZ2luZzogX2NsaWVudENvbmZpZy5sb2dnaW5nPy5xdWVyeVN0YXRlQ2hhbmdlcyxcbiAgICAgIGVuYWJsZUdhcmJhZ2VDb2xsZWN0b3JMb2dnaW5nOiBfY2xpZW50Q29uZmlnLmxvZ2dpbmc/LnF1ZXJ5U3RhdGVHYXJiYWdlQ29sbGVjdG9yLFxuICAgICAgYXV0b1JlZnJlc2hRdWVyaWVzT25XaW5kb3dGb2N1czogX2NsaWVudENvbmZpZy5yZXF1ZXN0Py5hdXRvUmVmcmVzaFF1ZXJpZXNPbldpbmRvd0ZvY3VzID8/IHRydWUsXG4gICAgICBlbmFibGVTbWFydFBvbGxpbmc6IF9jbGllbnRDb25maWcucmVxdWVzdD8uZW5hYmxlU21hcnRQb2xsaW5nID8/IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICBnZXQgPSA8XG4gICAgUm91dGUgZXh0ZW5kcyBSb3V0ZVR5cGU8QXJndW1lbnRzPixcbiAgICBSZXNwb25zZSxcbiAgICBJZCxcbiAgICBEYXRhID0gUmVzcG9uc2UsXG4gICAgQXJndW1lbnRzIGV4dGVuZHMgQmFzZUFyZ3VtZW50cyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcbiAgICBTdG9yZSBleHRlbmRzIEVudGl0eVN0b3JlPHVua25vd24+ID0gRW50aXR5U3RvcmU8dW5rbm93bj4sXG4gID4oXG4gICAgcXVlcnlDb25maWc6IFF1ZXJ5Q29uZmlnV2l0aG91dE1ldGhvZDxSb3V0ZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgU3RvcmUsIERhdGEsIElkPixcbiAgKSA9PlxuICAgIHRoaXMuZmV0Y2g8Um91dGUsIFJlc3BvbnNlLCBBcmd1bWVudHMsIElkLCBTdG9yZSwgRGF0YT4oe1xuICAgICAgLi4ucXVlcnlDb25maWcsXG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgIH0pO1xuXG4gIHBvc3QgPSA8XG4gICAgUm91dGUgZXh0ZW5kcyBSb3V0ZVR5cGU8QXJndW1lbnRzPixcbiAgICBSZXNwb25zZSxcbiAgICBJZCxcbiAgICBEYXRhID0gUmVzcG9uc2UsXG4gICAgQXJndW1lbnRzIGV4dGVuZHMgQmFzZUFyZ3VtZW50cyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcbiAgICBTdG9yZSBleHRlbmRzIEVudGl0eVN0b3JlPHVua25vd24+ID0gRW50aXR5U3RvcmU8dW5rbm93bj4sXG4gID4oXG4gICAgcXVlcnlDb25maWc6IFF1ZXJ5Q29uZmlnV2l0aG91dE1ldGhvZDxSb3V0ZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgU3RvcmUsIERhdGEsIElkPixcbiAgKSA9PlxuICAgIHRoaXMuZmV0Y2g8Um91dGUsIFJlc3BvbnNlLCBBcmd1bWVudHMsIElkLCBTdG9yZSwgRGF0YT4oe1xuICAgICAgLi4ucXVlcnlDb25maWcsXG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICB9KTtcblxuICBwdXQgPSA8XG4gICAgUm91dGUgZXh0ZW5kcyBSb3V0ZVR5cGU8QXJndW1lbnRzPixcbiAgICBSZXNwb25zZSxcbiAgICBJZCxcbiAgICBEYXRhID0gUmVzcG9uc2UsXG4gICAgQXJndW1lbnRzIGV4dGVuZHMgQmFzZUFyZ3VtZW50cyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcbiAgICBTdG9yZSBleHRlbmRzIEVudGl0eVN0b3JlPHVua25vd24+ID0gRW50aXR5U3RvcmU8dW5rbm93bj4sXG4gID4oXG4gICAgcXVlcnlDb25maWc6IFF1ZXJ5Q29uZmlnV2l0aG91dE1ldGhvZDxSb3V0ZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgU3RvcmUsIERhdGEsIElkPixcbiAgKSA9PlxuICAgIHRoaXMuZmV0Y2g8Um91dGUsIFJlc3BvbnNlLCBBcmd1bWVudHMsIElkLCBTdG9yZSwgRGF0YT4oe1xuICAgICAgLi4ucXVlcnlDb25maWcsXG4gICAgICBtZXRob2Q6ICdQVVQnLFxuICAgIH0pO1xuXG4gIHBhdGNoID0gPFxuICAgIFJvdXRlIGV4dGVuZHMgUm91dGVUeXBlPEFyZ3VtZW50cz4sXG4gICAgUmVzcG9uc2UsXG4gICAgSWQsXG4gICAgRGF0YSA9IFJlc3BvbnNlLFxuICAgIEFyZ3VtZW50cyBleHRlbmRzIEJhc2VBcmd1bWVudHMgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQsXG4gICAgU3RvcmUgZXh0ZW5kcyBFbnRpdHlTdG9yZTx1bmtub3duPiA9IEVudGl0eVN0b3JlPHVua25vd24+LFxuICA+KFxuICAgIHF1ZXJ5Q29uZmlnOiBRdWVyeUNvbmZpZ1dpdGhvdXRNZXRob2Q8Um91dGUsIFJlc3BvbnNlLCBBcmd1bWVudHMsIFN0b3JlLCBEYXRhLCBJZD4sXG4gICkgPT5cbiAgICB0aGlzLmZldGNoPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBJZCwgU3RvcmUsIERhdGE+KHtcbiAgICAgIC4uLnF1ZXJ5Q29uZmlnLFxuICAgICAgbWV0aG9kOiAnUEFUQ0gnLFxuICAgIH0pO1xuXG4gIGRlbGV0ZSA9IDxcbiAgICBSb3V0ZSBleHRlbmRzIFJvdXRlVHlwZTxBcmd1bWVudHM+LFxuICAgIFJlc3BvbnNlLFxuICAgIElkLFxuICAgIERhdGEgPSBSZXNwb25zZSxcbiAgICBBcmd1bWVudHMgZXh0ZW5kcyBCYXNlQXJndW1lbnRzIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLFxuICAgIFN0b3JlIGV4dGVuZHMgRW50aXR5U3RvcmU8dW5rbm93bj4gPSBFbnRpdHlTdG9yZTx1bmtub3duPixcbiAgPihcbiAgICBxdWVyeUNvbmZpZzogUXVlcnlDb25maWdXaXRob3V0TWV0aG9kPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBTdG9yZSwgRGF0YSwgSWQ+LFxuICApID0+XG4gICAgdGhpcy5mZXRjaDxSb3V0ZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgSWQsIFN0b3JlLCBEYXRhPih7XG4gICAgICAuLi5xdWVyeUNvbmZpZyxcbiAgICAgIG1ldGhvZDogJ0RFTEVURScsXG4gICAgfSk7XG5cbiAgZ3FsUXVlcnkgPSA8XG4gICAgUm91dGUgZXh0ZW5kcyBSb3V0ZVR5cGU8QXJndW1lbnRzPixcbiAgICBSZXNwb25zZSxcbiAgICBJZCxcbiAgICBEYXRhID0gUmVzcG9uc2UsXG4gICAgQXJndW1lbnRzIGV4dGVuZHMgQmFzZUFyZ3VtZW50cyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCxcbiAgICBTdG9yZSBleHRlbmRzIEVudGl0eVN0b3JlPHVua25vd24+ID0gRW50aXR5U3RvcmU8dW5rbm93bj4sXG4gID4oXG4gICAgcXVlcnlDb25maWc6IEdxbFF1ZXJ5Q29uZmlnV2l0aG91dE1ldGhvZDxSb3V0ZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgU3RvcmUsIERhdGEsIElkPixcbiAgKSA9PlxuICAgIHRoaXMuZmV0Y2g8Um91dGUsIFJlc3BvbnNlLCBBcmd1bWVudHMsIElkLCBTdG9yZSwgRGF0YT4oe1xuICAgICAgLi4ucXVlcnlDb25maWcsXG4gICAgICBtZXRob2Q6ICdHUUxfUVVFUlknLFxuICAgIH0pO1xuXG4gIGdxbE11dGF0ZSA9IDxcbiAgICBSb3V0ZSBleHRlbmRzIFJvdXRlVHlwZTxBcmd1bWVudHM+LFxuICAgIFJlc3BvbnNlLFxuICAgIElkLFxuICAgIERhdGEgPSBSZXNwb25zZSxcbiAgICBBcmd1bWVudHMgZXh0ZW5kcyBCYXNlQXJndW1lbnRzIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLFxuICAgIFN0b3JlIGV4dGVuZHMgRW50aXR5U3RvcmU8dW5rbm93bj4gPSBFbnRpdHlTdG9yZTx1bmtub3duPixcbiAgPihcbiAgICBxdWVyeUNvbmZpZzogR3FsUXVlcnlDb25maWdXaXRob3V0TWV0aG9kPFJvdXRlLCBSZXNwb25zZSwgQXJndW1lbnRzLCBTdG9yZSwgRGF0YSwgSWQ+LFxuICApID0+XG4gICAgdGhpcy5mZXRjaDxSb3V0ZSwgUmVzcG9uc2UsIEFyZ3VtZW50cywgSWQsIFN0b3JlLCBEYXRhPih7XG4gICAgICAuLi5xdWVyeUNvbmZpZyxcbiAgICAgIG1ldGhvZDogJ0dRTF9NVVRBVEUnLFxuICAgIH0pO1xuXG4gIGZldGNoID0gPFxuICAgIFJvdXRlIGV4dGVuZHMgUm91dGVUeXBlPEFyZ3VtZW50cz4sXG4gICAgUmVzcG9uc2UsXG4gICAgQXJndW1lbnRzIGV4dGVuZHMgQmFzZUFyZ3VtZW50cyB8IHVuZGVmaW5lZCxcbiAgICBJZCxcbiAgICBTdG9yZSBleHRlbmRzIEVudGl0eVN0b3JlPHVua25vd24+ID0gRW50aXR5U3RvcmU8dW5rbm93bj4sXG4gICAgRGF0YSA9IFJlc3BvbnNlLFxuICA+KFxuICAgIHF1ZXJ5Q29uZmlnOlxuICAgICAgfCBSZXN0UXVlcnlDb25maWc8Um91dGUsIFJlc3BvbnNlLCBBcmd1bWVudHMsIFN0b3JlLCBEYXRhLCBJZD5cbiAgICAgIHwgR3FsUXVlcnlDb25maWc8Um91dGUsIFJlc3BvbnNlLCBBcmd1bWVudHMsIFN0b3JlLCBEYXRhLCBJZD4sXG4gICkgPT4gbmV3IFF1ZXJ5Q3JlYXRvcjxBcmd1bWVudHMsIFJlc3BvbnNlLCBSb3V0ZSwgU3RvcmUsIERhdGEsIElkPihxdWVyeUNvbmZpZywgdGhpcywgdGhpcy5fc3RvcmUpO1xuXG4gIHNldEF1dGhQcm92aWRlciA9IChhdXRoUHJvdmlkZXI6IEF1dGhQcm92aWRlcikgPT4ge1xuICAgIGlmICh0aGlzLmF1dGhQcm92aWRlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgYXV0aCBwcm92aWRlciBpcyBhbHJlYWR5IHNldC4gUGxlYXNlIGNhbGwgY2xlYXJBdXRoUHJvdmlkZXIoKSBmaXJzdC4nKTtcbiAgICB9XG5cbiAgICB0aGlzLl9hdXRoUHJvdmlkZXIkLm5leHQoYXV0aFByb3ZpZGVyKTtcbiAgfTtcblxuICBzZXREZWZhdWx0SGVhZGVycyA9IChjb25maWc6IHtcbiAgICBoZWFkZXJzOiBSZXF1ZXN0SGVhZGVycyB8IFJlcXVlc3RIZWFkZXJzTWV0aG9kTWFwIHwgbnVsbDtcbiAgICByZWZyZXNoUXVlcmllc0luVXNlPzogYm9vbGVhbjtcbiAgfSkgPT4ge1xuICAgIGlmICghdGhpcy5fY2xpZW50Q29uZmlnLnJlcXVlc3QpIHtcbiAgICAgIHRoaXMuX2NsaWVudENvbmZpZy5yZXF1ZXN0ID0ge1xuICAgICAgICBoZWFkZXJzOiBjb25maWcuaGVhZGVycyA/PyB1bmRlZmluZWQsXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9jbGllbnRDb25maWcucmVxdWVzdC5oZWFkZXJzID0gY29uZmlnLmhlYWRlcnMgPz8gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmIChjb25maWcucmVmcmVzaFF1ZXJpZXNJblVzZSkge1xuICAgICAgdGhpcy5fc3RvcmUucmVmcmVzaFF1ZXJpZXNJblVzZSh7IHB1cmdlVW51c2VkOiB0cnVlLCBpZ25vcmVDYWNoZVZhbGlkaXR5OiB0cnVlIH0pO1xuICAgIH1cbiAgfTtcblxuICBjbGVhckF1dGhQcm92aWRlciA9ICgpID0+IHtcbiAgICB0aGlzLmF1dGhQcm92aWRlcj8uY2xlYW5VcCgpO1xuICAgIHRoaXMuX2F1dGhQcm92aWRlciQubmV4dChudWxsKTtcbiAgfTtcbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktY2xpZW50LnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL3F1ZXJ5LWNsaWVudC9xdWVyeS1jbGllbnQudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEdxbFRyYW5zZmVyT3B0aW9uIH0gZnJvbSAnLi4vcXVlcnkvcXVlcnkudHlwZXMnO1xuaW1wb3J0IHtcbiAgQnVpbGRRdWVyeVN0cmluZ0NvbmZpZyxcbiAgQ2FjaGVBZGFwdGVyRm4sXG4gIFJlcXVlc3RIZWFkZXJzLFxuICBSZXF1ZXN0SGVhZGVyc01ldGhvZE1hcCxcbiAgUmVxdWVzdFJldHJ5Rm4sXG59IGZyb20gJy4uL3JlcXVlc3QnO1xuaW1wb3J0IHsgUXVlcnlDbGllbnQgfSBmcm9tICcuL3F1ZXJ5LWNsaWVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlDbGllbnRDb25maWcge1xuICAvKipcbiAgICogVGhlIGFwaSBiYXNlIHJvdXRlLlxuICAgKiBAZXhhbXBsZSAnaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20nXG4gICAqL1xuICBiYXNlUm91dGU6IGBodHRwczovLyR7c3RyaW5nfWAgfCBgaHR0cDovL2xvY2FsaG9zdDoke3N0cmluZ31gO1xuXG4gIC8qKlxuICAgKiBMb2dnaW5nIGNvbmZpZ3VyYXRpb24gZm9yIGRlYnVnZ2luZy5cbiAgICovXG4gIGxvZ2dpbmc/OiB7XG4gICAgLyoqXG4gICAgICogTG9nIGFsbCBxdWVyeSBzdGF0ZSBjaGFuZ2VzLlxuICAgICAqL1xuICAgIHF1ZXJ5U3RhdGVDaGFuZ2VzPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIExvZyBxdWVyeSBzdGF0ZSBnYXJiYWdlIGNvbGxlY3RvciBydW5zLlxuICAgICAqL1xuICAgIHF1ZXJ5U3RhdGVHYXJiYWdlQ29sbGVjdG9yPzogYm9vbGVhbjtcbiAgfTtcblxuICAvKipcbiAgICogUmVxdWVzdCBvcHRpb25zLlxuICAgKi9cbiAgcmVxdWVzdD86IHtcbiAgICAvKipcbiAgICAgKiBBZGFwdGVyIGZ1bmN0aW9uIHVzZWQgZm9yIGV4dHJhY3RpbmcgdGhlIHRpbWUgdW50aWwgdGhlIHJlc3BvbnNlIGlzIGludmFsaWQuXG4gICAgICogVGhlIGRlZmF1bHQgdXNlcyB0aGUgYGNhY2hlLWNvbnRyb2xgIChgbWF4LWFnZWAgJiBgcy1tYXhhZ2VgKSwgYGFnZWAgYW5kIGBleHBpcmVzYCBoZWFkZXJzLlxuICAgICAqIFNob3VsZCByZXR1cm4gYSBudW1iZXIgaW4gc2Vjb25kcy5cbiAgICAgKi9cbiAgICBjYWNoZUFkYXB0ZXI/OiBDYWNoZUFkYXB0ZXJGbjtcblxuICAgIC8qKlxuICAgICAqIERlZmF1bHQgaGVhZGVycyB0byBiZSBzZW50IHdpdGggZXZlcnkgcmVxdWVzdC5cbiAgICAgKiBXaWxsIGJlIG92ZXJyaWRkZW4gYnkgaGVhZGVycyBwYXNzZWQgdG8gdGhlIHF1ZXJ5LlxuICAgICAqIERvIG5vdCBpbmNsdWRlIHRoZSBgQXV0aG9yaXphdGlvbmAgaGVhZGVyIGhlcmUuIFVzZSBhbiBgQXV0aFByb3ZpZGVyYCBpbnN0ZWFkLlxuICAgICAqL1xuICAgIGhlYWRlcnM/OiBSZXF1ZXN0SGVhZGVycyB8IFJlcXVlc3RIZWFkZXJzTWV0aG9kTWFwO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBhdXRvbWF0aWNhbGx5IHJlZnJlc2ggZXhwaXJlZCBxdWVyaWVzIHdoZW4gdGhlIHdpbmRvdyByZWdhaW5zIGZvY3VzLlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBhdXRvUmVmcmVzaFF1ZXJpZXNPbldpbmRvd0ZvY3VzPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gYXV0b21hdGljYWxseSBzdG9wIHBvbGxpbmcgcXVlcmllcyB3aGVuIHRoZSB3aW5kb3cgbG9zZXMgZm9jdXMuXG4gICAgICogUG9sbGluZyB3aWxsIHJlc3VtZSB3aGVuIHRoZSB3aW5kb3cgcmVnYWlucyBmb2N1cy5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgZW5hYmxlU21hcnRQb2xsaW5nPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEEgcmV0cnkgZnVuY3Rpb24gdG8gYmUgdXNlZCBmb3IgYWxsIHF1ZXJpZXMuXG4gICAgICogQGRlZmF1bHQgc2hvdWxkUmV0cnlSZXF1ZXN0KClcbiAgICAgKi9cbiAgICByZXRyeUZuPzogUmVxdWVzdFJldHJ5Rm47XG5cbiAgICAvKipcbiAgICAgKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIGFsbCBncmFwaHFsIHF1ZXJpZXMuXG4gICAgICovXG4gICAgZ3FsPzoge1xuICAgICAgLyoqXG4gICAgICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBxdWVyeSBzaG91bGQgYmUgc2VudCB2aWEgR0VUIG9yIFBPU1QuXG4gICAgICAgKiAtIGBHRVRgOiBUaGUgcXVlcnkgd2lsbCBiZSBzZW50IHZpYSBxdWVyeSBwYXJhbWV0ZXJzLlxuICAgICAgICogLSBgUE9TVGA6IFRoZSBxdWVyeSB3aWxsIGJlIHNlbnQgdmlhIHRoZSBib2R5LlxuICAgICAgICogQGRlZmF1bHQgJ1BPU1QnXG4gICAgICAgKi9cbiAgICAgIHRyYW5zZmVyVmlhPzogR3FsVHJhbnNmZXJPcHRpb247XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgYWxsIHF1ZXJ5IHN0cmluZ3MuXG4gICAgICovXG4gICAgcXVlcnlQYXJhbXM/OiBCdWlsZFF1ZXJ5U3RyaW5nQ29uZmlnO1xuICB9O1xuXG4gIC8qKlxuICAgKiBQYXJlbnQgcXVlcnkgY2xpZW50LlxuICAgKiBVc2VkIGZvciBzaGFyaW5nIHRoZSBzYW1lIGF1dGggcHJvdmlkZXIuXG4gICAqL1xuICBwYXJlbnQ/OiBRdWVyeUNsaWVudDtcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktY2xpZW50LnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL3F1ZXJ5LWNsaWVudC9xdWVyeS1jbGllbnQudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEdxbFRyYW5zZmVyT3B0aW9uIH0gZnJvbSAnLi4vcXVlcnkvcXVlcnkudHlwZXMnO1xuaW1wb3J0IHtcbiAgQnVpbGRRdWVyeVN0cmluZ0NvbmZpZyxcbiAgQ2FjaGVBZGFwdGVyRm4sXG4gIFJlcXVlc3RIZWFkZXJzLFxuICBSZXF1ZXN0SGVhZGVyc01ldGhvZE1hcCxcbiAgUmVxdWVzdFJldHJ5Rm4sXG59IGZyb20gJy4uL3JlcXVlc3QnO1xuaW1wb3J0IHsgUXVlcnlDbGllbnQgfSBmcm9tICcuL3F1ZXJ5LWNsaWVudCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlDbGllbnRDb25maWcge1xuICAvKipcbiAgICogVGhlIGFwaSBiYXNlIHJvdXRlLlxuICAgKiBAZXhhbXBsZSAnaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20nXG4gICAqL1xuICBiYXNlUm91dGU6IGBodHRwczovLyR7c3RyaW5nfWAgfCBgaHR0cDovL2xvY2FsaG9zdDoke3N0cmluZ31gO1xuXG4gIC8qKlxuICAgKiBMb2dnaW5nIGNvbmZpZ3VyYXRpb24gZm9yIGRlYnVnZ2luZy5cbiAgICovXG4gIGxvZ2dpbmc/OiB7XG4gICAgLyoqXG4gICAgICogTG9nIGFsbCBxdWVyeSBzdGF0ZSBjaGFuZ2VzLlxuICAgICAqL1xuICAgIHF1ZXJ5U3RhdGVDaGFuZ2VzPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIExvZyBxdWVyeSBzdGF0ZSBnYXJiYWdlIGNvbGxlY3RvciBydW5zLlxuICAgICAqL1xuICAgIHF1ZXJ5U3RhdGVHYXJiYWdlQ29sbGVjdG9yPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIExvZyBpZiBzdWJzY3JpcHRpb25zIGFyZSBtYWRlIHRvIHF1ZXJpZXMgdGhhdCBhcmUgaW4gdGhlIGBwcmVwYXJlZGAgc3RhdGUuXG4gICAgICogVGhpcyB1c3VhbGx5IGluZGljYXRlcyB0aGF0IHRoZSBgLmV4ZWN1dGUoKWAgbWV0aG9kIHdhcyBmb3Jnb3R0ZW4uXG4gICAgICovXG4gICAgcHJlcGFyZWRRdWVyeVN1YnNjcmlwdGlvbnM/OiBib29sZWFuO1xuICB9O1xuXG4gIC8qKlxuICAgKiBSZXF1ZXN0IG9wdGlvbnMuXG4gICAqL1xuICByZXF1ZXN0Pzoge1xuICAgIC8qKlxuICAgICAqIEFkYXB0ZXIgZnVuY3Rpb24gdXNlZCBmb3IgZXh0cmFjdGluZyB0aGUgdGltZSB1bnRpbCB0aGUgcmVzcG9uc2UgaXMgaW52YWxpZC5cbiAgICAgKiBUaGUgZGVmYXVsdCB1c2VzIHRoZSBgY2FjaGUtY29udHJvbGAgKGBtYXgtYWdlYCAmIGBzLW1heGFnZWApLCBgYWdlYCBhbmQgYGV4cGlyZXNgIGhlYWRlcnMuXG4gICAgICogU2hvdWxkIHJldHVybiBhIG51bWJlciBpbiBzZWNvbmRzLlxuICAgICAqL1xuICAgIGNhY2hlQWRhcHRlcj86IENhY2hlQWRhcHRlckZuO1xuXG4gICAgLyoqXG4gICAgICogRGVmYXVsdCBoZWFkZXJzIHRvIGJlIHNlbnQgd2l0aCBldmVyeSByZXF1ZXN0LlxuICAgICAqIFdpbGwgYmUgb3ZlcnJpZGRlbiBieSBoZWFkZXJzIHBhc3NlZCB0byB0aGUgcXVlcnkuXG4gICAgICogRG8gbm90IGluY2x1ZGUgdGhlIGBBdXRob3JpemF0aW9uYCBoZWFkZXIgaGVyZS4gVXNlIGFuIGBBdXRoUHJvdmlkZXJgIGluc3RlYWQuXG4gICAgICovXG4gICAgaGVhZGVycz86IFJlcXVlc3RIZWFkZXJzIHwgUmVxdWVzdEhlYWRlcnNNZXRob2RNYXA7XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIGF1dG9tYXRpY2FsbHkgcmVmcmVzaCBleHBpcmVkIHF1ZXJpZXMgd2hlbiB0aGUgd2luZG93IHJlZ2FpbnMgZm9jdXMuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIGF1dG9SZWZyZXNoUXVlcmllc09uV2luZG93Rm9jdXM/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBhdXRvbWF0aWNhbGx5IHN0b3AgcG9sbGluZyBxdWVyaWVzIHdoZW4gdGhlIHdpbmRvdyBsb3NlcyBmb2N1cy5cbiAgICAgKiBQb2xsaW5nIHdpbGwgcmVzdW1lIHdoZW4gdGhlIHdpbmRvdyByZWdhaW5zIGZvY3VzLlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBlbmFibGVTbWFydFBvbGxpbmc/OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQSByZXRyeSBmdW5jdGlvbiB0byBiZSB1c2VkIGZvciBhbGwgcXVlcmllcy5cbiAgICAgKiBAZGVmYXVsdCBzaG91bGRSZXRyeVJlcXVlc3QoKVxuICAgICAqL1xuICAgIHJldHJ5Rm4/OiBSZXF1ZXN0UmV0cnlGbjtcblxuICAgIC8qKlxuICAgICAqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgYWxsIGdyYXBocWwgcXVlcmllcy5cbiAgICAgKi9cbiAgICBncWw/OiB7XG4gICAgICAvKipcbiAgICAgICAqIERldGVybWluZXMgaWYgdGhlIHF1ZXJ5IHNob3VsZCBiZSBzZW50IHZpYSBHRVQgb3IgUE9TVC5cbiAgICAgICAqIC0gYEdFVGA6IFRoZSBxdWVyeSB3aWxsIGJlIHNlbnQgdmlhIHF1ZXJ5IHBhcmFtZXRlcnMuXG4gICAgICAgKiAtIGBQT1NUYDogVGhlIHF1ZXJ5IHdpbGwgYmUgc2VudCB2aWEgdGhlIGJvZHkuXG4gICAgICAgKiBAZGVmYXVsdCAnUE9TVCdcbiAgICAgICAqL1xuICAgICAgdHJhbnNmZXJWaWE/OiBHcWxUcmFuc2Zlck9wdGlvbjtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBhbGwgcXVlcnkgc3RyaW5ncy5cbiAgICAgKi9cbiAgICBxdWVyeVBhcmFtcz86IEJ1aWxkUXVlcnlTdHJpbmdDb25maWc7XG4gIH07XG5cbiAgLyoqXG4gICAqIFBhcmVudCBxdWVyeSBjbGllbnQuXG4gICAqIFVzZWQgZm9yIHNoYXJpbmcgdGhlIHNhbWUgYXV0aCBwcm92aWRlci5cbiAgICovXG4gIHBhcmVudD86IFF1ZXJ5Q2xpZW50O1xufVxuIl19
@@ -3,6 +3,7 @@ import { FormGroup } from '@angular/forms';
3
3
  import { ActivatedRoute, Router } from '@angular/router';
4
4
  import { ET_PROPERTY_REMOVED, RouterStateService, clone, createDestroy, equal } from '@ethlete/core';
5
5
  import { BehaviorSubject, Subject, concat, debounceTime, map, startWith, take, takeUntil, tap, withLatestFrom, } from 'rxjs';
6
+ const ET_ARR_PREFIX = 'ET_ARR__';
6
7
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
8
  export class QueryFormGroup extends FormGroup {
8
9
  patchValue(
@@ -146,7 +147,7 @@ export class QueryForm {
146
147
  if (previousValue &&
147
148
  currentValue &&
148
149
  !equal(previousValue[resetConditionKey], currentValue[resetConditionKey])) {
149
- const defaultValueForKeyToReset = this._defaultValues[formFieldKey];
150
+ const defaultValueForKeyToReset = this._getDefaultValue(formFieldKey);
150
151
  const currentValueForKeyToReset = currentValue[formFieldKey];
151
152
  if (equal(defaultValueForKeyToReset, currentValueForKeyToReset)) {
152
153
  continue;
@@ -181,10 +182,14 @@ export class QueryForm {
181
182
  }
182
183
  }
183
184
  _getDefaultValue(key) {
184
- return this._defaultValues[key] ?? null;
185
+ const val = this._defaultValues[key];
186
+ if (typeof val === 'string' && val.startsWith(ET_ARR_PREFIX)) {
187
+ return JSON.parse(val.slice(ET_ARR_PREFIX.length));
188
+ }
189
+ return val ?? null;
185
190
  }
186
191
  _isDefaultValue(key, value) {
187
- const normalizedValue = Array.isArray(value) ? JSON.stringify(value) : value;
192
+ const normalizedValue = Array.isArray(value) ? `${ET_ARR_PREFIX}${JSON.stringify(value)}` : value;
188
193
  return this._getDefaultValue(key) === normalizedValue;
189
194
  }
190
195
  _setupFormGroup() {
@@ -202,7 +207,7 @@ export class QueryForm {
202
207
  continue;
203
208
  }
204
209
  if (Array.isArray(value)) {
205
- defaultValues[key] = JSON.stringify(value);
210
+ defaultValues[key] = `${ET_ARR_PREFIX}${JSON.stringify(value)}`;
206
211
  }
207
212
  else {
208
213
  defaultValues[key] = value;
@@ -234,4 +239,4 @@ export class QueryForm {
234
239
  });
235
240
  }
236
241
  }
237
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi9xdWVyeS1mb3JtL3F1ZXJ5LWZvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBbUIsU0FBUyxFQUFVLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUNMLGVBQWUsRUFDZixPQUFPLEVBQ1AsTUFBTSxFQUNOLFlBQVksRUFDWixHQUFHLEVBQ0gsU0FBUyxFQUNULElBQUksRUFDSixTQUFTLEVBQ1QsR0FBRyxFQUNILGNBQWMsR0FDZixNQUFNLE1BQU0sQ0FBQztBQVNkLDhEQUE4RDtBQUM5RCxNQUFNLE9BQU8sY0FBOEUsU0FBUSxTQUFZO0lBQ3BHLFVBQVU7SUFDakIsOERBQThEO0lBQzlELEtBQTJGLEVBQzNGLE9BQXlGO1FBRXpGLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxVQUFVO0lBR3JCLElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDM0IsQ0FBQztJQUlELFlBQW1CLElBQTBCO1FBQTFCLFNBQUksR0FBSixJQUFJLENBQXNCO1FBUjdDLGFBQVEsR0FBRyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQU1sQyw0QkFBdUIsR0FBa0IsSUFBSSxDQUFDO0lB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QUMsV0FBVyxLQUFLLEtBQUssRUFBRTtnQkFDcEYsT0FBTyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDekI7aUJBQU07Z0JBQ0wsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLDRCQUE0QjtvQkFDcEUsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUMsS0FBSyxDQUFDO29CQUM5RCxDQUFDLENBQUMsS0FBSyxDQUFDO2FBQ1g7U0FDRjtRQUVELElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNsQixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3hCLFdBQVc7Z0JBQ1gsVUFBVTthQUNYLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdab25lLCBhc3NlcnRJbkluamVjdGlvbkNvbnRleHQsIGluamVjdCwgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Hcm91cCwgybVWYWx1ZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRVRfUFJPUEVSVFlfUkVNT1ZFRCwgUm91dGVyU3RhdGVTZXJ2aWNlLCBjbG9uZSwgY3JlYXRlRGVzdHJveSwgZXF1YWwgfSBmcm9tICdAZXRobGV0ZS9jb3JlJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgU3ViamVjdCxcbiAgY29uY2F0LFxuICBkZWJvdW5jZVRpbWUsXG4gIG1hcCxcbiAgc3RhcnRXaXRoLFxuICB0YWtlLFxuICB0YWtlVW50aWwsXG4gIHRhcCxcbiAgd2l0aExhdGVzdEZyb20sXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgUXVlcnlGaWVsZE9wdGlvbnMsXG4gIFF1ZXJ5Rm9ybUdyb3VwQ29udHJvbHMsXG4gIFF1ZXJ5Rm9ybU9ic2VydmVPcHRpb25zLFxuICBRdWVyeUZvcm1WYWx1ZSxcbiAgUXVlcnlGb3JtVmFsdWVFdmVudCxcbn0gZnJvbSAnLi9xdWVyeS1mb3JtLnR5cGVzJztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBjbGFzcyBRdWVyeUZvcm1Hcm91cDxUIGV4dGVuZHMgeyBbSyBpbiBrZXlvZiBUXTogQWJzdHJhY3RDb250cm9sPGFueSwgYW55PiB9ID0gYW55PiBleHRlbmRzIEZvcm1Hcm91cDxUPiB7XG4gIG92ZXJyaWRlIHBhdGNoVmFsdWUoXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICB2YWx1ZTogMCBleHRlbmRzIDEgJiBUID8geyBba2V5OiBzdHJpbmddOiBhbnkgfSA6IFBhcnRpYWw8eyBbSyBpbiBrZXlvZiBUXTogybVWYWx1ZTxUW0tdPiB9PixcbiAgICBvcHRpb25zPzogeyBvbmx5U2VsZj86IGJvb2xlYW4gfCB1bmRlZmluZWQ7IGVtaXRFdmVudD86IGJvb2xlYW4gfCB1bmRlZmluZWQgfSB8IHVuZGVmaW5lZCxcbiAgKTogdm9pZCB7XG4gICAgc3VwZXIucGF0Y2hWYWx1ZSh2YWx1ZSwgb3B0aW9ucyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFF1ZXJ5RmllbGQ8VD4ge1xuICBjaGFuZ2VzJCA9IHRoaXMuX3NldHVwQ2hhbmdlc09ic2VydmFibGUoKTtcblxuICBnZXQgY29udHJvbCgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhLmNvbnRyb2w7XG4gIH1cblxuICBwcml2YXRlIF9jdXJyZW50RGVib3VuY2VUaW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZGF0YTogUXVlcnlGaWVsZE9wdGlvbnM8VD4pIHt9XG5cbiAgc2V0VmFsdWUodmFsdWU6IFQgfCBudWxsLCBvcHRpb25zPzogeyBza2lwRGVib3VuY2U/OiBib29sZWFuIH0pIHtcbiAgICBpZiAodGhpcy5fY3VycmVudERlYm91bmNlVGltZW91dCAhPT0gbnVsbCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX2N1cnJlbnREZWJvdW5jZVRpbWVvdXQpO1xuICAgICAgdGhpcy5fY3VycmVudERlYm91bmNlVGltZW91dCA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlID09PSB0aGlzLmNvbnRyb2wudmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRhLmRlYm91bmNlICYmICFvcHRpb25zPy5za2lwRGVib3VuY2UpIHtcbiAgICAgIHRoaXMuX2N1cnJlbnREZWJvdW5jZVRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgICB9LCB0aGlzLmRhdGEuZGVib3VuY2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NldHVwQ2hhbmdlc09ic2VydmFibGUoKSB7XG4gICAgY29uc3Qgb2JzID0gdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0aGlzLmNvbnRyb2wudmFsdWUpKTtcblxuICAgIGlmICghdGhpcy5kYXRhLmRlYm91bmNlKSB7XG4gICAgICByZXR1cm4gb2JzO1xuICAgIH1cblxuICAgIC8vIFRoZSBpbml0aWFsIHZhbHVlIHNob3VsZCBnZXQgZW1pdHRlZCBpbW1lZGlhdGVseVxuICAgIC8vIGNvbmNhdCBzd2l0Y2hlcyB0byB0aGUgZGVib3VuY2VkIG9ic2VydmFibGUgYWZ0ZXIgdGhlIGZpcnN0IG9ic2VydmFibGUgaXMgY29tcGxldGVkXG4gICAgcmV0dXJuIGNvbmNhdChvYnMucGlwZSh0YWtlKDEpKSwgdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSh0aGlzLmRhdGEuZGVib3VuY2UpKSk7XG4gIH1cbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCBjbGFzcyBRdWVyeUZvcm08VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIFF1ZXJ5RmllbGQ8YW55Pj4+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSQgPSBjcmVhdGVEZXN0cm95KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Vub2JzZXJ2ZVRyaWdnZXIkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FjdGl2YXRlZFJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVmYXVsdFZhbHVlcyA9IHRoaXMuX2V4dHJhY3REZWZhdWx0VmFsdWVzKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JvdXRlclN0YXRlU2VydmljZSA9IGluamVjdChSb3V0ZXJTdGF0ZVNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF96b25lID0gaW5qZWN0KE5nWm9uZSk7XG5cbiAgcHJpdmF0ZSBfaXNPYnNlcnZpbmcgPSBmYWxzZTtcblxuICByZWFkb25seSBmb3JtID0gdGhpcy5fc2V0dXBGb3JtR3JvdXAoKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9sYXN0Rm9ybVZhbHVlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBpZDogbnVtYmVyOyBkYXRhOiBRdWVyeUZvcm1WYWx1ZTxUPiB9IHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2N1cnJlbnRGb3JtVmFsdWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IGlkOiBudW1iZXI7IGRhdGE6IFF1ZXJ5Rm9ybVZhbHVlPFQ+IH0+KHtcbiAgICBpZDogMCxcbiAgICBkYXRhOiB0aGlzLl9mb3JtVmFsdWUsXG4gIH0pO1xuXG4gIHByaXZhdGUgZ2V0IF9mb3JtVmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpIGFzIFF1ZXJ5Rm9ybVZhbHVlPFQ+O1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfY2hhbmdlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFF1ZXJ5Rm9ybVZhbHVlRXZlbnQ8VD4+KHtcbiAgICBwcmV2aW91c1ZhbHVlOiBudWxsLFxuICAgIGN1cnJlbnRWYWx1ZTogdGhpcy5mb3JtLmdldFJhd1ZhbHVlKCkgYXMgUXVlcnlGb3JtVmFsdWU8VD4sXG4gIH0pO1xuXG4gIHJlYWRvbmx5IGNoYW5nZXMkID0gdGhpcy5fY3VycmVudEZvcm1WYWx1ZSQucGlwZSh3aXRoTGF0ZXN0RnJvbSh0aGlzLl9sYXN0Rm9ybVZhbHVlJCkpLnBpcGUoXG4gICAgbWFwKChbY3VycmVudFZhbHVlRXZlbnQsIHByZXZpb3VzVmFsdWVFdmVudF0pID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHByZXZpb3VzVmFsdWU6IHByZXZpb3VzVmFsdWVFdmVudD8uZGF0YSA/PyBudWxsLFxuICAgICAgICBjdXJyZW50VmFsdWU6IGN1cnJlbnRWYWx1ZUV2ZW50LmRhdGEsXG4gICAgICB9O1xuICAgIH0pLFxuICApO1xuXG4gIGdldCBjb250cm9scygpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzO1xuICB9XG5cbiAgZ2V0IHZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl9jaGFuZ2VzJC52YWx1ZS5jdXJyZW50VmFsdWU7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9maWVsZHM6IFQpIHtcbiAgICBhc3NlcnRJbkluamVjdGlvbkNvbnRleHQoUXVlcnlGb3JtKTtcbiAgfVxuXG4gIG9ic2VydmUob3B0aW9ucz86IFF1ZXJ5Rm9ybU9ic2VydmVPcHRpb25zKSB7XG4gICAgaWYgKHRoaXMuX2lzT2JzZXJ2aW5nKSB7XG4gICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdRdWVyeUZvcm0ub2JzZXJ2ZSgpIHdhcyBjYWxsZWQgbXVsdGlwbGUgdGltZXMuIFRoaXMgaXMgbm90IHN1cHBvcnRlZC4nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9pc09ic2VydmluZyA9IHRydWU7XG5cbiAgICB0aGlzLnNldEZvcm1WYWx1ZUZyb21VcmxRdWVyeVBhcmFtcyh7XG4gICAgICBxdWVyeVBhcmFtczogdGhpcy5fcm91dGVyU3RhdGVTZXJ2aWNlLnF1ZXJ5UGFyYW1zLFxuICAgIH0pO1xuXG4gICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9sYXN0Rm9ybVZhbHVlJC5uZXh0KGNsb25lKHRoaXMuX2N1cnJlbnRGb3JtVmFsdWUkLnZhbHVlKSk7XG4gICAgICAgICAgdGhpcy5fY3VycmVudEZvcm1WYWx1ZSQubmV4dCh7IGlkOiB0aGlzLl9jdXJyZW50Rm9ybVZhbHVlJC52YWx1ZS5pZCArIDEsIGRhdGE6IGNsb25lKHRoaXMuX2Zvcm1WYWx1ZSkgfSk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fdW5vYnNlcnZlVHJpZ2dlciQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5fY3VycmVudEZvcm1WYWx1ZSRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKGN1cnJlbnRWYWx1ZUV2ZW50KSA9PiB7XG4gICAgICAgICAgY29uc3QgcHJldmlvdXNWYWx1ZUV2ZW50ID0gdGhpcy5fbGFzdEZvcm1WYWx1ZSQudmFsdWU7XG4gICAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gY3VycmVudFZhbHVlRXZlbnQuZGF0YTtcblxuICAgICAgICAgIGlmIChvcHRpb25zPy53cml0ZVRvUXVlcnlQYXJhbXMgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICB0aGlzLl9zeW5jVmlhVXJsUXVlcnlQYXJhbXMoY3VycmVudFZhbHVlRXZlbnQuZGF0YSwgb3B0aW9ucz8ucmVwbGFjZVVybCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgZGlkUmVzZXRWYWx1ZXMgPSB0aGlzLl9oYW5kbGVRdWVyeUZvcm1SZXNldHMocHJldmlvdXNWYWx1ZUV2ZW50Py5kYXRhID8/IG51bGwsIGN1cnJlbnRWYWx1ZSk7XG5cbiAgICAgICAgICBpZiAoZGlkUmVzZXRWYWx1ZXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodGhpcy5fY3VycmVudEZvcm1WYWx1ZSQudmFsdWUuaWQgIT09IGN1cnJlbnRWYWx1ZUV2ZW50LmlkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5fY2hhbmdlcyQubmV4dCh7XG4gICAgICAgICAgICBwcmV2aW91c1ZhbHVlOiBwcmV2aW91c1ZhbHVlRXZlbnQ/LmRhdGEgPz8gbnVsbCxcbiAgICAgICAgICAgIGN1cnJlbnRWYWx1ZTogY3VycmVudFZhbHVlRXZlbnQuZGF0YSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl91bm9ic2VydmVUcmlnZ2VyJCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICBpZiAob3B0aW9ucz8uc3luY09uTmF2aWdhdGlvbiAhPT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuX3JvdXRlclN0YXRlU2VydmljZS5xdWVyeVBhcmFtQ2hhbmdlcyRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5fdW5vYnNlcnZlVHJpZ2dlciQpLFxuICAgICAgICAgIHRhcCgoY2hhbmdlcykgPT4gdGhpcy5zZXRGb3JtVmFsdWVGcm9tVXJsUXVlcnlQYXJhbXMoeyBxdWVyeVBhcmFtczogY2hhbmdlcyB9KSksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZVF1ZXJ5Rm9ybVJlc2V0cyhwcmV2aW91c1ZhbHVlOiBRdWVyeUZvcm1WYWx1ZTxUPiB8IG51bGwsIGN1cnJlbnRWYWx1ZTogUXVlcnlGb3JtVmFsdWU8VD4pIHtcbiAgICBsZXQgZGlkUmVzZXRWYWx1ZXMgPSBmYWxzZTtcblxuICAgIGZvciAoY29uc3QgZm9ybUZpZWxkS2V5IGluIHRoaXMuX2ZpZWxkcykge1xuICAgICAgY29uc3QgcmVzZXRzID0gdGhpcy5fZmllbGRzW2Zvcm1GaWVsZEtleV0uZGF0YS5pc1Jlc2V0Qnk7XG5cbiAgICAgIGlmICghcmVzZXRzKSBjb250aW51ZTtcblxuICAgICAgY29uc3QgcmVzZXRDb25kaXRpb25LZXlzID0gQXJyYXkuaXNBcnJheShyZXNldHMpID8gcmVzZXRzIDogW3Jlc2V0c107XG5cbiAgICAgIGZvciAoY29uc3QgcmVzZXRDb25kaXRpb25LZXkgb2YgcmVzZXRDb25kaXRpb25LZXlzKSB7XG4gICAgICAgIGlmICghKHJlc2V0Q29uZGl0aW9uS2V5IGluIHRoaXMuX2ZpZWxkcykpIHtcbiAgICAgICAgICBpZiAoaXNEZXZNb2RlKCkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgVGhlIGZpZWxkIFwiJHtyZXNldENvbmRpdGlvbktleX1cIiBpcyBub3QgZGVmaW5lZCBpbiB0aGUgUXVlcnlGb3JtLiBJcyBpdCBhIHR5cG8/YCwgdGhpcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgcHJldmlvdXNWYWx1ZSAmJlxuICAgICAgICAgIGN1cnJlbnRWYWx1ZSAmJlxuICAgICAgICAgICFlcXVhbChwcmV2aW91c1ZhbHVlW3Jlc2V0Q29uZGl0aW9uS2V5XSwgY3VycmVudFZhbHVlW3Jlc2V0Q29uZGl0aW9uS2V5XSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29uc3QgZGVmYXVsdFZhbHVlRm9yS2V5VG9SZXNldCA9IHRoaXMuX2RlZmF1bHRWYWx1ZXNbZm9ybUZpZWxkS2V5XTtcbiAgICAgICAgICBjb25zdCBjdXJyZW50VmFsdWVGb3JLZXlUb1Jlc2V0ID0gY3VycmVudFZhbHVlW2Zvcm1GaWVsZEtleV07XG5cbiAgICAgICAgICBpZiAoZXF1YWwoZGVmYXVsdFZhbHVlRm9yS2V5VG9SZXNldCwgY3VycmVudFZhbHVlRm9yS2V5VG9SZXNldCkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1tmb3JtRmllbGRLZXldLnNldFZhbHVlKGRlZmF1bHRWYWx1ZUZvcktleVRvUmVzZXQpO1xuXG4gICAgICAgICAgZGlkUmVzZXRWYWx1ZXMgPSB0cnVlO1xuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGlkUmVzZXRWYWx1ZXM7XG4gIH1cblxuICB1bm9ic2VydmUoKSB7XG4gICAgdGhpcy5fdW5vYnNlcnZlVHJpZ2dlciQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHNldEZvcm1WYWx1ZUZyb21VcmxRdWVyeVBhcmFtcyhvcHRpb25zOiB7IHF1ZXJ5UGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjsgc2tpcERlYm91bmNlPzogYm9vbGVhbiB9KSB7XG4gICAgZm9yIChjb25zdCBba2V5LCBmaWVsZF0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5fZmllbGRzKSkge1xuICAgICAgY29uc3QgdmFsdWUgPSBvcHRpb25zLnF1ZXJ5UGFyYW1zW2tleV07XG5cbiAgICAgIGNvbnN0IHZhbHVlRG9lc05vdEV4aXN0ID0gdmFsdWUgPT09IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKHZhbHVlRG9lc05vdEV4aXN0KSBjb250aW51ZTtcblxuICAgICAgY29uc3QgdmFsdWVHb3RSZW1vdmVkID0gdmFsdWUgPT09IEVUX1BST1BFUlRZX1JFTU9WRUQ7XG5cbiAgICAgIGlmICh2YWx1ZUdvdFJlbW92ZWQpIHtcbiAgICAgICAgZmllbGQuc2V0VmFsdWUodGhpcy5fZ2V0RGVmYXVsdFZhbHVlKGtleSksIHsgc2tpcERlYm91bmNlOiBvcHRpb25zPy5za2lwRGVib3VuY2UgPz8gdHJ1ZSB9KTtcblxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGVzZXJpYWxpemVkVmFsdWUgPSBmaWVsZC5kYXRhLnF1ZXJ5UGFyYW1Ub1ZhbHVlVHJhbnNmb3JtRm4/Lih2YWx1ZSkgPz8gdmFsdWU7XG4gICAgICBjb25zdCB2YWx1ZUlzRXF1YWxUb0N1cnJlbnQgPSBlcXVhbChkZXNlcmlhbGl6ZWRWYWx1ZSwgZmllbGQuY29udHJvbC52YWx1ZSk7XG5cbiAgICAgIGlmICh2YWx1ZUlzRXF1YWxUb0N1cnJlbnQpIGNvbnRpbnVlO1xuXG4gICAgICBmaWVsZC5zZXRWYWx1ZShkZXNlcmlhbGl6ZWRWYWx1ZSwgeyBza2lwRGVib3VuY2U6IG9wdGlvbnM/LnNraXBEZWJvdW5jZSA/PyB0cnVlIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2dldERlZmF1bHRWYWx1ZShrZXk6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLl9kZWZhdWx0VmFsdWVzW2tleV0gPz8gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgX2lzRGVmYXVsdFZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bikge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRWYWx1ZSA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gSlNPTi5zdHJpbmdpZnkodmFsdWUpIDogdmFsdWU7XG5cbiAgICByZXR1cm4gdGhpcy5fZ2V0RGVmYXVsdFZhbHVlKGtleSkgPT09IG5vcm1hbGl6ZWRWYWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldHVwRm9ybUdyb3VwKCkge1xuICAgIGNvbnN0IGdyb3VwID0gbmV3IFF1ZXJ5Rm9ybUdyb3VwKHt9IGFzIFF1ZXJ5Rm9ybUdyb3VwQ29udHJvbHM8VD4pO1xuXG4gICAgZm9yIChjb25zdCBba2V5LCBmaWVsZF0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5fZmllbGRzKSkge1xuICAgICAgZ3JvdXAuYWRkQ29udHJvbChrZXksIGZpZWxkLmNvbnRyb2wpO1xuICAgIH1cblxuICAgIHJldHVybiBncm91cDtcbiAgfVxuXG4gIHByaXZhdGUgX2V4dHJhY3REZWZhdWx0VmFsdWVzKCkge1xuICAgIGNvbnN0IGRlZmF1bHRWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cbiAgICBmb3IgKGNvbnN0IFtrZXksIGZpZWxkXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLl9maWVsZHMpKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGZpZWxkLmNvbnRyb2wudmFsdWU7XG5cbiAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgZGVmYXVsdFZhbHVlc1trZXldID0gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGVmYXVsdFZhbHVlc1trZXldID0gdmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZXM7XG4gIH1cblxuICBwcml2YXRlIF9zeW5jVmlhVXJsUXVlcnlQYXJhbXModmFsdWVzOiBRdWVyeUZvcm1WYWx1ZTxUPiwgcmVwbGFjZVVybD86IGJvb2xlYW4pIHtcbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHsgLi4uY2xvbmUodGhpcy5fYWN0aXZhdGVkUm91dGUuc25hcHNob3QucXVlcnlQYXJhbXMpIH07XG5cbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh2YWx1ZXMpKSB7XG4gICAgICBpZiAoIXRoaXMuX2ZpZWxkc1trZXldKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgVGhlIGZpZWxkIFwiJHtrZXl9XCIgaXMgbm90IGRlZmluZWQgaW4gdGhlIFF1ZXJ5Rm9ybS4gSXMgaXQgYSB0eXBvP2AsIHRoaXMpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX2lzRGVmYXVsdFZhbHVlKGtleSwgdmFsdWUpIHx8IHRoaXMuX2ZpZWxkc1trZXldLmRhdGEuYXBwZW5kVG9VcmwgPT09IGZhbHNlKSB7XG4gICAgICAgIGRlbGV0ZSBxdWVyeVBhcmFtc1trZXldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcXVlcnlQYXJhbXNba2V5XSA9IHRoaXMuX2ZpZWxkc1trZXldLmRhdGEudmFsdWVUb1F1ZXJ5UGFyYW1UcmFuc2Zvcm1GblxuICAgICAgICAgID8gdGhpcy5fZmllbGRzW2tleV0uZGF0YS52YWx1ZVRvUXVlcnlQYXJhbVRyYW5zZm9ybUZuPy4odmFsdWUpXG4gICAgICAgICAgOiB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl96b25lLnJ1bigoKSA9PiB7XG4gICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoW10sIHtcbiAgICAgICAgcXVlcnlQYXJhbXMsXG4gICAgICAgIHJlcGxhY2VVcmwsXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufVxuIl19
242
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcXVlcnkvc3JjL2xpYi9xdWVyeS1mb3JtL3F1ZXJ5LWZvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBbUIsU0FBUyxFQUFVLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUNMLGVBQWUsRUFDZixPQUFPLEVBQ1AsTUFBTSxFQUNOLFlBQVksRUFDWixHQUFHLEVBQ0gsU0FBUyxFQUNULElBQUksRUFDSixTQUFTLEVBQ1QsR0FBRyxFQUNILGNBQWMsR0FDZixNQUFNLE1BQU0sQ0FBQztBQVNkLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQztBQUVqQyw4REFBOEQ7QUFDOUQsTUFBTSxPQUFPLGNBQThFLFNBQVEsU0FBWTtJQUNwRyxVQUFVO0lBQ2pCLDhEQUE4RDtJQUM5RCxLQUEyRixFQUMzRixPQUF5RjtRQUV6RixLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNuQyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sVUFBVTtJQUdyQixJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQzNCLENBQUM7SUFJRCxZQUFtQixJQUEwQjtRQUExQixTQUFJLEdBQUosSUFBSSxDQUFzQjtRQVI3QyxhQUFRLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7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TSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNqRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDdEIsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLEdBQUcsa0RBQWtELEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3hGLFNBQVM7YUFDVjtZQUVELElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxLQUFLLEtBQUssRUFBRTtnQkFDcEYsT0FBTyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDekI7aUJBQU07Z0JBQ0wsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLDRCQUE0QjtvQkFDcEUsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUMsS0FBSyxDQUFDO29CQUM5RCxDQUFDLENBQUMsS0FBSyxDQUFDO2FBQ1g7U0FDRjtRQUVELElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNsQixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3hCLFdBQVc7Z0JBQ1gsVUFBVTthQUNYLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdab25lLCBhc3NlcnRJbkluamVjdGlvbkNvbnRleHQsIGluamVjdCwgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Hcm91cCwgybVWYWx1ZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRVRfUFJPUEVSVFlfUkVNT1ZFRCwgUm91dGVyU3RhdGVTZXJ2aWNlLCBjbG9uZSwgY3JlYXRlRGVzdHJveSwgZXF1YWwgfSBmcm9tICdAZXRobGV0ZS9jb3JlJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgU3ViamVjdCxcbiAgY29uY2F0LFxuICBkZWJvdW5jZVRpbWUsXG4gIG1hcCxcbiAgc3RhcnRXaXRoLFxuICB0YWtlLFxuICB0YWtlVW50aWwsXG4gIHRhcCxcbiAgd2l0aExhdGVzdEZyb20sXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgUXVlcnlGaWVsZE9wdGlvbnMsXG4gIFF1ZXJ5Rm9ybUdyb3VwQ29udHJvbHMsXG4gIFF1ZXJ5Rm9ybU9ic2VydmVPcHRpb25zLFxuICBRdWVyeUZvcm1WYWx1ZSxcbiAgUXVlcnlGb3JtVmFsdWVFdmVudCxcbn0gZnJvbSAnLi9xdWVyeS1mb3JtLnR5cGVzJztcblxuY29uc3QgRVRfQVJSX1BSRUZJWCA9ICdFVF9BUlJfXyc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgY2xhc3MgUXVlcnlGb3JtR3JvdXA8VCBleHRlbmRzIHsgW0sgaW4ga2V5b2YgVF06IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT4gfSA9IGFueT4gZXh0ZW5kcyBGb3JtR3JvdXA8VD4ge1xuICBvdmVycmlkZSBwYXRjaFZhbHVlKFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgdmFsdWU6IDAgZXh0ZW5kcyAxICYgVCA/IHsgW2tleTogc3RyaW5nXTogYW55IH0gOiBQYXJ0aWFsPHsgW0sgaW4ga2V5b2YgVF06IMm1VmFsdWU8VFtLXT4gfT4sXG4gICAgb3B0aW9ucz86IHsgb25seVNlbGY/OiBib29sZWFuIHwgdW5kZWZpbmVkOyBlbWl0RXZlbnQ/OiBib29sZWFuIHwgdW5kZWZpbmVkIH0gfCB1bmRlZmluZWQsXG4gICk6IHZvaWQge1xuICAgIHN1cGVyLnBhdGNoVmFsdWUodmFsdWUsIG9wdGlvbnMpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBRdWVyeUZpZWxkPFQ+IHtcbiAgY2hhbmdlcyQgPSB0aGlzLl9zZXR1cENoYW5nZXNPYnNlcnZhYmxlKCk7XG5cbiAgZ2V0IGNvbnRyb2woKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5jb250cm9sO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3VycmVudERlYm91bmNlVGltZW91dDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGRhdGE6IFF1ZXJ5RmllbGRPcHRpb25zPFQ+KSB7fVxuXG4gIHNldFZhbHVlKHZhbHVlOiBUIHwgbnVsbCwgb3B0aW9ucz86IHsgc2tpcERlYm91bmNlPzogYm9vbGVhbiB9KSB7XG4gICAgaWYgKHRoaXMuX2N1cnJlbnREZWJvdW5jZVRpbWVvdXQgIT09IG51bGwpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9jdXJyZW50RGVib3VuY2VUaW1lb3V0KTtcbiAgICAgIHRoaXMuX2N1cnJlbnREZWJvdW5jZVRpbWVvdXQgPSBudWxsO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5jb250cm9sLnZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGF0YS5kZWJvdW5jZSAmJiAhb3B0aW9ucz8uc2tpcERlYm91bmNlKSB7XG4gICAgICB0aGlzLl9jdXJyZW50RGVib3VuY2VUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgfSwgdGhpcy5kYXRhLmRlYm91bmNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zZXR1cENoYW5nZXNPYnNlcnZhYmxlKCkge1xuICAgIGNvbnN0IG9icyA9IHRoaXMuY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy5jb250cm9sLnZhbHVlKSk7XG5cbiAgICBpZiAoIXRoaXMuZGF0YS5kZWJvdW5jZSkge1xuICAgICAgcmV0dXJuIG9icztcbiAgICB9XG5cbiAgICAvLyBUaGUgaW5pdGlhbCB2YWx1ZSBzaG91bGQgZ2V0IGVtaXR0ZWQgaW1tZWRpYXRlbHlcbiAgICAvLyBjb25jYXQgc3dpdGNoZXMgdG8gdGhlIGRlYm91bmNlZCBvYnNlcnZhYmxlIGFmdGVyIHRoZSBmaXJzdCBvYnNlcnZhYmxlIGlzIGNvbXBsZXRlZFxuICAgIHJldHVybiBjb25jYXQob2JzLnBpcGUodGFrZSgxKSksIHRoaXMuY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUodGhpcy5kYXRhLmRlYm91bmNlKSkpO1xuICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgY2xhc3MgUXVlcnlGb3JtPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBRdWVyeUZpZWxkPGFueT4+PiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gY3JlYXRlRGVzdHJveSgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF91bm9ic2VydmVUcmlnZ2VyJCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hY3RpdmF0ZWRSb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RlZmF1bHRWYWx1ZXMgPSB0aGlzLl9leHRyYWN0RGVmYXVsdFZhbHVlcygpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yb3V0ZXJTdGF0ZVNlcnZpY2UgPSBpbmplY3QoUm91dGVyU3RhdGVTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfem9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gIHByaXZhdGUgX2lzT2JzZXJ2aW5nID0gZmFsc2U7XG5cbiAgcmVhZG9ubHkgZm9ybSA9IHRoaXMuX3NldHVwRm9ybUdyb3VwKCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbGFzdEZvcm1WYWx1ZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHsgaWQ6IG51bWJlcjsgZGF0YTogUXVlcnlGb3JtVmFsdWU8VD4gfSB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jdXJyZW50Rm9ybVZhbHVlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBpZDogbnVtYmVyOyBkYXRhOiBRdWVyeUZvcm1WYWx1ZTxUPiB9Pih7XG4gICAgaWQ6IDAsXG4gICAgZGF0YTogdGhpcy5fZm9ybVZhbHVlLFxuICB9KTtcblxuICBwcml2YXRlIGdldCBfZm9ybVZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKSBhcyBRdWVyeUZvcm1WYWx1ZTxUPjtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NoYW5nZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxRdWVyeUZvcm1WYWx1ZUV2ZW50PFQ+Pih7XG4gICAgcHJldmlvdXNWYWx1ZTogbnVsbCxcbiAgICBjdXJyZW50VmFsdWU6IHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpIGFzIFF1ZXJ5Rm9ybVZhbHVlPFQ+LFxuICB9KTtcblxuICByZWFkb25seSBjaGFuZ2VzJCA9IHRoaXMuX2N1cnJlbnRGb3JtVmFsdWUkLnBpcGUod2l0aExhdGVzdEZyb20odGhpcy5fbGFzdEZvcm1WYWx1ZSQpKS5waXBlKFxuICAgIG1hcCgoW2N1cnJlbnRWYWx1ZUV2ZW50LCBwcmV2aW91c1ZhbHVlRXZlbnRdKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwcmV2aW91c1ZhbHVlOiBwcmV2aW91c1ZhbHVlRXZlbnQ/LmRhdGEgPz8gbnVsbCxcbiAgICAgICAgY3VycmVudFZhbHVlOiBjdXJyZW50VmFsdWVFdmVudC5kYXRhLFxuICAgICAgfTtcbiAgICB9KSxcbiAgKTtcblxuICBnZXQgY29udHJvbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5jb250cm9scztcbiAgfVxuXG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fY2hhbmdlcyQudmFsdWUuY3VycmVudFZhbHVlO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZmllbGRzOiBUKSB7XG4gICAgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0KFF1ZXJ5Rm9ybSk7XG4gIH1cblxuICBvYnNlcnZlKG9wdGlvbnM/OiBRdWVyeUZvcm1PYnNlcnZlT3B0aW9ucykge1xuICAgIGlmICh0aGlzLl9pc09ic2VydmluZykge1xuICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignUXVlcnlGb3JtLm9ic2VydmUoKSB3YXMgY2FsbGVkIG11bHRpcGxlIHRpbWVzLiBUaGlzIGlzIG5vdCBzdXBwb3J0ZWQuJyk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5faXNPYnNlcnZpbmcgPSB0cnVlO1xuXG4gICAgdGhpcy5zZXRGb3JtVmFsdWVGcm9tVXJsUXVlcnlQYXJhbXMoe1xuICAgICAgcXVlcnlQYXJhbXM6IHRoaXMuX3JvdXRlclN0YXRlU2VydmljZS5xdWVyeVBhcmFtcyxcbiAgICB9KTtcblxuICAgIHRoaXMuZm9ybS52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBzdGFydFdpdGgobnVsbCksXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fbGFzdEZvcm1WYWx1ZSQubmV4dChjbG9uZSh0aGlzLl9jdXJyZW50Rm9ybVZhbHVlJC52YWx1ZSkpO1xuICAgICAgICAgIHRoaXMuX2N1cnJlbnRGb3JtVmFsdWUkLm5leHQoeyBpZDogdGhpcy5fY3VycmVudEZvcm1WYWx1ZSQudmFsdWUuaWQgKyAxLCBkYXRhOiBjbG9uZSh0aGlzLl9mb3JtVmFsdWUpIH0pO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX3Vub2JzZXJ2ZVRyaWdnZXIkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuX2N1cnJlbnRGb3JtVmFsdWUkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChjdXJyZW50VmFsdWVFdmVudCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHByZXZpb3VzVmFsdWVFdmVudCA9IHRoaXMuX2xhc3RGb3JtVmFsdWUkLnZhbHVlO1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGN1cnJlbnRWYWx1ZUV2ZW50LmRhdGE7XG5cbiAgICAgICAgICBpZiAob3B0aW9ucz8ud3JpdGVUb1F1ZXJ5UGFyYW1zICE9PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5fc3luY1ZpYVVybFF1ZXJ5UGFyYW1zKGN1cnJlbnRWYWx1ZUV2ZW50LmRhdGEsIG9wdGlvbnM/LnJlcGxhY2VVcmwpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGRpZFJlc2V0VmFsdWVzID0gdGhpcy5faGFuZGxlUXVlcnlGb3JtUmVzZXRzKHByZXZpb3VzVmFsdWVFdmVudD8uZGF0YSA/PyBudWxsLCBjdXJyZW50VmFsdWUpO1xuXG4gICAgICAgICAgaWYgKGRpZFJlc2V0VmFsdWVzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRGb3JtVmFsdWUkLnZhbHVlLmlkICE9PSBjdXJyZW50VmFsdWVFdmVudC5pZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuX2NoYW5nZXMkLm5leHQoe1xuICAgICAgICAgICAgcHJldmlvdXNWYWx1ZTogcHJldmlvdXNWYWx1ZUV2ZW50Py5kYXRhID8/IG51bGwsXG4gICAgICAgICAgICBjdXJyZW50VmFsdWU6IGN1cnJlbnRWYWx1ZUV2ZW50LmRhdGEsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fdW5vYnNlcnZlVHJpZ2dlciQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgaWYgKG9wdGlvbnM/LnN5bmNPbk5hdmlnYXRpb24gIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLl9yb3V0ZXJTdGF0ZVNlcnZpY2UucXVlcnlQYXJhbUNoYW5nZXMkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuX3Vub2JzZXJ2ZVRyaWdnZXIkKSxcbiAgICAgICAgICB0YXAoKGNoYW5nZXMpID0+IHRoaXMuc2V0Rm9ybVZhbHVlRnJvbVVybFF1ZXJ5UGFyYW1zKHsgcXVlcnlQYXJhbXM6IGNoYW5nZXMgfSkpLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVRdWVyeUZvcm1SZXNldHMocHJldmlvdXNWYWx1ZTogUXVlcnlGb3JtVmFsdWU8VD4gfCBudWxsLCBjdXJyZW50VmFsdWU6IFF1ZXJ5Rm9ybVZhbHVlPFQ+KSB7XG4gICAgbGV0IGRpZFJlc2V0VmFsdWVzID0gZmFsc2U7XG5cbiAgICBmb3IgKGNvbnN0IGZvcm1GaWVsZEtleSBpbiB0aGlzLl9maWVsZHMpIHtcbiAgICAgIGNvbnN0IHJlc2V0cyA9IHRoaXMuX2ZpZWxkc1tmb3JtRmllbGRLZXldLmRhdGEuaXNSZXNldEJ5O1xuXG4gICAgICBpZiAoIXJlc2V0cykgY29udGludWU7XG5cbiAgICAgIGNvbnN0IHJlc2V0Q29uZGl0aW9uS2V5cyA9IEFycmF5LmlzQXJyYXkocmVzZXRzKSA/IHJlc2V0cyA6IFtyZXNldHNdO1xuXG4gICAgICBmb3IgKGNvbnN0IHJlc2V0Q29uZGl0aW9uS2V5IG9mIHJlc2V0Q29uZGl0aW9uS2V5cykge1xuICAgICAgICBpZiAoIShyZXNldENvbmRpdGlvbktleSBpbiB0aGlzLl9maWVsZHMpKSB7XG4gICAgICAgICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYFRoZSBmaWVsZCBcIiR7cmVzZXRDb25kaXRpb25LZXl9XCIgaXMgbm90IGRlZmluZWQgaW4gdGhlIFF1ZXJ5Rm9ybS4gSXMgaXQgYSB0eXBvP2AsIHRoaXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHByZXZpb3VzVmFsdWUgJiZcbiAgICAgICAgICBjdXJyZW50VmFsdWUgJiZcbiAgICAgICAgICAhZXF1YWwocHJldmlvdXNWYWx1ZVtyZXNldENvbmRpdGlvbktleV0sIGN1cnJlbnRWYWx1ZVtyZXNldENvbmRpdGlvbktleV0pXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IGRlZmF1bHRWYWx1ZUZvcktleVRvUmVzZXQgPSB0aGlzLl9nZXREZWZhdWx0VmFsdWUoZm9ybUZpZWxkS2V5KTtcbiAgICAgICAgICBjb25zdCBjdXJyZW50VmFsdWVGb3JLZXlUb1Jlc2V0ID0gY3VycmVudFZhbHVlW2Zvcm1GaWVsZEtleV07XG5cbiAgICAgICAgICBpZiAoZXF1YWwoZGVmYXVsdFZhbHVlRm9yS2V5VG9SZXNldCwgY3VycmVudFZhbHVlRm9yS2V5VG9SZXNldCkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9sc1tmb3JtRmllbGRLZXldLnNldFZhbHVlKGRlZmF1bHRWYWx1ZUZvcktleVRvUmVzZXQpO1xuXG4gICAgICAgICAgZGlkUmVzZXRWYWx1ZXMgPSB0cnVlO1xuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGlkUmVzZXRWYWx1ZXM7XG4gIH1cblxuICB1bm9ic2VydmUoKSB7XG4gICAgdGhpcy5fdW5vYnNlcnZlVHJpZ2dlciQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHNldEZvcm1WYWx1ZUZyb21VcmxRdWVyeVBhcmFtcyhvcHRpb25zOiB7IHF1ZXJ5UGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjsgc2tpcERlYm91bmNlPzogYm9vbGVhbiB9KSB7XG4gICAgZm9yIChjb25zdCBba2V5LCBmaWVsZF0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5fZmllbGRzKSkge1xuICAgICAgY29uc3QgdmFsdWUgPSBvcHRpb25zLnF1ZXJ5UGFyYW1zW2tleV07XG5cbiAgICAgIGNvbnN0IHZhbHVlRG9lc05vdEV4aXN0ID0gdmFsdWUgPT09IHVuZGVmaW5lZDtcblxuICAgICAgaWYgKHZhbHVlRG9lc05vdEV4aXN0KSBjb250aW51ZTtcblxuICAgICAgY29uc3QgdmFsdWVHb3RSZW1vdmVkID0gdmFsdWUgPT09IEVUX1BST1BFUlRZX1JFTU9WRUQ7XG5cbiAgICAgIGlmICh2YWx1ZUdvdFJlbW92ZWQpIHtcbiAgICAgICAgZmllbGQuc2V0VmFsdWUodGhpcy5fZ2V0RGVmYXVsdFZhbHVlKGtleSksIHsgc2tpcERlYm91bmNlOiBvcHRpb25zPy5za2lwRGVib3VuY2UgPz8gdHJ1ZSB9KTtcblxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGVzZXJpYWxpemVkVmFsdWUgPSBmaWVsZC5kYXRhLnF1ZXJ5UGFyYW1Ub1ZhbHVlVHJhbnNmb3JtRm4/Lih2YWx1ZSkgPz8gdmFsdWU7XG4gICAgICBjb25zdCB2YWx1ZUlzRXF1YWxUb0N1cnJlbnQgPSBlcXVhbChkZXNlcmlhbGl6ZWRWYWx1ZSwgZmllbGQuY29udHJvbC52YWx1ZSk7XG5cbiAgICAgIGlmICh2YWx1ZUlzRXF1YWxUb0N1cnJlbnQpIGNvbnRpbnVlO1xuXG4gICAgICBmaWVsZC5zZXRWYWx1ZShkZXNlcmlhbGl6ZWRWYWx1ZSwgeyBza2lwRGVib3VuY2U6IG9wdGlvbnM/LnNraXBEZWJvdW5jZSA/PyB0cnVlIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2dldERlZmF1bHRWYWx1ZShrZXk6IHN0cmluZykge1xuICAgIGNvbnN0IHZhbCA9IHRoaXMuX2RlZmF1bHRWYWx1ZXNba2V5XTtcblxuICAgIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJyAmJiB2YWwuc3RhcnRzV2l0aChFVF9BUlJfUFJFRklYKSkge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UodmFsLnNsaWNlKEVUX0FSUl9QUkVGSVgubGVuZ3RoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbCA/PyBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNEZWZhdWx0VmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKSB7XG4gICAgY29uc3Qgbm9ybWFsaXplZFZhbHVlID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyBgJHtFVF9BUlJfUFJFRklYfSR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfWAgOiB2YWx1ZTtcblxuICAgIHJldHVybiB0aGlzLl9nZXREZWZhdWx0VmFsdWUoa2V5KSA9PT0gbm9ybWFsaXplZFZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0dXBGb3JtR3JvdXAoKSB7XG4gICAgY29uc3QgZ3JvdXAgPSBuZXcgUXVlcnlGb3JtR3JvdXAoe30gYXMgUXVlcnlGb3JtR3JvdXBDb250cm9sczxUPik7XG5cbiAgICBmb3IgKGNvbnN0IFtrZXksIGZpZWxkXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLl9maWVsZHMpKSB7XG4gICAgICBncm91cC5hZGRDb250cm9sKGtleSwgZmllbGQuY29udHJvbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdyb3VwO1xuICB9XG5cbiAgcHJpdmF0ZSBfZXh0cmFjdERlZmF1bHRWYWx1ZXMoKSB7XG4gICAgY29uc3QgZGVmYXVsdFZhbHVlczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuICAgIGZvciAoY29uc3QgW2tleSwgZmllbGRdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuX2ZpZWxkcykpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gZmllbGQuY29udHJvbC52YWx1ZTtcblxuICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICBkZWZhdWx0VmFsdWVzW2tleV0gPSBgJHtFVF9BUlJfUFJFRklYfSR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZWZhdWx0VmFsdWVzW2tleV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZGVmYXVsdFZhbHVlcztcbiAgfVxuXG4gIHByaXZhdGUgX3N5bmNWaWFVcmxRdWVyeVBhcmFtcyh2YWx1ZXM6IFF1ZXJ5Rm9ybVZhbHVlPFQ+LCByZXBsYWNlVXJsPzogYm9vbGVhbikge1xuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0geyAuLi5jbG9uZSh0aGlzLl9hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcykgfTtcblxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHZhbHVlcykpIHtcbiAgICAgIGlmICghdGhpcy5fZmllbGRzW2tleV0pIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBUaGUgZmllbGQgXCIke2tleX1cIiBpcyBub3QgZGVmaW5lZCBpbiB0aGUgUXVlcnlGb3JtLiBJcyBpdCBhIHR5cG8/YCwgdGhpcyk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5faXNEZWZhdWx0VmFsdWUoa2V5LCB2YWx1ZSkgfHwgdGhpcy5fZmllbGRzW2tleV0uZGF0YS5hcHBlbmRUb1VybCA9PT0gZmFsc2UpIHtcbiAgICAgICAgZGVsZXRlIHF1ZXJ5UGFyYW1zW2tleV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBxdWVyeVBhcmFtc1trZXldID0gdGhpcy5fZmllbGRzW2tleV0uZGF0YS52YWx1ZVRvUXVlcnlQYXJhbVRyYW5zZm9ybUZuXG4gICAgICAgICAgPyB0aGlzLl9maWVsZHNba2V5XS5kYXRhLnZhbHVlVG9RdWVyeVBhcmFtVHJhbnNmb3JtRm4/Lih2YWx1ZSlcbiAgICAgICAgICA6IHZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX3pvbmUucnVuKCgpID0+IHtcbiAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbXSwge1xuICAgICAgICBxdWVyeVBhcmFtcyxcbiAgICAgICAgcmVwbGFjZVVybCxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -1,17 +1,23 @@
1
- import { fromEvent, take, takeUntil, timer } from 'rxjs';
1
+ import { Subject, fromEvent, take, takeUntil, timer } from 'rxjs';
2
2
  export class QueryStore {
3
3
  constructor(_config) {
4
4
  this._config = _config;
5
+ /**
6
+ * @internal
7
+ */
5
8
  this._store = new Map();
6
9
  this._garbageCollector = null;
7
10
  this._isInLowResourceMode = false;
8
11
  this._lastBlurTimestamp = Date.now();
12
+ this._storeChange$ = new Subject();
13
+ this.storeChange$ = this._storeChange$.asObservable();
9
14
  this._initSmartQueryHandling();
10
15
  }
11
16
  add(id, query) {
12
17
  this._store.set(id, query);
13
18
  this._initGarbageCollector();
14
19
  this._logState(id, query, 'SET');
20
+ this._storeChange$.next(id);
15
21
  }
16
22
  get(id) {
17
23
  return this._store.get(id) ?? null;
@@ -20,6 +26,7 @@ export class QueryStore {
20
26
  this.get(id)?._destroy();
21
27
  this._store.delete(id);
22
28
  this._logState(id, null, 'REMOVE');
29
+ this._storeChange$.next(id);
23
30
  }
24
31
  forEach(callback) {
25
32
  for (const [key, query] of this._store) {
@@ -127,4 +134,4 @@ export class QueryStore {
127
134
  console.log(`%cGC: ${action}`, 'color: yellow; font-weight: bold');
128
135
  }
129
136
  }
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvcXVlcnktc3RvcmUvcXVlcnktc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUd6RCxNQUFNLE9BQU8sVUFBVTtJQU1yQixZQUNVLE9BS1A7UUFMTyxZQUFPLEdBQVAsT0FBTyxDQUtkO1FBWGMsV0FBTSxHQUFHLElBQUksR0FBRyxFQUFvQixDQUFDO1FBQzlDLHNCQUFpQixHQUFrQixJQUFJLENBQUM7UUFDeEMseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQzdCLHVCQUFrQixHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQVV0QyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsR0FBRyxDQUFDLEVBQVUsRUFBRSxLQUFlO1FBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUUzQixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUU3QixJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELEdBQUcsQ0FBcUIsRUFBVTtRQUNoQyxPQUFRLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBTyxJQUFJLElBQUksQ0FBQztJQUM1QyxDQUFDO0lBRUQsTUFBTSxDQUFDLEVBQVU7UUFDZixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXZCLElBQUksQ0FB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QyxvQkFBb0IsRUFBRSxDQUFDO1FBQzlCLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNaLENBQUM7SUFFTyxxQkFBcUI7UUFDM0IsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEtBQUssSUFBSSxFQUFFO1lBQ25DLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztZQUM5QixJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDbkM7SUFDSCxDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUUzQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUNoQyxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNuQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2xCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsb0JBQW9CLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUU3QyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUU7WUFDckIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7U0FDOUI7SUFDSCxDQUFDO0lBRU8sb0JBQW9CLENBQUMsTUFBYztRQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSw2QkFBNkI7WUFBRSxPQUFPO1FBRXpELE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxNQUFNLEVBQUUsRUFBRSxrQ0FBa0MsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZyb21FdmVudCwgdGFrZSwgdGFrZVVudGlsLCB0aW1lciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQW55UXVlcnkgfSBmcm9tICcuLi9xdWVyeSc7XG5cbmV4cG9ydCBjbGFzcyBRdWVyeVN0b3JlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RvcmUgPSBuZXcgTWFwPHN0cmluZywgQW55UXVlcnk+KCk7XG4gIHByaXZhdGUgX2dhcmJhZ2VDb2xsZWN0b3I6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9pc0luTG93UmVzb3VyY2VNb2RlID0gZmFsc2U7XG4gIHByaXZhdGUgX2xhc3RCbHVyVGltZXN0YW1wID0gRGF0ZS5ub3coKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9jb25maWc/OiB7XG4gICAgICBlbmFibGVDaGFuZ2VMb2dnaW5nPzogYm9vbGVhbjtcbiAgICAgIGVuYWJsZUdhcmJhZ2VDb2xsZWN0b3JMb2dnaW5nPzogYm9vbGVhbjtcbiAgICAgIGF1dG9SZWZyZXNoUXVlcmllc09uV2luZG93Rm9jdXM/OiBib29sZWFuO1xuICAgICAgZW5hYmxlU21hcnRQb2xsaW5nPzogYm9vbGVhbjtcbiAgICB9LFxuICApIHtcbiAgICB0aGlzLl9pbml0U21hcnRRdWVyeUhhbmRsaW5nKCk7XG4gIH1cblxuICBhZGQoaWQ6IHN0cmluZywgcXVlcnk6IEFueVF1ZXJ5KSB7XG4gICAgdGhpcy5fc3RvcmUuc2V0KGlkLCBxdWVyeSk7XG5cbiAgICB0aGlzLl9pbml0R2FyYmFnZUNvbGxlY3RvcigpO1xuXG4gICAgdGhpcy5fbG9nU3RhdGUoaWQsIHF1ZXJ5LCAnU0VUJyk7XG4gIH1cblxuICBnZXQ8VCBleHRlbmRzIEFueVF1ZXJ5PihpZDogc3RyaW5nKTogVCB8IG51bGwge1xuICAgIHJldHVybiAodGhpcy5fc3RvcmUuZ2V0KGlkKSBhcyBUKSA/PyBudWxsO1xuICB9XG5cbiAgcmVtb3ZlKGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmdldChpZCk/Ll9kZXN0cm95KCk7XG4gICAgdGhpcy5fc3RvcmUuZGVsZXRlKGlkKTtcblxuICAgIHRoaXMuX2xvZ1N0YXRlKGlkLCBudWxsLCAnUkVNT1ZFJyk7XG4gIH1cblxuICBmb3JFYWNoKGNhbGxiYWNrOiAodmFsdWU6IEFueVF1ZXJ5LCBrZXk6IHN0cmluZykgPT4gdm9pZCkge1xuICAgIGZvciAoY29uc3QgW2tleSwgcXVlcnldIG9mIHRoaXMuX3N0b3JlKSB7XG4gICAgICBjYWxsYmFjayhxdWVyeSwga2V5KTtcbiAgICB9XG4gIH1cblxuICByZWZyZXNoUXVlcmllc0luVXNlKGNvbmZpZz86IHsgaWdub3JlQ2FjaGVWYWxpZGl0eT86IGJvb2xlYW47IHB1cmdlVW51c2VkPzogYm9vbGVhbiB9KSB7XG4gICAgY29uc3QgeyBpZ25vcmVDYWNoZVZhbGlkaXR5LCBwdXJnZVVudXNlZCB9ID0gY29uZmlnID8/IHt9O1xuXG4gICAgZm9yIChjb25zdCBba2V5LCBxdWVyeV0gb2YgdGhpcy5fc3RvcmUpIHtcbiAgICAgIGlmIChcbiAgICAgICAgcXVlcnkuaXNJblVzZSAmJlxuICAgICAgICAocXVlcnkuaXNFeHBpcmVkIHx8IGlnbm9yZUNhY2hlVmFsaWRpdHkpICYmXG4gICAgICAgIHF1ZXJ5LmF1dG9SZWZyZXNoT25Db25maWcucXVlcnlDbGllbnREZWZhdWx0SGVhZGVyc0NoYW5nZVxuICAgICAgKSB7XG4gICAgICAgIHF1ZXJ5LmV4ZWN1dGUoeyBza2lwQ2FjaGU6IHRydWUsIF90cmlnZ2VyZWRWaWE6ICdhdXRvJyB9KTtcbiAgICAgIH0gZWxzZSBpZiAocHVyZ2VVbnVzZWQgJiYgIXF1ZXJ5LmlzSW5Vc2UpIHtcbiAgICAgICAgdGhpcy5yZW1vdmUoa2V5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9pbml0U21hcnRRdWVyeUhhbmRsaW5nKCkge1xuICAgIGNvbnN0IHdpbmRvd0JsdXIkID0gZnJvbUV2ZW50PEV2ZW50Pih3aW5kb3csICdibHVyJyk7XG4gICAgY29uc3Qgd2luZG93Rm9jdXMkID0gZnJvbUV2ZW50PEV2ZW50Pih3aW5kb3csICdmb2N1cycpO1xuXG4gICAgd2luZG93Qmx1ciQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRpbWVyKDUwMDApXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh3aW5kb3dGb2N1cyQpLCB0YWtlKDEpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9sYXN0Qmx1clRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gICAgICAgICAgdGhpcy5faXNJbkxvd1Jlc291cmNlTW9kZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5fc3RvcEdhcmJhZ2VDb2xsZWN0b3IoKTtcblxuICAgICAgICAgIGlmICh0aGlzLl9jb25maWc/LmVuYWJsZVNtYXJ0UG9sbGluZykge1xuICAgICAgICAgICAgdGhpcy5mb3JFYWNoKChxdWVyeSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIXF1ZXJ5LmlzUG9sbGluZyB8fCAhcXVlcnkuX2VuYWJsZVNtYXJ0UG9sbGluZykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHF1ZXJ5LnBhdXNlUG9sbGluZygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIHdpbmRvd0ZvY3VzJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLl9pc0luTG93UmVzb3VyY2VNb2RlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5faXNJbkxvd1Jlc291cmNlTW9kZSA9IGZhbHNlO1xuXG4gICAgICBpZiAodGhpcy5fY29uZmlnPy5lbmFibGVTbWFydFBvbGxpbmcgfHwgdGhpcy5fY29uZmlnPy5hdXRvUmVmcmVzaFF1ZXJpZXNPbldpbmRvd0ZvY3VzKSB7XG4gICAgICAgIHRoaXMuZm9yRWFjaCgocXVlcnkpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5fY29uZmlnPy5lbmFibGVTbWFydFBvbGxpbmcgJiYgcXVlcnkuX2lzUG9sbGluZ1BhdXNlZCkge1xuICAgICAgICAgICAgcXVlcnkucmVzdW1lUG9sbGluZygpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChEYXRlLm5vdygpIC0gdGhpcy5fbGFzdEJsdXJUaW1lc3RhbXAgPiAxNTAwMCkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICB0aGlzLl9jb25maWc/LmF1dG9SZWZyZXNoUXVlcmllc09uV2luZG93Rm9jdXMgJiZcbiAgICAgICAgICAgICAgcXVlcnkuaXNFeHBpcmVkICYmXG4gICAgICAgICAgICAgIHF1ZXJ5LmlzSW5Vc2UgJiZcbiAgICAgICAgICAgICAgcXVlcnkuYXV0b1JlZnJlc2hPbkNvbmZpZy53aW5kb3dGb2N1c1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHF1ZXJ5LmV4ZWN1dGUoeyBza2lwQ2FjaGU6IHRydWUsIF90cmlnZ2VyZWRWaWE6ICdhdXRvJyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9pbml0R2FyYmFnZUNvbGxlY3RvcigpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfbG9nU3RhdGUoa2V5OiBzdHJpbmcgfCBudWxsLCBpdGVtOiBBbnlRdWVyeSB8IG51bGwsIG9wZXJhdGlvbjogc3RyaW5nKSB7XG4gICAgaWYgKCF0aGlzLl9jb25maWc/LmVuYWJsZUNoYW5nZUxvZ2dpbmcpIHJldHVybjtcblxuICAgIGNvbnN0IHN0YXRlQXNKc29uOiBSZWNvcmQ8c3RyaW5nLCBBbnlRdWVyeT4gPSB7fTtcblxuICAgIHRoaXMuX3N0b3JlLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgIHN0YXRlQXNKc29uW2tleV0gPSB2YWx1ZTtcbiAgICB9KTtcblxuICAgIGNvbnNvbGUubG9nKGAlY1ske29wZXJhdGlvbn1dICR7a2V5fWAsICdmb250LXdlaWdodDogYm9sZCcpO1xuXG4gICAgY29uc29sZS5sb2coeyBvcGVyYXRpb24sIGtleSwgaXRlbSB9KTtcbiAgICBjb25zb2xlLmxvZyhzdGF0ZUFzSnNvbik7XG4gIH1cblxuICBwcml2YXRlIF9pbml0R2FyYmFnZUNvbGxlY3RvcigpIHtcbiAgICBpZiAodGhpcy5fZ2FyYmFnZUNvbGxlY3RvciAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2xvZ0dhcmJhZ2VDb2xsZWN0b3IoJ1N0YXJ0Jyk7XG5cbiAgICB0aGlzLl9nYXJiYWdlQ29sbGVjdG9yID0gd2luZG93LnNldEludGVydmFsKCgpID0+IHtcbiAgICAgIHRoaXMuX3J1bkdhcmJhZ2VDb2xsZWN0b3IoKTtcbiAgICB9LCAxNTAwMCk7XG4gIH1cblxuICBwcml2YXRlIF9zdG9wR2FyYmFnZUNvbGxlY3RvcigpIHtcbiAgICBpZiAodGhpcy5fZ2FyYmFnZUNvbGxlY3RvciAhPT0gbnVsbCkge1xuICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwodGhpcy5fZ2FyYmFnZUNvbGxlY3Rvcik7XG4gICAgICB0aGlzLl9nYXJiYWdlQ29sbGVjdG9yID0gbnVsbDtcbiAgICAgIHRoaXMuX2xvZ0dhcmJhZ2VDb2xsZWN0b3IoJ1N0b3AnKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9ydW5HYXJiYWdlQ29sbGVjdG9yKCkge1xuICAgIHRoaXMuX2xvZ0dhcmJhZ2VDb2xsZWN0b3IoJ0NvbGxlY3RpbmcuLi4nKTtcblxuICAgIHRoaXMuX3N0b3JlLmZvckVhY2goKGl0ZW0sIGtleSkgPT4ge1xuICAgICAgaWYgKGl0ZW0uaXNFeHBpcmVkICYmICFpdGVtLmlzSW5Vc2UpIHtcbiAgICAgICAgdGhpcy5yZW1vdmUoa2V5KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ0dhcmJhZ2VDb2xsZWN0b3IoJ0NvbGxlY3Rpb24gZG9uZScpO1xuXG4gICAgaWYgKCF0aGlzLl9zdG9yZS5zaXplKSB7XG4gICAgICB0aGlzLl9zdG9wR2FyYmFnZUNvbGxlY3RvcigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2xvZ0dhcmJhZ2VDb2xsZWN0b3IoYWN0aW9uOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuX2NvbmZpZz8uZW5hYmxlR2FyYmFnZUNvbGxlY3RvckxvZ2dpbmcpIHJldHVybjtcblxuICAgIGNvbnNvbGUubG9nKGAlY0dDOiAke2FjdGlvbn1gLCAnY29sb3I6IHllbGxvdzsgZm9udC13ZWlnaHQ6IGJvbGQnKTtcbiAgfVxufVxuIl19
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3F1ZXJ5L3NyYy9saWIvcXVlcnktc3RvcmUvcXVlcnktc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHbEUsTUFBTSxPQUFPLFVBQVU7SUFjckIsWUFDVSxPQUtQO1FBTE8sWUFBTyxHQUFQLE9BQU8sQ0FLZDtRQW5CSDs7V0FFRztRQUNNLFdBQU0sR0FBRyxJQUFJLEdBQUcsRUFBb0IsQ0FBQztRQUV0QyxzQkFBaUIsR0FBa0IsSUFBSSxDQUFDO1FBQ3hDLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUM3Qix1QkFBa0IsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFaEMsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBRXJDLGlCQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQVV4RCxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsR0FBRyxDQUFDLEVBQVUsRUFBRSxLQUFlO1FBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUUzQixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUU3QixJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFakMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELEdBQUcsQ0FBcUIsRUFBVTtRQUNoQyxPQUFRLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBTyxJQUFJ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SUFBSSxDQUFDLE9BQU8sRUFBRSw2QkFBNkI7WUFBRSxPQUFPO1FBRXpELE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxNQUFNLEVBQUUsRUFBRSxrQ0FBa0MsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YmplY3QsIGZyb21FdmVudCwgdGFrZSwgdGFrZVVudGlsLCB0aW1lciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQW55UXVlcnkgfSBmcm9tICcuLi9xdWVyeSc7XG5cbmV4cG9ydCBjbGFzcyBRdWVyeVN0b3JlIHtcbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcmVhZG9ubHkgX3N0b3JlID0gbmV3IE1hcDxzdHJpbmcsIEFueVF1ZXJ5PigpO1xuXG4gIHByaXZhdGUgX2dhcmJhZ2VDb2xsZWN0b3I6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9pc0luTG93UmVzb3VyY2VNb2RlID0gZmFsc2U7XG4gIHByaXZhdGUgX2xhc3RCbHVyVGltZXN0YW1wID0gRGF0ZS5ub3coKTtcblxuICBwcml2YXRlIF9zdG9yZUNoYW5nZSQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG5cbiAgcmVhZG9ubHkgc3RvcmVDaGFuZ2UkID0gdGhpcy5fc3RvcmVDaGFuZ2UkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2NvbmZpZz86IHtcbiAgICAgIGVuYWJsZUNoYW5nZUxvZ2dpbmc/OiBib29sZWFuO1xuICAgICAgZW5hYmxlR2FyYmFnZUNvbGxlY3RvckxvZ2dpbmc/OiBib29sZWFuO1xuICAgICAgYXV0b1JlZnJlc2hRdWVyaWVzT25XaW5kb3dGb2N1cz86IGJvb2xlYW47XG4gICAgICBlbmFibGVTbWFydFBvbGxpbmc/OiBib29sZWFuO1xuICAgIH0sXG4gICkge1xuICAgIHRoaXMuX2luaXRTbWFydFF1ZXJ5SGFuZGxpbmcoKTtcbiAgfVxuXG4gIGFkZChpZDogc3RyaW5nLCBxdWVyeTogQW55UXVlcnkpIHtcbiAgICB0aGlzLl9zdG9yZS5zZXQoaWQsIHF1ZXJ5KTtcblxuICAgIHRoaXMuX2luaXRHYXJiYWdlQ29sbGVjdG9yKCk7XG5cbiAgICB0aGlzLl9sb2dTdGF0ZShpZCwgcXVlcnksICdTRVQnKTtcblxuICAgIHRoaXMuX3N0b3JlQ2hhbmdlJC5uZXh0KGlkKTtcbiAgfVxuXG4gIGdldDxUIGV4dGVuZHMgQW55UXVlcnk+KGlkOiBzdHJpbmcpOiBUIHwgbnVsbCB7XG4gICAgcmV0dXJuICh0aGlzLl9zdG9yZS5nZXQoaWQpIGFzIFQpID8/IG51bGw7XG4gIH1cblxuICByZW1vdmUoaWQ6IHN0cmluZykge1xuICAgIHRoaXMuZ2V0KGlkKT8uX2Rlc3Ryb3koKTtcbiAgICB0aGlzLl9zdG9yZS5kZWxldGUoaWQpO1xuXG4gICAgdGhpcy5fbG9nU3RhdGUoaWQsIG51bGwsICdSRU1PVkUnKTtcblxuICAgIHRoaXMuX3N0b3JlQ2hhbmdlJC5uZXh0KGlkKTtcbiAgfVxuXG4gIGZvckVhY2goY2FsbGJhY2s6ICh2YWx1ZTogQW55UXVlcnksIGtleTogc3RyaW5nKSA9PiB2b2lkKSB7XG4gICAgZm9yIChjb25zdCBba2V5LCBxdWVyeV0gb2YgdGhpcy5fc3RvcmUpIHtcbiAgICAgIGNhbGxiYWNrKHF1ZXJ5LCBrZXkpO1xuICAgIH1cbiAgfVxuXG4gIHJlZnJlc2hRdWVyaWVzSW5Vc2UoY29uZmlnPzogeyBpZ25vcmVDYWNoZVZhbGlkaXR5PzogYm9vbGVhbjsgcHVyZ2VVbnVzZWQ/OiBib29sZWFuIH0pIHtcbiAgICBjb25zdCB7IGlnbm9yZUNhY2hlVmFsaWRpdHksIHB1cmdlVW51c2VkIH0gPSBjb25maWcgPz8ge307XG5cbiAgICBmb3IgKGNvbnN0IFtrZXksIHF1ZXJ5XSBvZiB0aGlzLl9zdG9yZSkge1xuICAgICAgaWYgKFxuICAgICAgICBxdWVyeS5pc0luVXNlICYmXG4gICAgICAgIChxdWVyeS5pc0V4cGlyZWQgfHwgaWdub3JlQ2FjaGVWYWxpZGl0eSkgJiZcbiAgICAgICAgcXVlcnkuYXV0b1JlZnJlc2hPbkNvbmZpZy5xdWVyeUNsaWVudERlZmF1bHRIZWFkZXJzQ2hhbmdlXG4gICAgICApIHtcbiAgICAgICAgcXVlcnkuZXhlY3V0ZSh7IHNraXBDYWNoZTogdHJ1ZSwgX3RyaWdnZXJlZFZpYTogJ2F1dG8nIH0pO1xuICAgICAgfSBlbHNlIGlmIChwdXJnZVVudXNlZCAmJiAhcXVlcnkuaXNJblVzZSkge1xuICAgICAgICB0aGlzLnJlbW92ZShrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2luaXRTbWFydFF1ZXJ5SGFuZGxpbmcoKSB7XG4gICAgY29uc3Qgd2luZG93Qmx1ciQgPSBmcm9tRXZlbnQ8RXZlbnQ+KHdpbmRvdywgJ2JsdXInKTtcbiAgICBjb25zdCB3aW5kb3dGb2N1cyQgPSBmcm9tRXZlbnQ8RXZlbnQ+KHdpbmRvdywgJ2ZvY3VzJyk7XG5cbiAgICB3aW5kb3dCbHVyJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGltZXIoNTAwMClcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHdpbmRvd0ZvY3VzJCksIHRha2UoMSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX2xhc3RCbHVyVGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICB0aGlzLl9pc0luTG93UmVzb3VyY2VNb2RlID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLl9zdG9wR2FyYmFnZUNvbGxlY3RvcigpO1xuXG4gICAgICAgICAgaWYgKHRoaXMuX2NvbmZpZz8uZW5hYmxlU21hcnRQb2xsaW5nKSB7XG4gICAgICAgICAgICB0aGlzLmZvckVhY2goKHF1ZXJ5KSA9PiB7XG4gICAgICAgICAgICAgIGlmICghcXVlcnkuaXNQb2xsaW5nIHx8ICFxdWVyeS5fZW5hYmxlU21hcnRQb2xsaW5nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcXVlcnkucGF1c2VQb2xsaW5nKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgd2luZG93Rm9jdXMkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuX2lzSW5Mb3dSZXNvdXJjZU1vZGUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9pc0luTG93UmVzb3VyY2VNb2RlID0gZmFsc2U7XG5cbiAgICAgIGlmICh0aGlzLl9jb25maWc/LmVuYWJsZVNtYXJ0UG9sbGluZyB8fCB0aGlzLl9jb25maWc/LmF1dG9SZWZyZXNoUXVlcmllc09uV2luZG93Rm9jdXMpIHtcbiAgICAgICAgdGhpcy5mb3JFYWNoKChxdWVyeSkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLl9jb25maWc/LmVuYWJsZVNtYXJ0UG9sbGluZyAmJiBxdWVyeS5faXNQb2xsaW5nUGF1c2VkKSB7XG4gICAgICAgICAgICBxdWVyeS5yZXN1bWVQb2xsaW5nKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKERhdGUubm93KCkgLSB0aGlzLl9sYXN0Qmx1clRpbWVzdGFtcCA+IDE1MDAwKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIHRoaXMuX2NvbmZpZz8uYXV0b1JlZnJlc2hRdWVyaWVzT25XaW5kb3dGb2N1cyAmJlxuICAgICAgICAgICAgICBxdWVyeS5pc0V4cGlyZWQgJiZcbiAgICAgICAgICAgICAgcXVlcnkuaXNJblVzZSAmJlxuICAgICAgICAgICAgICBxdWVyeS5hdXRvUmVmcmVzaE9uQ29uZmlnLndpbmRvd0ZvY3VzXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgcXVlcnkuZXhlY3V0ZSh7IHNraXBDYWNoZTogdHJ1ZSwgX3RyaWdnZXJlZFZpYTogJ2F1dG8nIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2luaXRHYXJiYWdlQ29sbGVjdG9yKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9sb2dTdGF0ZShrZXk6IHN0cmluZyB8IG51bGwsIGl0ZW06IEFueVF1ZXJ5IHwgbnVsbCwgb3BlcmF0aW9uOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuX2NvbmZpZz8uZW5hYmxlQ2hhbmdlTG9nZ2luZykgcmV0dXJuO1xuXG4gICAgY29uc3Qgc3RhdGVBc0pzb246IFJlY29yZDxzdHJpbmcsIEFueVF1ZXJ5PiA9IHt9O1xuXG4gICAgdGhpcy5fc3RvcmUuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xuICAgICAgc3RhdGVBc0pzb25ba2V5XSA9IHZhbHVlO1xuICAgIH0pO1xuXG4gICAgY29uc29sZS5sb2coYCVjWyR7b3BlcmF0aW9ufV0gJHtrZXl9YCwgJ2ZvbnQtd2VpZ2h0OiBib2xkJyk7XG5cbiAgICBjb25zb2xlLmxvZyh7IG9wZXJhdGlvbiwga2V5LCBpdGVtIH0pO1xuICAgIGNvbnNvbGUubG9nKHN0YXRlQXNKc29uKTtcbiAgfVxuXG4gIHByaXZhdGUgX2luaXRHYXJiYWdlQ29sbGVjdG9yKCkge1xuICAgIGlmICh0aGlzLl9nYXJiYWdlQ29sbGVjdG9yICE9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbG9nR2FyYmFnZUNvbGxlY3RvcignU3RhcnQnKTtcblxuICAgIHRoaXMuX2dhcmJhZ2VDb2xsZWN0b3IgPSB3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgdGhpcy5fcnVuR2FyYmFnZUNvbGxlY3RvcigpO1xuICAgIH0sIDE1MDAwKTtcbiAgfVxuXG4gIHByaXZhdGUgX3N0b3BHYXJiYWdlQ29sbGVjdG9yKCkge1xuICAgIGlmICh0aGlzLl9nYXJiYWdlQ29sbGVjdG9yICE9PSBudWxsKSB7XG4gICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbCh0aGlzLl9nYXJiYWdlQ29sbGVjdG9yKTtcbiAgICAgIHRoaXMuX2dhcmJhZ2VDb2xsZWN0b3IgPSBudWxsO1xuICAgICAgdGhpcy5fbG9nR2FyYmFnZUNvbGxlY3RvcignU3RvcCcpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3J1bkdhcmJhZ2VDb2xsZWN0b3IoKSB7XG4gICAgdGhpcy5fbG9nR2FyYmFnZUNvbGxlY3RvcignQ29sbGVjdGluZy4uLicpO1xuXG4gICAgdGhpcy5fc3RvcmUuZm9yRWFjaCgoaXRlbSwga2V5KSA9PiB7XG4gICAgICBpZiAoaXRlbS5pc0V4cGlyZWQgJiYgIWl0ZW0uaXNJblVzZSkge1xuICAgICAgICB0aGlzLnJlbW92ZShrZXkpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nR2FyYmFnZUNvbGxlY3RvcignQ29sbGVjdGlvbiBkb25lJyk7XG5cbiAgICBpZiAoIXRoaXMuX3N0b3JlLnNpemUpIHtcbiAgICAgIHRoaXMuX3N0b3BHYXJiYWdlQ29sbGVjdG9yKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfbG9nR2FyYmFnZUNvbGxlY3RvcihhY3Rpb246IHN0cmluZykge1xuICAgIGlmICghdGhpcy5fY29uZmlnPy5lbmFibGVHYXJiYWdlQ29sbGVjdG9yTG9nZ2luZykgcmV0dXJuO1xuXG4gICAgY29uc29sZS5sb2coYCVjR0M6ICR7YWN0aW9ufWAsICdjb2xvcjogeWVsbG93OyBmb250LXdlaWdodDogYm9sZCcpO1xuICB9XG59XG4iXX0=
@@ -130,6 +130,7 @@ export const serializeBody = (body) => {
130
130
  if (typeof body === 'object' || typeof body === 'boolean' || Array.isArray(body)) {
131
131
  return JSON.stringify(body);
132
132
  }
133
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
133
134
  return body.toString();
134
135
  };
135
136
  export const transformMethod = (config) => {
@@ -237,4 +238,4 @@ export const shouldRetryRequest = (config) => {
237
238
  }
238
239
  return { retry: false };
239
240
  };
240
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL3JlcXVlc3QvcmVxdWVzdC51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxpQkFBaUIsRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM1RyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFVaEUsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsS0FBYyxFQUFXLEVBQUUsQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNuRyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUFjLEVBQVcsRUFBRSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO0FBRTNHLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFjLEtBQWMsRUFBNEIsRUFBRSxDQUN0RixLQUFLLFlBQVksTUFBTSxJQUFJLFFBQVEsSUFBSSxLQUFLLElBQUksWUFBWSxJQUFJLEtBQUssSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDO0FBRTFGLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLE9BTTFCLEVBQUUsRUFBRTtJQUNILElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDOUIsTUFBTSxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDM0M7SUFFRCxJQUFJLEtBQUssR0FBa0IsSUFBSSxDQUFDO0lBRWhDLElBQUksT0FBTyxPQUFPLENBQUMsS0FBSyxLQUFLLFVBQVUsRUFBRTtRQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUs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QU8sQ0FBQyxhQUFhLENBQUM7WUFDN0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7WUFDL0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUVsQyxJQUFJLFVBQVUsRUFBRTtZQUNkLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDMUMsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNoRjtRQUVELE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxDQUFDO0tBQ2xEO0lBRUQsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUMxQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbnZhbGlkQmFzZVJvdXRlRXJyb3IsIGludmFsaWRSb3V0ZUVycm9yLCBwYXRoUGFyYW1zTWlzc2luZ0luUm91dGVGdW5jdGlvbkVycm9yIH0gZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCB7IGlzU3ltZm9ueVBhZ2VyZmFudGFPdXRPZlJhbmdlRXJyb3IgfSBmcm9tICcuLi9zeW1mb255JztcbmltcG9ydCB7XG4gIEJ1aWxkUXVlcnlTdHJpbmdDb25maWcsXG4gIE1ldGhvZCxcbiAgUXVlcnlQYXJhbXMsXG4gIFJlcXVlc3RFcnJvcixcbiAgUmVxdWVzdEhlYWRlcnMsXG4gIFJlcXVlc3RSZXRyeUZuLFxufSBmcm9tICcuL3JlcXVlc3QudHlwZXMnO1xuXG5leHBvcnQgY29uc3QgaXNOYU4gPSAodmFsdWU6IHVua25vd24pOiBib29sZWFuID0+IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgTnVtYmVyLmlzTmFOKHZhbHVlKTtcbmV4cG9ydCBjb25zdCBpc0VtcHR5U3RyaW5nID0gKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiA9PiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLnRyaW0oKSA9PT0gJyc7XG5cbmV4cG9ydCBjb25zdCBpc1JlcXVlc3RFcnJvciA9IDxUID0gdW5rbm93bj4oZXJyb3I6IHVua25vd24pOiBlcnJvciBpcyBSZXF1ZXN0RXJyb3I8VD4gPT5cbiAgZXJyb3IgaW5zdGFuY2VvZiBPYmplY3QgJiYgJ3N0YXR1cycgaW4gZXJyb3IgJiYgJ3N0YXR1c1RleHQnIGluIGVycm9yICYmICd1cmwnIGluIGVycm9yO1xuXG5leHBvcnQgY29uc3QgYnVpbGRSb3V0ZSA9IChvcHRpb25zOiB7XG4gIGJhc2U6IHN0cmluZztcbiAgcm91dGU6ICgoYXJnczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IHN0cmluZykgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xuICBwYXRoUGFyYW1zPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHF1ZXJ5UGFyYW1zPzogUXVlcnlQYXJhbXM7XG4gIHF1ZXJ5UGFyYW1Db25maWc/OiBCdWlsZFF1ZXJ5U3RyaW5nQ29uZmlnO1xufSkgPT4ge1xuICBpZiAob3B0aW9ucy5iYXNlLmVuZHNXaXRoKCcvJykpIHtcbiAgICB0aHJvdyBpbnZhbGlkQmFzZVJvdXRlRXJyb3Iob3B0aW9ucy5iYXNlKTtcbiAgfVxuXG4gIGxldCByb3V0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgaWYgKHR5cGVvZiBvcHRpb25zLnJvdXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgaWYgKCFvcHRpb25zLnBhdGhQYXJhbXMpIHtcbiAgICAgIHRocm93IHBhdGhQYXJhbXNNaXNzaW5nSW5Sb3V0ZUZ1bmN0aW9uRXJyb3Iob3B0aW9ucy5yb3V0ZSh7fSkpO1xuICAgIH1cblxuICAgIHJvdXRlID0gb3B0aW9ucy5yb3V0ZShvcHRpb25zLnBhdGhQYXJhbXMpO1xuICB9IGVsc2Uge1xuICAgIHJvdXRlID0gb3B0aW9ucy5yb3V0ZSA/PyBudWxsO1xuICB9XG5cbiAgaWYgKHJvdXRlICYmICFyb3V0ZS5zdGFydHNXaXRoKCcvJykpIHtcbiAgICB0aHJvdyBpbnZhbGlkUm91dGVFcnJvcihyb3V0ZSk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5xdWVyeVBhcmFtcykge1xuICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gYnVpbGRRdWVyeVN0cmluZyhvcHRpb25zLnF1ZXJ5UGFyYW1zLCBvcHRpb25zLnF1ZXJ5UGFyYW1Db25maWcpO1xuXG4gICAgaWYgKHF1ZXJ5U3RyaW5nKSB7XG4gICAgICByb3V0ZSA9IHJvdXRlID8gYCR7cm91dGV9PyR7cXVlcnlTdHJpbmd9YCA6IGAvPyR7cXVlcnlTdHJpbmd9YDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYCR7b3B0aW9ucy5iYXNlfSR7cm91dGUgPz8gJyd9YDtcbn07XG5cbmV4cG9ydCBjb25zdCBidWlsZFF1ZXJ5U3RyaW5nID0gKHBhcmFtczogUXVlcnlQYXJhbXMsIGNvbmZpZz86IEJ1aWxkUXVlcnlTdHJpbmdDb25maWcpOiBzdHJpbmcgfCBudWxsID0+IHtcbiAgY29uc3Qgb2JqZWN0Tm90YXRpb24gPSBjb25maWc/Lm9iamVjdE5vdGF0aW9uID8/ICdicmFja2V0JztcbiAgY29uc3Qgd3JpdGVBcnJheUluZGV4ZXMgPSBjb25maWc/LndyaXRlQXJyYXlJbmRleGVzID8/IGZhbHNlO1xuICBjb25zdCBpZ25vcmVkVmFsdWVzID0gY29uZmlnPy5pZ25vcmVkVmFsdWVzID8/IFt1bmRlZmluZWQsIG51bGwsIEluZmluaXR5LCAtSW5maW5pdHldO1xuICBjb25zdCBpZ25vcmVkVmFsdWVzRm5zID0gY29uZmlnPy5pZ25vcmVkVmFsdWVzRm5zID8/IFtpc05hTiwgaXNFbXB0eVN0cmluZ107XG5cbiAgY29uc3QgcXVlcnlQYXJhbXM6IHN0cmluZ1tdID0gW107XG5cbiAgZnVuY3Rpb24gcHJvY2Vzc1ZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bikge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgbGV0IGN1cnJlbnRGaWx0ZXJlZEluZGV4ID0gMDtcbiAgICAgIGZvciAoY29uc3QgYXJyYXlWYWx1ZSBvZiB2YWx1ZSkge1xuICAgICAgICBjb25zdCBuZXN0ZWRLZXkgPSB3cml0ZUFycmF5SW5kZXhlcyA/IGAke2tleX1bJHtjdXJyZW50RmlsdGVyZWRJbmRleH1dYCA6IGAke2tleX1bXWA7XG5cbiAgICAgICAgY29uc3QgZGlkQWRkVmFsdWUgPSBwcm9jZXNzVmFsdWUobmVzdGVkS2V5LCBhcnJheVZhbHVlKTtcblxuICAgICAgICBpZiAoZGlkQWRkVmFsdWUpIHtcbiAgICAgICAgICBjdXJyZW50RmlsdGVyZWRJbmRleCsrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgZm9yIChjb25zdCBbb2JqS2V5LCB2YWxdIG9mIE9iamVjdC5lbnRyaWVzKHZhbHVlKSkge1xuICAgICAgICBjb25zdCBuZXN0ZWRLZXkgPSBvYmplY3ROb3RhdGlvbiA9PT0gJ2RvdCcgPyBgJHtrZXl9LiR7b2JqS2V5fWAgOiBgJHtrZXl9WyR7b2JqS2V5fV1gO1xuICAgICAgICBwcm9jZXNzVmFsdWUobmVzdGVkS2V5LCB2YWwpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGlnbm9yZWRWYWx1ZXMuaW5jbHVkZXModmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlnbm9yZWRWYWx1ZXNGbnMuc29tZSgoZm4pID0+IGZuKHZhbHVlKSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBlbmNvZGVkS2V5ID0gZW5jb2RlVVJJQ29tcG9uZW50KGtleSk7XG4gICAgICBjb25zdCBlbmNvZGVkVmFsdWUgPSBlbmNvZGVVUklDb21wb25lbnQodmFsdWUgYXMgc3RyaW5nKTtcblxuICAgICAgcXVlcnlQYXJhbXMucHVzaChgJHtlbmNvZGVkS2V5fT0ke2VuY29kZWRWYWx1ZX1gKTtcblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgZm9yIChjb25zdCBba2V5LCB2YWxdIG9mIE9iamVjdC5lbnRyaWVzKHBhcmFtcykpIHtcbiAgICBwcm9jZXNzVmFsdWUoa2V5LCB2YWwpO1xuICB9XG5cbiAgcmV0dXJuIHF1ZXJ5UGFyYW1zLmxlbmd0aCA/IHF1ZXJ5UGFyYW1zLmpvaW4oJyYnKSA6IG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgZXh0cmFjdEV4cGlyZXNJblNlY29uZHMgPSAoaGVhZGVyczogUmVxdWVzdEhlYWRlcnMpID0+IHtcbiAgY29uc3QgY2FjaGVDb250cm9sID0gaGVhZGVyc1snY2FjaGUtY29udHJvbCddO1xuICBjb25zdCBhZ2UgPSBoZWFkZXJzWydhZ2UnXTtcbiAgY29uc3QgZXhwaXJlcyA9IGhlYWRlcnNbJ2V4cGlyZXMnXTtcblxuICAvLyBJbiBzZWNvbmRzXG4gIGxldCBleHBpcmVzSW46IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBsZXQgbWF4QWdlOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICBpZiAoY2FjaGVDb250cm9sPy5pbmNsdWRlcygnbm8tY2FjaGUnKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKGNhY2hlQ29udHJvbD8uaW5jbHVkZXMoJ21heC1hZ2UnKSkge1xuICAgIG1heEFnZSA9IHBhcnNlSW50KGNhY2hlQ29udHJvbC5zcGxpdCgnbWF4LWFnZT0nKVsxXSk7XG4gIH0gZWxzZSBpZiAoY2FjaGVDb250cm9sPy5pbmNsdWRlcygncy1tYXhhZ2UnKSkge1xuICAgIG1heEFnZSA9IHBhcnNlSW50KGNhY2hlQ29udHJvbC5zcGxpdCgncy1tYXhhZ2U9JylbMV0pO1xuICB9XG5cbiAgaWYgKG1heEFnZSAmJiBhZ2UpIHtcbiAgICBjb25zdCBhZ2VTZWNvbmRzID0gcGFyc2VJbnQoYWdlKTtcblxuICAgIGV4cGlyZXNJbiA9IG1heEFnZSAtIGFnZVNlY29uZHM7XG4gIH0gZWxzZSBpZiAobWF4QWdlKSB7XG4gICAgZXhwaXJlc0luID0gbWF4QWdlIC8gMjsgLy8gV2UgYXNzdW1lIHRoZSByZXNwb25zZSBpcyBoYWxmIHdheSB0byBpdHMgZXhwaXJhdGlvblxuICB9IGVsc2UgaWYgKGV4cGlyZXMpIHtcbiAgICAvLyBVc2VkIGJ5IHNvbWUgYXBpcyB0byB0ZWxsIHRoZSByZXNwb25zZSB3aWxsIG5ldmVyIGV4cGlyZVxuICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBsZXQgdGhlIHJlc3BvbnNlIGV4cGlyZSBhZnRlciAxIGhvdXJcbiAgICBpZiAoZXhwaXJlcyA9PT0gJy0xJykge1xuICAgICAgZXhwaXJlc0luID0gMzYwMDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZXhwaXJlc0RhdGUgPSBuZXcgRGF0ZShleHBpcmVzKTtcblxuICAgICAgLy8gY2hlY2sgaWYgdGhlIGRhdGUgaXMgdmFsaWRcbiAgICAgIGlmIChleHBpcmVzRGF0ZS50b1N0cmluZygpICE9PSAnSW52YWxpZCBEYXRlJykge1xuICAgICAgICBleHBpcmVzSW4gPSBNYXRoLmZsb29yKChleHBpcmVzRGF0ZS5nZXRUaW1lKCkgLSBEYXRlLm5vdygpKSAvIDEwMDApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBleHBpcmVzSW47XG59O1xuXG5leHBvcnQgY29uc3QgYnVpbGRUaW1lc3RhbXBGcm9tU2Vjb25kcyA9IChzZWNvbmRzOiBudW1iZXIgfCBudWxsKSA9PiB7XG4gIGlmIChzZWNvbmRzID09PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gbmV3IERhdGUoRGF0ZS5ub3coKSArIHNlY29uZHMgKiAxMDAwKS5nZXRUaW1lKCk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2VyaWFsaXplQm9keSA9IChib2R5OiB1bmtub3duKTogQXJyYXlCdWZmZXIgfCBVUkxTZWFyY2hQYXJhbXMgfCBCbG9iIHwgRm9ybURhdGEgfCBzdHJpbmcgfCBudWxsID0+IHtcbiAgaWYgKGJvZHkgPT09IG51bGwgfHwgYm9keSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAoXG4gICAgYm9keSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyIHx8XG4gICAgYm9keSBpbnN0YW5jZW9mIEJsb2IgfHxcbiAgICBib2R5IGluc3RhbmNlb2YgRm9ybURhdGEgfHxcbiAgICBib2R5IGluc3RhbmNlb2YgVVJMU2VhcmNoUGFyYW1zIHx8XG4gICAgdHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnXG4gICkge1xuICAgIHJldHVybiBib2R5O1xuICB9XG5cbiAgaWYgKHR5cGVvZiBib2R5ID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgYm9keSA9PT0gJ2Jvb2xlYW4nIHx8IEFycmF5LmlzQXJyYXkoYm9keSkpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoYm9keSk7XG4gIH1cblxuICByZXR1cm4gKGJvZHkgYXMgYW55KS50b1N0cmluZygpO1xufTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybU1ldGhvZCA9IChjb25maWc6IHsgbWV0aG9kOiBNZXRob2Q7IHRyYW5zZmVyVmlhPzogJ0dFVCcgfCAnUE9TVCcgfSkgPT4ge1xuICBpZiAoY29uZmlnLm1ldGhvZCA9PT0gJ0dRTF9RVUVSWScgfHwgY29uZmlnLm1ldGhvZCA9PT0gJ0dRTF9NVVRBVEUnKSB7XG4gICAgaWYgKCFjb25maWcudHJhbnNmZXJWaWEpIHtcbiAgICAgIHJldHVybiAnUE9TVCc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbmZpZy50cmFuc2ZlclZpYTtcbiAgfVxuXG4gIHJldHVybiBjb25maWcubWV0aG9kO1xufTtcblxuZXhwb3J0IGNvbnN0IGRldGVjdENvbnRlbnRUeXBlSGVhZGVyID0gKGJvZHk6IHVua25vd24pID0+IHtcbiAgLy8gQW4gZW1wdHkgYm9keSBoYXMgbm8gY29udGVudCB0eXBlLlxuICBpZiAoYm9keSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIC8vIEZvcm1EYXRhIGJvZGllcyByZWx5IG9uIHRoZSBicm93c2VyJ3MgY29udGVudCB0eXBlIGFzc2lnbm1lbnQuXG4gIGlmIChib2R5IGluc3RhbmNlb2YgRm9ybURhdGEpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICAvLyBCbG9icyB1c3VhbGx5IGhhdmUgdGhlaXIgb3duIGNvbnRlbnQgdHlwZS4gSWYgaXQgZG9lc24ndCwgdGhlblxuICAvLyBubyB0eXBlIGNhbiBiZSBpbmZlcnJlZC5cbiAgaWYgKGJvZHkgaW5zdGFuY2VvZiBCbG9iKSB7XG4gICAgcmV0dXJuIGJvZHkudHlwZSB8fCBudWxsO1xuICB9XG4gIC8vIEFycmF5IGJ1ZmZlcnMgaGF2ZSB1bmtub3duIGNvbnRlbnRzIGFuZCB0aHVzIG5vIHR5cGUgY2FuIGJlIGluZmVycmVkLlxuICBpZiAoYm9keSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgLy8gVGVjaG5pY2FsbHksIHN0cmluZ3MgY291bGQgYmUgYSBmb3JtIG9mIEpTT04gZGF0YSwgYnV0IGl0J3Mgc2FmZSBlbm91Z2hcbiAgLy8gdG8gYXNzdW1lIHRoZXkncmUgcGxhaW4gc3RyaW5ncy5cbiAgaWYgKHR5cGVvZiBib2R5ID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiAndGV4dC9wbGFpbic7XG4gIH1cblxuICAvLyBBcnJheXMsIG9iamVjdHMsIGJvb2xlYW4gYW5kIG51bWJlcnMgd2lsbCBiZSBlbmNvZGVkIGFzIEpTT04uXG4gIGlmICh0eXBlb2YgYm9keSA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIGJvZHkgPT09ICdudW1iZXInIHx8IHR5cGVvZiBib2R5ID09PSAnYm9vbGVhbicpIHtcbiAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL2pzb24nO1xuICB9XG4gIC8vIE5vIHR5cGUgY291bGQgYmUgaW5mZXJyZWQuXG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGhhc0hlYWRlciA9IChoZWFkZXJzOiBSZXF1ZXN0SGVhZGVycywgaGVhZGVyOiBzdHJpbmcpID0+IHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKGhlYWRlcnMpLnNvbWUoKGtleSkgPT4ga2V5LnRvTG93ZXJDYXNlKCkgPT09IGhlYWRlci50b0xvd2VyQ2FzZSgpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBmb3JFYWNoSGVhZGVyID0gKGhlYWRlcnM6IFJlcXVlc3RIZWFkZXJzLCBjYWxsYmFjazogKHZhbHVlOiBzdHJpbmcsIGtleTogc3RyaW5nKSA9PiB2b2lkKSA9PiB7XG4gIE9iamVjdC5lbnRyaWVzKGhlYWRlcnMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgIGNhbGxiYWNrKGtleSwgdmFsdWUpO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBwYXJzZUFsbFhoclJlc3BvbnNlSGVhZGVycyA9ICh4aHI6IFhNTEh0dHBSZXF1ZXN0KSA9PiB7XG4gIGNvbnN0IGhlYWRlcnMgPSB4aHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCk7XG4gIGNvbnN0IHBhcnNlZEhlYWRlcnM6IFJlcXVlc3RIZWFkZXJzID0ge307XG5cbiAgZm9yIChjb25zdCBsaW5lIG9mIGhlYWRlcnMuc3BsaXQoJ1xcbicpKSB7XG4gICAgY29uc3QgaW5kZXggPSBsaW5lLmluZGV4T2YoJzonKTtcbiAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICBjb25zdCBuYW1lID0gbGluZS5zbGljZSgwLCBpbmRleCk7XG4gICAgICBjb25zdCBrZXkgPSBuYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICBjb25zdCB2YWx1ZSA9IGxpbmUuc2xpY2UoaW5kZXggKyAxKS50cmltKCk7XG5cbiAgICAgIHBhcnNlZEhlYWRlcnNba2V5XSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwYXJzZWRIZWFkZXJzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlc3BvbnNlVXJsID0gKHhocjogWE1MSHR0cFJlcXVlc3QpOiBzdHJpbmcgfCBudWxsID0+IHtcbiAgaWYgKCdyZXNwb25zZVVSTCcgaW4geGhyICYmIHhoci5yZXNwb25zZVVSTCkge1xuICAgIHJldHVybiB4aHIucmVzcG9uc2VVUkw7XG4gIH1cbiAgaWYgKC9eWC1SZXF1ZXN0LVVSTDovbS50ZXN0KHhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSkpIHtcbiAgICByZXR1cm4geGhyLmdldFJlc3BvbnNlSGVhZGVyKCdYLVJlcXVlc3QtVVJMJyk7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3Qgc2hvdWxkUmV0cnlSZXF1ZXN0OiBSZXF1ZXN0UmV0cnlGbiA9IChjb25maWcpID0+IHtcbiAgY29uc3QgZGVmYXVsdFJldHJ5RGVsYXkgPSAxMDAwICsgMTAwMCAqIGNvbmZpZy5jdXJyZW50UmV0cnlDb3VudDtcblxuICBpZiAoY29uZmlnLmN1cnJlbnRSZXRyeUNvdW50ID4gMykge1xuICAgIHJldHVybiB7IHJldHJ5OiBmYWxzZSB9O1xuICB9XG5cbiAgaWYgKCFpc1JlcXVlc3RFcnJvcihjb25maWcuZXJyb3IpKSB7XG4gICAgcmV0dXJuIHsgcmV0cnk6IGZhbHNlIH07XG4gIH1cblxuICBjb25zdCB7IHN0YXR1cywgZGV0YWlsIH0gPSBjb25maWcuZXJyb3I7XG5cbiAgLy8gUmV0cnkgb24gNXh4IGVycm9yc1xuICBpZiAoc3RhdHVzID49IDUwMCkge1xuICAgIC8vIERvbid0IHJldHJ5IGlmIGEgcmVxdWVzdGVkIHBhZ2UgaXMgb3V0IG9mIHJhbmdlXG4gICAgaWYgKGlzU3ltZm9ueVBhZ2VyZmFudGFPdXRPZlJhbmdlRXJyb3IoZGV0YWlsKSkge1xuICAgICAgcmV0dXJuIHsgcmV0cnk6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgcmV0cnk6IHRydWUsIGRlbGF5OiBkZWZhdWx0UmV0cnlEZWxheSB9O1xuICB9XG5cbiAgLy8gUmV0cnkgb24gNDA4IG9yIDQyNSBlcnJvcnNcbiAgaWYgKHN0YXR1cyA9PT0gSHR0cFN0YXR1c0NvZGUuUmVxdWVzdFRpbWVvdXQgfHwgc3RhdHVzID09PSBIdHRwU3RhdHVzQ29kZS5Ub29FYXJseSkge1xuICAgIHJldHVybiB7IHJldHJ5OiB0cnVlLCBkZWxheTogZGVmYXVsdFJldHJ5RGVsYXkgfTtcbiAgfVxuXG4gIC8vIFJldHJ5IG9uIDQyOSBlcnJvcnNcbiAgaWYgKHN0YXR1cyA9PT0gSHR0cFN0YXR1c0NvZGUuVG9vTWFueVJlcXVlc3RzKSB7XG4gICAgY29uc3QgcmV0cnlBZnRlciA9XG4gICAgICBjb25maWcuaGVhZGVyc1sncmV0cnktYWZ0ZXInXSB8fFxuICAgICAgY29uZmlnLmhlYWRlcnNbJ1JldHJ5LUFmdGVyJ10gfHxcbiAgICAgIGNvbmZpZy5oZWFkZXJzWyd4LXJldHJ5LWFmdGVyJ10gfHxcbiAgICAgIGNvbmZpZy5oZWFkZXJzWydYLVJldHJ5LUFmdGVyJ107XG5cbiAgICBpZiAocmV0cnlBZnRlcikge1xuICAgICAgY29uc3QgZGVsYXkgPSBwYXJzZUludChyZXRyeUFmdGVyKSAqIDEwMDA7XG4gICAgICByZXR1cm4geyByZXRyeTogdHJ1ZSwgZGVsYXk6IE51bWJlci5pc05hTihkZWxheSkgPyBkZWZhdWx0UmV0cnlEZWxheSA6IGRlbGF5IH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgcmV0cnk6IHRydWUsIGRlbGF5OiBkZWZhdWx0UmV0cnlEZWxheSB9O1xuICB9XG5cbiAgcmV0dXJuIHsgcmV0cnk6IGZhbHNlIH07XG59O1xuXG5leHBvcnQgY29uc3QgZW51bSBIdHRwU3RhdHVzQ29kZSB7XG4gIFVua25vd24gPSAwLFxuXG4gIENvbnRpbnVlID0gMTAwLFxuICBTd2l0Y2hpbmdQcm90b2NvbHMgPSAxMDEsXG4gIFByb2Nlc3NpbmcgPSAxMDIsXG4gIEVhcmx5SGludHMgPSAxMDMsXG5cbiAgT2sgPSAyMDAsXG4gIENyZWF0ZWQgPSAyMDEsXG4gIEFjY2VwdGVkID0gMjAyLFxuICBOb25BdXRob3JpdGF0aXZlSW5mb3JtYXRpb24gPSAyMDMsXG4gIE5vQ29udGVudCA9IDIwNCxcbiAgUmVzZXRDb250ZW50ID0gMjA1LFxuICBQYXJ0aWFsQ29udGVudCA9IDIwNixcbiAgTXVsdGlTdGF0dXMgPSAyMDcsXG4gIEFscmVhZHlSZXBvcnRlZCA9IDIwOCxcbiAgSW1Vc2VkID0gMjI2LFxuXG4gIE11bHRpcGxlQ2hvaWNlcyA9IDMwMCxcbiAgTW92ZWRQZXJtYW5lbnRseSA9IDMwMSxcbiAgRm91bmQgPSAzMDIsXG4gIFNlZU90aGVyID0gMzAzLFxuICBOb3RNb2RpZmllZCA9IDMwNCxcbiAgVXNlUHJveHkgPSAzMDUsXG4gIFVudXNlZCA9IDMwNixcbiAgVGVtcG9yYXJ5UmVkaXJlY3QgPSAzMDcsXG4gIFBlcm1hbmVudFJlZGlyZWN0ID0gMzA4LFxuXG4gIEJhZFJlcXVlc3QgPSA0MDAsXG4gIFVuYXV0aG9yaXplZCA9IDQwMSxcbiAgUGF5bWVudFJlcXVpcmVkID0gNDAyLFxuICBGb3JiaWRkZW4gPSA0MDMsXG4gIE5vdEZvdW5kID0gNDA0LFxuICBNZXRob2ROb3RBbGxvd2VkID0gNDA1LFxuICBOb3RBY2NlcHRhYmxlID0gNDA2LFxuICBQcm94eUF1dGhlbnRpY2F0aW9uUmVxdWlyZWQgPSA0MDcsXG4gIFJlcXVlc3RUaW1lb3V0ID0gNDA4LFxuICBDb25mbGljdCA9IDQwOSxcbiAgR29uZSA9IDQxMCxcbiAgTGVuZ3RoUmVxdWlyZWQgPSA0MTEsXG4gIFByZWNvbmRpdGlvbkZhaWxlZCA9IDQxMixcbiAgUGF5bG9hZFRvb0xhcmdlID0gNDEzLFxuICBVcmlUb29Mb25nID0gNDE0LFxuICBVbnN1cHBvcnRlZE1lZGlhVHlwZSA9IDQxNSxcbiAgUmFuZ2VOb3RTYXRpc2ZpYWJsZSA9IDQxNixcbiAgRXhwZWN0YXRpb25GYWlsZWQgPSA0MTcsXG4gIEltQVRlYXBvdCA9IDQxOCxcbiAgTWlzZGlyZWN0ZWRSZXF1ZXN0ID0gNDIxLFxuICBVbnByb2Nlc3NhYmxlRW50aXR5ID0gNDIyLFxuICBMb2NrZWQgPSA0MjMsXG4gIEZhaWxlZERlcGVuZGVuY3kgPSA0MjQsXG4gIFRvb0Vhcmx5ID0gNDI1LFxuICBVcGdyYWRlUmVxdWlyZWQgPSA0MjYsXG4gIFByZWNvbmRpdGlvblJlcXVpcmVkID0gNDI4LFxuICBUb29NYW55UmVxdWVzdHMgPSA0MjksXG4gIFJlcXVlc3RIZWFkZXJGaWVsZHNUb29MYXJnZSA9IDQzMSxcbiAgVW5hdmFpbGFibGVGb3JMZWdhbFJlYXNvbnMgPSA0NTEsXG5cbiAgSW50ZXJuYWxTZXJ2ZXJFcnJvciA9IDUwMCxcbiAgTm90SW1wbGVtZW50ZWQgPSA1MDEsXG4gIEJhZEdhdGV3YXkgPSA1MDIsXG4gIFNlcnZpY2VVbmF2YWlsYWJsZSA9IDUwMyxcbiAgR2F0ZXdheVRpbWVvdXQgPSA1MDQsXG4gIEh0dHBWZXJzaW9uTm90U3VwcG9ydGVkID0gNTA1LFxuICBWYXJpYW50QWxzb05lZ290aWF0ZXMgPSA1MDYsXG4gIEluc3VmZmljaWVudFN0b3JhZ2UgPSA1MDcsXG4gIExvb3BEZXRlY3RlZCA9IDUwOCxcbiAgTm90RXh0ZW5kZWQgPSA1MTAsXG4gIE5ldHdvcmtBdXRoZW50aWNhdGlvblJlcXVpcmVkID0gNTExLFxufVxuIl19
241
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xdWVyeS9zcmMvbGliL3JlcXVlc3QvcmVxdWVzdC51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxpQkFBaUIsRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM1RyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFVaEUsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsS0FBYyxFQUFXLEVBQUUsQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNuRyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUFjLEVBQVcsRUFBRSxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO0FBRTNHLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFjLEtBQWMsRUFBNEIsRUFBRSxDQUN0RixLQUFLLFlBQVksTUFBTSxJQUFJLFFBQVEsSUFBSSxLQUFLLElBQUksWUFBWSxJQUFJLEtBQUssSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDO0FBRTFGLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLE9BTTFCLEVBQUUsRUFBRTtJQUNILElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDOUIsTUFBTSxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDM0M7SUFFRCxJQUFJLEtBQUssR0FBa0IsSUFBSSxDQUFDO0lBRWhDLElBQUksT0FBTyxPQUFPLENBQUMsS0FBSyxLQUFLLFVBQVUsRUFBRTtRQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUs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LE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO1lBQzdCLE1BQU0sQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDO1lBQy9CLE1BQU0sQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFbEMsSUFBSSxVQUFVLEVBQUU7WUFDZCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQzFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDaEY7UUFFRCxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztLQUNsRDtJQUVELE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDMUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW52YWxpZEJhc2VSb3V0ZUVycm9yLCBpbnZhbGlkUm91dGVFcnJvciwgcGF0aFBhcmFtc01pc3NpbmdJblJvdXRlRnVuY3Rpb25FcnJvciB9IGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgeyBpc1N5bWZvbnlQYWdlcmZhbnRhT3V0T2ZSYW5nZUVycm9yIH0gZnJvbSAnLi4vc3ltZm9ueSc7XG5pbXBvcnQge1xuICBCdWlsZFF1ZXJ5U3RyaW5nQ29uZmlnLFxuICBNZXRob2QsXG4gIFF1ZXJ5UGFyYW1zLFxuICBSZXF1ZXN0RXJyb3IsXG4gIFJlcXVlc3RIZWFkZXJzLFxuICBSZXF1ZXN0UmV0cnlGbixcbn0gZnJvbSAnLi9yZXF1ZXN0LnR5cGVzJztcblxuZXhwb3J0IGNvbnN0IGlzTmFOID0gKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiA9PiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIE51bWJlci5pc05hTih2YWx1ZSk7XG5leHBvcnQgY29uc3QgaXNFbXB0eVN0cmluZyA9ICh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4gPT4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS50cmltKCkgPT09ICcnO1xuXG5leHBvcnQgY29uc3QgaXNSZXF1ZXN0RXJyb3IgPSA8VCA9IHVua25vd24+KGVycm9yOiB1bmtub3duKTogZXJyb3IgaXMgUmVxdWVzdEVycm9yPFQ+ID0+XG4gIGVycm9yIGluc3RhbmNlb2YgT2JqZWN0ICYmICdzdGF0dXMnIGluIGVycm9yICYmICdzdGF0dXNUZXh0JyBpbiBlcnJvciAmJiAndXJsJyBpbiBlcnJvcjtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkUm91dGUgPSAob3B0aW9uczoge1xuICBiYXNlOiBzdHJpbmc7XG4gIHJvdXRlOiAoKGFyZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiBzdHJpbmcpIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGF0aFBhcmFtcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBxdWVyeVBhcmFtcz86IFF1ZXJ5UGFyYW1zO1xuICBxdWVyeVBhcmFtQ29uZmlnPzogQnVpbGRRdWVyeVN0cmluZ0NvbmZpZztcbn0pID0+IHtcbiAgaWYgKG9wdGlvbnMuYmFzZS5lbmRzV2l0aCgnLycpKSB7XG4gICAgdGhyb3cgaW52YWxpZEJhc2VSb3V0ZUVycm9yKG9wdGlvbnMuYmFzZSk7XG4gIH1cblxuICBsZXQgcm91dGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5yb3V0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGlmICghb3B0aW9ucy5wYXRoUGFyYW1zKSB7XG4gICAgICB0aHJvdyBwYXRoUGFyYW1zTWlzc2luZ0luUm91dGVGdW5jdGlvbkVycm9yKG9wdGlvbnMucm91dGUoe30pKTtcbiAgICB9XG5cbiAgICByb3V0ZSA9IG9wdGlvbnMucm91dGUob3B0aW9ucy5wYXRoUGFyYW1zKTtcbiAgfSBlbHNlIHtcbiAgICByb3V0ZSA9IG9wdGlvbnMucm91dGUgPz8gbnVsbDtcbiAgfVxuXG4gIGlmIChyb3V0ZSAmJiAhcm91dGUuc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgdGhyb3cgaW52YWxpZFJvdXRlRXJyb3Iocm91dGUpO1xuICB9XG5cbiAgaWYgKG9wdGlvbnMucXVlcnlQYXJhbXMpIHtcbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IGJ1aWxkUXVlcnlTdHJpbmcob3B0aW9ucy5xdWVyeVBhcmFtcywgb3B0aW9ucy5xdWVyeVBhcmFtQ29uZmlnKTtcblxuICAgIGlmIChxdWVyeVN0cmluZykge1xuICAgICAgcm91dGUgPSByb3V0ZSA/IGAke3JvdXRlfT8ke3F1ZXJ5U3RyaW5nfWAgOiBgLz8ke3F1ZXJ5U3RyaW5nfWA7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGAke29wdGlvbnMuYmFzZX0ke3JvdXRlID8/ICcnfWA7XG59O1xuXG5leHBvcnQgY29uc3QgYnVpbGRRdWVyeVN0cmluZyA9IChwYXJhbXM6IFF1ZXJ5UGFyYW1zLCBjb25maWc/OiBCdWlsZFF1ZXJ5U3RyaW5nQ29uZmlnKTogc3RyaW5nIHwgbnVsbCA9PiB7XG4gIGNvbnN0IG9iamVjdE5vdGF0aW9uID0gY29uZmlnPy5vYmplY3ROb3RhdGlvbiA/PyAnYnJhY2tldCc7XG4gIGNvbnN0IHdyaXRlQXJyYXlJbmRleGVzID0gY29uZmlnPy53cml0ZUFycmF5SW5kZXhlcyA/PyBmYWxzZTtcbiAgY29uc3QgaWdub3JlZFZhbHVlcyA9IGNvbmZpZz8uaWdub3JlZFZhbHVlcyA/PyBbdW5kZWZpbmVkLCBudWxsLCBJbmZpbml0eSwgLUluZmluaXR5XTtcbiAgY29uc3QgaWdub3JlZFZhbHVlc0ZucyA9IGNvbmZpZz8uaWdub3JlZFZhbHVlc0ZucyA/PyBbaXNOYU4sIGlzRW1wdHlTdHJpbmddO1xuXG4gIGNvbnN0IHF1ZXJ5UGFyYW1zOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGZ1bmN0aW9uIHByb2Nlc3NWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIGxldCBjdXJyZW50RmlsdGVyZWRJbmRleCA9IDA7XG4gICAgICBmb3IgKGNvbnN0IGFycmF5VmFsdWUgb2YgdmFsdWUpIHtcbiAgICAgICAgY29uc3QgbmVzdGVkS2V5ID0gd3JpdGVBcnJheUluZGV4ZXMgPyBgJHtrZXl9WyR7Y3VycmVudEZpbHRlcmVkSW5kZXh9XWAgOiBgJHtrZXl9W11gO1xuXG4gICAgICAgIGNvbnN0IGRpZEFkZFZhbHVlID0gcHJvY2Vzc1ZhbHVlKG5lc3RlZEtleSwgYXJyYXlWYWx1ZSk7XG5cbiAgICAgICAgaWYgKGRpZEFkZFZhbHVlKSB7XG4gICAgICAgICAgY3VycmVudEZpbHRlcmVkSW5kZXgrKztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICAgIGZvciAoY29uc3QgW29iaktleSwgdmFsXSBvZiBPYmplY3QuZW50cmllcyh2YWx1ZSkpIHtcbiAgICAgICAgY29uc3QgbmVzdGVkS2V5ID0gb2JqZWN0Tm90YXRpb24gPT09ICdkb3QnID8gYCR7a2V5fS4ke29iaktleX1gIDogYCR7a2V5fVske29iaktleX1dYDtcbiAgICAgICAgcHJvY2Vzc1ZhbHVlKG5lc3RlZEtleSwgdmFsKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChpZ25vcmVkVmFsdWVzLmluY2x1ZGVzKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChpZ25vcmVkVmFsdWVzRm5zLnNvbWUoKGZuKSA9PiBmbih2YWx1ZSkpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZW5jb2RlZEtleSA9IGVuY29kZVVSSUNvbXBvbmVudChrZXkpO1xuICAgICAgY29uc3QgZW5jb2RlZFZhbHVlID0gZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlIGFzIHN0cmluZyk7XG5cbiAgICAgIHF1ZXJ5UGFyYW1zLnB1c2goYCR7ZW5jb2RlZEtleX09JHtlbmNvZGVkVmFsdWV9YCk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgW2tleSwgdmFsXSBvZiBPYmplY3QuZW50cmllcyhwYXJhbXMpKSB7XG4gICAgcHJvY2Vzc1ZhbHVlKGtleSwgdmFsKTtcbiAgfVxuXG4gIHJldHVybiBxdWVyeVBhcmFtcy5sZW5ndGggPyBxdWVyeVBhcmFtcy5qb2luKCcmJykgOiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGV4dHJhY3RFeHBpcmVzSW5TZWNvbmRzID0gKGhlYWRlcnM6IFJlcXVlc3RIZWFkZXJzKSA9PiB7XG4gIGNvbnN0IGNhY2hlQ29udHJvbCA9IGhlYWRlcnNbJ2NhY2hlLWNvbnRyb2wnXTtcbiAgY29uc3QgYWdlID0gaGVhZGVyc1snYWdlJ107XG4gIGNvbnN0IGV4cGlyZXMgPSBoZWFkZXJzWydleHBpcmVzJ107XG5cbiAgLy8gSW4gc2Vjb25kc1xuICBsZXQgZXhwaXJlc0luOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgbGV0IG1heEFnZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgaWYgKGNhY2hlQ29udHJvbD8uaW5jbHVkZXMoJ25vLWNhY2hlJykpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmIChjYWNoZUNvbnRyb2w/LmluY2x1ZGVzKCdtYXgtYWdlJykpIHtcbiAgICBtYXhBZ2UgPSBwYXJzZUludChjYWNoZUNvbnRyb2wuc3BsaXQoJ21heC1hZ2U9JylbMV0pO1xuICB9IGVsc2UgaWYgKGNhY2hlQ29udHJvbD8uaW5jbHVkZXMoJ3MtbWF4YWdlJykpIHtcbiAgICBtYXhBZ2UgPSBwYXJzZUludChjYWNoZUNvbnRyb2wuc3BsaXQoJ3MtbWF4YWdlPScpWzFdKTtcbiAgfVxuXG4gIGlmIChtYXhBZ2UgJiYgYWdlKSB7XG4gICAgY29uc3QgYWdlU2Vjb25kcyA9IHBhcnNlSW50KGFnZSk7XG5cbiAgICBleHBpcmVzSW4gPSBtYXhBZ2UgLSBhZ2VTZWNvbmRzO1xuICB9IGVsc2UgaWYgKG1heEFnZSkge1xuICAgIGV4cGlyZXNJbiA9IG1heEFnZSAvIDI7IC8vIFdlIGFzc3VtZSB0aGUgcmVzcG9uc2UgaXMgaGFsZiB3YXkgdG8gaXRzIGV4cGlyYXRpb25cbiAgfSBlbHNlIGlmIChleHBpcmVzKSB7XG4gICAgLy8gVXNlZCBieSBzb21lIGFwaXMgdG8gdGVsbCB0aGUgcmVzcG9uc2Ugd2lsbCBuZXZlciBleHBpcmVcbiAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgbGV0IHRoZSByZXNwb25zZSBleHBpcmUgYWZ0ZXIgMSBob3VyXG4gICAgaWYgKGV4cGlyZXMgPT09ICctMScpIHtcbiAgICAgIGV4cGlyZXNJbiA9IDM2MDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGV4cGlyZXNEYXRlID0gbmV3IERhdGUoZXhwaXJlcyk7XG5cbiAgICAgIC8vIGNoZWNrIGlmIHRoZSBkYXRlIGlzIHZhbGlkXG4gICAgICBpZiAoZXhwaXJlc0RhdGUudG9TdHJpbmcoKSAhPT0gJ0ludmFsaWQgRGF0ZScpIHtcbiAgICAgICAgZXhwaXJlc0luID0gTWF0aC5mbG9vcigoZXhwaXJlc0RhdGUuZ2V0VGltZSgpIC0gRGF0ZS5ub3coKSkgLyAxMDAwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZXhwaXJlc0luO1xufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkVGltZXN0YW1wRnJvbVNlY29uZHMgPSAoc2Vjb25kczogbnVtYmVyIHwgbnVsbCkgPT4ge1xuICBpZiAoc2Vjb25kcyA9PT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBEYXRlKERhdGUubm93KCkgKyBzZWNvbmRzICogMTAwMCkuZ2V0VGltZSgpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNlcmlhbGl6ZUJvZHkgPSAoYm9keTogdW5rbm93bik6IEFycmF5QnVmZmVyIHwgVVJMU2VhcmNoUGFyYW1zIHwgQmxvYiB8IEZvcm1EYXRhIHwgc3RyaW5nIHwgbnVsbCA9PiB7XG4gIGlmIChib2R5ID09PSBudWxsIHx8IGJvZHkgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKFxuICAgIGJvZHkgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciB8fFxuICAgIGJvZHkgaW5zdGFuY2VvZiBCbG9iIHx8XG4gICAgYm9keSBpbnN0YW5jZW9mIEZvcm1EYXRhIHx8XG4gICAgYm9keSBpbnN0YW5jZW9mIFVSTFNlYXJjaFBhcmFtcyB8fFxuICAgIHR5cGVvZiBib2R5ID09PSAnc3RyaW5nJ1xuICApIHtcbiAgICByZXR1cm4gYm9keTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgYm9keSA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIGJvZHkgPT09ICdib29sZWFuJyB8fCBBcnJheS5pc0FycmF5KGJvZHkpKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGJvZHkpO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgcmV0dXJuIChib2R5IGFzIGFueSkudG9TdHJpbmcoKTtcbn07XG5cbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm1NZXRob2QgPSAoY29uZmlnOiB7IG1ldGhvZDogTWV0aG9kOyB0cmFuc2ZlclZpYT86ICdHRVQnIHwgJ1BPU1QnIH0pID0+IHtcbiAgaWYgKGNvbmZpZy5tZXRob2QgPT09ICdHUUxfUVVFUlknIHx8IGNvbmZpZy5tZXRob2QgPT09ICdHUUxfTVVUQVRFJykge1xuICAgIGlmICghY29uZmlnLnRyYW5zZmVyVmlhKSB7XG4gICAgICByZXR1cm4gJ1BPU1QnO1xuICAgIH1cblxuICAgIHJldHVybiBjb25maWcudHJhbnNmZXJWaWE7XG4gIH1cblxuICByZXR1cm4gY29uZmlnLm1ldGhvZDtcbn07XG5cbmV4cG9ydCBjb25zdCBkZXRlY3RDb250ZW50VHlwZUhlYWRlciA9IChib2R5OiB1bmtub3duKSA9PiB7XG4gIC8vIEFuIGVtcHR5IGJvZHkgaGFzIG5vIGNvbnRlbnQgdHlwZS5cbiAgaWYgKGJvZHkgPT09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICAvLyBGb3JtRGF0YSBib2RpZXMgcmVseSBvbiB0aGUgYnJvd3NlcidzIGNvbnRlbnQgdHlwZSBhc3NpZ25tZW50LlxuICBpZiAoYm9keSBpbnN0YW5jZW9mIEZvcm1EYXRhKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgLy8gQmxvYnMgdXN1YWxseSBoYXZlIHRoZWlyIG93biBjb250ZW50IHR5cGUuIElmIGl0IGRvZXNuJ3QsIHRoZW5cbiAgLy8gbm8gdHlwZSBjYW4gYmUgaW5mZXJyZWQuXG4gIGlmIChib2R5IGluc3RhbmNlb2YgQmxvYikge1xuICAgIHJldHVybiBib2R5LnR5cGUgfHwgbnVsbDtcbiAgfVxuICAvLyBBcnJheSBidWZmZXJzIGhhdmUgdW5rbm93biBjb250ZW50cyBhbmQgdGh1cyBubyB0eXBlIGNhbiBiZSBpbmZlcnJlZC5cbiAgaWYgKGJvZHkgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIC8vIFRlY2huaWNhbGx5LCBzdHJpbmdzIGNvdWxkIGJlIGEgZm9ybSBvZiBKU09OIGRhdGEsIGJ1dCBpdCdzIHNhZmUgZW5vdWdoXG4gIC8vIHRvIGFzc3VtZSB0aGV5J3JlIHBsYWluIHN0cmluZ3MuXG4gIGlmICh0eXBlb2YgYm9keSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gJ3RleHQvcGxhaW4nO1xuICB9XG5cbiAgLy8gQXJyYXlzLCBvYmplY3RzLCBib29sZWFuIGFuZCBudW1iZXJzIHdpbGwgYmUgZW5jb2RlZCBhcyBKU09OLlxuICBpZiAodHlwZW9mIGJvZHkgPT09ICdvYmplY3QnIHx8IHR5cGVvZiBib2R5ID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgYm9keSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgcmV0dXJuICdhcHBsaWNhdGlvbi9qc29uJztcbiAgfVxuICAvLyBObyB0eXBlIGNvdWxkIGJlIGluZmVycmVkLlxuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBoYXNIZWFkZXIgPSAoaGVhZGVyczogUmVxdWVzdEhlYWRlcnMsIGhlYWRlcjogc3RyaW5nKSA9PiB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhoZWFkZXJzKS5zb21lKChrZXkpID0+IGtleS50b0xvd2VyQ2FzZSgpID09PSBoZWFkZXIudG9Mb3dlckNhc2UoKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZm9yRWFjaEhlYWRlciA9IChoZWFkZXJzOiBSZXF1ZXN0SGVhZGVycywgY2FsbGJhY2s6ICh2YWx1ZTogc3RyaW5nLCBrZXk6IHN0cmluZykgPT4gdm9pZCkgPT4ge1xuICBPYmplY3QuZW50cmllcyhoZWFkZXJzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICBjYWxsYmFjayhrZXksIHZhbHVlKTtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgcGFyc2VBbGxYaHJSZXNwb25zZUhlYWRlcnMgPSAoeGhyOiBYTUxIdHRwUmVxdWVzdCkgPT4ge1xuICBjb25zdCBoZWFkZXJzID0geGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpO1xuICBjb25zdCBwYXJzZWRIZWFkZXJzOiBSZXF1ZXN0SGVhZGVycyA9IHt9O1xuXG4gIGZvciAoY29uc3QgbGluZSBvZiBoZWFkZXJzLnNwbGl0KCdcXG4nKSkge1xuICAgIGNvbnN0IGluZGV4ID0gbGluZS5pbmRleE9mKCc6Jyk7XG4gICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgY29uc3QgbmFtZSA9IGxpbmUuc2xpY2UoMCwgaW5kZXgpO1xuICAgICAgY29uc3Qga2V5ID0gbmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgY29uc3QgdmFsdWUgPSBsaW5lLnNsaWNlKGluZGV4ICsgMSkudHJpbSgpO1xuXG4gICAgICBwYXJzZWRIZWFkZXJzW2tleV0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcGFyc2VkSGVhZGVycztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSZXNwb25zZVVybCA9ICh4aHI6IFhNTEh0dHBSZXF1ZXN0KTogc3RyaW5nIHwgbnVsbCA9PiB7XG4gIGlmICgncmVzcG9uc2VVUkwnIGluIHhociAmJiB4aHIucmVzcG9uc2VVUkwpIHtcbiAgICByZXR1cm4geGhyLnJlc3BvbnNlVVJMO1xuICB9XG4gIGlmICgvXlgtUmVxdWVzdC1VUkw6L20udGVzdCh4aHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpKSB7XG4gICAgcmV0dXJuIHhoci5nZXRSZXNwb25zZUhlYWRlcignWC1SZXF1ZXN0LVVSTCcpO1xuICB9XG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IHNob3VsZFJldHJ5UmVxdWVzdDogUmVxdWVzdFJldHJ5Rm4gPSAoY29uZmlnKSA9PiB7XG4gIGNvbnN0IGRlZmF1bHRSZXRyeURlbGF5ID0gMTAwMCArIDEwMDAgKiBjb25maWcuY3VycmVudFJldHJ5Q291bnQ7XG5cbiAgaWYgKGNvbmZpZy5jdXJyZW50UmV0cnlDb3VudCA+IDMpIHtcbiAgICByZXR1cm4geyByZXRyeTogZmFsc2UgfTtcbiAgfVxuXG4gIGlmICghaXNSZXF1ZXN0RXJyb3IoY29uZmlnLmVycm9yKSkge1xuICAgIHJldHVybiB7IHJldHJ5OiBmYWxzZSB9O1xuICB9XG5cbiAgY29uc3QgeyBzdGF0dXMsIGRldGFpbCB9ID0gY29uZmlnLmVycm9yO1xuXG4gIC8vIFJldHJ5IG9uIDV4eCBlcnJvcnNcbiAgaWYgKHN0YXR1cyA+PSA1MDApIHtcbiAgICAvLyBEb24ndCByZXRyeSBpZiBhIHJlcXVlc3RlZCBwYWdlIGlzIG91dCBvZiByYW5nZVxuICAgIGlmIChpc1N5bWZvbnlQYWdlcmZhbnRhT3V0T2ZSYW5nZUVycm9yKGRldGFpbCkpIHtcbiAgICAgIHJldHVybiB7IHJldHJ5OiBmYWxzZSB9O1xuICAgIH1cblxuICAgIHJldHVybiB7IHJldHJ5OiB0cnVlLCBkZWxheTogZGVmYXVsdFJldHJ5RGVsYXkgfTtcbiAgfVxuXG4gIC8vIFJldHJ5IG9uIDQwOCBvciA0MjUgZXJyb3JzXG4gIGlmIChzdGF0dXMgPT09IEh0dHBTdGF0dXNDb2RlLlJlcXVlc3RUaW1lb3V0IHx8IHN0YXR1cyA9PT0gSHR0cFN0YXR1c0NvZGUuVG9vRWFybHkpIHtcbiAgICByZXR1cm4geyByZXRyeTogdHJ1ZSwgZGVsYXk6IGRlZmF1bHRSZXRyeURlbGF5IH07XG4gIH1cblxuICAvLyBSZXRyeSBvbiA0MjkgZXJyb3JzXG4gIGlmIChzdGF0dXMgPT09IEh0dHBTdGF0dXNDb2RlLlRvb01hbnlSZXF1ZXN0cykge1xuICAgIGNvbnN0IHJldHJ5QWZ0ZXIgPVxuICAgICAgY29uZmlnLmhlYWRlcnNbJ3JldHJ5LWFmdGVyJ10gfHxcbiAgICAgIGNvbmZpZy5oZWFkZXJzWydSZXRyeS1BZnRlciddIHx8XG4gICAgICBjb25maWcuaGVhZGVyc1sneC1yZXRyeS1hZnRlciddIHx8XG4gICAgICBjb25maWcuaGVhZGVyc1snWC1SZXRyeS1BZnRlciddO1xuXG4gICAgaWYgKHJldHJ5QWZ0ZXIpIHtcbiAgICAgIGNvbnN0IGRlbGF5ID0gcGFyc2VJbnQocmV0cnlBZnRlcikgKiAxMDAwO1xuICAgICAgcmV0dXJuIHsgcmV0cnk6IHRydWUsIGRlbGF5OiBOdW1iZXIuaXNOYU4oZGVsYXkpID8gZGVmYXVsdFJldHJ5RGVsYXkgOiBkZWxheSB9O1xuICAgIH1cblxuICAgIHJldHVybiB7IHJldHJ5OiB0cnVlLCBkZWxheTogZGVmYXVsdFJldHJ5RGVsYXkgfTtcbiAgfVxuXG4gIHJldHVybiB7IHJldHJ5OiBmYWxzZSB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGVudW0gSHR0cFN0YXR1c0NvZGUge1xuICBVbmtub3duID0gMCxcblxuICBDb250aW51ZSA9IDEwMCxcbiAgU3dpdGNoaW5nUHJvdG9jb2xzID0gMTAxLFxuICBQcm9jZXNzaW5nID0gMTAyLFxuICBFYXJseUhpbnRzID0gMTAzLFxuXG4gIE9rID0gMjAwLFxuICBDcmVhdGVkID0gMjAxLFxuICBBY2NlcHRlZCA9IDIwMixcbiAgTm9uQXV0aG9yaXRhdGl2ZUluZm9ybWF0aW9uID0gMjAzLFxuICBOb0NvbnRlbnQgPSAyMDQsXG4gIFJlc2V0Q29udGVudCA9IDIwNSxcbiAgUGFydGlhbENvbnRlbnQgPSAyMDYsXG4gIE11bHRpU3RhdHVzID0gMjA3LFxuICBBbHJlYWR5UmVwb3J0ZWQgPSAyMDgsXG4gIEltVXNlZCA9IDIyNixcblxuICBNdWx0aXBsZUNob2ljZXMgPSAzMDAsXG4gIE1vdmVkUGVybWFuZW50bHkgPSAzMDEsXG4gIEZvdW5kID0gMzAyLFxuICBTZWVPdGhlciA9IDMwMyxcbiAgTm90TW9kaWZpZWQgPSAzMDQsXG4gIFVzZVByb3h5ID0gMzA1LFxuICBVbnVzZWQgPSAzMDYsXG4gIFRlbXBvcmFyeVJlZGlyZWN0ID0gMzA3LFxuICBQZXJtYW5lbnRSZWRpcmVjdCA9IDMwOCxcblxuICBCYWRSZXF1ZXN0ID0gNDAwLFxuICBVbmF1dGhvcml6ZWQgPSA0MDEsXG4gIFBheW1lbnRSZXF1aXJlZCA9IDQwMixcbiAgRm9yYmlkZGVuID0gNDAzLFxuICBOb3RGb3VuZCA9IDQwNCxcbiAgTWV0aG9kTm90QWxsb3dlZCA9IDQwNSxcbiAgTm90QWNjZXB0YWJsZSA9IDQwNixcbiAgUHJveHlBdXRoZW50aWNhdGlvblJlcXVpcmVkID0gNDA3LFxuICBSZXF1ZXN0VGltZW91dCA9IDQwOCxcbiAgQ29uZmxpY3QgPSA0MDksXG4gIEdvbmUgPSA0MTAsXG4gIExlbmd0aFJlcXVpcmVkID0gNDExLFxuICBQcmVjb25kaXRpb25GYWlsZWQgPSA0MTIsXG4gIFBheWxvYWRUb29MYXJnZSA9IDQxMyxcbiAgVXJpVG9vTG9uZyA9IDQxNCxcbiAgVW5zdXBwb3J0ZWRNZWRpYVR5cGUgPSA0MTUsXG4gIFJhbmdlTm90U2F0aXNmaWFibGUgPSA0MTYsXG4gIEV4cGVjdGF0aW9uRmFpbGVkID0gNDE3LFxuICBJbUFUZWFwb3QgPSA0MTgsXG4gIE1pc2RpcmVjdGVkUmVxdWVzdCA9IDQyMSxcbiAgVW5wcm9jZXNzYWJsZUVudGl0eSA9IDQyMixcbiAgTG9ja2VkID0gNDIzLFxuICBGYWlsZWREZXBlbmRlbmN5ID0gNDI0LFxuICBUb29FYXJseSA9IDQyNSxcbiAgVXBncmFkZVJlcXVpcmVkID0gNDI2LFxuICBQcmVjb25kaXRpb25SZXF1aXJlZCA9IDQyOCxcbiAgVG9vTWFueVJlcXVlc3RzID0gNDI5LFxuICBSZXF1ZXN0SGVhZGVyRmllbGRzVG9vTGFyZ2UgPSA0MzEsXG4gIFVuYXZhaWxhYmxlRm9yTGVnYWxSZWFzb25zID0gNDUxLFxuXG4gIEludGVybmFsU2VydmVyRXJyb3IgPSA1MDAsXG4gIE5vdEltcGxlbWVudGVkID0gNTAxLFxuICBCYWRHYXRld2F5ID0gNTAyLFxuICBTZXJ2aWNlVW5hdmFpbGFibGUgPSA1MDMsXG4gIEdhdGV3YXlUaW1lb3V0ID0gNTA0LFxuICBIdHRwVmVyc2lvbk5vdFN1cHBvcnRlZCA9IDUwNSxcbiAgVmFyaWFudEFsc29OZWdvdGlhdGVzID0gNTA2LFxuICBJbnN1ZmZpY2llbnRTdG9yYWdlID0gNTA3LFxuICBMb29wRGV0ZWN0ZWQgPSA1MDgsXG4gIE5vdEV4dGVuZGVkID0gNTEwLFxuICBOZXR3b3JrQXV0aGVudGljYXRpb25SZXF1aXJlZCA9IDUxMSxcbn1cbiJdfQ==