@gomomento/sdk-core 1.65.4 → 1.67.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 (26) hide show
  1. package/dist/src/clients/ICacheClient.d.ts +4 -1
  2. package/dist/src/clients/ICacheClient.js +1 -1
  3. package/dist/src/clients/IMomentoCache.d.ts +4 -1
  4. package/dist/src/clients/IMomentoCache.js +1 -1
  5. package/dist/src/clients/IVectorIndexClient.d.ts +1 -1
  6. package/dist/src/clients/IVectorIndexClient.js +1 -1
  7. package/dist/src/index.d.ts +3 -1
  8. package/dist/src/index.js +7 -3
  9. package/dist/src/internal/clients/cache/AbstractCacheClient.d.ts +26 -2
  10. package/dist/src/internal/clients/cache/AbstractCacheClient.js +30 -1
  11. package/dist/src/internal/clients/cache/IDataClient.d.ts +3 -1
  12. package/dist/src/internal/clients/cache/IDataClient.js +1 -1
  13. package/dist/src/internal/clients/cache/momento-cache.d.ts +4 -1
  14. package/dist/src/internal/clients/cache/momento-cache.js +7 -1
  15. package/dist/src/internal/clients/vector/AbstractVectorIndexClient.d.ts +4 -3
  16. package/dist/src/internal/clients/vector/AbstractVectorIndexClient.js +3 -2
  17. package/dist/src/internal/clients/vector/IVectorIndexDataClient.d.ts +2 -1
  18. package/dist/src/internal/clients/vector/IVectorIndexDataClient.js +1 -1
  19. package/dist/src/internal/utils/validators.d.ts +1 -0
  20. package/dist/src/internal/utils/validators.js +12 -4
  21. package/dist/src/messages/responses/cache-batch-get.d.ts +116 -0
  22. package/dist/src/messages/responses/cache-batch-get.js +162 -0
  23. package/dist/src/messages/responses/cache-batch-set.d.ts +73 -0
  24. package/dist/src/messages/responses/cache-batch-set.js +71 -0
  25. package/dist/src/utils/collection-ttl.js +5 -1
  26. package/package.json +1 -1
@@ -21,6 +21,12 @@ class MomentoCache {
21
21
  setIfNotExists(key, field, options) {
22
22
  return this.cacheClient.setIfNotExists(this.cacheName, key, field, options);
23
23
  }
24
+ getBatch(keys) {
25
+ return this.cacheClient.getBatch(this.cacheName, keys);
26
+ }
27
+ setBatch(items, options) {
28
+ return this.cacheClient.setBatch(this.cacheName, items, options);
29
+ }
24
30
  setFetch(setName) {
25
31
  return this.cacheClient.setFetch(this.cacheName, setName);
26
32
  }
@@ -152,4 +158,4 @@ class MomentoCache {
152
158
  }
153
159
  }
