@rosen-bridge/watcher-data-extractor 5.0.1 → 5.1.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/dist/actions/EventTriggerAction.js +2 -2
  2. package/dist/actions/collateralAction.d.ts +23 -17
  3. package/dist/actions/collateralAction.d.ts.map +1 -1
  4. package/dist/actions/collateralAction.js +78 -52
  5. package/dist/actions/commitmentAction.d.ts.map +1 -1
  6. package/dist/actions/commitmentAction.js +3 -2
  7. package/dist/actions/permitAction.js +3 -3
  8. package/dist/entities/CollateralEntity.d.ts +6 -5
  9. package/dist/entities/CollateralEntity.d.ts.map +1 -1
  10. package/dist/entities/CollateralEntity.js +16 -11
  11. package/dist/entities/CommitmentEntity.d.ts +2 -2
  12. package/dist/entities/CommitmentEntity.d.ts.map +1 -1
  13. package/dist/entities/CommitmentEntity.js +3 -3
  14. package/dist/entities/EventTriggerEntity.d.ts +1 -1
  15. package/dist/entities/EventTriggerEntity.d.ts.map +1 -1
  16. package/dist/entities/EventTriggerEntity.js +3 -3
  17. package/dist/entities/PermitEntity.d.ts +1 -1
  18. package/dist/entities/PermitEntity.d.ts.map +1 -1
  19. package/dist/entities/PermitEntity.js +3 -3
  20. package/dist/extractor/collateralExtractor.d.ts +16 -0
  21. package/dist/extractor/collateralExtractor.d.ts.map +1 -1
  22. package/dist/extractor/collateralExtractor.js +73 -52
  23. package/dist/index.d.ts +3 -1
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +4 -2
  26. package/dist/interfaces/extractedCollateral.d.ts +6 -5
  27. package/dist/interfaces/extractedCollateral.d.ts.map +1 -1
  28. package/dist/interfaces/extractedCollateral.js +1 -1
  29. package/dist/interfaces/types.d.ts +1 -1
  30. package/dist/interfaces/types.d.ts.map +1 -1
  31. package/dist/interfaces/types.js +1 -1
  32. package/dist/migrations/index.d.ts.map +1 -1
  33. package/dist/migrations/index.js +5 -1
  34. package/dist/migrations/postgres/1709388482275-migration.d.ts +7 -0
  35. package/dist/migrations/postgres/1709388482275-migration.d.ts.map +1 -0
  36. package/dist/migrations/postgres/1709388482275-migration.js +29 -0
  37. package/dist/migrations/sqlite/1709388134975-migration.d.ts +7 -0
  38. package/dist/migrations/sqlite/1709388134975-migration.d.ts.map +1 -0
  39. package/dist/migrations/sqlite/1709388134975-migration.js +28 -0
  40. package/dist/utils.d.ts +7 -0
  41. package/dist/utils.d.ts.map +1 -1
  42. package/dist/utils.js +10 -1
  43. package/package.json +3 -1
@@ -129,11 +129,11 @@ class EventTriggerAction {
129
129
  await this.triggerEventRepository.update({ spendBlock: block, extractor: extractor }, {
130
130
  spendBlock: null,
131
131
  spendTxId: null,
132
- spendHeight: 0,
132
+ spendHeight: null,
133
133
  result: null,
134
134
  paymentTxId: null,
135
135
  });
136
136
  };
137
137
  }
138
138
  export default EventTriggerAction;
