openclaw-productboard 1.0.20 → 1.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -77,12 +77,18 @@ export class ProductBoardClient {
77
77
  url: endpoint,
78
78
  params: { ...cleanParams, pageLimit, pageCursor: cursor },
79
79
  });
80
- results.push(...response.data);
80
+ // Handle both { data: [...] } and direct array responses
81
+ const items = Array.isArray(response) ? response : response?.data;
82
+ if (items && Array.isArray(items)) {
83
+ results.push(...items);
84
+ }
81
85
  if (maxItems && results.length >= maxItems) {
82
86
  return results.slice(0, maxItems);
83
87
  }
84
- cursor = response.links?.next
85
- ? new URL(response.links.next).searchParams.get('pageCursor') || undefined
88
+ // Extract cursor for next page (only for object responses with links)
89
+ const links = !Array.isArray(response) ? response?.links : undefined;
90
+ cursor = links?.next
91
+ ? new URL(links.next).searchParams.get('pageCursor') || undefined
86
92
  : undefined;
87
93
  } while (cursor);
88
94
  return results;
@@ -387,4 +393,4 @@ export class ProductBoardClient {
387
393
  return this.rateLimiter.stats();
388
394
  }
389
395
  }
390
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvYXBpLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sS0FBd0QsTUFBTSxPQUFPLENBQUM7QUFxQjdFLE9BQU8sRUFDTCxhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLGFBQWEsRUFDYixpQkFBaUIsR0FDbEIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RCxPQUFPLEVBQWUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFdkUsTUFBTSxnQkFBZ0IsR0FBRyw4QkFBOEIsQ0FBQztBQUN4RCxNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFFdEIsTUFBTSxPQUFPLGtCQUFrQjtJQUNyQixNQUFNLENBQWdCO0lBQ3RCLEtBQUssQ0FBVztJQUNoQixXQUFXLENBQWM7SUFDekIsT0FBTyxDQUFTO0lBRXhCLFlBQVksTUFBb0I7UUFDOUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsVUFBVSxJQUFJLGdCQUFnQixDQUFDO1FBRXJELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUN6QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsT0FBTyxFQUFFO2dCQUNQLGVBQWUsRUFBRSxVQUFVLE1BQU0sQ0FBQyxRQUFRLEVBQUU7Z0JBQzVDLGNBQWMsRUFBRSxrQkFBa0I7Z0JBQ2xDLFdBQVcsRUFBRSxHQUFHO2FBQ2pCO1lBQ0QsT0FBTyxFQUFFLEtBQUs7U0FDZixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztZQUNwQixHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsZUFBZSxJQUFJLEdBQUcsQ0FBQyxHQUFHLElBQUk7U0FDNUMsQ0FBQyxDQUFDO1FB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QUFDLENBQUMsS0FBSztvQkFDZCxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQztvQkFDckMsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLO2lCQUNmLENBQUMsQ0FBQyxDQUNKLENBQUM7WUFDSixDQUFDO1lBRUQsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCwrQ0FBK0M7SUFDL0Msa0JBQWtCO0lBQ2xCLCtDQUErQztJQUUvQzs7T0FFRztJQUNILEtBQUssQ0FBQyxhQUFhO1FBQ2pCLElBQUksQ0FBQztZQUNILE1BQU0sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzVCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILFVBQVU7UUFDUixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsbUJBQW1CO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFByb2R1Y3RCb2FyZCBBUEkgQ2xpZW50XG4gKi9cblxuaW1wb3J0IGF4aW9zLCB7IEF4aW9zSW5zdGFuY2UsIEF4aW9zRXJyb3IsIEF4aW9zUmVxdWVzdENvbmZpZyB9IGZyb20gJ2F4aW9zJztcbmltcG9ydCB7XG4gIEZlYXR1cmUsXG4gIFByb2R1Y3QsXG4gIENvbXBvbmVudCxcbiAgTm90ZSxcbiAgVXNlcixcbiAgQ3VycmVudFVzZXIsXG4gIFNlYXJjaFJlc3VsdCxcbiAgUGFnaW5hdGVkUmVzcG9uc2UsXG4gIENyZWF0ZUZlYXR1cmVQYXJhbXMsXG4gIFVwZGF0ZUZlYXR1cmVQYXJhbXMsXG4gIExpc3RGZWF0dXJlc1BhcmFtcyxcbiAgTGlzdFByb2R1Y3RzUGFyYW1zLFxuICBDcmVhdGVOb3RlUGFyYW1zLFxuICBMaXN0Tm90ZXNQYXJhbXMsXG4gIExpc3RVc2Vyc1BhcmFtcyxcbiAgU2VhcmNoUGFyYW1zLFxuICBQbHVnaW5Db25maWcsXG4gIFByb2R1Y3RIaWVyYXJjaHksXG59IGZyb20gJy4vdHlwZXMuanMnO1xuaW1wb3J0IHtcbiAgcGFyc2VBcGlFcnJvcixcbiAgaXNSZXRyeWFibGVFcnJvcixcbiAgZ2V0UmV0cnlEZWxheSxcbiAgUHJvZHVjdEJvYXJkRXJyb3IsXG59IGZyb20gJy4vZXJyb3JzLmpzJztcbmltcG9ydCB7IEFwaUNhY2hlLCBnZXRDYWNoZSB9IGZyb20gJy4uL3V0aWxzL2NhY2hlLmpzJztcbmltcG9ydCB7IFJhdGVMaW1pdGVyLCBnZXRSYXRlTGltaXRlciB9IGZyb20gJy4uL3V0aWxzL3JhdGUtbGltaXRlci5qcyc7XG5cbmNvbnN0IERFRkFVTFRfQkFTRV9VUkwgPSAnaHR0cHM6Ly9hcGkucHJvZHVjdGJvYXJkLmNvbSc7XG5jb25zdCBNQVhfUkVUUklFUyA9IDM7XG5cbmV4cG9ydCBjbGFzcyBQcm9kdWN0Qm9hcmRDbGllbnQge1xuICBwcml2YXRlIGNsaWVudDogQXhpb3NJbnN0YW5jZTtcbiAgcHJpdmF0ZSBjYWNoZTogQXBpQ2FjaGU7XG4gIHByaXZhdGUgcmF0ZUxpbWl0ZXI6IFJhdGVMaW1pdGVyO1xuICBwcml2YXRlIGJhc2VVcmw6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IFBsdWdpbkNvbmZpZykge1xuICAgIHRoaXMuYmFzZVVybCA9IGNvbmZpZy5hcGlCYXNlVXJsIHx8IERFRkFVTFRfQkFTRV9VUkw7XG5cbiAgICB0aGlzLmNsaWVudCA9IGF4aW9zLmNyZWF0ZSh7XG4gICAgICBiYXNlVVJMOiB0aGlzLmJhc2VVcmwsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdBdXRob3JpemF0aW9uJzogYEJlYXJlciAke2NvbmZpZy5hcGlUb2tlbn1gLFxuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAnWC1WZXJzaW9uJzogJzEnLFxuICAgICAgfSxcbiAgICAgIHRpbWVvdXQ6IDMwMDAwLFxuICAgIH0pO1xuXG4gICAgdGhpcy5jYWNoZSA9IGdldENhY2hlKHtcbiAgICAgIHR0bDogKGNvbmZpZy5jYWNoZVR0bFNlY29uZHMgfHwgMzAwKSAqIDEwMDAsXG4gICAgfSk7XG5cbiAgICB0aGlzLnJhdGVMaW1pdGVyID0gZ2V0UmF0ZUxpbWl0ZXIoe1xuICAgICAgbWF4VG9rZW5zOiBjb25maWcucmF0ZUxpbWl0UGVyTWludXRlIHx8IDEwMCxcbiAgICB9KTtcblxuICAgIHRoaXMuc2V0dXBJbnRlcmNlcHRvcnMoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBJbnRlcmNlcHRvcnMoKTogdm9pZCB7XG4gICAgLy8gUmVzcG9uc2UgaW50ZXJjZXB0b3IgZm9yIGVycm9yIGhhbmRsaW5nXG4gICAgdGhpcy5jbGllbnQuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLnVzZShcbiAgICAgIChyZXNwb25zZSkgPT4gcmVzcG9uc2UsXG4gICAgICAoZXJyb3I6IEF4aW9zRXJyb3IpID0+IHtcbiAgICAgICAgaWYgKGVycm9yLnJlc3BvbnNlKSB7XG4gICAgICAgICAgY29uc3QgeyBzdGF0dXMsIGRhdGEsIGhlYWRlcnMgfSA9IGVycm9yLnJlc3BvbnNlO1xuICAgICAgICAgIHRocm93IHBhcnNlQXBpRXJyb3IoXG4gICAgICAgICAgICBzdGF0dXMsXG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgaGVhZGVyc1sncmV0cnktYWZ0ZXInXSBhcyBzdHJpbmcgfCB1bmRlZmluZWRcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBQcm9kdWN0Qm9hcmRFcnJvcihcbiAgICAgICAgICBlcnJvci5tZXNzYWdlIHx8ICdOZXR3b3JrIGVycm9yJyxcbiAgICAgICAgICAnTkVUV09SS19FUlJPUicsXG4gICAgICAgICAgMFxuICAgICAgICApO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZSBhIHJlcXVlc3Qgd2l0aCByZXRyeSBsb2dpYyBhbmQgcmF0ZSBsaW1pdGluZ1xuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyByZXF1ZXN0PFQ+KFxuICAgIGNvbmZpZzogQXhpb3NSZXF1ZXN0Q29uZmlnLFxuICAgIHJldHJ5Q291bnQgPSAwXG4gICk6IFByb21pc2U8VD4ge1xuICAgIGF3YWl0IHRoaXMucmF0ZUxpbWl0ZXIuYWNxdWlyZSgpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jbGllbnQucmVxdWVzdDxUPihjb25maWcpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChpc1JldHJ5YWJsZUVycm9yKGVycm9yKSAmJiByZXRyeUNvdW50IDwgTUFYX1JFVFJJRVMpIHtcbiAgICAgICAgY29uc3QgZGVsYXkgPSBnZXRSZXRyeURlbGF5KGVycm9yLCByZXRyeUNvdW50KTtcbiAgICAgICAgYXdhaXQgdGhpcy5zbGVlcChkZWxheSk7XG4gICAgICAgIHJldHVybiB0aGlzLnJlcXVlc3Q8VD4oY29uZmlnLCByZXRyeUNvdW50ICsgMSk7XG4gICAgICB9XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNsZWVwKG1zOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYWdpbmF0ZSB0aHJvdWdoIGFsbCByZXN1bHRzXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHBhZ2luYXRlPFQ+KFxuICAgIGVuZHBvaW50OiBzdHJpbmcsXG4gICAgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9LFxuICAgIG1heEl0ZW1zPzogbnVtYmVyXG4gICk6IFByb21pc2U8VFtdPiB7XG4gICAgY29uc3QgcmVzdWx0czogVFtdID0gW107XG4gICAgbGV0IGN1cnNvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IHBhZ2VMaW1pdCA9IE1hdGgubWluKG1heEl0ZW1zIHx8IDEwMCwgMTAwKTtcblxuICAgIC8vIFJlbW92ZSAnbGltaXQnIGZyb20gcGFyYW1zIGFzIFByb2R1Y3RCb2FyZCB1c2VzICdwYWdlTGltaXQnXG4gICAgY29uc3QgeyBsaW1pdDogX2lnbm9yZWQsIC4uLmNsZWFuUGFyYW1zIH0gPSBwYXJhbXM7XG5cbiAgICBkbyB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucmVxdWVzdDxQYWdpbmF0ZWRSZXNwb25zZTxUPj4oe1xuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICB1cmw6IGVuZHBvaW50LFxuICAgICAgICBwYXJhbXM6IHsgLi4uY2xlYW5QYXJhbXMsIHBhZ2VMaW1pdCwgcGFnZUN1cnNvcjogY3Vyc29yIH0sXG4gICAgICB9KTtcblxuICAgICAgcmVzdWx0cy5wdXNoKC4uLnJlc3BvbnNlLmRhdGEpO1xuXG4gICAgICBpZiAobWF4SXRlbXMgJiYgcmVzdWx0cy5sZW5ndGggPj0gbWF4SXRlbXMpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdHMuc2xpY2UoMCwgbWF4SXRlbXMpO1xuICAgICAgfVxuXG4gICAgICBjdXJzb3IgPSByZXNwb25zZS5saW5rcz8ubmV4dFxuICAgICAgICA/IG5ldyBVUkwocmVzcG9uc2UubGlua3MubmV4dCkuc2VhcmNoUGFyYW1zLmdldCgncGFnZUN1cnNvcicpIHx8IHVuZGVmaW5lZFxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICB9IHdoaWxlIChjdXJzb3IpO1xuXG4gICAgcmV0dXJuIHJlc3VsdHM7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBGZWF0dXJlIE1ldGhvZHNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICBhc3luYyBjcmVhdGVGZWF0dXJlKHBhcmFtczogQ3JlYXRlRmVhdHVyZVBhcmFtcyk6IFByb21pc2U8RmVhdHVyZT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucmVxdWVzdDx7IGRhdGE6IEZlYXR1cmUgfT4oe1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICB1cmw6ICcvZmVhdHVyZXMnLFxuICAgICAgZGF0YTogeyBkYXRhOiBwYXJhbXMgfSxcbiAgICB9KTtcblxuICAgIC8vIEludmFsaWRhdGUgZmVhdHVyZSBsaXN0IGNhY2hlc1xuICAgIHRoaXMuY2FjaGUuaW52YWxpZGF0ZVBhdHRlcm4oJ3BiX2ZlYXR1cmVfbGlzdDonKTtcbiAgICB0aGlzLmNhY2hlLmludmFsaWRhdGVQYXR0ZXJuKCdwYl9mZWF0dXJlX3NlYXJjaDonKTtcblxuICAgIHJldHVybiByZXN1bHQuZGF0YTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RGZWF0dXJlcyhwYXJhbXM6IExpc3RGZWF0dXJlc1BhcmFtcyA9IHt9KTogUHJvbWlzZTxGZWF0dXJlW10+IHtcbiAgICBjb25zdCBjYWNoZUtleSA9IEFwaUNhY2hlLmdlbmVyYXRlS2V5KCdwYl9mZWF0dXJlX2xpc3QnLCBwYXJhbXMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pO1xuXG4gICAgcmV0dXJuIHRoaXMuY2FjaGUud3JhcChjYWNoZUtleSwgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcXVlcnlQYXJhbXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cbiAgICAgIGlmIChwYXJhbXMucHJvZHVjdElkKSBxdWVyeVBhcmFtc1sncHJvZHVjdC5pZCddID0gcGFyYW1zLnByb2R1Y3RJZDtcbiAgICAgIGlmIChwYXJhbXMuY29tcG9uZW50SWQpIHF1ZXJ5UGFyYW1zWydjb21wb25lbnQuaWQnXSA9IHBhcmFtcy5jb21wb25lbnRJZDtcbiAgICAgIGlmIChwYXJhbXMuc3RhdHVzKSBxdWVyeVBhcmFtcy5zdGF0dXMgPSBwYXJhbXMuc3RhdHVzO1xuICAgICAgaWYgKHBhcmFtcy5vd25lcklkKSBxdWVyeVBhcmFtc1snb3duZXIuaWQnXSA9IHBhcmFtcy5vd25lcklkO1xuXG4gICAgICByZXR1cm4gdGhpcy5wYWdpbmF0ZTxGZWF0dXJlPignL2ZlYXR1cmVzJywgcXVlcnlQYXJhbXMsIHBhcmFtcy5saW1pdCk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBnZXRGZWF0dXJlKGlkOiBzdHJpbmcpOiBQcm9taXNlPEZlYXR1cmU+IHtcbiAgICBjb25zdCBjYWNoZUtleSA9IEFwaUNhY2hlLmdlbmVyYXRlS2V5KCdwYl9mZWF0dXJlX2dldCcsIHsgaWQgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5jYWNoZS53cmFwKGNhY2hlS2V5LCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJlcXVlc3Q8eyBkYXRhOiBGZWF0dXJlIH0+KHtcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgdXJsOiBgL2ZlYXR1cmVzLyR7aWR9YCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdC5kYXRhO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlRmVhdHVyZShpZDogc3RyaW5nLCBwYXJhbXM6IFVwZGF0ZUZlYXR1cmVQYXJhbXMpOiBQcm9taXNlPEZlYXR1cmU+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJlcXVlc3Q8eyBkYXRhOiBGZWF0dXJlIH0+KHtcbiAgICAgIG1ldGhvZDogJ1BBVENIJyxcbiAgICAgIHVybDogYC9mZWF0dXJlcy8ke2lkfWAsXG4gICAgICBkYXRhOiB7IGRhdGE6IHBhcmFtcyB9LFxuICAgIH0pO1xuXG4gICAgLy8gSW52YWxpZGF0ZSBjYWNoZXNcbiAgICB0aGlzLmNhY2hlLmRlbGV0ZShBcGlDYWNoZS5nZW5lcmF0ZUtleSgncGJfZmVhdHVyZV9nZXQnLCB7IGlkIH0pKTtcbiAgICB0aGlzLmNhY2hlLmludmFsaWRhdGVQYXR0ZXJuKCdwYl9mZWF0dXJlX2xpc3Q6Jyk7XG4gICAgdGhpcy5jYWNoZS5pbnZhbGlkYXRlUGF0dGVybigncGJfZmVhdHVyZV9zZWFyY2g6Jyk7XG5cbiAgICByZXR1cm4gcmVzdWx0LmRhdGE7XG4gIH1cblxuICBhc3luYyBkZWxldGVGZWF0dXJlKGlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnJlcXVlc3Q8dm9pZD4oe1xuICAgICAgbWV0aG9kOiAnREVMRVRFJyxcbiAgICAgIHVybDogYC9mZWF0dXJlcy8ke2lkfWAsXG4gICAgfSk7XG5cbiAgICAvLyBJbnZhbGlkYXRlIGNhY2hlc1xuICAgIHRoaXMuY2FjaGUuZGVsZXRlKEFwaUNhY2hlLmdlbmVyYXRlS2V5KCdwYl9mZWF0dXJlX2dldCcsIHsgaWQgfSkpO1xuICAgIHRoaXMuY2FjaGUuaW52YWxpZGF0ZVBhdHRlcm4oJ3BiX2ZlYXR1cmVfbGlzdDonKTtcbiAgICB0aGlzLmNhY2hlLmludmFsaWRhdGVQYXR0ZXJuKCdwYl9mZWF0dXJlX3NlYXJjaDonKTtcbiAgfVxuXG4gIGFzeW5jIHNlYXJjaEZlYXR1cmVzKHF1ZXJ5OiBzdHJpbmcsIGxpbWl0ID0gNTApOiBQcm9taXNlPEZlYXR1cmVbXT4ge1xuICAgIGlmICghcXVlcnkpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCBjYWNoZUtleSA9IEFwaUNhY2hlLmdlbmVyYXRlS2V5KCdwYl9mZWF0dXJlX3NlYXJjaCcsIHsgcXVlcnksIGxpbWl0IH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuY2FjaGUud3JhcChjYWNoZUtleSwgYXN5bmMgKCkgPT4ge1xuICAgICAgLy8gUHJvZHVjdEJvYXJkIGRvZXNuJ3QgaGF2ZSBhIGRlZGljYXRlZCBzZWFyY2ggZW5kcG9pbnQgZm9yIGZlYXR1cmVzXG4gICAgICAvLyBXZSdsbCBsaXN0IGFsbCBhbmQgZmlsdGVyIGNsaWVudC1zaWRlXG4gICAgICBjb25zdCBmZWF0dXJlcyA9IGF3YWl0IHRoaXMubGlzdEZlYXR1cmVzKHsgbGltaXQ6IDUwMCB9KTtcbiAgICAgIGNvbnN0IHF1ZXJ5TG93ZXIgPSBxdWVyeS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICByZXR1cm4gZmVhdHVyZXNcbiAgICAgICAgLmZpbHRlcigoZikgPT4ge1xuICAgICAgICAgIGNvbnN0IG5hbWVNYXRjaCA9IGYubmFtZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxdWVyeUxvd2VyKTtcbiAgICAgICAgICBjb25zdCBkZXNjTWF0Y2ggPSBmLmRlc2NyaXB0aW9uPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHF1ZXJ5TG93ZXIpO1xuICAgICAgICAgIHJldHVybiBuYW1lTWF0Y2ggfHwgZGVzY01hdGNoO1xuICAgICAgICB9KVxuICAgICAgICAuc2xpY2UoMCwgbGltaXQpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUHJvZHVjdCBNZXRob2RzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgYXN5bmMgbGlzdFByb2R1Y3RzKHBhcmFtczogTGlzdFByb2R1Y3RzUGFyYW1zID0ge30pOiBQcm9taXNlPFByb2R1Y3RbXT4ge1xuICAgIGNvbnN0IGNhY2hlS2V5ID0gQXBpQ2FjaGUuZ2VuZXJhdGVLZXkoJ3BiX3Byb2R1Y3RfbGlzdCcsIHBhcmFtcyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik7XG5cbiAgICByZXR1cm4gdGhpcy5jYWNoZS53cmFwKGNhY2hlS2V5LCBhc3luYyAoKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5wYWdpbmF0ZTxQcm9kdWN0PignL3Byb2R1Y3RzJywge30sIHBhcmFtcy5saW1pdCk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBnZXRQcm9kdWN0KGlkOiBzdHJpbmcpOiBQcm9taXNlPFByb2R1Y3Q+IHtcbiAgICBjb25zdCBjYWNoZUtleSA9IEFwaUNhY2hlLmdlbmVyYXRlS2V5KCdwYl9wcm9kdWN0X2dldCcsIHsgaWQgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5jYWNoZS53cmFwKGNhY2hlS2V5LCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJlcXVlc3Q8eyBkYXRhOiBQcm9kdWN0IH0+KHtcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgdXJsOiBgL3Byb2R1Y3RzLyR7aWR9YCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlc3VsdC5kYXRhO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgbGlzdENvbXBvbmVudHMocGFyYW1zOiB7IHByb2R1Y3RJZD86IHN0cmluZzsgbGltaXQ/OiBudW1iZXIgfSA9IHt9KTogUHJvbWlzZTxDb21wb25lbnRbXT4ge1xuICAgIGNvbnN0IGNhY2hlS2V5ID0gQXBpQ2FjaGUuZ2VuZXJhdGVLZXkoJ3BiX2NvbXBvbmVudF9saXN0JywgcGFyYW1zIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KTtcblxuICAgIHJldHVybiB0aGlzLmNhY2hlLndyYXAoY2FjaGVLZXksIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICAgICAgaWYgKHBhcmFtcy5wcm9kdWN0SWQpIHF1ZXJ5UGFyYW1zWydwcm9kdWN0LmlkJ10gPSBwYXJhbXMucHJvZHVjdElkO1xuXG4gICAgICByZXR1cm4gdGhpcy5wYWdpbmF0ZTxDb21wb25lbnQ+KCcvY29tcG9uZW50cycsIHF1ZXJ5UGFyYW1zLCBwYXJhbXMubGltaXQpO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZ2V0UHJvZHVjdEhpZXJhcmNoeSgpOiBQcm9taXNlPFByb2R1Y3RIaWVyYXJjaHk+IHtcbiAgICBjb25zdCBjYWNoZUtleSA9IEFwaUNhY2hlLmdlbmVyYXRlS2V5KCdwYl9wcm9kdWN0X2hpZXJhcmNoeScsIHt9KTtcblxuICAgIHJldHVybiB0aGlzLmNhY2hlLndyYXAoY2FjaGVLZXksIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IFtwcm9kdWN0cywgY29tcG9uZW50c10gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgIHRoaXMubGlzdFByb2R1Y3RzKHsgbGltaXQ6IDUwMCB9KSxcbiAgICAgICAgdGhpcy5saXN0Q29tcG9uZW50cyh7IGxpbWl0OiA1MDAgfSksXG4gICAgICBdKTtcblxuICAgICAgcmV0dXJuIHsgcHJvZHVjdHMsIGNvbXBvbmVudHMgfTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIE5vdGUgTWV0aG9kc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIGFzeW5jIGNyZWF0ZU5vdGUocGFyYW1zOiBDcmVhdGVOb3RlUGFyYW1zKTogUHJvbWlzZTxOb3RlPiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5yZXF1ZXN0PHsgZGF0YTogTm90ZSB9Pih7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIHVybDogJy9ub3RlcycsXG4gICAgICBkYXRhOiB7IGRhdGE6IHBhcmFtcyB9LFxuICAgIH0pO1xuXG4gICAgLy8gSW52YWxpZGF0ZSBub3RlIGxpc3QgY2FjaGVzXG4gICAgdGhpcy5jYWNoZS5pbnZhbGlkYXRlUGF0dGVybigncGJfbm90ZV9saXN0OicpO1xuXG4gICAgcmV0dXJuIHJlc3VsdC5kYXRhO1xuICB9XG5cbiAgYXN5bmMgbGlzdE5vdGVzKHBhcmFtczogTGlzdE5vdGVzUGFyYW1zID0ge30pOiBQcm9taXNlPE5vdGVbXT4ge1xuICAgIGNvbnN0IGNhY2hlS2V5ID0gQXBpQ2FjaGUuZ2VuZXJhdGVLZXkoJ3BiX25vdGVfbGlzdCcsIHBhcmFtcyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik7XG5cbiAgICByZXR1cm4gdGhpcy5jYWNoZS53cmFwKGNhY2hlS2V5LCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBxdWVyeVBhcmFtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgICAgIGlmIChwYXJhbXMuY3JlYXRlZEZyb20pIHF1ZXJ5UGFyYW1zLmNyZWF0ZWRGcm9tID0gcGFyYW1zLmNyZWF0ZWRGcm9tO1xuICAgICAgaWYgKHBhcmFtcy5jcmVhdGVkVG8pIHF1ZXJ5UGFyYW1zLmNyZWF0ZWRUbyA9IHBhcmFtcy5jcmVhdGVkVG87XG5cbiAgICAgIHJldHVybiB0aGlzLnBhZ2luYXRlPE5vdGU+KCcvbm90ZXMnLCBxdWVyeVBhcmFtcywgcGFyYW1zLmxpbWl0KTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGdldE5vdGUoaWQ6IHN0cmluZyk6IFByb21pc2U8Tm90ZT4ge1xuICAgIGNvbnN0IGNhY2hlS2V5ID0gQXBpQ2FjaGUuZ2VuZXJhdGVLZXkoJ3BiX25vdGVfZ2V0JywgeyBpZCB9KTtcblxuICAgIHJldHVybiB0aGlzLmNhY2hlLndyYXAoY2FjaGVLZXksIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucmVxdWVzdDx7IGRhdGE6IE5vdGUgfT4oe1xuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICB1cmw6IGAvbm90ZXMvJHtpZH1gLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0LmRhdGE7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBhdHRhY2hOb3RlVG9GZWF0dXJlKG5vdGVJZDogc3RyaW5nLCBmZWF0dXJlSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMucmVxdWVzdDx2b2lkPih7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIHVybDogYC9ub3Rlcy8ke25vdGVJZH0vY29ubmVjdGlvbnNgLFxuICAgICAgZGF0YToge1xuICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgZmVhdHVyZTogeyBpZDogZmVhdHVyZUlkIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gSW52YWxpZGF0ZSBjYWNoZXNcbiAgICB0aGlzLmNhY2hlLmRlbGV0ZShBcGlDYWNoZS5nZW5lcmF0ZUtleSgncGJfbm90ZV9nZXQnLCB7IGlkOiBub3RlSWQgfSkpO1xuICAgIHRoaXMuY2FjaGUuZGVsZXRlKEFwaUNhY2hlLmdlbmVyYXRlS2V5KCdwYl9mZWF0dXJlX2dldCcsIHsgaWQ6IGZlYXR1cmVJZCB9KSk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBVc2VyIE1ldGhvZHNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICBhc3luYyBnZXRDdXJyZW50VXNlcigpOiBQcm9taXNlPEN1cnJlbnRVc2VyPiB7XG4gICAgLy8gUHJvZHVjdEJvYXJkIEFQSSBkb2Vzbid0IGhhdmUgYSAvdXNlcnMvbWUgZW5kcG9pbnRcbiAgICAvLyBXZSB2YWxpZGF0ZSB0aGUgdG9rZW4gYnkgbWFraW5nIGEgc2ltcGxlIEFQSSBjYWxsIGluc3RlYWRcbiAgICBjb25zdCBjYWNoZUtleSA9IEFwaUNhY2hlLmdlbmVyYXRlS2V5KCdwYl91c2VyX2N1cnJlbnQnLCB7fSk7XG5cbiAgICByZXR1cm4gdGhpcy5jYWNoZS53cmFwKGNhY2hlS2V5LCBhc3luYyAoKSA9PiB7XG4gICAgICAvLyBWYWxpZGF0ZSB0b2tlbiBieSBmZXRjaGluZyBwcm9kdWN0cyAobGlnaHR3ZWlnaHQgY2FsbClcbiAgICAgIGF3YWl0IHRoaXMucmVxdWVzdDxQYWdpbmF0ZWRSZXNwb25zZTxQcm9kdWN0Pj4oe1xuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICB1cmw6ICcvcHJvZHVjdHMnLFxuICAgICAgICBwYXJhbXM6IHsgcGFnZUxpbWl0OiAxIH0sXG4gICAgICB9KTtcblxuICAgICAgLy8gUmV0dXJuIHBsYWNlaG9sZGVyIHNpbmNlIHdlIGNhbid0IGdldCBhY3R1YWwgdXNlciBpbmZvXG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogJ2F1dGhlbnRpY2F0ZWQnLFxuICAgICAgICBlbWFpbDogJ3Vua25vd24nLFxuICAgICAgICBuYW1lOiAnQVBJIFRva2VuIFVzZXInLFxuICAgICAgICByb2xlOiAnYXBpJyxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBsaXN0VXNlcnMocGFyYW1zOiBMaXN0VXNlcnNQYXJhbXMgPSB7fSk6IFByb21pc2U8VXNlcltdPiB7XG4gICAgY29uc3QgY2FjaGVLZXkgPSBBcGlDYWNoZS5nZW5lcmF0ZUtleSgncGJfdXNlcl9saXN0JywgcGFyYW1zIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KTtcblxuICAgIHJldHVybiB0aGlzLmNhY2hlLndyYXAoY2FjaGVLZXksIGFzeW5jICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnBhZ2luYXRlPFVzZXI+KCcvdXNlcnMnLCB7fSwgcGFyYW1zLmxpbWl0KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFNlYXJjaCBNZXRob2RzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgYXN5bmMgc2VhcmNoKHBhcmFtczogU2VhcmNoUGFyYW1zKTogUHJvbWlzZTxTZWFyY2hSZXN1bHRbXT4ge1xuICAgIGlmICghcGFyYW1zLnF1ZXJ5KSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgY2FjaGVLZXkgPSBBcGlDYWNoZS5nZW5lcmF0ZUtleSgncGJfc2VhcmNoJywgeyBxdWVyeTogcGFyYW1zLnF1ZXJ5LCB0eXBlOiBwYXJhbXMudHlwZSwgbGltaXQ6IHBhcmFtcy5saW1pdCB9KTtcblxuICAgIHJldHVybiB0aGlzLmNhY2hlLndyYXAoY2FjaGVLZXksIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdHM6IFNlYXJjaFJlc3VsdFtdID0gW107XG4gICAgICBjb25zdCBxdWVyeUxvd2VyID0gcGFyYW1zLnF1ZXJ5LnRvTG93ZXJDYXNlKCk7XG4gICAgICBjb25zdCBsaW1pdCA9IHBhcmFtcy5saW1pdCB8fCA1MDtcblxuICAgICAgLy8gU2VhcmNoIGZlYXR1cmVzXG4gICAgICBpZiAoIXBhcmFtcy50eXBlIHx8IHBhcmFtcy50eXBlID09PSAnZmVhdHVyZScpIHtcbiAgICAgICAgY29uc3QgZmVhdHVyZXMgPSBhd2FpdCB0aGlzLnNlYXJjaEZlYXR1cmVzKHF1ZXJ5TG93ZXIsIGxpbWl0KTtcbiAgICAgICAgcmVzdWx0cy5wdXNoKFxuICAgICAgICAgIC4uLmZlYXR1cmVzLm1hcCgoZikgPT4gKHtcbiAgICAgICAgICAgIHR5cGU6ICdmZWF0dXJlJyBhcyBjb25zdCxcbiAgICAgICAgICAgIGlkOiBmLmlkLFxuICAgICAgICAgICAgbmFtZTogZi5uYW1lLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGYuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBsaW5rczogZi5saW5rcyxcbiAgICAgICAgICB9KSlcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gU2VhcmNoIHByb2R1Y3RzXG4gICAgICBpZiAoIXBhcmFtcy50eXBlIHx8IHBhcmFtcy50eXBlID09PSAncHJvZHVjdCcpIHtcbiAgICAgICAgY29uc3QgcHJvZHVjdHMgPSBhd2FpdCB0aGlzLmxpc3RQcm9kdWN0cyh7IGxpbWl0OiAxMDAgfSk7XG4gICAgICAgIGNvbnN0IG1hdGNoaW5nUHJvZHVjdHMgPSBwcm9kdWN0c1xuICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAocCkgPT5cbiAgICAgICAgICAgICAgcC5uYW1lPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHF1ZXJ5TG93ZXIpIHx8XG4gICAgICAgICAgICAgIHAuZGVzY3JpcHRpb24/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocXVlcnlMb3dlcilcbiAgICAgICAgICApXG4gICAgICAgICAgLnNsaWNlKDAsIGxpbWl0KTtcblxuICAgICAgICByZXN1bHRzLnB1c2goXG4gICAgICAgICAgLi4ubWF0Y2hpbmdQcm9kdWN0cy5tYXAoKHApID0+ICh7XG4gICAgICAgICAgICB0eXBlOiAncHJvZHVjdCcgYXMgY29uc3QsXG4gICAgICAgICAgICBpZDogcC5pZCxcbiAgICAgICAgICAgIG5hbWU6IHAubmFtZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgbGlua3M6IHAubGlua3MsXG4gICAgICAgICAgfSkpXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8vIFNlYXJjaCBjb21wb25lbnRzXG4gICAgICBpZiAoIXBhcmFtcy50eXBlIHx8IHBhcmFtcy50eXBlID09PSAnY29tcG9uZW50Jykge1xuICAgICAgICBjb25zdCBjb21wb25lbnRzID0gYXdhaXQgdGhpcy5saXN0Q29tcG9uZW50cyh7IGxpbWl0OiAxMDAgfSk7XG4gICAgICAgIGNvbnN0IG1hdGNoaW5nQ29tcG9uZW50cyA9IGNvbXBvbmVudHNcbiAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgKGMpID0+XG4gICAgICAgICAgICAgIGMubmFtZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxdWVyeUxvd2VyKSB8fFxuICAgICAgICAgICAgICBjLmRlc2NyaXB0aW9uPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHF1ZXJ5TG93ZXIpXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zbGljZSgwLCBsaW1pdCk7XG5cbiAgICAgICAgcmVzdWx0cy5wdXNoKFxuICAgICAgICAgIC4uLm1hdGNoaW5nQ29tcG9uZW50cy5tYXAoKGMpID0+ICh7XG4gICAgICAgICAgICB0eXBlOiAnY29tcG9uZW50JyBhcyBjb25zdCxcbiAgICAgICAgICAgIGlkOiBjLmlkLFxuICAgICAgICAgICAgbmFtZTogYy5uYW1lLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGMuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBsaW5rczogYy5saW5rcyxcbiAgICAgICAgICB9KSlcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gU2VhcmNoIG5vdGVzXG4gICAgICBpZiAoIXBhcmFtcy50eXBlIHx8IHBhcmFtcy50eXBlID09PSAnbm90ZScpIHtcbiAgICAgICAgY29uc3Qgbm90ZXMgPSBhd2FpdCB0aGlzLmxpc3ROb3Rlcyh7IGxpbWl0OiAxMDAgfSk7XG4gICAgICAgIGNvbnN0IG1hdGNoaW5nTm90ZXMgPSBub3Rlc1xuICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAobikgPT5cbiAgICAgICAgICAgICAgbi50aXRsZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxdWVyeUxvd2VyKSB8fFxuICAgICAgICAgICAgICBuLmNvbnRlbnQ/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocXVlcnlMb3dlcilcbiAgICAgICAgICApXG4gICAgICAgICAgLnNsaWNlKDAsIGxpbWl0KTtcblxuICAgICAgICByZXN1bHRzLnB1c2goXG4gICAgICAgICAgLi4ubWF0Y2hpbmdOb3Rlcy5tYXAoKG4pID0+ICh7XG4gICAgICAgICAgICB0eXBlOiAnbm90ZScgYXMgY29uc3QsXG4gICAgICAgICAgICBpZDogbi5pZCxcbiAgICAgICAgICAgIHRpdGxlOiBuLnRpdGxlLFxuICAgICAgICAgICAgY29udGVudDogbi5jb250ZW50Py5zdWJzdHJpbmcoMCwgMjAwKSxcbiAgICAgICAgICAgIGxpbmtzOiBuLmxpbmtzLFxuICAgICAgICAgIH0pKVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0cy5zbGljZSgwLCBsaW1pdCk7XG4gICAgfSk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBVdGlsaXR5IE1ldGhvZHNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogVmFsaWRhdGUgdGhlIEFQSSB0b2tlbiBieSBtYWtpbmcgYSB0ZXN0IHJlcXVlc3RcbiAgICovXG4gIGFzeW5jIHZhbGlkYXRlVG9rZW4oKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuZ2V0Q3VycmVudFVzZXIoKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciBhbGwgY2FjaGVkIGRhdGFcbiAgICovXG4gIGNsZWFyQ2FjaGUoKTogdm9pZCB7XG4gICAgdGhpcy5jYWNoZS5jbGVhcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjYWNoZSBzdGF0aXN0aWNzXG4gICAqL1xuICBnZXRDYWNoZVN0YXRzKCk6IHsgc2l6ZTogbnVtYmVyOyBtYXg6IG51bWJlciB9IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZS5zdGF0cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCByYXRlIGxpbWl0ZXIgc3RhdGlzdGljc1xuICAgKi9cbiAgZ2V0UmF0ZUxpbWl0ZXJTdGF0cygpOiB7IHRva2VuczogbnVtYmVyOyBtYXhUb2tlbnM6IG51bWJlcjsgd2FpdFRpbWU6IG51bWJlciB9IHtcbiAgICByZXR1cm4gdGhpcy5yYXRlTGltaXRlci5zdGF0cygpO1xuICB9XG59XG4iXX0=
396
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGllbnQvYXBpLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sS0FBd0QsTUFBTSxPQUFPLENBQUM7QUFxQjdFLE9BQU8sRUFDTCxhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLGFBQWEsRUFDYixpQkFBaUIsR0FDbEIsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RCxPQUFPLEVBQWUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFdkUsTUFBTSxnQkFBZ0IsR0FBRyw4QkFBOEIsQ0FBQztBQUN4RCxNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFFdEIsTUFBTSxPQUFPLGtCQUFrQjtJQUNyQixNQUFNLENBQWdCO0lBQ3RCLEtBQUssQ0FBVztJQUNoQixXQUFXLENBQWM7SUFDekIsT0FBTyxDQUFTO0lBRXhCLFlBQVksTUFBb0I7UUFDOUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsVUFBVSxJQUFJLGdCQUFnQixDQUFDO1FBRXJELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUN6QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsT0FBTyxFQUFFO2dCQUNQLGVBQWUsRUFBRSxVQUFVLE1BQU0sQ0FBQyxRQUFRLEVBQUU7Z0JBQzVDLGNBQWMsRUFBRSxrQkFBa0I7Z0JBQ2xDLFdBQVcsRUFBRSxHQUFHO2FBQ2pCO1lBQ0QsT0FBTyxFQUFFLEtBQUs7U0FDZixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQztZQUNwQixHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsZUFBZSxJQUFJLEdBQUcsQ0FBQyxHQUFHLElBQUk7U0FDNUMsQ0FBQyxDQUFDO1FB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Q2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFByb2R1Y3RCb2FyZCBBUEkgQ2xpZW50XG4gKi9cblxuaW1wb3J0IGF4aW9zLCB7IEF4aW9zSW5zdGFuY2UsIEF4aW9zRXJyb3IsIEF4aW9zUmVxdWVzdENvbmZpZyB9IGZyb20gJ2F4aW9zJztcbmltcG9ydCB7XG4gIEZlYXR1cmUsXG4gIFByb2R1Y3QsXG4gIENvbXBvbmVudCxcbiAgTm90ZSxcbiAgVXNlcixcbiAgQ3VycmVudFVzZXIsXG4gIFNlYXJjaFJlc3VsdCxcbiAgUGFnaW5hdGVkUmVzcG9uc2UsXG4gIENyZWF0ZUZlYXR1cmVQYXJhbXMsXG4gIFVwZGF0ZUZlYXR1cmVQYXJhbXMsXG4gIExpc3RGZWF0dXJlc1BhcmFtcyxcbiAgTGlzdFByb2R1Y3RzUGFyYW1zLFxuICBDcmVhdGVOb3RlUGFyYW1zLFxuICBMaXN0Tm90ZXNQYXJhbXMsXG4gIExpc3RVc2Vyc1BhcmFtcyxcbiAgU2VhcmNoUGFyYW1zLFxuICBQbHVnaW5Db25maWcsXG4gIFByb2R1Y3RIaWVyYXJjaHksXG59IGZyb20gJy4vdHlwZXMuanMnO1xuaW1wb3J0IHtcbiAgcGFyc2VBcGlFcnJvcixcbiAgaXNSZXRyeWFibGVFcnJvcixcbiAgZ2V0UmV0cnlEZWxheSxcbiAgUHJvZHVjdEJvYXJkRXJyb3IsXG59IGZyb20gJy4vZXJyb3JzLmpzJztcbmltcG9ydCB7IEFwaUNhY2hlLCBnZXRDYWNoZSB9IGZyb20gJy4uL3V0aWxzL2NhY2hlLmpzJztcbmltcG9ydCB7IFJhdGVMaW1pdGVyLCBnZXRSYXRlTGltaXRlciB9IGZyb20gJy4uL3V0aWxzL3JhdGUtbGltaXRlci5qcyc7XG5cbmNvbnN0IERFRkFVTFRfQkFTRV9VUkwgPSAnaHR0cHM6Ly9hcGkucHJvZHVjdGJvYXJkLmNvbSc7XG5jb25zdCBNQVhfUkVUUklFUyA9IDM7XG5cbmV4cG9ydCBjbGFzcyBQcm9kdWN0Qm9hcmRDbGllbnQge1xuICBwcml2YXRlIGNsaWVudDogQXhpb3NJbnN0YW5jZTtcbiAgcHJpdmF0ZSBjYWNoZTogQXBpQ2FjaGU7XG4gIHByaXZhdGUgcmF0ZUxpbWl0ZXI6IFJhdGVMaW1pdGVyO1xuICBwcml2YXRlIGJhc2VVcmw6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IFBsdWdpbkNvbmZpZykge1xuICAgIHRoaXMuYmFzZVVybCA9IGNvbmZpZy5hcGlCYXNlVXJsIHx8IERFRkFVTFRfQkFTRV9VUkw7XG5cbiAgICB0aGlzLmNsaWVudCA9IGF4aW9zLmNyZWF0ZSh7XG4gICAgICBiYXNlVVJMOiB0aGlzLmJhc2VVcmwsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdBdXRob3JpemF0aW9uJzogYEJlYXJlciAke2NvbmZpZy5hcGlUb2tlbn1gLFxuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAnWC1WZXJzaW9uJzogJzEnLFxuICAgICAgfSxcbiAgICAgIHRpbWVvdXQ6IDMwMDAwLFxuICAgIH0pO1xuXG4gICAgdGhpcy5jYWNoZSA9IGdldENhY2hlKHtcbiAgICAgIHR0bDogKGNvbmZpZy5jYWNoZVR0bFNlY29uZHMgfHwgMzAwKSAqIDEwMDAsXG4gICAgfSk7XG5cbiAgICB0aGlzLnJhdGVMaW1pdGVyID0gZ2V0UmF0ZUxpbWl0ZXIoe1xuICAgICAgbWF4VG9rZW5zOiBjb25maWcucmF0ZUxpbWl0UGVyTWludXRlIHx8IDEwMCxcbiAgICB9KTtcblxuICAgIHRoaXMuc2V0dXBJbnRlcmNlcHRvcnMoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBJbnRlcmNlcHRvcnMoKTogdm9pZCB7XG4gICAgLy8gUmVzcG9uc2UgaW50ZXJjZXB0b3IgZm9yIGVycm9yIGhhbmRsaW5nXG4gICAgdGhpcy5jbGllbnQuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLnVzZShcbiAgICAgIChyZXNwb25zZSkgPT4gcmVzcG9uc2UsXG4gICAgICAoZXJyb3I6IEF4aW9zRXJyb3IpID0+IHtcbiAgICAgICAgaWYgKGVycm9yLnJlc3BvbnNlKSB7XG4gICAgICAgICAgY29uc3QgeyBzdGF0dXMsIGRhdGEsIGhlYWRlcnMgfSA9IGVycm9yLnJlc3BvbnNlO1xuICAgICAgICAgIHRocm93IHBhcnNlQXBpRXJyb3IoXG4gICAgICAgICAgICBzdGF0dXMsXG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgaGVhZGVyc1sncmV0cnktYWZ0ZXInXSBhcyBzdHJpbmcgfCB1bmRlZmluZWRcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBQcm9kdWN0Qm9hcmRFcnJvcihcbiAgICAgICAgICBlcnJvci5tZXNzYWdlIHx8ICdOZXR3b3JrIGVycm9yJyxcbiAgICAgICAgICAnTkVUV09SS19FUlJPUicsXG4gICAgICAgICAgMFxuICAgICAgICApO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZSBhIHJlcXVlc3Qgd2l0aCByZXRyeSBsb2dpYyBhbmQgcmF0ZSBsaW1pdGluZ1xuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyByZXF1ZXN0PFQ+KFxuICAgIGNvbmZpZzogQXhpb3NSZXF1ZXN0Q29uZmlnLFxuICAgIHJldHJ5Q291bnQgPSAwXG4gICk6IFByb21pc2U8VD4ge1xuICAgIGF3YWl0IHRoaXMucmF0ZUxpbWl0ZXIuYWNxdWlyZSgpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jbGllbnQucmVxdWVzdDxUPihjb25maWcpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChpc1JldHJ5YWJsZUVycm9yKGVycm9yKSAmJiByZXRyeUNvdW50IDwgTUFYX1JFVFJJRVMpIHtcbiAgICAgICAgY29uc3QgZGVsYXkgPSBnZXRSZXRyeURlbGF5KGVycm9yLCByZXRyeUNvdW50KTtcbiAgICAgICAgYXdhaXQgdGhpcy5zbGVlcChkZWxheSk7XG4gICAgICAgIHJldHVybiB0aGlzLnJlcXVlc3Q8VD4oY29uZmlnLCByZXRyeUNvdW50ICsgMSk7XG4gICAgICB9XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNsZWVwKG1zOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYWdpbmF0ZSB0aHJvdWdoIGFsbCByZXN1bHRzXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHBhZ2luYXRlPFQ+KFxuICAgIGVuZHBvaW50OiBzdHJpbmcsXG4gICAgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9LFxuICAgIG1heEl0ZW1zPzogbnVtYmVyXG4gICk6IFByb21pc2U8VFtdPiB7XG4gICAgY29uc3QgcmVzdWx0czogVFtdID0gW107XG4gICAgbGV0IGN1cnNvcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IHBhZ2VMaW1pdCA9IE1hdGgubWluKG1heEl0ZW1zIHx8IDEwMCwgMTAwKTtcblxuICAgIC8vIFJlbW92ZSAnbGltaXQnIGZyb20gcGFyYW1zIGFzIFByb2R1Y3RCb2FyZCB1c2VzICdwYWdlTGltaXQnXG4gICAgY29uc3QgeyBsaW1pdDogX2lnbm9yZWQsIC4uLmNsZWFuUGFyYW1zIH0gPSBwYXJhbXM7XG5cbiAgICBkbyB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMucmVxdWVzdDxQYWdpbmF0ZWRSZXNwb25zZTxUPiB8IFRbXT4oe1xuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICB1cmw6IGVuZHBvaW50LFxuICAgICAgICBwYXJhbXM6IHsgLi4uY2xlYW5QYXJhbXMsIHBhZ2VMaW1pdCwgcGFnZUN1cnNvcjogY3Vyc29yIH0sXG4gICAgICB9KTtcblxuICAgICAgLy8gSGFuZGxlIGJvdGggeyBkYXRhOiBbLi4uXSB9IGFuZCBkaXJlY3QgYXJyYXkgcmVzcG9uc2VzXG4gICAgICBjb25zdCBpdGVtcyA9IEFycmF5LmlzQXJyYXkocmVzcG9uc2UpID8gcmVzcG9uc2UgOiByZXNwb25zZT8uZGF0YTtcbiAgICAgIGlmIChpdGVtcyAmJiBBcnJheS5pc0FycmF5KGl0ZW1zKSkge1xuICAgICAgICByZXN1bHRzLnB1c2goLi4uaXRlbXMpO1xuICAgICAgfVxuXG4gICAgICBpZiAobWF4SXRlbXMgJiYgcmVzdWx0cy5sZW5ndGggPj0gbWF4SXRlbXMpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdHMuc2xpY2UoMCwgbWF4SXRlbXMpO1xuICAgICAgfVxuXG4gICAgICAvLyBFeHRyYWN0IGN1cnNvciBmb3IgbmV4dCBwYWdlIChvbmx5IGZvciBvYmplY3QgcmVzcG9uc2VzIHdpdGggbGlua3MpXG4gICAgICBjb25zdCBsaW5rcyA9ICFBcnJheS5pc0FycmF5KHJlc3BvbnNlKSA/IHJlc3BvbnNlPy5saW5rcyA6IHVuZGVmaW5lZDtcbiAgICAgIGN1cnNvciA9IGxpbmtzPy5uZXh0XG4gICAgICAgID8gbmV3IFVSTChsaW5rcy5uZXh0KS5zZWFyY2hQYXJhbXMuZ2V0KCdwYWdlQ3Vyc29yJykgfHwgdW5kZWZpbmVkXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIH0gd2hpbGUgKGN1cnNvcik7XG5cbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIEZlYXR1cmUgTWV0aG9kc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIGFzeW5jIGNyZWF0ZUZlYXR1cmUocGFyYW1zOiBDcmVhdGVGZWF0dXJlUGFyYW1zKTogUHJvbWlzZTxGZWF0dXJlPiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5yZXF1ZXN0PHsgZGF0YTogRmVhdHVyZSB9Pih7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIHVybDogJy9mZWF0dXJlcycsXG4gICAgICBkYXRhOiB7IGRhdGE6IHBhcmFtcyB9LFxuICAgIH0pO1xuXG4gICAgLy8gSW52YWxpZGF0ZSBmZWF0dXJlIGxpc3QgY2FjaGVzXG4gICAgdGhpcy5jYWNoZS5pbnZhbGlkYXRlUGF0dGVybigncGJfZmVhdHVyZV9saXN0OicpO1xuICAgIHRoaXMuY2FjaGUuaW52YWxpZGF0ZVBhdHRlcm4oJ3BiX2ZlYXR1cmVfc2VhcmNoOicpO1xuXG4gICAgcmV0dXJuIHJlc3VsdC5kYXRhO1xuICB9XG5cbiAgYXN5bmMgbGlzdEZlYXR1cmVzKHBhcmFtczogTGlzdEZlYXR1cmVzUGFyYW1zID0ge30pOiBQcm9taXNlPEZlYXR1cmVbXT4ge1xuICAgIGNvbnN0IGNhY2hlS2V5ID0gQXBpQ2FjaGUuZ2VuZXJhdGVLZXkoJ3BiX2ZlYXR1cmVfbGlzdCcsIHBhcmFtcyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik7XG5cbiAgICByZXR1cm4gdGhpcy5jYWNoZS53cmFwKGNhY2hlS2V5LCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBxdWVyeVBhcmFtczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuICAgICAgaWYgKHBhcmFtcy5wcm9kdWN0SWQpIHF1ZXJ5UGFyYW1zWydwcm9kdWN0LmlkJ10gPSBwYXJhbXMucHJvZHVjdElkO1xuICAgICAgaWYgKHBhcmFtcy5jb21wb25lbnRJZCkgcXVlcnlQYXJhbXNbJ2NvbXBvbmVudC5pZCddID0gcGFyYW1zLmNvbXBvbmVudElkO1xuICAgICAgaWYgKHBhcmFtcy5zdGF0dXMpIHF1ZXJ5UGFyYW1zLnN0YXR1cyA9IHBhcmFtcy5zdGF0dXM7XG4gICAgICBpZiAocGFyYW1zLm93bmVySWQpIHF1ZXJ5UGFyYW1zWydvd25lci5pZCddID0gcGFyYW1zLm93bmVySWQ7XG5cbiAgICAgIHJldHVybiB0aGlzLnBhZ2luYXRlPEZlYXR1cmU+KCcvZmVhdHVyZXMnLCBxdWVyeVBhcmFtcywgcGFyYW1zLmxpbWl0KTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGdldEZlYXR1cmUoaWQ6IHN0cmluZyk6IFByb21pc2U8RmVhdHVyZT4ge1xuICAgIGNvbnN0IGNhY2hlS2V5ID0gQXBpQ2FjaGUuZ2VuZXJhdGVLZXkoJ3BiX2ZlYXR1cmVfZ2V0JywgeyBpZCB9KTtcblxuICAgIHJldHVybiB0aGlzLmNhY2hlLndyYXAoY2FjaGVLZXksIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucmVxdWVzdDx7IGRhdGE6IEZlYXR1cmUgfT4oe1xuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICB1cmw6IGAvZmVhdHVyZXMvJHtpZH1gLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0LmRhdGE7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyB1cGRhdGVGZWF0dXJlKGlkOiBzdHJpbmcsIHBhcmFtczogVXBkYXRlRmVhdHVyZVBhcmFtcyk6IFByb21pc2U8RmVhdHVyZT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucmVxdWVzdDx7IGRhdGE6IEZlYXR1cmUgfT4oe1xuICAgICAgbWV0aG9kOiAnUEFUQ0gnLFxuICAgICAgdXJsOiBgL2ZlYXR1cmVzLyR7aWR9YCxcbiAgICAgIGRhdGE6IHsgZGF0YTogcGFyYW1zIH0sXG4gICAgfSk7XG5cbiAgICAvLyBJbnZhbGlkYXRlIGNhY2hlc1xuICAgIHRoaXMuY2FjaGUuZGVsZXRlKEFwaUNhY2hlLmdlbmVyYXRlS2V5KCdwYl9mZWF0dXJlX2dldCcsIHsgaWQgfSkpO1xuICAgIHRoaXMuY2FjaGUuaW52YWxpZGF0ZVBhdHRlcm4oJ3BiX2ZlYXR1cmVfbGlzdDonKTtcbiAgICB0aGlzLmNhY2hlLmludmFsaWRhdGVQYXR0ZXJuKCdwYl9mZWF0dXJlX3NlYXJjaDonKTtcblxuICAgIHJldHVybiByZXN1bHQuZGF0YTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZUZlYXR1cmUoaWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMucmVxdWVzdDx2b2lkPih7XG4gICAgICBtZXRob2Q6ICdERUxFVEUnLFxuICAgICAgdXJsOiBgL2ZlYXR1cmVzLyR7aWR9YCxcbiAgICB9KTtcblxuICAgIC8vIEludmFsaWRhdGUgY2FjaGVzXG4gICAgdGhpcy5jYWNoZS5kZWxldGUoQXBpQ2FjaGUuZ2VuZXJhdGVLZXkoJ3BiX2ZlYXR1cmVfZ2V0JywgeyBpZCB9KSk7XG4gICAgdGhpcy5jYWNoZS5pbnZhbGlkYXRlUGF0dGVybigncGJfZmVhdHVyZV9saXN0OicpO1xuICAgIHRoaXMuY2FjaGUuaW52YWxpZGF0ZVBhdHRlcm4oJ3BiX2ZlYXR1cmVfc2VhcmNoOicpO1xuICB9XG5cbiAgYXN5bmMgc2VhcmNoRmVhdHVyZXMocXVlcnk6IHN0cmluZywgbGltaXQgPSA1MCk6IFByb21pc2U8RmVhdHVyZVtdPiB7XG4gICAgaWYgKCFxdWVyeSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IGNhY2hlS2V5ID0gQXBpQ2FjaGUuZ2VuZXJhdGVLZXkoJ3BiX2ZlYXR1cmVfc2VhcmNoJywgeyBxdWVyeSwgbGltaXQgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5jYWNoZS53cmFwKGNhY2hlS2V5LCBhc3luYyAoKSA9PiB7XG4gICAgICAvLyBQcm9kdWN0Qm9hcmQgZG9lc24ndCBoYXZlIGEgZGVkaWNhdGVkIHNlYXJjaCBlbmRwb2ludCBmb3IgZmVhdHVyZXNcbiAgICAgIC8vIFdlJ2xsIGxpc3QgYWxsIGFuZCBmaWx0ZXIgY2xpZW50LXNpZGVcbiAgICAgIGNvbnN0IGZlYXR1cmVzID0gYXdhaXQgdGhpcy5saXN0RmVhdHVyZXMoeyBsaW1pdDogNTAwIH0pO1xuICAgICAgY29uc3QgcXVlcnlMb3dlciA9IHF1ZXJ5LnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgIHJldHVybiBmZWF0dXJlc1xuICAgICAgICAuZmlsdGVyKChmKSA9PiB7XG4gICAgICAgICAgY29uc3QgbmFtZU1hdGNoID0gZi5uYW1lPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHF1ZXJ5TG93ZXIpO1xuICAgICAgICAgIGNvbnN0IGRlc2NNYXRjaCA9IGYuZGVzY3JpcHRpb24/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocXVlcnlMb3dlcik7XG4gICAgICAgICAgcmV0dXJuIG5hbWVNYXRjaCB8fCBkZXNjTWF0Y2g7XG4gICAgICAgIH0pXG4gICAgICAgIC5zbGljZSgwLCBsaW1pdCk7XG4gICAgfSk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBQcm9kdWN0IE1ldGhvZHNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICBhc3luYyBsaXN0UHJvZHVjdHMocGFyYW1zOiBMaXN0UHJvZHVjdHNQYXJhbXMgPSB7fSk6IFByb21pc2U8UHJvZHVjdFtdPiB7XG4gICAgY29uc3QgY2FjaGVLZXkgPSBBcGlDYWNoZS5nZW5lcmF0ZUtleSgncGJfcHJvZHVjdF9saXN0JywgcGFyYW1zIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KTtcblxuICAgIHJldHVybiB0aGlzLmNhY2hlLndyYXAoY2FjaGVLZXksIGFzeW5jICgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnBhZ2luYXRlPFByb2R1Y3Q+KCcvcHJvZHVjdHMnLCB7fSwgcGFyYW1zLmxpbWl0KTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGdldFByb2R1Y3QoaWQ6IHN0cmluZyk6IFByb21pc2U8UHJvZHVjdD4ge1xuICAgIGNvbnN0IGNhY2hlS2V5ID0gQXBpQ2FjaGUuZ2VuZXJhdGVLZXkoJ3BiX3Byb2R1Y3RfZ2V0JywgeyBpZCB9KTtcblxuICAgIHJldHVybiB0aGlzLmNhY2hlLndyYXAoY2FjaGVLZXksIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMucmVxdWVzdDx7IGRhdGE6IFByb2R1Y3QgfT4oe1xuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICB1cmw6IGAvcHJvZHVjdHMvJHtpZH1gLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0LmRhdGE7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBsaXN0Q29tcG9uZW50cyhwYXJhbXM6IHsgcHJvZHVjdElkPzogc3RyaW5nOyBsaW1pdD86IG51bWJlciB9ID0ge30pOiBQcm9taXNlPENvbXBvbmVudFtdPiB7XG4gICAgY29uc3QgY2FjaGVLZXkgPSBBcGlDYWNoZS5nZW5lcmF0ZUtleSgncGJfY29tcG9uZW50X2xpc3QnLCBwYXJhbXMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pO1xuXG4gICAgcmV0dXJuIHRoaXMuY2FjaGUud3JhcChjYWNoZUtleSwgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcXVlcnlQYXJhbXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gICAgICBpZiAocGFyYW1zLnByb2R1Y3RJZCkgcXVlcnlQYXJhbXNbJ3Byb2R1Y3QuaWQnXSA9IHBhcmFtcy5wcm9kdWN0SWQ7XG5cbiAgICAgIHJldHVybiB0aGlzLnBhZ2luYXRlPENvbXBvbmVudD4oJy9jb21wb25lbnRzJywgcXVlcnlQYXJhbXMsIHBhcmFtcy5saW1pdCk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBnZXRQcm9kdWN0SGllcmFyY2h5KCk6IFByb21pc2U8UHJvZHVjdEhpZXJhcmNoeT4ge1xuICAgIGNvbnN0IGNhY2hlS2V5ID0gQXBpQ2FjaGUuZ2VuZXJhdGVLZXkoJ3BiX3Byb2R1Y3RfaGllcmFyY2h5Jywge30pO1xuXG4gICAgcmV0dXJuIHRoaXMuY2FjaGUud3JhcChjYWNoZUtleSwgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgW3Byb2R1Y3RzLCBjb21wb25lbnRzXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgICAgdGhpcy5saXN0UHJvZHVjdHMoeyBsaW1pdDogNTAwIH0pLFxuICAgICAgICB0aGlzLmxpc3RDb21wb25lbnRzKHsgbGltaXQ6IDUwMCB9KSxcbiAgICAgIF0pO1xuXG4gICAgICByZXR1cm4geyBwcm9kdWN0cywgY29tcG9uZW50cyB9O1xuICAgIH0pO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gTm90ZSBNZXRob2RzXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgYXN5bmMgY3JlYXRlTm90ZShwYXJhbXM6IENyZWF0ZU5vdGVQYXJhbXMpOiBQcm9taXNlPE5vdGU+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLnJlcXVlc3Q8eyBkYXRhOiBOb3RlIH0+KHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgdXJsOiAnL25vdGVzJyxcbiAgICAgIGRhdGE6IHsgZGF0YTogcGFyYW1zIH0sXG4gICAgfSk7XG5cbiAgICAvLyBJbnZhbGlkYXRlIG5vdGUgbGlzdCBjYWNoZXNcbiAgICB0aGlzLmNhY2hlLmludmFsaWRhdGVQYXR0ZXJuKCdwYl9ub3RlX2xpc3Q6Jyk7XG5cbiAgICByZXR1cm4gcmVzdWx0LmRhdGE7XG4gIH1cblxuICBhc3luYyBsaXN0Tm90ZXMocGFyYW1zOiBMaXN0Tm90ZXNQYXJhbXMgPSB7fSk6IFByb21pc2U8Tm90ZVtdPiB7XG4gICAgY29uc3QgY2FjaGVLZXkgPSBBcGlDYWNoZS5nZW5lcmF0ZUtleSgncGJfbm90ZV9saXN0JywgcGFyYW1zIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KTtcblxuICAgIHJldHVybiB0aGlzLmNhY2hlLndyYXAoY2FjaGVLZXksIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICAgICAgaWYgKHBhcmFtcy5jcmVhdGVkRnJvbSkgcXVlcnlQYXJhbXMuY3JlYXRlZEZyb20gPSBwYXJhbXMuY3JlYXRlZEZyb207XG4gICAgICBpZiAocGFyYW1zLmNyZWF0ZWRUbykgcXVlcnlQYXJhbXMuY3JlYXRlZFRvID0gcGFyYW1zLmNyZWF0ZWRUbztcblxuICAgICAgcmV0dXJuIHRoaXMucGFnaW5hdGU8Tm90ZT4oJy9ub3RlcycsIHF1ZXJ5UGFyYW1zLCBwYXJhbXMubGltaXQpO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZ2V0Tm90ZShpZDogc3RyaW5nKTogUHJvbWlzZTxOb3RlPiB7XG4gICAgY29uc3QgY2FjaGVLZXkgPSBBcGlDYWNoZS5nZW5lcmF0ZUtleSgncGJfbm90ZV9nZXQnLCB7IGlkIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuY2FjaGUud3JhcChjYWNoZUtleSwgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5yZXF1ZXN0PHsgZGF0YTogTm90ZSB9Pih7XG4gICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgIHVybDogYC9ub3Rlcy8ke2lkfWAsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXN1bHQuZGF0YTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGF0dGFjaE5vdGVUb0ZlYXR1cmUobm90ZUlkOiBzdHJpbmcsIGZlYXR1cmVJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5yZXF1ZXN0PHZvaWQ+KHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgdXJsOiBgL25vdGVzLyR7bm90ZUlkfS9jb25uZWN0aW9uc2AsXG4gICAgICBkYXRhOiB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBmZWF0dXJlOiB7IGlkOiBmZWF0dXJlSWQgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBJbnZhbGlkYXRlIGNhY2hlc1xuICAgIHRoaXMuY2FjaGUuZGVsZXRlKEFwaUNhY2hlLmdlbmVyYXRlS2V5KCdwYl9ub3RlX2dldCcsIHsgaWQ6IG5vdGVJZCB9KSk7XG4gICAgdGhpcy5jYWNoZS5kZWxldGUoQXBpQ2FjaGUuZ2VuZXJhdGVLZXkoJ3BiX2ZlYXR1cmVfZ2V0JywgeyBpZDogZmVhdHVyZUlkIH0pKTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFVzZXIgTWV0aG9kc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIGFzeW5jIGdldEN1cnJlbnRVc2VyKCk6IFByb21pc2U8Q3VycmVudFVzZXI+IHtcbiAgICAvLyBQcm9kdWN0Qm9hcmQgQVBJIGRvZXNuJ3QgaGF2ZSBhIC91c2Vycy9tZSBlbmRwb2ludFxuICAgIC8vIFdlIHZhbGlkYXRlIHRoZSB0b2tlbiBieSBtYWtpbmcgYSBzaW1wbGUgQVBJIGNhbGwgaW5zdGVhZFxuICAgIGNvbnN0IGNhY2hlS2V5ID0gQXBpQ2FjaGUuZ2VuZXJhdGVLZXkoJ3BiX3VzZXJfY3VycmVudCcsIHt9KTtcblxuICAgIHJldHVybiB0aGlzLmNhY2hlLndyYXAoY2FjaGVLZXksIGFzeW5jICgpID0+IHtcbiAgICAgIC8vIFZhbGlkYXRlIHRva2VuIGJ5IGZldGNoaW5nIHByb2R1Y3RzIChsaWdodHdlaWdodCBjYWxsKVxuICAgICAgYXdhaXQgdGhpcy5yZXF1ZXN0PFBhZ2luYXRlZFJlc3BvbnNlPFByb2R1Y3Q+Pih7XG4gICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgIHVybDogJy9wcm9kdWN0cycsXG4gICAgICAgIHBhcmFtczogeyBwYWdlTGltaXQ6IDEgfSxcbiAgICAgIH0pO1xuXG4gICAgICAvLyBSZXR1cm4gcGxhY2Vob2xkZXIgc2luY2Ugd2UgY2FuJ3QgZ2V0IGFjdHVhbCB1c2VyIGluZm9cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiAnYXV0aGVudGljYXRlZCcsXG4gICAgICAgIGVtYWlsOiAndW5rbm93bicsXG4gICAgICAgIG5hbWU6ICdBUEkgVG9rZW4gVXNlcicsXG4gICAgICAgIHJvbGU6ICdhcGknLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGxpc3RVc2VycyhwYXJhbXM6IExpc3RVc2Vyc1BhcmFtcyA9IHt9KTogUHJvbWlzZTxVc2VyW10+IHtcbiAgICBjb25zdCBjYWNoZUtleSA9IEFwaUNhY2hlLmdlbmVyYXRlS2V5KCdwYl91c2VyX2xpc3QnLCBwYXJhbXMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pO1xuXG4gICAgcmV0dXJuIHRoaXMuY2FjaGUud3JhcChjYWNoZUtleSwgYXN5bmMgKCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMucGFnaW5hdGU8VXNlcj4oJy91c2VycycsIHt9LCBwYXJhbXMubGltaXQpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gU2VhcmNoIE1ldGhvZHNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICBhc3luYyBzZWFyY2gocGFyYW1zOiBTZWFyY2hQYXJhbXMpOiBQcm9taXNlPFNlYXJjaFJlc3VsdFtdPiB7XG4gICAgaWYgKCFwYXJhbXMucXVlcnkpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCBjYWNoZUtleSA9IEFwaUNhY2hlLmdlbmVyYXRlS2V5KCdwYl9zZWFyY2gnLCB7IHF1ZXJ5OiBwYXJhbXMucXVlcnksIHR5cGU6IHBhcmFtcy50eXBlLCBsaW1pdDogcGFyYW1zLmxpbWl0IH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuY2FjaGUud3JhcChjYWNoZUtleSwgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0czogU2VhcmNoUmVzdWx0W10gPSBbXTtcbiAgICAgIGNvbnN0IHF1ZXJ5TG93ZXIgPSBwYXJhbXMucXVlcnkudG9Mb3dlckNhc2UoKTtcbiAgICAgIGNvbnN0IGxpbWl0ID0gcGFyYW1zLmxpbWl0IHx8IDUwO1xuXG4gICAgICAvLyBTZWFyY2ggZmVhdHVyZXNcbiAgICAgIGlmICghcGFyYW1zLnR5cGUgfHwgcGFyYW1zLnR5cGUgPT09ICdmZWF0dXJlJykge1xuICAgICAgICBjb25zdCBmZWF0dXJlcyA9IGF3YWl0IHRoaXMuc2VhcmNoRmVhdHVyZXMocXVlcnlMb3dlciwgbGltaXQpO1xuICAgICAgICByZXN1bHRzLnB1c2goXG4gICAgICAgICAgLi4uZmVhdHVyZXMubWFwKChmKSA9PiAoe1xuICAgICAgICAgICAgdHlwZTogJ2ZlYXR1cmUnIGFzIGNvbnN0LFxuICAgICAgICAgICAgaWQ6IGYuaWQsXG4gICAgICAgICAgICBuYW1lOiBmLm5hbWUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogZi5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGxpbmtzOiBmLmxpbmtzLFxuICAgICAgICAgIH0pKVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBTZWFyY2ggcHJvZHVjdHNcbiAgICAgIGlmICghcGFyYW1zLnR5cGUgfHwgcGFyYW1zLnR5cGUgPT09ICdwcm9kdWN0Jykge1xuICAgICAgICBjb25zdCBwcm9kdWN0cyA9IGF3YWl0IHRoaXMubGlzdFByb2R1Y3RzKHsgbGltaXQ6IDEwMCB9KTtcbiAgICAgICAgY29uc3QgbWF0Y2hpbmdQcm9kdWN0cyA9IHByb2R1Y3RzXG4gICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgIChwKSA9PlxuICAgICAgICAgICAgICBwLm5hbWU/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocXVlcnlMb3dlcikgfHxcbiAgICAgICAgICAgICAgcC5kZXNjcmlwdGlvbj8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxdWVyeUxvd2VyKVxuICAgICAgICAgIClcbiAgICAgICAgICAuc2xpY2UoMCwgbGltaXQpO1xuXG4gICAgICAgIHJlc3VsdHMucHVzaChcbiAgICAgICAgICAuLi5tYXRjaGluZ1Byb2R1Y3RzLm1hcCgocCkgPT4gKHtcbiAgICAgICAgICAgIHR5cGU6ICdwcm9kdWN0JyBhcyBjb25zdCxcbiAgICAgICAgICAgIGlkOiBwLmlkLFxuICAgICAgICAgICAgbmFtZTogcC5uYW1lLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHAuZGVzY3JpcHRpb24sXG4gICAgICAgICAgICBsaW5rczogcC5saW5rcyxcbiAgICAgICAgICB9KSlcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gU2VhcmNoIGNvbXBvbmVudHNcbiAgICAgIGlmICghcGFyYW1zLnR5cGUgfHwgcGFyYW1zLnR5cGUgPT09ICdjb21wb25lbnQnKSB7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudHMgPSBhd2FpdCB0aGlzLmxpc3RDb21wb25lbnRzKHsgbGltaXQ6IDEwMCB9KTtcbiAgICAgICAgY29uc3QgbWF0Y2hpbmdDb21wb25lbnRzID0gY29tcG9uZW50c1xuICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICAoYykgPT5cbiAgICAgICAgICAgICAgYy5uYW1lPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHF1ZXJ5TG93ZXIpIHx8XG4gICAgICAgICAgICAgIGMuZGVzY3JpcHRpb24/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocXVlcnlMb3dlcilcbiAgICAgICAgICApXG4gICAgICAgICAgLnNsaWNlKDAsIGxpbWl0KTtcblxuICAgICAgICByZXN1bHRzLnB1c2goXG4gICAgICAgICAgLi4ubWF0Y2hpbmdDb21wb25lbnRzLm1hcCgoYykgPT4gKHtcbiAgICAgICAgICAgIHR5cGU6ICdjb21wb25lbnQnIGFzIGNvbnN0LFxuICAgICAgICAgICAgaWQ6IGMuaWQsXG4gICAgICAgICAgICBuYW1lOiBjLm5hbWUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogYy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGxpbmtzOiBjLmxpbmtzLFxuICAgICAgICAgIH0pKVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBTZWFyY2ggbm90ZXNcbiAgICAgIGlmICghcGFyYW1zLnR5cGUgfHwgcGFyYW1zLnR5cGUgPT09ICdub3RlJykge1xuICAgICAgICBjb25zdCBub3RlcyA9IGF3YWl0IHRoaXMubGlzdE5vdGVzKHsgbGltaXQ6IDEwMCB9KTtcbiAgICAgICAgY29uc3QgbWF0Y2hpbmdOb3RlcyA9IG5vdGVzXG4gICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgIChuKSA9PlxuICAgICAgICAgICAgICBuLnRpdGxlPy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHF1ZXJ5TG93ZXIpIHx8XG4gICAgICAgICAgICAgIG4uY29udGVudD8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxdWVyeUxvd2VyKVxuICAgICAgICAgIClcbiAgICAgICAgICAuc2xpY2UoMCwgbGltaXQpO1xuXG4gICAgICAgIHJlc3VsdHMucHVzaChcbiAgICAgICAgICAuLi5tYXRjaGluZ05vdGVzLm1hcCgobikgPT4gKHtcbiAgICAgICAgICAgIHR5cGU6ICdub3RlJyBhcyBjb25zdCxcbiAgICAgICAgICAgIGlkOiBuLmlkLFxuICAgICAgICAgICAgdGl0bGU6IG4udGl0bGUsXG4gICAgICAgICAgICBjb250ZW50OiBuLmNvbnRlbnQ/LnN1YnN0cmluZygwLCAyMDApLFxuICAgICAgICAgICAgbGlua3M6IG4ubGlua3MsXG4gICAgICAgICAgfSkpXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHRzLnNsaWNlKDAsIGxpbWl0KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFV0aWxpdHkgTWV0aG9kc1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSB0aGUgQVBJIHRva2VuIGJ5IG1ha2luZyBhIHRlc3QgcmVxdWVzdFxuICAgKi9cbiAgYXN5bmMgdmFsaWRhdGVUb2tlbigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5nZXRDdXJyZW50VXNlcigpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIGFsbCBjYWNoZWQgZGF0YVxuICAgKi9cbiAgY2xlYXJDYWNoZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNhY2hlLmNsZWFyKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGNhY2hlIHN0YXRpc3RpY3NcbiAgICovXG4gIGdldENhY2hlU3RhdHMoKTogeyBzaXplOiBudW1iZXI7IG1heDogbnVtYmVyIH0ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlLnN0YXRzKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHJhdGUgbGltaXRlciBzdGF0aXN0aWNzXG4gICAqL1xuICBnZXRSYXRlTGltaXRlclN0YXRzKCk6IHsgdG9rZW5zOiBudW1iZXI7IG1heFRva2VuczogbnVtYmVyOyB3YWl0VGltZTogbnVtYmVyIH0ge1xuICAgIHJldHVybiB0aGlzLnJhdGVMaW1pdGVyLnN0YXRzKCk7XG4gIH1cbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openclaw-productboard",
3
- "version": "1.0.20",
3
+ "version": "1.0.21",
4
4
  "description": "OpenClaw plugin for ProductBoard integration",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",