154
160
  exports.MomentoCache = MomentoCache;
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9tZW50by1jYWNoZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9pbnRlcm5hbC9jbGllbnRzL2NhY2hlL21vbWVudG8tY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBbUZBLE1BQWEsWUFBWTtJQUd2QixZQUFZLFdBQXlCLEVBQUUsU0FBaUI7UUFDdEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDN0IsQ0FBQztJQUVELEdBQUcsQ0FBQyxHQUF3QjtRQUMxQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUNELEdBQUcsQ0FDRCxHQUF3QixFQUN4QixLQUEwQixFQUMxQixPQUFvQjtRQUVwQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBQ0QsTUFBTSxDQUFDLEdBQXdCO1FBQzdCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBQ0QsU0FBUyxDQUNQLEtBQTBCLEVBQzFCLE1BQWMsRUFDZCxPQUEwQjtRQUUxQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBQ0QsY0FBYyxDQUNaLEdBQXdCLEVBQ3hCLEtBQTBCLEVBQzFCLE9BQStCO1FBRS9CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMs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U0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUNELFNBQVMsQ0FDUCxHQUF3QixFQUN4QixlQUF1QjtRQUV2QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFDRCxXQUFXLENBQ1QsR0FBd0IsRUFDeEIsZUFBdUI7UUFFdkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxlQUFlLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBQ0QsV0FBVyxDQUNULEdBQXdCLEVBQ3hCLGVBQXVCO1FBRXZCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDNUUsQ0FBQztDQUNGO0FBbFpELG9DQWtaQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENhY2hlRGVsZXRlLFxuICBDYWNoZUdldCxcbiAgQ2FjaGVJbmNyZW1lbnQsXG4gIENhY2hlU2V0LFxuICBDYWNoZVNldElmTm90RXhpc3RzLFxuICBDYWNoZVNldEZldGNoLFxuICBDYWNoZVNldEFkZEVsZW1lbnRzLFxuICBDYWNoZVNldEFkZEVsZW1lbnQsXG4gIENhY2hlU2V0UmVtb3ZlRWxlbWVudHMsXG4gIENhY2hlU2V0UmVtb3ZlRWxlbWVudCxcbiAgQ2FjaGVMaXN0RmV0Y2gsXG4gIENhY2hlTGlzdExlbmd0aCxcbiAgQ2FjaGVMaXN0UHVzaEZyb250LFxuICBDYWNoZUxpc3RQdXNoQmFjayxcbiAgQ2FjaGVMaXN0Q29uY2F0ZW5hdGVCYWNrLFxuICBDYWNoZUxpc3RDb25jYXRlbmF0ZUZyb250LFxuICBDYWNoZUxpc3RQb3BCYWNrLFxuICBDYWNoZUxpc3RQb3BGcm9udCxcbiAgQ2FjaGVMaXN0UmVtb3ZlVmFsdWUsXG4gIENhY2hlTGlzdFJldGFpbixcbiAgQ2FjaGVEaWN0aW9uYXJ5U2V0RmllbGQsXG4gIENhY2hlRGljdGlvbmFyeVNldEZpZWxkcyxcbiAgQ2FjaGVEaWN0aW9uYXJ5R2V0RmllbGQsXG4gIENhY2hlRGljdGlvbmFyeUZldGNoLFxuICBDYWNoZURpY3Rpb25hcnlJbmNyZW1lbnQsXG4gIENhY2hlRGljdGlvbmFyeVJlbW92ZUZpZWxkLFxuICBDYWNoZURpY3Rpb25hcnlSZW1vdmVGaWVsZHMsXG4gIENhY2hlU29ydGVkU2V0RmV0Y2gsXG4gIENhY2hlU29ydGVkU2V0UHV0RWxlbWVudCxcbiAgQ2FjaGVTb3J0ZWRTZXRQdXRFbGVtZW50cyxcbiAgQ2FjaGVTb3J0ZWRTZXRHZXRSYW5rLFxuICBDYWNoZVNvcnRlZFNldEdldFNjb3JlLFxuICBDYWNoZVNvcnRlZFNldEdldFNjb3JlcyxcbiAgQ2FjaGVTb3J0ZWRTZXRJbmNyZW1lbnRTY29yZSxcbiAgQ2FjaGVTb3J0ZWRTZXRSZW1vdmVFbGVtZW50LFxuICBDYWNoZVNvcnRlZFNldExlbmd0aCxcbiAgQ2FjaGVTb3J0ZWRTZXRMZW5ndGhCeVNjb3JlLFxuICBDYWNoZUl0ZW1HZXRUeXBlLFxuICBDYWNoZUl0ZW1HZXRUdGwsXG4gIENhY2hlS2V5RXhpc3RzLFxuICBDYWNoZUtleXNFeGlzdCxcbiAgQ2FjaGVVcGRhdGVUdGwsXG4gIENhY2hlSW5jcmVhc2VUdGwsXG4gIENhY2hlRGVjcmVhc2VUdGwsXG4gIElDYWNoZUNsaWVudCxcbiAgQ2FjaGVTb3J0ZWRTZXRSZW1vdmVFbGVtZW50cyxcbiAgQ2FjaGVEaWN0aW9uYXJ5R2V0RmllbGRzLFxuICBDYWNoZURpY3Rpb25hcnlMZW5ndGgsXG59IGZyb20gJy4uLy4uLy4uL2luZGV4JztcbmltcG9ydCB7XG4gIFNjYWxhckNhbGxPcHRpb25zLFxuICBMaXN0RmV0Y2hDYWxsT3B0aW9ucyxcbiAgTGlzdFJldGFpbkNhbGxPcHRpb25zLFxuICBCYWNrVHJ1bmNhdGFibGVDYWxsT3B0aW9ucyxcbiAgRnJvbnRUcnVuY2F0YWJsZUNhbGxPcHRpb25zLFxuICBDb2xsZWN0aW9uQ2FsbE9wdGlvbnMsXG4gIFNvcnRlZFNldEZldGNoQnlSYW5rQ2FsbE9wdGlvbnMsXG4gIFNvcnRlZFNldEZldGNoQnlTY29yZUNhbGxPcHRpb25zLFxuICBTb3J0ZWRTZXRMZW5ndGhCeVNjb3JlQ2FsbE9wdGlvbnMsXG59IGZyb20gJy4uLy4uLy4uL3V0aWxzJztcbmltcG9ydCB7SU1vbWVudG9DYWNoZX0gZnJvbSAnLi4vLi4vLi4vY2xpZW50cy9JTW9tZW50b0NhY2hlJztcblxuLy8gVHlwZSBhbGlhc2VzIHRvIGRpZmZlcmVudGlhdGUgdGhlIGRpZmZlcmVudCBtZXRob2RzJyBvcHRpb25hbCBhcmd1bWVudHMuXG5leHBvcnQgdHlwZSBTZXRPcHRpb25zID0gU2NhbGFyQ2FsbE9wdGlvbnM7XG5leHBvcnQgdHlwZSBTZXRJZk5vdEV4aXN0c09wdGlvbnMgPSBTY2FsYXJDYWxsT3B0aW9ucztcbmV4cG9ydCB0eXBlIExpc3RDb25jYXRlbmF0ZUJhY2tPcHRpb25zID0gRnJvbnRUcnVuY2F0YWJsZUNhbGxPcHRpb25zO1xuZXhwb3J0IHR5cGUgTGlzdENvbmNhdGVuYXRlRnJvbnRPcHRpb25zID0gQmFja1RydW5jYXRhYmxlQ2FsbE9wdGlvbnM7XG5leHBvcnQgdHlwZSBMaXN0UHVzaEJhY2tPcHRpb25zID0gRnJvbnRUcnVuY2F0YWJsZUNhbGxPcHRpb25zO1xuZXhwb3J0IHR5cGUgTGlzdFB1c2hGcm9udE9wdGlvbnMgPSBCYWNrVHJ1bmNhdGFibGVDYWxsT3B0aW9ucztcbmV4cG9ydCB0eXBlIFNldEFkZEVsZW1lbnRPcHRpb25zID0gQ29sbGVjdGlvbkNhbGxPcHRpb25zO1xuZXhwb3J0IHR5cGUgU2V0QWRkRWxlbWVudHNPcHRpb25zID0gQ29sbGVjdGlvbkNhbGxPcHRpb25zO1xuZXhwb3J0IHR5cGUgRGljdGlvbmFyeVNldEZpZWxkT3B0aW9ucyA9IENvbGxlY3Rpb25DYWxsT3B0aW9ucztcbmV4cG9ydCB0eXBlIERpY3Rpb25hcnlTZXRGaWVsZHNPcHRpb25zID0gQ29sbGVjdGlvbkNhbGxPcHRpb25zO1xuZXhwb3J0IHR5cGUgRGljdGlvbmFyeUluY3JlbWVudE9wdGlvbnMgPSBDb2xsZWN0aW9uQ2FsbE9wdGlvbnM7XG5leHBvcnQgdHlwZSBJbmNyZW1lbnRPcHRpb25zID0gU2NhbGFyQ2FsbE9wdGlvbnM7XG5leHBvcnQgdHlwZSBTb3J0ZWRTZXRQdXRFbGVtZW50T3B0aW9ucyA9IENvbGxlY3Rpb25DYWxsT3B0aW9ucztcbmV4cG9ydCB0eXBlIFNvcnRlZFNldFB1dEVsZW1lbnRzT3B0aW9ucyA9IENvbGxlY3Rpb25DYWxsT3B0aW9ucztcbmV4cG9ydCB0eXBlIFNvcnRlZFNldEZldGNoQnlSYW5rT3B0aW9ucyA9IFNvcnRlZFNldEZldGNoQnlSYW5rQ2FsbE9wdGlvbnM7XG5leHBvcnQgdHlwZSBTb3J0ZWRTZXRGZXRjaEJ5U2NvcmVPcHRpb25zID0gU29ydGVkU2V0RmV0Y2hCeVNjb3JlQ2FsbE9wdGlvbnM7XG5leHBvcnQgdHlwZSBTb3J0ZWRTZXRJbmNyZW1lbnRPcHRpb25zID0gQ29sbGVjdGlvbkNhbGxPcHRpb25zO1xuZXhwb3J0IHR5cGUgU29ydGVkU2V0TGVuZ3RoQnlTY29yZU9wdGlvbnMgPSBTb3J0ZWRTZXRMZW5ndGhCeVNjb3JlQ2FsbE9wdGlvbnM7XG5cbmV4cG9ydCBjbGFzcyBNb21lbnRvQ2FjaGUgaW1wbGVtZW50cyBJTW9tZW50b0NhY2hlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBjYWNoZUNsaWVudDogSUNhY2hlQ2xpZW50O1xuICBwcml2YXRlIHJlYWRvbmx5IGNhY2hlTmFtZTogc3RyaW5nO1xuICBjb25zdHJ1Y3RvcihjYWNoZUNsaWVudDogSUNhY2hlQ2xpZW50LCBjYWNoZU5hbWU6IHN0cmluZykge1xuICAgIHRoaXMuY2FjaGVDbGllbnQgPSBjYWNoZUNsaWVudDtcbiAgICB0aGlzLmNhY2hlTmFtZSA9IGNhY2hlTmFtZTtcbiAgfVxuXG4gIGdldChrZXk6IHN0cmluZyB8IFVpbnQ4QXJyYXkpOiBQcm9taXNlPENhY2hlR2V0LlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVDbGllbnQuZ2V0KHRoaXMuY2FjaGVOYW1lLCBrZXkpO1xuICB9XG4gIHNldChcbiAgICBrZXk6IHN0cmluZyB8IFVpbnQ4QXJyYXksXG4gICAgdmFsdWU6IHN0cmluZyB8IFVpbnQ4QXJyYXksXG4gICAgb3B0aW9ucz86IFNldE9wdGlvbnNcbiAgKTogUHJvbWlzZTxDYWNoZVNldC5SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlQ2xpZW50LnNldCh0aGlzLmNhY2hlTmFtZSwga2V5LCB2YWx1ZSwgb3B0aW9ucyk7XG4gIH1cbiAgZGVsZXRlKGtleTogc3RyaW5nIHwgVWludDhBcnJheSk6IFByb21pc2U8Q2FjaGVEZWxldGUuUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZUNsaWVudC5kZWxldGUodGhpcy5jYWNoZU5hbWUsIGtleSk7XG4gIH1cbiAgaW5jcmVtZW50KFxuICAgIGZpZWxkOiBzdHJpbmcgfCBVaW50OEFycmF5LFxuICAgIGFtb3VudDogbnVtYmVyLFxuICAgIG9wdGlvbnM/OiBJbmNyZW1lbnRPcHRpb25zXG4gICk6IFByb21pc2U8Q2FjaGVJbmNyZW1lbnQuUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZUNsaWVudC5pbmNyZW1lbnQodGhpcy5jYWNoZU5hbWUsIGZpZWxkLCBhbW91bnQsIG9wdGlvbnMpO1xuICB9XG4gIHNldElmTm90RXhpc3RzKFxuICAgIGtleTogc3RyaW5nIHwgVWludDhBcnJheSxcbiAgICBmaWVsZDogc3RyaW5nIHwgVWludDhBcnJheSxcbiAgICBvcHRpb25zPzogU2V0SWZOb3RFeGlzdHNPcHRpb25zXG4gICk6IFByb21pc2U8Q2FjaGVTZXRJZk5vdEV4aXN0cy5SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlQ2xpZW50LnNldElmTm90RXhpc3RzKHRoaXMuY2FjaGVOYW1lLCBrZXksIGZpZWxkLCBvcHRpb25zKTtcbiAgfVxuICBzZXRGZXRjaChzZXROYW1lOiBzdHJpbmcpOiBQcm9taXNlPENhY2hlU2V0RmV0Y2guUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZUNsaWVudC5zZXRGZXRjaCh0aGlzLmNhY2hlTmFtZSwgc2V0TmFtZSk7XG4gIH1cbiAgc2V0QWRkRWxlbWVudChcbiAgICBzZXROYW1lOiBzdHJpbmcsXG4gICAgZWxlbWVudDogc3RyaW5nIHwgVWludDhBcnJheSxcbiAgICBvcHRpb25zPzogU2V0QWRkRWxlbWVudE9wdGlvbnNcbiAgKTogUHJvbWlzZTxDYWNoZVNldEFkZEVsZW1lbnQuUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZUNsaWVudC5zZXRBZGRFbGVtZW50KFxuICAgICAgdGhpcy5jYWNoZU5hbWUsXG4gICAgICBzZXROYW1lLFxuICAgICAgZWxlbWVudCxcbiAgICAgIG9wdGlvbnNcbiAgICApO1xuICB9XG4gIHNldEFkZEVsZW1lbnRzKFxuICAgIHNldE5hbWU6IHN0cmluZyxcbiAgICBlbGVtZW50czogc3RyaW5nW10gfCBVaW50OEFycmF5W10sXG4gICAgb3B0aW9ucz86IFNldEFkZEVsZW1lbnRzT3B0aW9uc1xuICApOiBQcm9taXNlPENhY2hlU2V0QWRkRWxlbWVudHMuUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZUNsaWVudC5zZXRBZGRFbGVtZW50cyhcbiAgICAgIHRoaXMuY2FjaGVOYW1lLFxuICAgICAgc2V0TmFtZSxcbiAgICAgIGVsZW1lbnRzLFxuICAgICAgb3B0aW9uc1xuICAgICk7XG4gIH1cbiAgc2V0UmVtb3ZlRWxlbWVudChcbiAgICBzZXROYW1lOiBzdHJpbmcsXG4gICAgZWxlbWVudDogc3RyaW5nIHwgVWludDhBcnJheVxuICApOiBQcm9taXNlPENhY2hlU2V0UmVtb3ZlRWxlbWVudC5SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlQ2xpZW50LnNldFJlbW92ZUVsZW1lbnQodGhpcy5jYWNoZU5hbWUsIHNldE5hbWUsIGVsZW1lbnQpO1xuICB9XG4gIHNldFJlbW92ZUVsZW1lbnRzKFxuICAgIHNldE5hbWU6IHN0cmluZyxcbiAgICBlbGVtZW50czogc3RyaW5nW10gfCBVaW50OEFycmF5W11cbiAgKTogUHJvbWlzZTxDYWNoZVNldFJlbW92ZUVsZW1lbnRzLlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVDbGllbnQuc2V0UmVtb3ZlRWxlbWVudHMoXG4gICAgICB0aGlzLmNhY2hlTmFtZSxcbiAgICAgIHNldE5hbWUsXG4gICAgICBlbGVtZW50c1xuICAgICk7XG4gIH1cbiAgbGlzdEZldGNoKFxuICAgIGxpc3ROYW1lOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IExpc3RGZXRjaENhbGxPcHRpb25zXG4gICk6IFByb21pc2U8Q2FjaGVMaXN0RmV0Y2guUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZUNsaWVudC5saXN0RmV0Y2godGhpcy5jYWNoZU5hbWUsIGxpc3ROYW1lLCBvcHRpb25zKTtcbiAgfVxuICBsaXN0TGVuZ3RoKGxpc3ROYW1lOiBzdHJpbmcpOiBQcm9taXNlPENhY2hlTGlzdExlbmd0aC5SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlQ2xpZW50Lmxpc3RMZW5ndGgodGhpcy5jYWNoZU5hbWUsIGxpc3ROYW1lKTtcbiAgfVxuICBsaXN0UHVzaEZyb250KFxuICAgIGxpc3ROYW1lOiBzdHJpbmcsXG4gICAgdmFsdWU6IHN0cmluZyB8IFVpbnQ4QXJyYXksXG4gICAgb3B0aW9ucz86IExpc3RQdXNoRnJvbnRPcHRpb25zXG4gICk6IFByb21pc2U8Q2FjaGVMaXN0UHVzaEZyb250LlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVDbGllbnQubGlzdFB1c2hGcm9udChcbiAgICAgIHRoaXMuY2FjaGVOYW1lLFxuICAgICAgbGlzdE5hbWUsXG4gICAgICB2YWx1ZSxcbiAgICAgIG9wdGlvbnNcbiAgICApO1xuICB9XG4gIGxpc3RQdXNoQmFjayhcbiAgICBsaXN0TmFtZTogc3RyaW5nLFxuICAgIHZhbHVlOiBzdHJpbmcgfCBVaW50OEFycmF5LFxuICAgIG9wdGlvbnM/OiBMaXN0UHVzaEJhY2tPcHRpb25zXG4gICk6IFByb21pc2U8Q2FjaGVMaXN0UHVzaEJhY2suUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZUNsaWVudC5saXN0UHVzaEJhY2soXG4gICAgICB0aGlzLmNhY2hlTmFtZSxcbiAgICAgIGxpc3ROYW1lLFxuICAgICAgdmFsdWUsXG4gICAgICBvcHRpb25zXG4gICAgKTtcbiAgfVxuICBsaXN0Q29uY2F0ZW5hdGVCYWNrKFxuICAgIGxpc3ROYW1lOiBzdHJpbmcsXG4gICAgdmFsdWVzOiBzdHJpbmdbXSB8IFVpbnQ4QXJyYXlbXSxcbiAgICBvcHRpb25zPzogTGlzdENvbmNhdGVuYXRlQmFja09wdGlvbnNcbiAgKTogUHJvbWlzZTxDYWNoZUxpc3RDb25jYXRlbmF0ZUJhY2suUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZUNsaWVudC5saXN0Q29uY2F0ZW5hdGVCYWNrKFxuICAgICAgdGhpcy5jYWNoZU5hbWUsXG4gICAgICBsaXN0TmFtZSxcbiAgICAgIHZhbHVlcyxcbiAgICAgIG9wdGlvbnNcbiAgICApO1xuICB9XG4gIGxpc3RDb25jYXRlbmF0ZUZyb250KFxuICAgIGxpc3ROYW1lOiBzdHJpbmcsXG4gICAgdmFsdWVzOiBzdHJpbmdbXSB8IFVpbnQ4QXJyYXlbXSxcbiAgICBvcHRpb25zPzogTGlzdENvbmNhdGVuYXRlRnJvbnRPcHRpb25zXG4gICk6IFByb21pc2U8Q2FjaGVMaXN0Q29uY2F0ZW5hdGVGcm9udC5SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlQ2xpZW50Lmxpc3RDb25jYXRlbmF0ZUZyb250KFxuICAgICAgdGhpcy5jYWNoZU5hbWUsXG4gICAgICBsaXN0TmFtZSxcbiAgICAgIHZhbHVlcyxcbiAgICAgIG9wdGlvbnNcbiAgICApO1xuICB9XG4gIGxpc3RQb3BCYWNrKGxpc3ROYW1lOiBzdHJpbmcpOiBQcm9taXNlPENhY2hlTGlzdFBvcEJhY2suUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZUNsaWVudC5saXN0UG9wQmFjayh0aGlzLmNhY2hlTmFtZSwgbGlzdE5hbWUpO1xuICB9XG4gIGxpc3RQb3BGcm9udChsaXN0TmFtZTogc3RyaW5nKTogUHJvbWlzZTxDYWNoZUxpc3RQb3BGcm9udC5SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlQ2xpZW50Lmxpc3RQb3BGcm9udCh0aGlzLmNhY2hlTmFtZSwgbGlzdE5hbWUpO1xuICB9XG4gIGxpc3RSZW1vdmVWYWx1ZShcbiAgICBsaXN0TmFtZTogc3RyaW5nLFxuICAgIHZhbHVlOiBzdHJpbmcgfCBVaW50OEFycmF5XG4gICk6IFByb21pc2U8Q2FjaGVMaXN0UmVtb3ZlVmFsdWUuUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZUNsaWVudC5saXN0UmVtb3ZlVmFsdWUodGhpcy5jYWNoZU5hbWUsIGxpc3ROYW1lLCB2YWx1ZSk7XG4gIH1cbiAgbGlzdFJldGFpbihcbiAgICBsaXN0TmFtZTogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBMaXN0UmV0YWluQ2FsbE9wdGlvbnNcbiAgKTogUHJvbWlzZTxDYWNoZUxpc3RSZXRhaW4uUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZUNsaWVudC5saXN0UmV0YWluKHRoaXMuY2FjaGVOYW1lLCBsaXN0TmFtZSwgb3B0aW9ucyk7XG4gIH1cbiAgZGljdGlvbmFyeVNldEZpZWxkKFxuICAgIGRpY3Rpb25hcnlOYW1lOiBzdHJpbmcsXG4gICAgZmllbGQ6IHN0cmluZyB8IFVpbnQ4QXJyYXksXG4gICAgdmFsdWU6IHN0cmluZyB8IFVpbnQ4QXJyYXksXG4gICAgb3B0aW9ucz86IERpY3Rpb25hcnlTZXRGaWVsZE9wdGlvbnNcbiAgKTogUHJvbWlzZTxDYWNoZURpY3Rpb25hcnlTZXRGaWVsZC5SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlQ2xpZW50LmRpY3Rpb25hcnlTZXRGaWVsZChcbiAgICAgIHRoaXMuY2FjaGVOYW1lLFxuICAgICAgZGljdGlvbmFyeU5hbWUsXG4gICAgICBmaWVsZCxcbiAgICAgIHZhbHVlLFxuICAgICAgb3B0aW9uc1xuICAgICk7XG4gIH1cbiAgZGljdGlvbmFyeVNldEZpZWxkcyhcbiAgICBkaWN0aW9uYXJ5TmFtZTogc3RyaW5nLFxuICAgIGVsZW1lbnRzOlxuICAgICAgfCBNYXA8c3RyaW5nIHwgVWludDhBcnJheSwgc3RyaW5nIHwgVWludDhBcnJheT5cbiAgICAgIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgVWludDhBcnJheT4sXG4gICAgb3B0aW9ucz86IERpY3Rpb25hcnlTZXRGaWVsZHNPcHRpb25zXG4gICk6IFByb21pc2U8Q2FjaGVEaWN0aW9uYXJ5U2V0RmllbGRzLlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVDbGllbnQuZGljdGlvbmFyeVNldEZpZWxkcyhcbiAgICAgIHRoaXMuY2FjaGVOYW1lLFxuICAgICAgZGljdGlvbmFyeU5hbWUsXG4gICAgICBlbGVtZW50cyxcbiAgICAgIG9wdGlvbnNcbiAgICApO1xuICB9XG4gIGRpY3Rpb25hcnlHZXRGaWVsZChcbiAgICBkaWN0aW9uYXJ5TmFtZTogc3RyaW5nLFxuICAgIGZpZWxkOiBzdHJpbmcgfCBVaW50OEFycmF5XG4gICk6IFByb21pc2U8Q2FjaGVEaWN0aW9uYXJ5R2V0RmllbGQuUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZUNsaWVudC5kaWN0aW9uYXJ5R2V0RmllbGQoXG4gICAgICB0aGlzLmNhY2hlTmFtZSxcbiAgICAgIGRpY3Rpb25hcnlOYW1lLFxuICAgICAgZmllbGRcbiAgICApO1xuICB9XG4gIGRpY3Rpb25hcnlHZXRGaWVsZHMoXG4gICAgZGljdGlvbmFyeU5hbWU6IHN0cmluZyxcbiAgICBmaWVsZHM6IHN0cmluZ1tdIHwgVWludDhBcnJheVtdXG4gICk6IFByb21pc2U8Q2FjaGVEaWN0aW9uYXJ5R2V0RmllbGRzLlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVDbGllbnQuZGljdGlvbmFyeUdldEZpZWxkcyhcbiAgICAgIHRoaXMuY2FjaGVOYW1lLFxuICAgICAgZGljdGlvbmFyeU5hbWUsXG4gICAgICBmaWVsZHNcbiAgICApO1xuICB9XG4gIGRpY3Rpb25hcnlGZXRjaChcbiAgICBkaWN0aW9uYXJ5TmFtZTogc3RyaW5nXG4gICk6IFByb21pc2U8Q2FjaGVEaWN0aW9uYXJ5RmV0Y2guUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZUNsaWVudC5kaWN0aW9uYXJ5RmV0Y2godGhpcy5jYWNoZU5hbWUsIGRpY3Rpb25hcnlOYW1lKTtcbiAgfVxuICBkaWN0aW9uYXJ5SW5jcmVtZW50KFxuICAgIGRpY3Rpb25hcnlOYW1lOiBzdHJpbmcsXG4gICAgZmllbGQ6IHN0cmluZyB8IFVpbnQ4QXJyYXksXG4gICAgYW1vdW50PzogbnVtYmVyLFxuICAgIG9wdGlvbnM/OiBEaWN0aW9uYXJ5SW5jcmVtZW50T3B0aW9uc1xuICApOiBQcm9taXNlPENhY2hlRGljdGlvbmFyeUluY3JlbWVudC5SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlQ2xpZW50LmRpY3Rpb25hcnlJbmNyZW1lbnQoXG4gICAgICB0aGlzLmNhY2hlTmFtZSxcbiAgICAgIGRpY3Rpb25hcnlOYW1lLFxuICAgICAgZmllbGQsXG4gICAgICBhbW91bnQsXG4gICAgICBvcHRpb25zXG4gICAgKTtcbiAgfVxuICBkaWN0aW9uYXJ5UmVtb3ZlRmllbGQoXG4gICAgZGljdGlvbmFyeU5hbWU6IHN0cmluZyxcbiAgICBmaWVsZDogc3RyaW5nIHwgVWludDhBcnJheVxuICApOiBQcm9taXNlPENhY2hlRGljdGlvbmFyeVJlbW92ZUZpZWxkLlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVDbGllbnQuZGljdGlvbmFyeVJlbW92ZUZpZWxkKFxuICAgICAgdGhpcy5jYWNoZU5hbWUsXG4gICAgICBkaWN0aW9uYXJ5TmFtZSxcbiAgICAgIGZpZWxkXG4gICAgKTtcbiAgfVxuICBkaWN0aW9uYXJ5UmVtb3ZlRmllbGRzKFxuICAgIGRpY3Rpb25hcnlOYW1lOiBzdHJpbmcsXG4gICAgZmllbGRzOiBzdHJpbmdbXSB8IFVpbnQ4QXJyYXlbXVxuICApOiBQcm9taXNlPENhY2hlRGljdGlvbmFyeVJlbW92ZUZpZWxkcy5SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlQ2xpZW50LmRpY3Rpb25hcnlSZW1vdmVGaWVsZHMoXG4gICAgICB0aGlzLmNhY2hlTmFtZSxcbiAgICAgIGRpY3Rpb25hcnlOYW1lLFxuICAgICAgZmllbGRzXG4gICAgKTtcbiAgfVxuXG4gIGRpY3Rpb25hcnlMZW5ndGgoXG4gICAgZGljdGlvbmFyeU5hbWU6IHN0cmluZ1xuICApOiBQcm9taXNlPENhY2hlRGljdGlvbmFyeUxlbmd0aC5SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlQ2xpZW50LmRpY3Rpb25hcnlMZW5ndGgodGhpcy5jYWNoZU5hbWUsIGRpY3Rpb25hcnlOYW1lKTtcbiAgfVxuXG4gIHNvcnRlZFNldEZldGNoQnlSYW5rKFxuICAgIHNvcnRlZFNldE5hbWU6IHN0cmluZyxcbiAgICBvcHRpb25zPzogU29ydGVkU2V0RmV0Y2hCeVJhbmtPcHRpb25zXG4gICk6IFByb21pc2U8Q2FjaGVTb3J0ZWRTZXRGZXRjaC5SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlQ2xpZW50LnNvcnRlZFNldEZldGNoQnlSYW5rKFxuICAgICAgdGhpcy5jYWNoZU5hbWUsXG4gICAgICBzb3J0ZWRTZXROYW1lLFxuICAgICAgb3B0aW9uc1xuICAgICk7XG4gIH1cbiAgc29ydGVkU2V0RmV0Y2hCeVNjb3JlKFxuICAgIHNvcnRlZFNldE5hbWU6IHN0cmluZyxcbiAgICBvcHRpb25zPzogU29ydGVkU2V0RmV0Y2hCeVNjb3JlT3B0aW9uc1xuICApOiBQcm9taXNlPENhY2hlU29ydGVkU2V0RmV0Y2guUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZUNsaWVudC5zb3J0ZWRTZXRGZXRjaEJ5U2NvcmUoXG4gICAgICB0aGlzLmNhY2hlTmFtZSxcbiAgICAgIHNvcnRlZFNldE5hbWUsXG4gICAgICBvcHRpb25zXG4gICAgKTtcbiAgfVxuICBzb3J0ZWRTZXRQdXRFbGVtZW50KFxuICAgIHNvcnRlZFNldE5hbWU6IHN0cmluZyxcbiAgICB2YWx1ZTogc3RyaW5nIHwgVWludDhBcnJheSxcbiAgICBzY29yZTogbnVtYmVyLFxuICAgIG9wdGlvbnM/OiBTb3J0ZWRTZXRQdXRFbGVtZW50T3B0aW9uc1xuICApOiBQcm9taXNlPENhY2hlU29ydGVkU2V0UHV0RWxlbWVudC5SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlQ2xpZW50LnNvcnRlZFNldFB1dEVsZW1lbnQoXG4gICAgICB0aGlzLmNhY2hlTmFtZSxcbiAgICAgIHNvcnRlZFNldE5hbWUsXG4gICAgICB2YWx1ZSxcbiAgICAgIHNjb3JlLFxuICAgICAgb3B0aW9uc1xuICAgICk7XG4gIH1cbiAgc29ydGVkU2V0UHV0RWxlbWVudHMoXG4gICAgc29ydGVkU2V0TmFtZTogc3RyaW5nLFxuICAgIGVsZW1lbnRzOiBNYXA8c3RyaW5nIHwgVWludDhBcnJheSwgbnVtYmVyPiB8IFJlY29yZDxzdHJpbmcsIG51bWJlcj4sXG4gICAgb3B0aW9ucz86IFNvcnRlZFNldFB1dEVsZW1lbnRzT3B0aW9uc1xuICApOiBQcm9taXNlPENhY2hlU29ydGVkU2V0UHV0RWxlbWVudHMuUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZUNsaWVudC5zb3J0ZWRTZXRQdXRFbGVtZW50cyhcbiAgICAgIHRoaXMuY2FjaGVOYW1lLFxuICAgICAgc29ydGVkU2V0TmFtZSxcbiAgICAgIGVsZW1lbnRzLFxuICAgICAgb3B0aW9uc1xuICAgICk7XG4gIH1cbiAgc29ydGVkU2V0R2V0UmFuayhcbiAgICBzb3J0ZWRTZXROYW1lOiBzdHJpbmcsXG4gICAgdmFsdWU6IHN0cmluZyB8IFVpbnQ4QXJyYXlcbiAgKTogUHJvbWlzZTxDYWNoZVNvcnRlZFNldEdldFJhbmsuUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZUNsaWVudC5zb3J0ZWRTZXRHZXRSYW5rKFxuICAgICAgdGhpcy5jYWNoZU5hbWUsXG4gICAgICBzb3J0ZWRTZXROYW1lLFxuICAgICAgdmFsdWVcbiAgICApO1xuICB9XG4gIHNvcnRlZFNldEdldFNjb3JlKFxuICAgIHNvcnRlZFNldE5hbWU6IHN0cmluZyxcbiAgICB2YWx1ZTogc3RyaW5nIHwgVWludDhBcnJheVxuICApOiBQcm9taXNlPENhY2hlU29ydGVkU2V0R2V0U2NvcmUuUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZUNsaWVudC5zb3J0ZWRTZXRHZXRTY29yZShcbiAgICAgIHRoaXMuY2FjaGVOYW1lLFxuICAgICAgc29ydGVkU2V0TmFtZSxcbiAgICAgIHZhbHVlXG4gICAgKTtcbiAgfVxuICBzb3J0ZWRTZXRHZXRTY29yZXMoXG4gICAgc29ydGVkU2V0TmFtZTogc3RyaW5nLFxuICAgIHZhbHVlczogc3RyaW5nW10gfCBVaW50OEFycmF5W11cbiAgKTogUHJvbWlzZTxDYWNoZVNvcnRlZFNldEdldFNjb3Jlcy5SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlQ2xpZW50LnNvcnRlZFNldEdldFNjb3JlcyhcbiAgICAgIHRoaXMuY2FjaGVOYW1lLFxuICAgICAgc29ydGVkU2V0TmFtZSxcbiAgICAgIHZhbHVlc1xuICAgICk7XG4gIH1cbiAgc29ydGVkU2V0SW5jcmVtZW50U2NvcmUoXG4gICAgc29ydGVkU2V0TmFtZTogc3RyaW5nLFxuICAgIHZhbHVlOiBzdHJpbmcgfCBVaW50OEFycmF5LFxuICAgIGFtb3VudD86IG51bWJlcixcbiAgICBvcHRpb25zPzogU29ydGVkU2V0SW5jcmVtZW50T3B0aW9uc1xuICApOiBQcm9taXNlPENhY2hlU29ydGVkU2V0SW5jcmVtZW50U2NvcmUuUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZUNsaWVudC5zb3J0ZWRTZXRJbmNyZW1lbnRTY29yZShcbiAgICAgIHRoaXMuY2FjaGVOYW1lLFxuICAgICAgc29ydGVkU2V0TmFtZSxcbiAgICAgIHZhbHVlLFxuICAgICAgYW1vdW50LFxuICAgICAgb3B0aW9uc1xuICAgICk7XG4gIH1cbiAgc29ydGVkU2V0UmVtb3ZlRWxlbWVudChcbiAgICBzb3J0ZWRTZXROYW1lOiBzdHJpbmcsXG4gICAgdmFsdWU6IHN0cmluZyB8IFVpbnQ4QXJyYXlcbiAgKTogUHJvbWlzZTxDYWNoZVNvcnRlZFNldFJlbW92ZUVsZW1lbnQuUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZUNsaWVudC5zb3J0ZWRTZXRSZW1vdmVFbGVtZW50KFxuICAgICAgdGhpcy5jYWNoZU5hbWUsXG4gICAgICBzb3J0ZWRTZXROYW1lLFxuICAgICAgdmFsdWVcbiAgICApO1xuICB9XG4gIHNvcnRlZFNldFJlbW92ZUVsZW1lbnRzKFxuICAgIHNvcnRlZFNldE5hbWU6IHN0cmluZyxcbiAgICB2YWx1ZXM6IHN0cmluZ1tdIHwgVWludDhBcnJheVtdXG4gICk6IFByb21pc2U8Q2FjaGVTb3J0ZWRTZXRSZW1vdmVFbGVtZW50cy5SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlQ2xpZW50LnNvcnRlZFNldFJlbW92ZUVsZW1lbnRzKFxuICAgICAgdGhpcy5jYWNoZU5hbWUsXG4gICAgICBzb3J0ZWRTZXROYW1lLFxuICAgICAgdmFsdWVzXG4gICAgKTtcbiAgfVxuICBzb3J0ZWRTZXRMZW5ndGgoXG4gICAgc29ydGVkU2V0TmFtZTogc3RyaW5nXG4gICk6IFByb21pc2U8Q2FjaGVTb3J0ZWRTZXRMZW5ndGguUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZUNsaWVudC5zb3J0ZWRTZXRMZW5ndGgodGhpcy5jYWNoZU5hbWUsIHNvcnRlZFNldE5hbWUpO1xuICB9XG4gIHNvcnRlZFNldExlbmd0aEJ5U2NvcmUoXG4gICAgc29ydGVkU2V0TmFtZTogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBTb3J0ZWRTZXRMZW5ndGhCeVNjb3JlT3B0aW9uc1xuICApOiBQcm9taXNlPENhY2hlU29ydGVkU2V0TGVuZ3RoQnlTY29yZS5SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlQ2xpZW50LnNvcnRlZFNldExlbmd0aEJ5U2NvcmUoXG4gICAgICB0aGlzLmNhY2hlTmFtZSxcbiAgICAgIHNvcnRlZFNldE5hbWUsXG4gICAgICBvcHRpb25zXG4gICAgKTtcbiAgfVxuICBpdGVtR2V0VHlwZShrZXk6IHN0cmluZyB8IFVpbnQ4QXJyYXkpOiBQcm9taXNlPENhY2hlSXRlbUdldFR5cGUuUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZUNsaWVudC5pdGVtR2V0VHlwZSh0aGlzLmNhY2hlTmFtZSwga2V5KTtcbiAgfVxuICBpdGVtR2V0VHRsKGtleTogc3RyaW5nIHwgVWludDhBcnJheSk6IFByb21pc2U8Q2FjaGVJdGVtR2V0VHRsLlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVDbGllbnQuaXRlbUdldFR0bCh0aGlzLmNhY2hlTmFtZSwga2V5KTtcbiAgfVxuICBrZXlFeGlzdHMoa2V5OiBzdHJpbmcgfCBVaW50OEFycmF5KTogUHJvbWlzZTxDYWNoZUtleUV4aXN0cy5SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlQ2xpZW50LmtleUV4aXN0cyh0aGlzLmNhY2hlTmFtZSwga2V5KTtcbiAgfVxuICBrZXlzRXhpc3Qoa2V5czogc3RyaW5nW10gfCBVaW50OEFycmF5W10pOiBQcm9taXNlPENhY2hlS2V5c0V4aXN0LlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVDbGllbnQua2V5c0V4aXN0KHRoaXMuY2FjaGVOYW1lLCBrZXlzKTtcbiAgfVxuICB1cGRhdGVUdGwoXG4gICAga2V5OiBzdHJpbmcgfCBVaW50OEFycmF5LFxuICAgIHR0bE1pbGxpc2Vjb25kczogbnVtYmVyXG4gICk6IFByb21pc2U8Q2FjaGVVcGRhdGVUdGwuUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZUNsaWVudC51cGRhdGVUdGwodGhpcy5jYWNoZU5hbWUsIGtleSwgdHRsTWlsbGlzZWNvbmRzKTtcbiAgfVxuICBpbmNyZWFzZVR0bChcbiAgICBrZXk6IHN0cmluZyB8IFVpbnQ4QXJyYXksXG4gICAgdHRsTWlsbGlzZWNvbmRzOiBudW1iZXJcbiAgKTogUHJvbWlzZTxDYWNoZUluY3JlYXNlVHRsLlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVDbGllbnQuaW5jcmVhc2VUdGwodGhpcy5jYWNoZU5hbWUsIGtleSwgdHRsTWlsbGlzZWNvbmRzKTtcbiAgfVxuICBkZWNyZWFzZVR0bChcbiAgICBrZXk6IHN0cmluZyB8IFVpbnQ4QXJyYXksXG4gICAgdHRsTWlsbGlzZWNvbmRzOiBudW1iZXJcbiAgKTogUHJvbWlzZTxDYWNoZURlY3JlYXNlVHRsLlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVDbGllbnQuZGVjcmVhc2VUdGwodGhpcy5jYWNoZU5hbWUsIGtleSwgdHRsTWlsbGlzZWNvbmRzKTtcbiAgfVxufVxuIl19
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9tZW50by1jYWNoZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9pbnRlcm5hbC9jbGllbnRzL2NhY2hlL21vbWVudG8tY2FjaGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBc0ZBLE1BQWEsWUFBWTtJQUd2QixZQUFZLFdBQXlCLEVBQUUsU0FBaUI7UUFDdEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDN0IsQ0FBQztJQUVELEdBQUcsQ0FBQyxHQUF3QjtRQUMxQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUNELEdBQUcsQ0FDRCxHQUF3QixFQUN4QixLQUEwQixFQUMxQixPQUFvQjtRQUVwQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBQ0QsTUFBTSxDQUFDLEdBQXdCO1FBQzdCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBQ0QsU0FBUyxDQUNQLEtBQTBCLEVBQzFCLE1BQWMsRUFDZCxPQUEwQjtRQUUxQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBQ0QsY0FBYyxDQUNaLEdBQXdCLEVBQ3hCLEtBQTBCLEVBQzFCLE9BQStCO1FBRS9CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMs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TyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFDRCxTQUFTLENBQUMsR0FBd0I7UUFDaEMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFDRCxTQUFTLENBQUMsSUFBNkI7UUFDckMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFDRCxTQUFTLENBQ1AsR0FBd0IsRUFDeEIsZUFBdUI7UUFFdkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxlQUFlLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBQ0QsV0FBVyxDQUNULEdBQXdCLEVBQ3hCLGVBQXVCO1FBRXZCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUNELFdBQVcsQ0FDVCxHQUF3QixFQUN4QixlQUF1QjtRQUV2QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQzVFLENBQUM7Q0FDRjtBQTdaRCxvQ0E2WkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDYWNoZURlbGV0ZSxcbiAgQ2FjaGVHZXQsXG4gIENhY2hlSW5jcmVtZW50LFxuICBDYWNoZVNldCxcbiAgQ2FjaGVTZXRJZk5vdEV4aXN0cyxcbiAgQ2FjaGVTZXRGZXRjaCxcbiAgQ2FjaGVTZXRBZGRFbGVtZW50cyxcbiAgQ2FjaGVTZXRBZGRFbGVtZW50LFxuICBDYWNoZVNldFJlbW92ZUVsZW1lbnRzLFxuICBDYWNoZVNldFJlbW92ZUVsZW1lbnQsXG4gIENhY2hlTGlzdEZldGNoLFxuICBDYWNoZUxpc3RMZW5ndGgsXG4gIENhY2hlTGlzdFB1c2hGcm9udCxcbiAgQ2FjaGVMaXN0UHVzaEJhY2ssXG4gIENhY2hlTGlzdENvbmNhdGVuYXRlQmFjayxcbiAgQ2FjaGVMaXN0Q29uY2F0ZW5hdGVGcm9udCxcbiAgQ2FjaGVMaXN0UG9wQmFjayxcbiAgQ2FjaGVMaXN0UG9wRnJvbnQsXG4gIENhY2hlTGlzdFJlbW92ZVZhbHVlLFxuICBDYWNoZUxpc3RSZXRhaW4sXG4gIENhY2hlRGljdGlvbmFyeVNldEZpZWxkLFxuICBDYWNoZURpY3Rpb25hcnlTZXRGaWVsZHMsXG4gIENhY2hlRGljdGlvbmFyeUdldEZpZWxkLFxuICBDYWNoZURpY3Rpb25hcnlGZXRjaCxcbiAgQ2FjaGVEaWN0aW9uYXJ5SW5jcmVtZW50LFxuICBDYWNoZURpY3Rpb25hcnlSZW1vdmVGaWVsZCxcbiAgQ2FjaGVEaWN0aW9uYXJ5UmVtb3ZlRmllbGRzLFxuICBDYWNoZVNvcnRlZFNldEZldGNoLFxuICBDYWNoZVNvcnRlZFNldFB1dEVsZW1lbnQsXG4gIENhY2hlU29ydGVkU2V0UHV0RWxlbWVudHMsXG4gIENhY2hlU29ydGVkU2V0R2V0UmFuayxcbiAgQ2FjaGVTb3J0ZWRTZXRHZXRTY29yZSxcbiAgQ2FjaGVTb3J0ZWRTZXRHZXRTY29yZXMsXG4gIENhY2hlU29ydGVkU2V0SW5jcmVtZW50U2NvcmUsXG4gIENhY2hlU29ydGVkU2V0UmVtb3ZlRWxlbWVudCxcbiAgQ2FjaGVTb3J0ZWRTZXRMZW5ndGgsXG4gIENhY2hlU29ydGVkU2V0TGVuZ3RoQnlTY29yZSxcbiAgQ2FjaGVJdGVtR2V0VHlwZSxcbiAgQ2FjaGVJdGVtR2V0VHRsLFxuICBDYWNoZUtleUV4aXN0cyxcbiAgQ2FjaGVLZXlzRXhpc3QsXG4gIENhY2hlVXBkYXRlVHRsLFxuICBDYWNoZUluY3JlYXNlVHRsLFxuICBDYWNoZURlY3JlYXNlVHRsLFxuICBJQ2FjaGVDbGllbnQsXG4gIENhY2hlU29ydGVkU2V0UmVtb3ZlRWxlbWVudHMsXG4gIENhY2hlRGljdGlvbmFyeUdldEZpZWxkcyxcbiAgQ2FjaGVEaWN0aW9uYXJ5TGVuZ3RoLFxuICBHZXRCYXRjaCxcbiAgU2V0QmF0Y2gsXG59IGZyb20gJy4uLy4uLy4uL2luZGV4JztcbmltcG9ydCB7XG4gIFNjYWxhckNhbGxPcHRpb25zLFxuICBMaXN0RmV0Y2hDYWxsT3B0aW9ucyxcbiAgTGlzdFJldGFpbkNhbGxPcHRpb25zLFxuICBCYWNrVHJ1bmNhdGFibGVDYWxsT3B0aW9ucyxcbiAgRnJvbnRUcnVuY2F0YWJsZUNhbGxPcHRpb25zLFxuICBDb2xsZWN0aW9uQ2FsbE9wdGlvbnMsXG4gIFNvcnRlZFNldEZldGNoQnlSYW5rQ2FsbE9wdGlvbnMsXG4gIFNvcnRlZFNldEZldGNoQnlTY29yZUNhbGxPcHRpb25zLFxuICBTb3J0ZWRTZXRMZW5ndGhCeVNjb3JlQ2FsbE9wdGlvbnMsXG59IGZyb20gJy4uLy4uLy4uL3V0aWxzJztcbmltcG9ydCB7SU1vbWVudG9DYWNoZX0gZnJvbSAnLi4vLi4vLi4vY2xpZW50cy9JTW9tZW50b0NhY2hlJztcblxuLy8gVHlwZSBhbGlhc2VzIHRvIGRpZmZlcmVudGlhdGUgdGhlIGRpZmZlcmVudCBtZXRob2RzJyBvcHRpb25hbCBhcmd1bWVudHMuXG5leHBvcnQgdHlwZSBTZXRPcHRpb25zID0gU2NhbGFyQ2FsbE9wdGlvbnM7XG5leHBvcnQgdHlwZSBTZXRJZk5vdEV4aXN0c09wdGlvbnMgPSBTY2FsYXJDYWxsT3B0aW9ucztcbmV4cG9ydCB0eXBlIFNldEJhdGNoT3B0aW9ucyA9IFNjYWxhckNhbGxPcHRpb25zO1xuZXhwb3J0IHR5cGUgTGlzdENvbmNhdGVuYXRlQmFja09wdGlvbnMgPSBGcm9udFRydW5jYXRhYmxlQ2FsbE9wdGlvbnM7XG5leHBvcnQgdHlwZSBMaXN0Q29uY2F0ZW5hdGVGcm9udE9wdGlvbnMgPSBCYWNrVHJ1bmNhdGFibGVDYWxsT3B0aW9ucztcbmV4cG9ydCB0eXBlIExpc3RQdXNoQmFja09wdGlvbnMgPSBGcm9udFRydW5jYXRhYmxlQ2FsbE9wdGlvbnM7XG5leHBvcnQgdHlwZSBMaXN0UHVzaEZyb250T3B0aW9ucyA9IEJhY2tUcnVuY2F0YWJsZUNhbGxPcHRpb25zO1xuZXhwb3J0IHR5cGUgU2V0QWRkRWxlbWVudE9wdGlvbnMgPSBDb2xsZWN0aW9uQ2FsbE9wdGlvbnM7XG5leHBvcnQgdHlwZSBTZXRBZGRFbGVtZW50c09wdGlvbnMgPSBDb2xsZWN0aW9uQ2FsbE9wdGlvbnM7XG5leHBvcnQgdHlwZSBEaWN0aW9uYXJ5U2V0RmllbGRPcHRpb25zID0gQ29sbGVjdGlvbkNhbGxPcHRpb25zO1xuZXhwb3J0IHR5cGUgRGljdGlvbmFyeVNldEZpZWxkc09wdGlvbnMgPSBDb2xsZWN0aW9uQ2FsbE9wdGlvbnM7XG5leHBvcnQgdHlwZSBEaWN0aW9uYXJ5SW5jcmVtZW50T3B0aW9ucyA9IENvbGxlY3Rpb25DYWxsT3B0aW9ucztcbmV4cG9ydCB0eXBlIEluY3JlbWVudE9wdGlvbnMgPSBTY2FsYXJDYWxsT3B0aW9ucztcbmV4cG9ydCB0eXBlIFNvcnRlZFNldFB1dEVsZW1lbnRPcHRpb25zID0gQ29sbGVjdGlvbkNhbGxPcHRpb25zO1xuZXhwb3J0IHR5cGUgU29ydGVkU2V0UHV0RWxlbWVudHNPcHRpb25zID0gQ29sbGVjdGlvbkNhbGxPcHRpb25zO1xuZXhwb3J0IHR5cGUgU29ydGVkU2V0RmV0Y2hCeVJhbmtPcHRpb25zID0gU29ydGVkU2V0RmV0Y2hCeVJhbmtDYWxsT3B0aW9ucztcbmV4cG9ydCB0eXBlIFNvcnRlZFNldEZldGNoQnlTY29yZU9wdGlvbnMgPSBTb3J0ZWRTZXRGZXRjaEJ5U2NvcmVDYWxsT3B0aW9ucztcbmV4cG9ydCB0eXBlIFNvcnRlZFNldEluY3JlbWVudE9wdGlvbnMgPSBDb2xsZWN0aW9uQ2FsbE9wdGlvbnM7XG5leHBvcnQgdHlwZSBTb3J0ZWRTZXRMZW5ndGhCeVNjb3JlT3B0aW9ucyA9IFNvcnRlZFNldExlbmd0aEJ5U2NvcmVDYWxsT3B0aW9ucztcblxuZXhwb3J0IGNsYXNzIE1vbWVudG9DYWNoZSBpbXBsZW1lbnRzIElNb21lbnRvQ2FjaGUge1xuICBwcml2YXRlIHJlYWRvbmx5IGNhY2hlQ2xpZW50OiBJQ2FjaGVDbGllbnQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2FjaGVOYW1lOiBzdHJpbmc7XG4gIGNvbnN0cnVjdG9yKGNhY2hlQ2xpZW50OiBJQ2FjaGVDbGllbnQsIGNhY2hlTmFtZTogc3RyaW5nKSB7XG4gICAgdGhpcy5jYWNoZUNsaWVudCA9IGNhY2hlQ2xpZW50O1xuICAgIHRoaXMuY2FjaGVOYW1lID0gY2FjaGVOYW1lO1xuICB9XG5cbiAgZ2V0KGtleTogc3RyaW5nIHwgVWludDhBcnJheSk6IFByb21pc2U8Q2FjaGVHZXQuUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZUNsaWVudC5nZXQodGhpcy5jYWNoZU5hbWUsIGtleSk7XG4gIH1cbiAgc2V0KFxuICAgIGtleTogc3RyaW5nIHwgVWludDhBcnJheSxcbiAgICB2YWx1ZTogc3RyaW5nIHwgVWludDhBcnJheSxcbiAgICBvcHRpb25zPzogU2V0T3B0aW9uc1xuICApOiBQcm9taXNlPENhY2hlU2V0LlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVDbGllbnQuc2V0KHRoaXMuY2FjaGVOYW1lLCBrZXksIHZhbHVlLCBvcHRpb25zKTtcbiAgfVxuICBkZWxldGUoa2V5OiBzdHJpbmcgfCBVaW50OEFycmF5KTogUHJvbWlzZTxDYWNoZURlbGV0ZS5SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlQ2xpZW50LmRlbGV0ZSh0aGlzLmNhY2hlTmFtZSwga2V5KTtcbiAgfVxuICBpbmNyZW1lbnQoXG4gICAgZmllbGQ6IHN0cmluZyB8IFVpbnQ4QXJyYXksXG4gICAgYW1vdW50OiBudW1iZXIsXG4gICAgb3B0aW9ucz86IEluY3JlbWVudE9wdGlvbnNcbiAgKTogUHJvbWlzZTxDYWNoZUluY3JlbWVudC5SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlQ2xpZW50LmluY3JlbWVudCh0aGlzLmNhY2hlTmFtZSwgZmllbGQsIGFtb3VudCwgb3B0aW9ucyk7XG4gIH1cbiAgc2V0SWZOb3RFeGlzdHMoXG4gICAga2V5OiBzdHJpbmcgfCBVaW50OEFycmF5LFxuICAgIGZpZWxkOiBzdHJpbmcgfCBVaW50OEFycmF5LFxuICAgIG9wdGlvbnM/OiBTZXRJZk5vdEV4aXN0c09wdGlvbnNcbiAgKTogUHJvbWlzZTxDYWNoZVNldElmTm90RXhpc3RzLlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVDbGllbnQuc2V0SWZOb3RFeGlzdHModGhpcy5jYWNoZU5hbWUsIGtleSwgZmllbGQsIG9wdGlvbnMpO1xuICB9XG4gIGdldEJhdGNoKGtleXM6IHN0cmluZ1tdIHwgVWludDhBcnJheVtdKTogUHJvbWlzZTxHZXRCYXRjaC5SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlQ2xpZW50LmdldEJhdGNoKHRoaXMuY2FjaGVOYW1lLCBrZXlzKTtcbiAgfVxuICBzZXRCYXRjaChcbiAgICBpdGVtczpcbiAgICAgIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgVWludDhBcnJheT5cbiAgICAgIHwgTWFwPHN0cmluZyB8IFVpbnQ4QXJyYXksIHN0cmluZyB8IFVpbnQ4QXJyYXk+LFxuICAgIG9wdGlvbnM/OiBTZXRCYXRjaE9wdGlvbnNcbiAgKTogUHJvbWlzZTxTZXRCYXRjaC5SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlQ2xpZW50LnNldEJhdGNoKHRoaXMuY2FjaGVOYW1lLCBpdGVtcywgb3B0aW9ucyk7XG4gIH1cbiAgc2V0RmV0Y2goc2V0TmFtZTogc3RyaW5nKTogUHJvbWlzZTxDYWNoZVNldEZldGNoLlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVDbGllbnQuc2V0RmV0Y2godGhpcy5jYWNoZU5hbWUsIHNldE5hbWUpO1xuICB9XG4gIHNldEFkZEVsZW1lbnQoXG4gICAgc2V0TmFtZTogc3RyaW5nLFxuICAgIGVsZW1lbnQ6IHN0cmluZyB8IFVpbnQ4QXJyYXksXG4gICAgb3B0aW9ucz86IFNldEFkZEVsZW1lbnRPcHRpb25zXG4gICk6IFByb21pc2U8Q2FjaGVTZXRBZGRFbGVtZW50LlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVDbGllbnQuc2V0QWRkRWxlbWVudChcbiAgICAgIHRoaXMuY2FjaGVOYW1lLFxuICAgICAgc2V0TmFtZSxcbiAgICAgIGVsZW1lbnQsXG4gICAgICBvcHRpb25zXG4gICAgKTtcbiAgfVxuICBzZXRBZGRFbGVtZW50cyhcbiAgICBzZXROYW1lOiBzdHJpbmcsXG4gICAgZWxlbWVudHM6IHN0cmluZ1tdIHwgVWludDhBcnJheVtdLFxuICAgIG9wdGlvbnM/OiBTZXRBZGRFbGVtZW50c09wdGlvbnNcbiAgKTogUHJvbWlzZTxDYWNoZVNldEFkZEVsZW1lbnRzLlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVDbGllbnQuc2V0QWRkRWxlbWVudHMoXG4gICAgICB0aGlzLmNhY2hlTmFtZSxcbiAgICAgIHNldE5hbWUsXG4gICAgICBlbGVtZW50cyxcbiAgICAgIG9wdGlvbnNcbiAgICApO1xuICB9XG4gIHNldFJlbW92ZUVsZW1lbnQoXG4gICAgc2V0TmFtZTogc3RyaW5nLFxuICAgIGVsZW1lbnQ6IHN0cmluZyB8IFVpbnQ4QXJyYXlcbiAgKTogUHJvbWlzZTxDYWNoZVNldFJlbW92ZUVsZW1lbnQuUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZUNsaWVudC5zZXRSZW1vdmVFbGVtZW50KHRoaXMuY2FjaGVOYW1lLCBzZXROYW1lLCBlbGVtZW50KTtcbiAgfVxuICBzZXRSZW1vdmVFbGVtZW50cyhcbiAgICBzZXROYW1lOiBzdHJpbmcsXG4gICAgZWxlbWVudHM6IHN0cmluZ1tdIHwgVWludDhBcnJheVtdXG4gICk6IFByb21pc2U8Q2FjaGVTZXRSZW1vdmVFbGVtZW50cy5SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlQ2xpZW50LnNldFJlbW92ZUVsZW1lbnRzKFxuICAgICAgdGhpcy5jYWNoZU5hbWUsXG4gICAgICBzZXROYW1lLFxuICAgICAgZWxlbWVudHNcbiAgICApO1xuICB9XG4gIGxpc3RGZXRjaChcbiAgICBsaXN0TmFtZTogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBMaXN0RmV0Y2hDYWxsT3B0aW9uc1xuICApOiBQcm9taXNlPENhY2hlTGlzdEZldGNoLlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVDbGllbnQubGlzdEZldGNoKHRoaXMuY2FjaGVOYW1lLCBsaXN0TmFtZSwgb3B0aW9ucyk7XG4gIH1cbiAgbGlzdExlbmd0aChsaXN0TmFtZTogc3RyaW5nKTogUHJvbWlzZTxDYWNoZUxpc3RMZW5ndGguUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZUNsaWVudC5saXN0TGVuZ3RoKHRoaXMuY2FjaGVOYW1lLCBsaXN0TmFtZSk7XG4gIH1cbiAgbGlzdFB1c2hGcm9udChcbiAgICBsaXN0TmFtZTogc3RyaW5nLFxuICAgIHZhbHVlOiBzdHJpbmcgfCBVaW50OEFycmF5LFxuICAgIG9wdGlvbnM/OiBMaXN0UHVzaEZyb250T3B0aW9uc1xuICApOiBQcm9taXNlPENhY2hlTGlzdFB1c2hGcm9udC5SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlQ2xpZW50Lmxpc3RQdXNoRnJvbnQoXG4gICAgICB0aGlzLmNhY2hlTmFtZSxcbiAgICAgIGxpc3ROYW1lLFxuICAgICAgdmFsdWUsXG4gICAgICBvcHRpb25zXG4gICAgKTtcbiAgfVxuICBsaXN0UHVzaEJhY2soXG4gICAgbGlzdE5hbWU6IHN0cmluZyxcbiAgICB2YWx1ZTogc3RyaW5nIHwgVWludDhBcnJheSxcbiAgICBvcHRpb25zPzogTGlzdFB1c2hCYWNrT3B0aW9uc1xuICApOiBQcm9taXNlPENhY2hlTGlzdFB1c2hCYWNrLlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVDbGllbnQubGlzdFB1c2hCYWNrKFxuICAgICAgdGhpcy5jYWNoZU5hbWUsXG4gICAgICBsaXN0TmFtZSxcbiAgICAgIHZhbHVlLFxuICAgICAgb3B0aW9uc1xuICAgICk7XG4gIH1cbiAgbGlzdENvbmNhdGVuYXRlQmFjayhcbiAgICBsaXN0TmFtZTogc3RyaW5nLFxuICAgIHZhbHVlczogc3RyaW5nW10gfCBVaW50OEFycmF5W10sXG4gICAgb3B0aW9ucz86IExpc3RDb25jYXRlbmF0ZUJhY2tPcHRpb25zXG4gICk6IFByb21pc2U8Q2FjaGVMaXN0Q29uY2F0ZW5hdGVCYWNrLlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVDbGllbnQubGlzdENvbmNhdGVuYXRlQmFjayhcbiAgICAgIHRoaXMuY2FjaGVOYW1lLFxuICAgICAgbGlzdE5hbWUsXG4gICAgICB2YWx1ZXMsXG4gICAgICBvcHRpb25zXG4gICAgKTtcbiAgfVxuICBsaXN0Q29uY2F0ZW5hdGVGcm9udChcbiAgICBsaXN0TmFtZTogc3RyaW5nLFxuICAgIHZhbHVlczogc3RyaW5nW10gfCBVaW50OEFycmF5W10sXG4gICAgb3B0aW9ucz86IExpc3RDb25jYXRlbmF0ZUZyb250T3B0aW9uc1xuICApOiBQcm9taXNlPENhY2hlTGlzdENvbmNhdGVuYXRlRnJvbnQuUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZUNsaWVudC5saXN0Q29uY2F0ZW5hdGVGcm9udChcbiAgICAgIHRoaXMuY2FjaGVOYW1lLFxuICAgICAgbGlzdE5hbWUsXG4gICAgICB2YWx1ZXMsXG4gICAgICBvcHRpb25zXG4gICAgKTtcbiAgfVxuICBsaXN0UG9wQmFjayhsaXN0TmFtZTogc3RyaW5nKTogUHJvbWlzZTxDYWNoZUxpc3RQb3BCYWNrLlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVDbGllbnQubGlzdFBvcEJhY2sodGhpcy5jYWNoZU5hbWUsIGxpc3ROYW1lKTtcbiAgfVxuICBsaXN0UG9wRnJvbnQobGlzdE5hbWU6IHN0cmluZyk6IFByb21pc2U8Q2FjaGVMaXN0UG9wRnJvbnQuUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZUNsaWVudC5saXN0UG9wRnJvbnQodGhpcy5jYWNoZU5hbWUsIGxpc3ROYW1lKTtcbiAgfVxuICBsaXN0UmVtb3ZlVmFsdWUoXG4gICAgbGlzdE5hbWU6IHN0cmluZyxcbiAgICB2YWx1ZTogc3RyaW5nIHwgVWludDhBcnJheVxuICApOiBQcm9taXNlPENhY2hlTGlzdFJlbW92ZVZhbHVlLlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVDbGllbnQubGlzdFJlbW92ZVZhbHVlKHRoaXMuY2FjaGVOYW1lLCBsaXN0TmFtZSwgdmFsdWUpO1xuICB9XG4gIGxpc3RSZXRhaW4oXG4gICAgbGlzdE5hbWU6IHN0cmluZyxcbiAgICBvcHRpb25zPzogTGlzdFJldGFpbkNhbGxPcHRpb25zXG4gICk6IFByb21pc2U8Q2FjaGVMaXN0UmV0YWluLlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVDbGllbnQubGlzdFJldGFpbih0aGlzLmNhY2hlTmFtZSwgbGlzdE5hbWUsIG9wdGlvbnMpO1xuICB9XG4gIGRpY3Rpb25hcnlTZXRGaWVsZChcbiAgICBkaWN0aW9uYXJ5TmFtZTogc3RyaW5nLFxuICAgIGZpZWxkOiBzdHJpbmcgfCBVaW50OEFycmF5LFxuICAgIHZhbHVlOiBzdHJpbmcgfCBVaW50OEFycmF5LFxuICAgIG9wdGlvbnM/OiBEaWN0aW9uYXJ5U2V0RmllbGRPcHRpb25zXG4gICk6IFByb21pc2U8Q2FjaGVEaWN0aW9uYXJ5U2V0RmllbGQuUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZUNsaWVudC5kaWN0aW9uYXJ5U2V0RmllbGQoXG4gICAgICB0aGlzLmNhY2hlTmFtZSxcbiAgICAgIGRpY3Rpb25hcnlOYW1lLFxuICAgICAgZmllbGQsXG4gICAgICB2YWx1ZSxcbiAgICAgIG9wdGlvbnNcbiAgICApO1xuICB9XG4gIGRpY3Rpb25hcnlTZXRGaWVsZHMoXG4gICAgZGljdGlvbmFyeU5hbWU6IHN0cmluZyxcbiAgICBlbGVtZW50czpcbiAgICAgIHwgTWFwPHN0cmluZyB8IFVpbnQ4QXJyYXksIHN0cmluZyB8IFVpbnQ4QXJyYXk+XG4gICAgICB8IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IFVpbnQ4QXJyYXk+LFxuICAgIG9wdGlvbnM/OiBEaWN0aW9uYXJ5U2V0RmllbGRzT3B0aW9uc1xuICApOiBQcm9taXNlPENhY2hlRGljdGlvbmFyeVNldEZpZWxkcy5SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlQ2xpZW50LmRpY3Rpb25hcnlTZXRGaWVsZHMoXG4gICAgICB0aGlzLmNhY2hlTmFtZSxcbiAgICAgIGRpY3Rpb25hcnlOYW1lLFxuICAgICAgZWxlbWVudHMsXG4gICAgICBvcHRpb25zXG4gICAgKTtcbiAgfVxuICBkaWN0aW9uYXJ5R2V0RmllbGQoXG4gICAgZGljdGlvbmFyeU5hbWU6IHN0cmluZyxcbiAgICBmaWVsZDogc3RyaW5nIHwgVWludDhBcnJheVxuICApOiBQcm9taXNlPENhY2hlRGljdGlvbmFyeUdldEZpZWxkLlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVDbGllbnQuZGljdGlvbmFyeUdldEZpZWxkKFxuICAgICAgdGhpcy5jYWNoZU5hbWUsXG4gICAgICBkaWN0aW9uYXJ5TmFtZSxcbiAgICAgIGZpZWxkXG4gICAgKTtcbiAgfVxuICBkaWN0aW9uYXJ5R2V0RmllbGRzKFxuICAgIGRpY3Rpb25hcnlOYW1lOiBzdHJpbmcsXG4gICAgZmllbGRzOiBzdHJpbmdbXSB8IFVpbnQ4QXJyYXlbXVxuICApOiBQcm9taXNlPENhY2hlRGljdGlvbmFyeUdldEZpZWxkcy5SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlQ2xpZW50LmRpY3Rpb25hcnlHZXRGaWVsZHMoXG4gICAgICB0aGlzLmNhY2hlTmFtZSxcbiAgICAgIGRpY3Rpb25hcnlOYW1lLFxuICAgICAgZmllbGRzXG4gICAgKTtcbiAgfVxuICBkaWN0aW9uYXJ5RmV0Y2goXG4gICAgZGljdGlvbmFyeU5hbWU6IHN0cmluZ1xuICApOiBQcm9taXNlPENhY2hlRGljdGlvbmFyeUZldGNoLlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVDbGllbnQuZGljdGlvbmFyeUZldGNoKHRoaXMuY2FjaGVOYW1lLCBkaWN0aW9uYXJ5TmFtZSk7XG4gIH1cbiAgZGljdGlvbmFyeUluY3JlbWVudChcbiAgICBkaWN0aW9uYXJ5TmFtZTogc3RyaW5nLFxuICAgIGZpZWxkOiBzdHJpbmcgfCBVaW50OEFycmF5LFxuICAgIGFtb3VudD86IG51bWJlcixcbiAgICBvcHRpb25zPzogRGljdGlvbmFyeUluY3JlbWVudE9wdGlvbnNcbiAgKTogUHJvbWlzZTxDYWNoZURpY3Rpb25hcnlJbmNyZW1lbnQuUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZUNsaWVudC5kaWN0aW9uYXJ5SW5jcmVtZW50KFxuICAgICAgdGhpcy5jYWNoZU5hbWUsXG4gICAgICBkaWN0aW9uYXJ5TmFtZSxcbiAgICAgIGZpZWxkLFxuICAgICAgYW1vdW50LFxuICAgICAgb3B0aW9uc1xuICAgICk7XG4gIH1cbiAgZGljdGlvbmFyeVJlbW92ZUZpZWxkKFxuICAgIGRpY3Rpb25hcnlOYW1lOiBzdHJpbmcsXG4gICAgZmllbGQ6IHN0cmluZyB8IFVpbnQ4QXJyYXlcbiAgKTogUHJvbWlzZTxDYWNoZURpY3Rpb25hcnlSZW1vdmVGaWVsZC5SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlQ2xpZW50LmRpY3Rpb25hcnlSZW1vdmVGaWVsZChcbiAgICAgIHRoaXMuY2FjaGVOYW1lLFxuICAgICAgZGljdGlvbmFyeU5hbWUsXG4gICAgICBmaWVsZFxuICAgICk7XG4gIH1cbiAgZGljdGlvbmFyeVJlbW92ZUZpZWxkcyhcbiAgICBkaWN0aW9uYXJ5TmFtZTogc3RyaW5nLFxuICAgIGZpZWxkczogc3RyaW5nW10gfCBVaW50OEFycmF5W11cbiAgKTogUHJvbWlzZTxDYWNoZURpY3Rpb25hcnlSZW1vdmVGaWVsZHMuUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZUNsaWVudC5kaWN0aW9uYXJ5UmVtb3ZlRmllbGRzKFxuICAgICAgdGhpcy5jYWNoZU5hbWUsXG4gICAgICBkaWN0aW9uYXJ5TmFtZSxcbiAgICAgIGZpZWxkc1xuICAgICk7XG4gIH1cblxuICBkaWN0aW9uYXJ5TGVuZ3RoKFxuICAgIGRpY3Rpb25hcnlOYW1lOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxDYWNoZURpY3Rpb25hcnlMZW5ndGguUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZUNsaWVudC5kaWN0aW9uYXJ5TGVuZ3RoKHRoaXMuY2FjaGVOYW1lLCBkaWN0aW9uYXJ5TmFtZSk7XG4gIH1cblxuICBzb3J0ZWRTZXRGZXRjaEJ5UmFuayhcbiAgICBzb3J0ZWRTZXROYW1lOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IFNvcnRlZFNldEZldGNoQnlSYW5rT3B0aW9uc1xuICApOiBQcm9taXNlPENhY2hlU29ydGVkU2V0RmV0Y2guUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZUNsaWVudC5zb3J0ZWRTZXRGZXRjaEJ5UmFuayhcbiAgICAgIHRoaXMuY2FjaGVOYW1lLFxuICAgICAgc29ydGVkU2V0TmFtZSxcbiAgICAgIG9wdGlvbnNcbiAgICApO1xuICB9XG4gIHNvcnRlZFNldEZldGNoQnlTY29yZShcbiAgICBzb3J0ZWRTZXROYW1lOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IFNvcnRlZFNldEZldGNoQnlTY29yZU9wdGlvbnNcbiAgKTogUHJvbWlzZTxDYWNoZVNvcnRlZFNldEZldGNoLlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVDbGllbnQuc29ydGVkU2V0RmV0Y2hCeVNjb3JlKFxuICAgICAgdGhpcy5jYWNoZU5hbWUsXG4gICAgICBzb3J0ZWRTZXROYW1lLFxuICAgICAgb3B0aW9uc1xuICAgICk7XG4gIH1cbiAgc29ydGVkU2V0UHV0RWxlbWVudChcbiAgICBzb3J0ZWRTZXROYW1lOiBzdHJpbmcsXG4gICAgdmFsdWU6IHN0cmluZyB8IFVpbnQ4QXJyYXksXG4gICAgc2NvcmU6IG51bWJlcixcbiAgICBvcHRpb25zPzogU29ydGVkU2V0UHV0RWxlbWVudE9wdGlvbnNcbiAgKTogUHJvbWlzZTxDYWNoZVNvcnRlZFNldFB1dEVsZW1lbnQuUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZUNsaWVudC5zb3J0ZWRTZXRQdXRFbGVtZW50KFxuICAgICAgdGhpcy5jYWNoZU5hbWUsXG4gICAgICBzb3J0ZWRTZXROYW1lLFxuICAgICAgdmFsdWUsXG4gICAgICBzY29yZSxcbiAgICAgIG9wdGlvbnNcbiAgICApO1xuICB9XG4gIHNvcnRlZFNldFB1dEVsZW1lbnRzKFxuICAgIHNvcnRlZFNldE5hbWU6IHN0cmluZyxcbiAgICBlbGVtZW50czogTWFwPHN0cmluZyB8IFVpbnQ4QXJyYXksIG51bWJlcj4gfCBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+LFxuICAgIG9wdGlvbnM/OiBTb3J0ZWRTZXRQdXRFbGVtZW50c09wdGlvbnNcbiAgKTogUHJvbWlzZTxDYWNoZVNvcnRlZFNldFB1dEVsZW1lbnRzLlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVDbGllbnQuc29ydGVkU2V0UHV0RWxlbWVudHMoXG4gICAgICB0aGlzLmNhY2hlTmFtZSxcbiAgICAgIHNvcnRlZFNldE5hbWUsXG4gICAgICBlbGVtZW50cyxcbiAgICAgIG9wdGlvbnNcbiAgICApO1xuICB9XG4gIHNvcnRlZFNldEdldFJhbmsoXG4gICAgc29ydGVkU2V0TmFtZTogc3RyaW5nLFxuICAgIHZhbHVlOiBzdHJpbmcgfCBVaW50OEFycmF5XG4gICk6IFByb21pc2U8Q2FjaGVTb3J0ZWRTZXRHZXRSYW5rLlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVDbGllbnQuc29ydGVkU2V0R2V0UmFuayhcbiAgICAgIHRoaXMuY2FjaGVOYW1lLFxuICAgICAgc29ydGVkU2V0TmFtZSxcbiAgICAgIHZhbHVlXG4gICAgKTtcbiAgfVxuICBzb3J0ZWRTZXRHZXRTY29yZShcbiAgICBzb3J0ZWRTZXROYW1lOiBzdHJpbmcsXG4gICAgdmFsdWU6IHN0cmluZyB8IFVpbnQ4QXJyYXlcbiAgKTogUHJvbWlzZTxDYWNoZVNvcnRlZFNldEdldFNjb3JlLlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVDbGllbnQuc29ydGVkU2V0R2V0U2NvcmUoXG4gICAgICB0aGlzLmNhY2hlTmFtZSxcbiAgICAgIHNvcnRlZFNldE5hbWUsXG4gICAgICB2YWx1ZVxuICAgICk7XG4gIH1cbiAgc29ydGVkU2V0R2V0U2NvcmVzKFxuICAgIHNvcnRlZFNldE5hbWU6IHN0cmluZyxcbiAgICB2YWx1ZXM6IHN0cmluZ1tdIHwgVWludDhBcnJheVtdXG4gICk6IFByb21pc2U8Q2FjaGVTb3J0ZWRTZXRHZXRTY29yZXMuUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZUNsaWVudC5zb3J0ZWRTZXRHZXRTY29yZXMoXG4gICAgICB0aGlzLmNhY2hlTmFtZSxcbiAgICAgIHNvcnRlZFNldE5hbWUsXG4gICAgICB2YWx1ZXNcbiAgICApO1xuICB9XG4gIHNvcnRlZFNldEluY3JlbWVudFNjb3JlKFxuICAgIHNvcnRlZFNldE5hbWU6IHN0cmluZyxcbiAgICB2YWx1ZTogc3RyaW5nIHwgVWludDhBcnJheSxcbiAgICBhbW91bnQ/OiBudW1iZXIsXG4gICAgb3B0aW9ucz86IFNvcnRlZFNldEluY3JlbWVudE9wdGlvbnNcbiAgKTogUHJvbWlzZTxDYWNoZVNvcnRlZFNldEluY3JlbWVudFNjb3JlLlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVDbGllbnQuc29ydGVkU2V0SW5jcmVtZW50U2NvcmUoXG4gICAgICB0aGlzLmNhY2hlTmFtZSxcbiAgICAgIHNvcnRlZFNldE5hbWUsXG4gICAgICB2YWx1ZSxcbiAgICAgIGFtb3VudCxcbiAgICAgIG9wdGlvbnNcbiAgICApO1xuICB9XG4gIHNvcnRlZFNldFJlbW92ZUVsZW1lbnQoXG4gICAgc29ydGVkU2V0TmFtZTogc3RyaW5nLFxuICAgIHZhbHVlOiBzdHJpbmcgfCBVaW50OEFycmF5XG4gICk6IFByb21pc2U8Q2FjaGVTb3J0ZWRTZXRSZW1vdmVFbGVtZW50LlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVDbGllbnQuc29ydGVkU2V0UmVtb3ZlRWxlbWVudChcbiAgICAgIHRoaXMuY2FjaGVOYW1lLFxuICAgICAgc29ydGVkU2V0TmFtZSxcbiAgICAgIHZhbHVlXG4gICAgKTtcbiAgfVxuICBzb3J0ZWRTZXRSZW1vdmVFbGVtZW50cyhcbiAgICBzb3J0ZWRTZXROYW1lOiBzdHJpbmcsXG4gICAgdmFsdWVzOiBzdHJpbmdbXSB8IFVpbnQ4QXJyYXlbXVxuICApOiBQcm9taXNlPENhY2hlU29ydGVkU2V0UmVtb3ZlRWxlbWVudHMuUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZUNsaWVudC5zb3J0ZWRTZXRSZW1vdmVFbGVtZW50cyhcbiAgICAgIHRoaXMuY2FjaGVOYW1lLFxuICAgICAgc29ydGVkU2V0TmFtZSxcbiAgICAgIHZhbHVlc1xuICAgICk7XG4gIH1cbiAgc29ydGVkU2V0TGVuZ3RoKFxuICAgIHNvcnRlZFNldE5hbWU6IHN0cmluZ1xuICApOiBQcm9taXNlPENhY2hlU29ydGVkU2V0TGVuZ3RoLlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVDbGllbnQuc29ydGVkU2V0TGVuZ3RoKHRoaXMuY2FjaGVOYW1lLCBzb3J0ZWRTZXROYW1lKTtcbiAgfVxuICBzb3J0ZWRTZXRMZW5ndGhCeVNjb3JlKFxuICAgIHNvcnRlZFNldE5hbWU6IHN0cmluZyxcbiAgICBvcHRpb25zPzogU29ydGVkU2V0TGVuZ3RoQnlTY29yZU9wdGlvbnNcbiAgKTogUHJvbWlzZTxDYWNoZVNvcnRlZFNldExlbmd0aEJ5U2NvcmUuUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZUNsaWVudC5zb3J0ZWRTZXRMZW5ndGhCeVNjb3JlKFxuICAgICAgdGhpcy5jYWNoZU5hbWUsXG4gICAgICBzb3J0ZWRTZXROYW1lLFxuICAgICAgb3B0aW9uc1xuICAgICk7XG4gIH1cbiAgaXRlbUdldFR5cGUoa2V5OiBzdHJpbmcgfCBVaW50OEFycmF5KTogUHJvbWlzZTxDYWNoZUl0ZW1HZXRUeXBlLlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVDbGllbnQuaXRlbUdldFR5cGUodGhpcy5jYWNoZU5hbWUsIGtleSk7XG4gIH1cbiAgaXRlbUdldFR0bChrZXk6IHN0cmluZyB8IFVpbnQ4QXJyYXkpOiBQcm9taXNlPENhY2hlSXRlbUdldFR0bC5SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlQ2xpZW50Lml0ZW1HZXRUdGwodGhpcy5jYWNoZU5hbWUsIGtleSk7XG4gIH1cbiAga2V5RXhpc3RzKGtleTogc3RyaW5nIHwgVWludDhBcnJheSk6IFByb21pc2U8Q2FjaGVLZXlFeGlzdHMuUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZUNsaWVudC5rZXlFeGlzdHModGhpcy5jYWNoZU5hbWUsIGtleSk7XG4gIH1cbiAga2V5c0V4aXN0KGtleXM6IHN0cmluZ1tdIHwgVWludDhBcnJheVtdKTogUHJvbWlzZTxDYWNoZUtleXNFeGlzdC5SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlQ2xpZW50LmtleXNFeGlzdCh0aGlzLmNhY2hlTmFtZSwga2V5cyk7XG4gIH1cbiAgdXBkYXRlVHRsKFxuICAgIGtleTogc3RyaW5nIHwgVWludDhBcnJheSxcbiAgICB0dGxNaWxsaXNlY29uZHM6IG51bWJlclxuICApOiBQcm9taXNlPENhY2hlVXBkYXRlVHRsLlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVDbGllbnQudXBkYXRlVHRsKHRoaXMuY2FjaGVOYW1lLCBrZXksIHR0bE1pbGxpc2Vjb25kcyk7XG4gIH1cbiAgaW5jcmVhc2VUdGwoXG4gICAga2V5OiBzdHJpbmcgfCBVaW50OEFycmF5LFxuICAgIHR0bE1pbGxpc2Vjb25kczogbnVtYmVyXG4gICk6IFByb21pc2U8Q2FjaGVJbmNyZWFzZVR0bC5SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlQ2xpZW50LmluY3JlYXNlVHRsKHRoaXMuY2FjaGVOYW1lLCBrZXksIHR0bE1pbGxpc2Vjb25kcyk7XG4gIH1cbiAgZGVjcmVhc2VUdGwoXG4gICAga2V5OiBzdHJpbmcgfCBVaW50OEFycmF5LFxuICAgIHR0bE1pbGxpc2Vjb25kczogbnVtYmVyXG4gICk6IFByb21pc2U8Q2FjaGVEZWNyZWFzZVR0bC5SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlQ2xpZW50LmRlY3JlYXNlVHRsKHRoaXMuY2FjaGVOYW1lLCBrZXksIHR0bE1pbGxpc2Vjb25kcyk7XG4gIH1cbn1cbiJdfQ==
@@ -1,4 +1,4 @@
1
- import { CreateVectorIndex, DeleteVectorIndex, ListVectorIndexes, VectorCountItems, VectorDeleteItemBatch, VectorGetItemBatch, VectorGetItemMetadataBatch, VectorSearch, VectorSearchAndFetchVectors, VectorUpsertItemBatch } from '../../..';
1
+ import { CreateVectorIndex, DeleteVectorIndex, ListVectorIndexes, VectorCountItems, VectorDeleteItemBatch, VectorFilterExpression, VectorGetItemBatch, VectorGetItemMetadataBatch, VectorSearch, VectorSearchAndFetchVectors, VectorUpsertItemBatch } from '../../..';
2
2
  import { IVectorIndexClient, SearchOptions } from '../../../clients/IVectorIndexClient';