139
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRUcmlnZ2VyQWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2FjdGlvbnMvRXZlbnRUcmlnZ2VyQWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxFQUFFLEVBQWMsTUFBTSxTQUFTLENBQUM7QUFDckQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVsQyxPQUFPLEVBQWtCLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTVFLE9BQU8sa0JBQWtCLE1BQU0sZ0NBQWdDLENBQUM7QUFFaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU3QyxNQUFNLGtCQUFrQjtJQUNiLE1BQU0sQ0FBaUI7SUFDZixVQUFVLENBQWE7SUFDdkIsc0JBQXNCLENBQWlDO0lBRXhFLFlBQVksVUFBc0IsRUFBRSxNQUF1QjtRQUN6RCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ2xELElBQUksQ0FBQyxzQkFBc0IsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsa0JBQWtCLEdBQUcsS0FBSyxFQUN4QixhQUEyQyxFQUMzQyxLQUFrQixFQUNsQixTQUFpQixFQUNqQixFQUFFO1FBQ0YsSUFBSSxhQUFhLENBQUMsTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUM1QyxNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0QsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsc0JB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QztnQkFDSCxLQUFLLE1BQU0sR0FBRyxJQUFJLFNBQVMsRUFBRTtvQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ2Qsa0JBQWtCLEdBQUcsQ0FBQyxLQUFLLGVBQWUsR0FBRyxDQUFDLE9BQU8sZUFBZSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQ25GLENBQUM7b0JBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUM5RDthQUNGO1NBQ0Y7SUFDSCxDQUFDLENBQUM7SUFFRjs7Ozs7T0FLRztJQUNILFdBQVcsR0FBRyxLQUFLLEVBQUUsS0FBYSxFQUFFLFNBQWlCLEVBQUUsRUFBRTtRQUN2RCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDZCxvQ0FBb0MsS0FBSyxrQkFBa0IsU0FBUyxFQUFFLENBQ3ZFLENBQUM7UUFDRixNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUM7WUFDdkMsS0FBSyxFQUFFLEtBQUs7WUFDWixTQUFTLEVBQUUsU0FBUztTQUNyQixDQUFDLENBQUM7UUFDSCxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQ3RDLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEVBQzNDO1lBQ0UsVUFBVSxFQUFFLElBQUk7WUFDaEIsU0FBUyxFQUFFLElBQUk7WUFDZixXQUFXLEVBQUUsQ0FBQztZQUNkLE1BQU0sRUFBRSxJQUFJO1lBQ1osV0FBVyxFQUFFLElBQUk7U0FDbEIsQ0FDRixDQUFDO0lBQ0osQ0FBQyxDQUFDO0NBQ0g7QUFFRCxlQUFlLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YVNvdXJjZSwgSW4sIFJlcG9zaXRvcnkgfSBmcm9tICd0eXBlb3JtJztcbmltcG9ydCB7IGNodW5rIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEJsb2NrRW50aXR5IH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9zY2FubmVyJztcbmltcG9ydCB7IEFic3RyYWN0TG9nZ2VyLCBEdW1teUxvZ2dlciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtbG9nZ2VyJztcblxuaW1wb3J0IEV2ZW50VHJpZ2dlckVudGl0eSBmcm9tICcuLi9lbnRpdGllcy9FdmVudFRyaWdnZXJFbnRpdHknO1xuaW1wb3J0IHsgRXh0cmFjdGVkRXZlbnRUcmlnZ2VyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9leHRyYWN0ZWRFdmVudFRyaWdnZXInO1xuaW1wb3J0IHsgZGJJZENodW5rU2l6ZSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbmNsYXNzIEV2ZW50VHJpZ2dlckFjdGlvbiB7XG4gIHJlYWRvbmx5IGxvZ2dlcjogQWJzdHJhY3RMb2dnZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGF0YXNvdXJjZTogRGF0YVNvdXJjZTtcbiAgcHJpdmF0ZSByZWFkb25seSB0cmlnZ2VyRXZlbnRSZXBvc2l0b3J5OiBSZXBvc2l0b3J5PEV2ZW50VHJpZ2dlckVudGl0eT47XG5cbiAgY29uc3RydWN0b3IoZGF0YVNvdXJjZTogRGF0YVNvdXJjZSwgbG9nZ2VyPzogQWJzdHJhY3RMb2dnZXIpIHtcbiAgICB0aGlzLmRhdGFzb3VyY2UgPSBkYXRhU291cmNlO1xuICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyID8gbG9nZ2VyIDogbmV3IER1bW15TG9nZ2VyKCk7XG4gICAgdGhpcy50cmlnZ2VyRXZlbnRSZXBvc2l0b3J5ID0gZGF0YVNvdXJjZS5nZXRSZXBvc2l0b3J5KEV2ZW50VHJpZ2dlckVudGl0eSk7XG4gIH1cblxuICAvKipcbiAgICogSXQgc3RvcmVzIGxpc3Qgb2YgZXZlbnRUcmlnZ2VycyBpbiB0aGUgZGF0YVNvdXJjZSB3aXRoIGJsb2NrIGlkXG4gICAqIEBwYXJhbSBldmVudFRyaWdnZXJzXG4gICAqIEBwYXJhbSBibG9ja1xuICAgKiBAcGFyYW0gZXh0cmFjdG9yXG4gICAqL1xuICBzdG9yZUV2ZW50VHJpZ2dlcnMgPSBhc3luYyAoXG4gICAgZXZlbnRUcmlnZ2VyczogQXJyYXk8RXh0cmFjdGVkRXZlbnRUcmlnZ2VyPixcbiAgICBibG9jazogQmxvY2tFbnRpdHksXG4gICAgZXh0cmFjdG9yOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgaWYgKGV2ZW50VHJpZ2dlcnMubGVuZ3RoID09PSAwKSByZXR1cm4gdHJ1ZTtcbiAgICBjb25zdCBib3hJZHMgPSBldmVudFRyaWdnZXJzLm1hcCgodHJpZ2dlcikgPT4gdHJpZ2dlci5ib3hJZCk7XG4gICAgY29uc3Qgc2F2ZWRUcmlnZ2VycyA9IGF3YWl0IHRoaXMudHJpZ2dlckV2ZW50UmVwb3NpdG9yeS5maW5kQnkoe1xuICAgICAgYm94SWQ6IEluKGJveElkcyksXG4gICAgICBleHRyYWN0b3I6IGV4dHJhY3RvcixcbiAgICB9KTtcbiAgICBsZXQgc3VjY2VzcyA9IHRydWU7XG4gICAgY29uc3QgcXVlcnlSdW5uZXIgPSB0aGlzLmRhdGFzb3VyY2UuY3JlYXRlUXVlcnlSdW5uZXIoKTtcbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5jb25uZWN0KCk7XG4gICAgYXdhaXQgcXVlcnlSdW5uZXIuc3RhcnRUcmFuc2FjdGlvbigpO1xuICAgIGNvbnN0IHJlcG9zaXRvcnkgPSBhd2FpdCBxdWVyeVJ1bm5lci5tYW5hZ2VyLmdldFJlcG9zaXRvcnkoXG4gICAgICBFdmVudFRyaWdnZXJFbnRpdHlcbiAgICApO1xuICAgIHRyeSB7XG4gICAgICBmb3IgKGNvbnN0IHRyaWdnZXIgb2YgZXZlbnRUcmlnZ2Vycykge1xuICAgICAgICBjb25zdCBzYXZlZCA9IHNhdmVkVHJpZ2dlcnMuc29tZSgoZW50aXR5KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGVudGl0eS5ib3hJZCA9PT0gdHJpZ2dlci5ib3hJZDtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGVudGl0eSA9IHtcbiAgICAgICAgICB0eElkOiB0cmlnZ2VyLnR4SWQsXG4gICAgICAgICAgZXZlbnRJZDogdHJpZ2dlci5ldmVudElkLFxuICAgICAgICAgIGJveElkOiB0cmlnZ2VyLmJveElkLFxuICAgICAgICAgIGJveFNlcmlhbGl6ZWQ6IHRyaWdnZXIuYm94U2VyaWFsaXplZCxcbiAgICAgICAgICBibG9jazogYmxvY2suaGFzaCxcbiAgICAgICAgICBoZWlnaHQ6IGJsb2NrLmhlaWdodCxcbiAgICAgICAgICBleHRyYWN0b3I6IGV4dHJhY3RvcixcbiAgICAgICAgICBXSURzQ291bnQ6IHRyaWdnZXIuV0lEc0NvdW50LFxuICAgICAgICAgIFdJRHNIYXNoOiB0cmlnZ2VyLldJRHNIYXNoLFxuICAgICAgICAgIGFtb3VudDogdHJpZ2dlci5hbW91bnQsXG4gICAgICAgICAgYnJpZGdlRmVlOiB0cmlnZ2VyLmJyaWRnZUZlZSxcbiAgICAgICAgICBmcm9tQWRkcmVzczogdHJpZ2dlci5mcm9tQWRkcmVzcyxcbiAgICAgICAgICB0b0FkZHJlc3M6IHRyaWdnZXIudG9BZGRyZXNzLFxuICAgICAgICAgIGZyb21DaGFpbjogdHJpZ2dlci5mcm9tQ2hhaW4sXG4gICAgICAgICAgbmV0d29ya0ZlZTogdHJpZ2dlci5uZXR3b3JrRmVlLFxuICAgICAgICAgIHNvdXJjZUNoYWluVG9rZW5JZDogdHJpZ2dlci5zb3VyY2VDaGFpblRva2VuSWQsXG4gICAgICAgICAgdGFyZ2V0Q2hhaW5Ub2tlbklkOiB0cmlnZ2VyLnRhcmdldENoYWluVG9rZW5JZCxcbiAgICAgICAgICBzb3VyY2VCbG9ja0lkOiB0cmlnZ2VyLnNvdXJjZUJsb2NrSWQsXG4gICAgICAgICAgdG9DaGFpbjogdHJpZ2dlci50b0NoYWluLFxuICAgICAgICAgIHNvdXJjZVR4SWQ6IHRyaWdnZXIuc291cmNlVHhJZCxcbiAgICAgICAgICBzb3VyY2VDaGFpbkhlaWdodDogdHJpZ2dlci5zb3VyY2VDaGFpbkhlaWdodCxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKCFzYXZlZCkge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmluZm8oXG4gICAgICAgICAgICBgU3RvcmluZyBldmVudCB0cmlnZ2VyIFske3RyaWdnZXIuYm94SWR9XSBmb3IgZXZlbnQgWyR7dHJpZ2dlci5ldmVudElkfV0gYXQgaGVpZ2h0ICR7YmxvY2suaGVpZ2h0fSBhbmQgZXh0cmFjdG9yICR7ZXh0cmFjdG9yfWBcbiAgICAgICAgICApO1xuICAgICAgICAgIGF3YWl0IHJlcG9zaXRvcnkuaW5zZXJ0KGVudGl0eSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyhcbiAgICAgICAgICAgIGBVcGRhdGluZyBldmVudCB0cmlnZ2VyICR7dHJpZ2dlci5ib3hJZH0gZm9yIGV2ZW50IFske3RyaWdnZXIuZXZlbnRJZH1dIGF0IGhlaWdodCAke2Jsb2NrLmhlaWdodH0gYW5kIGV4dHJhY3RvciAke2V4dHJhY3Rvcn1gXG4gICAgICAgICAgKTtcbiAgICAgICAgICBhd2FpdCByZXBvc2l0b3J5LnVwZGF0ZSh7IGJveElkOiB0cmlnZ2VyLmJveElkIH0sIGVudGl0eSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYEVudGl0eTogJHtKU09OLnN0cmluZ2lmeShlbnRpdHkpfWApO1xuICAgICAgfVxuICAgICAgYXdhaXQgcXVlcnlSdW5uZXIuY29tbWl0VHJhbnNhY3Rpb24oKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcihcbiAgICAgICAgYEFuIGVycm9yIG9jY3VycmVkIGR1cmluZyBzdG9yZSBldmVudFRyaWdnZXIgYWN0aW9uOiAke2V9YFxuICAgICAgKTtcbiAgICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnJvbGxiYWNrVHJhbnNhY3Rpb24oKTtcbiAgICAgIHN1Y2Nlc3MgPSBmYWxzZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgcXVlcnlSdW5uZXIucmVsZWFzZSgpO1xuICAgIH1cbiAgICByZXR1cm4gc3VjY2VzcztcbiAgfTtcblxuICAvKipcbiAgICogVXBkYXRlIHNwZW5kQmxvY2sgYW5kIHNwZW5kSGVpZ2h0IG9mIGV2ZW50VHJpZ2dlcnMgc3BlbnQgb24gdGhlIGJsb2NrXG4gICAqIGFsc28gdXBkYXRlIHRoZSBzcGVuZFR4SWQgd2l0aCB0aGUgc3BlY2lmaWVkIHR4SWRcbiAgICogYW5kIHNldCByZXN1bHQgYW5kIHBheW1lbnRUeElkIG9mIHRoZSBldmVudFxuICAgKiBAcGFyYW0gc3BlbmRJZFxuICAgKiBAcGFyYW0gYmxvY2tcbiAgICogQHBhcmFtIGV4dHJhY3RvclxuICAgKiBAcGFyYW0gdHhJZFxuICAgKiBAcGFyYW0gcmVzdWx0XG4gICAqIEBwYXJhbSBwYXltZW50VHhJZFxuICAgKi9cbiAgc3BlbmRFdmVudFRyaWdnZXJzID0gYXN5bmMgKFxuICAgIHNwZW5kSWQ6IEFycmF5PHN0cmluZz4sXG4gICAgYmxvY2s6IEJsb2NrRW50aXR5LFxuICAgIGV4dHJhY3Rvcjogc3RyaW5nLFxuICAgIHR4SWQ6IHN0cmluZyxcbiAgICByZXN1bHQ6IHN0cmluZyxcbiAgICBwYXltZW50VHhJZDogc3RyaW5nXG4gICk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGNvbnN0IHNwZW5kSWRDaHVua3MgPSBjaHVuayhzcGVuZElkLCBkYklkQ2h1bmtTaXplKTtcbiAgICBmb3IgKGNvbnN0IHNwZW5kSWRDaHVuayBvZiBzcGVuZElkQ2h1bmtzKSB7XG4gICAgICBjb25zdCB1cGRhdGVSZXN1bHQgPSBhd2FpdCB0aGlzLnRyaWdnZXJFdmVudFJlcG9zaXRvcnkudXBkYXRlKFxuICAgICAgICB7IGJveElkOiBJbihzcGVuZElkQ2h1bmspLCBleHRyYWN0b3I6IGV4dHJhY3RvciB9LFxuICAgICAgICB7XG4gICAgICAgICAgc3BlbmRCbG9jazogYmxvY2suaGFzaCxcbiAgICAgICAgICBzcGVuZEhlaWdodDogYmxvY2suaGVpZ2h0LFxuICAgICAgICAgIHNwZW5kVHhJZDogdHhJZCxcbiAgICAgICAgICByZXN1bHQ6IHJlc3VsdCxcbiAgICAgICAgICBwYXltZW50VHhJZDogcGF5bWVudFR4SWQsXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIGlmICh1cGRhdGVSZXN1bHQuYWZmZWN0ZWQgJiYgdXBkYXRlUmVzdWx0LmFmZmVjdGVkID4gMCkge1xuICAgICAgICBjb25zdCBzcGVudFJvd3MgPSBhd2FpdCB0aGlzLnRyaWdnZXJFdmVudFJlcG9zaXRvcnkuZmluZEJ5KHtcbiAgICAgICAgICBib3hJZDogSW4oc3BlbmRJZENodW5rKSxcbiAgICAgICAgICBzcGVuZEJsb2NrOiBibG9jay5oYXNoLFxuICAgICAgICB9KTtcbiAgICAgICAgZm9yIChjb25zdCByb3cgb2Ygc3BlbnRSb3dzKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyhcbiAgICAgICAgICAgIGBTcGVudCB0cmlnZ2VyIFske3Jvdy5ib3hJZH1dIG9mIGV2ZW50IFske3Jvdy5ldmVudElkfV0gYXQgaGVpZ2h0ICR7YmxvY2suaGVpZ2h0fWBcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBTcGVudCB0cmlnZ2VyOiBbJHtKU09OLnN0cmluZ2lmeShyb3cpfV1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogRGVsZXRlIGFsbCBldmVudFRyaWdnZXJzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGJsb2NrKGlkKSBhbmQgZXh0cmFjdG9yKGlkKVxuICAgKiBhbmQgdXBkYXRlIGFsbCBldmVudFRyaWdnZXJzIHNwZW50IG9uIHRoZSBzcGVjaWZpZWQgYmxvY2tcbiAgICogQHBhcmFtIGJsb2NrXG4gICAqIEBwYXJhbSBleHRyYWN0b3JcbiAgICovXG4gIGRlbGV0ZUJsb2NrID0gYXN5bmMgKGJsb2NrOiBzdHJpbmcsIGV4dHJhY3Rvcjogc3RyaW5nKSA9PiB7XG4gICAgdGhpcy5sb2dnZXIuaW5mbyhcbiAgICAgIGBEZWxldGluZyBldmVudCB0cmlnZ2VycyBhdCBibG9jayAke2Jsb2NrfSBhbmQgZXh0cmFjdG9yICR7ZXh0cmFjdG9yfWBcbiAgICApO1xuICAgIGF3YWl0IHRoaXMudHJpZ2dlckV2ZW50UmVwb3NpdG9yeS5kZWxldGUoe1xuICAgICAgYmxvY2s6IGJsb2NrLFxuICAgICAgZXh0cmFjdG9yOiBleHRyYWN0b3IsXG4gICAgfSk7XG4gICAgYXdhaXQgdGhpcy50cmlnZ2VyRXZlbnRSZXBvc2l0b3J5LnVwZGF0ZShcbiAgICAgIHsgc3BlbmRCbG9jazogYmxvY2ssIGV4dHJhY3RvcjogZXh0cmFjdG9yIH0sXG4gICAgICB7XG4gICAgICAgIHNwZW5kQmxvY2s6IG51bGwsXG4gICAgICAgIHNwZW5kVHhJZDogbnVsbCxcbiAgICAgICAgc3BlbmRIZWlnaHQ6IDAsXG4gICAgICAgIHJlc3VsdDogbnVsbCxcbiAgICAgICAgcGF5bWVudFR4SWQ6IG51bGwsXG4gICAgICB9XG4gICAgKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgRXZlbnRUcmlnZ2VyQWN0aW9uO1xuIl19
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRUcmlnZ2VyQWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2FjdGlvbnMvRXZlbnRUcmlnZ2VyQWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxFQUFFLEVBQWMsTUFBTSxTQUFTLENBQUM7QUFDckQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVsQyxPQUFPLEVBQWtCLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTVFLE9BQU8sa0JBQWtCLE1BQU0sZ0NBQWdDLENBQUM7QUFFaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU3QyxNQUFNLGtCQUFrQjtJQUNiLE1BQU0sQ0FBaUI7SUFDZixVQUFVLENBQWE7SUFDdkIsc0JBQXNCLENBQWlDO0lBRXhFLFlBQVksVUFBc0IsRUFBRSxNQUF1QjtRQUN6RCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ2xELElBQUksQ0FBQyxzQkFBc0IsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsa0JBQWtCLEdBQUcsS0FBSyxFQUN4QixhQUEyQyxFQUMzQyxLQUFrQixFQUNsQixTQUFpQixFQUNqQixFQUFFO1FBQ0YsSUFBSSxhQUFhLENBQUMsTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUM1QyxNQUFNLE1BQU0sR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0QsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDO1lBQzdELEtBQUssRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDO1lBQ2pCLFNBQVMsRUFBRSxTQUFTO1NBQ3JCLENBQUMsQ0FBQztRQUNILElBQUksT0FBTyxHQUFHLElBQUksQ0FBQztRQUNuQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDeEQsTUFBTSxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDNUIsTUFBTSxXQUFXLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNyQyxNQUFNLFVBQVUsR0FBRyxNQUFNLFdBQVcsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUN4RCxrQkFBa0IsQ0FDbkIsQ0FBQztRQUNGLElBQUk7WUFDRixLQUFLLE1BQU0sT0FBTyxJQUFJLGFBQWEsRUFBRTtnQkFDbkMsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO29CQUMxQyxPQUFPLE1BQU0sQ0FBQyxLQUFLLEtBQUssT0FBTyxDQUFDLEtBQUssQ0FBQztnQkFDeEMsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsTUFBTSxNQUFNLEdBQUc7b0JBQ2IsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO29CQUNsQixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87b0JBQ3hCLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztvQkFDcEIsYUFBYSxFQUFFLE9BQU8sQ0FBQyxhQUFhO29CQUNwQyxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUk7b0JBQ2pCLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtvQkFDcEIsU0FBUyxFQUFFLFNBQVM7b0JBQ3BCLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztvQkFDNUIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO29CQUMxQixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07b0JBQ3RCLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztvQkFDNUIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO29CQUNoQyxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVM7b0JBQzVCLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztvQkFDNUIsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVO29CQUM5QixrQkFBa0IsRUFBRSxPQUFPLENBQUMsa0JBQWtCO29CQUM5QyxrQkFBa0IsRUFBRSxPQUFPLENBQUMsa0JBQWtCO29CQUM5QyxhQUFhLEVBQUUsT0FBTyxDQUFDLGFBQWE7b0JBQ3BDLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztvQkFDeEIsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVO29CQUM5QixpQkFBaUIsRUFBRSxPQUFPLENBQUMsaUJBQWlCO2lCQUM3QyxDQUFDO2dCQUNGLElBQUksQ0FBQyxLQUFLLEVBQUU7b0JBQ1YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ2QsMEJBQTBCLE9BQU8sQ0FBQyxLQUFLLGdCQUFnQixPQUFPLENBQUMsT0FBTyxlQUFlLEtBQUssQ0FBQyxNQUFNLGtCQUFrQixTQUFTLEVBQUUsQ0FDL0gsQ0FBQztvQkFDRixNQUFNLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7aUJBQ2pDO3FCQUFNO29CQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNkLDBCQUEwQixPQUFPLENBQUMsS0FBSyxlQUFlLE9BQU8sQ0FBQyxPQUFPLGVBQWUsS0FBSyxDQUFDLE1BQU0sa0JBQWtCLFNBQVMsRUFBRSxDQUM5SCxDQUFDO29CQUNGLE1BQU0sVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7aUJBQzNEO2dCQUNELElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDeEQ7WUFDRCxNQUFNLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1NBQ3ZDO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZix1REFBdUQsQ0FBQyxFQUFFLENBQzNELENBQUM7WUFDRixNQUFNLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ3hDLE9BQU8sR0FBRyxLQUFLLENBQUM7U0FDakI7Z0JBQVM7WUFDUixNQUFNLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUM3QjtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUMsQ0FBQztJQUVGOzs7Ozs7Ozs7O09BVUc7SUFDSCxrQkFBa0IsR0FBRyxLQUFLLEVBQ3hCLE9BQXNCLEVBQ3RCLEtBQWtCLEVBQ2xCLFNBQWlCLEVBQ2pCLElBQVksRUFDWixNQUFjLEVBQ2QsV0FBbUIsRUFDSixFQUFFO1FBQ2pCLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDcEQsS0FBSyxNQUFNLFlBQVksSUFBSSxhQUFhLEVBQUU7WUFDeEMsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUMzRCxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxFQUNqRDtnQkFDRSxVQUFVLEVBQUUsS0FBSyxDQUFDLElBQUk7Z0JBQ3RCLFdBQVcsRUFBRSxLQUFLLENBQUMsTUFBTTtnQkFDekIsU0FBUyxFQUFFLElBQUk7Z0JBQ2YsTUFBTSxFQUFFLE1BQU07Z0JBQ2QsV0FBVyxFQUFFLFdBQVc7YUFDekIsQ0FDRixDQUFDO1lBRUYsSUFBSSxZQUFZLENBQUMsUUFBUSxJQUFJLFlBQVksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFO2dCQUN0RCxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUM7b0JBQ3pELEtBQUssRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixVQUFVLEVBQUUsS0FBSyxDQUFDLElBQUk7aUJBQ3ZCLENBQUMsQ0FBQztnQkFDSCxLQUFLLE1BQU0sR0FBRyxJQUFJLFNBQVMsRUFBRTtvQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ2Qsa0JBQWtCLEdBQUcsQ0FBQyxLQUFLLGVBQWUsR0FBRyxDQUFDLE9BQU8sZUFBZSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQ25GLENBQUM7b0JBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUM5RDthQUNGO1NBQ0Y7SUFDSCxDQUFDLENBQUM7SUFFRjs7Ozs7T0FLRztJQUNILFdBQVcsR0FBRyxLQUFLLEVBQUUsS0FBYSxFQUFFLFNBQWlCLEVBQUUsRUFBRTtRQUN2RCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDZCxvQ0FBb0MsS0FBSyxrQkFBa0IsU0FBUyxFQUFFLENBQ3ZFLENBQUM7UUFDRixNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUM7WUFDdkMsS0FBSyxFQUFFLEtBQUs7WUFDWixTQUFTLEVBQUUsU0FBUztTQUNyQixDQUFDLENBQUM7UUFDSCxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQ3RDLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEVBQzNDO1lBQ0UsVUFBVSxFQUFFLElBQUk7WUFDaEIsU0FBUyxFQUFFLElBQUk7WUFDZixXQUFXLEVBQUUsSUFBSTtZQUNqQixNQUFNLEVBQUUsSUFBSTtZQUNaLFdBQVcsRUFBRSxJQUFJO1NBQ2xCLENBQ0YsQ0FBQztJQUNKLENBQUMsQ0FBQztDQUNIO0FBRUQsZUFBZSxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGFTb3VyY2UsIEluLCBSZXBvc2l0b3J5IH0gZnJvbSAndHlwZW9ybSc7XG5pbXBvcnQgeyBjaHVuayB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCbG9ja0VudGl0eSB9IGZyb20gJ0Byb3Nlbi1icmlkZ2Uvc2Nhbm5lcic7XG5pbXBvcnQgeyBBYnN0cmFjdExvZ2dlciwgRHVtbXlMb2dnZXIgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2Fic3RyYWN0LWxvZ2dlcic7XG5cbmltcG9ydCBFdmVudFRyaWdnZXJFbnRpdHkgZnJvbSAnLi4vZW50aXRpZXMvRXZlbnRUcmlnZ2VyRW50aXR5JztcbmltcG9ydCB7IEV4dHJhY3RlZEV2ZW50VHJpZ2dlciB9IGZyb20gJy4uL2ludGVyZmFjZXMvZXh0cmFjdGVkRXZlbnRUcmlnZ2VyJztcbmltcG9ydCB7IGRiSWRDaHVua1NpemUgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG5jbGFzcyBFdmVudFRyaWdnZXJBY3Rpb24ge1xuICByZWFkb25seSBsb2dnZXI6IEFic3RyYWN0TG9nZ2VyO1xuICBwcml2YXRlIHJlYWRvbmx5IGRhdGFzb3VyY2U6IERhdGFTb3VyY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgdHJpZ2dlckV2ZW50UmVwb3NpdG9yeTogUmVwb3NpdG9yeTxFdmVudFRyaWdnZXJFbnRpdHk+O1xuXG4gIGNvbnN0cnVjdG9yKGRhdGFTb3VyY2U6IERhdGFTb3VyY2UsIGxvZ2dlcj86IEFic3RyYWN0TG9nZ2VyKSB7XG4gICAgdGhpcy5kYXRhc291cmNlID0gZGF0YVNvdXJjZTtcbiAgICB0aGlzLmxvZ2dlciA9IGxvZ2dlciA/IGxvZ2dlciA6IG5ldyBEdW1teUxvZ2dlcigpO1xuICAgIHRoaXMudHJpZ2dlckV2ZW50UmVwb3NpdG9yeSA9IGRhdGFTb3VyY2UuZ2V0UmVwb3NpdG9yeShFdmVudFRyaWdnZXJFbnRpdHkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEl0IHN0b3JlcyBsaXN0IG9mIGV2ZW50VHJpZ2dlcnMgaW4gdGhlIGRhdGFTb3VyY2Ugd2l0aCBibG9jayBpZFxuICAgKiBAcGFyYW0gZXZlbnRUcmlnZ2Vyc1xuICAgKiBAcGFyYW0gYmxvY2tcbiAgICogQHBhcmFtIGV4dHJhY3RvclxuICAgKi9cbiAgc3RvcmVFdmVudFRyaWdnZXJzID0gYXN5bmMgKFxuICAgIGV2ZW50VHJpZ2dlcnM6IEFycmF5PEV4dHJhY3RlZEV2ZW50VHJpZ2dlcj4sXG4gICAgYmxvY2s6IEJsb2NrRW50aXR5LFxuICAgIGV4dHJhY3Rvcjogc3RyaW5nXG4gICkgPT4ge1xuICAgIGlmIChldmVudFRyaWdnZXJzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHRydWU7XG4gICAgY29uc3QgYm94SWRzID0gZXZlbnRUcmlnZ2Vycy5tYXAoKHRyaWdnZXIpID0+IHRyaWdnZXIuYm94SWQpO1xuICAgIGNvbnN0IHNhdmVkVHJpZ2dlcnMgPSBhd2FpdCB0aGlzLnRyaWdnZXJFdmVudFJlcG9zaXRvcnkuZmluZEJ5KHtcbiAgICAgIGJveElkOiBJbihib3hJZHMpLFxuICAgICAgZXh0cmFjdG9yOiBleHRyYWN0b3IsXG4gICAgfSk7XG4gICAgbGV0IHN1Y2Nlc3MgPSB0cnVlO1xuICAgIGNvbnN0IHF1ZXJ5UnVubmVyID0gdGhpcy5kYXRhc291cmNlLmNyZWF0ZVF1ZXJ5UnVubmVyKCk7XG4gICAgYXdhaXQgcXVlcnlSdW5uZXIuY29ubmVjdCgpO1xuICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnN0YXJ0VHJhbnNhY3Rpb24oKTtcbiAgICBjb25zdCByZXBvc2l0b3J5ID0gYXdhaXQgcXVlcnlSdW5uZXIubWFuYWdlci5nZXRSZXBvc2l0b3J5KFxuICAgICAgRXZlbnRUcmlnZ2VyRW50aXR5XG4gICAgKTtcbiAgICB0cnkge1xuICAgICAgZm9yIChjb25zdCB0cmlnZ2VyIG9mIGV2ZW50VHJpZ2dlcnMpIHtcbiAgICAgICAgY29uc3Qgc2F2ZWQgPSBzYXZlZFRyaWdnZXJzLnNvbWUoKGVudGl0eSkgPT4ge1xuICAgICAgICAgIHJldHVybiBlbnRpdHkuYm94SWQgPT09IHRyaWdnZXIuYm94SWQ7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBlbnRpdHkgPSB7XG4gICAgICAgICAgdHhJZDogdHJpZ2dlci50eElkLFxuICAgICAgICAgIGV2ZW50SWQ6IHRyaWdnZXIuZXZlbnRJZCxcbiAgICAgICAgICBib3hJZDogdHJpZ2dlci5ib3hJZCxcbiAgICAgICAgICBib3hTZXJpYWxpemVkOiB0cmlnZ2VyLmJveFNlcmlhbGl6ZWQsXG4gICAgICAgICAgYmxvY2s6IGJsb2NrLmhhc2gsXG4gICAgICAgICAgaGVpZ2h0OiBibG9jay5oZWlnaHQsXG4gICAgICAgICAgZXh0cmFjdG9yOiBleHRyYWN0b3IsXG4gICAgICAgICAgV0lEc0NvdW50OiB0cmlnZ2VyLldJRHNDb3VudCxcbiAgICAgICAgICBXSURzSGFzaDogdHJpZ2dlci5XSURzSGFzaCxcbiAgICAgICAgICBhbW91bnQ6IHRyaWdnZXIuYW1vdW50LFxuICAgICAgICAgIGJyaWRnZUZlZTogdHJpZ2dlci5icmlkZ2VGZWUsXG4gICAgICAgICAgZnJvbUFkZHJlc3M6IHRyaWdnZXIuZnJvbUFkZHJlc3MsXG4gICAgICAgICAgdG9BZGRyZXNzOiB0cmlnZ2VyLnRvQWRkcmVzcyxcbiAgICAgICAgICBmcm9tQ2hhaW46IHRyaWdnZXIuZnJvbUNoYWluLFxuICAgICAgICAgIG5ldHdvcmtGZWU6IHRyaWdnZXIubmV0d29ya0ZlZSxcbiAgICAgICAgICBzb3VyY2VDaGFpblRva2VuSWQ6IHRyaWdnZXIuc291cmNlQ2hhaW5Ub2tlbklkLFxuICAgICAgICAgIHRhcmdldENoYWluVG9rZW5JZDogdHJpZ2dlci50YXJnZXRDaGFpblRva2VuSWQsXG4gICAgICAgICAgc291cmNlQmxvY2tJZDogdHJpZ2dlci5zb3VyY2VCbG9ja0lkLFxuICAgICAgICAgIHRvQ2hhaW46IHRyaWdnZXIudG9DaGFpbixcbiAgICAgICAgICBzb3VyY2VUeElkOiB0cmlnZ2VyLnNvdXJjZVR4SWQsXG4gICAgICAgICAgc291cmNlQ2hhaW5IZWlnaHQ6IHRyaWdnZXIuc291cmNlQ2hhaW5IZWlnaHQsXG4gICAgICAgIH07XG4gICAgICAgIGlmICghc2F2ZWQpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKFxuICAgICAgICAgICAgYFN0b3JpbmcgZXZlbnQgdHJpZ2dlciBbJHt0cmlnZ2VyLmJveElkfV0gZm9yIGV2ZW50IFske3RyaWdnZXIuZXZlbnRJZH1dIGF0IGhlaWdodCAke2Jsb2NrLmhlaWdodH0gYW5kIGV4dHJhY3RvciAke2V4dHJhY3Rvcn1gXG4gICAgICAgICAgKTtcbiAgICAgICAgICBhd2FpdCByZXBvc2l0b3J5Lmluc2VydChlbnRpdHkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmluZm8oXG4gICAgICAgICAgICBgVXBkYXRpbmcgZXZlbnQgdHJpZ2dlciAke3RyaWdnZXIuYm94SWR9IGZvciBldmVudCBbJHt0cmlnZ2VyLmV2ZW50SWR9XSBhdCBoZWlnaHQgJHtibG9jay5oZWlnaHR9IGFuZCBleHRyYWN0b3IgJHtleHRyYWN0b3J9YFxuICAgICAgICAgICk7XG4gICAgICAgICAgYXdhaXQgcmVwb3NpdG9yeS51cGRhdGUoeyBib3hJZDogdHJpZ2dlci5ib3hJZCB9LCBlbnRpdHkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBFbnRpdHk6ICR7SlNPTi5zdHJpbmdpZnkoZW50aXR5KX1gKTtcbiAgICAgIH1cbiAgICAgIGF3YWl0IHF1ZXJ5UnVubmVyLmNvbW1pdFRyYW5zYWN0aW9uKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXG4gICAgICAgIGBBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgc3RvcmUgZXZlbnRUcmlnZ2VyIGFjdGlvbjogJHtlfWBcbiAgICAgICk7XG4gICAgICBhd2FpdCBxdWVyeVJ1bm5lci5yb2xsYmFja1RyYW5zYWN0aW9uKCk7XG4gICAgICBzdWNjZXNzID0gZmFsc2U7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnJlbGVhc2UoKTtcbiAgICB9XG4gICAgcmV0dXJuIHN1Y2Nlc3M7XG4gIH07XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBzcGVuZEJsb2NrIGFuZCBzcGVuZEhlaWdodCBvZiBldmVudFRyaWdnZXJzIHNwZW50IG9uIHRoZSBibG9ja1xuICAgKiBhbHNvIHVwZGF0ZSB0aGUgc3BlbmRUeElkIHdpdGggdGhlIHNwZWNpZmllZCB0eElkXG4gICAqIGFuZCBzZXQgcmVzdWx0IGFuZCBwYXltZW50VHhJZCBvZiB0aGUgZXZlbnRcbiAgICogQHBhcmFtIHNwZW5kSWRcbiAgICogQHBhcmFtIGJsb2NrXG4gICAqIEBwYXJhbSBleHRyYWN0b3JcbiAgICogQHBhcmFtIHR4SWRcbiAgICogQHBhcmFtIHJlc3VsdFxuICAgKiBAcGFyYW0gcGF5bWVudFR4SWRcbiAgICovXG4gIHNwZW5kRXZlbnRUcmlnZ2VycyA9IGFzeW5jIChcbiAgICBzcGVuZElkOiBBcnJheTxzdHJpbmc+LFxuICAgIGJsb2NrOiBCbG9ja0VudGl0eSxcbiAgICBleHRyYWN0b3I6IHN0cmluZyxcbiAgICB0eElkOiBzdHJpbmcsXG4gICAgcmVzdWx0OiBzdHJpbmcsXG4gICAgcGF5bWVudFR4SWQ6IHN0cmluZ1xuICApOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBjb25zdCBzcGVuZElkQ2h1bmtzID0gY2h1bmsoc3BlbmRJZCwgZGJJZENodW5rU2l6ZSk7XG4gICAgZm9yIChjb25zdCBzcGVuZElkQ2h1bmsgb2Ygc3BlbmRJZENodW5rcykge1xuICAgICAgY29uc3QgdXBkYXRlUmVzdWx0ID0gYXdhaXQgdGhpcy50cmlnZ2VyRXZlbnRSZXBvc2l0b3J5LnVwZGF0ZShcbiAgICAgICAgeyBib3hJZDogSW4oc3BlbmRJZENodW5rKSwgZXh0cmFjdG9yOiBleHRyYWN0b3IgfSxcbiAgICAgICAge1xuICAgICAgICAgIHNwZW5kQmxvY2s6IGJsb2NrLmhhc2gsXG4gICAgICAgICAgc3BlbmRIZWlnaHQ6IGJsb2NrLmhlaWdodCxcbiAgICAgICAgICBzcGVuZFR4SWQ6IHR4SWQsXG4gICAgICAgICAgcmVzdWx0OiByZXN1bHQsXG4gICAgICAgICAgcGF5bWVudFR4SWQ6IHBheW1lbnRUeElkLFxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgICBpZiAodXBkYXRlUmVzdWx0LmFmZmVjdGVkICYmIHVwZGF0ZVJlc3VsdC5hZmZlY3RlZCA+IDApIHtcbiAgICAgICAgY29uc3Qgc3BlbnRSb3dzID0gYXdhaXQgdGhpcy50cmlnZ2VyRXZlbnRSZXBvc2l0b3J5LmZpbmRCeSh7XG4gICAgICAgICAgYm94SWQ6IEluKHNwZW5kSWRDaHVuayksXG4gICAgICAgICAgc3BlbmRCbG9jazogYmxvY2suaGFzaCxcbiAgICAgICAgfSk7XG4gICAgICAgIGZvciAoY29uc3Qgcm93IG9mIHNwZW50Um93cykge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmluZm8oXG4gICAgICAgICAgICBgU3BlbnQgdHJpZ2dlciBbJHtyb3cuYm94SWR9XSBvZiBldmVudCBbJHtyb3cuZXZlbnRJZH1dIGF0IGhlaWdodCAke2Jsb2NrLmhlaWdodH1gXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgU3BlbnQgdHJpZ2dlcjogWyR7SlNPTi5zdHJpbmdpZnkocm93KX1dYCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBhbGwgZXZlbnRUcmlnZ2VycyBjb3JyZXNwb25kaW5nIHRvIHRoZSBibG9jayhpZCkgYW5kIGV4dHJhY3RvcihpZClcbiAgICogYW5kIHVwZGF0ZSBhbGwgZXZlbnRUcmlnZ2VycyBzcGVudCBvbiB0aGUgc3BlY2lmaWVkIGJsb2NrXG4gICAqIEBwYXJhbSBibG9ja1xuICAgKiBAcGFyYW0gZXh0cmFjdG9yXG4gICAqL1xuICBkZWxldGVCbG9jayA9IGFzeW5jIChibG9jazogc3RyaW5nLCBleHRyYWN0b3I6IHN0cmluZykgPT4ge1xuICAgIHRoaXMubG9nZ2VyLmluZm8oXG4gICAgICBgRGVsZXRpbmcgZXZlbnQgdHJpZ2dlcnMgYXQgYmxvY2sgJHtibG9ja30gYW5kIGV4dHJhY3RvciAke2V4dHJhY3Rvcn1gXG4gICAgKTtcbiAgICBhd2FpdCB0aGlzLnRyaWdnZXJFdmVudFJlcG9zaXRvcnkuZGVsZXRlKHtcbiAgICAgIGJsb2NrOiBibG9jayxcbiAgICAgIGV4dHJhY3RvcjogZXh0cmFjdG9yLFxuICAgIH0pO1xuICAgIGF3YWl0IHRoaXMudHJpZ2dlckV2ZW50UmVwb3NpdG9yeS51cGRhdGUoXG4gICAgICB7IHNwZW5kQmxvY2s6IGJsb2NrLCBleHRyYWN0b3I6IGV4dHJhY3RvciB9LFxuICAgICAge1xuICAgICAgICBzcGVuZEJsb2NrOiBudWxsLFxuICAgICAgICBzcGVuZFR4SWQ6IG51bGwsXG4gICAgICAgIHNwZW5kSGVpZ2h0OiBudWxsLFxuICAgICAgICByZXN1bHQ6IG51bGwsXG4gICAgICAgIHBheW1lbnRUeElkOiBudWxsLFxuICAgICAgfVxuICAgICk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IEV2ZW50VHJpZ2dlckFjdGlvbjtcbiJdfQ==
@@ -1,33 +1,29 @@
1
1
  import { AbstractLogger } from '@rosen-bridge/abstract-logger';
2
2
  import { BlockEntity } from '@rosen-bridge/scanner';
3
3
  import { DataSource, DeleteResult } from 'typeorm';
4
- import CollateralEntity from '../entities/CollateralEntity';
5
4
  import { ExtractedCollateral } from '../interfaces/extractedCollateral';
5
+ import { SpendInfo } from '../interfaces/types';
6
6
  declare class CollateralAction {
7
7
  private readonly dataSource;
8
8
  readonly logger: AbstractLogger;
9
9
  private readonly collateralRepository;
10
10
  constructor(dataSource: DataSource, logger?: AbstractLogger);
11
11
  /**
12
- * saves (upserts) a collateral into the database
12
+ * inserts a collateral into the database
13
13
  *
14
14
  * @param {ExtractedCollateral} collateral
15
15
  * @param {string} extractor
16
16
  * @memberof CollateralAction
17
17
  */
18
- saveCollateral: (collateral: Partial<ExtractedCollateral> & Pick<ExtractedCollateral, 'boxId'>, extractor: string) => Promise<{
19
- extractor: string;
20
- boxId: string;
21
- boxSerialized: string | undefined;
22
- wId: string | undefined;
23
- rwtCount: bigint | undefined;
24
- txId: string | undefined;
25
- block: string | undefined;
26
- height: number | undefined;
27
- spendBlock: string | undefined;
28
- spendHeight: number | undefined;
29
- id?: number | undefined;
30
- } & CollateralEntity>;
18
+ insertCollateral: (collateral: ExtractedCollateral, extractor: string) => Promise<import("typeorm").InsertResult>;
19
+ /**
20
+ * updates a collateral into the database
21
+ *
22
+ * @param {ExtractedCollateral} collateral
23
+ * @param {string} extractor
24
+ * @memberof CollateralAction
25
+ */
26
+ updateCollateral: (collateral: Partial<ExtractedCollateral> & Pick<ExtractedCollateral, 'boxId'>, extractor: string) => Promise<import("typeorm").UpdateResult>;
31
27
  /**
32
28
  * stores list of collaterals
33
29
  *
@@ -41,13 +37,13 @@ declare class CollateralAction {
41
37
  /**
42
38
  * Update spendBlock and spendHeight of collaterals spent in the block
43
39
  *
44
- * @param {Array<string>} spentBoxIds
40
+ * @param {Array<SpendInfo>} spendInfos
45
41
  * @param {BlockEntity} block
46
42
  * @param {string} extractor
47
43
  * @return {Promise<void>}
48
44
  * @memberof CollateralAction
49
45
  */
50
- spendCollaterals: (spentBoxIds: Array<string>, block: BlockEntity, extractor: string) => Promise<void>;
46
+ spendCollaterals: (spendInfos: Array<SpendInfo>, block: BlockEntity, extractor: string) => Promise<void>;
51
47
  /**
52
48
  * Returns all stored unspent collateral box IDs
53
49
  *
@@ -56,6 +52,16 @@ declare class CollateralAction {
56
52
  * @memberof CollateralAction
57
53
  */
58
54
  getUnspentCollateralBoxIds: (extractor: string) => Promise<Array<string>>;
55
+ /**
56
+ * Delete all collaterals corresponding to the passed block and extractor and
57
+ * update all collaterals spent in the specified block
58
+ *
59
+ * @param {string} block
60
+ * @param {string} extractor
61
+ * @return {Promise<void>}
62
+ * @memberof CollateralAction
63
+ */
64
+ deleteBlock(block: string, extractor: string): Promise<void>;
59
65
  /**
60
66
  * deletes the specified collateral box from database
61
67
  *
@@ -1 +1 @@
1
- {"version":3,"file":"collateralAction.d.ts","sourceRoot":"","sources":["../../lib/actions/collateralAction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAe,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAE,YAAY,EAA0B,MAAM,SAAS,CAAC;AAE3E,OAAO,gBAAgB,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAGxE,cAAM,gBAAgB;IAIlB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,QAAQ,CAAC,MAAM,EAAE,cAAc;IAJjC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA+B;gBAGjD,UAAU,EAAE,UAAU,EAC9B,MAAM,GAAE,cAAkC;IAKrD;;;;;;OAMG;IACH,cAAc,eACA,QAAQ,mBAAmB,CAAC,GACtC,KAAK,mBAAmB,EAAE,OAAO,CAAC,aACzB,MAAM;;;;;;;;;;;;0BA6BjB;IAEF;;;;;;;;OAQG;IACH,gBAAgB,gBACD,MAAM,mBAAmB,CAAC,SAChC,WAAW,aACP,MAAM,KAChB,QAAQ,OAAO,CAAC,CAmEjB;IAEF;;;;;;;;OAQG;IACH,gBAAgB,gBACD,MAAM,MAAM,CAAC,SACnB,WAAW,aACP,MAAM,KAChB,QAAQ,IAAI,CAAC,CAoBd;IAEF;;;;;;OAMG;IACH,0BAA0B,cACb,MAAM,KAChB,QAAQ,MAAM,MAAM,CAAC,CAAC,CAWvB;IAEF;;;;;;;OAOG;IACH,gBAAgB,UACP,MAAM,aACF,MAAM,KAChB,QAAQ,YAAY,CAAC,CAKtB;CACH;AAED,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"collateralAction.d.ts","sourceRoot":"","sources":["../../lib/actions/collateralAction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAe,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGpD,OAAO,EAAE,UAAU,EAAE,YAAY,EAA0B,MAAM,SAAS,CAAC;AAE3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,cAAM,gBAAgB;IAIlB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,QAAQ,CAAC,MAAM,EAAE,cAAc;IAJjC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA+B;gBAGjD,UAAU,EAAE,UAAU,EAC9B,MAAM,GAAE,cAAkC;IAKrD;;;;;;OAMG;IACH,gBAAgB,eACF,mBAAmB,aACpB,MAAM,6CAMjB;IAEF;;;;;;OAMG;IACH,gBAAgB,eACF,QAAQ,mBAAmB,CAAC,GACtC,KAAK,mBAAmB,EAAE,OAAO,CAAC,aACzB,MAAM,6CASjB;IAEF;;;;;;;;OAQG;IACH,gBAAgB,gBACD,MAAM,mBAAmB,CAAC,SAChC,WAAW,aACP,MAAM,KAChB,QAAQ,OAAO,CAAC,CAwFjB;IAEF;;;;;;;;OAQG;IACH,gBAAgB,eACF,MAAM,SAAS,CAAC,SACrB,WAAW,aACP,MAAM,KAChB,QAAQ,IAAI,CAAC,CA0Bd;IAEF;;;;;;OAMG;IACH,0BAA0B,cACb,MAAM,KAChB,QAAQ,MAAM,MAAM,CAAC,CAAC,CAWvB;IAEF;;;;;;;;OAQG;IACG,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBlE;;;;;;;OAOG;IACH,gBAAgB,UACP,MAAM,aACF,MAAM,KAChB,QAAQ,YAAY,CAAC,CAKtB;CACH;AAED,eAAe,gBAAgB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { DummyLogger } from '@rosen-bridge/abstract-logger';
2
- import { chunk } from 'lodash-es';
2
+ import JsonBigInt from '@rosen-bridge/json-bigint';
3
+ import { difference } from 'lodash-es';
3
4
  import { In, IsNull } from 'typeorm';
4
- import { dbIdChunkSize } from '../constants';
5
5
  import CollateralEntity from '../entities/CollateralEntity';
6
6
  class CollateralAction {
7
7
  dataSource;
@@ -13,36 +13,30 @@ class CollateralAction {
13
13
  this.collateralRepository = this.dataSource.getRepository(CollateralEntity);
14
14
  }
15
15
  /**
16
- * saves (upserts) a collateral into the database
16
+ * inserts a collateral into the database
17
17
  *
18
18
  * @param {ExtractedCollateral} collateral
19
19
  * @param {string} extractor
20
20
  * @memberof CollateralAction
21
21
  */
22
- saveCollateral = async (collateral, extractor) => {
23
- const id = (await this.collateralRepository.findOne({
24
- where: {
25
- boxId: collateral.boxId,
26
- extractor,
27
- },
28
- select: {
29
- id: true,
30
- },
31
- }))?.id;
32
- const collateralEntity = {
33
- ...(id != undefined && { id }),
22
+ insertCollateral = async (collateral, extractor) => {
23
+ return await this.collateralRepository.insert({
24
+ ...collateral,
25
+ extractor,
26
+ });
27
+ };
28
+ /**
29
+ * updates a collateral into the database
30
+ *
31
+ * @param {ExtractedCollateral} collateral
32
+ * @param {string} extractor
33
+ * @memberof CollateralAction
34
+ */
35
+ updateCollateral = async (collateral, extractor) => {
36
+ return await this.collateralRepository.update({
34
37
  extractor,
35
38
  boxId: collateral.boxId,
36
- boxSerialized: collateral.boxSerialized,
37
- wId: collateral.wId,
38
- rwtCount: collateral.rwtCount,
39
- txId: collateral.txId,
40
- block: collateral.block,
41
- height: collateral.height,
42
- spendBlock: collateral.spendBlock,
43
- spendHeight: collateral.spendHeight,
44
- };
45
- return await this.collateralRepository.save(collateralEntity);
39
+ }, collateral);
46
40
  };
47
41
  /**
48
42
  * stores list of collaterals
@@ -54,11 +48,14 @@ class CollateralAction {
54
48
  * @memberof CollateralAction
55
49
  */
56
50
  storeCollaterals = async (collaterals, block, extractor) => {
51
+ if (collaterals.length == 0) {
52
+ return true;
53
+ }
57
54
  const collateralEntities = collaterals.map((col) => ({
58
55
  extractor: extractor,
59
56
  boxId: col.boxId,
60
57
  boxSerialized: col.boxSerialized,
61
- wId: col.wId,
58
+ wid: col.wid,
62
59
  rwtCount: col.rwtCount,
63
60
  txId: col.txId,
64
61
  block: block.hash,
@@ -69,32 +66,33 @@ class CollateralAction {
69
66
  await queryRunner.startTransaction();
70
67
  try {
71
68
  const repository = await queryRunner.manager.getRepository(CollateralEntity);
72
- const boxIdToId = new Map();
73
- (await repository.find({
69
+ const existingBoxIds = (await repository.find({
74
70
  where: {
75
71
  boxId: In(collateralEntities.map((box) => box.boxId)),
76
72
  extractor: extractor,
77
73
  },
78
74
  select: {
79
- id: true,
80
75
  boxId: true,
81
76
  },
82
- })).forEach((col) => boxIdToId.set(col.boxId, col.id));
83
- const collateralsToUpdate = collateralEntities
84
- .filter((col) => boxIdToId.has(col.boxId))
85
- .map((col) => ({ ...col, id: boxIdToId.get(col.boxId) }));
86
- const collateralsToInsert = collateralEntities.filter((col) => !boxIdToId.has(col.boxId));
87
- this.logger.info(`Saving boxes with following IDs into the database: [${collateralEntities
88
- .map((col) => col.boxId)
89
- .join(', ')}]`);
90
- const savedCollaterals = await repository.save([
91
- ...collateralsToInsert,
92
- ...collateralsToUpdate,
93
- ]);
77
+ })).map((col) => col.boxId);
78
+ const collateralsToUpdate = collateralEntities.filter((col) => existingBoxIds.includes(col.boxId));
79
+ const collateralsToInsert = difference(collateralEntities, collateralsToUpdate);
80
+ if (collateralsToUpdate.length > 0) {
81
+ this.logger.info(`Inserting boxes with following IDs into the database: [${collateralsToInsert
82
+ .map((col) => col.boxId)
83
+ .join(', ')}]`);
84
+ this.logger.debug(`Inserting collateral boxes [${JsonBigInt.stringify(collateralsToInsert)}]`);
85
+ }
86
+ await repository.insert(collateralsToInsert);
87
+ if (collateralsToUpdate.length > 0)
88
+ this.logger.info(`Updating boxes with following IDs in the database: [${collateralsToUpdate
89
+ .map((col) => col.boxId)
90
+ .join(', ')}]`);
91
+ collateralsToUpdate.forEach(async (collateral) => {
92
+ this.logger.debug(`Updating collateral box in database [${JsonBigInt.stringify(collateral)}]`);
93
+ await repository.update({ boxId: collateral.boxId, extractor: extractor }, collateral);
94
+ });
94
95
  await queryRunner.commitTransaction();
95
- this.logger.debug(`Saved boxes with following IDs into the database: [${savedCollaterals
96
- .map((col) => col.boxId)
97
- .join(', ')}]`);
98
96
  }
99
97
  catch (e) {
100
98
  await queryRunner.rollbackTransaction();
@@ -109,23 +107,29 @@ class CollateralAction {
109
107
  /**
110
108
  * Update spendBlock and spendHeight of collaterals spent in the block
111
109
  *
112
- * @param {Array<string>} spentBoxIds
110
+ * @param {Array<SpendInfo>} spendInfos
113
111
  * @param {BlockEntity} block
114
112
  * @param {string} extractor
115
113
  * @return {Promise<void>}
116
114
  * @memberof CollateralAction
117
115
  */
118
- spendCollaterals = async (spentBoxIds, block, extractor) => {
119
- const spentBoxIdChunks = chunk(spentBoxIds, dbIdChunkSize);
120
- for (const spendIdChunk of spentBoxIdChunks) {
121
- const updateResult = await this.collateralRepository.update({ boxId: In(spendIdChunk), extractor: extractor }, { spendBlock: block.hash, spendHeight: block.height });
116
+ spendCollaterals = async (spendInfos, block, extractor) => {
117
+ for (const spendInfo of spendInfos) {
118
+ const updateResult = await this.collateralRepository.update({
119
+ boxId: spendInfo.boxId,
120
+ extractor: extractor,
121
+ }, {
122
+ spendBlock: block.hash,
123
+ spendHeight: block.height,
124
+ spendTxId: spendInfo.txId,
125
+ });
122
126
  if (updateResult.affected && updateResult.affected > 0) {
123
127
  const updatedRows = await this.collateralRepository.findBy({
124
- boxId: In(spendIdChunk),
128
+ boxId: spendInfo.boxId,
125
129
  spendBlock: block.hash,
126
130
  });
127
131
  for (const row of updatedRows) {
128
- this.logger.debug(`Spent collateral with boxId [${row.boxId}] belonging to watcher with WID [${row.wId}] at height ${block.height}`);
132
+ this.logger.debug(`Spent collateral with boxId [${row.boxId}] belonging to watcher with WID [${row.wid}] at height ${block.height}`);
129
133
  }
130
134
  }
131
135
  }
@@ -149,6 +153,28 @@ class CollateralAction {
149
153
  });
150
154
  return boxIds.map((box) => box.boxId);
151
155
  };
156
+ /**
157
+ * Delete all collaterals corresponding to the passed block and extractor and
158
+ * update all collaterals spent in the specified block
159
+ *
160
+ * @param {string} block
161
+ * @param {string} extractor
162
+ * @return {Promise<void>}
163
+ * @memberof CollateralAction
164
+ */
165
+ async deleteBlock(block, extractor) {
166
+ this.logger.info(`Deleting collaterals in block=[${block}] and extractor=[${extractor}]`);
167
+ await this.collateralRepository.delete({
168
+ block: block,
169
+ extractor: extractor,
170
+ });
171
+ this.logger.info(`changing spent collaterals in block=[${block}] and extractor=[${extractor}] to unspent status`);
172
+ await this.collateralRepository.update({ spendBlock: block, extractor: extractor }, {
173
+ spendBlock: null,
174
+ spendHeight: null,
175
+ spendTxId: null,
176
+ });
177
+ }
152
178
  /**
153
179
  * deletes the specified collateral box from database
154
180
  *
@@ -165,4 +191,4 @@ class CollateralAction {
165
191
  };
166
192
  }
167
193
  export default CollateralAction;
168
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGF0ZXJhbEFjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9hY3Rpb25zL2NvbGxhdGVyYWxBY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQixXQUFXLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUU1RSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sRUFBNEIsRUFBRSxFQUFFLE1BQU0sRUFBYyxNQUFNLFNBQVMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzdDLE9BQU8sZ0JBQWdCLE1BQU0sOEJBQThCLENBQUM7QUFJNUQsTUFBTSxnQkFBZ0I7SUFJRDtJQUNSO0lBSk0sb0JBQW9CLENBQStCO0lBRXBFLFlBQ21CLFVBQXNCLEVBQzlCLFNBQXlCLElBQUksV0FBVyxFQUFFO1FBRGxDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDOUIsV0FBTSxHQUFOLE1BQU0sQ0FBb0M7UUFFbkQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILGNBQWMsR0FBRyxLQUFLLEVBQ3BCLFVBQ29DLEVBQ3BDLFNBQWlCLEVBQ2pCLEVBQUU7UUFDRixNQUFNLEVBQUUsR0FBRyxDQUNULE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQztZQUN0QyxLQUFLLEVBQUU7Z0JBQ0wsS0FBSyxFQUFFLFVBQVUsQ0FBQyxLQUFLO2dCQUN2QixTQUFTO2FBQ1Y7WUFDRCxNQUFNLEVBQUU7Z0JBQ04sRUFBRSxFQUFFLElBQUk7YUFDVDtTQUNGLENBQUMsQ0FDSCxFQUFFLEVBQUUsQ0FBQztRQUVOLE1BQU0sZ0JBQWdCLEdBQUc7WUFDdkIsR0FBRyxDQUFDLEVBQUUsSUFBSSxTQUFTLElBQUks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LENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQyxDQUFDO0lBRUY7Ozs7Ozs7T0FPRztJQUNILGdCQUFnQixHQUFHLEtBQUssRUFDdEIsS0FBYSxFQUNiLFNBQWlCLEVBQ00sRUFBRTtRQUN6QixPQUFPLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQztZQUM1QyxLQUFLLEVBQUUsS0FBSztZQUNaLFNBQVMsRUFBRSxTQUFTO1NBQ3JCLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztDQUNIO0FBRUQsZUFBZSxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0TG9nZ2VyLCBEdW1teUxvZ2dlciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtbG9nZ2VyJztcbmltcG9ydCB7IEJsb2NrRW50aXR5IH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9zY2FubmVyJztcbmltcG9ydCB7IGNodW5rIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IERhdGFTb3VyY2UsIERlbGV0ZVJlc3VsdCwgSW4sIElzTnVsbCwgUmVwb3NpdG9yeSB9IGZyb20gJ3R5cGVvcm0nO1xuaW1wb3J0IHsgZGJJZENodW5rU2l6ZSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgQ29sbGF0ZXJhbEVudGl0eSBmcm9tICcuLi9lbnRpdGllcy9Db2xsYXRlcmFsRW50aXR5JztcbmltcG9ydCB7IEV4dHJhY3RlZENvbGxhdGVyYWwgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2V4dHJhY3RlZENvbGxhdGVyYWwnO1xuaW1wb3J0IHsgSnNvbkJJIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5jbGFzcyBDb2xsYXRlcmFsQWN0aW9uIHtcbiAgcHJpdmF0ZSByZWFkb25seSBjb2xsYXRlcmFsUmVwb3NpdG9yeTogUmVwb3NpdG9yeTxDb2xsYXRlcmFsRW50aXR5PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRhdGFTb3VyY2U6IERhdGFTb3VyY2UsXG4gICAgcmVhZG9ubHkgbG9nZ2VyOiBBYnN0cmFjdExvZ2dlciA9IG5ldyBEdW1teUxvZ2dlcigpXG4gICkge1xuICAgIHRoaXMuY29sbGF0ZXJhbFJlcG9zaXRvcnkgPSB0aGlzLmRhdGFTb3VyY2UuZ2V0UmVwb3NpdG9yeShDb2xsYXRlcmFsRW50aXR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBzYXZlcyAodXBzZXJ0cykgYSBjb2xsYXRlcmFsIGludG8gdGhlIGRhdGFiYXNlXG4gICAqXG4gICAqIEBwYXJhbSB7RXh0cmFjdGVkQ29sbGF0ZXJhbH0gY29sbGF0ZXJhbFxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXh0cmFjdG9yXG4gICAqIEBtZW1iZXJvZiBDb2xsYXRlcmFsQWN0aW9uXG4gICAqL1xuICBzYXZlQ29sbGF0ZXJhbCA9IGFzeW5jIChcbiAgICBjb2xsYXRlcmFsOiBQYXJ0aWFsPEV4dHJhY3RlZENvbGxhdGVyYWw+ICZcbiAgICAgIFBpY2s8RXh0cmFjdGVkQ29sbGF0ZXJhbCwgJ2JveElkJz4sXG4gICAgZXh0cmFjdG9yOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgY29uc3QgaWQgPSAoXG4gICAgICBhd2FpdCB0aGlzLmNvbGxhdGVyYWxSZXBvc2l0b3J5LmZpbmRPbmUoe1xuICAgICAgICB3aGVyZToge1xuICAgICAgICAgIGJveElkOiBjb2xsYXRlcmFsLmJveElkLFxuICAgICAgICAgIGV4dHJhY3RvcixcbiAgICAgICAgfSxcbiAgICAgICAgc2VsZWN0OiB7XG4gICAgICAgICAgaWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICk/LmlkO1xuXG4gICAgY29uc3QgY29sbGF0ZXJhbEVudGl0eSA9IHtcbiAgICAgIC4uLihpZCAhPSB1bmRlZmluZWQgJiYgeyBpZCB9KSxcbiAgICAgIGV4dHJhY3RvcixcbiAgICAgIGJveElkOiBjb2xsYXRlcmFsLmJveElkLFxuICAgICAgYm94U2VyaWFsaXplZDogY29sbGF0ZXJhbC5ib3hTZXJpYWxpemVkLFxuICAgICAgd0lkOiBjb2xsYXRlcmFsLndJZCxcbiAgICAgIHJ3dENvdW50OiBjb2xsYXRlcmFsLnJ3dENvdW50LFxuICAgICAgdHhJZDogY29sbGF0ZXJhbC50eElkLFxuICAgICAgYmxvY2s6IGNvbGxhdGVyYWwuYmxvY2ssXG4gICAgICBoZWlnaHQ6IGNvbGxhdGVyYWwuaGVpZ2h0LFxuICAgICAgc3BlbmRCbG9jazogY29sbGF0ZXJhbC5zcGVuZEJsb2NrLFxuICAgICAgc3BlbmRIZWlnaHQ6IGNvbGxhdGVyYWwuc3BlbmRIZWlnaHQsXG4gICAgfTtcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLmNvbGxhdGVyYWxSZXBvc2l0b3J5LnNhdmUoY29sbGF0ZXJhbEVudGl0eSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIHN0b3JlcyBsaXN0IG9mIGNvbGxhdGVyYWxzXG4gICAqXG4gICAqIEBwYXJhbSB7QXJyYXk8RXh0cmFjdGVkQ29sbGF0ZXJhbD59IGNvbGxhdGVyYWxzXG4gICAqIEBwYXJhbSB7QmxvY2tFbnRpdHl9IGJsb2NrXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBleHRyYWN0b3JcbiAgICogQHJldHVybiB7UHJvbWlzZTxib29sZWFuPn1cbiAgICogQG1lbWJlcm9mIENvbGxhdGVyYWxBY3Rpb25cbiAgICovXG4gIHN0b3JlQ29sbGF0ZXJhbHMgPSBhc3luYyAoXG4gICAgY29sbGF0ZXJhbHM6IEFycmF5PEV4dHJhY3RlZENvbGxhdGVyYWw+LFxuICAgIGJsb2NrOiBCbG9ja0VudGl0eSxcbiAgICBleHRyYWN0b3I6IHN0cmluZ1xuICApOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgICBjb25zdCBjb2xsYXRlcmFsRW50aXRpZXMgPSBjb2xsYXRlcmFscy5tYXAoKGNvbCkgPT4gKHtcbiAgICAgIGV4dHJhY3RvcjogZXh0cmFjdG9yLFxuICAgICAgYm94SWQ6IGNvbC5ib3hJZCxcbiAgICAgIGJveFNlcmlhbGl6ZWQ6IGNvbC5ib3hTZXJpYWxpemVkLFxuICAgICAgd0lkOiBjb2wud0lkLFxuICAgICAgcnd0Q291bnQ6IGNvbC5yd3RDb3VudCxcbiAgICAgIHR4SWQ6IGNvbC50eElkLFxuICAgICAgYmxvY2s6IGJsb2NrLmhhc2gsXG4gICAgICBoZWlnaHQ6IGNvbC5oZWlnaHQgIT0gdW5kZWZpbmVkID8gY29sLmhlaWdodCA6IGJsb2NrLmhlaWdodCxcbiAgICB9KSk7XG5cbiAgICBjb25zdCBxdWVyeVJ1bm5lciA9IHRoaXMuZGF0YVNvdXJjZS5jcmVhdGVRdWVyeVJ1bm5lcigpO1xuICAgIGF3YWl0IHF1ZXJ5UnVubmVyLmNvbm5lY3QoKTtcbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5zdGFydFRyYW5zYWN0aW9uKCk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlcG9zaXRvcnkgPSBhd2FpdCBxdWVyeVJ1bm5lci5tYW5hZ2VyLmdldFJlcG9zaXRvcnkoXG4gICAgICAgIENvbGxhdGVyYWxFbnRpdHlcbiAgICAgICk7XG4gICAgICBjb25zdCBib3hJZFRvSWQgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICAgICAgKFxuICAgICAgICBhd2FpdCByZXBvc2l0b3J5LmZpbmQoe1xuICAgICAgICAgIHdoZXJlOiB7XG4gICAgICAgICAgICBib3hJZDogSW4oY29sbGF0ZXJhbEVudGl0aWVzLm1hcCgoYm94KSA9PiBib3guYm94SWQpKSxcbiAgICAgICAgICAgIGV4dHJhY3RvcjogZXh0cmFjdG9yLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2VsZWN0OiB7XG4gICAgICAgICAgICBpZDogdHJ1ZSxcbiAgICAgICAgICAgIGJveElkOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICApLmZvckVhY2goKGNvbCkgPT4gYm94SWRUb0lkLnNldChjb2wuYm94SWQsIGNvbC5pZCkpO1xuXG4gICAgICBjb25zdCBjb2xsYXRlcmFsc1RvVXBkYXRlID0gY29sbGF0ZXJhbEVudGl0aWVzXG4gICAgICAgIC5maWx0ZXIoKGNvbCkgPT4gYm94SWRUb0lkLmhhcyhjb2wuYm94SWQpKVxuICAgICAgICAubWFwKChjb2wpID0+ICh7IC4uLmNvbCwgaWQ6IGJveElkVG9JZC5nZXQoY29sLmJveElkKSB9KSk7XG5cbiAgICAgIGNvbnN0IGNvbGxhdGVyYWxzVG9JbnNlcnQgPSBjb2xsYXRlcmFsRW50aXRpZXMuZmlsdGVyKFxuICAgICAgICAoY29sKSA9PiAhYm94SWRUb0lkLmhhcyhjb2wuYm94SWQpXG4gICAgICApO1xuXG4gICAgICB0aGlzLmxvZ2dlci5pbmZvKFxuICAgICAgICBgU2F2aW5nIGJveGVzIHdpdGggZm9sbG93aW5nIElEcyBpbnRvIHRoZSBkYXRhYmFzZTogWyR7Y29sbGF0ZXJhbEVudGl0aWVzXG4gICAgICAgICAgLm1hcCgoY29sKSA9PiBjb2wuYm94SWQpXG4gICAgICAgICAgLmpvaW4oJywgJyl9XWBcbiAgICAgICk7XG4gICAgICBjb25zdCBzYXZlZENvbGxhdGVyYWxzID0gYXdhaXQgcmVwb3NpdG9yeS5zYXZlKFtcbiAgICAgICAgLi4uY29sbGF0ZXJhbHNUb0luc2VydCxcbiAgICAgICAgLi4uY29sbGF0ZXJhbHNUb1VwZGF0ZSxcbiAgICAgIF0pO1xuICAgICAgYXdhaXQgcXVlcnlSdW5uZXIuY29tbWl0VHJhbnNhY3Rpb24oKTtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICBgU2F2ZWQgYm94ZXMgd2l0aCBmb2xsb3dpbmcgSURzIGludG8gdGhlIGRhdGFiYXNlOiBbJHtzYXZlZENvbGxhdGVyYWxzXG4gICAgICAgICAgLm1hcCgoY29sKSA9PiBjb2wuYm94SWQpXG4gICAgICAgICAgLmpvaW4oJywgJyl9XWBcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgYXdhaXQgcXVlcnlSdW5uZXIucm9sbGJhY2tUcmFuc2FjdGlvbigpO1xuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXG4gICAgICAgIGBBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgc3RvcmVDb2xsYXRlcmFscyBhY3Rpb246ICR7ZX1gXG4gICAgICApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCBxdWVyeVJ1bm5lci5yZWxlYXNlKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBzcGVuZEJsb2NrIGFuZCBzcGVuZEhlaWdodCBvZiBjb2xsYXRlcmFscyBzcGVudCBpbiB0aGUgYmxvY2tcbiAgICpcbiAgICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSBzcGVudEJveElkc1xuICAgKiBAcGFyYW0ge0Jsb2NrRW50aXR5fSBibG9ja1xuICAgKiBAcGFyYW0ge3N0cmluZ30gZXh0cmFjdG9yXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59XG4gICAqIEBtZW1iZXJvZiBDb2xsYXRlcmFsQWN0aW9uXG4gICAqL1xuICBzcGVuZENvbGxhdGVyYWxzID0gYXN5bmMgKFxuICAgIHNwZW50Qm94SWRzOiBBcnJheTxzdHJpbmc+LFxuICAgIGJsb2NrOiBCbG9ja0VudGl0eSxcbiAgICBleHRyYWN0b3I6IHN0cmluZ1xuICApOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBjb25zdCBzcGVudEJveElkQ2h1bmtzID0gY2h1bmsoc3BlbnRCb3hJZHMsIGRiSWRDaHVua1NpemUpO1xuICAgIGZvciAoY29uc3Qgc3BlbmRJZENodW5rIG9mIHNwZW50Qm94SWRDaHVua3MpIHtcbiAgICAgIGNvbnN0IHVwZGF0ZVJlc3VsdCA9IGF3YWl0IHRoaXMuY29sbGF0ZXJhbFJlcG9zaXRvcnkudXBkYXRlKFxuICAgICAgICB7IGJveElkOiBJbihzcGVuZElkQ2h1bmspLCBleHRyYWN0b3I6IGV4dHJhY3RvciB9LFxuICAgICAgICB7IHNwZW5kQmxvY2s6IGJsb2NrLmhhc2gsIHNwZW5kSGVpZ2h0OiBibG9jay5oZWlnaHQgfVxuICAgICAgKTtcblxuICAgICAgaWYgKHVwZGF0ZVJlc3VsdC5hZmZlY3RlZCAmJiB1cGRhdGVSZXN1bHQuYWZmZWN0ZWQgPiAwKSB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRSb3dzID0gYXdhaXQgdGhpcy5jb2xsYXRlcmFsUmVwb3NpdG9yeS5maW5kQnkoe1xuICAgICAgICAgIGJveElkOiBJbihzcGVuZElkQ2h1bmspLFxuICAgICAgICAgIHNwZW5kQmxvY2s6IGJsb2NrLmhhc2gsXG4gICAgICAgIH0pO1xuICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiB1cGRhdGVkUm93cykge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgYFNwZW50IGNvbGxhdGVyYWwgd2l0aCBib3hJZCBbJHtyb3cuYm94SWR9XSBiZWxvbmdpbmcgdG8gd2F0Y2hlciB3aXRoIFdJRCBbJHtyb3cud0lkfV0gYXQgaGVpZ2h0ICR7YmxvY2suaGVpZ2h0fWBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFsbCBzdG9yZWQgdW5zcGVudCBjb2xsYXRlcmFsIGJveCBJRHNcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGV4dHJhY3RvclxuICAgKiBAcmV0dXJuIHtQcm9taXNlPEFycmF5PHN0cmluZz4+fVxuICAgKiBAbWVtYmVyb2YgQ29sbGF0ZXJhbEFjdGlvblxuICAgKi9cbiAgZ2V0VW5zcGVudENvbGxhdGVyYWxCb3hJZHMgPSBhc3luYyAoXG4gICAgZXh0cmFjdG9yOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxBcnJheTxzdHJpbmc+PiA9PiB7XG4gICAgY29uc3QgYm94SWRzID0gYXdhaXQgdGhpcy5jb2xsYXRlcmFsUmVwb3NpdG9yeS5maW5kKHtcbiAgICAgIHdoZXJlOiB7XG4gICAgICAgIGV4dHJhY3RvcjogZXh0cmFjdG9yLFxuICAgICAgICBzcGVuZEJsb2NrOiBJc051bGwoKSxcbiAgICAgIH0sXG4gICAgICBzZWxlY3Q6IHtcbiAgICAgICAgYm94SWQ6IHRydWUsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIHJldHVybiBib3hJZHMubWFwKChib3gpID0+IGJveC5ib3hJZCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIGRlbGV0ZXMgdGhlIHNwZWNpZmllZCBjb2xsYXRlcmFsIGJveCBmcm9tIGRhdGFiYXNlXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBib3hJZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXh0cmFjdG9yXG4gICAqIEByZXR1cm4ge1Byb21pc2U8RGVsZXRlUmVzdWx0Pn1cbiAgICogQG1lbWJlcm9mIENvbGxhdGVyYWxBY3Rpb25cbiAgICovXG4gIGRlbGV0ZUNvbGxhdGVyYWwgPSBhc3luYyAoXG4gICAgYm94SWQ6IHN0cmluZyxcbiAgICBleHRyYWN0b3I6IHN0cmluZ1xuICApOiBQcm9taXNlPERlbGV0ZVJlc3VsdD4gPT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmNvbGxhdGVyYWxSZXBvc2l0b3J5LmRlbGV0ZSh7XG4gICAgICBib3hJZDogYm94SWQsXG4gICAgICBleHRyYWN0b3I6IGV4dHJhY3RvcixcbiAgICB9KTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29sbGF0ZXJhbEFjdGlvbjtcbiJdfQ==
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGF0ZXJhbEFjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9hY3Rpb25zL2NvbGxhdGVyYWxBY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQixXQUFXLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUU1RSxPQUFPLFVBQVUsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3ZDLE9BQU8sRUFBNEIsRUFBRSxFQUFFLE1BQU0sRUFBYyxNQUFNLFNBQVMsQ0FBQztBQUMzRSxPQUFPLGdCQUFnQixNQUFNLDhCQUE4QixDQUFDO0FBSTVELE1BQU0sZ0JBQWdCO0lBSUQ7SUFDUjtJQUpNLG9CQUFvQixDQUErQjtJQUVwRSxZQUNtQixVQUFzQixFQUM5QixTQUF5QixJQUFJLFdBQVcsRUFBRTtRQURsQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQzlCLFdBQU0sR0FBTixNQUFNLENBQW9DO1FBRW5ELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxnQkFBZ0IsR0FBRyxLQUFLLEVBQ3RCLFVBQStCLEVBQy9CLFNBQWlCLEVBQ2pCLEVBQUU7UUFDRixPQUFPLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQztZQUM1QyxHQUFHLFVBQVU7WUFDYixTQUFTO1NBQ1YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0lBRUY7Ozs7OztPQU1HO0lBQ0gsZ0JBQWdCLEdBQUcsS0FBSyxFQUN0QixVQUNvQyxFQUNwQyxTQUFpQixFQUNqQixFQUFFO1FBQ0YsT0FBTyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQzNDO1lBQ0UsU0FBUztZQUNULEtBQUssRUFBRSxVQUFVLENBQUMsS0FB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QUM7UUFFRixNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUM7WUFDckMsS0FBSyxFQUFFLEtBQUs7WUFDWixTQUFTLEVBQUUsU0FBUztTQUNyQixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDZCx3Q0FBd0MsS0FBSyxvQkFBb0IsU0FBUyxxQkFBcUIsQ0FDaEcsQ0FBQztRQUVGLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FDcEMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsRUFDM0M7WUFDRSxVQUFVLEVBQUUsSUFBSTtZQUNoQixXQUFXLEVBQUUsSUFBSTtZQUNqQixTQUFTLEVBQUUsSUFBSTtTQUNoQixDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILGdCQUFnQixHQUFHLEtBQUssRUFDdEIsS0FBYSxFQUNiLFNBQWlCLEVBQ00sRUFBRTtRQUN6QixPQUFPLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQztZQUM1QyxLQUFLLEVBQUUsS0FBSztZQUNaLFNBQVMsRUFBRSxTQUFTO1NBQ3JCLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztDQUNIO0FBRUQsZUFBZSxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0TG9nZ2VyLCBEdW1teUxvZ2dlciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtbG9nZ2VyJztcbmltcG9ydCB7IEJsb2NrRW50aXR5IH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9zY2FubmVyJztcbmltcG9ydCBKc29uQmlnSW50IGZyb20gJ0Byb3Nlbi1icmlkZ2UvanNvbi1iaWdpbnQnO1xuaW1wb3J0IHsgZGlmZmVyZW5jZSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBEYXRhU291cmNlLCBEZWxldGVSZXN1bHQsIEluLCBJc051bGwsIFJlcG9zaXRvcnkgfSBmcm9tICd0eXBlb3JtJztcbmltcG9ydCBDb2xsYXRlcmFsRW50aXR5IGZyb20gJy4uL2VudGl0aWVzL0NvbGxhdGVyYWxFbnRpdHknO1xuaW1wb3J0IHsgRXh0cmFjdGVkQ29sbGF0ZXJhbCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZXh0cmFjdGVkQ29sbGF0ZXJhbCc7XG5pbXBvcnQgeyBTcGVuZEluZm8gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3R5cGVzJztcblxuY2xhc3MgQ29sbGF0ZXJhbEFjdGlvbiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29sbGF0ZXJhbFJlcG9zaXRvcnk6IFJlcG9zaXRvcnk8Q29sbGF0ZXJhbEVudGl0eT47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBkYXRhU291cmNlOiBEYXRhU291cmNlLFxuICAgIHJlYWRvbmx5IGxvZ2dlcjogQWJzdHJhY3RMb2dnZXIgPSBuZXcgRHVtbXlMb2dnZXIoKVxuICApIHtcbiAgICB0aGlzLmNvbGxhdGVyYWxSZXBvc2l0b3J5ID0gdGhpcy5kYXRhU291cmNlLmdldFJlcG9zaXRvcnkoQ29sbGF0ZXJhbEVudGl0eSk7XG4gIH1cblxuICAvKipcbiAgICogaW5zZXJ0cyBhIGNvbGxhdGVyYWwgaW50byB0aGUgZGF0YWJhc2VcbiAgICpcbiAgICogQHBhcmFtIHtFeHRyYWN0ZWRDb2xsYXRlcmFsfSBjb2xsYXRlcmFsXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBleHRyYWN0b3JcbiAgICogQG1lbWJlcm9mIENvbGxhdGVyYWxBY3Rpb25cbiAgICovXG4gIGluc2VydENvbGxhdGVyYWwgPSBhc3luYyAoXG4gICAgY29sbGF0ZXJhbDogRXh0cmFjdGVkQ29sbGF0ZXJhbCxcbiAgICBleHRyYWN0b3I6IHN0cmluZ1xuICApID0+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jb2xsYXRlcmFsUmVwb3NpdG9yeS5pbnNlcnQoe1xuICAgICAgLi4uY29sbGF0ZXJhbCxcbiAgICAgIGV4dHJhY3RvcixcbiAgICB9KTtcbiAgfTtcblxuICAvKipcbiAgICogdXBkYXRlcyBhIGNvbGxhdGVyYWwgaW50byB0aGUgZGF0YWJhc2VcbiAgICpcbiAgICogQHBhcmFtIHtFeHRyYWN0ZWRDb2xsYXRlcmFsfSBjb2xsYXRlcmFsXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBleHRyYWN0b3JcbiAgICogQG1lbWJlcm9mIENvbGxhdGVyYWxBY3Rpb25cbiAgICovXG4gIHVwZGF0ZUNvbGxhdGVyYWwgPSBhc3luYyAoXG4gICAgY29sbGF0ZXJhbDogUGFydGlhbDxFeHRyYWN0ZWRDb2xsYXRlcmFsPiAmXG4gICAgICBQaWNrPEV4dHJhY3RlZENvbGxhdGVyYWwsICdib3hJZCc+LFxuICAgIGV4dHJhY3Rvcjogc3RyaW5nXG4gICkgPT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmNvbGxhdGVyYWxSZXBvc2l0b3J5LnVwZGF0ZShcbiAgICAgIHtcbiAgICAgICAgZXh0cmFjdG9yLFxuICAgICAgICBib3hJZDogY29sbGF0ZXJhbC5ib3hJZCxcbiAgICAgIH0sXG4gICAgICBjb2xsYXRlcmFsXG4gICAgKTtcbiAgfTtcblxuICAvKipcbiAgICogc3RvcmVzIGxpc3Qgb2YgY29sbGF0ZXJhbHNcbiAgICpcbiAgICogQHBhcmFtIHtBcnJheTxFeHRyYWN0ZWRDb2xsYXRlcmFsPn0gY29sbGF0ZXJhbHNcbiAgICogQHBhcmFtIHtCbG9ja0VudGl0eX0gYmxvY2tcbiAgICogQHBhcmFtIHtzdHJpbmd9IGV4dHJhY3RvclxuICAgKiBAcmV0dXJuIHtQcm9taXNlPGJvb2xlYW4+fVxuICAgKiBAbWVtYmVyb2YgQ29sbGF0ZXJhbEFjdGlvblxuICAgKi9cbiAgc3RvcmVDb2xsYXRlcmFscyA9IGFzeW5jIChcbiAgICBjb2xsYXRlcmFsczogQXJyYXk8RXh0cmFjdGVkQ29sbGF0ZXJhbD4sXG4gICAgYmxvY2s6IEJsb2NrRW50aXR5LFxuICAgIGV4dHJhY3Rvcjogc3RyaW5nXG4gICk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICAgIGlmIChjb2xsYXRlcmFscy5sZW5ndGggPT0gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgY29sbGF0ZXJhbEVudGl0aWVzID0gY29sbGF0ZXJhbHMubWFwKChjb2wpID0+ICh7XG4gICAgICBleHRyYWN0b3I6IGV4dHJhY3RvcixcbiAgICAgIGJveElkOiBjb2wuYm94SWQsXG4gICAgICBib3hTZXJpYWxpemVkOiBjb2wuYm94U2VyaWFsaXplZCxcbiAgICAgIHdpZDogY29sLndpZCxcbiAgICAgIHJ3dENvdW50OiBjb2wucnd0Q291bnQsXG4gICAgICB0eElkOiBjb2wudHhJZCxcbiAgICAgIGJsb2NrOiBibG9jay5oYXNoLFxuICAgICAgaGVpZ2h0OiBjb2wuaGVpZ2h0ICE9IHVuZGVmaW5lZCA/IGNvbC5oZWlnaHQgOiBibG9jay5oZWlnaHQsXG4gICAgfSkpO1xuXG4gICAgY29uc3QgcXVlcnlSdW5uZXIgPSB0aGlzLmRhdGFTb3VyY2UuY3JlYXRlUXVlcnlSdW5uZXIoKTtcbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5jb25uZWN0KCk7XG4gICAgYXdhaXQgcXVlcnlSdW5uZXIuc3RhcnRUcmFuc2FjdGlvbigpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXBvc2l0b3J5ID0gYXdhaXQgcXVlcnlSdW5uZXIubWFuYWdlci5nZXRSZXBvc2l0b3J5KFxuICAgICAgICBDb2xsYXRlcmFsRW50aXR5XG4gICAgICApO1xuICAgICAgY29uc3QgZXhpc3RpbmdCb3hJZHMgPSAoXG4gICAgICAgIGF3YWl0IHJlcG9zaXRvcnkuZmluZCh7XG4gICAgICAgICAgd2hlcmU6IHtcbiAgICAgICAgICAgIGJveElkOiBJbihjb2xsYXRlcmFsRW50aXRpZXMubWFwKChib3gpID0+IGJveC5ib3hJZCkpLFxuICAgICAgICAgICAgZXh0cmFjdG9yOiBleHRyYWN0b3IsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZWxlY3Q6IHtcbiAgICAgICAgICAgIGJveElkOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICApLm1hcCgoY29sKSA9PiBjb2wuYm94SWQpO1xuXG4gICAgICBjb25zdCBjb2xsYXRlcmFsc1RvVXBkYXRlID0gY29sbGF0ZXJhbEVudGl0aWVzLmZpbHRlcigoY29sKSA9PlxuICAgICAgICBleGlzdGluZ0JveElkcy5pbmNsdWRlcyhjb2wuYm94SWQpXG4gICAgICApO1xuXG4gICAgICBjb25zdCBjb2xsYXRlcmFsc1RvSW5zZXJ0ID0gZGlmZmVyZW5jZShcbiAgICAgICAgY29sbGF0ZXJhbEVudGl0aWVzLFxuICAgICAgICBjb2xsYXRlcmFsc1RvVXBkYXRlXG4gICAgICApO1xuXG4gICAgICBpZiAoY29sbGF0ZXJhbHNUb1VwZGF0ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmluZm8oXG4gICAgICAgICAgYEluc2VydGluZyBib3hlcyB3aXRoIGZvbGxvd2luZyBJRHMgaW50byB0aGUgZGF0YWJhc2U6IFske2NvbGxhdGVyYWxzVG9JbnNlcnRcbiAgICAgICAgICAgIC5tYXAoKGNvbCkgPT4gY29sLmJveElkKVxuICAgICAgICAgICAgLmpvaW4oJywgJyl9XWBcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgYEluc2VydGluZyBjb2xsYXRlcmFsIGJveGVzIFske0pzb25CaWdJbnQuc3RyaW5naWZ5KFxuICAgICAgICAgICAgY29sbGF0ZXJhbHNUb0luc2VydFxuICAgICAgICAgICl9XWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGF3YWl0IHJlcG9zaXRvcnkuaW5zZXJ0KGNvbGxhdGVyYWxzVG9JbnNlcnQpO1xuXG4gICAgICBpZiAoY29sbGF0ZXJhbHNUb1VwZGF0ZS5sZW5ndGggPiAwKVxuICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKFxuICAgICAgICAgIGBVcGRhdGluZyBib3hlcyB3aXRoIGZvbGxvd2luZyBJRHMgaW4gdGhlIGRhdGFiYXNlOiBbJHtjb2xsYXRlcmFsc1RvVXBkYXRlXG4gICAgICAgICAgICAubWFwKChjb2wpID0+IGNvbC5ib3hJZClcbiAgICAgICAgICAgIC5qb2luKCcsICcpfV1gXG4gICAgICAgICk7XG4gICAgICBjb2xsYXRlcmFsc1RvVXBkYXRlLmZvckVhY2goYXN5bmMgKGNvbGxhdGVyYWwpID0+IHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgYFVwZGF0aW5nIGNvbGxhdGVyYWwgYm94IGluIGRhdGFiYXNlIFske0pzb25CaWdJbnQuc3RyaW5naWZ5KFxuICAgICAgICAgICAgY29sbGF0ZXJhbFxuICAgICAgICAgICl9XWBcbiAgICAgICAgKTtcbiAgICAgICAgYXdhaXQgcmVwb3NpdG9yeS51cGRhdGUoXG4gICAgICAgICAgeyBib3hJZDogY29sbGF0ZXJhbC5ib3hJZCwgZXh0cmFjdG9yOiBleHRyYWN0b3IgfSxcbiAgICAgICAgICBjb2xsYXRlcmFsXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgYXdhaXQgcXVlcnlSdW5uZXIuY29tbWl0VHJhbnNhY3Rpb24oKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhd2FpdCBxdWVyeVJ1bm5lci5yb2xsYmFja1RyYW5zYWN0aW9uKCk7XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcihcbiAgICAgICAgYEFuIGVycm9yIG9jY3VycmVkIGR1cmluZyBzdG9yZUNvbGxhdGVyYWxzIGFjdGlvbjogJHtlfWBcbiAgICAgICk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnJlbGVhc2UoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcblxuICAvKipcbiAgICogVXBkYXRlIHNwZW5kQmxvY2sgYW5kIHNwZW5kSGVpZ2h0IG9mIGNvbGxhdGVyYWxzIHNwZW50IGluIHRoZSBibG9ja1xuICAgKlxuICAgKiBAcGFyYW0ge0FycmF5PFNwZW5kSW5mbz59IHNwZW5kSW5mb3NcbiAgICogQHBhcmFtIHtCbG9ja0VudGl0eX0gYmxvY2tcbiAgICogQHBhcmFtIHtzdHJpbmd9IGV4dHJhY3RvclxuICAgKiBAcmV0dXJuIHtQcm9taXNlPHZvaWQ+fVxuICAgKiBAbWVtYmVyb2YgQ29sbGF0ZXJhbEFjdGlvblxuICAgKi9cbiAgc3BlbmRDb2xsYXRlcmFscyA9IGFzeW5jIChcbiAgICBzcGVuZEluZm9zOiBBcnJheTxTcGVuZEluZm8+LFxuICAgIGJsb2NrOiBCbG9ja0VudGl0eSxcbiAgICBleHRyYWN0b3I6IHN0cmluZ1xuICApOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBmb3IgKGNvbnN0IHNwZW5kSW5mbyBvZiBzcGVuZEluZm9zKSB7XG4gICAgICBjb25zdCB1cGRhdGVSZXN1bHQgPSBhd2FpdCB0aGlzLmNvbGxhdGVyYWxSZXBvc2l0b3J5LnVwZGF0ZShcbiAgICAgICAge1xuICAgICAgICAgIGJveElkOiBzcGVuZEluZm8uYm94SWQsXG4gICAgICAgICAgZXh0cmFjdG9yOiBleHRyYWN0b3IsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBzcGVuZEJsb2NrOiBibG9jay5oYXNoLFxuICAgICAgICAgIHNwZW5kSGVpZ2h0OiBibG9jay5oZWlnaHQsXG4gICAgICAgICAgc3BlbmRUeElkOiBzcGVuZEluZm8udHhJZCxcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgaWYgKHVwZGF0ZVJlc3VsdC5hZmZlY3RlZCAmJiB1cGRhdGVSZXN1bHQuYWZmZWN0ZWQgPiAwKSB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRSb3dzID0gYXdhaXQgdGhpcy5jb2xsYXRlcmFsUmVwb3NpdG9yeS5maW5kQnkoe1xuICAgICAgICAgIGJveElkOiBzcGVuZEluZm8uYm94SWQsXG4gICAgICAgICAgc3BlbmRCbG9jazogYmxvY2suaGFzaCxcbiAgICAgICAgfSk7XG4gICAgICAgIGZvciAoY29uc3Qgcm93IG9mIHVwZGF0ZWRSb3dzKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgICBgU3BlbnQgY29sbGF0ZXJhbCB3aXRoIGJveElkIFske3Jvdy5ib3hJZH1dIGJlbG9uZ2luZyB0byB3YXRjaGVyIHdpdGggV0lEIFske3Jvdy53aWR9XSBhdCBoZWlnaHQgJHtibG9jay5oZWlnaHR9YFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYWxsIHN0b3JlZCB1bnNwZW50IGNvbGxhdGVyYWwgYm94IElEc1xuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXh0cmFjdG9yXG4gICAqIEByZXR1cm4ge1Byb21pc2U8QXJyYXk8c3RyaW5nPj59XG4gICAqIEBtZW1iZXJvZiBDb2xsYXRlcmFsQWN0aW9uXG4gICAqL1xuICBnZXRVbnNwZW50Q29sbGF0ZXJhbEJveElkcyA9IGFzeW5jIChcbiAgICBleHRyYWN0b3I6IHN0cmluZ1xuICApOiBQcm9taXNlPEFycmF5PHN0cmluZz4+ID0+IHtcbiAgICBjb25zdCBib3hJZHMgPSBhd2FpdCB0aGlzLmNvbGxhdGVyYWxSZXBvc2l0b3J5LmZpbmQoe1xuICAgICAgd2hlcmU6IHtcbiAgICAgICAgZXh0cmFjdG9yOiBleHRyYWN0b3IsXG4gICAgICAgIHNwZW5kQmxvY2s6IElzTnVsbCgpLFxuICAgICAgfSxcbiAgICAgIHNlbGVjdDoge1xuICAgICAgICBib3hJZDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgcmV0dXJuIGJveElkcy5tYXAoKGJveCkgPT4gYm94LmJveElkKTtcbiAgfTtcblxuICAvKipcbiAgICogRGVsZXRlIGFsbCBjb2xsYXRlcmFscyBjb3JyZXNwb25kaW5nIHRvIHRoZSBwYXNzZWQgYmxvY2sgYW5kIGV4dHJhY3RvciBhbmRcbiAgICogdXBkYXRlIGFsbCBjb2xsYXRlcmFscyBzcGVudCBpbiB0aGUgc3BlY2lmaWVkIGJsb2NrXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBibG9ja1xuICAgKiBAcGFyYW0ge3N0cmluZ30gZXh0cmFjdG9yXG4gICAqIEByZXR1cm4ge1Byb21pc2U8dm9pZD59XG4gICAqIEBtZW1iZXJvZiBDb2xsYXRlcmFsQWN0aW9uXG4gICAqL1xuICBhc3luYyBkZWxldGVCbG9jayhibG9jazogc3RyaW5nLCBleHRyYWN0b3I6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMubG9nZ2VyLmluZm8oXG4gICAgICBgRGVsZXRpbmcgY29sbGF0ZXJhbHMgaW4gYmxvY2s9WyR7YmxvY2t9XSBhbmQgZXh0cmFjdG9yPVske2V4dHJhY3Rvcn1dYFxuICAgICk7XG5cbiAgICBhd2FpdCB0aGlzLmNvbGxhdGVyYWxSZXBvc2l0b3J5LmRlbGV0ZSh7XG4gICAgICBibG9jazogYmxvY2ssXG4gICAgICBleHRyYWN0b3I6IGV4dHJhY3RvcixcbiAgICB9KTtcblxuICAgIHRoaXMubG9nZ2VyLmluZm8oXG4gICAgICBgY2hhbmdpbmcgc3BlbnQgY29sbGF0ZXJhbHMgaW4gYmxvY2s9WyR7YmxvY2t9XSBhbmQgZXh0cmFjdG9yPVske2V4dHJhY3Rvcn1dIHRvIHVuc3BlbnQgc3RhdHVzYFxuICAgICk7XG5cbiAgICBhd2FpdCB0aGlzLmNvbGxhdGVyYWxSZXBvc2l0b3J5LnVwZGF0ZShcbiAgICAgIHsgc3BlbmRCbG9jazogYmxvY2ssIGV4dHJhY3RvcjogZXh0cmFjdG9yIH0sXG4gICAgICB7XG4gICAgICAgIHNwZW5kQmxvY2s6IG51bGwsXG4gICAgICAgIHNwZW5kSGVpZ2h0OiBudWxsLFxuICAgICAgICBzcGVuZFR4SWQ6IG51bGwsXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBkZWxldGVzIHRoZSBzcGVjaWZpZWQgY29sbGF0ZXJhbCBib3ggZnJvbSBkYXRhYmFzZVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYm94SWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IGV4dHJhY3RvclxuICAgKiBAcmV0dXJuIHtQcm9taXNlPERlbGV0ZVJlc3VsdD59XG4gICAqIEBtZW1iZXJvZiBDb2xsYXRlcmFsQWN0aW9uXG4gICAqL1xuICBkZWxldGVDb2xsYXRlcmFsID0gYXN5bmMgKFxuICAgIGJveElkOiBzdHJpbmcsXG4gICAgZXh0cmFjdG9yOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxEZWxldGVSZXN1bHQ+ID0+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jb2xsYXRlcmFsUmVwb3NpdG9yeS5kZWxldGUoe1xuICAgICAgYm94SWQ6IGJveElkLFxuICAgICAgZXh0cmFjdG9yOiBleHRyYWN0b3IsXG4gICAgfSk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IENvbGxhdGVyYWxBY3Rpb247XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"commitmentAction.d.ts","sourceRoot":"","sources":["../../lib/actions/commitmentAction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAkB,MAAM,SAAS,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAe,MAAM,+BAA+B,CAAC;AAE5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAGxE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,cAAM,gBAAgB;IACpB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA+B;gBAExD,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,cAAc;IAM3D;;;;;OAKG;IACH,gBAAgB,gBACD,MAAM,mBAAmB,CAAC,SAChC,WAAW,aACP,MAAM,KAChB,QAAQ,OAAO,CAAC,CAuDjB;IAEF;;;;;OAKG;IACH,gBAAgB,YACL,MAAM,SAAS,CAAC,SAClB,WAAW,aACP,MAAM,KAChB,QAAQ,IAAI,CAAC,CAkCd;IAEF;;;;;OAKG;IACH,WAAW,UAAiB,MAAM,aAAa,MAAM,mBAYnD;CACH;AAED,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"commitmentAction.d.ts","sourceRoot":"","sources":["../../lib/actions/commitmentAction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAkB,MAAM,SAAS,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAe,MAAM,+BAA+B,CAAC;AAE5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAGxE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,cAAM,gBAAgB;IACpB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA+B;gBAExD,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,cAAc;IAM3D;;;;;OAKG;IACH,gBAAgB,gBACD,MAAM,mBAAmB,CAAC,SAChC,WAAW,aACP,MAAM,KAChB,QAAQ,OAAO,CAAC,CAuDjB;IAEF;;;;;OAKG;IACH,gBAAgB,YACL,MAAM,SAAS,CAAC,SAClB,WAAW,aACP,MAAM,KAChB,QAAQ,IAAI,CAAC,CAmCd;IAEF;;;;;OAKG;IACH,WAAW,UAAiB,MAAM,aAAa,MAAM,mBAYnD;CACH;AAED,eAAe,gBAAgB,CAAC"}
@@ -92,6 +92,7 @@ class CommitmentAction {
92
92
  id: commitment.id,
93
93
  }, {
94
94
  spendBlock: block.hash,
95
+ spendHeight: block.height,
95
96
  spendTxId: spendInfo.txId,
96
97
  spendIndex: spendInfo.index,
97
98
  });
@@ -112,8 +113,8 @@ class CommitmentAction {
112
113
  block: block,
113
114
  extractor: extractor,
114
115
  });
115
- await this.commitmentRepository.update({ spendBlock: block, extractor: extractor }, { spendBlock: null, spendHeight: 0, spendTxId: null, spendIndex: null });
116
+ await this.commitmentRepository.update({ spendBlock: block, extractor: extractor }, { spendBlock: null, spendHeight: null, spendTxId: null, spendIndex: null });
116
117
  };
117
118
  }
118
119
  export default CommitmentAction;
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWl0bWVudEFjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9hY3Rpb25zL2NvbW1pdG1lbnRBY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLEVBQUUsRUFBYyxNQUFNLFNBQVMsQ0FBQztBQUNyRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRWxDLE9BQU8sRUFBa0IsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHNUUsT0FBTyxnQkFBZ0IsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRzdDLE1BQU0sZ0JBQWdCO0lBQ1gsTUFBTSxDQUFpQjtJQUNmLFVBQVUsQ0FBYTtJQUN2QixvQkFBb0IsQ0FBK0I7SUFFcEUsWUFBWSxVQUFzQixFQUFFLE1BQXVCO1FBQ3pELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksV0FBVyxFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxnQkFBZ0IsR0FBRyxLQUFLLEVBQ3RCLFdBQXVDLEVBQ3ZDLEtBQWtCLEVBQ2xCLFNBQWlCLEVBQ0MsRUFBRTtRQUNwQixJQUFJLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQzFDLE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRSxNQUFNLGdCQUFnQixHQUFHLE1BQU0sSUFBSSxDQUFDLG9CQUFv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QUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3ZFO1NBQ0Y7SUFDSCxDQUFDLENBQUM7SUFFRjs7Ozs7T0FLRztJQUNILFdBQVcsR0FBRyxLQUFLLEVBQUUsS0FBYSxFQUFFLFNBQWlCLEVBQUUsRUFBRTtRQUN2RCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDZCxrQ0FBa0MsS0FBSyxtQkFBbUIsU0FBUyxFQUFFLENBQ3RFLENBQUM7UUFDRixNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUM7WUFDckMsS0FBSyxFQUFFLEtBQUs7WUFDWixTQUFTLEVBQUUsU0FBUztTQUNyQixDQUFDLENBQUM7UUFDSCxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQ3BDLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEVBQzNDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUN4RSxDQUFDO0lBQ0osQ0FBQyxDQUFDO0NBQ0g7QUFFRCxlQUFlLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YVNvdXJjZSwgSW4sIFJlcG9zaXRvcnkgfSBmcm9tICd0eXBlb3JtJztcbmltcG9ydCB7IGNodW5rIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEJsb2NrRW50aXR5IH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9zY2FubmVyJztcbmltcG9ydCB7IEFic3RyYWN0TG9nZ2VyLCBEdW1teUxvZ2dlciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtbG9nZ2VyJztcblxuaW1wb3J0IHsgZXh0cmFjdGVkQ29tbWl0bWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZXh0cmFjdGVkQ29tbWl0bWVudCc7XG5pbXBvcnQgQ29tbWl0bWVudEVudGl0eSBmcm9tICcuLi9lbnRpdGllcy9Db21taXRtZW50RW50aXR5JztcbmltcG9ydCB7IGRiSWRDaHVua1NpemUgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgU3BlbmRJbmZvIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy90eXBlcyc7XG5cbmNsYXNzIENvbW1pdG1lbnRBY3Rpb24ge1xuICByZWFkb25seSBsb2dnZXI6IEFic3RyYWN0TG9nZ2VyO1xuICBwcml2YXRlIHJlYWRvbmx5IGRhdGFzb3VyY2U6IERhdGFTb3VyY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29tbWl0bWVudFJlcG9zaXRvcnk6IFJlcG9zaXRvcnk8Q29tbWl0bWVudEVudGl0eT47XG5cbiAgY29uc3RydWN0b3IoZGF0YVNvdXJjZTogRGF0YVNvdXJjZSwgbG9nZ2VyPzogQWJzdHJhY3RMb2dnZXIpIHtcbiAgICB0aGlzLmRhdGFzb3VyY2UgPSBkYXRhU291cmNlO1xuICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyID8gbG9nZ2VyIDogbmV3IER1bW15TG9nZ2VyKCk7XG4gICAgdGhpcy5jb21taXRtZW50UmVwb3NpdG9yeSA9IGRhdGFTb3VyY2UuZ2V0UmVwb3NpdG9yeShDb21taXRtZW50RW50aXR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJdCBzdG9yZXMgbGlzdCBvZiBvYnNlcnZhdGlvbnMgaW4gdGhlIGRhdGFTb3VyY2Ugd2l0aCBibG9jayBpZFxuICAgKiBAcGFyYW0gY29tbWl0bWVudHNcbiAgICogQHBhcmFtIGJsb2NrXG4gICAqIEBwYXJhbSBleHRyYWN0b3JcbiAgICovXG4gIHN0b3JlQ29tbWl0bWVudHMgPSBhc3luYyAoXG4gICAgY29tbWl0bWVudHM6IEFycmF5PGV4dHJhY3RlZENvbW1pdG1lbnQ+LFxuICAgIGJsb2NrOiBCbG9ja0VudGl0eSxcbiAgICBleHRyYWN0b3I6IHN0cmluZ1xuICApOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgICBpZiAoY29tbWl0bWVudHMubGVuZ3RoID09PSAwKSByZXR1cm4gdHJ1ZTtcbiAgICBjb25zdCBib3hJZHMgPSBjb21taXRtZW50cy5tYXAoKGNvbW1pdG1lbnQpID0+IGNvbW1pdG1lbnQuYm94SWQpO1xuICAgIGNvbnN0IHNhdmVkQ29tbWl0bWVudHMgPSBhd2FpdCB0aGlzLmNvbW1pdG1lbnRSZXBvc2l0b3J5LmZpbmRCeSh7XG4gICAgICBib3hJZDogSW4oYm94SWRzKSxcbiAgICAgIGV4dHJhY3RvcjogZXh0cmFjdG9yLFxuICAgIH0pO1xuICAgIGxldCBzdWNjZXNzID0gdHJ1ZTtcbiAgICBjb25zdCBxdWVyeVJ1bm5lciA9IHRoaXMuZGF0YXNvdXJjZS5jcmVhdGVRdWVyeVJ1bm5lcigpO1xuICAgIGF3YWl0IHF1ZXJ5UnVubmVyLmNvbm5lY3QoKTtcbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5zdGFydFRyYW5zYWN0aW9uKCk7XG4gICAgY29uc3QgcmVwb3NpdG9yeSA9IGF3YWl0IHF1ZXJ5UnVubmVyLm1hbmFnZXIuZ2V0UmVwb3NpdG9yeShcbiAgICAgIENvbW1pdG1lbnRFbnRpdHlcbiAgICApO1xuICAgIHRyeSB7XG4gICAgICBmb3IgKGNvbnN0IGNvbW1pdG1lbnQgb2YgY29tbWl0bWVudHMpIHtcbiAgICAgICAgY29uc3Qgc2F2ZWQgPSBzYXZlZENvbW1pdG1lbnRzLnNvbWUoKGVudGl0eSkgPT4ge1xuICAgICAgICAgIHJldHVybiBlbnRpdHkuYm94SWQgPT09IGNvbW1pdG1lbnQuYm94SWQ7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBlbnRpdHkgPSB7XG4gICAgICAgICAgdHhJZDogY29tbWl0bWVudC50eElkLFxuICAgICAgICAgIGNvbW1pdG1lbnQ6IGNvbW1pdG1lbnQuY29tbWl0bWVudCxcbiAgICAgICAgICBldmVudElkOiBjb21taXRtZW50LmV2ZW50SWQsXG4gICAgICAgICAgYm94SWQ6IGNvbW1pdG1lbnQuYm94SWQsXG4gICAgICAgICAgV0lEOiBjb21taXRtZW50LldJRCxcbiAgICAgICAgICBleHRyYWN0b3I6IGV4dHJhY3RvcixcbiAgICAgICAgICBibG9jazogYmxvY2suaGFzaCxcbiAgICAgICAgICBoZWlnaHQ6IGJsb2NrLmhlaWdodCxcbiAgICAgICAgICBib3hTZXJpYWxpemVkOiBjb21taXRtZW50LmJveFNlcmlhbGl6ZWQsXG4gICAgICAgICAgcnd0Q291bnQ6IGNvbW1pdG1lbnQucnd0Q291bnQsXG4gICAgICAgIH07XG4gICAgICAgIGlmICghc2F2ZWQpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKFxuICAgICAgICAgICAgYFNhdmluZyBjb21taXRtZW50IFske2NvbW1pdG1lbnQuYm94SWR9XSBmb3IgZXZlbnQgWyR7Y29tbWl0bWVudC5ldmVudElkfV0gZnJvbSB3YXRjaGVyIFske2NvbW1pdG1lbnQuV0lEfV0gYXQgaGVpZ2h0ICR7YmxvY2suaGVpZ2h0fSBhbmQgZXh0cmFjdG9yICR7ZXh0cmFjdG9yfWBcbiAgICAgICAgICApO1xuICAgICAgICAgIGF3YWl0IHJlcG9zaXRvcnkuaW5zZXJ0KGVudGl0eSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyhcbiAgICAgICAgICAgIGBVcGRhdGluZyBjb21taXRtZW50IFske2NvbW1pdG1lbnQuYm94SWR9XSBmb3IgZXZlbnQgWyR7Y29tbWl0bWVudC5ldmVudElkfV0gZnJvbSB3YXRjaGVyIFske2NvbW1pdG1lbnQuV0lEfV0gYXQgaGVpZ2h0ICR7YmxvY2suaGVpZ2h0fSBhbmQgZXh0cmFjdG9yICR7ZXh0cmFjdG9yfWBcbiAgICAgICAgICApO1xuICAgICAgICAgIGF3YWl0IHJlcG9zaXRvcnkudXBkYXRlKHsgYm94SWQ6IGNvbW1pdG1lbnQuYm94SWQgfSwgZW50aXR5KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgRW50aXR5OiAke0pTT04uc3RyaW5naWZ5KGVudGl0eSl9YCk7XG4gICAgICB9XG4gICAgICBhd2FpdCBxdWVyeVJ1bm5lci5jb21taXRUcmFuc2FjdGlvbigpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFxuICAgICAgICBgQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHN0b3JlIGNvbW1pdG1lbnRzIGFjdGlvbjogJHtlfWBcbiAgICAgICk7XG4gICAgICBhd2FpdCBxdWVyeVJ1bm5lci5yb2xsYmFja1RyYW5zYWN0aW9uKCk7XG4gICAgICBzdWNjZXNzID0gZmFsc2U7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnJlbGVhc2UoKTtcbiAgICB9XG4gICAgcmV0dXJuIHN1Y2Nlc3M7XG4gIH07XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBzcGVuZEJsb2NrIGFuZCBzcGVuZEhlaWdodCBvZiBjb21taXRtZW50cyBzcGVudCBvbiB0aGUgYmxvY2tcbiAgICogQHBhcmFtIHNwZW5kSWRcbiAgICogQHBhcmFtIGJsb2NrXG4gICAqIEBwYXJhbSBleHRyYWN0b3JcbiAgICovXG4gIHNwZW5kQ29tbWl0bWVudHMgPSBhc3luYyAoXG4gICAgc3BlbmRJZDogQXJyYXk8U3BlbmRJbmZvPixcbiAgICBibG9jazogQmxvY2tFbnRpdHksXG4gICAgZXh0cmFjdG9yOiBzdHJpbmdcbiAgKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgLy8gVE9ETzogaW1wcm92ZSB1cGRhdGluZyAobG9jYWw6ZXJnby9yb3Nlbi1icmlkZ2Uvc2Nhbm5lciM4NSlcbiAgICBjb25zdCBzcGVuZElkQ2h1bmtzID0gY2h1bmsoc3BlbmRJZCwgZGJJZENodW5rU2l6ZSk7XG4gICAgZm9yIChjb25zdCBzcGVuZElkQ2h1bmsgb2Ygc3BlbmRJZENodW5rcykge1xuICAgICAgY29uc3QgY29tbWl0bWVudHMgPSBhd2FpdCB0aGlzLmNvbW1pdG1lbnRSZXBvc2l0b3J5LmZpbmRCeSh7XG4gICAgICAgIGJveElkOiBJbihzcGVuZElkQ2h1bmsubWFwKChpbmZvKSA9PiBpbmZvLmJveElkKSksXG4gICAgICAgIGV4dHJhY3RvcjogZXh0cmFjdG9yLFxuICAgICAgfSk7XG5cbiAgICAgIGZvciAoY29uc3QgY29tbWl0bWVudCBvZiBjb21taXRtZW50cykge1xuICAgICAgICBjb25zdCBzcGVuZEluZm8gPSBzcGVuZElkQ2h1bmsuZmluZChcbiAgICAgICAgICAoaW5mbykgPT4gaW5mby5ib3hJZCA9PT0gY29tbWl0bWVudC5ib3hJZFxuICAgICAgICApO1xuICAgICAgICBpZiAoIXNwZW5kSW5mbylcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgSW1wb3NzaWJsZSBiZWhhdmlvcjogYm94IFske2NvbW1pdG1lbnQuYm94SWR9XSBpcyBub3QgZm91bmQgaW4gc3BlbmRpbmcgaW5mbyBsaXN0YFxuICAgICAgICAgICk7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5jb21taXRtZW50UmVwb3NpdG9yeS51cGRhdGUoXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6IGNvbW1pdG1lbnQuaWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzcGVuZEJsb2NrOiBibG9jay5oYXNoLFxuICAgICAgICAgICAgc3BlbmRUeElkOiBzcGVuZEluZm8udHhJZCxcbiAgICAgICAgICAgIHNwZW5kSW5kZXg6IHNwZW5kSW5mby5pbmRleCxcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIHRoaXMubG9nZ2VyLmluZm8oXG4gICAgICAgICAgYFNwZW50IGNvbW1pdG1lbnQgWyR7Y29tbWl0bWVudC5ib3hJZH1dIGZvciBldmVudCBbJHtjb21taXRtZW50LmV2ZW50SWR9XSBhdCBoZWlnaHQgJHtibG9jay5oZWlnaHR9YFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgU3BlbnQgY29tbWl0bWVudCBbJHtKU09OLnN0cmluZ2lmeShjb21taXRtZW50KX1dYCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBEZWxldGUgYWxsIGNvbW1pdG1lbnRzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGJsb2NrKGlkKSBhbmQgZXh0cmFjdG9yKGlkKVxuICAgKiBhbmQgdXBkYXRlIGFsbCBjb21taXRtZW50cyBzcGVudCBvbiB0aGUgc3BlY2lmaWVkIGJsb2NrXG4gICAqIEBwYXJhbSBibG9ja1xuICAgKiBAcGFyYW0gZXh0cmFjdG9yXG4gICAqL1xuICBkZWxldGVCbG9jayA9IGFzeW5jIChibG9jazogc3RyaW5nLCBleHRyYWN0b3I6IHN0cmluZykgPT4ge1xuICAgIHRoaXMubG9nZ2VyLmluZm8oXG4gICAgICBgRGVsZXRpbmcgY29tbWl0bWVudHMgb2YgYmxvY2sgWyR7YmxvY2t9XSBhbmQgZXh0cmFjdG9yICR7ZXh0cmFjdG9yfWBcbiAgICApO1xuICAgIGF3YWl0IHRoaXMuY29tbWl0bWVudFJlcG9zaXRvcnkuZGVsZXRlKHtcbiAgICAgIGJsb2NrOiBibG9jayxcbiAgICAgIGV4dHJhY3RvcjogZXh0cmFjdG9yLFxuICAgIH0pO1xuICAgIGF3YWl0IHRoaXMuY29tbWl0bWVudFJlcG9zaXRvcnkudXBkYXRlKFxuICAgICAgeyBzcGVuZEJsb2NrOiBibG9jaywgZXh0cmFjdG9yOiBleHRyYWN0b3IgfSxcbiAgICAgIHsgc3BlbmRCbG9jazogbnVsbCwgc3BlbmRIZWlnaHQ6IDAsIHNwZW5kVHhJZDogbnVsbCwgc3BlbmRJbmRleDogbnVsbCB9XG4gICAgKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29tbWl0bWVudEFjdGlvbjtcbiJdfQ==
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWl0bWVudEFjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9hY3Rpb25zL2NvbW1pdG1lbnRBY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLEVBQUUsRUFBYyxNQUFNLFNBQVMsQ0FBQztBQUNyRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRWxDLE9BQU8sRUFBa0IsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHNUUsT0FBTyxnQkFBZ0IsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRzdDLE1BQU0sZ0JBQWdCO0lBQ1gsTUFBTSxDQUFpQjtJQUNmLFVBQVUsQ0FBYTtJQUN2QixvQkFBb0IsQ0FBK0I7SUFFcEUsWUFBWSxVQUFzQixFQUFFLE1BQXVCO1FBQ3pELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksV0FBVyxFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxnQkFBZ0IsR0FBRyxLQUFLLEVBQ3RCLFdBQXVDLEVBQ3ZDLEtBQWtCLEVBQ2xCLFNBQWlCLEVBQ0MsRUFBRTtRQUNwQixJQUFJLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQzFDLE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRSxNQUFNLGdCQUFnQixHQUFHLE1BQU0sSUFBSSxDQUFDLG9CQUFv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QkFBcUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDdkU7U0FDRjtJQUNILENBQUMsQ0FBQztJQUVGOzs7OztPQUtHO0lBQ0gsV0FBVyxHQUFHLEtBQUssRUFBRSxLQUFhLEVBQUUsU0FBaUIsRUFBRSxFQUFFO1FBQ3ZELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNkLGtDQUFrQyxLQUFLLG1CQUFtQixTQUFTLEVBQUUsQ0FDdEUsQ0FBQztRQUNGLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQztZQUNyQyxLQUFLLEVBQUUsS0FBSztZQUNaLFNBQVMsRUFBRSxTQUFTO1NBQ3JCLENBQUMsQ0FBQztRQUNILE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FDcEMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsRUFDM0MsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQzNFLENBQUM7SUFDSixDQUFDLENBQUM7Q0FDSDtBQUVELGVBQWUsZ0JBQWdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRhU291cmNlLCBJbiwgUmVwb3NpdG9yeSB9IGZyb20gJ3R5cGVvcm0nO1xuaW1wb3J0IHsgY2h1bmsgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQmxvY2tFbnRpdHkgfSBmcm9tICdAcm9zZW4tYnJpZGdlL3NjYW5uZXInO1xuaW1wb3J0IHsgQWJzdHJhY3RMb2dnZXIsIER1bW15TG9nZ2VyIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1sb2dnZXInO1xuXG5pbXBvcnQgeyBleHRyYWN0ZWRDb21taXRtZW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9leHRyYWN0ZWRDb21taXRtZW50JztcbmltcG9ydCBDb21taXRtZW50RW50aXR5IGZyb20gJy4uL2VudGl0aWVzL0NvbW1pdG1lbnRFbnRpdHknO1xuaW1wb3J0IHsgZGJJZENodW5rU2l6ZSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBTcGVuZEluZm8gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3R5cGVzJztcblxuY2xhc3MgQ29tbWl0bWVudEFjdGlvbiB7XG4gIHJlYWRvbmx5IGxvZ2dlcjogQWJzdHJhY3RMb2dnZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGF0YXNvdXJjZTogRGF0YVNvdXJjZTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb21taXRtZW50UmVwb3NpdG9yeTogUmVwb3NpdG9yeTxDb21taXRtZW50RW50aXR5PjtcblxuICBjb25zdHJ1Y3RvcihkYXRhU291cmNlOiBEYXRhU291cmNlLCBsb2dnZXI/OiBBYnN0cmFjdExvZ2dlcikge1xuICAgIHRoaXMuZGF0YXNvdXJjZSA9IGRhdGFTb3VyY2U7XG4gICAgdGhpcy5sb2dnZXIgPSBsb2dnZXIgPyBsb2dnZXIgOiBuZXcgRHVtbXlMb2dnZXIoKTtcbiAgICB0aGlzLmNvbW1pdG1lbnRSZXBvc2l0b3J5ID0gZGF0YVNvdXJjZS5nZXRSZXBvc2l0b3J5KENvbW1pdG1lbnRFbnRpdHkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEl0IHN0b3JlcyBsaXN0IG9mIG9ic2VydmF0aW9ucyBpbiB0aGUgZGF0YVNvdXJjZSB3aXRoIGJsb2NrIGlkXG4gICAqIEBwYXJhbSBjb21taXRtZW50c1xuICAgKiBAcGFyYW0gYmxvY2tcbiAgICogQHBhcmFtIGV4dHJhY3RvclxuICAgKi9cbiAgc3RvcmVDb21taXRtZW50cyA9IGFzeW5jIChcbiAgICBjb21taXRtZW50czogQXJyYXk8ZXh0cmFjdGVkQ29tbWl0bWVudD4sXG4gICAgYmxvY2s6IEJsb2NrRW50aXR5LFxuICAgIGV4dHJhY3Rvcjogc3RyaW5nXG4gICk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICAgIGlmIChjb21taXRtZW50cy5sZW5ndGggPT09IDApIHJldHVybiB0cnVlO1xuICAgIGNvbnN0IGJveElkcyA9IGNvbW1pdG1lbnRzLm1hcCgoY29tbWl0bWVudCkgPT4gY29tbWl0bWVudC5ib3hJZCk7XG4gICAgY29uc3Qgc2F2ZWRDb21taXRtZW50cyA9IGF3YWl0IHRoaXMuY29tbWl0bWVudFJlcG9zaXRvcnkuZmluZEJ5KHtcbiAgICAgIGJveElkOiBJbihib3hJZHMpLFxuICAgICAgZXh0cmFjdG9yOiBleHRyYWN0b3IsXG4gICAgfSk7XG4gICAgbGV0IHN1Y2Nlc3MgPSB0cnVlO1xuICAgIGNvbnN0IHF1ZXJ5UnVubmVyID0gdGhpcy5kYXRhc291cmNlLmNyZWF0ZVF1ZXJ5UnVubmVyKCk7XG4gICAgYXdhaXQgcXVlcnlSdW5uZXIuY29ubmVjdCgpO1xuICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnN0YXJ0VHJhbnNhY3Rpb24oKTtcbiAgICBjb25zdCByZXBvc2l0b3J5ID0gYXdhaXQgcXVlcnlSdW5uZXIubWFuYWdlci5nZXRSZXBvc2l0b3J5KFxuICAgICAgQ29tbWl0bWVudEVudGl0eVxuICAgICk7XG4gICAgdHJ5IHtcbiAgICAgIGZvciAoY29uc3QgY29tbWl0bWVudCBvZiBjb21taXRtZW50cykge1xuICAgICAgICBjb25zdCBzYXZlZCA9IHNhdmVkQ29tbWl0bWVudHMuc29tZSgoZW50aXR5KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGVudGl0eS5ib3hJZCA9PT0gY29tbWl0bWVudC5ib3hJZDtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGVudGl0eSA9IHtcbiAgICAgICAgICB0eElkOiBjb21taXRtZW50LnR4SWQsXG4gICAgICAgICAgY29tbWl0bWVudDogY29tbWl0bWVudC5jb21taXRtZW50LFxuICAgICAgICAgIGV2ZW50SWQ6IGNvbW1pdG1lbnQuZXZlbnRJZCxcbiAgICAgICAgICBib3hJZDogY29tbWl0bWVudC5ib3hJZCxcbiAgICAgICAgICBXSUQ6IGNvbW1pdG1lbnQuV0lELFxuICAgICAgICAgIGV4dHJhY3RvcjogZXh0cmFjdG9yLFxuICAgICAgICAgIGJsb2NrOiBibG9jay5oYXNoLFxuICAgICAgICAgIGhlaWdodDogYmxvY2suaGVpZ2h0LFxuICAgICAgICAgIGJveFNlcmlhbGl6ZWQ6IGNvbW1pdG1lbnQuYm94U2VyaWFsaXplZCxcbiAgICAgICAgICByd3RDb3VudDogY29tbWl0bWVudC5yd3RDb3VudCxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKCFzYXZlZCkge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmluZm8oXG4gICAgICAgICAgICBgU2F2aW5nIGNvbW1pdG1lbnQgWyR7Y29tbWl0bWVudC5ib3hJZH1dIGZvciBldmVudCBbJHtjb21taXRtZW50LmV2ZW50SWR9XSBmcm9tIHdhdGNoZXIgWyR7Y29tbWl0bWVudC5XSUR9XSBhdCBoZWlnaHQgJHtibG9jay5oZWlnaHR9IGFuZCBleHRyYWN0b3IgJHtleHRyYWN0b3J9YFxuICAgICAgICAgICk7XG4gICAgICAgICAgYXdhaXQgcmVwb3NpdG9yeS5pbnNlcnQoZW50aXR5KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKFxuICAgICAgICAgICAgYFVwZGF0aW5nIGNvbW1pdG1lbnQgWyR7Y29tbWl0bWVudC5ib3hJZH1dIGZvciBldmVudCBbJHtjb21taXRtZW50LmV2ZW50SWR9XSBmcm9tIHdhdGNoZXIgWyR7Y29tbWl0bWVudC5XSUR9XSBhdCBoZWlnaHQgJHtibG9jay5oZWlnaHR9IGFuZCBleHRyYWN0b3IgJHtleHRyYWN0b3J9YFxuICAgICAgICAgICk7XG4gICAgICAgICAgYXdhaXQgcmVwb3NpdG9yeS51cGRhdGUoeyBib3hJZDogY29tbWl0bWVudC5ib3hJZCB9LCBlbnRpdHkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBFbnRpdHk6ICR7SlNPTi5zdHJpbmdpZnkoZW50aXR5KX1gKTtcbiAgICAgIH1cbiAgICAgIGF3YWl0IHF1ZXJ5UnVubmVyLmNvbW1pdFRyYW5zYWN0aW9uKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXG4gICAgICAgIGBBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgc3RvcmUgY29tbWl0bWVudHMgYWN0aW9uOiAke2V9YFxuICAgICAgKTtcbiAgICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnJvbGxiYWNrVHJhbnNhY3Rpb24oKTtcbiAgICAgIHN1Y2Nlc3MgPSBmYWxzZTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgcXVlcnlSdW5uZXIucmVsZWFzZSgpO1xuICAgIH1cbiAgICByZXR1cm4gc3VjY2VzcztcbiAgfTtcblxuICAvKipcbiAgICogVXBkYXRlIHNwZW5kQmxvY2sgYW5kIHNwZW5kSGVpZ2h0IG9mIGNvbW1pdG1lbnRzIHNwZW50IG9uIHRoZSBibG9ja1xuICAgKiBAcGFyYW0gc3BlbmRJZFxuICAgKiBAcGFyYW0gYmxvY2tcbiAgICogQHBhcmFtIGV4dHJhY3RvclxuICAgKi9cbiAgc3BlbmRDb21taXRtZW50cyA9IGFzeW5jIChcbiAgICBzcGVuZElkOiBBcnJheTxTcGVuZEluZm8+LFxuICAgIGJsb2NrOiBCbG9ja0VudGl0eSxcbiAgICBleHRyYWN0b3I6IHN0cmluZ1xuICApOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAvLyBUT0RPOiBpbXByb3ZlIHVwZGF0aW5nIChsb2NhbDplcmdvL3Jvc2VuLWJyaWRnZS9zY2FubmVyIzg1KVxuICAgIGNvbnN0IHNwZW5kSWRDaHVua3MgPSBjaHVuayhzcGVuZElkLCBkYklkQ2h1bmtTaXplKTtcbiAgICBmb3IgKGNvbnN0IHNwZW5kSWRDaHVuayBvZiBzcGVuZElkQ2h1bmtzKSB7XG4gICAgICBjb25zdCBjb21taXRtZW50cyA9IGF3YWl0IHRoaXMuY29tbWl0bWVudFJlcG9zaXRvcnkuZmluZEJ5KHtcbiAgICAgICAgYm94SWQ6IEluKHNwZW5kSWRDaHVuay5tYXAoKGluZm8pID0+IGluZm8uYm94SWQpKSxcbiAgICAgICAgZXh0cmFjdG9yOiBleHRyYWN0b3IsXG4gICAgICB9KTtcblxuICAgICAgZm9yIChjb25zdCBjb21taXRtZW50IG9mIGNvbW1pdG1lbnRzKSB7XG4gICAgICAgIGNvbnN0IHNwZW5kSW5mbyA9IHNwZW5kSWRDaHVuay5maW5kKFxuICAgICAgICAgIChpbmZvKSA9PiBpbmZvLmJveElkID09PSBjb21taXRtZW50LmJveElkXG4gICAgICAgICk7XG4gICAgICAgIGlmICghc3BlbmRJbmZvKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBJbXBvc3NpYmxlIGJlaGF2aW9yOiBib3ggWyR7Y29tbWl0bWVudC5ib3hJZH1dIGlzIG5vdCBmb3VuZCBpbiBzcGVuZGluZyBpbmZvIGxpc3RgXG4gICAgICAgICAgKTtcblxuICAgICAgICBhd2FpdCB0aGlzLmNvbW1pdG1lbnRSZXBvc2l0b3J5LnVwZGF0ZShcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogY29tbWl0bWVudC5pZCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNwZW5kQmxvY2s6IGJsb2NrLmhhc2gsXG4gICAgICAgICAgICBzcGVuZEhlaWdodDogYmxvY2suaGVpZ2h0LFxuICAgICAgICAgICAgc3BlbmRUeElkOiBzcGVuZEluZm8udHhJZCxcbiAgICAgICAgICAgIHNwZW5kSW5kZXg6IHNwZW5kSW5mby5pbmRleCxcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIHRoaXMubG9nZ2VyLmluZm8oXG4gICAgICAgICAgYFNwZW50IGNvbW1pdG1lbnQgWyR7Y29tbWl0bWVudC5ib3hJZH1dIGZvciBldmVudCBbJHtjb21taXRtZW50LmV2ZW50SWR9XSBhdCBoZWlnaHQgJHtibG9jay5oZWlnaHR9YFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgU3BlbnQgY29tbWl0bWVudCBbJHtKU09OLnN0cmluZ2lmeShjb21taXRtZW50KX1dYCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBEZWxldGUgYWxsIGNvbW1pdG1lbnRzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGJsb2NrKGlkKSBhbmQgZXh0cmFjdG9yKGlkKVxuICAgKiBhbmQgdXBkYXRlIGFsbCBjb21taXRtZW50cyBzcGVudCBvbiB0aGUgc3BlY2lmaWVkIGJsb2NrXG4gICAqIEBwYXJhbSBibG9ja1xuICAgKiBAcGFyYW0gZXh0cmFjdG9yXG4gICAqL1xuICBkZWxldGVCbG9jayA9IGFzeW5jIChibG9jazogc3RyaW5nLCBleHRyYWN0b3I6IHN0cmluZykgPT4ge1xuICAgIHRoaXMubG9nZ2VyLmluZm8oXG4gICAgICBgRGVsZXRpbmcgY29tbWl0bWVudHMgb2YgYmxvY2sgWyR7YmxvY2t9XSBhbmQgZXh0cmFjdG9yICR7ZXh0cmFjdG9yfWBcbiAgICApO1xuICAgIGF3YWl0IHRoaXMuY29tbWl0bWVudFJlcG9zaXRvcnkuZGVsZXRlKHtcbiAgICAgIGJsb2NrOiBibG9jayxcbiAgICAgIGV4dHJhY3RvcjogZXh0cmFjdG9yLFxuICAgIH0pO1xuICAgIGF3YWl0IHRoaXMuY29tbWl0bWVudFJlcG9zaXRvcnkudXBkYXRlKFxuICAgICAgeyBzcGVuZEJsb2NrOiBibG9jaywgZXh0cmFjdG9yOiBleHRyYWN0b3IgfSxcbiAgICAgIHsgc3BlbmRCbG9jazogbnVsbCwgc3BlbmRIZWlnaHQ6IG51bGwsIHNwZW5kVHhJZDogbnVsbCwgc3BlbmRJbmRleDogbnVsbCB9XG4gICAgKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29tbWl0bWVudEFjdGlvbjtcbiJdfQ==
@@ -44,7 +44,7 @@ class PermitAction {
44
44
  WID: permit.WID,
45
45
  txId: permit.txId,
46
46
  spendBlock: null,
47
- spendHeight: 0,
47
+ spendHeight: null,
48
48
  });
49
49
  };
50
50
  /**
@@ -132,7 +132,7 @@ class PermitAction {
132
132
  deleteBlock = async (block, extractor) => {
133
133
  this.logger.info(`Deleting permits at block ${block} and extractor ${extractor}`);
134
134
  await this.permitRepository.delete({ block: block, extractor: extractor });
135
- await this.permitRepository.update({ spendBlock: block, extractor: extractor }, { spendBlock: null, spendHeight: 0 });
135
+ await this.permitRepository.update({ spendBlock: block, extractor: extractor }, { spendBlock: null, spendHeight: null });
136
136
  };
137
137
  /**
138
138
  * Returns all stored permit box ids
@@ -171,4 +171,4 @@ class PermitAction {
171
171
  };
172
172
  }
173
173
  export default PermitAction;
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWl0QWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2FjdGlvbnMvcGVybWl0QWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxFQUFFLEVBQWMsTUFBTSxTQUFTLENBQUM7QUFDckQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVsQyxPQUFPLEVBQWtCLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRzVFLE9BQU8sWUFBWSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFN0MsTUFBTSxZQUFZO0lBQ1AsTUFBTSxDQUFpQjtJQUNmLFVBQVUsQ0FBYTtJQUN2QixnQkFBZ0IsQ0FBMkI7SUFFNUQsWUFBWSxVQUFzQixFQUFFLE1BQXVCO1FBQ3pELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksV0FBVyxFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsWUFBWSxHQUFHLEtBQUssRUFBRSxNQUF1QixFQUFFLFNBQWlCLEVBQUUsRUFBRTtRQUNsRSxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7WUFDbEMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO1lBQ25CLGFBQWEsRUFBRSxNQUFNLENBQUMsYUFBYTtZQUNuQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7WUFDbkIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO1lBQ3JCLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRztZQUNmLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtZQUNqQixVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVU7WUFDN0IsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXO1NBQ2hDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztJQUVGOzs7O09BSUc7SUFDSCxZQUFZLEdBQUcsS0FBSyxFQUFFLE1BQXVCLEVBQUUsU0FBaUIsRUFBRSxFQUFFO1FBQ2xFLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FDaEMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEVBQzdDO1lBQ0UsYUFBYSxFQUFFLE1BQU0sQ0FBQyxhQUFhO1lBQ25DLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSztZQUNuQixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07WUFDckIsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHO1lBQ2YsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1lBQ2pCLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFdBQVcsRUFBRSxDQUFDO1NBQ2YsQ0FDRixDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRUY7Ozs7O09BS0c7SUFDSCxZQUFZLEdBQUcsS0FBSyxFQUNsQixPQUErQixFQUMvQixLQUFrQixFQUNsQixTQUFpQixFQUNqQixFQUFFO1FBQ0YsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQztRQUN0QyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckQsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO1lBQ3RELEtBQUssRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDO1lBQ2pCLFNBQVMsRUFBRSxTQUFTO1NBQ3JCLENBQUMsQ0FBQztRQUNILElBQUksT0FBTyxHQUFHLElBQUksQ0FBQztRQUNuQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDeEQsTUFBTSxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDNUIsTUFBTSxXQUFXLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNyQyxNQUFNLFVBQVUsR0FBRyxNQUFNLFdBQVcsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3pFLElBQUk7WUFDRixLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRTtnQkFDNUIsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO29CQUN6QyxPQUFPLE1BQU0sQ0FBQyxLQUFLLEtBQUssTUFBTSxDQUFDLEtBQUssQ0FBQztnQkFDdkMsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsTUFBTSxNQUFNLEdBQUc7b0JBQ2IsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO29CQUNuQixhQUFhLEVBQUUsTUFBTSxDQUFDLGFBQWE7b0JBQ25DLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSTtvQkFDakIsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO29CQUNwQixTQUFTLEVBQUUsU0FBUztvQkFDcEIsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHO29CQUNmLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtpQkFDbEIsQ0FBQztnQkFDRixJQUFJLENBQUMsS0FBSyxFQUFFO29CQUNWLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLGtCQUFrQixNQUFNLENBQUMsS0FBSywyQkFBMkIsTUFBTSxDQUFDLEdBQUcsZUFBZSxLQUFLLENBQUMsTUFBTSxrQkFBa0IsU0FBUyxFQUFFLENBQzVILENBQUM7b0JBQ0YsTUFBTSxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2lCQUNqQztxQkFBTTtvQkFDTCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZixvQkFBb0IsTUFBTSxDQUFDLEtBQUssMkJBQTJCLE1BQU0sQ0FBQyxHQUFHLGVBQWUsS0FBSyxDQUFDLE1BQU0sa0JBQWtCLFNBQVMsRUFBRSxDQUM5SCxDQUFDO29CQUNGLE1BQU0sVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7aUJBQzFEO2dCQUNELElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDeEQ7WUFDRCxNQUFNLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1NBQ3ZDO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN4RSxNQUFNLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ3hDLE9BQU8sR0FBRyxLQUFLLENBQUM7U0FDakI7Z0JBQVM7WUFDUixNQUFNLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUM3QjtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUMsQ0FBQztJQUVGOzs7OztPQUtHO0lBQ0gsWUFBWSxHQUFHLEtBQUssRUFDbEIsT0FBc0IsRUFDdEIsS0FBa0IsRUFDbEIsU0FBaUIsRUFDRixFQUFFO1FBQ2pCLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDcEQsS0FBSyxNQUFNLFlBQVksSUFBSSxhQUFhLEVBQUU7WUFDeEMsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUNyRCxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxFQUNqRCxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQ3RELENBQUM7WUFFRixJQUFJLFlBQVksQ0FBQyxRQUFRLElBQUksWUFBWSxDQUFDLFFBQVEsR0FBRyxDQUFDLEVBQUU7Z0JBQ3RELE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztvQkFDbkQsS0FBSyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLFVBQVUsRUFBRSxLQUFLLENBQUMsSUFBSTtpQkFDdkIsQ0FBQyxDQUFDO2dCQUNILEtBQUssTUFBTSxHQUFHLElBQUksU0FBUyxFQUFFO29CQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZiw0QkFBNEIsR0FBRyxDQUFDLEtBQUssb0NBQW9DLEdBQUcsQ0FBQyxHQUFHLGVBQWUsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUM5RyxDQUFDO2lCQUNIO2FBQ0Y7U0FDRjtJQUNILENBQUMsQ0FBQztJQUVGOzs7OztPQUtHO0lBQ0gsV0FBVyxHQUFHLEtBQUssRUFBRSxLQUFhLEVBQUUsU0FBaUIsRUFBaUIsRUFBRTtRQUN0RSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDZCw2QkFBNkIsS0FBSyxrQkFBa0IsU0FBUyxFQUFFLENBQ2hFLENBQUM7UUFDRixNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FDaEMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsRUFDM0MsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsQ0FDckMsQ0FBQztJQUNKLENBQUMsQ0FBQztJQUVGOztPQUVHO0lBQ0gsa0JBQWtCLEdBQUcsS0FBSyxFQUFFLFNBQWlCLEVBQTBCLEVBQUU7UUFDdkUsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO1lBQzlDLEtBQUssRUFBRTtnQkFDTCxTQUFTLEVBQUUsU0FBUzthQUNyQjtZQUNELE1BQU0sRUFBRTtnQkFDTixLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBdUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdELENBQUMsQ0FBQztJQUVGOzs7O09BSUc7SUFDSCxZQUFZLEdBQUcsS0FBSyxFQUFFLEtBQWEsRUFBRSxTQUFpQixFQUFFLEVBQUU7UUFDeEQsT0FBTyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7WUFDeEMsS0FBSyxFQUFFLEtBQUs7WUFDWixTQUFTLEVBQUUsU0FBUztTQUNyQixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUM7SUFFRjs7Ozs7O09BTUc7SUFDSCxnQkFBZ0IsR0FBRyxLQUFLLEVBQ3RCLEtBQWEsRUFDYixTQUFpQixFQUNqQixPQUFlLEVBQ2YsV0FBbUIsRUFDbkIsRUFBRTtRQUNGLE9BQU8sTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUN2QyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxFQUN0QyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxDQUNsRCxDQUFDO0lBQ0osQ0FBQyxDQUFDO0NBQ0g7QUFFRCxlQUFlLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGFTb3VyY2UsIEluLCBSZXBvc2l0b3J5IH0gZnJvbSAndHlwZW9ybSc7XG5pbXBvcnQgeyBjaHVuayB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCbG9ja0VudGl0eSB9IGZyb20gJ0Byb3Nlbi1icmlkZ2Uvc2Nhbm5lcic7XG5pbXBvcnQgeyBBYnN0cmFjdExvZ2dlciwgRHVtbXlMb2dnZXIgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2Fic3RyYWN0LWxvZ2dlcic7XG5cbmltcG9ydCB7IEV4dHJhY3RlZFBlcm1pdCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZXh0cmFjdGVkUGVybWl0JztcbmltcG9ydCBQZXJtaXRFbnRpdHkgZnJvbSAnLi4vZW50aXRpZXMvUGVybWl0RW50aXR5JztcbmltcG9ydCB7IGRiSWRDaHVua1NpemUgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG5jbGFzcyBQZXJtaXRBY3Rpb24ge1xuICByZWFkb25seSBsb2dnZXI6IEFic3RyYWN0TG9nZ2VyO1xuICBwcml2YXRlIHJlYWRvbmx5IGRhdGFzb3VyY2U6IERhdGFTb3VyY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGVybWl0UmVwb3NpdG9yeTogUmVwb3NpdG9yeTxQZXJtaXRFbnRpdHk+O1xuXG4gIGNvbnN0cnVjdG9yKGRhdGFTb3VyY2U6IERhdGFTb3VyY2UsIGxvZ2dlcj86IEFic3RyYWN0TG9nZ2VyKSB7XG4gICAgdGhpcy5kYXRhc291cmNlID0gZGF0YVNvdXJjZTtcbiAgICB0aGlzLmxvZ2dlciA9IGxvZ2dlciA/IGxvZ2dlciA6IG5ldyBEdW1teUxvZ2dlcigpO1xuICAgIHRoaXMucGVybWl0UmVwb3NpdG9yeSA9IGRhdGFTb3VyY2UuZ2V0UmVwb3NpdG9yeShQZXJtaXRFbnRpdHkpO1xuICB9XG5cbiAgLyoqXG4gICAqIGluc2VydCBhIG5ldyBwZXJtaXQgYm94ZXMgaW4gdGhlIGRhdGFiYXNlXG4gICAqIEBwYXJhbSBwZXJtaXRzXG4gICAqIEBwYXJhbSBpbml0aWFsSGVpZ2h0XG4gICAqIEBwYXJhbSBleHRyYWN0b3JcbiAgICovXG4gIGluc2VydFBlcm1pdCA9IGFzeW5jIChwZXJtaXQ6IEV4dHJhY3RlZFBlcm1pdCwgZXh0cmFjdG9yOiBzdHJpbmcpID0+IHtcbiAgICByZXR1cm4gdGhpcy5wZXJtaXRSZXBvc2l0b3J5Lmluc2VydCh7XG4gICAgICBib3hJZDogcGVybWl0LmJveElkLFxuICAgICAgYm94U2VyaWFsaXplZDogcGVybWl0LmJveFNlcmlhbGl6ZWQsXG4gICAgICBibG9jazogcGVybWl0LmJsb2NrLFxuICAgICAgaGVpZ2h0OiBwZXJtaXQuaGVpZ2h0LFxuICAgICAgZXh0cmFjdG9yOiBleHRyYWN0b3IsXG4gICAgICBXSUQ6IHBlcm1pdC5XSUQsXG4gICAgICB0eElkOiBwZXJtaXQudHhJZCxcbiAgICAgIHNwZW5kQmxvY2s6IHBlcm1pdC5zcGVuZEJsb2NrLFxuICAgICAgc3BlbmRIZWlnaHQ6IHBlcm1pdC5zcGVuZEhlaWdodCxcbiAgICB9KTtcbiAgfTtcblxuICAvKipcbiAgICogdXBkYXRlIGFuIHVuc3BlbnQgcGVybWl0IGluIHRoZSBkYXRhYmFzZVxuICAgKiBAcGFyYW0gcGVybWl0XG4gICAqIEBwYXJhbSBleHRyYWN0b3JcbiAgICovXG4gIHVwZGF0ZVBlcm1pdCA9IGFzeW5jIChwZXJtaXQ6IEV4dHJhY3RlZFBlcm1pdCwgZXh0cmFjdG9yOiBzdHJpbmcpID0+IHtcbiAgICBhd2FpdCB0aGlzLnBlcm1pdFJlcG9zaXRvcnkudXBkYXRlKFxuICAgICAgeyBib3hJZDogcGVybWl0LmJveElkLCBleHRyYWN0b3I6IGV4dHJhY3RvciB9LFxuICAgICAge1xuICAgICAgICBib3hTZXJpYWxpemVkOiBwZXJtaXQuYm94U2VyaWFsaXplZCxcbiAgICAgICAgYmxvY2s6IHBlcm1pdC5ibG9jayxcbiAgICAgICAgaGVpZ2h0OiBwZXJtaXQuaGVpZ2h0LFxuICAgICAgICBXSUQ6IHBlcm1pdC5XSUQsXG4gICAgICAgIHR4SWQ6IHBlcm1pdC50eElkLFxuICAgICAgICBzcGVuZEJsb2NrOiBudWxsLFxuICAgICAgICBzcGVuZEhlaWdodDogMCxcbiAgICAgIH1cbiAgICApO1xuICB9O1xuXG4gIC8qKlxuICAgKiBJdCBzdG9yZXMgbGlzdCBvZiBwZXJtaXRzIGluIHRoZSBkYXRhU291cmNlIHdpdGggYmxvY2sgaWRcbiAgICogQHBhcmFtIHBlcm1pdHNcbiAgICogQHBhcmFtIGJsb2NrXG4gICAqIEBwYXJhbSBleHRyYWN0b3JcbiAgICovXG4gIHN0b3JlUGVybWl0cyA9IGFzeW5jIChcbiAgICBwZXJtaXRzOiBBcnJheTxFeHRyYWN0ZWRQZXJtaXQ+LFxuICAgIGJsb2NrOiBCbG9ja0VudGl0eSxcbiAgICBleHRyYWN0b3I6IHN0cmluZ1xuICApID0+IHtcbiAgICBpZiAocGVybWl0cy5sZW5ndGggPT09IDApIHJldHVybiB0cnVlO1xuICAgIGNvbnN0IGJveElkcyA9IHBlcm1pdHMubWFwKChwZXJtaXQpID0+IHBlcm1pdC5ib3hJZCk7XG4gICAgY29uc3Qgc2F2ZWRQZXJtaXRzID0gYXdhaXQgdGhpcy5wZXJtaXRSZXBvc2l0b3J5LmZpbmRCeSh7XG4gICAgICBib3hJZDogSW4oYm94SWRzKSxcbiAgICAgIGV4dHJhY3RvcjogZXh0cmFjdG9yLFxuICAgIH0pO1xuICAgIGxldCBzdWNjZXNzID0gdHJ1ZTtcbiAgICBjb25zdCBxdWVyeVJ1bm5lciA9IHRoaXMuZGF0YXNvdXJjZS5jcmVhdGVRdWVyeVJ1bm5lcigpO1xuICAgIGF3YWl0IHF1ZXJ5UnVubmVyLmNvbm5lY3QoKTtcbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5zdGFydFRyYW5zYWN0aW9uKCk7XG4gICAgY29uc3QgcmVwb3NpdG9yeSA9IGF3YWl0IHF1ZXJ5UnVubmVyLm1hbmFnZXIuZ2V0UmVwb3NpdG9yeShQZXJtaXRFbnRpdHkpO1xuICAgIHRyeSB7XG4gICAgICBmb3IgKGNvbnN0IHBlcm1pdCBvZiBwZXJtaXRzKSB7XG4gICAgICAgIGNvbnN0IHNhdmVkID0gc2F2ZWRQZXJtaXRzLnNvbWUoKGVudGl0eSkgPT4ge1xuICAgICAgICAgIHJldHVybiBlbnRpdHkuYm94SWQgPT09IHBlcm1pdC5ib3hJZDtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGVudGl0eSA9IHtcbiAgICAgICAgICBib3hJZDogcGVybWl0LmJveElkLFxuICAgICAgICAgIGJveFNlcmlhbGl6ZWQ6IHBlcm1pdC5ib3hTZXJpYWxpemVkLFxuICAgICAgICAgIGJsb2NrOiBibG9jay5oYXNoLFxuICAgICAgICAgIGhlaWdodDogYmxvY2suaGVpZ2h0LFxuICAgICAgICAgIGV4dHJhY3RvcjogZXh0cmFjdG9yLFxuICAgICAgICAgIFdJRDogcGVybWl0LldJRCxcbiAgICAgICAgICB0eElkOiBwZXJtaXQudHhJZCxcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKCFzYXZlZCkge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgYFNhdmluZyBwZXJtaXQgWyR7cGVybWl0LmJveElkfV0gYmVsb25naW5nIHRvIHdhdGNoZXIgWyR7cGVybWl0LldJRH1dIGF0IGhlaWdodCAke2Jsb2NrLmhlaWdodH0gYW5kIGV4dHJhY3RvciAke2V4dHJhY3Rvcn1gXG4gICAgICAgICAgKTtcbiAgICAgICAgICBhd2FpdCByZXBvc2l0b3J5Lmluc2VydChlbnRpdHkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgYFVwZGF0aW5nIHBlcm1pdCBbJHtwZXJtaXQuYm94SWR9XSBiZWxvbmdpbmcgdG8gd2F0Y2hlciBbJHtwZXJtaXQuV0lEfV0gYXQgaGVpZ2h0ICR7YmxvY2suaGVpZ2h0fSBhbmQgZXh0cmFjdG9yICR7ZXh0cmFjdG9yfWBcbiAgICAgICAgICApO1xuICAgICAgICAgIGF3YWl0IHJlcG9zaXRvcnkudXBkYXRlKHsgYm94SWQ6IHBlcm1pdC5ib3hJZCB9LCBlbnRpdHkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBFbnRpdHk6ICR7SlNPTi5zdHJpbmdpZnkoZW50aXR5KX1gKTtcbiAgICAgIH1cbiAgICAgIGF3YWl0IHF1ZXJ5UnVubmVyLmNvbW1pdFRyYW5zYWN0aW9uKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoYEFuIGVycm9yIG9jY3VycmVkIGR1cmluZyBzdG9yZSBwZXJtaXQgYWN0aW9uOiAke2V9YCk7XG4gICAgICBhd2FpdCBxdWVyeVJ1bm5lci5yb2xsYmFja1RyYW5zYWN0aW9uKCk7XG4gICAgICBzdWNjZXNzID0gZmFsc2U7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnJlbGVhc2UoKTtcbiAgICB9XG4gICAgcmV0dXJuIHN1Y2Nlc3M7XG4gIH07XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBzcGVuZEJsb2NrIGFuZCBzcGVuZEhlaWdodCBvZiBwZXJtaXRzIHNwZW50IG9uIHRoZSBibG9ja1xuICAgKiBAcGFyYW0gc3BlbmRJZFxuICAgKiBAcGFyYW0gYmxvY2tcbiAgICogQHBhcmFtIGV4dHJhY3RvclxuICAgKi9cbiAgc3BlbmRQZXJtaXRzID0gYXN5bmMgKFxuICAgIHNwZW5kSWQ6IEFycmF5PHN0cmluZz4sXG4gICAgYmxvY2s6IEJsb2NrRW50aXR5LFxuICAgIGV4dHJhY3Rvcjogc3RyaW5nXG4gICk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGNvbnN0IHNwZW5kSWRDaHVua3MgPSBjaHVuayhzcGVuZElkLCBkYklkQ2h1bmtTaXplKTtcbiAgICBmb3IgKGNvbnN0IHNwZW5kSWRDaHVuayBvZiBzcGVuZElkQ2h1bmtzKSB7XG4gICAgICBjb25zdCB1cGRhdGVSZXN1bHQgPSBhd2FpdCB0aGlzLnBlcm1pdFJlcG9zaXRvcnkudXBkYXRlKFxuICAgICAgICB7IGJveElkOiBJbihzcGVuZElkQ2h1bmspLCBleHRyYWN0b3I6IGV4dHJhY3RvciB9LFxuICAgICAgICB7IHNwZW5kQmxvY2s6IGJsb2NrLmhhc2gsIHNwZW5kSGVpZ2h0OiBibG9jay5oZWlnaHQgfVxuICAgICAgKTtcblxuICAgICAgaWYgKHVwZGF0ZVJlc3VsdC5hZmZlY3RlZCAmJiB1cGRhdGVSZXN1bHQuYWZmZWN0ZWQgPiAwKSB7XG4gICAgICAgIGNvbnN0IHNwZW50Um93cyA9IGF3YWl0IHRoaXMucGVybWl0UmVwb3NpdG9yeS5maW5kQnkoe1xuICAgICAgICAgIGJveElkOiBJbihzcGVuZElkQ2h1bmspLFxuICAgICAgICAgIHNwZW5kQmxvY2s6IGJsb2NrLmhhc2gsXG4gICAgICAgIH0pO1xuICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiBzcGVudFJvd3MpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICAgIGBTcGVudCBwZXJtaXQgd2l0aCBib3hJZCBbJHtyb3cuYm94SWR9XSBiZWxvbmdpbmcgdG8gd2F0Y2hlciB3aXRoIFdJRCBbJHtyb3cuV0lEfV0gYXQgaGVpZ2h0ICR7YmxvY2suaGVpZ2h0fWBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBEZWxldGUgYWxsIHBlcm1pdHMgY29ycmVzcG9uZGluZyB0byB0aGUgYmxvY2soaWQpIGFuZCBleHRyYWN0b3IoaWQpXG4gICAqIGFuZCB1cGRhdGUgYWxsIHBlcm1pdHMgc3BlbnQgb24gdGhlIHNwZWNpZmllZCBibG9ja1xuICAgKiBAcGFyYW0gYmxvY2tcbiAgICogQHBhcmFtIGV4dHJhY3RvclxuICAgKi9cbiAgZGVsZXRlQmxvY2sgPSBhc3luYyAoYmxvY2s6IHN0cmluZywgZXh0cmFjdG9yOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICB0aGlzLmxvZ2dlci5pbmZvKFxuICAgICAgYERlbGV0aW5nIHBlcm1pdHMgYXQgYmxvY2sgJHtibG9ja30gYW5kIGV4dHJhY3RvciAke2V4dHJhY3Rvcn1gXG4gICAgKTtcbiAgICBhd2FpdCB0aGlzLnBlcm1pdFJlcG9zaXRvcnkuZGVsZXRlKHsgYmxvY2s6IGJsb2NrLCBleHRyYWN0b3I6IGV4dHJhY3RvciB9KTtcbiAgICBhd2FpdCB0aGlzLnBlcm1pdFJlcG9zaXRvcnkudXBkYXRlKFxuICAgICAgeyBzcGVuZEJsb2NrOiBibG9jaywgZXh0cmFjdG9yOiBleHRyYWN0b3IgfSxcbiAgICAgIHsgc3BlbmRCbG9jazogbnVsbCwgc3BlbmRIZWlnaHQ6IDAgfVxuICAgICk7XG4gIH07XG5cbiAgLyoqXG4gICAqICBSZXR1cm5zIGFsbCBzdG9yZWQgcGVybWl0IGJveCBpZHNcbiAgICovXG4gIGdldEFsbFBlcm1pdEJveElkcyA9IGFzeW5jIChleHRyYWN0b3I6IHN0cmluZyk6IFByb21pc2U8QXJyYXk8c3RyaW5nPj4gPT4ge1xuICAgIGNvbnN0IGJveElkcyA9IGF3YWl0IHRoaXMucGVybWl0UmVwb3NpdG9yeS5maW5kKHtcbiAgICAgIHdoZXJlOiB7XG4gICAgICAgIGV4dHJhY3RvcjogZXh0cmFjdG9yLFxuICAgICAgfSxcbiAgICAgIHNlbGVjdDoge1xuICAgICAgICBib3hJZDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgcmV0dXJuIGJveElkcy5tYXAoKGl0ZW06IHsgYm94SWQ6IHN0cmluZyB9KSA9PiBpdGVtLmJveElkKTtcbiAgfTtcblxuICAvKipcbiAgICogUmVtb3ZlcyBzcGVjaWZpZWQgcGVybWl0XG4gICAqIEBwYXJhbSBib3hJZFxuICAgKiBAcGFyYW0gZXh0cmFjdG9yXG4gICAqL1xuICByZW1vdmVQZXJtaXQgPSBhc3luYyAoYm94SWQ6IHN0cmluZywgZXh0cmFjdG9yOiBzdHJpbmcpID0+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5wZXJtaXRSZXBvc2l0b3J5LmRlbGV0ZSh7XG4gICAgICBib3hJZDogYm94SWQsXG4gICAgICBleHRyYWN0b3I6IGV4dHJhY3RvcixcbiAgICB9KTtcbiAgfTtcblxuICAvKipcbiAgICogVXBkYXRlIHRoZSBwZXJtaXQgc3BlbmRpbmcgaW5mb3JtYXRpb25cbiAgICogQHBhcmFtIGJveElkXG4gICAqIEBwYXJhbSBleHRyYWN0b3JcbiAgICogQHBhcmFtIGJsb2NrSWRcbiAgICogQHBhcmFtIGJsb2NrSGVpZ2h0XG4gICAqL1xuICB1cGRhdGVTcGVuZEJsb2NrID0gYXN5bmMgKFxuICAgIGJveElkOiBzdHJpbmcsXG4gICAgZXh0cmFjdG9yOiBzdHJpbmcsXG4gICAgYmxvY2tJZDogc3RyaW5nLFxuICAgIGJsb2NrSGVpZ2h0OiBudW1iZXJcbiAgKSA9PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucGVybWl0UmVwb3NpdG9yeS51cGRhdGUoXG4gICAgICB7IGJveElkOiBib3hJZCwgZXh0cmFjdG9yOiBleHRyYWN0b3IgfSxcbiAgICAgIHsgc3BlbmRCbG9jazogYmxvY2tJZCwgc3BlbmRIZWlnaHQ6IGJsb2NrSGVpZ2h0IH1cbiAgICApO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBQZXJtaXRBY3Rpb247XG4iXX0=
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWl0QWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2FjdGlvbnMvcGVybWl0QWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxFQUFFLEVBQWMsTUFBTSxTQUFTLENBQUM7QUFDckQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVsQyxPQUFPLEVBQWtCLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRzVFLE9BQU8sWUFBWSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFN0MsTUFBTSxZQUFZO0lBQ1AsTUFBTSxDQUFpQjtJQUNmLFVBQVUsQ0FBYTtJQUN2QixnQkFBZ0IsQ0FBMkI7SUFFNUQsWUFBWSxVQUFzQixFQUFFLE1BQXVCO1FBQ3pELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksV0FBVyxFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsWUFBWSxHQUFHLEtBQUssRUFBRSxNQUF1QixFQUFFLFNBQWlCLEVBQUUsRUFBRTtRQUNsRSxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUM7WUFDbEMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO1lBQ25CLGFBQWEsRUFBRSxNQUFNLENBQUMsYUFBYTtZQUNuQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7WUFDbkIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO1lBQ3JCLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRztZ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QUFnQixDQUFDLElBQUksQ0FBQztZQUM5QyxLQUFLLEVBQUU7Z0JBQ0wsU0FBUyxFQUFFLFNBQVM7YUFDckI7WUFDRCxNQUFNLEVBQUU7Z0JBQ04sS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLENBQUMsQ0FBQztRQUNILE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQXVCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3RCxDQUFDLENBQUM7SUFFRjs7OztPQUlHO0lBQ0gsWUFBWSxHQUFHLEtBQUssRUFBRSxLQUFhLEVBQUUsU0FBaUIsRUFBRSxFQUFFO1FBQ3hELE9BQU8sTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO1lBQ3hDLEtBQUssRUFBRSxLQUFLO1lBQ1osU0FBUyxFQUFFLFNBQVM7U0FDckIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0lBRUY7Ozs7OztPQU1HO0lBQ0gsZ0JBQWdCLEdBQUcsS0FBSyxFQUN0QixLQUFhLEVBQ2IsU0FBaUIsRUFDakIsT0FBZSxFQUNmLFdBQW1CLEVBQ25CLEVBQUU7UUFDRixPQUFPLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FDdkMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsRUFDdEMsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsQ0FDbEQsQ0FBQztJQUNKLENBQUMsQ0FBQztDQUNIO0FBRUQsZUFBZSxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRhU291cmNlLCBJbiwgUmVwb3NpdG9yeSB9IGZyb20gJ3R5cGVvcm0nO1xuaW1wb3J0IHsgY2h1bmsgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQmxvY2tFbnRpdHkgfSBmcm9tICdAcm9zZW4tYnJpZGdlL3NjYW5uZXInO1xuaW1wb3J0IHsgQWJzdHJhY3RMb2dnZXIsIER1bW15TG9nZ2VyIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1sb2dnZXInO1xuXG5pbXBvcnQgeyBFeHRyYWN0ZWRQZXJtaXQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2V4dHJhY3RlZFBlcm1pdCc7XG5pbXBvcnQgUGVybWl0RW50aXR5IGZyb20gJy4uL2VudGl0aWVzL1Blcm1pdEVudGl0eSc7XG5pbXBvcnQgeyBkYklkQ2h1bmtTaXplIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuY2xhc3MgUGVybWl0QWN0aW9uIHtcbiAgcmVhZG9ubHkgbG9nZ2VyOiBBYnN0cmFjdExvZ2dlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBkYXRhc291cmNlOiBEYXRhU291cmNlO1xuICBwcml2YXRlIHJlYWRvbmx5IHBlcm1pdFJlcG9zaXRvcnk6IFJlcG9zaXRvcnk8UGVybWl0RW50aXR5PjtcblxuICBjb25zdHJ1Y3RvcihkYXRhU291cmNlOiBEYXRhU291cmNlLCBsb2dnZXI/OiBBYnN0cmFjdExvZ2dlcikge1xuICAgIHRoaXMuZGF0YXNvdXJjZSA9IGRhdGFTb3VyY2U7XG4gICAgdGhpcy5sb2dnZXIgPSBsb2dnZXIgPyBsb2dnZXIgOiBuZXcgRHVtbXlMb2dnZXIoKTtcbiAgICB0aGlzLnBlcm1pdFJlcG9zaXRvcnkgPSBkYXRhU291cmNlLmdldFJlcG9zaXRvcnkoUGVybWl0RW50aXR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBpbnNlcnQgYSBuZXcgcGVybWl0IGJveGVzIGluIHRoZSBkYXRhYmFzZVxuICAgKiBAcGFyYW0gcGVybWl0c1xuICAgKiBAcGFyYW0gaW5pdGlhbEhlaWdodFxuICAgKiBAcGFyYW0gZXh0cmFjdG9yXG4gICAqL1xuICBpbnNlcnRQZXJtaXQgPSBhc3luYyAocGVybWl0OiBFeHRyYWN0ZWRQZXJtaXQsIGV4dHJhY3Rvcjogc3RyaW5nKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMucGVybWl0UmVwb3NpdG9yeS5pbnNlcnQoe1xuICAgICAgYm94SWQ6IHBlcm1pdC5ib3hJZCxcbiAgICAgIGJveFNlcmlhbGl6ZWQ6IHBlcm1pdC5ib3hTZXJpYWxpemVkLFxuICAgICAgYmxvY2s6IHBlcm1pdC5ibG9jayxcbiAgICAgIGhlaWdodDogcGVybWl0LmhlaWdodCxcbiAgICAgIGV4dHJhY3RvcjogZXh0cmFjdG9yLFxuICAgICAgV0lEOiBwZXJtaXQuV0lELFxuICAgICAgdHhJZDogcGVybWl0LnR4SWQsXG4gICAgICBzcGVuZEJsb2NrOiBwZXJtaXQuc3BlbmRCbG9jayxcbiAgICAgIHNwZW5kSGVpZ2h0OiBwZXJtaXQuc3BlbmRIZWlnaHQsXG4gICAgfSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIHVwZGF0ZSBhbiB1bnNwZW50IHBlcm1pdCBpbiB0aGUgZGF0YWJhc2VcbiAgICogQHBhcmFtIHBlcm1pdFxuICAgKiBAcGFyYW0gZXh0cmFjdG9yXG4gICAqL1xuICB1cGRhdGVQZXJtaXQgPSBhc3luYyAocGVybWl0OiBFeHRyYWN0ZWRQZXJtaXQsIGV4dHJhY3Rvcjogc3RyaW5nKSA9PiB7XG4gICAgYXdhaXQgdGhpcy5wZXJtaXRSZXBvc2l0b3J5LnVwZGF0ZShcbiAgICAgIHsgYm94SWQ6IHBlcm1pdC5ib3hJZCwgZXh0cmFjdG9yOiBleHRyYWN0b3IgfSxcbiAgICAgIHtcbiAgICAgICAgYm94U2VyaWFsaXplZDogcGVybWl0LmJveFNlcmlhbGl6ZWQsXG4gICAgICAgIGJsb2NrOiBwZXJtaXQuYmxvY2ssXG4gICAgICAgIGhlaWdodDogcGVybWl0LmhlaWdodCxcbiAgICAgICAgV0lEOiBwZXJtaXQuV0lELFxuICAgICAgICB0eElkOiBwZXJtaXQudHhJZCxcbiAgICAgICAgc3BlbmRCbG9jazogbnVsbCxcbiAgICAgICAgc3BlbmRIZWlnaHQ6IG51bGwsXG4gICAgICB9XG4gICAgKTtcbiAgfTtcblxuICAvKipcbiAgICogSXQgc3RvcmVzIGxpc3Qgb2YgcGVybWl0cyBpbiB0aGUgZGF0YVNvdXJjZSB3aXRoIGJsb2NrIGlkXG4gICAqIEBwYXJhbSBwZXJtaXRzXG4gICAqIEBwYXJhbSBibG9ja1xuICAgKiBAcGFyYW0gZXh0cmFjdG9yXG4gICAqL1xuICBzdG9yZVBlcm1pdHMgPSBhc3luYyAoXG4gICAgcGVybWl0czogQXJyYXk8RXh0cmFjdGVkUGVybWl0PixcbiAgICBibG9jazogQmxvY2tFbnRpdHksXG4gICAgZXh0cmFjdG9yOiBzdHJpbmdcbiAgKSA9PiB7XG4gICAgaWYgKHBlcm1pdHMubGVuZ3RoID09PSAwKSByZXR1cm4gdHJ1ZTtcbiAgICBjb25zdCBib3hJZHMgPSBwZXJtaXRzLm1hcCgocGVybWl0KSA9PiBwZXJtaXQuYm94SWQpO1xuICAgIGNvbnN0IHNhdmVkUGVybWl0cyA9IGF3YWl0IHRoaXMucGVybWl0UmVwb3NpdG9yeS5maW5kQnkoe1xuICAgICAgYm94SWQ6IEluKGJveElkcyksXG4gICAgICBleHRyYWN0b3I6IGV4dHJhY3RvcixcbiAgICB9KTtcbiAgICBsZXQgc3VjY2VzcyA9IHRydWU7XG4gICAgY29uc3QgcXVlcnlSdW5uZXIgPSB0aGlzLmRhdGFzb3VyY2UuY3JlYXRlUXVlcnlSdW5uZXIoKTtcbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5jb25uZWN0KCk7XG4gICAgYXdhaXQgcXVlcnlSdW5uZXIuc3RhcnRUcmFuc2FjdGlvbigpO1xuICAgIGNvbnN0IHJlcG9zaXRvcnkgPSBhd2FpdCBxdWVyeVJ1bm5lci5tYW5hZ2VyLmdldFJlcG9zaXRvcnkoUGVybWl0RW50aXR5KTtcbiAgICB0cnkge1xuICAgICAgZm9yIChjb25zdCBwZXJtaXQgb2YgcGVybWl0cykge1xuICAgICAgICBjb25zdCBzYXZlZCA9IHNhdmVkUGVybWl0cy5zb21lKChlbnRpdHkpID0+IHtcbiAgICAgICAgICByZXR1cm4gZW50aXR5LmJveElkID09PSBwZXJtaXQuYm94SWQ7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBlbnRpdHkgPSB7XG4gICAgICAgICAgYm94SWQ6IHBlcm1pdC5ib3hJZCxcbiAgICAgICAgICBib3hTZXJpYWxpemVkOiBwZXJtaXQuYm94U2VyaWFsaXplZCxcbiAgICAgICAgICBibG9jazogYmxvY2suaGFzaCxcbiAgICAgICAgICBoZWlnaHQ6IGJsb2NrLmhlaWdodCxcbiAgICAgICAgICBleHRyYWN0b3I6IGV4dHJhY3RvcixcbiAgICAgICAgICBXSUQ6IHBlcm1pdC5XSUQsXG4gICAgICAgICAgdHhJZDogcGVybWl0LnR4SWQsXG4gICAgICAgIH07XG4gICAgICAgIGlmICghc2F2ZWQpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICAgIGBTYXZpbmcgcGVybWl0IFske3Blcm1pdC5ib3hJZH1dIGJlbG9uZ2luZyB0byB3YXRjaGVyIFske3Blcm1pdC5XSUR9XSBhdCBoZWlnaHQgJHtibG9jay5oZWlnaHR9IGFuZCBleHRyYWN0b3IgJHtleHRyYWN0b3J9YFxuICAgICAgICAgICk7XG4gICAgICAgICAgYXdhaXQgcmVwb3NpdG9yeS5pbnNlcnQoZW50aXR5KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICAgIGBVcGRhdGluZyBwZXJtaXQgWyR7cGVybWl0LmJveElkfV0gYmVsb25naW5nIHRvIHdhdGNoZXIgWyR7cGVybWl0LldJRH1dIGF0IGhlaWdodCAke2Jsb2NrLmhlaWdodH0gYW5kIGV4dHJhY3RvciAke2V4dHJhY3Rvcn1gXG4gICAgICAgICAgKTtcbiAgICAgICAgICBhd2FpdCByZXBvc2l0b3J5LnVwZGF0ZSh7IGJveElkOiBwZXJtaXQuYm94SWQgfSwgZW50aXR5KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgRW50aXR5OiAke0pTT04uc3RyaW5naWZ5KGVudGl0eSl9YCk7XG4gICAgICB9XG4gICAgICBhd2FpdCBxdWVyeVJ1bm5lci5jb21taXRUcmFuc2FjdGlvbigpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmVycm9yKGBBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgc3RvcmUgcGVybWl0IGFjdGlvbjogJHtlfWApO1xuICAgICAgYXdhaXQgcXVlcnlSdW5uZXIucm9sbGJhY2tUcmFuc2FjdGlvbigpO1xuICAgICAgc3VjY2VzcyA9IGZhbHNlO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBhd2FpdCBxdWVyeVJ1bm5lci5yZWxlYXNlKCk7XG4gICAgfVxuICAgIHJldHVybiBzdWNjZXNzO1xuICB9O1xuXG4gIC8qKlxuICAgKiBVcGRhdGUgc3BlbmRCbG9jayBhbmQgc3BlbmRIZWlnaHQgb2YgcGVybWl0cyBzcGVudCBvbiB0aGUgYmxvY2tcbiAgICogQHBhcmFtIHNwZW5kSWRcbiAgICogQHBhcmFtIGJsb2NrXG4gICAqIEBwYXJhbSBleHRyYWN0b3JcbiAgICovXG4gIHNwZW5kUGVybWl0cyA9IGFzeW5jIChcbiAgICBzcGVuZElkOiBBcnJheTxzdHJpbmc+LFxuICAgIGJsb2NrOiBCbG9ja0VudGl0eSxcbiAgICBleHRyYWN0b3I6IHN0cmluZ1xuICApOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBjb25zdCBzcGVuZElkQ2h1bmtzID0gY2h1bmsoc3BlbmRJZCwgZGJJZENodW5rU2l6ZSk7XG4gICAgZm9yIChjb25zdCBzcGVuZElkQ2h1bmsgb2Ygc3BlbmRJZENodW5rcykge1xuICAgICAgY29uc3QgdXBkYXRlUmVzdWx0ID0gYXdhaXQgdGhpcy5wZXJtaXRSZXBvc2l0b3J5LnVwZGF0ZShcbiAgICAgICAgeyBib3hJZDogSW4oc3BlbmRJZENodW5rKSwgZXh0cmFjdG9yOiBleHRyYWN0b3IgfSxcbiAgICAgICAgeyBzcGVuZEJsb2NrOiBibG9jay5oYXNoLCBzcGVuZEhlaWdodDogYmxvY2suaGVpZ2h0IH1cbiAgICAgICk7XG5cbiAgICAgIGlmICh1cGRhdGVSZXN1bHQuYWZmZWN0ZWQgJiYgdXBkYXRlUmVzdWx0LmFmZmVjdGVkID4gMCkge1xuICAgICAgICBjb25zdCBzcGVudFJvd3MgPSBhd2FpdCB0aGlzLnBlcm1pdFJlcG9zaXRvcnkuZmluZEJ5KHtcbiAgICAgICAgICBib3hJZDogSW4oc3BlbmRJZENodW5rKSxcbiAgICAgICAgICBzcGVuZEJsb2NrOiBibG9jay5oYXNoLFxuICAgICAgICB9KTtcbiAgICAgICAgZm9yIChjb25zdCByb3cgb2Ygc3BlbnRSb3dzKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgICBgU3BlbnQgcGVybWl0IHdpdGggYm94SWQgWyR7cm93LmJveElkfV0gYmVsb25naW5nIHRvIHdhdGNoZXIgd2l0aCBXSUQgWyR7cm93LldJRH1dIGF0IGhlaWdodCAke2Jsb2NrLmhlaWdodH1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogRGVsZXRlIGFsbCBwZXJtaXRzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGJsb2NrKGlkKSBhbmQgZXh0cmFjdG9yKGlkKVxuICAgKiBhbmQgdXBkYXRlIGFsbCBwZXJtaXRzIHNwZW50IG9uIHRoZSBzcGVjaWZpZWQgYmxvY2tcbiAgICogQHBhcmFtIGJsb2NrXG4gICAqIEBwYXJhbSBleHRyYWN0b3JcbiAgICovXG4gIGRlbGV0ZUJsb2NrID0gYXN5bmMgKGJsb2NrOiBzdHJpbmcsIGV4dHJhY3Rvcjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgdGhpcy5sb2dnZXIuaW5mbyhcbiAgICAgIGBEZWxldGluZyBwZXJtaXRzIGF0IGJsb2NrICR7YmxvY2t9IGFuZCBleHRyYWN0b3IgJHtleHRyYWN0b3J9YFxuICAgICk7XG4gICAgYXdhaXQgdGhpcy5wZXJtaXRSZXBvc2l0b3J5LmRlbGV0ZSh7IGJsb2NrOiBibG9jaywgZXh0cmFjdG9yOiBleHRyYWN0b3IgfSk7XG4gICAgYXdhaXQgdGhpcy5wZXJtaXRSZXBvc2l0b3J5LnVwZGF0ZShcbiAgICAgIHsgc3BlbmRCbG9jazogYmxvY2ssIGV4dHJhY3RvcjogZXh0cmFjdG9yIH0sXG4gICAgICB7IHNwZW5kQmxvY2s6IG51bGwsIHNwZW5kSGVpZ2h0OiBudWxsIH1cbiAgICApO1xuICB9O1xuXG4gIC8qKlxuICAgKiAgUmV0dXJucyBhbGwgc3RvcmVkIHBlcm1pdCBib3ggaWRzXG4gICAqL1xuICBnZXRBbGxQZXJtaXRCb3hJZHMgPSBhc3luYyAoZXh0cmFjdG9yOiBzdHJpbmcpOiBQcm9taXNlPEFycmF5PHN0cmluZz4+ID0+IHtcbiAgICBjb25zdCBib3hJZHMgPSBhd2FpdCB0aGlzLnBlcm1pdFJlcG9zaXRvcnkuZmluZCh7XG4gICAgICB3aGVyZToge1xuICAgICAgICBleHRyYWN0b3I6IGV4dHJhY3RvcixcbiAgICAgIH0sXG4gICAgICBzZWxlY3Q6IHtcbiAgICAgICAgYm94SWQ6IHRydWUsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIHJldHVybiBib3hJZHMubWFwKChpdGVtOiB7IGJveElkOiBzdHJpbmcgfSkgPT4gaXRlbS5ib3hJZCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgc3BlY2lmaWVkIHBlcm1pdFxuICAgKiBAcGFyYW0gYm94SWRcbiAgICogQHBhcmFtIGV4dHJhY3RvclxuICAgKi9cbiAgcmVtb3ZlUGVybWl0ID0gYXN5bmMgKGJveElkOiBzdHJpbmcsIGV4dHJhY3Rvcjogc3RyaW5nKSA9PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucGVybWl0UmVwb3NpdG9yeS5kZWxldGUoe1xuICAgICAgYm94SWQ6IGJveElkLFxuICAgICAgZXh0cmFjdG9yOiBleHRyYWN0b3IsXG4gICAgfSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgcGVybWl0IHNwZW5kaW5nIGluZm9ybWF0aW9uXG4gICAqIEBwYXJhbSBib3hJZFxuICAgKiBAcGFyYW0gZXh0cmFjdG9yXG4gICAqIEBwYXJhbSBibG9ja0lkXG4gICAqIEBwYXJhbSBibG9ja0hlaWdodFxuICAgKi9cbiAgdXBkYXRlU3BlbmRCbG9jayA9IGFzeW5jIChcbiAgICBib3hJZDogc3RyaW5nLFxuICAgIGV4dHJhY3Rvcjogc3RyaW5nLFxuICAgIGJsb2NrSWQ6IHN0cmluZyxcbiAgICBibG9ja0hlaWdodDogbnVtYmVyXG4gICkgPT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnBlcm1pdFJlcG9zaXRvcnkudXBkYXRlKFxuICAgICAgeyBib3hJZDogYm94SWQsIGV4dHJhY3RvcjogZXh0cmFjdG9yIH0sXG4gICAgICB7IHNwZW5kQmxvY2s6IGJsb2NrSWQsIHNwZW5kSGVpZ2h0OiBibG9ja0hlaWdodCB9XG4gICAgKTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgUGVybWl0QWN0aW9uO1xuIl19