3
3
  import { IVectorIndexControlClient, VectorSimilarityMetric } from './IVectorIndexControlClient';
4
4
  import { VectorIndexItem } from '../../../messages/vector-index';
@@ -112,12 +112,13 @@ export declare abstract class AbstractVectorIndexClient implements IVectorIndexC
112
112
  * Deletes any and all items with the given IDs from the index.
113
113
  *
114
114
  * @param {string} indexName - Name of the index to delete the items from.
115
- * @param {Array<string>} filter - The IDs of the items to be deleted from the index.
115
+ * @param {VectorFilterExpression | Array<string>} filter - A filter expression to match the items to be deleted
116
+ * or an array of item IDs to be deleted.
116
117
  * @returns {Promise<VectorDeleteItemBatch.Response>}
117
118
  * {@link VectorDeleteItemBatch.Success} on success.
118
119
  * {@link VectorDeleteItemBatch.Error} on error.
119
120
  */
120
- deleteItemBatch(indexName: string, filter: Array<string>): Promise<VectorDeleteItemBatch.Response>;
121
+ deleteItemBatch(indexName: string, filter: VectorFilterExpression | Array<string>): Promise<VectorDeleteItemBatch.Response>;
121
122
  /**
122
123
  * Gets a batch of items from a vector index by ID.
123
124
  *
@@ -125,7 +125,8 @@ class AbstractVectorIndexClient {
125
125
  * Deletes any and all items with the given IDs from the index.
126
126
  *
127
127
  * @param {string} indexName - Name of the index to delete the items from.
128
- * @param {Array<string>} filter - The IDs of the items to be deleted from the index.
128
+ * @param {VectorFilterExpression | Array<string>} filter - A filter expression to match the items to be deleted
129
+ * or an array of item IDs to be deleted.
129
130
  * @returns {Promise<VectorDeleteItemBatch.Response>}
130
131
  * {@link VectorDeleteItemBatch.Success} on success.
131
132
  * {@link VectorDeleteItemBatch.Error} on error.
@@ -159,4 +160,4 @@ class AbstractVectorIndexClient {
159
160
  }
160
161
  }
161
162
  exports.AbstractVectorIndexClient = AbstractVectorIndexClient;
162
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RWZWN0b3JJbmRleENsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9pbnRlcm5hbC9jbGllbnRzL3ZlY3Rvci9BYnN0cmFjdFZlY3RvckluZGV4Q2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXVCQSxNQUFzQix5QkFBeUI7SUFNN0MsWUFDRSxhQUF3QyxFQUN4QyxVQUFrQztRQUVsQyxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BdUJHO0lBQ0ksS0FBSyxDQUFDLFdBQVcsQ0FDdEIsU0FBaUIsRUFDakIsYUFBcUIsRUFDckIsZ0JBQXlDO1FBRXpDLE9BQU8sTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FDekMsU0FBUyxFQUNULGFBQWEsRUFDYixnQkFBZ0IsQ0FDakIsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxLQUFLLENBQUMsV0FBVztRQUN0QixPQUFPLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLEtBQUssQ0FBQyxXQUFXLENBQ3RCLFNBQWlCO1FBRWpCLE9BQU8sTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNJLEtBQUssQ0FBQyxVQUFVLENBQ3JCLFNBQWlCO1FBRWpCLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSSxLQUFLLENBQUMsZUFBZSxDQUMxQixTQUFpQixFQUNqQixLQUE2QjtRQUU3QixPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7T0FjRztJQUNJLEtBQUssQ0FBQyxNQUFNLENBQ2pCLFNBQWlCLEVBQ2pCLFdBQTBCLEVBQzFCLE9BQXVCO1FBRXZCLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7O09BZUc7SUFDSSxLQUFLLENBQUMscUJBQXFCLENBQ2hDLFNBQWlCLEVBQ2pCLFdBQXFCLEVBQ3JCLE9BQW1DO1FBRW5DLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUNoRCxTQUFTLEVBQ1QsV0FBVyxFQUNYLE9BQU8sQ0FDUixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNJLEtBQUssQ0FBQyxlQUFlLENBQzFCLFNBQWlCLEVBQ2pCLE1BQXFCO1FBRXJCLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksS0FBSyxDQUFDLFlBQVksQ0FDdkIsU0FBaUIsRUFDakIsTUFBZ0I7UUFFaEIsT0FBTyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxLQUFLLENBQUMsb0JBQW9CLENBQy9CLFNBQWlCLEVBQ2pCLE1BQWdCO1FBRWhCLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN2RSxDQUFDO0NBQ0Y7QUFsTkQsOERBa05DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ3JlYXRlVmVjdG9ySW5kZXgsXG4gIERlbGV0ZVZlY3RvckluZGV4LFxuICBMaXN0VmVjdG9ySW5kZXhlcyxcbiAgVmVjdG9yQ291bnRJdGVtcyxcbiAgVmVjdG9yRGVsZXRlSXRlbUJhdGNoLFxuICBWZWN0b3JHZXRJdGVtQmF0Y2gsXG4gIFZlY3RvckdldEl0ZW1NZXRhZGF0YUJhdGNoLFxuICBWZWN0b3JTZWFyY2gsXG4gIFZlY3RvclNlYXJjaEFuZEZldGNoVmVjdG9ycyxcbiAgVmVjdG9yVXBzZXJ0SXRlbUJhdGNoLFxufSBmcm9tICcuLi8uLi8uLic7XG5pbXBvcnQge1xuICBJVmVjdG9ySW5kZXhDbGllbnQsXG4gIFNlYXJjaE9wdGlvbnMsXG59IGZyb20gJy4uLy4uLy4uL2NsaWVudHMvSVZlY3RvckluZGV4Q2xpZW50JztcbmltcG9ydCB7XG4gIElWZWN0b3JJbmRleENvbnRyb2xDbGllbnQsXG4gIFZlY3RvclNpbWlsYXJpdHlNZXRyaWMsXG59IGZyb20gJy4vSVZlY3RvckluZGV4Q29udHJvbENsaWVudCc7XG5pbXBvcnQge1ZlY3RvckluZGV4SXRlbX0gZnJvbSAnLi4vLi4vLi4vbWVzc2FnZXMvdmVjdG9yLWluZGV4JztcbmltcG9ydCB7SVZlY3RvckluZGV4RGF0YUNsaWVudH0gZnJvbSAnLi9JVmVjdG9ySW5kZXhEYXRhQ2xpZW50JztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0VmVjdG9ySW5kZXhDbGllbnRcbiAgaW1wbGVtZW50cyBJVmVjdG9ySW5kZXhDbGllbnQsIElWZWN0b3JJbmRleERhdGFDbGllbnRcbntcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbnRyb2xDbGllbnQ6IElWZWN0b3JJbmRleENvbnRyb2xDbGllbnQ7XG4gIHByb3RlY3RlZCByZWFkb25seSBkYXRhQ2xpZW50OiBJVmVjdG9ySW5kZXhEYXRhQ2xpZW50O1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICBjb250cm9sQ2xpZW50OiBJVmVjdG9ySW5kZXhDb250cm9sQ2xpZW50LFxuICAgIGRhdGFDbGllbnQ6IElWZWN0b3JJbmRleERhdGFDbGllbnRcbiAgKSB7XG4gICAgdGhpcy5jb250cm9sQ2xpZW50ID0gY29udHJvbENsaWVudDtcbiAgICB0aGlzLmRhdGFDbGllbnQgPSBkYXRhQ2xpZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB2ZWN0b3IgaW5kZXggaWYgaXQgZG9lcyBub3QgZXhpc3QuXG4gICAqXG4gICAqIFJlbWFyayBvbiB0aGUgY2hvaWNlIG9mIHNpbWlsYXJpdHkgbWV0cmljOlxuICAgKiAtIENvc2luZSBzaW1pbGFyaXR5IGlzIGFwcHJvcHJpYXRlIGZvciBtb3N0IGVtYmVkZGluZyBtb2RlbHMgYXMgdGhleSB0ZW5kIHRvIGJlIG9wdGltaXplZFxuICAgKiAgICAgZm9yIHRoaXMgbWV0cmljLlxuICAgKiAtIElmIHRoZSB2ZWN0b3JzIGFyZSB1bml0IG5vcm1hbGl6ZWQsIGNvc2luZSBzaW1pbGFyaXR5IGlzIGVxdWl2YWxlbnQgdG8gaW5uZXIgcHJvZHVjdC5cbiAgICogICAgIElmIHlvdXIgdmVjdG9ycyBhcmUgYWxyZWFkeSB1bml0IG5vcm1hbGl6ZWQsIHlvdSBjYW4gdXNlIGlubmVyIHByb2R1Y3QgdG8gaW1wcm92ZVxuICAgKiAgICAgcGVyZm9ybWFuY2UuXG4gICAqIC0gRXVjbGlkZWFuIHNpbWlsYXJpdHksIHRoZSBzdW0gb2Ygc3F1YXJlZCBkaWZmZXJlbmNlcywgaXMgYXBwcm9wcmlhdGUgZm9yIGRhdGFzZXRzIHdoZXJlXG4gICAqICAgICB0aGlzIG1ldHJpYyBpcyBtZWFuaW5nZnVsLiBGb3IgZXhhbXBsZSwgaWYgdGhlIHZlY3RvcnMgcmVwcmVzZW50IGltYWdlcywgYW5kIHRoZVxuICAgKiAgICAgZW1iZWRkaW5nIG1vZGVsIGlzIHRyYWluZWQgdG8gb3B0aW1pemUgdGhlIGV1Y2xpZGVhbiBkaXN0YW5jZSBiZXR3ZWVuIGltYWdlcywgdGhlblxuICAgKiAgICAgZXVjbGlkZWFuIHNpbWlsYXJpdHkgaXMgYXBwcm9wcmlhdGUuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpbmRleE5hbWUgLSBUaGUgdmVjdG9yIGluZGV4IHRvIGJlIGNyZWF0ZWQuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBudW1EaW1lbnNpb25zIC0gTnVtYmVyIG9mIGRpbWVuc2lvbnMgcGVyIHZlY3Rvci5cbiAgICogQHBhcmFtIHtWZWN0b3JTaW1pbGFyaXR5TWV0cmljfSBzaW1pbGFyaXR5TWV0cmljIC0gVGhlIG1ldHJpYyB1c2VkIHRvXG4gICAqIHF1YW50aWZ5IHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHZlY3RvcnMuIENhbiBiZSBjb3NpbmUgc2ltaWxhcml0eSxcbiAgICogaW5uZXIgcHJvZHVjdCwgb3IgZXVjbGlkZWFuIHNpbWlsYXJpdHkuIERlZmF1bHRzIHRvIGNvc2luZSBzaW1pbGFyaXR5LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxDcmVhdGVWZWN0b3JJbmRleC5SZXNwb25zZT59IC1cbiAgICoge0BsaW5rIENyZWF0ZVZlY3RvckluZGV4LlN1Y2Nlc3N9IG9uIHN1Y2Nlc3MuXG4gICAqIHtAbGluayBDcmVhdGVWZWN0b3JJbmRleC5BbHJlYWR5RXhpc3RzfSBpZiB0aGUgY2FjaGUgYWxyZWFkeSBleGlzdHMuXG4gICAqIHtAbGluayBDcmVhdGVWZWN0b3JJbmRleC5FcnJvcn0gb24gZmFpbHVyZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBjcmVhdGVJbmRleChcbiAgICBpbmRleE5hbWU6IHN0cmluZyxcbiAgICBudW1EaW1lbnNpb25zOiBudW1iZXIsXG4gICAgc2ltaWxhcml0eU1ldHJpYz86IFZlY3RvclNpbWlsYXJpdHlNZXRyaWNcbiAgKTogUHJvbWlzZTxDcmVhdGVWZWN0b3JJbmRleC5SZXNwb25zZT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmNvbnRyb2xDbGllbnQuY3JlYXRlSW5kZXgoXG4gICAgICBpbmRleE5hbWUsXG4gICAgICBudW1EaW1lbnNpb25zLFxuICAgICAgc2ltaWxhcml0eU1ldHJpY1xuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdHMgYWxsIHZlY3RvciBpbmRleGVzLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxMaXN0VmVjdG9ySW5kZXhlcy5SZXNwb25zZT59IC1cbiAgICoge0BsaW5rIExpc3RWZWN0b3JJbmRleGVzLlN1Y2Nlc3N9IGNvbnRhaW5pbmcgdGhlIGxpc3Qgb24gc3VjY2Vzcy5cbiAgICoge0BsaW5rIExpc3RWZWN0b3JJbmRleGVzLkVycm9yfSBvbiBlcnJvci5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBsaXN0SW5kZXhlcygpOiBQcm9taXNlPExpc3RWZWN0b3JJbmRleGVzLlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuY29udHJvbENsaWVudC5saXN0SW5kZXhlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYSB2ZWN0b3IgaW5kZXggYW5kIGFsbCB0aGUgaXRlbXMgc3RvcmVkIGluIGl0LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaW5kZXhOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHZlY3RvciBpbmRleCB0byBkZWxldGUuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPERlbGV0ZVZlY3RvckluZGV4LlJlc3BvbnNlPn0gLVxuICAgKiB7QGxpbmsgRGVsZXRlVmVjdG9ySW5kZXguU3VjY2Vzc30gb24gc3VjY2Vzcy5cbiAgICoge0BsaW5rIERlbGV0ZVZlY3RvckluZGV4LkVycm9yfSBvbiBlcnJvci5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBkZWxldGVJbmRleChcbiAgICBpbmRleE5hbWU6IHN0cmluZ1xuICApOiBQcm9taXNlPERlbGV0ZVZlY3RvckluZGV4LlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuY29udHJvbENsaWVudC5kZWxldGVJbmRleChpbmRleE5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvdW50cyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIGEgdmVjdG9yIGluZGV4LlxuICAgKlxuICAgKiBOb3RlIHRoYXQgaWYgdGhlIGluZGV4IGRvZXMgbm90IGV4aXN0LCBhbiBlcnJvciB3aXRoXG4gICAqIHtAbGluayBNb21lbnRvRXJyb3JDb2RlfSBgTk9UX0ZPVU5EYCBlcnJvciB3aWxsIGJlIHJldHVybmVkLlxuICAgKlxuICAgKiBAcGFyYW0gaW5kZXhOYW1lIC0gTmFtZSBvZiB0aGUgaW5kZXggdG8gY291bnQgdGhlIGl0ZW1zIGluLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxWZWN0b3JDb3VudEl0ZW1zLlJlc3BvbnNlPn0gLVxuICAgKiB7QGxpbmsgVmVjdG9yQ291bnRJdGVtcy5TdWNjZXNzfSBvbiBzdWNjZXNzLlxuICAgKiB7QGxpbmsgVmVjdG9yQ291bnRJdGVtcy5FcnJvcn0gb24gZXJyb3IuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY291bnRJdGVtcyhcbiAgICBpbmRleE5hbWU6IHN0cmluZ1xuICApOiBQcm9taXNlPFZlY3RvckNvdW50SXRlbXMuUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5kYXRhQ2xpZW50LmNvdW50SXRlbXMoaW5kZXhOYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcHNlcnRzIGEgYmF0Y2ggb2YgaXRlbXMgaW50byBhIHZlY3RvciBpbmRleC5cbiAgICpcbiAgICogSWYgYW4gaXRlbSB3aXRoIHRoZSBzYW1lIElEIGFscmVhZHkgZXhpc3RzIGluIHRoZSBpbmRleCwgaXQgd2lsbCBiZSByZXBsYWNlZC5cbiAgICogT3RoZXJ3aXNlLCBpdCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBpbmRleC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGluZGV4TmFtZSAtIE5hbWUgb2YgdGhlIGluZGV4IHRvIHVwc2VydCB0aGUgaXRlbXMgaW50by5cbiAgICogQHBhcmFtIHtBcnJheTxWZWN0b3JJbmRleEl0ZW0+fSBpdGVtcyAtIFRoZSBpdGVtcyB0byBiZSB1cHNlcnRlZCBpbnRvIHRoZSBpbmRleC5cbiAgICogQHJldHVybnMge1Byb21pc2U8VmVjdG9yVXBzZXJ0SXRlbUJhdGNoLlJlc3BvbnNlPn0gLVxuICAgKiB7QGxpbmsgVmVjdG9yVXBzZXJ0SXRlbUJhdGNoLlN1Y2Nlc3N9IG9uIHN1Y2Nlc3MuXG4gICAqIHtAbGluayBWZWN0b3JVcHNlcnRJdGVtQmF0Y2guRXJyb3J9IG9uIGVycm9yLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHVwc2VydEl0ZW1CYXRjaChcbiAgICBpbmRleE5hbWU6IHN0cmluZyxcbiAgICBpdGVtczogQXJyYXk8VmVjdG9ySW5kZXhJdGVtPlxuICApOiBQcm9taXNlPFZlY3RvclVwc2VydEl0ZW1CYXRjaC5SZXNwb25zZT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmRhdGFDbGllbnQudXBzZXJ0SXRlbUJhdGNoKGluZGV4TmFtZSwgaXRlbXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlYXJjaGVzIGZvciB0aGUgbW9zdCBzaW1pbGFyIHZlY3RvcnMgdG8gdGhlIHF1ZXJ5IHZlY3RvciBpbiB0aGUgaW5kZXguXG4gICAqXG4gICAqIFJhbmtzIHRoZSB2ZWN0b3JzIGFjY29yZGluZyB0byB0aGUgc2ltaWxhcml0eSBtZXRyaWMgc3BlY2lmaWVkIHdoZW4gdGhlXG4gICAqIGluZGV4IHdhcyBjcmVhdGVkLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaW5kZXhOYW1lIC0gTmFtZSBvZiB0aGUgaW5kZXggdG8gc2VhcmNoIGluLlxuICAgKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHF1ZXJ5VmVjdG9yIC0gVGhlIHZlY3RvciB0byBzZWFyY2ggZm9yLlxuICAgKiBAcGFyYW0ge1NlYXJjaE9wdGlvbnN9IG9wdGlvbnMgLSBPcHRpb25hbCBzZWFyY2ggYXJndW1lbnRzLCBpbmNsdWRpbmdcbiAgICogdGhlIG51bWJlciBvZiByZXN1bHRzIHRvIHJldHVybiwgbWV0YWRhdGEgZmllbGRzIHRvIHJldHVybiwgYW5kIGEgc2NvcmVcbiAgICogdGhyZXNob2xkIHRvIGZpbHRlciByZXN1bHRzIGJ5LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxWZWN0b3JTZWFyY2guUmVzcG9uc2U+fSAtXG4gICAqIHtAbGluayBWZWN0b3JTZWFyY2guU3VjY2Vzc30gb24gc3VjY2Vzcy5cbiAgICoge0BsaW5rIFZlY3RvclNlYXJjaC5FcnJvcn0gb24gZXJyb3IuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc2VhcmNoKFxuICAgIGluZGV4TmFtZTogc3RyaW5nLFxuICAgIHF1ZXJ5VmVjdG9yOiBBcnJheTxudW1iZXI+LFxuICAgIG9wdGlvbnM/OiBTZWFyY2hPcHRpb25zXG4gICk6IFByb21pc2U8VmVjdG9yU2VhcmNoLlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZGF0YUNsaWVudC5zZWFyY2goaW5kZXhOYW1lLCBxdWVyeVZlY3Rvciwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogU2VhcmNoZXMgZm9yIHRoZSBtb3N0IHNpbWlsYXIgdmVjdG9ycyB0byB0aGUgcXVlcnkgdmVjdG9yIGluIHRoZSBpbmRleC5cbiAgICpcbiAgICogUmFua3MgdGhlIHZlY3RvcnMgYWNjb3JkaW5nIHRvIHRoZSBzaW1pbGFyaXR5IG1ldHJpYyBzcGVjaWZpZWQgd2hlbiB0aGVcbiAgICogaW5kZXggd2FzIGNyZWF0ZWQuXG4gICAqIEFsc28gcmV0dXJucyB0aGUgdmVjdG9ycyBhc3NvY2lhdGVkIHdpdGggZWFjaCByZXN1bHQuXG4gICAqXG4gICAqIEBwYXJhbSBpbmRleE5hbWUgLSBOYW1lIG9mIHRoZSBpbmRleCB0byBzZWFyY2ggaW4uXG4gICAqIEBwYXJhbSBxdWVyeVZlY3RvciAtIFRoZSB2ZWN0b3IgdG8gc2VhcmNoIGZvci5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBzZWFyY2ggYXJndW1lbnRzLCBpbmNsdWRpbmdcbiAgICogdGhlIG51bWJlciBvZiByZXN1bHRzIHRvIHJldHVybiwgbWV0YWRhdGEgZmllbGRzIHRvIHJldHVybiwgYW5kIGEgc2NvcmVcbiAgICogdGhyZXNob2xkIHRvIGZpbHRlciByZXN1bHRzIGJ5LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxWZWN0b3JTZWFyY2hBbmRGZXRjaFZlY3RvcnMuUmVzcG9uc2U+fSAtXG4gICAqIHtAbGluayBWZWN0b3JTZWFyY2hBbmRGZXRjaFZlY3RvcnMuU3VjY2Vzc30gb24gc3VjY2Vzcy5cbiAgICoge0BsaW5rIFZlY3RvclNlYXJjaEFuZEZldGNoVmVjdG9ycy5FcnJvcn0gb24gZXJyb3IuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc2VhcmNoQW5kRmV0Y2hWZWN0b3JzKFxuICAgIGluZGV4TmFtZTogc3RyaW5nLFxuICAgIHF1ZXJ5VmVjdG9yOiBudW1iZXJbXSxcbiAgICBvcHRpb25zPzogU2VhcmNoT3B0aW9ucyB8IHVuZGVmaW5lZFxuICApOiBQcm9taXNlPFZlY3RvclNlYXJjaEFuZEZldGNoVmVjdG9ycy5SZXNwb25zZT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmRhdGFDbGllbnQuc2VhcmNoQW5kRmV0Y2hWZWN0b3JzKFxuICAgICAgaW5kZXhOYW1lLFxuICAgICAgcXVlcnlWZWN0b3IsXG4gICAgICBvcHRpb25zXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGVzIGEgYmF0Y2ggb2YgaXRlbXMgZnJvbSBhIHZlY3RvciBpbmRleC5cbiAgICogRGVsZXRlcyBhbnkgYW5kIGFsbCBpdGVtcyB3aXRoIHRoZSBnaXZlbiBJRHMgZnJvbSB0aGUgaW5kZXguXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpbmRleE5hbWUgLSBOYW1lIG9mIHRoZSBpbmRleCB0byBkZWxldGUgdGhlIGl0ZW1zIGZyb20uXG4gICAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gZmlsdGVyIC0gVGhlIElEcyBvZiB0aGUgaXRlbXMgdG8gYmUgZGVsZXRlZCBmcm9tIHRoZSBpbmRleC5cbiAgICogQHJldHVybnMge1Byb21pc2U8VmVjdG9yRGVsZXRlSXRlbUJhdGNoLlJlc3BvbnNlPn1cbiAgICoge0BsaW5rIFZlY3RvckRlbGV0ZUl0ZW1CYXRjaC5TdWNjZXNzfSBvbiBzdWNjZXNzLlxuICAgKiB7QGxpbmsgVmVjdG9yRGVsZXRlSXRlbUJhdGNoLkVycm9yfSBvbiBlcnJvci5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBkZWxldGVJdGVtQmF0Y2goXG4gICAgaW5kZXhOYW1lOiBzdHJpbmcsXG4gICAgZmlsdGVyOiBBcnJheTxzdHJpbmc+XG4gICk6IFByb21pc2U8VmVjdG9yRGVsZXRlSXRlbUJhdGNoLlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZGF0YUNsaWVudC5kZWxldGVJdGVtQmF0Y2goaW5kZXhOYW1lLCBmaWx0ZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYSBiYXRjaCBvZiBpdGVtcyBmcm9tIGEgdmVjdG9yIGluZGV4IGJ5IElELlxuICAgKlxuICAgKiBAcGFyYW0gaW5kZXhOYW1lIC0gTmFtZSBvZiB0aGUgaW5kZXggdG8gZ2V0IHRoZSBpdGVtcyBmcm9tLlxuICAgKiBAcGFyYW0gZmlsdGVyIC0gVGhlIElEcyBvZiB0aGUgaXRlbXMgdG8gYmUgcmV0cmlldmVkIGZyb20gdGhlIGluZGV4LlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxWZWN0b3JHZXRJdGVtQmF0Y2guUmVzcG9uc2U+fVxuICAgKiB7QGxpbmsgVmVjdG9yR2V0SXRlbUJhdGNoLlN1Y2Nlc3N9IG9uIHN1Y2Nlc3MsIHdpdGggdGhlIGZvdW5kIGl0ZW1zLlxuICAgKiB7QGxpbmsgVmVjdG9yR2V0SXRlbUJhdGNoLkVycm9yfSBvbiBlcnJvci5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRJdGVtQmF0Y2goXG4gICAgaW5kZXhOYW1lOiBzdHJpbmcsXG4gICAgZmlsdGVyOiBzdHJpbmdbXVxuICApOiBQcm9taXNlPFZlY3RvckdldEl0ZW1CYXRjaC5SZXNwb25zZT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmRhdGFDbGllbnQuZ2V0SXRlbUJhdGNoKGluZGV4TmFtZSwgZmlsdGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIG1ldGFkYXRhIGZvciBhIGJhdGNoIG9mIGl0ZW1zIGZyb20gYSB2ZWN0b3IgaW5kZXggYnkgSUQuXG4gICAqXG4gICAqIEBwYXJhbSBpbmRleE5hbWUgLSBOYW1lIG9mIHRoZSBpbmRleCB0byBnZXQgdGhlIGl0ZW1zIGZyb20uXG4gICAqIEBwYXJhbSBmaWx0ZXIgLSBUaGUgSURzIG9mIHRoZSBpdGVtcyB0byBiZSByZXRyaWV2ZWQgZnJvbSB0aGUgaW5kZXguXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPFZlY3RvckdldEl0ZW1NZXRhZGF0YUJhdGNoLlJlc3BvbnNlPn1cbiAgICoge0BsaW5rIFZlY3RvckdldEl0ZW1NZXRhZGF0YUJhdGNoLlN1Y2Nlc3N9IG9uIHN1Y2Nlc3MsIHdpdGggdGhlIGZvdW5kIGl0ZW0gbWV0YWRhdGEuXG4gICAqIHtAbGluayBWZWN0b3JHZXRJdGVtTWV0YWRhdGFCYXRjaC5FcnJvcn0gb24gZXJyb3IuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0SXRlbU1ldGFkYXRhQmF0Y2goXG4gICAgaW5kZXhOYW1lOiBzdHJpbmcsXG4gICAgZmlsdGVyOiBzdHJpbmdbXVxuICApOiBQcm9taXNlPFZlY3RvckdldEl0ZW1NZXRhZGF0YUJhdGNoLlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZGF0YUNsaWVudC5nZXRJdGVtTWV0YWRhdGFCYXRjaChpbmRleE5hbWUsIGZpbHRlcik7XG4gIH1cbn1cbiJdfQ==
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RWZWN0b3JJbmRleENsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9pbnRlcm5hbC9jbGllbnRzL3ZlY3Rvci9BYnN0cmFjdFZlY3RvckluZGV4Q2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXdCQSxNQUFzQix5QkFBeUI7SUFNN0MsWUFDRSxhQUF3QyxFQUN4QyxVQUFrQztRQUVsQyxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BdUJHO0lBQ0ksS0FBSyxDQUFDLFdBQVcsQ0FDdEIsU0FBaUIsRUFDakIsYUFBcUIsRUFDckIsZ0JBQXlDO1FBRXpDLE9BQU8sTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FDekMsU0FBUyxFQUNULGFBQWEsRUFDYixnQkFBZ0IsQ0FDakIsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxLQUFLLENBQUMsV0FBVztRQUN0QixPQUFPLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLEtBQUssQ0FBQyxXQUFXLENBQ3RCLFNBQWlCO1FBRWpCLE9BQU8sTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNJLEtBQUssQ0FBQyxVQUFVLENBQ3JCLFNBQWlCO1FBRWpCLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSSxLQUFLLENBQUMsZUFBZSxDQUMxQixTQUFpQixFQUNqQixLQUE2QjtRQUU3QixPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7T0FjRztJQUNJLEtBQUssQ0FBQyxNQUFNLENBQ2pCLFNBQWlCLEVBQ2pCLFdBQTBCLEVBQzFCLE9BQXVCO1FBRXZCLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7O09BZUc7SUFDSSxLQUFLLENBQUMscUJBQXFCLENBQ2hDLFNBQWlCLEVBQ2pCLFdBQXFCLEVBQ3JCLE9BQW1DO1FBRW5DLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUNoRCxTQUFTLEVBQ1QsV0FBVyxFQUNYLE9BQU8sQ0FDUixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSSxLQUFLLENBQUMsZUFBZSxDQUMxQixTQUFpQixFQUNqQixNQUE4QztRQUU5QyxPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNJLEtBQUssQ0FBQyxZQUFZLENBQ3ZCLFNBQWlCLEVBQ2pCLE1BQWdCO1FBRWhCLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksS0FBSyxDQUFDLG9CQUFvQixDQUMvQixTQUFpQixFQUNqQixNQUFnQjtRQUVoQixPQUFPLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdkUsQ0FBQztDQUNGO0FBbk5ELDhEQW1OQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENyZWF0ZVZlY3RvckluZGV4LFxuICBEZWxldGVWZWN0b3JJbmRleCxcbiAgTGlzdFZlY3RvckluZGV4ZXMsXG4gIFZlY3RvckNvdW50SXRlbXMsXG4gIFZlY3RvckRlbGV0ZUl0ZW1CYXRjaCxcbiAgVmVjdG9yRmlsdGVyRXhwcmVzc2lvbixcbiAgVmVjdG9yR2V0SXRlbUJhdGNoLFxuICBWZWN0b3JHZXRJdGVtTWV0YWRhdGFCYXRjaCxcbiAgVmVjdG9yU2VhcmNoLFxuICBWZWN0b3JTZWFyY2hBbmRGZXRjaFZlY3RvcnMsXG4gIFZlY3RvclVwc2VydEl0ZW1CYXRjaCxcbn0gZnJvbSAnLi4vLi4vLi4nO1xuaW1wb3J0IHtcbiAgSVZlY3RvckluZGV4Q2xpZW50LFxuICBTZWFyY2hPcHRpb25zLFxufSBmcm9tICcuLi8uLi8uLi9jbGllbnRzL0lWZWN0b3JJbmRleENsaWVudCc7XG5pbXBvcnQge1xuICBJVmVjdG9ySW5kZXhDb250cm9sQ2xpZW50LFxuICBWZWN0b3JTaW1pbGFyaXR5TWV0cmljLFxufSBmcm9tICcuL0lWZWN0b3JJbmRleENvbnRyb2xDbGllbnQnO1xuaW1wb3J0IHtWZWN0b3JJbmRleEl0ZW19IGZyb20gJy4uLy4uLy4uL21lc3NhZ2VzL3ZlY3Rvci1pbmRleCc7XG5pbXBvcnQge0lWZWN0b3JJbmRleERhdGFDbGllbnR9IGZyb20gJy4vSVZlY3RvckluZGV4RGF0YUNsaWVudCc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFZlY3RvckluZGV4Q2xpZW50XG4gIGltcGxlbWVudHMgSVZlY3RvckluZGV4Q2xpZW50LCBJVmVjdG9ySW5kZXhEYXRhQ2xpZW50XG57XG4gIHByb3RlY3RlZCByZWFkb25seSBjb250cm9sQ2xpZW50OiBJVmVjdG9ySW5kZXhDb250cm9sQ2xpZW50O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGF0YUNsaWVudDogSVZlY3RvckluZGV4RGF0YUNsaWVudDtcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgY29udHJvbENsaWVudDogSVZlY3RvckluZGV4Q29udHJvbENsaWVudCxcbiAgICBkYXRhQ2xpZW50OiBJVmVjdG9ySW5kZXhEYXRhQ2xpZW50XG4gICkge1xuICAgIHRoaXMuY29udHJvbENsaWVudCA9IGNvbnRyb2xDbGllbnQ7XG4gICAgdGhpcy5kYXRhQ2xpZW50ID0gZGF0YUNsaWVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgdmVjdG9yIGluZGV4IGlmIGl0IGRvZXMgbm90IGV4aXN0LlxuICAgKlxuICAgKiBSZW1hcmsgb24gdGhlIGNob2ljZSBvZiBzaW1pbGFyaXR5IG1ldHJpYzpcbiAgICogLSBDb3NpbmUgc2ltaWxhcml0eSBpcyBhcHByb3ByaWF0ZSBmb3IgbW9zdCBlbWJlZGRpbmcgbW9kZWxzIGFzIHRoZXkgdGVuZCB0byBiZSBvcHRpbWl6ZWRcbiAgICogICAgIGZvciB0aGlzIG1ldHJpYy5cbiAgICogLSBJZiB0aGUgdmVjdG9ycyBhcmUgdW5pdCBub3JtYWxpemVkLCBjb3NpbmUgc2ltaWxhcml0eSBpcyBlcXVpdmFsZW50IHRvIGlubmVyIHByb2R1Y3QuXG4gICAqICAgICBJZiB5b3VyIHZlY3RvcnMgYXJlIGFscmVhZHkgdW5pdCBub3JtYWxpemVkLCB5b3UgY2FuIHVzZSBpbm5lciBwcm9kdWN0IHRvIGltcHJvdmVcbiAgICogICAgIHBlcmZvcm1hbmNlLlxuICAgKiAtIEV1Y2xpZGVhbiBzaW1pbGFyaXR5LCB0aGUgc3VtIG9mIHNxdWFyZWQgZGlmZmVyZW5jZXMsIGlzIGFwcHJvcHJpYXRlIGZvciBkYXRhc2V0cyB3aGVyZVxuICAgKiAgICAgdGhpcyBtZXRyaWMgaXMgbWVhbmluZ2Z1bC4gRm9yIGV4YW1wbGUsIGlmIHRoZSB2ZWN0b3JzIHJlcHJlc2VudCBpbWFnZXMsIGFuZCB0aGVcbiAgICogICAgIGVtYmVkZGluZyBtb2RlbCBpcyB0cmFpbmVkIHRvIG9wdGltaXplIHRoZSBldWNsaWRlYW4gZGlzdGFuY2UgYmV0d2VlbiBpbWFnZXMsIHRoZW5cbiAgICogICAgIGV1Y2xpZGVhbiBzaW1pbGFyaXR5IGlzIGFwcHJvcHJpYXRlLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaW5kZXhOYW1lIC0gVGhlIHZlY3RvciBpbmRleCB0byBiZSBjcmVhdGVkLlxuICAgKiBAcGFyYW0ge251bWJlcn0gbnVtRGltZW5zaW9ucyAtIE51bWJlciBvZiBkaW1lbnNpb25zIHBlciB2ZWN0b3IuXG4gICAqIEBwYXJhbSB7VmVjdG9yU2ltaWxhcml0eU1ldHJpY30gc2ltaWxhcml0eU1ldHJpYyAtIFRoZSBtZXRyaWMgdXNlZCB0b1xuICAgKiBxdWFudGlmeSB0aGUgZGlzdGFuY2UgYmV0d2VlbiB2ZWN0b3JzLiBDYW4gYmUgY29zaW5lIHNpbWlsYXJpdHksXG4gICAqIGlubmVyIHByb2R1Y3QsIG9yIGV1Y2xpZGVhbiBzaW1pbGFyaXR5LiBEZWZhdWx0cyB0byBjb3NpbmUgc2ltaWxhcml0eS5cbiAgICogQHJldHVybnMge1Byb21pc2U8Q3JlYXRlVmVjdG9ySW5kZXguUmVzcG9uc2U+fSAtXG4gICAqIHtAbGluayBDcmVhdGVWZWN0b3JJbmRleC5TdWNjZXNzfSBvbiBzdWNjZXNzLlxuICAgKiB7QGxpbmsgQ3JlYXRlVmVjdG9ySW5kZXguQWxyZWFkeUV4aXN0c30gaWYgdGhlIGNhY2hlIGFscmVhZHkgZXhpc3RzLlxuICAgKiB7QGxpbmsgQ3JlYXRlVmVjdG9ySW5kZXguRXJyb3J9IG9uIGZhaWx1cmUuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY3JlYXRlSW5kZXgoXG4gICAgaW5kZXhOYW1lOiBzdHJpbmcsXG4gICAgbnVtRGltZW5zaW9uczogbnVtYmVyLFxuICAgIHNpbWlsYXJpdHlNZXRyaWM/OiBWZWN0b3JTaW1pbGFyaXR5TWV0cmljXG4gICk6IFByb21pc2U8Q3JlYXRlVmVjdG9ySW5kZXguUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jb250cm9sQ2xpZW50LmNyZWF0ZUluZGV4KFxuICAgICAgaW5kZXhOYW1lLFxuICAgICAgbnVtRGltZW5zaW9ucyxcbiAgICAgIHNpbWlsYXJpdHlNZXRyaWNcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3RzIGFsbCB2ZWN0b3IgaW5kZXhlcy5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8TGlzdFZlY3RvckluZGV4ZXMuUmVzcG9uc2U+fSAtXG4gICAqIHtAbGluayBMaXN0VmVjdG9ySW5kZXhlcy5TdWNjZXNzfSBjb250YWluaW5nIHRoZSBsaXN0IG9uIHN1Y2Nlc3MuXG4gICAqIHtAbGluayBMaXN0VmVjdG9ySW5kZXhlcy5FcnJvcn0gb24gZXJyb3IuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgbGlzdEluZGV4ZXMoKTogUHJvbWlzZTxMaXN0VmVjdG9ySW5kZXhlcy5SZXNwb25zZT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmNvbnRyb2xDbGllbnQubGlzdEluZGV4ZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGVzIGEgdmVjdG9yIGluZGV4IGFuZCBhbGwgdGhlIGl0ZW1zIHN0b3JlZCBpbiBpdC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGluZGV4TmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB2ZWN0b3IgaW5kZXggdG8gZGVsZXRlLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxEZWxldGVWZWN0b3JJbmRleC5SZXNwb25zZT59IC1cbiAgICoge0BsaW5rIERlbGV0ZVZlY3RvckluZGV4LlN1Y2Nlc3N9IG9uIHN1Y2Nlc3MuXG4gICAqIHtAbGluayBEZWxldGVWZWN0b3JJbmRleC5FcnJvcn0gb24gZXJyb3IuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZGVsZXRlSW5kZXgoXG4gICAgaW5kZXhOYW1lOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxEZWxldGVWZWN0b3JJbmRleC5SZXNwb25zZT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmNvbnRyb2xDbGllbnQuZGVsZXRlSW5kZXgoaW5kZXhOYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb3VudHMgdGhlIG51bWJlciBvZiBpdGVtcyBpbiBhIHZlY3RvciBpbmRleC5cbiAgICpcbiAgICogTm90ZSB0aGF0IGlmIHRoZSBpbmRleCBkb2VzIG5vdCBleGlzdCwgYW4gZXJyb3Igd2l0aFxuICAgKiB7QGxpbmsgTW9tZW50b0Vycm9yQ29kZX0gYE5PVF9GT1VORGAgZXJyb3Igd2lsbCBiZSByZXR1cm5lZC5cbiAgICpcbiAgICogQHBhcmFtIGluZGV4TmFtZSAtIE5hbWUgb2YgdGhlIGluZGV4IHRvIGNvdW50IHRoZSBpdGVtcyBpbi5cbiAgICogQHJldHVybnMge1Byb21pc2U8VmVjdG9yQ291bnRJdGVtcy5SZXNwb25zZT59IC1cbiAgICoge0BsaW5rIFZlY3RvckNvdW50SXRlbXMuU3VjY2Vzc30gb24gc3VjY2Vzcy5cbiAgICoge0BsaW5rIFZlY3RvckNvdW50SXRlbXMuRXJyb3J9IG9uIGVycm9yLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNvdW50SXRlbXMoXG4gICAgaW5kZXhOYW1lOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxWZWN0b3JDb3VudEl0ZW1zLlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZGF0YUNsaWVudC5jb3VudEl0ZW1zKGluZGV4TmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogVXBzZXJ0cyBhIGJhdGNoIG9mIGl0ZW1zIGludG8gYSB2ZWN0b3IgaW5kZXguXG4gICAqXG4gICAqIElmIGFuIGl0ZW0gd2l0aCB0aGUgc2FtZSBJRCBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgaW5kZXgsIGl0IHdpbGwgYmUgcmVwbGFjZWQuXG4gICAqIE90aGVyd2lzZSwgaXQgd2lsbCBiZSBhZGRlZCB0byB0aGUgaW5kZXguXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpbmRleE5hbWUgLSBOYW1lIG9mIHRoZSBpbmRleCB0byB1cHNlcnQgdGhlIGl0ZW1zIGludG8uXG4gICAqIEBwYXJhbSB7QXJyYXk8VmVjdG9ySW5kZXhJdGVtPn0gaXRlbXMgLSBUaGUgaXRlbXMgdG8gYmUgdXBzZXJ0ZWQgaW50byB0aGUgaW5kZXguXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPFZlY3RvclVwc2VydEl0ZW1CYXRjaC5SZXNwb25zZT59IC1cbiAgICoge0BsaW5rIFZlY3RvclVwc2VydEl0ZW1CYXRjaC5TdWNjZXNzfSBvbiBzdWNjZXNzLlxuICAgKiB7QGxpbmsgVmVjdG9yVXBzZXJ0SXRlbUJhdGNoLkVycm9yfSBvbiBlcnJvci5cbiAgICovXG4gIHB1YmxpYyBhc3luYyB1cHNlcnRJdGVtQmF0Y2goXG4gICAgaW5kZXhOYW1lOiBzdHJpbmcsXG4gICAgaXRlbXM6IEFycmF5PFZlY3RvckluZGV4SXRlbT5cbiAgKTogUHJvbWlzZTxWZWN0b3JVcHNlcnRJdGVtQmF0Y2guUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5kYXRhQ2xpZW50LnVwc2VydEl0ZW1CYXRjaChpbmRleE5hbWUsIGl0ZW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWFyY2hlcyBmb3IgdGhlIG1vc3Qgc2ltaWxhciB2ZWN0b3JzIHRvIHRoZSBxdWVyeSB2ZWN0b3IgaW4gdGhlIGluZGV4LlxuICAgKlxuICAgKiBSYW5rcyB0aGUgdmVjdG9ycyBhY2NvcmRpbmcgdG8gdGhlIHNpbWlsYXJpdHkgbWV0cmljIHNwZWNpZmllZCB3aGVuIHRoZVxuICAgKiBpbmRleCB3YXMgY3JlYXRlZC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGluZGV4TmFtZSAtIE5hbWUgb2YgdGhlIGluZGV4IHRvIHNlYXJjaCBpbi5cbiAgICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBxdWVyeVZlY3RvciAtIFRoZSB2ZWN0b3IgdG8gc2VhcmNoIGZvci5cbiAgICogQHBhcmFtIHtTZWFyY2hPcHRpb25zfSBvcHRpb25zIC0gT3B0aW9uYWwgc2VhcmNoIGFyZ3VtZW50cywgaW5jbHVkaW5nXG4gICAqIHRoZSBudW1iZXIgb2YgcmVzdWx0cyB0byByZXR1cm4sIG1ldGFkYXRhIGZpZWxkcyB0byByZXR1cm4sIGFuZCBhIHNjb3JlXG4gICAqIHRocmVzaG9sZCB0byBmaWx0ZXIgcmVzdWx0cyBieS5cbiAgICogQHJldHVybnMge1Byb21pc2U8VmVjdG9yU2VhcmNoLlJlc3BvbnNlPn0gLVxuICAgKiB7QGxpbmsgVmVjdG9yU2VhcmNoLlN1Y2Nlc3N9IG9uIHN1Y2Nlc3MuXG4gICAqIHtAbGluayBWZWN0b3JTZWFyY2guRXJyb3J9IG9uIGVycm9yLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNlYXJjaChcbiAgICBpbmRleE5hbWU6IHN0cmluZyxcbiAgICBxdWVyeVZlY3RvcjogQXJyYXk8bnVtYmVyPixcbiAgICBvcHRpb25zPzogU2VhcmNoT3B0aW9uc1xuICApOiBQcm9taXNlPFZlY3RvclNlYXJjaC5SZXNwb25zZT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmRhdGFDbGllbnQuc2VhcmNoKGluZGV4TmFtZSwgcXVlcnlWZWN0b3IsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlYXJjaGVzIGZvciB0aGUgbW9zdCBzaW1pbGFyIHZlY3RvcnMgdG8gdGhlIHF1ZXJ5IHZlY3RvciBpbiB0aGUgaW5kZXguXG4gICAqXG4gICAqIFJhbmtzIHRoZSB2ZWN0b3JzIGFjY29yZGluZyB0byB0aGUgc2ltaWxhcml0eSBtZXRyaWMgc3BlY2lmaWVkIHdoZW4gdGhlXG4gICAqIGluZGV4IHdhcyBjcmVhdGVkLlxuICAgKiBBbHNvIHJldHVybnMgdGhlIHZlY3RvcnMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggcmVzdWx0LlxuICAgKlxuICAgKiBAcGFyYW0gaW5kZXhOYW1lIC0gTmFtZSBvZiB0aGUgaW5kZXggdG8gc2VhcmNoIGluLlxuICAgKiBAcGFyYW0gcXVlcnlWZWN0b3IgLSBUaGUgdmVjdG9yIHRvIHNlYXJjaCBmb3IuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9uYWwgc2VhcmNoIGFyZ3VtZW50cywgaW5jbHVkaW5nXG4gICAqIHRoZSBudW1iZXIgb2YgcmVzdWx0cyB0byByZXR1cm4sIG1ldGFkYXRhIGZpZWxkcyB0byByZXR1cm4sIGFuZCBhIHNjb3JlXG4gICAqIHRocmVzaG9sZCB0byBmaWx0ZXIgcmVzdWx0cyBieS5cbiAgICogQHJldHVybnMge1Byb21pc2U8VmVjdG9yU2VhcmNoQW5kRmV0Y2hWZWN0b3JzLlJlc3BvbnNlPn0gLVxuICAgKiB7QGxpbmsgVmVjdG9yU2VhcmNoQW5kRmV0Y2hWZWN0b3JzLlN1Y2Nlc3N9IG9uIHN1Y2Nlc3MuXG4gICAqIHtAbGluayBWZWN0b3JTZWFyY2hBbmRGZXRjaFZlY3RvcnMuRXJyb3J9IG9uIGVycm9yLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNlYXJjaEFuZEZldGNoVmVjdG9ycyhcbiAgICBpbmRleE5hbWU6IHN0cmluZyxcbiAgICBxdWVyeVZlY3RvcjogbnVtYmVyW10sXG4gICAgb3B0aW9ucz86IFNlYXJjaE9wdGlvbnMgfCB1bmRlZmluZWRcbiAgKTogUHJvbWlzZTxWZWN0b3JTZWFyY2hBbmRGZXRjaFZlY3RvcnMuUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5kYXRhQ2xpZW50LnNlYXJjaEFuZEZldGNoVmVjdG9ycyhcbiAgICAgIGluZGV4TmFtZSxcbiAgICAgIHF1ZXJ5VmVjdG9yLFxuICAgICAgb3B0aW9uc1xuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlcyBhIGJhdGNoIG9mIGl0ZW1zIGZyb20gYSB2ZWN0b3IgaW5kZXguXG4gICAqIERlbGV0ZXMgYW55IGFuZCBhbGwgaXRlbXMgd2l0aCB0aGUgZ2l2ZW4gSURzIGZyb20gdGhlIGluZGV4LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaW5kZXhOYW1lIC0gTmFtZSBvZiB0aGUgaW5kZXggdG8gZGVsZXRlIHRoZSBpdGVtcyBmcm9tLlxuICAgKiBAcGFyYW0ge1ZlY3RvckZpbHRlckV4cHJlc3Npb24gfCBBcnJheTxzdHJpbmc+fSBmaWx0ZXIgLSBBIGZpbHRlciBleHByZXNzaW9uIHRvIG1hdGNoIHRoZSBpdGVtcyB0byBiZSBkZWxldGVkXG4gICAqIG9yIGFuIGFycmF5IG9mIGl0ZW0gSURzIHRvIGJlIGRlbGV0ZWQuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPFZlY3RvckRlbGV0ZUl0ZW1CYXRjaC5SZXNwb25zZT59XG4gICAqIHtAbGluayBWZWN0b3JEZWxldGVJdGVtQmF0Y2guU3VjY2Vzc30gb24gc3VjY2Vzcy5cbiAgICoge0BsaW5rIFZlY3RvckRlbGV0ZUl0ZW1CYXRjaC5FcnJvcn0gb24gZXJyb3IuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZGVsZXRlSXRlbUJhdGNoKFxuICAgIGluZGV4TmFtZTogc3RyaW5nLFxuICAgIGZpbHRlcjogVmVjdG9yRmlsdGVyRXhwcmVzc2lvbiB8IEFycmF5PHN0cmluZz5cbiAgKTogUHJvbWlzZTxWZWN0b3JEZWxldGVJdGVtQmF0Y2guUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5kYXRhQ2xpZW50LmRlbGV0ZUl0ZW1CYXRjaChpbmRleE5hbWUsIGZpbHRlcik7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhIGJhdGNoIG9mIGl0ZW1zIGZyb20gYSB2ZWN0b3IgaW5kZXggYnkgSUQuXG4gICAqXG4gICAqIEBwYXJhbSBpbmRleE5hbWUgLSBOYW1lIG9mIHRoZSBpbmRleCB0byBnZXQgdGhlIGl0ZW1zIGZyb20uXG4gICAqIEBwYXJhbSBmaWx0ZXIgLSBUaGUgSURzIG9mIHRoZSBpdGVtcyB0byBiZSByZXRyaWV2ZWQgZnJvbSB0aGUgaW5kZXguXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPFZlY3RvckdldEl0ZW1CYXRjaC5SZXNwb25zZT59XG4gICAqIHtAbGluayBWZWN0b3JHZXRJdGVtQmF0Y2guU3VjY2Vzc30gb24gc3VjY2Vzcywgd2l0aCB0aGUgZm91bmQgaXRlbXMuXG4gICAqIHtAbGluayBWZWN0b3JHZXRJdGVtQmF0Y2guRXJyb3J9IG9uIGVycm9yLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEl0ZW1CYXRjaChcbiAgICBpbmRleE5hbWU6IHN0cmluZyxcbiAgICBmaWx0ZXI6IHN0cmluZ1tdXG4gICk6IFByb21pc2U8VmVjdG9yR2V0SXRlbUJhdGNoLlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZGF0YUNsaWVudC5nZXRJdGVtQmF0Y2goaW5kZXhOYW1lLCBmaWx0ZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgbWV0YWRhdGEgZm9yIGEgYmF0Y2ggb2YgaXRlbXMgZnJvbSBhIHZlY3RvciBpbmRleCBieSBJRC5cbiAgICpcbiAgICogQHBhcmFtIGluZGV4TmFtZSAtIE5hbWUgb2YgdGhlIGluZGV4IHRvIGdldCB0aGUgaXRlbXMgZnJvbS5cbiAgICogQHBhcmFtIGZpbHRlciAtIFRoZSBJRHMgb2YgdGhlIGl0ZW1zIHRvIGJlIHJldHJpZXZlZCBmcm9tIHRoZSBpbmRleC5cbiAgICogQHJldHVybnMge1Byb21pc2U8VmVjdG9yR2V0SXRlbU1ldGFkYXRhQmF0Y2guUmVzcG9uc2U+fVxuICAgKiB7QGxpbmsgVmVjdG9yR2V0SXRlbU1ldGFkYXRhQmF0Y2guU3VjY2Vzc30gb24gc3VjY2Vzcywgd2l0aCB0aGUgZm91bmQgaXRlbSBtZXRhZGF0YS5cbiAgICoge0BsaW5rIFZlY3RvckdldEl0ZW1NZXRhZGF0YUJhdGNoLkVycm9yfSBvbiBlcnJvci5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRJdGVtTWV0YWRhdGFCYXRjaChcbiAgICBpbmRleE5hbWU6IHN0cmluZyxcbiAgICBmaWx0ZXI6IHN0cmluZ1tdXG4gICk6IFByb21pc2U8VmVjdG9yR2V0SXRlbU1ldGFkYXRhQmF0Y2guUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5kYXRhQ2xpZW50LmdldEl0ZW1NZXRhZGF0YUJhdGNoKGluZGV4TmFtZSwgZmlsdGVyKTtcbiAgfVxufVxuIl19
@@ -1,12 +1,13 @@
1
1
  import { VectorCountItems, VectorDeleteItemBatch, VectorGetItemBatch, VectorGetItemMetadataBatch, VectorSearch, VectorSearchAndFetchVectors, VectorUpsertItemBatch } from '../../../messages/responses/vector';
2
2
  import { VectorIndexItem } from '../../../messages/vector-index';
3
3
  import { SearchOptions } from '../../../clients/IVectorIndexClient';
4
+ import { VectorFilterExpression } from '../../../messages/vector-index-filters';
4
5
  export interface IVectorIndexDataClient {
5
6
  countItems(indexName: string): Promise<VectorCountItems.Response>;
6
7
  upsertItemBatch(indexName: string, items: Array<VectorIndexItem>): Promise<VectorUpsertItemBatch.Response>;
7
8
  search(indexName: string, queryVector: Array<number>, options?: SearchOptions): Promise<VectorSearch.Response>;
8
9
  searchAndFetchVectors(indexName: string, queryVector: Array<number>, options?: SearchOptions): Promise<VectorSearchAndFetchVectors.Response>;
9
- deleteItemBatch(indexName: string, filter: Array<string>): Promise<VectorDeleteItemBatch.Response>;
10
+ deleteItemBatch(indexName: string, filter: VectorFilterExpression | Array<string>): Promise<VectorDeleteItemBatch.Response>;
10
11
  getItemBatch(indexName: string, filter: Array<string>): Promise<VectorGetItemBatch.Response>;
11
12
  getItemMetadataBatch(indexName: string, filter: Array<string>): Promise<VectorGetItemMetadataBatch.Response>;
12
13
  }
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSVZlY3RvckluZGV4RGF0YUNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9pbnRlcm5hbC9jbGllbnRzL3ZlY3Rvci9JVmVjdG9ySW5kZXhEYXRhQ2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBWZWN0b3JDb3VudEl0ZW1zLFxuICBWZWN0b3JEZWxldGVJdGVtQmF0Y2gsXG4gIFZlY3RvckdldEl0ZW1CYXRjaCxcbiAgVmVjdG9yR2V0SXRlbU1ldGFkYXRhQmF0Y2gsXG4gIFZlY3RvclNlYXJjaCxcbiAgVmVjdG9yU2VhcmNoQW5kRmV0Y2hWZWN0b3JzLFxuICBWZWN0b3JVcHNlcnRJdGVtQmF0Y2gsXG59IGZyb20gJy4uLy4uLy4uL21lc3NhZ2VzL3Jlc3BvbnNlcy92ZWN0b3InO1xuaW1wb3J0IHtWZWN0b3JJbmRleEl0ZW19IGZyb20gJy4uLy4uLy4uL21lc3NhZ2VzL3ZlY3Rvci1pbmRleCc7XG5pbXBvcnQge1NlYXJjaE9wdGlvbnN9IGZyb20gJy4uLy4uLy4uL2NsaWVudHMvSVZlY3RvckluZGV4Q2xpZW50JztcblxuZXhwb3J0IGludGVyZmFjZSBJVmVjdG9ySW5kZXhEYXRhQ2xpZW50IHtcbiAgY291bnRJdGVtcyhpbmRleE5hbWU6IHN0cmluZyk6IFByb21pc2U8VmVjdG9yQ291bnRJdGVtcy5SZXNwb25zZT47XG5cbiAgdXBzZXJ0SXRlbUJhdGNoKFxuICAgIGluZGV4TmFtZTogc3RyaW5nLFxuICAgIGl0ZW1zOiBBcnJheTxWZWN0b3JJbmRleEl0ZW0+XG4gICk6IFByb21pc2U8VmVjdG9yVXBzZXJ0SXRlbUJhdGNoLlJlc3BvbnNlPjtcblxuICBzZWFyY2goXG4gICAgaW5kZXhOYW1lOiBzdHJpbmcsXG4gICAgcXVlcnlWZWN0b3I6IEFycmF5PG51bWJlcj4sXG4gICAgb3B0aW9ucz86IFNlYXJjaE9wdGlvbnNcbiAgKTogUHJvbWlzZTxWZWN0b3JTZWFyY2guUmVzcG9uc2U+O1xuXG4gIHNlYXJjaEFuZEZldGNoVmVjdG9ycyhcbiAgICBpbmRleE5hbWU6IHN0cmluZyxcbiAgICBxdWVyeVZlY3RvcjogQXJyYXk8bnVtYmVyPixcbiAgICBvcHRpb25zPzogU2VhcmNoT3B0aW9uc1xuICApOiBQcm9taXNlPFZlY3RvclNlYXJjaEFuZEZldGNoVmVjdG9ycy5SZXNwb25zZT47XG5cbiAgZGVsZXRlSXRlbUJhdGNoKFxuICAgIGluZGV4TmFtZTogc3RyaW5nLFxuICAgIGZpbHRlcjogQXJyYXk8c3RyaW5nPlxuICApOiBQcm9taXNlPFZlY3RvckRlbGV0ZUl0ZW1CYXRjaC5SZXNwb25zZT47XG5cbiAgZ2V0SXRlbUJhdGNoKFxuICAgIGluZGV4TmFtZTogc3RyaW5nLFxuICAgIGZpbHRlcjogQXJyYXk8c3RyaW5nPlxuICApOiBQcm9taXNlPFZlY3RvckdldEl0ZW1CYXRjaC5SZXNwb25zZT47XG5cbiAgZ2V0SXRlbU1ldGFkYXRhQmF0Y2goXG4gICAgaW5kZXhOYW1lOiBzdHJpbmcsXG4gICAgZmlsdGVyOiBBcnJheTxzdHJpbmc+XG4gICk6IFByb21pc2U8VmVjdG9yR2V0SXRlbU1ldGFkYXRhQmF0Y2guUmVzcG9uc2U+O1xufVxuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSVZlY3RvckluZGV4RGF0YUNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9pbnRlcm5hbC9jbGllbnRzL3ZlY3Rvci9JVmVjdG9ySW5kZXhEYXRhQ2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBWZWN0b3JDb3VudEl0ZW1zLFxuICBWZWN0b3JEZWxldGVJdGVtQmF0Y2gsXG4gIFZlY3RvckdldEl0ZW1CYXRjaCxcbiAgVmVjdG9yR2V0SXRlbU1ldGFkYXRhQmF0Y2gsXG4gIFZlY3RvclNlYXJjaCxcbiAgVmVjdG9yU2VhcmNoQW5kRmV0Y2hWZWN0b3JzLFxuICBWZWN0b3JVcHNlcnRJdGVtQmF0Y2gsXG59IGZyb20gJy4uLy4uLy4uL21lc3NhZ2VzL3Jlc3BvbnNlcy92ZWN0b3InO1xuaW1wb3J0IHtWZWN0b3JJbmRleEl0ZW19IGZyb20gJy4uLy4uLy4uL21lc3NhZ2VzL3ZlY3Rvci1pbmRleCc7XG5pbXBvcnQge1NlYXJjaE9wdGlvbnN9IGZyb20gJy4uLy4uLy4uL2NsaWVudHMvSVZlY3RvckluZGV4Q2xpZW50JztcbmltcG9ydCB7VmVjdG9yRmlsdGVyRXhwcmVzc2lvbn0gZnJvbSAnLi4vLi4vLi4vbWVzc2FnZXMvdmVjdG9yLWluZGV4LWZpbHRlcnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElWZWN0b3JJbmRleERhdGFDbGllbnQge1xuICBjb3VudEl0ZW1zKGluZGV4TmFtZTogc3RyaW5nKTogUHJvbWlzZTxWZWN0b3JDb3VudEl0ZW1zLlJlc3BvbnNlPjtcblxuICB1cHNlcnRJdGVtQmF0Y2goXG4gICAgaW5kZXhOYW1lOiBzdHJpbmcsXG4gICAgaXRlbXM6IEFycmF5PFZlY3RvckluZGV4SXRlbT5cbiAgKTogUHJvbWlzZTxWZWN0b3JVcHNlcnRJdGVtQmF0Y2guUmVzcG9uc2U+O1xuXG4gIHNlYXJjaChcbiAgICBpbmRleE5hbWU6IHN0cmluZyxcbiAgICBxdWVyeVZlY3RvcjogQXJyYXk8bnVtYmVyPixcbiAgICBvcHRpb25zPzogU2VhcmNoT3B0aW9uc1xuICApOiBQcm9taXNlPFZlY3RvclNlYXJjaC5SZXNwb25zZT47XG5cbiAgc2VhcmNoQW5kRmV0Y2hWZWN0b3JzKFxuICAgIGluZGV4TmFtZTogc3RyaW5nLFxuICAgIHF1ZXJ5VmVjdG9yOiBBcnJheTxudW1iZXI+LFxuICAgIG9wdGlvbnM/OiBTZWFyY2hPcHRpb25zXG4gICk6IFByb21pc2U8VmVjdG9yU2VhcmNoQW5kRmV0Y2hWZWN0b3JzLlJlc3BvbnNlPjtcblxuICBkZWxldGVJdGVtQmF0Y2goXG4gICAgaW5kZXhOYW1lOiBzdHJpbmcsXG4gICAgZmlsdGVyOiBWZWN0b3JGaWx0ZXJFeHByZXNzaW9uIHwgQXJyYXk8c3RyaW5nPlxuICApOiBQcm9taXNlPFZlY3RvckRlbGV0ZUl0ZW1CYXRjaC5SZXNwb25zZT47XG5cbiAgZ2V0SXRlbUJhdGNoKFxuICAgIGluZGV4TmFtZTogc3RyaW5nLFxuICAgIGZpbHRlcjogQXJyYXk8c3RyaW5nPlxuICApOiBQcm9taXNlPFZlY3RvckdldEl0ZW1CYXRjaC5SZXNwb25zZT47XG5cbiAgZ2V0SXRlbU1ldGFkYXRhQmF0Y2goXG4gICAgaW5kZXhOYW1lOiBzdHJpbmcsXG4gICAgZmlsdGVyOiBBcnJheTxzdHJpbmc+XG4gICk6IFByb21pc2U8VmVjdG9yR2V0SXRlbU1ldGFkYXRhQmF0Y2guUmVzcG9uc2U+O1xufVxuIl19
@@ -16,6 +16,7 @@ export declare function validateIndexName(name: string): void;
16
16
  export declare function validateNumDimensions(numDimensions: number): void;
17
17
  export declare function validateTopK(topK: number): void;
18
18
  export declare function validateTtlMinutes(ttlMinutes: number): void;
19
+ export declare function validateTtlSeconds(ttl: number): void;
19
20
  export declare function validateValidForSeconds(validForSeconds: number): void;
20
21
  export declare function validateTimeout(timeout: number): void;
21
22
  export declare function validateDisposableTokenExpiry(expiresIn: ExpiresIn): void;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.validateLeaderboardNumberOfElements = exports.validateLeaderboardCount = exports.validateLeaderboardOffset = exports.validateLeaderboardRanks = exports.validateLeaderboardName = exports.isBase64 = exports.validateDisposableTokenTokenID = exports.validateDisposableTokenExpiry = exports.validateTimeout = exports.validateValidForSeconds = exports.validateTtlMinutes = exports.validateTopK = exports.validateNumDimensions = exports.validateIndexName = exports.validateWebhookName = exports.validateTopicName = exports.validateListSliceStartEnd = exports.validateListName = exports.validateDictionaryName = exports.validateSortedSetCount = exports.validateSortedSetOffset = exports.validateSortedSetScores = exports.validateSortedSetRanks = exports.validateSortedSetName = exports.validateSetName = exports.validateCacheKeyOrPrefix = exports.validateCacheName = void 0;
3
+ exports.validateLeaderboardNumberOfElements = exports.validateLeaderboardCount = exports.validateLeaderboardOffset = exports.validateLeaderboardRanks = exports.validateLeaderboardName = exports.isBase64 = exports.validateDisposableTokenTokenID = exports.validateDisposableTokenExpiry = exports.validateTimeout = exports.validateValidForSeconds = exports.validateTtlSeconds = exports.validateTtlMinutes = exports.validateTopK = exports.validateNumDimensions = exports.validateIndexName = exports.validateWebhookName = exports.validateTopicName = exports.validateListSliceStartEnd = exports.validateListName = exports.validateDictionaryName = exports.validateSortedSetCount = exports.validateSortedSetOffset = exports.validateSortedSetScores = exports.validateSortedSetRanks = exports.validateSortedSetName = exports.validateSetName = exports.validateCacheKeyOrPrefix = exports.validateCacheName = void 0;
4
4
  const errors_1 = require("../../errors");
5
5
  const string_1 = require("./string");
6
6
  function validateCacheName(name) {
@@ -115,11 +115,19 @@ function validateTopK(topK) {
115
115
  }
116
116
  exports.validateTopK = validateTopK;
117
117
  function validateTtlMinutes(ttlMinutes) {
118
- if (ttlMinutes < 0) {
119
- throw new errors_1.InvalidArgumentError('ttlMinutes must be positive');
118
+ if (ttlMinutes < 0 || !Number.isSafeInteger(ttlMinutes)) {
119
+ throw new errors_1.InvalidArgumentError('ttlMinutes must be a positive integer');
120
120
  }
121
121
  }
122
122
  exports.validateTtlMinutes = validateTtlMinutes;
123
+ // Currently accepting ttl in seconds, but if someone requests support for millis,
124
+ // the validator will need to check for Number.isSafeInteger(ttl * 1000).
125
+ function validateTtlSeconds(ttl) {
126
+ if (ttl < 0 || !Number.isSafeInteger(ttl)) {
127
+ throw new errors_1.InvalidArgumentError(`ttl must be a positive integer, received ${ttl}`);
128
+ }
129
+ }
130
+ exports.validateTtlSeconds = validateTtlSeconds;
123
131
  function validateValidForSeconds(validForSeconds) {
124
132
  if (validForSeconds < 0) {
125
133
  throw new errors_1.InvalidArgumentError('validForSeconds must be positive');
@@ -196,4 +204,4 @@ function validateLeaderboardNumberOfElements(numElements) {
196
204
  }
197
205
  }
198
206
  exports.validateLeaderboardNumberOfElements = validateLeaderboardNumberOfElements;
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pbnRlcm5hbC91dGlscy92YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlDQUFrRDtBQUVsRCxxQ0FBMEQ7QUFFMUQsU0FBZ0IsaUJBQWlCLENBQUMsSUFBWTtJQUM1QyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUNqQixNQUFNLElBQUksNkJBQW9CLENBQUMsOEJBQThCLENBQUMsQ0FBQztLQUNoRTtBQUNILENBQUM7QUFKRCw4Q0FJQztBQUVELFNBQWdCLHdCQUF3QixDQUFDLElBQVk7SUFDbkQsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDakIsTUFBTSxJQUFJLDZCQUFvQixDQUFDLDJDQUEyQyxDQUFDLENBQUM7S0FDN0U7QUFDSCxDQUFDO0FBSkQsNERBSUM7QUFFRCxTQUFnQixlQUFlLENBQUMsSUFBWTtJQUMxQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUNqQixNQUFNLElBQUksNkJBQW9CLENBQUMsNEJBQTRCLENBQUMsQ0FBQztLQUM5RDtBQUNILENBQUM7QUFKRCwwQ0FJQztBQUVELFNBQWdCLHFCQUFxQixDQUFDLElBQVk7SUFDaEQsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDakIsTUFBTSxJQUFJLDZCQUFvQixDQUFDLG1DQUFtQyxDQUFDLENBQUM7S0FDckU7QUFDSCxDQUFDO0FBSkQsc0RBSUM7QUFFRCxTQUFnQixzQkFBc0IsQ0FBQyxVQUFrQixFQUFFLFFBQWlCO0lBQzFFLElBQUksUUFBUSxLQUFLLFNBQVMsRUFBRTtRQUMxQixPQUFPO0tBQ1I7SUFDRCxJQUFJLFVBQVUsR0FBRyxDQUFDLElBQUksUUFBUSxHQUFHLENBQUMsSUFBSSxVQUFVLEdBQUcsUUFBUSxFQUFFO1FBQzNELE1BQU0sSUFBSSw2QkFBb0IsQ0FBQyx1Q0FBdUMsQ0FB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QUU7UUFDYixNQUFNLElBQUksNkJBQW9CLENBQUMsdUNBQXVDLENBQUMsQ0FBQztLQUN6RTtBQUNILENBQUM7QUFKRCw0REFJQztBQUVELFNBQWdCLG1DQUFtQyxDQUFDLFdBQW1CO0lBQ3JFLElBQUksV0FBVyxHQUFHLENBQUMsRUFBRTtRQUNuQixNQUFNLElBQUksNkJBQW9CLENBQUMsbUNBQW1DLENBQUMsQ0FBQztLQUNyRTtBQUNILENBQUM7QUFKRCxrRkFJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW52YWxpZEFyZ3VtZW50RXJyb3J9IGZyb20gJy4uLy4uL2Vycm9ycyc7XG5pbXBvcnQge0V4cGlyZXNJbn0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHtkZWNvZGVGcm9tQmFzZTY0LCBlbmNvZGVUb0Jhc2U2NH0gZnJvbSAnLi9zdHJpbmcnO1xuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVDYWNoZU5hbWUobmFtZTogc3RyaW5nKSB7XG4gIGlmIChpc0VtcHR5KG5hbWUpKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdjYWNoZSBuYW1lIG11c3Qgbm90IGJlIGVtcHR5Jyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlQ2FjaGVLZXlPclByZWZpeChuYW1lOiBzdHJpbmcpIHtcbiAgaWYgKGlzRW1wdHkobmFtZSkpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2NhY2hlIGtleSBvciBrZXkgcHJlZml4IG11c3Qgbm90IGJlIGVtcHR5Jyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlU2V0TmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgaWYgKGlzRW1wdHkobmFtZSkpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ3NldCBuYW1lIG11c3Qgbm90IGJlIGVtcHR5Jyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlU29ydGVkU2V0TmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgaWYgKGlzRW1wdHkobmFtZSkpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ3NvcnRlZCBzZXQgbmFtZSBtdXN0IG5vdCBiZSBlbXB0eScpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVNvcnRlZFNldFJhbmtzKHN0YXJ0X3Jhbms6IG51bWJlciwgZW5kX3Jhbms/OiBudW1iZXIpIHtcbiAgaWYgKGVuZF9yYW5rID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHN0YXJ0X3JhbmsgPiAwICYmIGVuZF9yYW5rID4gMCAmJiBzdGFydF9yYW5rID4gZW5kX3JhbmspIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ3N0YXJ0IHJhbmsgbXVzdCBiZSBsZXNzIHRoYW4gZW5kIHJhbmsnKTtcbiAgfVxuICBpZiAoc3RhcnRfcmFuayA8IDAgJiYgZW5kX3JhbmsgPCAwICYmIHN0YXJ0X3JhbmsgPj0gZW5kX3JhbmspIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXG4gICAgICAnbmVnYXRpdmUgc3RhcnQgcmFuayBtdXN0IGJlIGxlc3MgdGhhbiBuZWdhdGl2ZSBlbmQgcmFuaydcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVNvcnRlZFNldFNjb3JlcyhtaW5TY29yZT86IG51bWJlciwgbWF4U2NvcmU/OiBudW1iZXIpIHtcbiAgaWYgKG1pblNjb3JlID09PSB1bmRlZmluZWQpIHJldHVybjtcbiAgaWYgKG1heFNjb3JlID09PSB1bmRlZmluZWQpIHJldHVybjtcbiAgaWYgKG1pblNjb3JlID4gbWF4U2NvcmUpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXG4gICAgICAnbWluU2NvcmUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gbWF4U2NvcmUnXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTb3J0ZWRTZXRPZmZzZXQob2Zmc2V0OiBudW1iZXIpIHtcbiAgaWYgKG9mZnNldCA8IDApIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ29mZnNldCBtdXN0IGJlIG5vbi1uZWdhdGl2ZSAoPj0gMCknKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTb3J0ZWRTZXRDb3VudChjb3VudDogbnVtYmVyKSB7XG4gIGlmIChjb3VudCA8IDEpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2NvdW50IG11c3QgYmUgc3RyaWN0bHkgcG9zaXRpdmUgKD4gMCknKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVEaWN0aW9uYXJ5TmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgaWYgKGlzRW1wdHkobmFtZSkpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2RpY3Rpb25hcnkgbmFtZSBtdXN0IG5vdCBiZSBlbXB0eScpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUxpc3ROYW1lKG5hbWU6IHN0cmluZykge1xuICBpZiAoaXNFbXB0eShuYW1lKSkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignbGlzdCBuYW1lIG11c3Qgbm90IGJlIGVtcHR5Jyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlTGlzdFNsaWNlU3RhcnRFbmQoXG4gIHN0YXJ0SW5kZXg/OiBudW1iZXIsXG4gIGVuZEluZGV4PzogbnVtYmVyXG4pIHtcbiAgaWYgKHN0YXJ0SW5kZXggPT09IHVuZGVmaW5lZCB8fCBlbmRJbmRleCA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gIC8vIGNhbid0IHZhbGlkYXRlIGJvdW5kcyBmb3Igc3RhcnQgYW5kIGluZGV4IG9mIGVpdGhlciBvciBhcmUgbmVnYXRpdmUgd2l0aG91dCBsaXN0IGxlbmd0aFxuICBpZiAoc3RhcnRJbmRleCA+IDAgfHwgZW5kSW5kZXggPCAwKSByZXR1cm47XG4gIGlmIChlbmRJbmRleCA8PSBzdGFydEluZGV4KSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKFxuICAgICAgJ2VuZEluZGV4IChleGNsdXNpdmUpIG11c3QgYmUgbGFyZ2VyIHRoYW4gc3RhcnRJbmRleCAoaW5jbHVzaXZlKSdcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVRvcGljTmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgaWYgKGlzRW1wdHkobmFtZSkpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ3RvcGljIG5hbWUgbXVzdCBub3QgYmUgZW1wdHknKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVXZWJob29rTmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgaWYgKGlzRW1wdHkobmFtZSkpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ3dlYmhvb2sgbmFtZSBtdXN0IG5vdCBiZSBlbXB0eScpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUluZGV4TmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgaWYgKGlzRW1wdHkobmFtZSkpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2luZGV4IG5hbWUgbXVzdCBub3QgYmUgZW1wdHknKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVOdW1EaW1lbnNpb25zKG51bURpbWVuc2lvbnM6IG51bWJlcikge1xuICBpZiAobnVtRGltZW5zaW9ucyA8PSAwKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdudW1EaW1lbnNpb25zIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8nKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVUb3BLKHRvcEs6IG51bWJlcikge1xuICBpZiAodG9wSyA8PSAwKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCd0b3BLIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8nKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVUdGxNaW51dGVzKHR0bE1pbnV0ZXM6IG51bWJlcikge1xuICBpZiAodHRsTWludXRlcyA8IDApIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ3R0bE1pbnV0ZXMgbXVzdCBiZSBwb3NpdGl2ZScpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVZhbGlkRm9yU2Vjb25kcyh2YWxpZEZvclNlY29uZHM6IG51bWJlcikge1xuICBpZiAodmFsaWRGb3JTZWNvbmRzIDwgMCkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigndmFsaWRGb3JTZWNvbmRzIG11c3QgYmUgcG9zaXRpdmUnKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVUaW1lb3V0KHRpbWVvdXQ6IG51bWJlcikge1xuICBpZiAodGltZW91dCA8IDApIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ3RpbWVvdXQgbXVzdCBiZSBwb3NpdGl2ZScpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZURpc3Bvc2FibGVUb2tlbkV4cGlyeShleHBpcmVzSW46IEV4cGlyZXNJbikge1xuICBpZiAoIWV4cGlyZXNJbi5kb2VzRXhwaXJlKCkpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2Rpc3Bvc2FibGUgdG9rZW5zIG11c3QgaGF2ZSBhbiBleHBpcnknKTtcbiAgfVxuICBpZiAoZXhwaXJlc0luLnNlY29uZHMoKSA8IDApIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2Rpc3Bvc2FibGUgdG9rZW4gZXhwaXJ5IG11c3QgYmUgcG9zaXRpdmUnKTtcbiAgfVxuICBpZiAoZXhwaXJlc0luLnNlY29uZHMoKSA+IDYwICogNjApIHtcbiAgICAvLyA2MCBzZWNvbmRzICogNjAgbWludXRlc1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICdkaXNwb3NhYmxlIHRva2VucyBtdXN0IGV4cGlyZSB3aXRoaW4gMSBob3VyJ1xuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlRGlzcG9zYWJsZVRva2VuVG9rZW5JRCh0b2tlbklkOiBzdHJpbmcpIHtcbiAgaWYgKHRva2VuSWQubGVuZ3RoID4gNjQpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXG4gICAgICAnVG9rZW5JRCBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byA2NCBjaGFyYWN0ZXJzLidcbiAgICApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzRW1wdHkoc3RyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuICFzdHIudHJpbSgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNCYXNlNjQoc3RyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZW5jb2RlVG9CYXNlNjQoZGVjb2RlRnJvbUJhc2U2NChzdHIpKSA9PT0gc3RyO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUxlYWRlcmJvYXJkTmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgaWYgKGlzRW1wdHkobmFtZSkpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2xlYWRlcmJvYXJkIG5hbWUgbXVzdCBub3QgYmUgZW1wdHknKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVMZWFkZXJib2FyZFJhbmtzKHN0YXJ0X3Jhbms6IG51bWJlciwgZW5kX3Jhbms6IG51bWJlcikge1xuICBpZiAoc3RhcnRfcmFuayA+IDAgJiYgZW5kX3JhbmsgPiAwICYmIHN0YXJ0X3JhbmsgPj0gZW5kX3JhbmspIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ3N0YXJ0IHJhbmsgbXVzdCBiZSBsZXNzIHRoYW4gZW5kIHJhbmsnKTtcbiAgfVxuICBpZiAoc3RhcnRfcmFuayA8IDAgfHwgZW5kX3JhbmsgPCAwKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdyYW5rcyBtdXN0IGJlIHBvc2l0aXZlJyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlTGVhZGVyYm9hcmRPZmZzZXQob2Zmc2V0OiBudW1iZXIpIHtcbiAgaWYgKG9mZnNldCA8IDApIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ29mZnNldCBtdXN0IGJlIG5vbi1uZWdhdGl2ZSAoPj0gMCknKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVMZWFkZXJib2FyZENvdW50KGNvdW50OiBudW1iZXIpIHtcbiAgaWYgKGNvdW50IDwgMSkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignY291bnQgbXVzdCBiZSBzdHJpY3RseSBwb3NpdGl2ZSAoPiAwKScpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUxlYWRlcmJvYXJkTnVtYmVyT2ZFbGVtZW50cyhudW1FbGVtZW50czogbnVtYmVyKSB7XG4gIGlmIChudW1FbGVtZW50cyA8IDEpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ211c3QgcHJvdmlkZSBhdCBsZWFzdCBvbmUgZWxlbWVudCcpO1xuICB9XG59XG4iXX0=
207
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9pbnRlcm5hbC91dGlscy92YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlDQUFrRDtBQUVsRCxxQ0FBMEQ7QUFFMUQsU0FBZ0IsaUJBQWlCLENBQUMsSUFBWTtJQUM1QyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUNqQixNQUFNLElBQUksNkJBQW9CLENBQUMsOEJBQThCLENBQUMsQ0FBQztLQUNoRTtBQUNILENBQUM7QUFKRCw4Q0FJQztBQUVELFNBQWdCLHdCQUF3QixDQUFDLElBQVk7SUFDbkQsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDakIsTUFBTSxJQUFJLDZCQUFvQixDQUFDLDJDQUEyQyxDQUFDLENBQUM7S0FDN0U7QUFDSCxDQUFDO0FBSkQsNERBSUM7QUFFRCxTQUFnQixlQUFlLENBQUMsSUFBWTtJQUMxQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUNqQixNQUFNLElBQUksNkJBQW9CLENBQUMsNEJBQTRCLENBQUMsQ0FBQztLQUM5RDtBQUNILENBQUM7QUFKRCwwQ0FJQztBQUVELFNBQWdCLHFCQUFxQixDQUFDLElBQVk7SUFDaEQsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDakIsTUFBTSxJQUFJLDZCQUFvQixDQUFDLG1DQUFtQyxDQUFDLENBQUM7S0FDckU7QUFDSCxDQUFDO0FBSkQsc0RBSUM7QUFFRCxTQUFnQixzQkFBc0IsQ0FBQyxVQUFrQixFQUFFLFFBQWlCO0lBQzFFLElBQUksUUFBUSxLQUFLLFNBQVMsRUFBRTtRQUMxQixPQUFPO0tBQ1I7SUFDRCxJQUFJLFVBQVUsR0FBRyxDQUFDLElBQUksUUFBUSxHQUFHLENBQUMsSUFBSSxVQUFVLEdBQUcsUUFBUSxFQUFFO1FBQzNELE1BQU0sSUFBSSw2QkFBb0IsQ0FBQyx1Q0FBdUMsQ0FB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LElBQUksNkJBQW9CLENBQUMsd0JBQXdCLENBQUMsQ0FBQztLQUMxRDtBQUNILENBQUM7QUFQRCw0REFPQztBQUVELFNBQWdCLHlCQUF5QixDQUFDLE1BQWM7SUFDdEQsSUFBSSxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQ2QsTUFBTSxJQUFJLDZCQUFvQixDQUFDLG9DQUFvQyxDQUFDLENBQUM7S0FDdEU7QUFDSCxDQUFDO0FBSkQsOERBSUM7QUFFRCxTQUFnQix3QkFBd0IsQ0FBQyxLQUFhO0lBQ3BELElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtRQUNiLE1BQU0sSUFBSSw2QkFBb0IsQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO0tBQ3pFO0FBQ0gsQ0FBQztBQUpELDREQUlDO0FBRUQsU0FBZ0IsbUNBQW1DLENBQUMsV0FBbUI7SUFDckUsSUFBSSxXQUFXLEdBQUcsQ0FBQyxFQUFFO1FBQ25CLE1BQU0sSUFBSSw2QkFBb0IsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0tBQ3JFO0FBQ0gsQ0FBQztBQUpELGtGQUlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbnZhbGlkQXJndW1lbnRFcnJvcn0gZnJvbSAnLi4vLi4vZXJyb3JzJztcbmltcG9ydCB7RXhwaXJlc0lufSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQge2RlY29kZUZyb21CYXNlNjQsIGVuY29kZVRvQmFzZTY0fSBmcm9tICcuL3N0cmluZyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUNhY2hlTmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgaWYgKGlzRW1wdHkobmFtZSkpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ2NhY2hlIG5hbWUgbXVzdCBub3QgYmUgZW1wdHknKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVDYWNoZUtleU9yUHJlZml4KG5hbWU6IHN0cmluZykge1xuICBpZiAoaXNFbXB0eShuYW1lKSkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignY2FjaGUga2V5IG9yIGtleSBwcmVmaXggbXVzdCBub3QgYmUgZW1wdHknKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTZXROYW1lKG5hbWU6IHN0cmluZykge1xuICBpZiAoaXNFbXB0eShuYW1lKSkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignc2V0IG5hbWUgbXVzdCBub3QgYmUgZW1wdHknKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTb3J0ZWRTZXROYW1lKG5hbWU6IHN0cmluZykge1xuICBpZiAoaXNFbXB0eShuYW1lKSkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignc29ydGVkIHNldCBuYW1lIG11c3Qgbm90IGJlIGVtcHR5Jyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlU29ydGVkU2V0UmFua3Moc3RhcnRfcmFuazogbnVtYmVyLCBlbmRfcmFuaz86IG51bWJlcikge1xuICBpZiAoZW5kX3JhbmsgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoc3RhcnRfcmFuayA+IDAgJiYgZW5kX3JhbmsgPiAwICYmIHN0YXJ0X3JhbmsgPiBlbmRfcmFuaykge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignc3RhcnQgcmFuayBtdXN0IGJlIGxlc3MgdGhhbiBlbmQgcmFuaycpO1xuICB9XG4gIGlmIChzdGFydF9yYW5rIDwgMCAmJiBlbmRfcmFuayA8IDAgJiYgc3RhcnRfcmFuayA+PSBlbmRfcmFuaykge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICduZWdhdGl2ZSBzdGFydCByYW5rIG11c3QgYmUgbGVzcyB0aGFuIG5lZ2F0aXZlIGVuZCByYW5rJ1xuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlU29ydGVkU2V0U2NvcmVzKG1pblNjb3JlPzogbnVtYmVyLCBtYXhTY29yZT86IG51bWJlcikge1xuICBpZiAobWluU2NvcmUgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICBpZiAobWF4U2NvcmUgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICBpZiAobWluU2NvcmUgPiBtYXhTY29yZSkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICdtaW5TY29yZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byBtYXhTY29yZSdcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVNvcnRlZFNldE9mZnNldChvZmZzZXQ6IG51bWJlcikge1xuICBpZiAob2Zmc2V0IDwgMCkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignb2Zmc2V0IG11c3QgYmUgbm9uLW5lZ2F0aXZlICg+PSAwKScpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVNvcnRlZFNldENvdW50KGNvdW50OiBudW1iZXIpIHtcbiAgaWYgKGNvdW50IDwgMSkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignY291bnQgbXVzdCBiZSBzdHJpY3RseSBwb3NpdGl2ZSAoPiAwKScpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZURpY3Rpb25hcnlOYW1lKG5hbWU6IHN0cmluZykge1xuICBpZiAoaXNFbXB0eShuYW1lKSkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignZGljdGlvbmFyeSBuYW1lIG11c3Qgbm90IGJlIGVtcHR5Jyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlTGlzdE5hbWUobmFtZTogc3RyaW5nKSB7XG4gIGlmIChpc0VtcHR5KG5hbWUpKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdsaXN0IG5hbWUgbXVzdCBub3QgYmUgZW1wdHknKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVMaXN0U2xpY2VTdGFydEVuZChcbiAgc3RhcnRJbmRleD86IG51bWJlcixcbiAgZW5kSW5kZXg/OiBudW1iZXJcbikge1xuICBpZiAoc3RhcnRJbmRleCA9PT0gdW5kZWZpbmVkIHx8IGVuZEluZGV4ID09PSB1bmRlZmluZWQpIHJldHVybjtcbiAgLy8gY2FuJ3QgdmFsaWRhdGUgYm91bmRzIGZvciBzdGFydCBhbmQgaW5kZXggb2YgZWl0aGVyIG9yIGFyZSBuZWdhdGl2ZSB3aXRob3V0IGxpc3QgbGVuZ3RoXG4gIGlmIChzdGFydEluZGV4ID4gMCB8fCBlbmRJbmRleCA8IDApIHJldHVybjtcbiAgaWYgKGVuZEluZGV4IDw9IHN0YXJ0SW5kZXgpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoXG4gICAgICAnZW5kSW5kZXggKGV4Y2x1c2l2ZSkgbXVzdCBiZSBsYXJnZXIgdGhhbiBzdGFydEluZGV4IChpbmNsdXNpdmUpJ1xuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlVG9waWNOYW1lKG5hbWU6IHN0cmluZykge1xuICBpZiAoaXNFbXB0eShuYW1lKSkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigndG9waWMgbmFtZSBtdXN0IG5vdCBiZSBlbXB0eScpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVdlYmhvb2tOYW1lKG5hbWU6IHN0cmluZykge1xuICBpZiAoaXNFbXB0eShuYW1lKSkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignd2ViaG9vayBuYW1lIG11c3Qgbm90IGJlIGVtcHR5Jyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlSW5kZXhOYW1lKG5hbWU6IHN0cmluZykge1xuICBpZiAoaXNFbXB0eShuYW1lKSkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignaW5kZXggbmFtZSBtdXN0IG5vdCBiZSBlbXB0eScpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZU51bURpbWVuc2lvbnMobnVtRGltZW5zaW9uczogbnVtYmVyKSB7XG4gIGlmIChudW1EaW1lbnNpb25zIDw9IDApIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ251bURpbWVuc2lvbnMgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVybycpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVRvcEsodG9wSzogbnVtYmVyKSB7XG4gIGlmICh0b3BLIDw9IDApIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ3RvcEsgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVybycpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVR0bE1pbnV0ZXModHRsTWludXRlczogbnVtYmVyKSB7XG4gIGlmICh0dGxNaW51dGVzIDwgMCB8fCAhTnVtYmVyLmlzU2FmZUludGVnZXIodHRsTWludXRlcykpIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ3R0bE1pbnV0ZXMgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXInKTtcbiAgfVxufVxuXG4vLyBDdXJyZW50bHkgYWNjZXB0aW5nIHR0bCBpbiBzZWNvbmRzLCBidXQgaWYgc29tZW9uZSByZXF1ZXN0cyBzdXBwb3J0IGZvciBtaWxsaXMsXG4vLyB0aGUgdmFsaWRhdG9yIHdpbGwgbmVlZCB0byBjaGVjayBmb3IgTnVtYmVyLmlzU2FmZUludGVnZXIodHRsICogMTAwMCkuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVUdGxTZWNvbmRzKHR0bDogbnVtYmVyKSB7XG4gIGlmICh0dGwgPCAwIHx8ICFOdW1iZXIuaXNTYWZlSW50ZWdlcih0dGwpKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKFxuICAgICAgYHR0bCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciwgcmVjZWl2ZWQgJHt0dGx9YFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlVmFsaWRGb3JTZWNvbmRzKHZhbGlkRm9yU2Vjb25kczogbnVtYmVyKSB7XG4gIGlmICh2YWxpZEZvclNlY29uZHMgPCAwKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCd2YWxpZEZvclNlY29uZHMgbXVzdCBiZSBwb3NpdGl2ZScpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVRpbWVvdXQodGltZW91dDogbnVtYmVyKSB7XG4gIGlmICh0aW1lb3V0IDwgMCkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcigndGltZW91dCBtdXN0IGJlIHBvc2l0aXZlJyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlRGlzcG9zYWJsZVRva2VuRXhwaXJ5KGV4cGlyZXNJbjogRXhwaXJlc0luKSB7XG4gIGlmICghZXhwaXJlc0luLmRvZXNFeHBpcmUoKSkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignZGlzcG9zYWJsZSB0b2tlbnMgbXVzdCBoYXZlIGFuIGV4cGlyeScpO1xuICB9XG4gIGlmIChleHBpcmVzSW4uc2Vjb25kcygpIDwgMCkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignZGlzcG9zYWJsZSB0b2tlbiBleHBpcnkgbXVzdCBiZSBwb3NpdGl2ZScpO1xuICB9XG4gIGlmIChleHBpcmVzSW4uc2Vjb25kcygpID4gNjAgKiA2MCkge1xuICAgIC8vIDYwIHNlY29uZHMgKiA2MCBtaW51dGVzXG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKFxuICAgICAgJ2Rpc3Bvc2FibGUgdG9rZW5zIG11c3QgZXhwaXJlIHdpdGhpbiAxIGhvdXInXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVEaXNwb3NhYmxlVG9rZW5Ub2tlbklEKHRva2VuSWQ6IHN0cmluZykge1xuICBpZiAodG9rZW5JZC5sZW5ndGggPiA2NCkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICdUb2tlbklEIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDY0IGNoYXJhY3RlcnMuJ1xuICAgICk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNFbXB0eShzdHI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gIXN0ci50cmltKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Jhc2U2NChzdHI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIHJldHVybiBlbmNvZGVUb0Jhc2U2NChkZWNvZGVGcm9tQmFzZTY0KHN0cikpID09PSBzdHI7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlTGVhZGVyYm9hcmROYW1lKG5hbWU6IHN0cmluZykge1xuICBpZiAoaXNFbXB0eShuYW1lKSkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignbGVhZGVyYm9hcmQgbmFtZSBtdXN0IG5vdCBiZSBlbXB0eScpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUxlYWRlcmJvYXJkUmFua3Moc3RhcnRfcmFuazogbnVtYmVyLCBlbmRfcmFuazogbnVtYmVyKSB7XG4gIGlmIChzdGFydF9yYW5rID4gMCAmJiBlbmRfcmFuayA+IDAgJiYgc3RhcnRfcmFuayA+PSBlbmRfcmFuaykge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignc3RhcnQgcmFuayBtdXN0IGJlIGxlc3MgdGhhbiBlbmQgcmFuaycpO1xuICB9XG4gIGlmIChzdGFydF9yYW5rIDwgMCB8fCBlbmRfcmFuayA8IDApIHtcbiAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXJyb3IoJ3JhbmtzIG11c3QgYmUgcG9zaXRpdmUnKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVMZWFkZXJib2FyZE9mZnNldChvZmZzZXQ6IG51bWJlcikge1xuICBpZiAob2Zmc2V0IDwgMCkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignb2Zmc2V0IG11c3QgYmUgbm9uLW5lZ2F0aXZlICg+PSAwKScpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUxlYWRlcmJvYXJkQ291bnQoY291bnQ6IG51bWJlcikge1xuICBpZiAoY291bnQgPCAxKSB7XG4gICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKCdjb3VudCBtdXN0IGJlIHN0cmljdGx5IHBvc2l0aXZlICg+IDApJyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlTGVhZGVyYm9hcmROdW1iZXJPZkVsZW1lbnRzKG51bUVsZW1lbnRzOiBudW1iZXIpIHtcbiAgaWYgKG51bUVsZW1lbnRzIDwgMSkge1xuICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFcnJvcignbXVzdCBwcm92aWRlIGF0IGxlYXN0IG9uZSBlbGVtZW50Jyk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,116 @@
1
+ import { SdkError } from '../../errors';
2
+ import { ResponseBase } from './response-base';
3
+ import { CacheGet } from '../..';
4
+ /**
5
+ * Parent response type for a cache get batch request. The
6
+ * response object is resolved to a type-safe object of one of
7
+ * the following subtypes:
8
+ *
9
+ * - {Success}
10
+ * - {Error}
11
+ *
12
+ * `instanceof` type guards can be used to operate on the appropriate subtype.
13
+ * @example
14
+ * For example:
15
+ * ```
16
+ * if (response instanceof BatchGet.Error) {
17
+ * // Handle error as appropriate. The compiler will smart-cast `response` to type
18
+ * // `BatchGet.Error` in this block, so you will have access to the properties
19
+ * // of the Error class; e.g. `response.errorCode()`.
20
+ * }
21
+ * ```
22
+ */
23
+ export declare abstract class Response extends ResponseBase {
24
+ values(): Record<string, string> | undefined;
25
+ results(): CacheGet.Response[] | undefined;
26
+ }
27
+ declare class _Success extends Response {
28
+ private readonly items;
29
+ private readonly keys;
30
+ constructor(items: CacheGet.Response[], keys: Uint8Array[]);
31
+ /**
32
+ * Returns the status for each request in the batch as a list of CacheGet.Response objects.
33
+ * @returns {CacheGet.Response[]}
34
+ */
35
+ results(): CacheGet.Response[];
36
+ /**
37
+ * Returns the data as a Record whose keys and values are utf-8 strings, decoded from the underlying byte arrays.
38
+ * This can be used in most places where an Object is desired. This is a convenience alias for
39
+ * {valueRecordStringString}.
40
+ * @returns {Record<string, string>}
41
+ */
42
+ values(): Record<string, string>;
43
+ /**
44
+ * Returns the data as a Record whose keys and values are utf-8 strings, decoded from the underlying byte arrays.
45
+ * This can be used in most places where an Object is desired. This is a convenience alias for
46
+ * {valueRecordStringString}.
47
+ * @returns {Record<string, string>}
48
+ */
49
+ valuesRecord(): Record<string, string>;
50
+ /**
51
+ * Returns the data as a Record whose keys and values are utf-8 strings, decoded from the underlying byte arrays.
52
+ * This can be used in most places where an Object is desired.
53
+ * @returns {Record<string, string>}
54
+ */
55
+ valuesRecordStringString(): Record<string, string>;
56
+ /**
57
+ * Returns the data as a Record whose keys are utf-8 strings, decoded from the underlying byte array, and whose
58
+ * values are byte arrays. This can be used in most places where an Object is desired.
59
+ * @returns {Record<string, Uint8Array>}
60
+ */
61
+ valuesRecordStringUint8Array(): Record<string, Uint8Array>;
62
+ /**
63
+ * Returns the data as a Map whose keys and values are utf-8 strings, decoded from the underlying byte arrays.
64
+ * This is a convenience alias for {valueMapStringString}.
65
+ * @returns {Map<string, string>}
66
+ */
67
+ valuesMap(): Map<string, string>;
68
+ /**
69
+ * Returns the data as a Map whose keys and values are utf-8 strings, decoded from the underlying byte arrays.
70
+ * @returns {Map<string, string>}
71
+ */
72
+ valuesMapStringString(): Map<string, string>;
73
+ /**
74
+ * Returns the data as a Map whose keys and values are byte arrays.
75
+ * @returns {Map<Uint8Array, Uint8Array>}
76
+ */
77
+ valuesMapUint8ArrayUint8Array(): Map<Uint8Array, Uint8Array>;
78
+ toString(): string;
79
+ }
80
+ declare const Success_base: {
81
+ new (...args: any[]): {
82
+ readonly is_success: boolean;
83
+ };
84
+ } & typeof _Success;
85
+ /**
86
+ * Indicates that the requested data was successfully retrieved from the cache. Provides
87
+ * `value*` accessors to retrieve the data in the appropriate format.
88
+ */
89
+ export declare class Success extends Success_base {
90
+ }
91
+ declare class _Error extends Response {
92
+ protected _innerException: SdkError;
93
+ constructor(_innerException: SdkError);
94
+ }
95
+ declare const Error_base: {
96
+ new (...args: any[]): {
97
+ _innerException: SdkError;
98
+ message(): string;
99
+ innerException(): SdkError;
100
+ errorCode(): import("../..").MomentoErrorCode;
101
+ toString(): string;
102
+ };
103
+ } & typeof _Error;
104
+ /**
105
+ * Indicates that an error occurred during the cache get request.
106
+ *
107
+ * This response object includes the following fields that you can use to determine
108
+ * how you would like to handle the error:
109
+ *
110
+ * - `errorCode()` - a unique Momento error code indicating the type of error that occurred.
111
+ * - `message()` - a human-readable description of the error
112
+ * - `innerException()` - the original error that caused the failure; can be re-thrown.
113
+ */
114
+ export declare class Error extends Error_base {
115
+ }
116
+ export {};