@lukaskj/ts-utils 1.2.2 → 1.3.1

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.
package/README.md CHANGED
@@ -24,14 +24,14 @@ Documentation folder: [docs/](docs/)
24
24
 
25
25
  ### Error Handling
26
26
 
27
- #### `tryCatch` and `tryCatchAsync`
27
+ #### `tryCatchSync` and `tryCatch`
28
28
  Type-safe error handling utilities inspired by Rust's Result type.
29
29
 
30
30
  ```typescript
31
- import { tryCatch, tryCatchAsync } from '@lukaskj/ts-utils';
31
+ import { tryCatchSync, tryCatch } from '@lukaskj/ts-utils';
32
32
 
33
33
  // Synchronous usage
34
- const [data, error] = tryCatch(() => someRiskyOperation());
34
+ const { data, error } = tryCatchSync(() => someRiskyOperation());
35
35
  if (error) {
36
36
  console.error(error);
37
37
  } else {
@@ -39,7 +39,7 @@ if (error) {
39
39
  }
40
40
 
41
41
  // Asynchronous usage
42
- const [data, error] = await tryCatchAsync(somePromise);
42
+ const { data, error } = await tryCatch(somePromise);
43
43
  if (error) {
44
44
  console.error(error);
45
45
  } else {
@@ -4,38 +4,59 @@ var __defProp = Object.defineProperty;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ function __accessProp(key) {
8
+ return this[key];
9
+ }
10
+ var __toESMCache_node;
11
+ var __toESMCache_esm;
7
12
  var __toESM = (mod, isNodeMode, target) => {
13
+ var canCache = mod != null && typeof mod === "object";
14
+ if (canCache) {
15
+ var cache = isNodeMode ? __toESMCache_node ??= new WeakMap : __toESMCache_esm ??= new WeakMap;
16
+ var cached = cache.get(mod);
17
+ if (cached)
18
+ return cached;
19
+ }
8
20
  target = mod != null ? __create(__getProtoOf(mod)) : {};
9
21
  const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
10
22
  for (let key of __getOwnPropNames(mod))
11
23
  if (!__hasOwnProp.call(to, key))
12
24
  __defProp(to, key, {
13
- get: () => mod[key],
25
+ get: __accessProp.bind(mod, key),
14
26
  enumerable: true
15
27
  });
28
+ if (canCache)
29
+ cache.set(mod, to);
16
30
  return to;
17
31
  };
18
- var __moduleCache = /* @__PURE__ */ new WeakMap;
19
32
  var __toCommonJS = (from) => {
20
- var entry = __moduleCache.get(from), desc;
33
+ var entry = (__moduleCache ??= new WeakMap).get(from), desc;
21
34
  if (entry)
22
35
  return entry;
23
36
  entry = __defProp({}, "__esModule", { value: true });
24
- if (from && typeof from === "object" || typeof from === "function")
25
- __getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
26
- get: () => from[key],
27
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
28
- }));
37
+ if (from && typeof from === "object" || typeof from === "function") {
38
+ for (var key of __getOwnPropNames(from))
39
+ if (!__hasOwnProp.call(entry, key))
40
+ __defProp(entry, key, {
41
+ get: __accessProp.bind(from, key),
42
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
43
+ });
44
+ }
29
45
  __moduleCache.set(from, entry);
30
46
  return entry;
31
47
  };
48
+ var __moduleCache;
49
+ var __returnValue = (v) => v;
50
+ function __exportSetter(name, newValue) {
51
+ this[name] = __returnValue.bind(null, newValue);
52
+ }
32
53
  var __export = (target, all) => {
33
54
  for (var name in all)
34
55
  __defProp(target, name, {
35
56
  get: all[name],
36
57
  enumerable: true,
37
58
  configurable: true,
38
- set: (newValue) => all[name] = () => newValue
59
+ set: __exportSetter.bind(all, name)
39
60
  });
40
61
  };
41
62
 
@@ -47,14 +68,16 @@ __export(exports_cache, {
47
68
  });
48
69
  module.exports = __toCommonJS(exports_cache);
49
70
 
50
- // src/cache/cacheService.ts
51
- var import_types = require("node:util/types");
52
-
53
71
  // src/utils/isCallable.ts
54
72
  function isCallable(value) {
55
73
  return typeof value === "function";
56
74
  }
57
75
 
76
+ // src/utils/isPromise.ts
77
+ function isPromise(value) {
78
+ return !!value && (typeof value === "object" || typeof value === "function") && "then" in value && typeof value.then === "function";
79
+ }
80
+
58
81
  // src/cache/cacheService.ts
59
82
  var defaultCacheOptions = {
60
83
  expirationThresholdMs: 0,
@@ -133,7 +156,7 @@ class Cache {
133
156
  if (isCallable(valueLoader)) {
134
157
  return await valueLoader();
135
158
  }
136
- if (import_types.isPromise(valueLoader)) {
159
+ if (isPromise(valueLoader)) {
137
160
  return await valueLoader;
138
161
  }
139
162
  return valueLoader;
@@ -178,5 +201,5 @@ class Cache {
178
201
  // src/cache/constants.ts
179
202
  var CACHE_TTL_NEVER_EXPIRE = -1;
180
203
 
181
- //# debugId=3EEB577CB85A3AEE64756E2164756E21
182
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NhY2hlL2NhY2hlU2VydmljZS50cyIsICIuLi8uLi9zcmMvdXRpbHMvaXNDYWxsYWJsZS50cyIsICIuLi8uLi9zcmMvY2FjaGUvY29uc3RhbnRzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWwogICAgImltcG9ydCB7IGlzUHJvbWlzZSB9IGZyb20gXCJub2RlOnV0aWwvdHlwZXNcIjtcbmltcG9ydCB7IGlzQ2FsbGFibGUgfSBmcm9tIFwiLi4vdXRpbHMvaXNDYWxsYWJsZS50c1wiO1xuaW1wb3J0IHR5cGUgeyBDYWNoZU1ldGFkYXRhT3B0aW9ucywgQ2FjaGVPcHRpb25zLCBDYWNoZVdpdGhNZXRhZGF0YSwgVmFsdWVMb2FkZXIgfSBmcm9tIFwiLi9pbnRlcm5hbC90eXBlcy50c1wiO1xuaW1wb3J0IHR5cGUgeyBDYWNoZU1ldGFkYXRhLCBJQ2FjaGVBZGFwdGVyIH0gZnJvbSBcIi4vdHlwZXMudHNcIjtcblxuY29uc3QgZGVmYXVsdENhY2hlT3B0aW9uczogQ2FjaGVPcHRpb25zID0ge1xuICBleHBpcmF0aW9uVGhyZXNob2xkTXM6IDAsXG4gIHR0bE1zOiA2MCAqIDYwICogMTAwMCxcbn07XG5cbmV4cG9ydCBjbGFzcyBDYWNoZTxUQWRhcHRlciBleHRlbmRzIElDYWNoZUFkYXB0ZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ+IHtcbiAgcHJpdmF0ZSBpbk1lbW9yeUNhY2hlOiBNYXA8c3RyaW5nLCBDYWNoZVdpdGhNZXRhZGF0YT4gPSBuZXcgTWFwKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogQ2FjaGVPcHRpb25zO1xuICBwcml2YXRlIHJlYWRvbmx5IGFkYXB0ZXI/OiBUQWRhcHRlcjtcblxuICBjb25zdHJ1Y3RvcihkZWZhdWx0T3B0aW9ucz86IFBhcnRpYWw8Q2FjaGVPcHRpb25zPik7XG4gIGNvbnN0cnVjdG9yKGFkYXB0ZXI/OiBUQWRhcHRlciwgZGVmYXVsdE9wdGlvbnM/OiBQYXJ0aWFsPENhY2hlT3B0aW9ucz4pO1xuICBjb25zdHJ1Y3RvcihhZGFwdGVyPzogVEFkYXB0ZXIgfCBQYXJ0aWFsPENhY2hlT3B0aW9ucz4sIGRlZmF1bHRPcHRpb25zPzogUGFydGlhbDxDYWNoZU9wdGlvbnM+KSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IGFkYXB0ZXIgJiYgIShcImdldFZhbHVlXCIgaW4gYWRhcHRlcikgPyAoYWRhcHRlciBhcyBQYXJ0aWFsPENhY2hlT3B0aW9ucz4pIDogZGVmYXVsdE9wdGlvbnM7XG4gICAgaWYgKGFkYXB0ZXIgJiYgXCJnZXRWYWx1ZVwiIGluIGFkYXB0ZXIgJiYgXCJzZXRWYWx1ZVwiIGluIGFkYXB0ZXIpIHtcbiAgICAgIHRoaXMuYWRhcHRlciA9IGFkYXB0ZXIgYXMgVEFkYXB0ZXI7XG4gICAgfVxuXG4gICAgdGhpcy5vcHRpb25zID0ge1xuICAgICAgLi4uZGVmYXVsdENhY2hlT3B0aW9ucyxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0RnJvbUFkYXB0ZXI8VD4oY2FjaGVLZXk6IHN0cmluZyk6IFByb21pc2U8VCB8IHVuZGVmaW5lZD4ge1xuICAgIGlmICghdGhpcy5hZGFwdGVyKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuZ2V0VmFsdWUoY2FjaGVLZXkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzYXZlVG9BZGFwdGVyPFQ+KGNhY2hlS2V5OiBzdHJpbmcsIHZhbHVlOiBUKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmFkYXB0ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hZGFwdGVyLnNldFZhbHVlPFQ+KGNhY2hlS2V5LCB2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0PFQ+KFxuICAgIGNhY2hlS2V5OiBzdHJpbmcsXG4gICAgdmFsdWVMb2FkZXI/OiBWYWx1ZUxvYWRlcjxUPixcbiAgICBvcHRpb25zOiBQYXJ0aWFsPENhY2hlTWV0YWRhdGFPcHRpb25zPiA9IHt9LFxuICApOiBQcm9taXNlPFQgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBtZXJnZWRPcHRpb25zID0gdGhpcy5tZXJnZU9wdGlvbnMob3B0aW9ucyk7XG5cbiAgICAvLyBUcnkgaW4tbWVtb3J5IGNhY2hlIGZpcnN0XG4gICAgY29uc3QgY2FjaGVkVmFsdWUgPSB0aGlzLnRyeUdldEZyb21NZW1vcnk8VD4oY2FjaGVLZXkpO1xuICAgIGlmIChjYWNoZWRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gY2FjaGVkVmFsdWU7XG4gICAgfVxuXG4gICAgLy8gTG9hZCBmcmVzaCB2YWx1ZSBmcm9tIGxvYWRlciBmdW5jdGlvbiBmaXJzdFxuICAgIGNvbnN0IGZyZXNoVmFsdWUgPSBhd2FpdCB0aGlzLnRyeUdldEZyb21WYWx1ZUxvYWRlcih2YWx1ZUxvYWRlcik7XG4gICAgaWYgKGZyZXNoVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYXdhaXQgdGhpcy5jYWNoZVZhbHVlKGNhY2hlS2V5LCBmcmVzaFZhbHVlLCBtZXJnZWRPcHRpb25zKTtcblxuICAgICAgcmV0dXJuIGZyZXNoVmFsdWU7XG4gICAgfVxuXG4gICAgLy8gVHJ5IGFkYXB0ZXIgY2FjaGUgc2Vjb25kXG4gICAgY29uc3QgYWRhcHRlclZhbHVlID0gYXdhaXQgdGhpcy50cnlHZXRGcm9tQWRhcHRlcjxUPihjYWNoZUtleSk7XG4gICAgaWYgKGFkYXB0ZXJWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBhd2FpdCB0aGlzLmNhY2hlVmFsdWUoY2FjaGVLZXksIGFkYXB0ZXJWYWx1ZSwgbWVyZ2VkT3B0aW9ucyk7XG5cbiAgICAgIHJldHVybiBhZGFwdGVyVmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtZXJnZU9wdGlvbnMob3B0aW9uczogUGFydGlhbDxDYWNoZU1ldGFkYXRhT3B0aW9ucz4pOiBDYWNoZU1ldGFkYXRhT3B0aW9ucyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR0bE1zOiB0aGlzLm9wdGlvbnMudHRsTXMsXG4gICAgICBleHBpcmF0aW9uVGhyZXNob2xkTXM6IHRoaXMub3B0aW9ucy5leHBpcmF0aW9uVGhyZXNob2xkTXMsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHRyeUdldEZyb21NZW1vcnk8VD4oY2FjaGVLZXk6IHN0cmluZyk6IFQgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGNhY2hlZCA9IHRoaXMuaW5NZW1vcnlDYWNoZS5nZXQoY2FjaGVLZXkpO1xuXG4gICAgaWYgKGNhY2hlZCAmJiAhdGhpcy5pc0V4cGlyZWQoY2FjaGVkLm1ldGFkYXRhKSkge1xuICAgICAgcmV0dXJuIGNhY2hlZC5kYXRhIGFzIFQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdHJ5R2V0RnJvbUFkYXB0ZXI8VD4oY2FjaGVLZXk6IHN0cmluZyk6IFByb21pc2U8VCB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IGNhY2hlZCA9IGF3YWl0IHRoaXMuZ2V0RnJvbUFkYXB0ZXI8Q2FjaGVXaXRoTWV0YWRhdGE8VD4+KGNhY2hlS2V5KTtcblxuICAgIGlmIChjYWNoZWQgJiYgIXRoaXMuaXNFeHBpcmVkKGNhY2hlZC5tZXRhZGF0YSkpIHtcbiAgICAgIHRoaXMuaW5NZW1vcnlDYWNoZS5zZXQoY2FjaGVLZXksIGNhY2hlZCk7XG4gICAgICByZXR1cm4gY2FjaGVkLmRhdGE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdHJ5R2V0RnJvbVZhbHVlTG9hZGVyPFQ+KHZhbHVlTG9hZGVyPzogVmFsdWVMb2FkZXI8VD4pOiBQcm9taXNlPFQgfCB1bmRlZmluZWQ+IHtcbiAgICBpZiAodmFsdWVMb2FkZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoaXNDYWxsYWJsZSh2YWx1ZUxvYWRlcikpIHtcbiAgICAgIHJldHVybiBhd2FpdCB2YWx1ZUxvYWRlcigpO1xuICAgIH1cblxuICAgIGlmIChpc1Byb21pc2UodmFsdWVMb2FkZXIpKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdmFsdWVMb2FkZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlTG9hZGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjYWNoZVZhbHVlPFQ+KGNhY2hlS2V5OiBzdHJpbmcsIHZhbHVlOiBULCBvcHRpb25zOiBDYWNoZU1ldGFkYXRhT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNhY2hlRGF0YSA9IHRoaXMuY3JlYXRlQ2FjaGVFbnRyeSh2YWx1ZSwgb3B0aW9ucyk7XG5cbiAgICBhd2FpdCB0aGlzLnNhdmVUb0FkYXB0ZXIoY2FjaGVLZXksIGNhY2hlRGF0YSk7XG4gICAgdGhpcy5pbk1lbW9yeUNhY2hlLnNldChjYWNoZUtleSwgY2FjaGVEYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQ2FjaGVFbnRyeTxUPih2YWx1ZTogVCwgb3B0aW9uczogQ2FjaGVNZXRhZGF0YU9wdGlvbnMpOiBDYWNoZVdpdGhNZXRhZGF0YTxUPiB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgZXhwaXJlc0F0OiBudW1iZXI7XG4gICAgaWYgKG9wdGlvbnMudHRsTXMgPCAwKSB7XG4gICAgICBleHBpcmVzQXQgPSAtMTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXhwaXJlc0F0ID0gbm93ICsgb3B0aW9ucy50dGxNcyAtIG9wdGlvbnMuZXhwaXJhdGlvblRocmVzaG9sZE1zO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkYXRhOiB2YWx1ZSxcbiAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgIGNyZWF0ZWRBdDogbm93LFxuICAgICAgICB0dGxNczogb3B0aW9ucy50dGxNcyxcbiAgICAgICAgZXhwaXJhdGlvblRocmVzaG9sZE1zOiBvcHRpb25zLmV4cGlyYXRpb25UaHJlc2hvbGRNcyxcbiAgICAgICAgZXhwaXJlc0F0LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBpc0V4cGlyZWQobWV0YWRhdGE/OiBDYWNoZU1ldGFkYXRhKTogYm9vbGVhbiB7XG4gICAgaWYgKCFtZXRhZGF0YSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKG1ldGFkYXRhLmV4cGlyZXNBdCA8IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBleHBpcmF0aW9uVGltZSA9XG4gICAgICBtZXRhZGF0YS5leHBpcmVzQXQgPz8gKG1ldGFkYXRhLmNyZWF0ZWRBdCAmJiBtZXRhZGF0YS50dGxNcyA/IG1ldGFkYXRhLmNyZWF0ZWRBdCArIG1ldGFkYXRhLnR0bE1zIDogdW5kZWZpbmVkKTtcblxuICAgIGlmIChleHBpcmF0aW9uVGltZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gRGF0ZS5ub3coKSA+PSBleHBpcmF0aW9uVGltZTtcbiAgfVxufVxuIiwKICAgICJleHBvcnQgZnVuY3Rpb24gaXNDYWxsYWJsZSh2YWx1ZTogYW55KTogdmFsdWUgaXMgQ2FsbGFibGVGdW5jdGlvbiB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIjtcbn1cbiIsCiAgICAiZXhwb3J0IGNvbnN0IENBQ0hFX1RUTF9ORVZFUl9FWFBJUkUgPSAtMTtcbiIKICBdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQTBCLElBQTFCOzs7QUNBTyxTQUFTLFVBQVUsQ0FBQyxPQUF1QztBQUFBLEVBQ2hFLE9BQU8sT0FBTyxVQUFVO0FBQUE7OztBREkxQixJQUFNLHNCQUFvQztBQUFBLEVBQ3hDLHVC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QUFpQixPQUFPLE9BQU87QUFBQSxJQUV0RCxNQUFNLEtBQUssY0FBYyxVQUFVLFNBQVM7QUFBQSxJQUM1QyxLQUFLLGNBQWMsSUFBSSxVQUFVLFNBQVM7QUFBQTtBQUFBLEVBR3BDLGdCQUFtQixDQUFDLE9BQVUsU0FBcUQ7QUFBQSxJQUN6RixNQUFNLE1BQU0sS0FBSyxJQUFJO0FBQUEsSUFDckIsSUFBSTtBQUFBLElBQ0osSUFBSSxRQUFRLFFBQVEsR0FBRztBQUFBLE1BQ3JCLFlBQVk7QUFBQSxJQUNkLEVBQU87QUFBQSxNQUNMLFlBQVksTUFBTSxRQUFRLFFBQVEsUUFBUTtBQUFBO0FBQUEsSUFHNUMsT0FBTztBQUFBLE1BQ0wsTUFBTTtBQUFBLE1BQ04sVUFBVTtBQUFBLFFBQ1IsV0FBVztBQUFBLFFBQ1gsT0FBTyxRQUFRO0FBQUEsUUFDZix1QkFBdUIsUUFBUTtBQUFBLFFBQy9CO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQTtBQUFBLEVBR00sU0FBUyxDQUFDLFVBQW1DO0FBQUEsSUFDbkQsSUFBSSxDQUFDLFVBQVU7QUFBQSxNQUNiLE9BQU87QUFBQSxJQUNUO0FBQUEsSUFFQSxJQUFJLFNBQVMsWUFBWSxHQUFHO0FBQUEsTUFDMUIsT0FBTztBQUFBLElBQ1Q7QUFBQSxJQUVBLE1BQU0saUJBQ0osU0FBUyxjQUFjLFNBQVMsYUFBYSxTQUFTLFFBQVEsU0FBUyxZQUFZLFNBQVMsUUFBUTtBQUFBLElBRXRHLElBQUksbUJBQW1CLFdBQVc7QUFBQSxNQUNoQyxPQUFPO0FBQUEsSUFDVDtBQUFBLElBRUEsT0FBTyxLQUFLLElBQUksS0FBSztBQUFBO0FBRXpCOztBRXJLTyxJQUFNLHlCQUF5QjsiLAogICJkZWJ1Z0lkIjogIjNFRUI1NzdDQjg1QTNBRUU2NDc1NkUyMTY0NzU2RTIxIiwKICAibmFtZXMiOiBbXQp9
204
+ //# debugId=30DA823A5C01E72D64756E2164756E21
205
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL2lzQ2FsbGFibGUudHMiLCAiLi4vLi4vc3JjL3V0aWxzL2lzUHJvbWlzZS50cyIsICIuLi8uLi9zcmMvY2FjaGUvY2FjaGVTZXJ2aWNlLnRzIiwgIi4uLy4uL3NyYy9jYWNoZS9jb25zdGFudHMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbCiAgICAiZXhwb3J0IGZ1bmN0aW9uIGlzQ2FsbGFibGUodmFsdWU6IGFueSk6IHZhbHVlIGlzIENhbGxhYmxlRnVuY3Rpb24ge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCI7XG59XG4iLAogICAgIi8qKlxuICogQHBhcmFtIHZhbHVlIHVua25vd25cbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2U8VCA9IGFueT4odmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBQcm9taXNlPFQ+IHtcbiAgcmV0dXJuIChcbiAgICAhIXZhbHVlICYmXG4gICAgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIikgJiZcbiAgICBcInRoZW5cIiBpbiB2YWx1ZSAmJlxuICAgIHR5cGVvZiB2YWx1ZS50aGVuID09PSBcImZ1bmN0aW9uXCJcbiAgKTtcbn1cbiIsCiAgICAiaW1wb3J0IHsgaXNDYWxsYWJsZSB9IGZyb20gXCIuLi91dGlscy9pc0NhbGxhYmxlLnRzXCI7XG5pbXBvcnQgeyBpc1Byb21pc2UgfSBmcm9tIFwiLi4vdXRpbHMvaXNQcm9taXNlLnRzXCI7XG5pbXBvcnQgdHlwZSB7IENhY2hlTWV0YWRhdGFPcHRpb25zLCBDYWNoZU9wdGlvbnMsIENhY2hlV2l0aE1ldGFkYXRhLCBWYWx1ZUxvYWRlciB9IGZyb20gXCIuL2ludGVybmFsL3R5cGVzLnRzXCI7XG5pbXBvcnQgdHlwZSB7IENhY2hlTWV0YWRhdGEsIElDYWNoZUFkYXB0ZXIgfSBmcm9tIFwiLi90eXBlcy50c1wiO1xuXG5jb25zdCBkZWZhdWx0Q2FjaGVPcHRpb25zOiBDYWNoZU9wdGlvbnMgPSB7XG4gIGV4cGlyYXRpb25UaHJlc2hvbGRNczogMCxcbiAgdHRsTXM6IDYwICogNjAgKiAxMDAwLFxufTtcblxuZXhwb3J0IGNsYXNzIENhY2hlPFRBZGFwdGVyIGV4dGVuZHMgSUNhY2hlQWRhcHRlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZD4ge1xuICBwcml2YXRlIGluTWVtb3J5Q2FjaGU6IE1hcDxzdHJpbmcsIENhY2hlV2l0aE1ldGFkYXRhPiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBDYWNoZU9wdGlvbnM7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWRhcHRlcj86IFRBZGFwdGVyO1xuXG4gIGNvbnN0cnVjdG9yKGRlZmF1bHRPcHRpb25zPzogUGFydGlhbDxDYWNoZU9wdGlvbnM+KTtcbiAgY29uc3RydWN0b3IoYWRhcHRlcj86IFRBZGFwdGVyLCBkZWZhdWx0T3B0aW9ucz86IFBhcnRpYWw8Q2FjaGVPcHRpb25zPik7XG4gIGNvbnN0cnVjdG9yKGFkYXB0ZXI/OiBUQWRhcHRlciB8IFBhcnRpYWw8Q2FjaGVPcHRpb25zPiwgZGVmYXVsdE9wdGlvbnM/OiBQYXJ0aWFsPENhY2hlT3B0aW9ucz4pIHtcbiAgICBjb25zdCBvcHRpb25zID0gYWRhcHRlciAmJiAhKFwiZ2V0VmFsdWVcIiBpbiBhZGFwdGVyKSA/IChhZGFwdGVyIGFzIFBhcnRpYWw8Q2FjaGVPcHRpb25zPikgOiBkZWZhdWx0T3B0aW9ucztcbiAgICBpZiAoYWRhcHRlciAmJiBcImdldFZhbHVlXCIgaW4gYWRhcHRlciAmJiBcInNldFZhbHVlXCIgaW4gYWRhcHRlcikge1xuICAgICAgdGhpcy5hZGFwdGVyID0gYWRhcHRlciBhcyBUQWRhcHRlcjtcbiAgICB9XG5cbiAgICB0aGlzLm9wdGlvbnMgPSB7XG4gICAgICAuLi5kZWZhdWx0Q2FjaGVPcHRpb25zLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRGcm9tQWRhcHRlcjxUPihjYWNoZUtleTogc3RyaW5nKTogUHJvbWlzZTxUIHwgdW5kZWZpbmVkPiB7XG4gICAgaWYgKCF0aGlzLmFkYXB0ZXIpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYWRhcHRlci5nZXRWYWx1ZShjYWNoZUtleSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNhdmVUb0FkYXB0ZXI8VD4oY2FjaGVLZXk6IHN0cmluZywgdmFsdWU6IFQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuYWRhcHRlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuc2V0VmFsdWU8VD4oY2FjaGVLZXksIHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXQ8VD4oXG4gICAgY2FjaGVLZXk6IHN0cmluZyxcbiAgICB2YWx1ZUxvYWRlcj86IFZhbHVlTG9hZGVyPFQ+LFxuICAgIG9wdGlvbnM6IFBhcnRpYWw8Q2FjaGVNZXRhZGF0YU9wdGlvbnM+ID0ge30sXG4gICk6IFByb21pc2U8VCB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSB0aGlzLm1lcmdlT3B0aW9ucyhvcHRpb25zKTtcblxuICAgIC8vIFRyeSBpbi1tZW1vcnkgY2FjaGUgZmlyc3RcbiAgICBjb25zdCBjYWNoZWRWYWx1ZSA9IHRoaXMudHJ5R2V0RnJvbU1lbW9yeTxUPihjYWNoZUtleSk7XG4gICAgaWYgKGNhY2hlZFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBjYWNoZWRWYWx1ZTtcbiAgICB9XG5cbiAgICAvLyBMb2FkIGZyZXNoIHZhbHVlIGZyb20gbG9hZGVyIGZ1bmN0aW9uIGZpcnN0XG4gICAgY29uc3QgZnJlc2hWYWx1ZSA9IGF3YWl0IHRoaXMudHJ5R2V0RnJvbVZhbHVlTG9hZGVyKHZhbHVlTG9hZGVyKTtcbiAgICBpZiAoZnJlc2hWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBhd2FpdCB0aGlzLmNhY2hlVmFsdWUoY2FjaGVLZXksIGZyZXNoVmFsdWUsIG1lcmdlZE9wdGlvbnMpO1xuXG4gICAgICByZXR1cm4gZnJlc2hWYWx1ZTtcbiAgICB9XG5cbiAgICAvLyBUcnkgYWRhcHRlciBjYWNoZSBzZWNvbmRcbiAgICBjb25zdCBhZGFwdGVyVmFsdWUgPSBhd2FpdCB0aGlzLnRyeUdldEZyb21BZGFwdGVyPFQ+KGNhY2hlS2V5KTtcbiAgICBpZiAoYWRhcHRlclZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGF3YWl0IHRoaXMuY2FjaGVWYWx1ZShjYWNoZUtleSwgYWRhcHRlclZhbHVlLCBtZXJnZWRPcHRpb25zKTtcblxuICAgICAgcmV0dXJuIGFkYXB0ZXJWYWx1ZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1lcmdlT3B0aW9ucyhvcHRpb25zOiBQYXJ0aWFsPENhY2hlTWV0YWRhdGFPcHRpb25zPik6IENhY2hlTWV0YWRhdGFPcHRpb25zIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHRsTXM6IHRoaXMub3B0aW9ucy50dGxNcyxcbiAgICAgIGV4cGlyYXRpb25UaHJlc2hvbGRNczogdGhpcy5vcHRpb25zLmV4cGlyYXRpb25UaHJlc2hvbGRNcyxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgdHJ5R2V0RnJvbU1lbW9yeTxUPihjYWNoZUtleTogc3RyaW5nKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgY2FjaGVkID0gdGhpcy5pbk1lbW9yeUNhY2hlLmdldChjYWNoZUtleSk7XG5cbiAgICBpZiAoY2FjaGVkICYmICF0aGlzLmlzRXhwaXJlZChjYWNoZWQubWV0YWRhdGEpKSB7XG4gICAgICByZXR1cm4gY2FjaGVkLmRhdGEgYXMgVDtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB0cnlHZXRGcm9tQWRhcHRlcjxUPihjYWNoZUtleTogc3RyaW5nKTogUHJvbWlzZTxUIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgY2FjaGVkID0gYXdhaXQgdGhpcy5nZXRGcm9tQWRhcHRlcjxDYWNoZVdpdGhNZXRhZGF0YTxUPj4oY2FjaGVLZXkpO1xuXG4gICAgaWYgKGNhY2hlZCAmJiAhdGhpcy5pc0V4cGlyZWQoY2FjaGVkLm1ldGFkYXRhKSkge1xuICAgICAgdGhpcy5pbk1lbW9yeUNhY2hlLnNldChjYWNoZUtleSwgY2FjaGVkKTtcbiAgICAgIHJldHVybiBjYWNoZWQuZGF0YTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB0cnlHZXRGcm9tVmFsdWVMb2FkZXI8VD4odmFsdWVMb2FkZXI/OiBWYWx1ZUxvYWRlcjxUPik6IFByb21pc2U8VCB8IHVuZGVmaW5lZD4ge1xuICAgIGlmICh2YWx1ZUxvYWRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmIChpc0NhbGxhYmxlKHZhbHVlTG9hZGVyKSkge1xuICAgICAgcmV0dXJuIGF3YWl0IHZhbHVlTG9hZGVyKCk7XG4gICAgfVxuXG4gICAgaWYgKGlzUHJvbWlzZSh2YWx1ZUxvYWRlcikpIHtcbiAgICAgIHJldHVybiBhd2FpdCB2YWx1ZUxvYWRlcjtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWVMb2FkZXI7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNhY2hlVmFsdWU8VD4oY2FjaGVLZXk6IHN0cmluZywgdmFsdWU6IFQsIG9wdGlvbnM6IENhY2hlTWV0YWRhdGFPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY2FjaGVEYXRhID0gdGhpcy5jcmVhdGVDYWNoZUVudHJ5KHZhbHVlLCBvcHRpb25zKTtcblxuICAgIGF3YWl0IHRoaXMuc2F2ZVRvQWRhcHRlcihjYWNoZUtleSwgY2FjaGVEYXRhKTtcbiAgICB0aGlzLmluTWVtb3J5Q2FjaGUuc2V0KGNhY2hlS2V5LCBjYWNoZURhdGEpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDYWNoZUVudHJ5PFQ+KHZhbHVlOiBULCBvcHRpb25zOiBDYWNoZU1ldGFkYXRhT3B0aW9ucyk6IENhY2hlV2l0aE1ldGFkYXRhPFQ+IHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGxldCBleHBpcmVzQXQ6IG51bWJlcjtcbiAgICBpZiAob3B0aW9ucy50dGxNcyA8IDApIHtcbiAgICAgIGV4cGlyZXNBdCA9IC0xO1xuICAgIH0gZWxzZSB7XG4gICAgICBleHBpcmVzQXQgPSBub3cgKyBvcHRpb25zLnR0bE1zIC0gb3B0aW9ucy5leHBpcmF0aW9uVGhyZXNob2xkTXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGE6IHZhbHVlLFxuICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgY3JlYXRlZEF0OiBub3csXG4gICAgICAgIHR0bE1zOiBvcHRpb25zLnR0bE1zLFxuICAgICAgICBleHBpcmF0aW9uVGhyZXNob2xkTXM6IG9wdGlvbnMuZXhwaXJhdGlvblRocmVzaG9sZE1zLFxuICAgICAgICBleHBpcmVzQXQsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGlzRXhwaXJlZChtZXRhZGF0YT86IENhY2hlTWV0YWRhdGEpOiBib29sZWFuIHtcbiAgICBpZiAoIW1ldGFkYXRhKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAobWV0YWRhdGEuZXhwaXJlc0F0IDwgMCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGV4cGlyYXRpb25UaW1lID1cbiAgICAgIG1ldGFkYXRhLmV4cGlyZXNBdCA/PyAobWV0YWRhdGEuY3JlYXRlZEF0ICYmIG1ldGFkYXRhLnR0bE1zID8gbWV0YWRhdGEuY3JlYXRlZEF0ICsgbWV0YWRhdGEudHRsTXMgOiB1bmRlZmluZWQpO1xuXG4gICAgaWYgKGV4cGlyYXRpb25UaW1lID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBEYXRlLm5vdygpID49IGV4cGlyYXRpb25UaW1lO1xuICB9XG59XG4iLAogICAgImV4cG9ydCBjb25zdCBDQUNIRV9UVExfTkVWRVJfRVhQSVJFID0gLTE7XG4iCiAgXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFPLFNBQVMsVUFBVSxDQUFDLE9BQXVDO0FBQUEsRUFDaEUsT0FBTyxPQUFPLFVBQVU7QUFBQTs7O0FDR25CLFNBQVMsU0FBa0IsQ0FBQyxPQUFxQztBQUFBLEVBQ3RFLE9BQ0UsQ0FBQyxDQUFDLFVBQ0QsT0FBTyxVQUFVLFlBQVksT0FBTyxVQUFVLGVBQy9DLFVBQVUsU0FDVixPQUFPLE1BQU0sU0FBUztBQUFBOzs7QUNKMUIsSUFBTSxzQkFBb0M7QUFBQSxFQUN4Qyx1QkFBdUI7QUFBQSxFQUN2QixPQUFPLEtBQUssS0FBSztBQUNuQjtBQUFBO0FBRU8sTUFBTSxNQUE4RDtBQUFBLEVBQ2pFLGdCQUFnRCxJQUFJO0FBQUEsRUFDM0M7QUFBQSxFQUNBO0FBQUEsRUFJakIsV0FBVyxDQUFDLFNBQTRDLGdCQUF3QztBQUFBLElBQzlGLE1BQU0sVUFBVSxXQUFXLEVBQUUsY0FBYyxXQUFZLFVBQW9DO0FBQUEsSUFDM0YsSUFBSSxXQUFXLGNBQWMsV0FBVyxjQUFjLFNBQVM7QUFBQSxNQUM3RCxLQUFLLFVBQVU7QUFBQSxJQUNqQjtBQUFBLElBRUEsS0FBSyxVQUFVO0FBQUEsU0FDVjtBQUFBLFNBQ0E7QUFBQSxJQUNMO0FBQUE7QUFBQSxPQUdZLGVBQWlCLENBQUMsVUFBMEM7QUFBQSxJQUN4RSxJQUFJLENBQUMsS0FBSyxTQUFTO0FBQUEsTUFDakI7QUFBQSxJQUNGO0FBQUEsSUFFQSxPQUFPLEtBQUssUUFBUSxTQUFTLFFBQVE7QUFBQTtBQUFBLE9BR3pCLGNBQWdCLENBQUMsVUFBa0IsT0FBeUI7QUFBQSxJQUN4RSxJQUFJLENBQUMsS0FBSyxTQUFTO0FBQUEsTUFDakI7QUFBQSxJQUNGO0FBQUEsSUFFQSxPQUFPLEtBQUssUUFBUSxTQUFZLFVBQVUsS0FBSztBQUFBO0FBQUEsT0FHcEMsSUFBTSxDQUNqQixVQUNBLGFBQ0EsVUFBeUMsQ0FBQyxHQUNsQjtBQUFBLElBQ3hCLE1BQU0sZ0JBQWdCLEtBQUssYUFBYSxPQUFPO0FBQUEsSUFHL0MsTUFBTSxjQUFjLEtBQUssaUJBQW9CLFFBQVE7QUFBQSxJQUNyRCxJQUFJLGdCQUFnQixXQUFXO0FBQUEsTUFDN0IsT0FBTztBQUFBLElBQ1Q7QUFBQSxJQUdBLE1BQU0sYUFBYSxNQUFNLEtBQUssc0JBQXNCLFdBQVc7QUFBQSxJQUMvRCxJQUFJLGVBQWUsV0FBVztBQUFBLE1BQzVCLE1BQU0sS0FBSyxXQUFXLFVBQVUsWUFBWSxhQUFhO0FBQUEsTUFFekQsT0FBTztBQUFBLElBQ1Q7QUFBQSxJQUdBLE1BQU0sZUFBZSxNQUFNLEtBQUssa0JBQXFCLFFBQVE7QUFBQSxJQUM3RCxJQUFJLGlCQUFpQixXQUFXO0FBQUEsTUFDOUIsTUFBTSxLQUFLLFdBQVcsVUFBVSxjQUFjLGFBQWE7QUFBQSxNQUUzRCxPQUFPO0FBQUEsSUFDVDtBQUFBO0FBQUEsRUFHTSxZQUFZLENBQUMsU0FBOEQ7QUFBQSxJQUNqRixPQUFPO0FBQUEsTUFDTCxPQUFPLEtBQUssUUFBUTtBQUFBLE1BQ3BCLHVCQUF1QixLQUFLLFFBQVE7QUFBQSxTQUNqQztBQUFBLElBQ0w7QUFBQTtBQUFBLEVBR00sZ0JBQW1CLENBQUMsVUFBaUM7QUFBQSxJQUMzRCxNQUFNLFNBQVMsS0FBSyxjQUFjLElBQUksUUFBUTtBQUFBLElBRTlDLElBQUksVUFBVSxDQUFDLEtBQUssVUFBVSxPQUFPLFFBQVEsR0FBRztBQUFBLE1BQzlDLE9BQU8sT0FBTztBQUFBLElBQ2hCO0FBQUEsSUFFQTtBQUFBO0FBQUEsT0FHWSxrQkFBb0IsQ0FBQyxVQUEwQztBQUFBLElBQzNFLE1BQU0sU0FBUyxNQUFNLEtBQUssZUFBcUMsUUFBUTtBQUFBLElBRXZFLElBQUksVUFBVSxDQUFDLEtBQUssVUFBVSxPQUFPLFFBQVEsR0FBRztBQUFBLE1BQzlDLEtBQUssY0FBYyxJQUFJLFVBQVUsTUFBTTtBQUFBLE1BQ3ZDLE9BQU8sT0FBTztBQUFBLElBQ2hCO0FBQUEsSUFFQTtBQUFBO0FBQUEsT0FHWSxzQkFBd0IsQ0FBQyxhQUFzRDtBQUFBLElBQzNGLElBQUksZ0JBQWdCLFdBQVc7QUFBQSxNQUM3QjtBQUFBLElBQ0Y7QUFBQSxJQUVBLElBQUksV0FBVyxXQUFXLEdBQUc7QUFBQSxNQUMzQixPQUFPLE1BQU0sWUFBWTtBQUFBLElBQzNCO0FBQUEsSUFFQSxJQUFJLFVBQVUsV0FBVyxHQUFHO0FBQUEsTUFDMUIsT0FBTyxNQUFNO0FBQUEsSUFDZjtBQUFBLElBRUEsT0FBTztBQUFBO0FBQUEsT0FHSyxXQUFhLENBQUMsVUFBa0IsT0FBVSxTQUE4QztBQUFBLElBQ3BHLE1BQU0sWUFBWSxLQUFLLGlCQUFpQixPQUFPLE9BQU87QUFBQSxJQUV0RCxNQUFNLEtBQUssY0FBYyxVQUFVLFNBQVM7QUFBQSxJQUM1QyxLQUFLLGNBQWMsSUFBSSxVQUFVLFNBQVM7QUFBQTtBQUFBLEVBR3BDLGdCQUFtQixDQUFDLE9BQVUsU0FBcUQ7QUFBQSxJQUN6RixNQUFNLE1BQU0sS0FBSyxJQUFJO0FBQUEsSUFDckIsSUFBSTtBQUFBLElBQ0osSUFBSSxRQUFRLFFBQVEsR0FBRztBQUFBLE1BQ3JCLFlBQVk7QUFBQSxJQUNkLEVBQU87QUFBQSxNQUNMLFlBQVksTUFBTSxRQUFRLFFBQVEsUUFBUTtBQUFBO0FBQUEsSUFHNUMsT0FBTztBQUFBLE1BQ0wsTUFBTTtBQUFBLE1BQ04sVUFBVTtBQUFBLFFBQ1IsV0FBVztBQUFBLFFBQ1gsT0FBTyxRQUFRO0FBQUEsUUFDZix1QkFBdUIsUUFBUTtBQUFBLFFBQy9CO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQTtBQUFBLEVBR00sU0FBUyxDQUFDLFVBQW1DO0FBQUEsSUFDbkQsSUFBSSxDQUFDLFVBQVU7QUFBQSxNQUNiLE9BQU87QUFBQSxJQUNUO0FBQUEsSUFFQSxJQUFJLFNBQVMsWUFBWSxHQUFHO0FBQUEsTUFDMUIsT0FBTztBQUFBLElBQ1Q7QUFBQSxJQUVBLE1BQU0saUJBQ0osU0FBUyxjQUFjLFNBQVMsYUFBYSxTQUFTLFFBQVEsU0FBUyxZQUFZLFNBQVMsUUFBUTtBQUFBLElBRXRHLElBQUksbUJBQW1CLFdBQVc7QUFBQSxNQUNoQyxPQUFPO0FBQUEsSUFDVDtBQUFBLElBRUEsT0FBTyxLQUFLLElBQUksS0FBSztBQUFBO0FBRXpCOztBQ3JLTyxJQUFNLHlCQUF5QjsiLAogICJkZWJ1Z0lkIjogIjMwREE4MjNBNUMwMUU3MkQ2NDc1NkUyMTY0NzU2RTIxIiwKICAibmFtZXMiOiBbXQp9
@@ -4,38 +4,59 @@ var __defProp = Object.defineProperty;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ function __accessProp(key) {
8
+ return this[key];
9
+ }
10
+ var __toESMCache_node;
11
+ var __toESMCache_esm;
7
12
  var __toESM = (mod, isNodeMode, target) => {
13
+ var canCache = mod != null && typeof mod === "object";
14
+ if (canCache) {
15
+ var cache = isNodeMode ? __toESMCache_node ??= new WeakMap : __toESMCache_esm ??= new WeakMap;
16
+ var cached = cache.get(mod);
17
+ if (cached)
18
+ return cached;
19
+ }
8
20
  target = mod != null ? __create(__getProtoOf(mod)) : {};
9
21
  const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
10
22
  for (let key of __getOwnPropNames(mod))
11
23
  if (!__hasOwnProp.call(to, key))
12
24
  __defProp(to, key, {
13
- get: () => mod[key],
25
+ get: __accessProp.bind(mod, key),
14
26
  enumerable: true
15
27
  });
28
+ if (canCache)
29
+ cache.set(mod, to);
16
30
  return to;
17
31
  };
18
- var __moduleCache = /* @__PURE__ */ new WeakMap;
19
32
  var __toCommonJS = (from) => {
20
- var entry = __moduleCache.get(from), desc;
33
+ var entry = (__moduleCache ??= new WeakMap).get(from), desc;
21
34
  if (entry)
22
35
  return entry;
23
36
  entry = __defProp({}, "__esModule", { value: true });
24
- if (from && typeof from === "object" || typeof from === "function")
25
- __getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
26
- get: () => from[key],
27
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
28
- }));
37
+ if (from && typeof from === "object" || typeof from === "function") {
38
+ for (var key of __getOwnPropNames(from))
39
+ if (!__hasOwnProp.call(entry, key))
40
+ __defProp(entry, key, {
41
+ get: __accessProp.bind(from, key),
42
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
43
+ });
44
+ }
29
45
  __moduleCache.set(from, entry);
30
46
  return entry;
31
47
  };
48
+ var __moduleCache;
49
+ var __returnValue = (v) => v;
50
+ function __exportSetter(name, newValue) {
51
+ this[name] = __returnValue.bind(null, newValue);
52
+ }
32
53
  var __export = (target, all) => {
33
54
  for (var name in all)
34
55
  __defProp(target, name, {
35
56
  get: all[name],
36
57
  enumerable: true,
37
58
  configurable: true,
38
- set: (newValue) => all[name] = () => newValue
59
+ set: __exportSetter.bind(all, name)
39
60
  });
40
61
  };
41
62
 
@@ -111,5 +132,5 @@ for (const [colorName, colorValue] of Object.entries(COLORS_MAP)) {
111
132
  }
112
133
  var colors_default = colors;
113
134
 
114
- //# debugId=34FC3A7A08D5655564756E2164756E21
115
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NvbG9ycy9pbmRleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsKICAgICIvLyBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9KQmxvbmQvMmZlYTQzYTMwNDliMzgyODdlNWU5Y2VmYzg3YjIxMjRcblxuY29uc3QgX19yZXNldCA9IFwiXFx4MWJbMG1cIjtcblxuZW51bSBDT0xPUlNfTUFQIHtcbiAgYmxhY2sgPSBcIlxceDFiWzA7MzBtXCIsXG4gIHJlZCA9IFwiXFx4MWJbMDszMW1cIixcbiAgZ3JlZW4gPSBcIlxceDFiWzA7MzJtXCIsXG4gIHllbGxvdyA9IFwiXFx4MWJbMDszM21cIixcbiAgYmx1ZSA9IFwiXFx4MWJbMDszNG1cIixcbiAgcHVycGxlID0gXCJcXHgxYlswOzM1bVwiLFxuICBtYWdlbnRhID0gXCJcXHgxYlswOzM1bVwiLFxuICBjeWFuID0gXCJcXHgxYlswOzM2bVwiLFxuICB3aGl0ZSA9IFwiXFx4MWJbMDszN21cIixcblxuICBibGFja0JyaWdodCA9IFwiXFx4MWJbMDs5MG1cIixcbiAgcmVkQnJpZ2h0ID0gXCJcXHgxYlswOzkxbVwiLFxuICBncmVlbkJyaWdodCA9IFwiXFx4MWJbMDs5Mm1cIixcbiAgeWVsbG93QnJpZ2h0ID0gXCJcXHgxYlswOzkzbVwiLFxuICBibHVlQnJpZ2h0ID0gXCJcXHgxYlswOzk0bVwiLFxuICBwdXJwbGVCcmlnaHQgPSBcIlxceDFiWzA7OTVtXCIsXG4gIG1hZ2VudGFCcmlnaHQgPSBcIlxceDFiWzA7OTVtXCIsXG4gIGN5YW5CcmlnaHQgPSBcIlxceDFiWzA7OTZtXCIsXG4gIHdoaXRlQnJpZ2h0ID0gXCJcXHgxYlswOzk3bVwiLFxuXG4gIHJlZEJvbGQgPSBcIlxceDFiWzE7MzFtXCIsXG4gIGdyZWVuQm9sZCA9IFwiXFx4MWJbMTszMm1cIixcbiAgeWVsbG93Qm9sZCA9IFwiXFx4MWJbMTszM21cIixcbiAgYmx1ZUJvbGQgPSBcIlxceDFiWzE7MzRtXCIsXG4gIHB1cnBsZUJvbGQgPSBcIlxceDFiWzE7MzVtXCIsXG4gIG1hZ2VudGFCb2xkID0gXCJcXHgxYlsxOzM1bVwiLFxuICBjeWFuQm9sZCA9IFwiXFx4MWJbMTszNm1cIixcbiAgd2hpdGVCb2xkID0gXCJcXHgxYlsxOzM3bVwiLFxuXG4gIGJsYWNrVW5kZXJsaW5lID0gXCJcXHgxYls0OzMwbVwiLFxuICByZWRVbmRlcmxpbmUgPSBcIlxceDFiWzQ7MzFtXCIsXG4gIGdyZWVuVW5kZXJsaW5lID0gXCJcXHgxYls0OzMybVwiLFxuICB5ZWxsb3dVbmRlcmxpbmUgPSBcIlxceDFiWzQ7MzNtXCIsXG4gIGJsdWVVbmRlcmxpbmUgPSBcIlxceDFiWzQ7MzRtXCIsXG4gIHB1cnBsZVVuZGVybGluZSA9IFwiXFx4MWJbNDszNW1cIixcbiAgbWFnZW50YVVuZGVybGluZSA9IFwiXFx4MWJbNDszNW1cIixcbiAgY3lhblVuZGVybGluZSA9IFwiXFx4MWJbNDszNm1cIixcbiAgd2hpdGVVbmRlcmxpbmUgPSBcIlxceDFiWzQ7MzdtXCIsXG5cbiAgYmdCbGFjayA9IFwiXFx4MWJbNDBtXCIsXG4gIGJnUmVkID0gXCJcXHgxYls0MW1cIixcbiAgYmdHcmVlbiA9IFwiXFx4MWJbNDJtXCIsXG4gIGJnWWVsbG93ID0gXCJcXHgxYls0M21cIixcbiAgYmdCbHVlID0gXCJcXHgxYls0NG1cIixcbiAgYmdQdXJwbGUgPSBcIlxceDFiWzQ1bVwiLFxuICBiZ01hZ2VudGEgPSBcIlxceDFiWzQ1bVwiLFxuICBiZ0N5YW4gPSBcIlxceDFiWzQ2bVwiLFxuICBiZ1doaXRlID0gXCJcXHgxYls0N21cIixcblxuICBiZ0JsYWNrQnJpZ2h0ID0gXCJcXHgxYlsxMDBtXCIsXG4gIGJnUmVkQnJpZ2h0ID0gXCJcXHgxYlsxMDFtXCIsXG4gIGJnR3JlZW5CcmlnaHQgPSBcIlxceDFiWzEwMm1cIixcbiAgYmdZZWxsb3dCcmlnaHQgPSBcIlxceDFiWzEwM21cIixcbiAgYmdCbHVlQnJpZ2h0ID0gXCJcXHgxYlsxMDRtXCIsXG4gIGJnUHVycGxlQnJpZ2h0ID0gXCJcXHgxYlsxMDVtXCIsXG4gIGJnTWFnZW50YUJyaWdodCA9IFwiXFx4MWJbMTA1bVwiLFxuICBiZ0N5YW5CcmlnaHQgPSBcIlxceDFiWzEwNm1cIixcbiAgYmdXaGl0ZUJyaWdodCA9IFwiXFx4MWJbMTA3bVwiLFxufVxuXG5mdW5jdGlvbiB3cmFwKGNvbG9yOiBzdHJpbmcpIHtcbiAgcmV0dXJuIChkYXRhOiB1bmtub3duKSA9PiBgJHtjb2xvcn0ke2RhdGF9JHtfX3Jlc2V0fWA7XG59XG5cbmNvbnN0IGNvbG9yczogUmVjb3JkPGtleW9mIHR5cGVvZiBDT0xPUlNfTUFQLCBSZXR1cm5UeXBlPHR5cGVvZiB3cmFwPj4gPSB7fSBhcyBhbnk7XG5cbmZvciAoY29uc3QgW2NvbG9yTmFtZSwgY29sb3JWYWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoQ09MT1JTX01BUCkpIHtcbiAgY29sb3JzW2NvbG9yTmFtZSBhcyBrZXlvZiB0eXBlb2YgQ09MT1JTX01BUF0gPSB3cmFwKGNvbG9yVmFsdWUpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjb2xvcnM7XG4iCiAgXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLElBQU0sVUFBVTtBQUVoQixJQUFLO0FBQUEsQ0FBTCxDQUFLLGdCQUFMO0FBQUEsRUFDRSx1QkFBUTtBQUFBLEVBQ1IscUJBQU07QUFBQSxFQUNOLHVCQUFRO0FBQUEsRUFDUix3QkFBUztBQUFBLEVBQ1Qsc0JBQU87QUFBQSxFQUNQLHdCQUFTO0FBQUEsRUFDVCx5QkFBVTtBQUFBLEVBQ1Ysc0JBQU87QUFBQSxFQUNQLHVCQUFRO0FBQUEsRUFFUiw2QkFBYztBQUFBLEVBQ2QsMkJBQVk7QUFBQSxFQUNaLDZCQUFjO0FBQUEsRUFDZCw4QkFBZTtBQUFBLEVBQ2YsNEJBQWE7QUFBQSxFQUNiLDhCQUFlO0FBQUEsRUFDZiwrQkFBZ0I7QUFBQSxFQUNoQiw0QkFBYTtBQUFBLEVBQ2IsNkJBQWM7QUFBQSxFQUVkLHlCQUFVO0FBQUEsRUFDViwyQkFBWTtBQUFBLEVBQ1osNEJBQWE7QUFBQSxFQUNiLDBCQUFXO0FBQUEsRUFDWCw0QkFBYTtBQUFBLEVBQ2IsNkJBQWM7QUFBQSxFQUNkLDBCQUFXO0FBQUEsRUFDWCwyQkFBWTtBQUFBLEVBRVosZ0NBQWlCO0FBQUEsRUFDakIsOEJBQWU7QUFBQSxFQUNmLGdDQUFpQjtBQUFBLEVBQ2pCLGlDQUFrQjtBQUFBLEVBQ2xCLCtCQUFnQjtBQUFBLEVBQ2hCLGlDQUFrQjtBQUFBLEVBQ2xCLGtDQUFtQjtBQUFBLEVBQ25CLCtCQUFnQjtBQUFBLEVBQ2hCLGdDQUFpQjtBQUFBLEVBRWpCLHlCQUFVO0FBQUEsRUFDVix1QkFBUTtBQUFBLEVBQ1IseUJBQVU7QUFBQSxFQUNWLDBCQUFXO0FBQUEsRUFDWCx3QkFBUztBQUFBLEVBQ1QsMEJBQVc7QUFBQSxFQUNYLDJCQUFZO0FBQUEsRUFDWix3QkFBUztBQUFBLEVBQ1QseUJBQVU7QUFBQSxFQUVWLCtCQUFnQjtBQUFBLEVBQ2hCLDZCQUFjO0FBQUEsRUFDZCwrQkFBZ0I7QUFBQSxFQUNoQixnQ0FBaUI7QUFBQSxFQUNqQiw4QkFBZTtBQUFBLEVBQ2YsZ0NBQWlCO0FBQUEsRUFDakIsaUNBQWtCO0FBQUEsRUFDbEIsOEJBQWU7QUFBQSxFQUNmLCtCQUFnQjtBQUFBLEdBMURiO0FBNkRMLFNBQVMsSUFBSSxDQUFDLE9BQWU7QUFBQSxFQUMzQixPQUFPLENBQUMsU0FBa0IsR0FBRyxRQUFRLE9BQU87QUFBQTtBQUc5QyxJQUFNLFNBQW1FLENBQUM7QUFFMUUsWUFBWSxXQUFXLGVBQWUsT0FBTyxRQUFRLFVBQVUsR0FBRztBQUFBLEVBQ2hFLE9BQU8sYUFBd0MsS0FBSyxVQUFVO0FBQ2hFO0FBRUEsSUFBZTsiLAogICJkZWJ1Z0lkIjogIjM0RkMzQTdBMDhENTY1NTU2NDc1NkUyMTY0NzU2RTIxIiwKICAibmFtZXMiOiBbXQp9
135
+ //# debugId=2C3E18971B7F59B364756E2164756E21
136
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NvbG9ycy9pbmRleC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsKICAgICIvLyBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9KQmxvbmQvMmZlYTQzYTMwNDliMzgyODdlNWU5Y2VmYzg3YjIxMjRcblxuY29uc3QgX19yZXNldCA9IFwiXFx4MWJbMG1cIjtcblxuZW51bSBDT0xPUlNfTUFQIHtcbiAgYmxhY2sgPSBcIlxceDFiWzA7MzBtXCIsXG4gIHJlZCA9IFwiXFx4MWJbMDszMW1cIixcbiAgZ3JlZW4gPSBcIlxceDFiWzA7MzJtXCIsXG4gIHllbGxvdyA9IFwiXFx4MWJbMDszM21cIixcbiAgYmx1ZSA9IFwiXFx4MWJbMDszNG1cIixcbiAgcHVycGxlID0gXCJcXHgxYlswOzM1bVwiLFxuICBtYWdlbnRhID0gXCJcXHgxYlswOzM1bVwiLFxuICBjeWFuID0gXCJcXHgxYlswOzM2bVwiLFxuICB3aGl0ZSA9IFwiXFx4MWJbMDszN21cIixcblxuICBibGFja0JyaWdodCA9IFwiXFx4MWJbMDs5MG1cIixcbiAgcmVkQnJpZ2h0ID0gXCJcXHgxYlswOzkxbVwiLFxuICBncmVlbkJyaWdodCA9IFwiXFx4MWJbMDs5Mm1cIixcbiAgeWVsbG93QnJpZ2h0ID0gXCJcXHgxYlswOzkzbVwiLFxuICBibHVlQnJpZ2h0ID0gXCJcXHgxYlswOzk0bVwiLFxuICBwdXJwbGVCcmlnaHQgPSBcIlxceDFiWzA7OTVtXCIsXG4gIG1hZ2VudGFCcmlnaHQgPSBcIlxceDFiWzA7OTVtXCIsXG4gIGN5YW5CcmlnaHQgPSBcIlxceDFiWzA7OTZtXCIsXG4gIHdoaXRlQnJpZ2h0ID0gXCJcXHgxYlswOzk3bVwiLFxuXG4gIHJlZEJvbGQgPSBcIlxceDFiWzE7MzFtXCIsXG4gIGdyZWVuQm9sZCA9IFwiXFx4MWJbMTszMm1cIixcbiAgeWVsbG93Qm9sZCA9IFwiXFx4MWJbMTszM21cIixcbiAgYmx1ZUJvbGQgPSBcIlxceDFiWzE7MzRtXCIsXG4gIHB1cnBsZUJvbGQgPSBcIlxceDFiWzE7MzVtXCIsXG4gIG1hZ2VudGFCb2xkID0gXCJcXHgxYlsxOzM1bVwiLFxuICBjeWFuQm9sZCA9IFwiXFx4MWJbMTszNm1cIixcbiAgd2hpdGVCb2xkID0gXCJcXHgxYlsxOzM3bVwiLFxuXG4gIGJsYWNrVW5kZXJsaW5lID0gXCJcXHgxYls0OzMwbVwiLFxuICByZWRVbmRlcmxpbmUgPSBcIlxceDFiWzQ7MzFtXCIsXG4gIGdyZWVuVW5kZXJsaW5lID0gXCJcXHgxYls0OzMybVwiLFxuICB5ZWxsb3dVbmRlcmxpbmUgPSBcIlxceDFiWzQ7MzNtXCIsXG4gIGJsdWVVbmRlcmxpbmUgPSBcIlxceDFiWzQ7MzRtXCIsXG4gIHB1cnBsZVVuZGVybGluZSA9IFwiXFx4MWJbNDszNW1cIixcbiAgbWFnZW50YVVuZGVybGluZSA9IFwiXFx4MWJbNDszNW1cIixcbiAgY3lhblVuZGVybGluZSA9IFwiXFx4MWJbNDszNm1cIixcbiAgd2hpdGVVbmRlcmxpbmUgPSBcIlxceDFiWzQ7MzdtXCIsXG5cbiAgYmdCbGFjayA9IFwiXFx4MWJbNDBtXCIsXG4gIGJnUmVkID0gXCJcXHgxYls0MW1cIixcbiAgYmdHcmVlbiA9IFwiXFx4MWJbNDJtXCIsXG4gIGJnWWVsbG93ID0gXCJcXHgxYls0M21cIixcbiAgYmdCbHVlID0gXCJcXHgxYls0NG1cIixcbiAgYmdQdXJwbGUgPSBcIlxceDFiWzQ1bVwiLFxuICBiZ01hZ2VudGEgPSBcIlxceDFiWzQ1bVwiLFxuICBiZ0N5YW4gPSBcIlxceDFiWzQ2bVwiLFxuICBiZ1doaXRlID0gXCJcXHgxYls0N21cIixcblxuICBiZ0JsYWNrQnJpZ2h0ID0gXCJcXHgxYlsxMDBtXCIsXG4gIGJnUmVkQnJpZ2h0ID0gXCJcXHgxYlsxMDFtXCIsXG4gIGJnR3JlZW5CcmlnaHQgPSBcIlxceDFiWzEwMm1cIixcbiAgYmdZZWxsb3dCcmlnaHQgPSBcIlxceDFiWzEwM21cIixcbiAgYmdCbHVlQnJpZ2h0ID0gXCJcXHgxYlsxMDRtXCIsXG4gIGJnUHVycGxlQnJpZ2h0ID0gXCJcXHgxYlsxMDVtXCIsXG4gIGJnTWFnZW50YUJyaWdodCA9IFwiXFx4MWJbMTA1bVwiLFxuICBiZ0N5YW5CcmlnaHQgPSBcIlxceDFiWzEwNm1cIixcbiAgYmdXaGl0ZUJyaWdodCA9IFwiXFx4MWJbMTA3bVwiLFxufVxuXG5mdW5jdGlvbiB3cmFwKGNvbG9yOiBzdHJpbmcpIHtcbiAgcmV0dXJuIChkYXRhOiB1bmtub3duKSA9PiBgJHtjb2xvcn0ke2RhdGF9JHtfX3Jlc2V0fWA7XG59XG5cbmNvbnN0IGNvbG9yczogUmVjb3JkPGtleW9mIHR5cGVvZiBDT0xPUlNfTUFQLCBSZXR1cm5UeXBlPHR5cGVvZiB3cmFwPj4gPSB7fSBhcyBhbnk7XG5cbmZvciAoY29uc3QgW2NvbG9yTmFtZSwgY29sb3JWYWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoQ09MT1JTX01BUCkpIHtcbiAgY29sb3JzW2NvbG9yTmFtZSBhcyBrZXlvZiB0eXBlb2YgQ09MT1JTX01BUF0gPSB3cmFwKGNvbG9yVmFsdWUpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjb2xvcnM7XG4iCiAgXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLElBQU0sVUFBVTtBQUVoQixJQUFLO0FBQUEsQ0FBTCxDQUFLLGdCQUFMO0FBQUEsRUFDRSx1QkFBUTtBQUFBLEVBQ1IscUJBQU07QUFBQSxFQUNOLHVCQUFRO0FBQUEsRUFDUix3QkFBUztBQUFBLEVBQ1Qsc0JBQU87QUFBQSxFQUNQLHdCQUFTO0FBQUEsRUFDVCx5QkFBVTtBQUFBLEVBQ1Ysc0JBQU87QUFBQSxFQUNQLHVCQUFRO0FBQUEsRUFFUiw2QkFBYztBQUFBLEVBQ2QsMkJBQVk7QUFBQSxFQUNaLDZCQUFjO0FBQUEsRUFDZCw4QkFBZTtBQUFBLEVBQ2YsNEJBQWE7QUFBQSxFQUNiLDhCQUFlO0FBQUEsRUFDZiwrQkFBZ0I7QUFBQSxFQUNoQiw0QkFBYTtBQUFBLEVBQ2IsNkJBQWM7QUFBQSxFQUVkLHlCQUFVO0FBQUEsRUFDViwyQkFBWTtBQUFBLEVBQ1osNEJBQWE7QUFBQSxFQUNiLDBCQUFXO0FBQUEsRUFDWCw0QkFBYTtBQUFBLEVBQ2IsNkJBQWM7QUFBQSxFQUNkLDBCQUFXO0FBQUEsRUFDWCwyQkFBWTtBQUFBLEVBRVosZ0NBQWlCO0FBQUEsRUFDakIsOEJBQWU7QUFBQSxFQUNmLGdDQUFpQjtBQUFBLEVBQ2pCLGlDQUFrQjtBQUFBLEVBQ2xCLCtCQUFnQjtBQUFBLEVBQ2hCLGlDQUFrQjtBQUFBLEVBQ2xCLGtDQUFtQjtBQUFBLEVBQ25CLCtCQUFnQjtBQUFBLEVBQ2hCLGdDQUFpQjtBQUFBLEVBRWpCLHlCQUFVO0FBQUEsRUFDVix1QkFBUTtBQUFBLEVBQ1IseUJBQVU7QUFBQSxFQUNWLDBCQUFXO0FBQUEsRUFDWCx3QkFBUztBQUFBLEVBQ1QsMEJBQVc7QUFBQSxFQUNYLDJCQUFZO0FBQUEsRUFDWix3QkFBUztBQUFBLEVBQ1QseUJBQVU7QUFBQSxFQUVWLCtCQUFnQjtBQUFBLEVBQ2hCLDZCQUFjO0FBQUEsRUFDZCwrQkFBZ0I7QUFBQSxFQUNoQixnQ0FBaUI7QUFBQSxFQUNqQiw4QkFBZTtBQUFBLEVBQ2YsZ0NBQWlCO0FBQUEsRUFDakIsaUNBQWtCO0FBQUEsRUFDbEIsOEJBQWU7QUFBQSxFQUNmLCtCQUFnQjtBQUFBLEdBMURiO0FBNkRMLFNBQVMsSUFBSSxDQUFDLE9BQWU7QUFBQSxFQUMzQixPQUFPLENBQUMsU0FBa0IsR0FBRyxRQUFRLE9BQU87QUFBQTtBQUc5QyxJQUFNLFNBQW1FLENBQUM7QUFFMUUsWUFBWSxXQUFXLGVBQWUsT0FBTyxRQUFRLFVBQVUsR0FBRztBQUFBLEVBQ2hFLE9BQU8sYUFBd0MsS0FBSyxVQUFVO0FBQ2hFO0FBRUEsSUFBZTsiLAogICJkZWJ1Z0lkIjogIjJDM0UxODk3MUI3RjU5QjM2NDc1NkUyMTY0NzU2RTIxIiwKICAibmFtZXMiOiBbXQp9
@@ -4,38 +4,59 @@ var __defProp = Object.defineProperty;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ function __accessProp(key) {
8
+ return this[key];
9
+ }
10
+ var __toESMCache_node;
11
+ var __toESMCache_esm;
7
12
  var __toESM = (mod, isNodeMode, target) => {
13
+ var canCache = mod != null && typeof mod === "object";
14
+ if (canCache) {
15
+ var cache = isNodeMode ? __toESMCache_node ??= new WeakMap : __toESMCache_esm ??= new WeakMap;
16
+ var cached = cache.get(mod);
17
+ if (cached)
18
+ return cached;
19
+ }
8
20
  target = mod != null ? __create(__getProtoOf(mod)) : {};
9
21
  const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
10
22
  for (let key of __getOwnPropNames(mod))
11
23
  if (!__hasOwnProp.call(to, key))
12
24
  __defProp(to, key, {
13
- get: () => mod[key],
25
+ get: __accessProp.bind(mod, key),
14
26
  enumerable: true
15
27
  });
28
+ if (canCache)
29
+ cache.set(mod, to);
16
30
  return to;
17
31
  };
18
- var __moduleCache = /* @__PURE__ */ new WeakMap;
19
32
  var __toCommonJS = (from) => {
20
- var entry = __moduleCache.get(from), desc;
33
+ var entry = (__moduleCache ??= new WeakMap).get(from), desc;
21
34
  if (entry)
22
35
  return entry;
23
36
  entry = __defProp({}, "__esModule", { value: true });
24
- if (from && typeof from === "object" || typeof from === "function")
25
- __getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
26
- get: () => from[key],
27
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
28
- }));
37
+ if (from && typeof from === "object" || typeof from === "function") {
38
+ for (var key of __getOwnPropNames(from))
39
+ if (!__hasOwnProp.call(entry, key))
40
+ __defProp(entry, key, {
41
+ get: __accessProp.bind(from, key),
42
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
43
+ });
44
+ }
29
45
  __moduleCache.set(from, entry);
30
46
  return entry;
31
47
  };
48
+ var __moduleCache;
49
+ var __returnValue = (v) => v;
50
+ function __exportSetter(name, newValue) {
51
+ this[name] = __returnValue.bind(null, newValue);
52
+ }
32
53
  var __export = (target, all) => {
33
54
  for (var name in all)
34
55
  __defProp(target, name, {
35
56
  get: all[name],
36
57
  enumerable: true,
37
58
  configurable: true,
38
- set: (newValue) => all[name] = () => newValue
59
+ set: __exportSetter.bind(all, name)
39
60
  });
40
61
  };
41
62
 
@@ -47,14 +68,16 @@ __export(exports_cache, {
47
68
  });
48
69
  module.exports = __toCommonJS(exports_cache);
49
70
 
50
- // src/cache/cacheService.ts
51
- var import_types = require("node:util/types");
52
-
53
71
  // src/utils/isCallable.ts
54
72
  function isCallable(value) {
55
73
  return typeof value === "function";
56
74
  }
57
75
 
76
+ // src/utils/isPromise.ts
77
+ function isPromise(value) {
78
+ return !!value && (typeof value === "object" || typeof value === "function") && "then" in value && typeof value.then === "function";
79
+ }
80
+
58
81
  // src/cache/cacheService.ts
59
82
  var defaultCacheOptions = {
60
83
  expirationThresholdMs: 0,
@@ -133,7 +156,7 @@ class Cache {
133
156
  if (isCallable(valueLoader)) {
134
157
  return await valueLoader();
135
158
  }
136
- if (import_types.isPromise(valueLoader)) {
159
+ if (isPromise(valueLoader)) {
137
160
  return await valueLoader;
138
161
  }
139
162
  return valueLoader;
@@ -180,16 +203,19 @@ var CACHE_TTL_NEVER_EXPIRE = -1;
180
203
  // src/index.ts
181
204
  var exports_src = {};
182
205
  __export(exports_src, {
183
- tryCatchAsync: () => tryCatchAsync,
206
+ tryCatchSync: () => tryCatchSync,
184
207
  tryCatch: () => tryCatch,
185
208
  streamToLines: () => streamToLines,
186
209
  sleep: () => sleep,
187
210
  randomString: () => randomString,
188
211
  jsonParser: () => jsonParser,
212
+ isSuccess: () => isSuccess,
213
+ isPromise: () => isPromise,
189
214
  isPrimitive: () => isPrimitive,
190
215
  isObject: () => isObject,
191
216
  isNullOrUndefined: () => isNullOrUndefined,
192
217
  isNullOrEmptyOrUndefined: () => isNullOrEmptyOrUndefined,
218
+ isError: () => isError,
193
219
  chunksToLines: () => chunksToLines,
194
220
  Cache: () => Cache,
195
221
  CACHE_TTL_NEVER_EXPIRE: () => CACHE_TTL_NEVER_EXPIRE
@@ -249,22 +275,28 @@ function randomString(length = 6) {
249
275
  // src/utils/sleep.ts
250
276
  var sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
251
277
  // src/neverthrow/tryCatch.ts
252
- function tryCatch(fn) {
278
+ function tryCatchSync(fn) {
253
279
  try {
254
280
  const data = fn();
255
- return [data, undefined];
281
+ return { data, error: null };
256
282
  } catch (error) {
257
- return [undefined, error];
283
+ return { data: null, error };
258
284
  }
259
285
  }
260
- async function tryCatchAsync(promise) {
286
+ async function tryCatch(promise) {
261
287
  try {
262
288
  const data = await promise;
263
- return [data, undefined];
289
+ return { data, error: null };
264
290
  } catch (error) {
265
- return [undefined, error];
291
+ return { data: null, error };
266
292
  }
267
293
  }
294
+ function isSuccess(result) {
295
+ return result.error === null;
296
+ }
297
+ function isError(result) {
298
+ return result.error !== null;
299
+ }
268
300
 
269
- //# debugId=C7BA7063207A301864756E2164756E21
270
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NhY2hlL2NhY2hlU2VydmljZS50cyIsICIuLi8uLi9zcmMvdXRpbHMvaXNDYWxsYWJsZS50cyIsICIuLi8uLi9zcmMvY2FjaGUvY29uc3RhbnRzLnRzIiwgIi4uLy4uL3NyYy91dGlscy9jaHVua3NUb0xpbmVzLnRzIiwgIi4uLy4uL3NyYy91dGlscy9pc051bGxPclVuZGVmaW5lZC50cyIsICIuLi8uLi9zcmMvdXRpbHMvaXNPYmplY3QudHMiLCAiLi4vLi4vc3JjL3V0aWxzL2lzUHJpbWl0aXZlLnRzIiwgIi4uLy4uL3NyYy91dGlscy9qc29uUGFyc2VyLnRzIiwgIi4uLy4uL3NyYy91dGlscy9yYW5kb21TdHJpbmcudHMiLCAiLi4vLi4vc3JjL3V0aWxzL3NsZWVwLnRzIiwgIi4uLy4uL3NyYy9uZXZlcnRocm93L3RyeUNhdGNoLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWwogICAgImltcG9ydCB7IGlzUHJvbWlzZSB9IGZyb20gXCJub2RlOnV0aWwvdHlwZXNcIjtcbmltcG9ydCB7IGlzQ2FsbGFibGUgfSBmcm9tIFwiLi4vdXRpbHMvaXNDYWxsYWJsZS50c1wiO1xuaW1wb3J0IHR5cGUgeyBDYWNoZU1ldGFkYXRhT3B0aW9ucywgQ2FjaGVPcHRpb25zLCBDYWNoZVdpdGhNZXRhZGF0YSwgVmFsdWVMb2FkZXIgfSBmcm9tIFwiLi9pbnRlcm5hbC90eXBlcy50c1wiO1xuaW1wb3J0IHR5cGUgeyBDYWNoZU1ldGFkYXRhLCBJQ2FjaGVBZGFwdGVyIH0gZnJvbSBcIi4vdHlwZXMudHNcIjtcblxuY29uc3QgZGVmYXVsdENhY2hlT3B0aW9uczogQ2FjaGVPcHRpb25zID0ge1xuICBleHBpcmF0aW9uVGhyZXNob2xkTXM6IDAsXG4gIHR0bE1zOiA2MCAqIDYwICogMTAwMCxcbn07XG5cbmV4cG9ydCBjbGFzcyBDYWNoZTxUQWRhcHRlciBleHRlbmRzIElDYWNoZUFkYXB0ZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ+IHtcbiAgcHJpdmF0ZSBpbk1lbW9yeUNhY2hlOiBNYXA8c3RyaW5nLCBDYWNoZVdpdGhNZXRhZGF0YT4gPSBuZXcgTWFwKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogQ2FjaGVPcHRpb25zO1xuICBwcml2YXRlIHJlYWRvbmx5IGFkYXB0ZXI/OiBUQWRhcHRlcjtcblxuICBjb25zdHJ1Y3RvcihkZWZhdWx0T3B0aW9ucz86IFBhcnRpYWw8Q2FjaGVPcHRpb25zPik7XG4gIGNvbnN0cnVjdG9yKGFkYXB0ZXI/OiBUQWRhcHRlciwgZGVmYXVsdE9wdGlvbnM/OiBQYXJ0aWFsPENhY2hlT3B0aW9ucz4pO1xuICBjb25zdHJ1Y3RvcihhZGFwdGVyPzogVEFkYXB0ZXIgfCBQYXJ0aWFsPENhY2hlT3B0aW9ucz4sIGRlZmF1bHRPcHRpb25zPzogUGFydGlhbDxDYWNoZU9wdGlvbnM+KSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IGFkYXB0ZXIgJiYgIShcImdldFZhbHVlXCIgaW4gYWRhcHRlcikgPyAoYWRhcHRlciBhcyBQYXJ0aWFsPENhY2hlT3B0aW9ucz4pIDogZGVmYXVsdE9wdGlvbnM7XG4gICAgaWYgKGFkYXB0ZXIgJiYgXCJnZXRWYWx1ZVwiIGluIGFkYXB0ZXIgJiYgXCJzZXRWYWx1ZVwiIGluIGFkYXB0ZXIpIHtcbiAgICAgIHRoaXMuYWRhcHRlciA9IGFkYXB0ZXIgYXMgVEFkYXB0ZXI7XG4gICAgfVxuXG4gICAgdGhpcy5vcHRpb25zID0ge1xuICAgICAgLi4uZGVmYXVsdENhY2hlT3B0aW9ucyxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0RnJvbUFkYXB0ZXI8VD4oY2FjaGVLZXk6IHN0cmluZyk6IFByb21pc2U8VCB8IHVuZGVmaW5lZD4ge1xuICAgIGlmICghdGhpcy5hZGFwdGVyKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuZ2V0VmFsdWUoY2FjaGVLZXkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzYXZlVG9BZGFwdGVyPFQ+KGNhY2hlS2V5OiBzdHJpbmcsIHZhbHVlOiBUKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmFkYXB0ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hZGFwdGVyLnNldFZhbHVlPFQ+KGNhY2hlS2V5LCB2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0PFQ+KFxuICAgIGNhY2hlS2V5OiBzdHJpbmcsXG4gICAgdmFsdWVMb2FkZXI/OiBWYWx1ZUxvYWRlcjxUPixcbiAgICBvcHRpb25zOiBQYXJ0aWFsPENhY2hlTWV0YWRhdGFPcHRpb25zPiA9IHt9LFxuICApOiBQcm9taXNlPFQgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBtZXJnZWRPcHRpb25zID0gdGhpcy5tZXJnZU9wdGlvbnMob3B0aW9ucyk7XG5cbiAgICAvLyBUcnkgaW4tbWVtb3J5IGNhY2hlIGZpcnN0XG4gICAgY29uc3QgY2FjaGVkVmFsdWUgPSB0aGlzLnRyeUdldEZyb21NZW1vcnk8VD4oY2FjaGVLZXkpO1xuICAgIGlmIChjYWNoZWRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gY2FjaGVkVmFsdWU7XG4gICAgfVxuXG4gICAgLy8gTG9hZCBmcmVzaCB2YWx1ZSBmcm9tIGxvYWRlciBmdW5jdGlvbiBmaXJzdFxuICAgIGNvbnN0IGZyZXNoVmFsdWUgPSBhd2FpdCB0aGlzLnRyeUdldEZyb21WYWx1ZUxvYWRlcih2YWx1ZUxvYWRlcik7XG4gICAgaWYgKGZyZXNoVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYXdhaXQgdGhpcy5jYWNoZVZhbHVlKGNhY2hlS2V5LCBmcmVzaFZhbHVlLCBtZXJnZWRPcHRpb25zKTtcblxuICAgICAgcmV0dXJuIGZyZXNoVmFsdWU7XG4gICAgfVxuXG4gICAgLy8gVHJ5IGFkYXB0ZXIgY2FjaGUgc2Vjb25kXG4gICAgY29uc3QgYWRhcHRlclZhbHVlID0gYXdhaXQgdGhpcy50cnlHZXRGcm9tQWRhcHRlcjxUPihjYWNoZUtleSk7XG4gICAgaWYgKGFkYXB0ZXJWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBhd2FpdCB0aGlzLmNhY2hlVmFsdWUoY2FjaGVLZXksIGFkYXB0ZXJWYWx1ZSwgbWVyZ2VkT3B0aW9ucyk7XG5cbiAgICAgIHJldHVybiBhZGFwdGVyVmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtZXJnZU9wdGlvbnMob3B0aW9uczogUGFydGlhbDxDYWNoZU1ldGFkYXRhT3B0aW9ucz4pOiBDYWNoZU1ldGFkYXRhT3B0aW9ucyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR0bE1zOiB0aGlzLm9wdGlvbnMudHRsTXMsXG4gICAgICBleHBpcmF0aW9uVGhyZXNob2xkTXM6IHRoaXMub3B0aW9ucy5leHBpcmF0aW9uVGhyZXNob2xkTXMsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHRyeUdldEZyb21NZW1vcnk8VD4oY2FjaGVLZXk6IHN0cmluZyk6IFQgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGNhY2hlZCA9IHRoaXMuaW5NZW1vcnlDYWNoZS5nZXQoY2FjaGVLZXkpO1xuXG4gICAgaWYgKGNhY2hlZCAmJiAhdGhpcy5pc0V4cGlyZWQoY2FjaGVkLm1ldGFkYXRhKSkge1xuICAgICAgcmV0dXJuIGNhY2hlZC5kYXRhIGFzIFQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdHJ5R2V0RnJvbUFkYXB0ZXI8VD4oY2FjaGVLZXk6IHN0cmluZyk6IFByb21pc2U8VCB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IGNhY2hlZCA9IGF3YWl0IHRoaXMuZ2V0RnJvbUFkYXB0ZXI8Q2FjaGVXaXRoTWV0YWRhdGE8VD4+KGNhY2hlS2V5KTtcblxuICAgIGlmIChjYWNoZWQgJiYgIXRoaXMuaXNFeHBpcmVkKGNhY2hlZC5tZXRhZGF0YSkpIHtcbiAgICAgIHRoaXMuaW5NZW1vcnlDYWNoZS5zZXQoY2FjaGVLZXksIGNhY2hlZCk7XG4gICAgICByZXR1cm4gY2FjaGVkLmRhdGE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdHJ5R2V0RnJvbVZhbHVlTG9hZGVyPFQ+KHZhbHVlTG9hZGVyPzogVmFsdWVMb2FkZXI8VD4pOiBQcm9taXNlPFQgfCB1bmRlZmluZWQ+IHtcbiAgICBpZiAodmFsdWVMb2FkZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoaXNDYWxsYWJsZSh2YWx1ZUxvYWRlcikpIHtcbiAgICAgIHJldHVybiBhd2FpdCB2YWx1ZUxvYWRlcigpO1xuICAgIH1cblxuICAgIGlmIChpc1Byb21pc2UodmFsdWVMb2FkZXIpKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdmFsdWVMb2FkZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlTG9hZGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjYWNoZVZhbHVlPFQ+KGNhY2hlS2V5OiBzdHJpbmcsIHZhbHVlOiBULCBvcHRpb25zOiBDYWNoZU1ldGFkYXRhT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNhY2hlRGF0YSA9IHRoaXMuY3JlYXRlQ2FjaGVFbnRyeSh2YWx1ZSwgb3B0aW9ucyk7XG5cbiAgICBhd2FpdCB0aGlzLnNhdmVUb0FkYXB0ZXIoY2FjaGVLZXksIGNhY2hlRGF0YSk7XG4gICAgdGhpcy5pbk1lbW9yeUNhY2hlLnNldChjYWNoZUtleSwgY2FjaGVEYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQ2FjaGVFbnRyeTxUPih2YWx1ZTogVCwgb3B0aW9uczogQ2FjaGVNZXRhZGF0YU9wdGlvbnMpOiBDYWNoZVdpdGhNZXRhZGF0YTxUPiB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgZXhwaXJlc0F0OiBudW1iZXI7XG4gICAgaWYgKG9wdGlvbnMudHRsTXMgPCAwKSB7XG4gICAgICBleHBpcmVzQXQgPSAtMTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXhwaXJlc0F0ID0gbm93ICsgb3B0aW9ucy50dGxNcyAtIG9wdGlvbnMuZXhwaXJhdGlvblRocmVzaG9sZE1zO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkYXRhOiB2YWx1ZSxcbiAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgIGNyZWF0ZWRBdDogbm93LFxuICAgICAgICB0dGxNczogb3B0aW9ucy50dGxNcyxcbiAgICAgICAgZXhwaXJhdGlvblRocmVzaG9sZE1zOiBvcHRpb25zLmV4cGlyYXRpb25UaHJlc2hvbGRNcyxcbiAgICAgICAgZXhwaXJlc0F0LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBpc0V4cGlyZWQobWV0YWRhdGE/OiBDYWNoZU1ldGFkYXRhKTogYm9vbGVhbiB7XG4gICAgaWYgKCFtZXRhZGF0YSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKG1ldGFkYXRhLmV4cGlyZXNBdCA8IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBleHBpcmF0aW9uVGltZSA9XG4gICAgICBtZXRhZGF0YS5leHBpcmVzQXQgPz8gKG1ldGFkYXRhLmNyZWF0ZWRBdCAmJiBtZXRhZGF0YS50dGxNcyA/IG1ldGFkYXRhLmNyZWF0ZWRBdCArIG1ldGFkYXRhLnR0bE1zIDogdW5kZWZpbmVkKTtcblxuICAgIGlmIChleHBpcmF0aW9uVGltZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gRGF0ZS5ub3coKSA+PSBleHBpcmF0aW9uVGltZTtcbiAgfVxufVxuIiwKICAgICJleHBvcnQgZnVuY3Rpb24gaXNDYWxsYWJsZSh2YWx1ZTogYW55KTogdmFsdWUgaXMgQ2FsbGFibGVGdW5jdGlvbiB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIjtcbn1cbiIsCiAgICAiZXhwb3J0IGNvbnN0IENBQ0hFX1RUTF9ORVZFUl9FWFBJUkUgPSAtMTtcbiIsCiAgICAiLyoqXG4gKiBDb252ZXJ0cyBhbiBhc3luYyBpdGVyYWJsZSBvZiBzdHJpbmcgb3IgVWludDhBcnJheSBjaHVua3MgaW50byBhbiBhc3luYyBpdGVyYWJsZSBvZiBsaW5lcy5cbiAqIEhhbmRsZXMgY2FzZXMgd2hlcmUgbGluZXMgbWF5IGJlIHNwbGl0IGFjcm9zcyBtdWx0aXBsZSBjaHVua3MuXG4gKiBVc2FnZTpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBwaXBlbGluZSB9IGZyb20gXCJub2RlOnN0cmVhbS9wcm9taXNlc1wiO1xuICogaW1wb3J0IHsgY3JlYXRlUmVhZFN0cmVhbSB9IGZyb20gXCJub2RlOmZzXCI7XG4gKiBpbXBvcnQgeyBzdHJlYW1Ub0xpbmVzIH0gZnJvbSBcIkBsdWthc2tqL3RzLXV0aWxzXCI7XG4gKlxuICogYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc0xpbmUoY2h1bms6IEFzeW5jSXRlcmFibGU8c3RyaW5nPikge1xuICogICBmb3IgYXdhaXQgKGNvbnN0IGxpbmUgb2YgY2h1bmspIHtcbiAqICAgICBjb25zb2xlLmxvZyhsaW5lKTtcbiAqICAgICB5aWVsZCBsaW5lO1xuICogICB9XG4gKiB9XG4gKiBjb25zdCByZWFkU3RyZWFtID0gY3JlYXRlUmVhZFN0cmVhbShcInBhdGgvdG8vZmlsZS50eHRcIiwgeyBlbmNvZGluZzogXCJ1dGYtOFwiIH0pO1xuICogYXdhaXQgcGlwZWxpbmUocmVhZFN0cmVhbSwgc3RyZWFtVG9MaW5lcywgcHJvY2Vzcy5zdGRvdXQpLmNhdGNoKChlcnIpID0+IHtcbiAqICAgY29uc29sZS5lcnJvcihlcnIpO1xuICogICBwcm9jZXNzLmV4aXQoMSk7XG4gKiB9KTtcbiAqIGBgYFxuICogQHBhcmFtIGNodW5rc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24qIHN0cmVhbVRvTGluZXMoY2h1bmtzOiBBc3luY0l0ZXJhYmxlPHN0cmluZyB8IFVpbnQ4QXJyYXk+KSB7XG4gIGxldCBwcmV2aW91cyA9IFwiXCI7XG5cbiAgZm9yIGF3YWl0IChjb25zdCBjaHVuayBvZiBjaHVua3MpIHtcbiAgICBwcmV2aW91cyArPSBjaHVuaztcbiAgICBsZXQgZW9sSW5kZXg6IG51bWJlcjtcblxuICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9Bc3NpZ25JbkV4cHJlc3Npb25zOiBcImV4cGxhbmF0aW9uXCJcbiAgICB3aGlsZSAoKGVvbEluZGV4ID0gcHJldmlvdXMuaW5kZXhPZihcIlxcblwiKSkgPj0gMCkge1xuICAgICAgLy8gdGhpcyBsaW5lIGluY2x1ZGVzIHRoZSBFT0xcbiAgICAgIGNvbnN0IGxpbmUgPSBwcmV2aW91cy5zbGljZSgwLCBlb2xJbmRleCArIDEpO1xuICAgICAgeWllbGQgbGluZT8udHJpbSgpID8/IFwiXCI7XG4gICAgICBwcmV2aW91cyA9IHByZXZpb3VzLnNsaWNlKGVvbEluZGV4ICsgMSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHByZXZpb3VzLmxlbmd0aCA+IDApIHtcbiAgICB5aWVsZCBwcmV2aW91cztcbiAgfVxufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIHVzZSBzdHJlYW1Ub0xpbmVzXG4gKi9cbmV4cG9ydCBjb25zdCBjaHVua3NUb0xpbmVzID0gc3RyZWFtVG9MaW5lcztcbiIsCiAgICAiZXhwb3J0IGNvbnN0IGlzTnVsbE9yVW5kZWZpbmVkID0gKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBudWxsIHwgdW5kZWZpbmVkID0+IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc051bGxPckVtcHR5T3JVbmRlZmluZWQodmFsdWU/OiBhbnkgfCBudWxsKTogdmFsdWUgaXMgbnVsbCB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSBcIlwiIHx8IHZhbHVlLnRvU3RyaW5nKCkudHJpbSgpID09PSBcIlwiO1xufVxuIiwKICAgICIvKipcbiAqIFR5cGUgZ3VhcmQgdGhhdCBjaGVja3MgaWYgdGhlIGlucHV0IGlzIGEgcGxhaW4gSmF2YVNjcmlwdCBvYmplY3QuXG4gKiBAcGFyYW0ge2FueX0gaW5wdXQgLSBUaGUgdmFsdWUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSBpbnB1dCBpcyBhIHBsYWluIG9iamVjdCwgZmFsc2Ugb3RoZXJ3aXNlXG4gKiBAdHlwZVBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBUeXBlIGd1YXJkIG5hcnJvd3MgdGhlIGlucHV0IHR5cGUgdG8gYSBzdHJpbmcta2V5ZWQgb2JqZWN0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc09iamVjdChpbnB1dDogYW55KTogaW5wdXQgaXMgUmVjb3JkPHN0cmluZywgYW55PiB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KGlucHV0KSA9PT0gXCJbb2JqZWN0IE9iamVjdF1cIjtcbn1cbiIsCiAgICAiZXhwb3J0IGZ1bmN0aW9uIGlzUHJpbWl0aXZlKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIHJldHVybiAodHlwZW9mIHZhbHVlICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiB2YWx1ZSAhPT0gXCJmdW5jdGlvblwiKSB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSBpbnN0YW5jZW9mIERhdGU7XG59XG4iLAogICAgImltcG9ydCBzanMgZnJvbSBcInNlY3VyZS1qc29uLXBhcnNlXCI7XG5cbi8qKlxuICogU2FmZWx5IHBhcnNlcyBKU09OIGlucHV0IHVzaW5nIHNlY3VyZS1qc29uLXBhcnNlIHdpdGggcHJvdG90eXBlIHBvbGx1dGlvbiBwcm90ZWN0aW9uLlxuICogQHBhcmFtIHthbnl9IGlucHV0IC0gVGhlIGlucHV0IHRvIGJlIHBhcnNlZCBhcyBKU09OXG4gKiBAcmV0dXJucyB7eyB2YWx1ZT86IGFueSwgZXJyPzogRXJyb3IgfX0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgZWl0aGVyIHRoZSBwYXJzZWQgdmFsdWUgb3IgYW4gZXJyb3IgaWYgcGFyc2luZyBmYWlsZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGpzb25QYXJzZXIoaW5wdXQ6IGFueSkge1xuICB0cnkge1xuICAgIHJldHVybiB7IHZhbHVlOiBzanMucGFyc2UoaW5wdXQsIHsgcHJvdG9BY3Rpb246IFwicmVtb3ZlXCIgfSkgfTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIHsgZXJyIH07XG4gIH1cbn1cbiIsCiAgICAiZXhwb3J0IGZ1bmN0aW9uIHJhbmRvbVN0cmluZyhsZW5ndGg6IG51bWJlciA9IDYpOiBzdHJpbmcge1xuICBsZXQgcmVzdWx0ID0gXCJcIjtcbiAgY29uc3QgY2hhcmFjdGVycyA9IFwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODlcIjtcbiAgY29uc3QgY2hhcmFjdGVyc0xlbmd0aCA9IGNoYXJhY3RlcnMubGVuZ3RoO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgcmVzdWx0ICs9IGNoYXJhY3RlcnMuY2hhckF0KE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGNoYXJhY3RlcnNMZW5ndGgpKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuIiwKICAgICJleHBvcnQgY29uc3Qgc2xlZXAgPSAobXM6IG51bWJlcikgPT4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpKTtcbiIsCiAgICAiLy8gaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vdDNkb3RnZy9hNDg2YzRhZTY2ZDMyYmYxN2MwOWM3MzYwOWRhY2M1YlxuLy8gVHlwZXMgZm9yIHRoZSByZXN1bHQgb2JqZWN0IHdpdGggZGlzY3JpbWluYXRlZCB1bmlvblxuLy8gdHlwZSBTdWNjZXNzPFQ+ID0ge1xuLy8gICBkYXRhOiBUO1xuLy8gICBlcnJvcjogbnVsbDtcbi8vIH07XG5cbi8vIHR5cGUgRmFpbHVyZTxFPiA9IHtcbi8vICAgZGF0YTogbnVsbDtcbi8vICAgZXJyb3I6IEU7XG4vLyB9O1xuXG4vLyBleHBvcnQgdHlwZSBSZXN1bHQ8VCwgRSA9IEVycm9yPiA9IFN1Y2Nlc3M8VD4gfCBGYWlsdXJlPEU+O1xuXG5leHBvcnQgdHlwZSBSZXN1bHQ8VCwgRT4gPSBbdW5kZWZpbmVkLCBFXSB8IFtULCB1bmRlZmluZWRdO1xuZXhwb3J0IHR5cGUgUHJvbWlzZVJlc3VsdDxULCBFPiA9IFByb21pc2U8UmVzdWx0PFQsIEU+PjtcblxuLyoqXG4gKiBXcmFwcyBhIHN5bmNocm9ub3VzIGZ1bmN0aW9uIGluIGEgdHJ5LWNhdGNoIGJsb2NrIGFuZCByZXR1cm5zIGEgUmVzdWx0IHR1cGxlIGNvbnRhaW5pbmcgZWl0aGVyIHRoZSByZXR1cm5lZCB2YWx1ZSBvciB0aGUgY2F1Z2h0IGVycm9yXG4gKlxuICogQHRlbXBsYXRlIFQgLSBUaGUgdHlwZSBvZiB0aGUgc3VjY2Vzc2Z1bCByZXN1bHQgdmFsdWVcbiAqIEB0ZW1wbGF0ZSBFIC0gVGhlIHR5cGUgb2YgdGhlIGVycm9yIHZhbHVlLCBtdXN0IGV4dGVuZCBFcnJvclxuICogQHBhcmFtIHsoKSA9PiBUfSBmbiAtIFRoZSBmdW5jdGlvbiB0byBiZSBleGVjdXRlZFxuICogQHJldHVybnMge1Jlc3VsdDxULCBFPn0gQSB0dXBsZSBjb250YWluaW5nIGVpdGhlciBbZGF0YSwgdW5kZWZpbmVkXSBvciBbdW5kZWZpbmVkLCBlcnJvcl1cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgW2RhdGEsIGVycm9yXSA9IHRyeUNhdGNoKCgpID0+IHNvbWVSaXNreU9wZXJhdGlvbigpKTtcbiAqIGlmIChlcnJvcikge1xuICogICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAqIH0gZWxzZSB7XG4gKiAgIGNvbnNvbGUubG9nKGRhdGEpO1xuICogfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJ5Q2F0Y2g8VCwgRSBleHRlbmRzIEVycm9yPihmbjogKCkgPT4gVCk6IFJlc3VsdDxULCBFPiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGZuKCk7XG4gICAgcmV0dXJuIFtkYXRhIGFzIFQsIHVuZGVmaW5lZF07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIFt1bmRlZmluZWQsIGVycm9yIGFzIEVdO1xuICB9XG59XG5cbi8qKlxuICogV3JhcHMgYSBQcm9taXNlIGluIGEgdHJ5LWNhdGNoIGJsb2NrIGFuZCByZXR1cm5zIGEgUmVzdWx0IG9iamVjdCBjb250YWluaW5nIGVpdGhlciB0aGUgcmVzb2x2ZWQgZGF0YSBvciB0aGUgY2F1Z2h0IGVycm9yXG4gKlxuICogQHRlbXBsYXRlIFQgLSBUaGUgdHlwZSBvZiB0aGUgc3VjY2Vzc2Z1bCByZXN1bHQgdmFsdWVcbiAqIEB0ZW1wbGF0ZSBFIC0gVGhlIHR5cGUgb2YgdGhlIGVycm9yIHZhbHVlLCBkZWZhdWx0cyB0byBFcnJvclxuICogQHBhcmFtIHtQcm9taXNlPFQ+fSBwcm9taXNlIC0gVGhlIHByb21pc2UgdG8gYmUgZXhlY3V0ZWRcbiAqIEByZXR1cm5zIHtQcm9taXNlPFJlc3VsdDxULCBFPj59IEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGEgUmVzdWx0IG9iamVjdCBjb250YWluaW5nIGVpdGhlciB0aGUgZGF0YSBvciBlcnJvclxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCB7ZGF0YSwgZXJyb3J9ID0gYXdhaXQgdHJ5Q2F0Y2hBc3luYyhzb21lUHJvbWlzZSk7XG4gKiBpZiAoZXJyb3IpIHtcbiAqICAgY29uc29sZS5lcnJvcihyZXN1bHQuZXJyb3IpO1xuICogfSBlbHNlIHtcbiAqICAgY29uc29sZS5sb2coZGF0YSk7XG4gKiB9XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0cnlDYXRjaEFzeW5jPFQsIEUgZXh0ZW5kcyBFcnJvcj4ocHJvbWlzZTogUHJvbWlzZTxUPik6IFByb21pc2VSZXN1bHQ8VCwgRT4ge1xuICB0cnkge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBwcm9taXNlO1xuICAgIHJldHVybiBbZGF0YSBhcyBULCB1bmRlZmluZWRdO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBbdW5kZWZpbmVkLCBlcnJvciBhcyBFXTtcbiAgfVxufVxuIgogIF0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBMEIsSUFBMUI7OztBQ0FPLFNBQVMsVUFBVSxDQUFDLE9BQXVDO0FBQUEsRUFDaEUsT0FBTyxPQUFPLFVBQVU7QUFBQTs7O0FESTFCLElBQU0sc0JBQW9DO0FBQUEsRUFDeEMsdUJBQXVCO0FBQUEsRUFDdkIsT0FBTyxLQUFLLEtBQUs7QUFDbkI7QUFBQTtBQUVPLE1BQU0sTUFBOEQ7QUFBQSxFQUNqRSxnQkFBZ0QsSUFBSTtBQUFBLEVBQzNDO0FBQUEsRUFDQTtBQUFBLEVBSWpCLFdBQVcsQ0FBQyxTQUE0QyxnQkFBd0M7QUFBQSxJQUM5RixNQUFNLFVBQVUsV0FBVyxFQUFFLGNBQWMsV0FBWSxVQUFvQztBQUFBLElBQzNGLElBQUksV0FBVyxjQUFjLFdBQVcsY0FBYyxTQUFTO0FBQUEsTUFDN0QsS0FBSyxVQUFVO0FBQUEsSUFDakI7QUFBQSxJQUVBLEtBQUssVUFBVTtBQUFBLFNBQ1Y7QUFBQSxTQUNBO0FBQUEsSUFDTDtBQUFBO0FBQUEsT0FHWSxlQUFpQixDQUFDLFVBQTBDO0FBQUEsSUFDeEUsSUFBSSxDQUFDLEtBQUssU0FBUztBQUFBLE1BQ2pCO0FBQUEsSUFDRjtBQUFBLElBRUEsT0FBTyxLQUFLLFFBQVEsU0FBUyxRQUFRO0FBQUE7QUFBQSxPQUd6QixjQUFnQixDQUFDLFVBQWtCLE9BQXlCO0FBQUEsSUFDeEUsSUFBSSxDQUFDLEtBQUssU0FBUztBQUFBLE1BQ2pCO0FBQUEsSUFDRjtBQUFBLElBRUEsT0FBTyxLQUFL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
301
+ //# debugId=86B23B962345418964756E2164756E21
302
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL2lzQ2FsbGFibGUudHMiLCAiLi4vLi4vc3JjL3V0aWxzL2lzUHJvbWlzZS50cyIsICIuLi8uLi9zcmMvY2FjaGUvY2FjaGVTZXJ2aWNlLnRzIiwgIi4uLy4uL3NyYy9jYWNoZS9jb25zdGFudHMudHMiLCAiLi4vLi4vc3JjL3V0aWxzL2NodW5rc1RvTGluZXMudHMiLCAiLi4vLi4vc3JjL3V0aWxzL2lzTnVsbE9yVW5kZWZpbmVkLnRzIiwgIi4uLy4uL3NyYy91dGlscy9pc09iamVjdC50cyIsICIuLi8uLi9zcmMvdXRpbHMvaXNQcmltaXRpdmUudHMiLCAiLi4vLi4vc3JjL3V0aWxzL2pzb25QYXJzZXIudHMiLCAiLi4vLi4vc3JjL3V0aWxzL3JhbmRvbVN0cmluZy50cyIsICIuLi8uLi9zcmMvdXRpbHMvc2xlZXAudHMiLCAiLi4vLi4vc3JjL25ldmVydGhyb3cvdHJ5Q2F0Y2gudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbCiAgICAiZXhwb3J0IGZ1bmN0aW9uIGlzQ2FsbGFibGUodmFsdWU6IGFueSk6IHZhbHVlIGlzIENhbGxhYmxlRnVuY3Rpb24ge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCI7XG59XG4iLAogICAgIi8qKlxuICogQHBhcmFtIHZhbHVlIHVua25vd25cbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2U8VCA9IGFueT4odmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBQcm9taXNlPFQ+IHtcbiAgcmV0dXJuIChcbiAgICAhIXZhbHVlICYmXG4gICAgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIikgJiZcbiAgICBcInRoZW5cIiBpbiB2YWx1ZSAmJlxuICAgIHR5cGVvZiB2YWx1ZS50aGVuID09PSBcImZ1bmN0aW9uXCJcbiAgKTtcbn1cbiIsCiAgICAiaW1wb3J0IHsgaXNDYWxsYWJsZSB9IGZyb20gXCIuLi91dGlscy9pc0NhbGxhYmxlLnRzXCI7XG5pbXBvcnQgeyBpc1Byb21pc2UgfSBmcm9tIFwiLi4vdXRpbHMvaXNQcm9taXNlLnRzXCI7XG5pbXBvcnQgdHlwZSB7IENhY2hlTWV0YWRhdGFPcHRpb25zLCBDYWNoZU9wdGlvbnMsIENhY2hlV2l0aE1ldGFkYXRhLCBWYWx1ZUxvYWRlciB9IGZyb20gXCIuL2ludGVybmFsL3R5cGVzLnRzXCI7XG5pbXBvcnQgdHlwZSB7IENhY2hlTWV0YWRhdGEsIElDYWNoZUFkYXB0ZXIgfSBmcm9tIFwiLi90eXBlcy50c1wiO1xuXG5jb25zdCBkZWZhdWx0Q2FjaGVPcHRpb25zOiBDYWNoZU9wdGlvbnMgPSB7XG4gIGV4cGlyYXRpb25UaHJlc2hvbGRNczogMCxcbiAgdHRsTXM6IDYwICogNjAgKiAxMDAwLFxufTtcblxuZXhwb3J0IGNsYXNzIENhY2hlPFRBZGFwdGVyIGV4dGVuZHMgSUNhY2hlQWRhcHRlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZD4ge1xuICBwcml2YXRlIGluTWVtb3J5Q2FjaGU6IE1hcDxzdHJpbmcsIENhY2hlV2l0aE1ldGFkYXRhPiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBDYWNoZU9wdGlvbnM7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWRhcHRlcj86IFRBZGFwdGVyO1xuXG4gIGNvbnN0cnVjdG9yKGRlZmF1bHRPcHRpb25zPzogUGFydGlhbDxDYWNoZU9wdGlvbnM+KTtcbiAgY29uc3RydWN0b3IoYWRhcHRlcj86IFRBZGFwdGVyLCBkZWZhdWx0T3B0aW9ucz86IFBhcnRpYWw8Q2FjaGVPcHRpb25zPik7XG4gIGNvbnN0cnVjdG9yKGFkYXB0ZXI/OiBUQWRhcHRlciB8IFBhcnRpYWw8Q2FjaGVPcHRpb25zPiwgZGVmYXVsdE9wdGlvbnM/OiBQYXJ0aWFsPENhY2hlT3B0aW9ucz4pIHtcbiAgICBjb25zdCBvcHRpb25zID0gYWRhcHRlciAmJiAhKFwiZ2V0VmFsdWVcIiBpbiBhZGFwdGVyKSA/IChhZGFwdGVyIGFzIFBhcnRpYWw8Q2FjaGVPcHRpb25zPikgOiBkZWZhdWx0T3B0aW9ucztcbiAgICBpZiAoYWRhcHRlciAmJiBcImdldFZhbHVlXCIgaW4gYWRhcHRlciAmJiBcInNldFZhbHVlXCIgaW4gYWRhcHRlcikge1xuICAgICAgdGhpcy5hZGFwdGVyID0gYWRhcHRlciBhcyBUQWRhcHRlcjtcbiAgICB9XG5cbiAgICB0aGlzLm9wdGlvbnMgPSB7XG4gICAgICAuLi5kZWZhdWx0Q2FjaGVPcHRpb25zLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRGcm9tQWRhcHRlcjxUPihjYWNoZUtleTogc3RyaW5nKTogUHJvbWlzZTxUIHwgdW5kZWZpbmVkPiB7XG4gICAgaWYgKCF0aGlzLmFkYXB0ZXIpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYWRhcHRlci5nZXRWYWx1ZShjYWNoZUtleSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNhdmVUb0FkYXB0ZXI8VD4oY2FjaGVLZXk6IHN0cmluZywgdmFsdWU6IFQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuYWRhcHRlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuc2V0VmFsdWU8VD4oY2FjaGVLZXksIHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXQ8VD4oXG4gICAgY2FjaGVLZXk6IHN0cmluZyxcbiAgICB2YWx1ZUxvYWRlcj86IFZhbHVlTG9hZGVyPFQ+LFxuICAgIG9wdGlvbnM6IFBhcnRpYWw8Q2FjaGVNZXRhZGF0YU9wdGlvbnM+ID0ge30sXG4gICk6IFByb21pc2U8VCB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSB0aGlzLm1lcmdlT3B0aW9ucyhvcHRpb25zKTtcblxuICAgIC8vIFRyeSBpbi1tZW1vcnkgY2FjaGUgZmlyc3RcbiAgICBjb25zdCBjYWNoZWRWYWx1ZSA9IHRoaXMudHJ5R2V0RnJvbU1lbW9yeTxUPihjYWNoZUtleSk7XG4gICAgaWYgKGNhY2hlZFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBjYWNoZWRWYWx1ZTtcbiAgICB9XG5cbiAgICAvLyBMb2FkIGZyZXNoIHZhbHVlIGZyb20gbG9hZGVyIGZ1bmN0aW9uIGZpcnN0XG4gICAgY29uc3QgZnJlc2hWYWx1ZSA9IGF3YWl0IHRoaXMudHJ5R2V0RnJvbVZhbHVlTG9hZGVyKHZhbHVlTG9hZGVyKTtcbiAgICBpZiAoZnJlc2hWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBhd2FpdCB0aGlzLmNhY2hlVmFsdWUoY2FjaGVLZXksIGZyZXNoVmFsdWUsIG1lcmdlZE9wdGlvbnMpO1xuXG4gICAgICByZXR1cm4gZnJlc2hWYWx1ZTtcbiAgICB9XG5cbiAgICAvLyBUcnkgYWRhcHRlciBjYWNoZSBzZWNvbmRcbiAgICBjb25zdCBhZGFwdGVyVmFsdWUgPSBhd2FpdCB0aGlzLnRyeUdldEZyb21BZGFwdGVyPFQ+KGNhY2hlS2V5KTtcbiAgICBpZiAoYWRhcHRlclZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGF3YWl0IHRoaXMuY2FjaGVWYWx1ZShjYWNoZUtleSwgYWRhcHRlclZhbHVlLCBtZXJnZWRPcHRpb25zKTtcblxuICAgICAgcmV0dXJuIGFkYXB0ZXJWYWx1ZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1lcmdlT3B0aW9ucyhvcHRpb25zOiBQYXJ0aWFsPENhY2hlTWV0YWRhdGFPcHRpb25zPik6IENhY2hlTWV0YWRhdGFPcHRpb25zIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHRsTXM6IHRoaXMub3B0aW9ucy50dGxNcyxcbiAgICAgIGV4cGlyYXRpb25UaHJlc2hvbGRNczogdGhpcy5vcHRpb25zLmV4cGlyYXRpb25UaHJlc2hvbGRNcyxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgdHJ5R2V0RnJvbU1lbW9yeTxUPihjYWNoZUtleTogc3RyaW5nKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgY2FjaGVkID0gdGhpcy5pbk1lbW9yeUNhY2hlLmdldChjYWNoZUtleSk7XG5cbiAgICBpZiAoY2FjaGVkICYmICF0aGlzLmlzRXhwaXJlZChjYWNoZWQubWV0YWRhdGEpKSB7XG4gICAgICByZXR1cm4gY2FjaGVkLmRhdGEgYXMgVDtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB0cnlHZXRGcm9tQWRhcHRlcjxUPihjYWNoZUtleTogc3RyaW5nKTogUHJvbWlzZTxUIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgY2FjaGVkID0gYXdhaXQgdGhpcy5nZXRGcm9tQWRhcHRlcjxDYWNoZVdpdGhNZXRhZGF0YTxUPj4oY2FjaGVLZXkpO1xuXG4gICAgaWYgKGNhY2hlZCAmJiAhdGhpcy5pc0V4cGlyZWQoY2FjaGVkLm1ldGFkYXRhKSkge1xuICAgICAgdGhpcy5pbk1lbW9yeUNhY2hlLnNldChjYWNoZUtleSwgY2FjaGVkKTtcbiAgICAgIHJldHVybiBjYWNoZWQuZGF0YTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB0cnlHZXRGcm9tVmFsdWVMb2FkZXI8VD4odmFsdWVMb2FkZXI/OiBWYWx1ZUxvYWRlcjxUPik6IFByb21pc2U8VCB8IHVuZGVmaW5lZD4ge1xuICAgIGlmICh2YWx1ZUxvYWRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmIChpc0NhbGxhYmxlKHZhbHVlTG9hZGVyKSkge1xuICAgICAgcmV0dXJuIGF3YWl0IHZhbHVlTG9hZGVyKCk7XG4gICAgfVxuXG4gICAgaWYgKGlzUHJvbWlzZSh2YWx1ZUxvYWRlcikpIHtcbiAgICAgIHJldHVybiBhd2FpdCB2YWx1ZUxvYWRlcjtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWVMb2FkZXI7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNhY2hlVmFsdWU8VD4oY2FjaGVLZXk6IHN0cmluZywgdmFsdWU6IFQsIG9wdGlvbnM6IENhY2hlTWV0YWRhdGFPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY2FjaGVEYXRhID0gdGhpcy5jcmVhdGVDYWNoZUVudHJ5KHZhbHVlLCBvcHRpb25zKTtcblxuICAgIGF3YWl0IHRoaXMuc2F2ZVRvQWRhcHRlcihjYWNoZUtleSwgY2FjaGVEYXRhKTtcbiAgICB0aGlzLmluTWVtb3J5Q2FjaGUuc2V0KGNhY2hlS2V5LCBjYWNoZURhdGEpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDYWNoZUVudHJ5PFQ+KHZhbHVlOiBULCBvcHRpb25zOiBDYWNoZU1ldGFkYXRhT3B0aW9ucyk6IENhY2hlV2l0aE1ldGFkYXRhPFQ+IHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGxldCBleHBpcmVzQXQ6IG51bWJlcjtcbiAgICBpZiAob3B0aW9ucy50dGxNcyA8IDApIHtcbiAgICAgIGV4cGlyZXNBdCA9IC0xO1xuICAgIH0gZWxzZSB7XG4gICAgICBleHBpcmVzQXQgPSBub3cgKyBvcHRpb25zLnR0bE1zIC0gb3B0aW9ucy5leHBpcmF0aW9uVGhyZXNob2xkTXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGE6IHZhbHVlLFxuICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgY3JlYXRlZEF0OiBub3csXG4gICAgICAgIHR0bE1zOiBvcHRpb25zLnR0bE1zLFxuICAgICAgICBleHBpcmF0aW9uVGhyZXNob2xkTXM6IG9wdGlvbnMuZXhwaXJhdGlvblRocmVzaG9sZE1zLFxuICAgICAgICBleHBpcmVzQXQsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGlzRXhwaXJlZChtZXRhZGF0YT86IENhY2hlTWV0YWRhdGEpOiBib29sZWFuIHtcbiAgICBpZiAoIW1ldGFkYXRhKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAobWV0YWRhdGEuZXhwaXJlc0F0IDwgMCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGV4cGlyYXRpb25UaW1lID1cbiAgICAgIG1ldGFkYXRhLmV4cGlyZXNBdCA/PyAobWV0YWRhdGEuY3JlYXRlZEF0ICYmIG1ldGFkYXRhLnR0bE1zID8gbWV0YWRhdGEuY3JlYXRlZEF0ICsgbWV0YWRhdGEudHRsTXMgOiB1bmRlZmluZWQpO1xuXG4gICAgaWYgKGV4cGlyYXRpb25UaW1lID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBEYXRlLm5vdygpID49IGV4cGlyYXRpb25UaW1lO1xuICB9XG59XG4iLAogICAgImV4cG9ydCBjb25zdCBDQUNIRV9UVExfTkVWRVJfRVhQSVJFID0gLTE7XG4iLAogICAgIi8qKlxuICogQ29udmVydHMgYW4gYXN5bmMgaXRlcmFibGUgb2Ygc3RyaW5nIG9yIFVpbnQ4QXJyYXkgY2h1bmtzIGludG8gYW4gYXN5bmMgaXRlcmFibGUgb2YgbGluZXMuXG4gKiBIYW5kbGVzIGNhc2VzIHdoZXJlIGxpbmVzIG1heSBiZSBzcGxpdCBhY3Jvc3MgbXVsdGlwbGUgY2h1bmtzLlxuICogVXNhZ2U6XG4gKiBgYGB0c1xuICogaW1wb3J0IHsgcGlwZWxpbmUgfSBmcm9tIFwibm9kZTpzdHJlYW0vcHJvbWlzZXNcIjtcbiAqIGltcG9ydCB7IGNyZWF0ZVJlYWRTdHJlYW0gfSBmcm9tIFwibm9kZTpmc1wiO1xuICogaW1wb3J0IHsgc3RyZWFtVG9MaW5lcyB9IGZyb20gXCJAbHVrYXNrai90cy11dGlsc1wiO1xuICpcbiAqIGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NMaW5lKGNodW5rOiBBc3luY0l0ZXJhYmxlPHN0cmluZz4pIHtcbiAqICAgZm9yIGF3YWl0IChjb25zdCBsaW5lIG9mIGNodW5rKSB7XG4gKiAgICAgY29uc29sZS5sb2cobGluZSk7XG4gKiAgICAgeWllbGQgbGluZTtcbiAqICAgfVxuICogfVxuICogY29uc3QgcmVhZFN0cmVhbSA9IGNyZWF0ZVJlYWRTdHJlYW0oXCJwYXRoL3RvL2ZpbGUudHh0XCIsIHsgZW5jb2Rpbmc6IFwidXRmLThcIiB9KTtcbiAqIGF3YWl0IHBpcGVsaW5lKHJlYWRTdHJlYW0sIHN0cmVhbVRvTGluZXMsIHByb2Nlc3Muc3Rkb3V0KS5jYXRjaCgoZXJyKSA9PiB7XG4gKiAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAqICAgcHJvY2Vzcy5leGl0KDEpO1xuICogfSk7XG4gKiBgYGBcbiAqIEBwYXJhbSBjaHVua3NcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uKiBzdHJlYW1Ub0xpbmVzKGNodW5rczogQXN5bmNJdGVyYWJsZTxzdHJpbmcgfCBVaW50OEFycmF5Pikge1xuICBsZXQgcHJldmlvdXMgPSBcIlwiO1xuXG4gIGZvciBhd2FpdCAoY29uc3QgY2h1bmsgb2YgY2h1bmtzKSB7XG4gICAgcHJldmlvdXMgKz0gY2h1bms7XG4gICAgbGV0IGVvbEluZGV4OiBudW1iZXI7XG5cbiAgICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vQXNzaWduSW5FeHByZXNzaW9uczogXCJleHBsYW5hdGlvblwiXG4gICAgd2hpbGUgKChlb2xJbmRleCA9IHByZXZpb3VzLmluZGV4T2YoXCJcXG5cIikpID49IDApIHtcbiAgICAgIC8vIHRoaXMgbGluZSBpbmNsdWRlcyB0aGUgRU9MXG4gICAgICBjb25zdCBsaW5lID0gcHJldmlvdXMuc2xpY2UoMCwgZW9sSW5kZXggKyAxKTtcbiAgICAgIHlpZWxkIGxpbmU/LnRyaW0oKSA/PyBcIlwiO1xuICAgICAgcHJldmlvdXMgPSBwcmV2aW91cy5zbGljZShlb2xJbmRleCArIDEpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChwcmV2aW91cy5sZW5ndGggPiAwKSB7XG4gICAgeWllbGQgcHJldmlvdXM7XG4gIH1cbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCB1c2Ugc3RyZWFtVG9MaW5lc1xuICovXG5leHBvcnQgY29uc3QgY2h1bmtzVG9MaW5lcyA9IHN0cmVhbVRvTGluZXM7XG4iLAogICAgImV4cG9ydCBjb25zdCBpc051bGxPclVuZGVmaW5lZCA9ICh2YWx1ZTogYW55KTogdmFsdWUgaXMgbnVsbCB8IHVuZGVmaW5lZCA9PiB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsT3JFbXB0eU9yVW5kZWZpbmVkKHZhbHVlPzogYW55IHwgbnVsbCk6IHZhbHVlIGlzIG51bGwgfCB1bmRlZmluZWQge1xuICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gXCJcIiB8fCB2YWx1ZS50b1N0cmluZygpLnRyaW0oKSA9PT0gXCJcIjtcbn1cbiIsCiAgICAiLyoqXG4gKiBUeXBlIGd1YXJkIHRoYXQgY2hlY2tzIGlmIHRoZSBpbnB1dCBpcyBhIHBsYWluIEphdmFTY3JpcHQgb2JqZWN0LlxuICogQHBhcmFtIHthbnl9IGlucHV0IC0gVGhlIHZhbHVlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgaW5wdXQgaXMgYSBwbGFpbiBvYmplY3QsIGZhbHNlIG90aGVyd2lzZVxuICogQHR5cGVQYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gVHlwZSBndWFyZCBuYXJyb3dzIHRoZSBpbnB1dCB0eXBlIHRvIGEgc3RyaW5nLWtleWVkIG9iamVjdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNPYmplY3QoaW5wdXQ6IGFueSk6IGlucHV0IGlzIFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5hcHBseShpbnB1dCkgPT09IFwiW29iamVjdCBPYmplY3RdXCI7XG59XG4iLAogICAgImV4cG9ydCBmdW5jdGlvbiBpc1ByaW1pdGl2ZSh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICByZXR1cm4gKHR5cGVvZiB2YWx1ZSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgdmFsdWUgIT09IFwiZnVuY3Rpb25cIikgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgaW5zdGFuY2VvZiBEYXRlO1xufVxuIiwKICAgICJpbXBvcnQgc2pzIGZyb20gXCJzZWN1cmUtanNvbi1wYXJzZVwiO1xuXG4vKipcbiAqIFNhZmVseSBwYXJzZXMgSlNPTiBpbnB1dCB1c2luZyBzZWN1cmUtanNvbi1wYXJzZSB3aXRoIHByb3RvdHlwZSBwb2xsdXRpb24gcHJvdGVjdGlvbi5cbiAqIEBwYXJhbSB7YW55fSBpbnB1dCAtIFRoZSBpbnB1dCB0byBiZSBwYXJzZWQgYXMgSlNPTlxuICogQHJldHVybnMge3sgdmFsdWU/OiBhbnksIGVycj86IEVycm9yIH19IEFuIG9iamVjdCBjb250YWluaW5nIGVpdGhlciB0aGUgcGFyc2VkIHZhbHVlIG9yIGFuIGVycm9yIGlmIHBhcnNpbmcgZmFpbGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBqc29uUGFyc2VyKGlucHV0OiBhbnkpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4geyB2YWx1ZTogc2pzLnBhcnNlKGlucHV0LCB7IHByb3RvQWN0aW9uOiBcInJlbW92ZVwiIH0pIH07XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiB7IGVyciB9O1xuICB9XG59XG4iLAogICAgImV4cG9ydCBmdW5jdGlvbiByYW5kb21TdHJpbmcobGVuZ3RoOiBudW1iZXIgPSA2KTogc3RyaW5nIHtcbiAgbGV0IHJlc3VsdCA9IFwiXCI7XG4gIGNvbnN0IGNoYXJhY3RlcnMgPSBcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5XCI7XG4gIGNvbnN0IGNoYXJhY3RlcnNMZW5ndGggPSBjaGFyYWN0ZXJzLmxlbmd0aDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIHJlc3VsdCArPSBjaGFyYWN0ZXJzLmNoYXJBdChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjaGFyYWN0ZXJzTGVuZ3RoKSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiIsCiAgICAiZXhwb3J0IGNvbnN0IHNsZWVwID0gKG1zOiBudW1iZXIpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKSk7XG4iLAogICAgIi8vIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL3QzZG90Z2cvYTQ4NmM0YWU2NmQzMmJmMTdjMDljNzM2MDlkYWNjNWJcbi8vIFR5cGVzIGZvciB0aGUgcmVzdWx0IG9iamVjdCB3aXRoIGRpc2NyaW1pbmF0ZWQgdW5pb25cbnR5cGUgUmVzdWx0U3VjY2VzczxUPiA9IHtcbiAgZGF0YTogVDtcbiAgZXJyb3I6IG51bGw7XG59O1xuXG50eXBlIFJlc3VsdEVycm9yPEU+ID0ge1xuICBkYXRhOiBudWxsO1xuICBlcnJvcjogRTtcbn07XG5cbmV4cG9ydCB0eXBlIFJlc3VsdDxULCBFID0gRXJyb3I+ID0gUmVzdWx0U3VjY2VzczxUPiB8IFJlc3VsdEVycm9yPEU+O1xuXG5leHBvcnQgdHlwZSBQcm9taXNlUmVzdWx0PFQsIEU+ID0gUHJvbWlzZTxSZXN1bHQ8VCwgRT4+O1xuXG4vKipcbiAqIFdyYXBzIGEgc3luY2hyb25vdXMgZnVuY3Rpb24gaW4gYSB0cnktY2F0Y2ggYmxvY2sgYW5kIHJldHVybnMgYSBSZXN1bHQgdHVwbGUgY29udGFpbmluZyBlaXRoZXIgdGhlIHJldHVybmVkIHZhbHVlIG9yIHRoZSBjYXVnaHQgZXJyb3JcbiAqXG4gKiBAdGVtcGxhdGUgVCAtIFRoZSB0eXBlIG9mIHRoZSBzdWNjZXNzZnVsIHJlc3VsdCB2YWx1ZVxuICogQHRlbXBsYXRlIEUgLSBUaGUgdHlwZSBvZiB0aGUgZXJyb3IgdmFsdWUsIG11c3QgZXh0ZW5kIEVycm9yXG4gKiBAcGFyYW0geygpID0+IFR9IGZuIC0gVGhlIGZ1bmN0aW9uIHRvIGJlIGV4ZWN1dGVkXG4gKiBAcmV0dXJucyB7UmVzdWx0PFQsIEU+fSBBIHR1cGxlIGNvbnRhaW5pbmcgZWl0aGVyIFtkYXRhLCB1bmRlZmluZWRdIG9yIFt1bmRlZmluZWQsIGVycm9yXVxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCB7ZGF0YSwgZXJyb3J9ID0gdHJ5Q2F0Y2goKCkgPT4gc29tZVJpc2t5T3BlcmF0aW9uKCkpO1xuICogaWYgKGVycm9yKSB7XG4gKiAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICogfSBlbHNlIHtcbiAqICAgY29uc29sZS5sb2coZGF0YSk7XG4gKiB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cnlDYXRjaFN5bmM8VCwgRSBleHRlbmRzIEVycm9yPihmbjogKCkgPT4gVCk6IFJlc3VsdDxULCBFPiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGZuKCk7XG4gICAgcmV0dXJuIHsgZGF0YTogZGF0YSBhcyBULCBlcnJvcjogbnVsbCB9O1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiB7IGRhdGE6IG51bGwsIGVycm9yOiBlcnJvciBhcyBFIH07XG4gIH1cbn1cblxuLyoqXG4gKiBXcmFwcyBhIFByb21pc2UgaW4gYSB0cnktY2F0Y2ggYmxvY2sgYW5kIHJldHVybnMgYSBSZXN1bHQgb2JqZWN0IGNvbnRhaW5pbmcgZWl0aGVyIHRoZSByZXNvbHZlZCBkYXRhIG9yIHRoZSBjYXVnaHQgZXJyb3JcbiAqXG4gKiBAdGVtcGxhdGUgVCAtIFRoZSB0eXBlIG9mIHRoZSBzdWNjZXNzZnVsIHJlc3VsdCB2YWx1ZVxuICogQHRlbXBsYXRlIEUgLSBUaGUgdHlwZSBvZiB0aGUgZXJyb3IgdmFsdWUsIGRlZmF1bHRzIHRvIEVycm9yXG4gKiBAcGFyYW0ge1Byb21pc2U8VD59IHByb21pc2UgLSBUaGUgcHJvbWlzZSB0byBiZSBleGVjdXRlZFxuICogQHJldHVybnMge1Byb21pc2U8UmVzdWx0PFQsIEU+Pn0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBSZXN1bHQgb2JqZWN0IGNvbnRhaW5pbmcgZWl0aGVyIHRoZSBkYXRhIG9yIGVycm9yXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHtkYXRhLCBlcnJvcn0gPSBhd2FpdCB0cnlDYXRjaChzb21lUHJvbWlzZSk7XG4gKiBpZiAoZXJyb3IpIHtcbiAqICAgY29uc29sZS5lcnJvcihyZXN1bHQuZXJyb3IpO1xuICogfSBlbHNlIHtcbiAqICAgY29uc29sZS5sb2coZGF0YSk7XG4gKiB9XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0cnlDYXRjaDxULCBFIGV4dGVuZHMgRXJyb3I+KHByb21pc2U6IFByb21pc2U8VD4pOiBQcm9taXNlUmVzdWx0PFQsIEU+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcHJvbWlzZTtcbiAgICByZXR1cm4geyBkYXRhOiBkYXRhIGFzIFQsIGVycm9yOiBudWxsIH07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHsgZGF0YTogbnVsbCwgZXJyb3I6IGVycm9yIGFzIEUgfTtcbiAgfVxufVxuXG4vKipcbiAqIFR5cGUgZ3VhcmQgdG8gY2hlY2sgaWYgYSBSZXN1bHQgb2JqZWN0IHJlcHJlc2VudHMgYSBzdWNjZXNzZnVsIG9wZXJhdGlvblxuICpcbiAqIEB0ZW1wbGF0ZSBUIC0gVGhlIHR5cGUgb2YgdGhlIHN1Y2Nlc3NmdWwgcmVzdWx0IHZhbHVlXG4gKiBAdGVtcGxhdGUgRSAtIFRoZSB0eXBlIG9mIHRoZSBlcnJvciB2YWx1ZSwgZGVmYXVsdHMgdG8gRXJyb3JcbiAqIEBwYXJhbSB7UmVzdWx0PFQsIEU+fSByZXN1bHQgLSBUaGUgUmVzdWx0IG9iamVjdCB0byBjaGVja1xuICogQHJldHVybnMge3Jlc3VsdCBpcyBSZXN1bHRTdWNjZXNzPFQ+fSBUcnVlIGlmIHRoZSByZXN1bHQgaXMgc3VjY2Vzc2Z1bCAoZXJyb3IgaXMgbnVsbCksIGZhbHNlIG90aGVyd2lzZVxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCByZXN1bHQgPSB0cnlDYXRjaCgoKSA9PiBzb21lT3BlcmF0aW9uKCkpO1xuICogaWYgKGlzU3VjY2VzcyhyZXN1bHQpKSB7XG4gKiAgIGNvbnNvbGUubG9nKHJlc3VsdC5kYXRhKTsgLy8gVHlwZVNjcmlwdCBrbm93cyByZXN1bHQuZGF0YSBpcyBUXG4gKiB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1N1Y2Nlc3M8VCwgRSA9IEVycm9yPihyZXN1bHQ6IFJlc3VsdDxULCBFPik6IHJlc3VsdCBpcyBSZXN1bHRTdWNjZXNzPFQ+IHtcbiAgcmV0dXJuIHJlc3VsdC5lcnJvciA9PT0gbnVsbDtcbn1cblxuLyoqXG4gKiBUeXBlIGd1YXJkIHRvIGNoZWNrIGlmIGEgUmVzdWx0IG9iamVjdCByZXByZXNlbnRzIGEgZmFpbGVkIG9wZXJhdGlvblxuICpcbiAqIEB0ZW1wbGF0ZSBUIC0gVGhlIHR5cGUgb2YgdGhlIHN1Y2Nlc3NmdWwgcmVzdWx0IHZhbHVlXG4gKiBAdGVtcGxhdGUgRSAtIFRoZSB0eXBlIG9mIHRoZSBlcnJvciB2YWx1ZSwgZGVmYXVsdHMgdG8gRXJyb3JcbiAqIEBwYXJhbSB7UmVzdWx0PFQsIEU+fSByZXN1bHQgLSBUaGUgUmVzdWx0IG9iamVjdCB0byBjaGVja1xuICogQHJldHVybnMge3Jlc3VsdCBpcyBSZXN1bHRFcnJvcjxFPn0gVHJ1ZSBpZiB0aGUgcmVzdWx0IGlzIGFuIGVycm9yIChlcnJvciBpcyBub3QgbnVsbCksIGZhbHNlIG90aGVyd2lzZVxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCByZXN1bHQgPSB0cnlDYXRjaCgoKSA9PiBzb21lT3BlcmF0aW9uKCkpO1xuICogaWYgKGlzRXJyb3IocmVzdWx0KSkge1xuICogICBjb25zb2xlLmVycm9yKHJlc3VsdC5lcnJvcik7IC8vIFR5cGVTY3JpcHQga25vd3MgcmVzdWx0LmVycm9yIGlzIEVcbiAqIH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRXJyb3I8VCwgRSA9IEVycm9yPihyZXN1bHQ6IFJlc3VsdDxULCBFPik6IHJlc3VsdCBpcyBSZXN1bHRFcnJvcjxFPiB7XG4gIHJldHVybiByZXN1bHQuZXJyb3IgIT09IG51bGw7XG59XG4iCiAgXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFPLFNBQVMsVUFBVSxDQUFDLE9BQXVDO0FBQUEsRUFDaEUsT0FBTyxPQUFPLFVBQVU7QUFBQTs7O0FDR25CLFNBQVMsU0FBa0IsQ0FBQyxPQUFxQztBQUFBLEVBQ3RFLE9BQ0UsQ0FBQyxDQUFDLFVBQ0QsT0FBTyxVQUFVLFlBQVksT0FBTyxVQUFVLGVBQy9DLFVBQVUsU0FDVixPQUFPLE1BQU0sU0FBUztBQUFBOzs7QUNKMUIsSUFBTSxzQkFBb0M7QUFBQSxFQUN4Qyx1QkFBdUI7QUFBQSxFQUN2QixPQUFPLEtBQUssS0FBSztBQUNuQjtBQUFBO0FBRU8sTUFBTSxNQUE4RDtBQUFBLEVBQ2pFLGdCQUFnRCxJQUFJO0FBQUEsRUFDM0M7QUFBQSxFQUNBO0FBQUEsRUFJakIsV0FBVyxDQUFDLFNBQTRDLGdCQUF3QztBQUFBLElBQzlGLE1BQU0sVUFBVSxXQUFXLEVBQUUsY0FBYyxXQUFZLFVBQW9DO0FBQUEsSUFDM0YsSUFBSSxXQUFXLGNBQWMsV0FBVyxjQUFjLFNBQVM7QUFBQSxNQUM3RCxLQUFLLFVBQVU7QUFBQSxJQUNqQjtBQUFBLElBRUEsS0FBSyxVQUFVO0FBQUEsU0FDVjtBQUFBLFNBQ0E7QUFBQSxJQUNMO0FBQUE7QUFBQSxPQUdZLGVBQWlCLENBQUMsVUFBMEM7QUFBQSxJQUN4RSxJQUFJLENBQUMsS0FBSyxTQUFTO0FBQUEsTUFDakI7QUFBQSxJQUNGO0FBQUEsSUFFQSxPQUFPLEtBQUssUUFBUSxTQUFTLFFBQVE7QUFBQTtBQUFBLE9BR3pCLGNBQWdCLENBQUMsVUFBa0IsT0FBeUI7QUFBQSxJQUN4RSxJQUFJLENBQUMsS0FBSyxTQUFTO0FBQUEsTUFDakI7QUFBQSxJQUNGO0FBQUEsSUFFQSxP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
@@ -4,66 +4,95 @@ var __defProp = Object.defineProperty;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
6
  var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ function __accessProp(key) {
8
+ return this[key];
9
+ }
10
+ var __toESMCache_node;
11
+ var __toESMCache_esm;
7
12
  var __toESM = (mod, isNodeMode, target) => {
13
+ var canCache = mod != null && typeof mod === "object";
14
+ if (canCache) {
15
+ var cache = isNodeMode ? __toESMCache_node ??= new WeakMap : __toESMCache_esm ??= new WeakMap;
16
+ var cached = cache.get(mod);
17
+ if (cached)
18
+ return cached;
19
+ }
8
20
  target = mod != null ? __create(__getProtoOf(mod)) : {};
9
21
  const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
10
22
  for (let key of __getOwnPropNames(mod))
11
23
  if (!__hasOwnProp.call(to, key))
12
24
  __defProp(to, key, {
13
- get: () => mod[key],
25
+ get: __accessProp.bind(mod, key),
14
26
  enumerable: true
15
27
  });
28
+ if (canCache)
29
+ cache.set(mod, to);
16
30
  return to;
17
31
  };
18
- var __moduleCache = /* @__PURE__ */ new WeakMap;
19
32
  var __toCommonJS = (from) => {
20
- var entry = __moduleCache.get(from), desc;
33
+ var entry = (__moduleCache ??= new WeakMap).get(from), desc;
21
34
  if (entry)
22
35
  return entry;
23
36
  entry = __defProp({}, "__esModule", { value: true });
24
- if (from && typeof from === "object" || typeof from === "function")
25
- __getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
26
- get: () => from[key],
27
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
28
- }));
37
+ if (from && typeof from === "object" || typeof from === "function") {
38
+ for (var key of __getOwnPropNames(from))
39
+ if (!__hasOwnProp.call(entry, key))
40
+ __defProp(entry, key, {
41
+ get: __accessProp.bind(from, key),
42
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
43
+ });
44
+ }
29
45
  __moduleCache.set(from, entry);
30
46
  return entry;
31
47
  };
48
+ var __moduleCache;
49
+ var __returnValue = (v) => v;
50
+ function __exportSetter(name, newValue) {
51
+ this[name] = __returnValue.bind(null, newValue);
52
+ }
32
53
  var __export = (target, all) => {
33
54
  for (var name in all)
34
55
  __defProp(target, name, {
35
56
  get: all[name],
36
57
  enumerable: true,
37
58
  configurable: true,
38
- set: (newValue) => all[name] = () => newValue
59
+ set: __exportSetter.bind(all, name)
39
60
  });
40
61
  };
41
62
 
42
63
  // src/neverthrow/index.ts
43
64
  var exports_neverthrow = {};
44
65
  __export(exports_neverthrow, {
45
- tryCatchAsync: () => tryCatchAsync,
46
- tryCatch: () => tryCatch
66
+ tryCatchSync: () => tryCatchSync,
67
+ tryCatch: () => tryCatch,
68
+ isSuccess: () => isSuccess,
69
+ isError: () => isError
47
70
  });
48
71
  module.exports = __toCommonJS(exports_neverthrow);
49
72
 
50
73
  // src/neverthrow/tryCatch.ts
51
- function tryCatch(fn) {
74
+ function tryCatchSync(fn) {
52
75
  try {
53
76
  const data = fn();
54
- return [data, undefined];
77
+ return { data, error: null };
55
78
  } catch (error) {
56
- return [undefined, error];
79
+ return { data: null, error };
57
80
  }
58
81
  }
59
- async function tryCatchAsync(promise) {
82
+ async function tryCatch(promise) {
60
83
  try {
61
84
  const data = await promise;
62
- return [data, undefined];
85
+ return { data, error: null };
63
86
  } catch (error) {
64
- return [undefined, error];
87
+ return { data: null, error };
65
88
  }
66
89
  }
90
+ function isSuccess(result) {
91
+ return result.error === null;
92
+ }
93
+ function isError(result) {
94
+ return result.error !== null;
95
+ }
67
96
 
68
- //# debugId=E33DF9FD309B2CCD64756E2164756E21
69
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL25ldmVydGhyb3cvdHJ5Q2F0Y2gudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbCiAgICAiLy8gaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vdDNkb3RnZy9hNDg2YzRhZTY2ZDMyYmYxN2MwOWM3MzYwOWRhY2M1YlxuLy8gVHlwZXMgZm9yIHRoZSByZXN1bHQgb2JqZWN0IHdpdGggZGlzY3JpbWluYXRlZCB1bmlvblxuLy8gdHlwZSBTdWNjZXNzPFQ+ID0ge1xuLy8gICBkYXRhOiBUO1xuLy8gICBlcnJvcjogbnVsbDtcbi8vIH07XG5cbi8vIHR5cGUgRmFpbHVyZTxFPiA9IHtcbi8vICAgZGF0YTogbnVsbDtcbi8vICAgZXJyb3I6IEU7XG4vLyB9O1xuXG4vLyBleHBvcnQgdHlwZSBSZXN1bHQ8VCwgRSA9IEVycm9yPiA9IFN1Y2Nlc3M8VD4gfCBGYWlsdXJlPEU+O1xuXG5leHBvcnQgdHlwZSBSZXN1bHQ8VCwgRT4gPSBbdW5kZWZpbmVkLCBFXSB8IFtULCB1bmRlZmluZWRdO1xuZXhwb3J0IHR5cGUgUHJvbWlzZVJlc3VsdDxULCBFPiA9IFByb21pc2U8UmVzdWx0PFQsIEU+PjtcblxuLyoqXG4gKiBXcmFwcyBhIHN5bmNocm9ub3VzIGZ1bmN0aW9uIGluIGEgdHJ5LWNhdGNoIGJsb2NrIGFuZCByZXR1cm5zIGEgUmVzdWx0IHR1cGxlIGNvbnRhaW5pbmcgZWl0aGVyIHRoZSByZXR1cm5lZCB2YWx1ZSBvciB0aGUgY2F1Z2h0IGVycm9yXG4gKlxuICogQHRlbXBsYXRlIFQgLSBUaGUgdHlwZSBvZiB0aGUgc3VjY2Vzc2Z1bCByZXN1bHQgdmFsdWVcbiAqIEB0ZW1wbGF0ZSBFIC0gVGhlIHR5cGUgb2YgdGhlIGVycm9yIHZhbHVlLCBtdXN0IGV4dGVuZCBFcnJvclxuICogQHBhcmFtIHsoKSA9PiBUfSBmbiAtIFRoZSBmdW5jdGlvbiB0byBiZSBleGVjdXRlZFxuICogQHJldHVybnMge1Jlc3VsdDxULCBFPn0gQSB0dXBsZSBjb250YWluaW5nIGVpdGhlciBbZGF0YSwgdW5kZWZpbmVkXSBvciBbdW5kZWZpbmVkLCBlcnJvcl1cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgW2RhdGEsIGVycm9yXSA9IHRyeUNhdGNoKCgpID0+IHNvbWVSaXNreU9wZXJhdGlvbigpKTtcbiAqIGlmIChlcnJvcikge1xuICogICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAqIH0gZWxzZSB7XG4gKiAgIGNvbnNvbGUubG9nKGRhdGEpO1xuICogfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJ5Q2F0Y2g8VCwgRSBleHRlbmRzIEVycm9yPihmbjogKCkgPT4gVCk6IFJlc3VsdDxULCBFPiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGZuKCk7XG4gICAgcmV0dXJuIFtkYXRhIGFzIFQsIHVuZGVmaW5lZF07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIFt1bmRlZmluZWQsIGVycm9yIGFzIEVdO1xuICB9XG59XG5cbi8qKlxuICogV3JhcHMgYSBQcm9taXNlIGluIGEgdHJ5LWNhdGNoIGJsb2NrIGFuZCByZXR1cm5zIGEgUmVzdWx0IG9iamVjdCBjb250YWluaW5nIGVpdGhlciB0aGUgcmVzb2x2ZWQgZGF0YSBvciB0aGUgY2F1Z2h0IGVycm9yXG4gKlxuICogQHRlbXBsYXRlIFQgLSBUaGUgdHlwZSBvZiB0aGUgc3VjY2Vzc2Z1bCByZXN1bHQgdmFsdWVcbiAqIEB0ZW1wbGF0ZSBFIC0gVGhlIHR5cGUgb2YgdGhlIGVycm9yIHZhbHVlLCBkZWZhdWx0cyB0byBFcnJvclxuICogQHBhcmFtIHtQcm9taXNlPFQ+fSBwcm9taXNlIC0gVGhlIHByb21pc2UgdG8gYmUgZXhlY3V0ZWRcbiAqIEByZXR1cm5zIHtQcm9taXNlPFJlc3VsdDxULCBFPj59IEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGEgUmVzdWx0IG9iamVjdCBjb250YWluaW5nIGVpdGhlciB0aGUgZGF0YSBvciBlcnJvclxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCB7ZGF0YSwgZXJyb3J9ID0gYXdhaXQgdHJ5Q2F0Y2hBc3luYyhzb21lUHJvbWlzZSk7XG4gKiBpZiAoZXJyb3IpIHtcbiAqICAgY29uc29sZS5lcnJvcihyZXN1bHQuZXJyb3IpO1xuICogfSBlbHNlIHtcbiAqICAgY29uc29sZS5sb2coZGF0YSk7XG4gKiB9XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0cnlDYXRjaEFzeW5jPFQsIEUgZXh0ZW5kcyBFcnJvcj4ocHJvbWlzZTogUHJvbWlzZTxUPik6IFByb21pc2VSZXN1bHQ8VCwgRT4ge1xuICB0cnkge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBwcm9taXNlO1xuICAgIHJldHVybiBbZGF0YSBhcyBULCB1bmRlZmluZWRdO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBbdW5kZWZpbmVkLCBlcnJvciBhcyBFXTtcbiAgfVxufVxuIgogIF0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQ08sU0FBUyxRQUE0QixDQUFDLElBQTJCO0FBQUEsRUFDdEUsSUFBSTtBQUFBLElBQ0YsTUFBTSxPQUFPLEdBQUc7QUFBQSxJQUNoQixPQUFPLENBQUMsTUFBVyxTQUFTO0FBQUEsSUFDNUIsT0FBTyxPQUFPO0FBQUEsSUFDZCxPQUFPLENBQUMsV0FBVyxLQUFVO0FBQUE7QUFBQTtBQW9CakMsZUFBc0IsYUFBaUMsQ0FBQyxTQUEwQztBQUFBLEVBQ2hHLElBQUk7QUFBQSxJQUNGLE1BQU0sT0FBTyxNQUFNO0FBQUEsSUFDbkIsT0FBTyxDQUFDLE1BQVcsU0FBUztBQUFBLElBQzVCLE9BQU8sT0FBTztBQUFBLElBQ2QsT0FBTyxDQUFDLFdBQVcsS0FBVTtBQUFBO0FBQUE7IiwKICAiZGVidWdJZCI6ICJFMzNERjlGRDMwOUIyQ0NENjQ3NTZFMjE2NDc1NkUyMSIsCiAgIm5hbWVzIjogW10KfQ==
97
+ //# debugId=E1FC7C5AB7E8E88164756E2164756E21
98
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL25ldmVydGhyb3cvdHJ5Q2F0Y2gudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbCiAgICAiLy8gaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vdDNkb3RnZy9hNDg2YzRhZTY2ZDMyYmYxN2MwOWM3MzYwOWRhY2M1YlxuLy8gVHlwZXMgZm9yIHRoZSByZXN1bHQgb2JqZWN0IHdpdGggZGlzY3JpbWluYXRlZCB1bmlvblxudHlwZSBSZXN1bHRTdWNjZXNzPFQ+ID0ge1xuICBkYXRhOiBUO1xuICBlcnJvcjogbnVsbDtcbn07XG5cbnR5cGUgUmVzdWx0RXJyb3I8RT4gPSB7XG4gIGRhdGE6IG51bGw7XG4gIGVycm9yOiBFO1xufTtcblxuZXhwb3J0IHR5cGUgUmVzdWx0PFQsIEUgPSBFcnJvcj4gPSBSZXN1bHRTdWNjZXNzPFQ+IHwgUmVzdWx0RXJyb3I8RT47XG5cbmV4cG9ydCB0eXBlIFByb21pc2VSZXN1bHQ8VCwgRT4gPSBQcm9taXNlPFJlc3VsdDxULCBFPj47XG5cbi8qKlxuICogV3JhcHMgYSBzeW5jaHJvbm91cyBmdW5jdGlvbiBpbiBhIHRyeS1jYXRjaCBibG9jayBhbmQgcmV0dXJucyBhIFJlc3VsdCB0dXBsZSBjb250YWluaW5nIGVpdGhlciB0aGUgcmV0dXJuZWQgdmFsdWUgb3IgdGhlIGNhdWdodCBlcnJvclxuICpcbiAqIEB0ZW1wbGF0ZSBUIC0gVGhlIHR5cGUgb2YgdGhlIHN1Y2Nlc3NmdWwgcmVzdWx0IHZhbHVlXG4gKiBAdGVtcGxhdGUgRSAtIFRoZSB0eXBlIG9mIHRoZSBlcnJvciB2YWx1ZSwgbXVzdCBleHRlbmQgRXJyb3JcbiAqIEBwYXJhbSB7KCkgPT4gVH0gZm4gLSBUaGUgZnVuY3Rpb24gdG8gYmUgZXhlY3V0ZWRcbiAqIEByZXR1cm5zIHtSZXN1bHQ8VCwgRT59IEEgdHVwbGUgY29udGFpbmluZyBlaXRoZXIgW2RhdGEsIHVuZGVmaW5lZF0gb3IgW3VuZGVmaW5lZCwgZXJyb3JdXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHtkYXRhLCBlcnJvcn0gPSB0cnlDYXRjaCgoKSA9PiBzb21lUmlza3lPcGVyYXRpb24oKSk7XG4gKiBpZiAoZXJyb3IpIHtcbiAqICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gKiB9IGVsc2Uge1xuICogICBjb25zb2xlLmxvZyhkYXRhKTtcbiAqIH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyeUNhdGNoU3luYzxULCBFIGV4dGVuZHMgRXJyb3I+KGZuOiAoKSA9PiBUKTogUmVzdWx0PFQsIEU+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBkYXRhID0gZm4oKTtcbiAgICByZXR1cm4geyBkYXRhOiBkYXRhIGFzIFQsIGVycm9yOiBudWxsIH07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHsgZGF0YTogbnVsbCwgZXJyb3I6IGVycm9yIGFzIEUgfTtcbiAgfVxufVxuXG4vKipcbiAqIFdyYXBzIGEgUHJvbWlzZSBpbiBhIHRyeS1jYXRjaCBibG9jayBhbmQgcmV0dXJucyBhIFJlc3VsdCBvYmplY3QgY29udGFpbmluZyBlaXRoZXIgdGhlIHJlc29sdmVkIGRhdGEgb3IgdGhlIGNhdWdodCBlcnJvclxuICpcbiAqIEB0ZW1wbGF0ZSBUIC0gVGhlIHR5cGUgb2YgdGhlIHN1Y2Nlc3NmdWwgcmVzdWx0IHZhbHVlXG4gKiBAdGVtcGxhdGUgRSAtIFRoZSB0eXBlIG9mIHRoZSBlcnJvciB2YWx1ZSwgZGVmYXVsdHMgdG8gRXJyb3JcbiAqIEBwYXJhbSB7UHJvbWlzZTxUPn0gcHJvbWlzZSAtIFRoZSBwcm9taXNlIHRvIGJlIGV4ZWN1dGVkXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxSZXN1bHQ8VCwgRT4+fSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIFJlc3VsdCBvYmplY3QgY29udGFpbmluZyBlaXRoZXIgdGhlIGRhdGEgb3IgZXJyb3JcbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3Qge2RhdGEsIGVycm9yfSA9IGF3YWl0IHRyeUNhdGNoKHNvbWVQcm9taXNlKTtcbiAqIGlmIChlcnJvcikge1xuICogICBjb25zb2xlLmVycm9yKHJlc3VsdC5lcnJvcik7XG4gKiB9IGVsc2Uge1xuICogICBjb25zb2xlLmxvZyhkYXRhKTtcbiAqIH1cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRyeUNhdGNoPFQsIEUgZXh0ZW5kcyBFcnJvcj4ocHJvbWlzZTogUHJvbWlzZTxUPik6IFByb21pc2VSZXN1bHQ8VCwgRT4ge1xuICB0cnkge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBwcm9taXNlO1xuICAgIHJldHVybiB7IGRhdGE6IGRhdGEgYXMgVCwgZXJyb3I6IG51bGwgfTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4geyBkYXRhOiBudWxsLCBlcnJvcjogZXJyb3IgYXMgRSB9O1xuICB9XG59XG5cbi8qKlxuICogVHlwZSBndWFyZCB0byBjaGVjayBpZiBhIFJlc3VsdCBvYmplY3QgcmVwcmVzZW50cyBhIHN1Y2Nlc3NmdWwgb3BlcmF0aW9uXG4gKlxuICogQHRlbXBsYXRlIFQgLSBUaGUgdHlwZSBvZiB0aGUgc3VjY2Vzc2Z1bCByZXN1bHQgdmFsdWVcbiAqIEB0ZW1wbGF0ZSBFIC0gVGhlIHR5cGUgb2YgdGhlIGVycm9yIHZhbHVlLCBkZWZhdWx0cyB0byBFcnJvclxuICogQHBhcmFtIHtSZXN1bHQ8VCwgRT59IHJlc3VsdCAtIFRoZSBSZXN1bHQgb2JqZWN0IHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7cmVzdWx0IGlzIFJlc3VsdFN1Y2Nlc3M8VD59IFRydWUgaWYgdGhlIHJlc3VsdCBpcyBzdWNjZXNzZnVsIChlcnJvciBpcyBudWxsKSwgZmFsc2Ugb3RoZXJ3aXNlXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHJlc3VsdCA9IHRyeUNhdGNoKCgpID0+IHNvbWVPcGVyYXRpb24oKSk7XG4gKiBpZiAoaXNTdWNjZXNzKHJlc3VsdCkpIHtcbiAqICAgY29uc29sZS5sb2cocmVzdWx0LmRhdGEpOyAvLyBUeXBlU2NyaXB0IGtub3dzIHJlc3VsdC5kYXRhIGlzIFRcbiAqIH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU3VjY2VzczxULCBFID0gRXJyb3I+KHJlc3VsdDogUmVzdWx0PFQsIEU+KTogcmVzdWx0IGlzIFJlc3VsdFN1Y2Nlc3M8VD4ge1xuICByZXR1cm4gcmVzdWx0LmVycm9yID09PSBudWxsO1xufVxuXG4vKipcbiAqIFR5cGUgZ3VhcmQgdG8gY2hlY2sgaWYgYSBSZXN1bHQgb2JqZWN0IHJlcHJlc2VudHMgYSBmYWlsZWQgb3BlcmF0aW9uXG4gKlxuICogQHRlbXBsYXRlIFQgLSBUaGUgdHlwZSBvZiB0aGUgc3VjY2Vzc2Z1bCByZXN1bHQgdmFsdWVcbiAqIEB0ZW1wbGF0ZSBFIC0gVGhlIHR5cGUgb2YgdGhlIGVycm9yIHZhbHVlLCBkZWZhdWx0cyB0byBFcnJvclxuICogQHBhcmFtIHtSZXN1bHQ8VCwgRT59IHJlc3VsdCAtIFRoZSBSZXN1bHQgb2JqZWN0IHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7cmVzdWx0IGlzIFJlc3VsdEVycm9yPEU+fSBUcnVlIGlmIHRoZSByZXN1bHQgaXMgYW4gZXJyb3IgKGVycm9yIGlzIG5vdCBudWxsKSwgZmFsc2Ugb3RoZXJ3aXNlXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHJlc3VsdCA9IHRyeUNhdGNoKCgpID0+IHNvbWVPcGVyYXRpb24oKSk7XG4gKiBpZiAoaXNFcnJvcihyZXN1bHQpKSB7XG4gKiAgIGNvbnNvbGUuZXJyb3IocmVzdWx0LmVycm9yKTsgLy8gVHlwZVNjcmlwdCBrbm93cyByZXN1bHQuZXJyb3IgaXMgRVxuICogfVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNFcnJvcjxULCBFID0gRXJyb3I+KHJlc3VsdDogUmVzdWx0PFQsIEU+KTogcmVzdWx0IGlzIFJlc3VsdEVycm9yPEU+IHtcbiAgcmV0dXJuIHJlc3VsdC5lcnJvciAhPT0gbnVsbDtcbn1cbiIKICBdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQ08sU0FBUyxZQUFnQyxDQUFDLElBQTJCO0FBQUEsRUFDMUUsSUFBSTtBQUFBLElBQ0YsTUFBTSxPQUFPLEdBQUc7QUFBQSxJQUNoQixPQUFPLEVBQUUsTUFBaUIsT0FBTyxLQUFLO0FBQUEsSUFDdEMsT0FBTyxPQUFPO0FBQUEsSUFDZCxPQUFPLEVBQUUsTUFBTSxNQUFNLE1BQWtCO0FBQUE7QUFBQTtBQW9CM0MsZUFBc0IsUUFBNEIsQ0FBQyxTQUEwQztBQUFBLEVBQzNGLElBQUk7QUFBQSxJQUNGLE1BQU0sT0FBTyxNQUFNO0FBQUEsSUFDbkIsT0FBTyxFQUFFLE1BQWlCLE9BQU8sS0FBSztBQUFBLElBQ3RDLE9BQU8sT0FBTztBQUFBLElBQ2QsT0FBTyxFQUFFLE1BQU0sTUFBTSxNQUFrQjtBQUFBO0FBQUE7QUFrQnBDLFNBQVMsU0FBdUIsQ0FBQyxRQUFrRDtBQUFBLEVBQ3hGLE9BQU8sT0FBTyxVQUFVO0FBQUE7QUFpQm5CLFNBQVMsT0FBcUIsQ0FBQyxRQUFnRDtBQUFBLEVBQ3BGLE9BQU8sT0FBTyxVQUFVO0FBQUE7IiwKICAiZGVidWdJZCI6ICJFMUZDN0M1QUI3RThFODgxNjQ3NTZFMjE2NDc1NkUyMSIsCiAgIm5hbWVzIjogW10KfQ==
@@ -1,11 +1,13 @@
1
- // src/cache/cacheService.ts
2
- import { isPromise } from "node:util/types";
3
-
4
1
  // src/utils/isCallable.ts
5
2
  function isCallable(value) {
6
3
  return typeof value === "function";
7
4
  }
8
5
 
6
+ // src/utils/isPromise.ts
7
+ function isPromise(value) {
8
+ return !!value && (typeof value === "object" || typeof value === "function") && "then" in value && typeof value.then === "function";
9
+ }
10
+
9
11
  // src/cache/cacheService.ts
10
12
  var defaultCacheOptions = {
11
13
  expirationThresholdMs: 0,
@@ -133,5 +135,5 @@ export {
133
135
  CACHE_TTL_NEVER_EXPIRE
134
136
  };
135
137
 
136
- //# debugId=37FC73532C1D7E3664756E2164756E21
137
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NhY2hlL2NhY2hlU2VydmljZS50cyIsICIuLi8uLi9zcmMvdXRpbHMvaXNDYWxsYWJsZS50cyIsICIuLi8uLi9zcmMvY2FjaGUvY29uc3RhbnRzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWwogICAgImltcG9ydCB7IGlzUHJvbWlzZSB9IGZyb20gXCJub2RlOnV0aWwvdHlwZXNcIjtcbmltcG9ydCB7IGlzQ2FsbGFibGUgfSBmcm9tIFwiLi4vdXRpbHMvaXNDYWxsYWJsZS50c1wiO1xuaW1wb3J0IHR5cGUgeyBDYWNoZU1ldGFkYXRhT3B0aW9ucywgQ2FjaGVPcHRpb25zLCBDYWNoZVdpdGhNZXRhZGF0YSwgVmFsdWVMb2FkZXIgfSBmcm9tIFwiLi9pbnRlcm5hbC90eXBlcy50c1wiO1xuaW1wb3J0IHR5cGUgeyBDYWNoZU1ldGFkYXRhLCBJQ2FjaGVBZGFwdGVyIH0gZnJvbSBcIi4vdHlwZXMudHNcIjtcblxuY29uc3QgZGVmYXVsdENhY2hlT3B0aW9uczogQ2FjaGVPcHRpb25zID0ge1xuICBleHBpcmF0aW9uVGhyZXNob2xkTXM6IDAsXG4gIHR0bE1zOiA2MCAqIDYwICogMTAwMCxcbn07XG5cbmV4cG9ydCBjbGFzcyBDYWNoZTxUQWRhcHRlciBleHRlbmRzIElDYWNoZUFkYXB0ZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ+IHtcbiAgcHJpdmF0ZSBpbk1lbW9yeUNhY2hlOiBNYXA8c3RyaW5nLCBDYWNoZVdpdGhNZXRhZGF0YT4gPSBuZXcgTWFwKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogQ2FjaGVPcHRpb25zO1xuICBwcml2YXRlIHJlYWRvbmx5IGFkYXB0ZXI/OiBUQWRhcHRlcjtcblxuICBjb25zdHJ1Y3RvcihkZWZhdWx0T3B0aW9ucz86IFBhcnRpYWw8Q2FjaGVPcHRpb25zPik7XG4gIGNvbnN0cnVjdG9yKGFkYXB0ZXI/OiBUQWRhcHRlciwgZGVmYXVsdE9wdGlvbnM/OiBQYXJ0aWFsPENhY2hlT3B0aW9ucz4pO1xuICBjb25zdHJ1Y3RvcihhZGFwdGVyPzogVEFkYXB0ZXIgfCBQYXJ0aWFsPENhY2hlT3B0aW9ucz4sIGRlZmF1bHRPcHRpb25zPzogUGFydGlhbDxDYWNoZU9wdGlvbnM+KSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IGFkYXB0ZXIgJiYgIShcImdldFZhbHVlXCIgaW4gYWRhcHRlcikgPyAoYWRhcHRlciBhcyBQYXJ0aWFsPENhY2hlT3B0aW9ucz4pIDogZGVmYXVsdE9wdGlvbnM7XG4gICAgaWYgKGFkYXB0ZXIgJiYgXCJnZXRWYWx1ZVwiIGluIGFkYXB0ZXIgJiYgXCJzZXRWYWx1ZVwiIGluIGFkYXB0ZXIpIHtcbiAgICAgIHRoaXMuYWRhcHRlciA9IGFkYXB0ZXIgYXMgVEFkYXB0ZXI7XG4gICAgfVxuXG4gICAgdGhpcy5vcHRpb25zID0ge1xuICAgICAgLi4uZGVmYXVsdENhY2hlT3B0aW9ucyxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0RnJvbUFkYXB0ZXI8VD4oY2FjaGVLZXk6IHN0cmluZyk6IFByb21pc2U8VCB8IHVuZGVmaW5lZD4ge1xuICAgIGlmICghdGhpcy5hZGFwdGVyKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuZ2V0VmFsdWUoY2FjaGVLZXkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzYXZlVG9BZGFwdGVyPFQ+KGNhY2hlS2V5OiBzdHJpbmcsIHZhbHVlOiBUKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmFkYXB0ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hZGFwdGVyLnNldFZhbHVlPFQ+KGNhY2hlS2V5LCB2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0PFQ+KFxuICAgIGNhY2hlS2V5OiBzdHJpbmcsXG4gICAgdmFsdWVMb2FkZXI/OiBWYWx1ZUxvYWRlcjxUPixcbiAgICBvcHRpb25zOiBQYXJ0aWFsPENhY2hlTWV0YWRhdGFPcHRpb25zPiA9IHt9LFxuICApOiBQcm9taXNlPFQgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBtZXJnZWRPcHRpb25zID0gdGhpcy5tZXJnZU9wdGlvbnMob3B0aW9ucyk7XG5cbiAgICAvLyBUcnkgaW4tbWVtb3J5IGNhY2hlIGZpcnN0XG4gICAgY29uc3QgY2FjaGVkVmFsdWUgPSB0aGlzLnRyeUdldEZyb21NZW1vcnk8VD4oY2FjaGVLZXkpO1xuICAgIGlmIChjYWNoZWRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gY2FjaGVkVmFsdWU7XG4gICAgfVxuXG4gICAgLy8gTG9hZCBmcmVzaCB2YWx1ZSBmcm9tIGxvYWRlciBmdW5jdGlvbiBmaXJzdFxuICAgIGNvbnN0IGZyZXNoVmFsdWUgPSBhd2FpdCB0aGlzLnRyeUdldEZyb21WYWx1ZUxvYWRlcih2YWx1ZUxvYWRlcik7XG4gICAgaWYgKGZyZXNoVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYXdhaXQgdGhpcy5jYWNoZVZhbHVlKGNhY2hlS2V5LCBmcmVzaFZhbHVlLCBtZXJnZWRPcHRpb25zKTtcblxuICAgICAgcmV0dXJuIGZyZXNoVmFsdWU7XG4gICAgfVxuXG4gICAgLy8gVHJ5IGFkYXB0ZXIgY2FjaGUgc2Vjb25kXG4gICAgY29uc3QgYWRhcHRlclZhbHVlID0gYXdhaXQgdGhpcy50cnlHZXRGcm9tQWRhcHRlcjxUPihjYWNoZUtleSk7XG4gICAgaWYgKGFkYXB0ZXJWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBhd2FpdCB0aGlzLmNhY2hlVmFsdWUoY2FjaGVLZXksIGFkYXB0ZXJWYWx1ZSwgbWVyZ2VkT3B0aW9ucyk7XG5cbiAgICAgIHJldHVybiBhZGFwdGVyVmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtZXJnZU9wdGlvbnMob3B0aW9uczogUGFydGlhbDxDYWNoZU1ldGFkYXRhT3B0aW9ucz4pOiBDYWNoZU1ldGFkYXRhT3B0aW9ucyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR0bE1zOiB0aGlzLm9wdGlvbnMudHRsTXMsXG4gICAgICBleHBpcmF0aW9uVGhyZXNob2xkTXM6IHRoaXMub3B0aW9ucy5leHBpcmF0aW9uVGhyZXNob2xkTXMsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHRyeUdldEZyb21NZW1vcnk8VD4oY2FjaGVLZXk6IHN0cmluZyk6IFQgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGNhY2hlZCA9IHRoaXMuaW5NZW1vcnlDYWNoZS5nZXQoY2FjaGVLZXkpO1xuXG4gICAgaWYgKGNhY2hlZCAmJiAhdGhpcy5pc0V4cGlyZWQoY2FjaGVkLm1ldGFkYXRhKSkge1xuICAgICAgcmV0dXJuIGNhY2hlZC5kYXRhIGFzIFQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdHJ5R2V0RnJvbUFkYXB0ZXI8VD4oY2FjaGVLZXk6IHN0cmluZyk6IFByb21pc2U8VCB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IGNhY2hlZCA9IGF3YWl0IHRoaXMuZ2V0RnJvbUFkYXB0ZXI8Q2FjaGVXaXRoTWV0YWRhdGE8VD4+KGNhY2hlS2V5KTtcblxuICAgIGlmIChjYWNoZWQgJiYgIXRoaXMuaXNFeHBpcmVkKGNhY2hlZC5tZXRhZGF0YSkpIHtcbiAgICAgIHRoaXMuaW5NZW1vcnlDYWNoZS5zZXQoY2FjaGVLZXksIGNhY2hlZCk7XG4gICAgICByZXR1cm4gY2FjaGVkLmRhdGE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdHJ5R2V0RnJvbVZhbHVlTG9hZGVyPFQ+KHZhbHVlTG9hZGVyPzogVmFsdWVMb2FkZXI8VD4pOiBQcm9taXNlPFQgfCB1bmRlZmluZWQ+IHtcbiAgICBpZiAodmFsdWVMb2FkZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoaXNDYWxsYWJsZSh2YWx1ZUxvYWRlcikpIHtcbiAgICAgIHJldHVybiBhd2FpdCB2YWx1ZUxvYWRlcigpO1xuICAgIH1cblxuICAgIGlmIChpc1Byb21pc2UodmFsdWVMb2FkZXIpKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdmFsdWVMb2FkZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlTG9hZGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjYWNoZVZhbHVlPFQ+KGNhY2hlS2V5OiBzdHJpbmcsIHZhbHVlOiBULCBvcHRpb25zOiBDYWNoZU1ldGFkYXRhT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNhY2hlRGF0YSA9IHRoaXMuY3JlYXRlQ2FjaGVFbnRyeSh2YWx1ZSwgb3B0aW9ucyk7XG5cbiAgICBhd2FpdCB0aGlzLnNhdmVUb0FkYXB0ZXIoY2FjaGVLZXksIGNhY2hlRGF0YSk7XG4gICAgdGhpcy5pbk1lbW9yeUNhY2hlLnNldChjYWNoZUtleSwgY2FjaGVEYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQ2FjaGVFbnRyeTxUPih2YWx1ZTogVCwgb3B0aW9uczogQ2FjaGVNZXRhZGF0YU9wdGlvbnMpOiBDYWNoZVdpdGhNZXRhZGF0YTxUPiB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgZXhwaXJlc0F0OiBudW1iZXI7XG4gICAgaWYgKG9wdGlvbnMudHRsTXMgPCAwKSB7XG4gICAgICBleHBpcmVzQXQgPSAtMTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXhwaXJlc0F0ID0gbm93ICsgb3B0aW9ucy50dGxNcyAtIG9wdGlvbnMuZXhwaXJhdGlvblRocmVzaG9sZE1zO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkYXRhOiB2YWx1ZSxcbiAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgIGNyZWF0ZWRBdDogbm93LFxuICAgICAgICB0dGxNczogb3B0aW9ucy50dGxNcyxcbiAgICAgICAgZXhwaXJhdGlvblRocmVzaG9sZE1zOiBvcHRpb25zLmV4cGlyYXRpb25UaHJlc2hvbGRNcyxcbiAgICAgICAgZXhwaXJlc0F0LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBpc0V4cGlyZWQobWV0YWRhdGE/OiBDYWNoZU1ldGFkYXRhKTogYm9vbGVhbiB7XG4gICAgaWYgKCFtZXRhZGF0YSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKG1ldGFkYXRhLmV4cGlyZXNBdCA8IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBleHBpcmF0aW9uVGltZSA9XG4gICAgICBtZXRhZGF0YS5leHBpcmVzQXQgPz8gKG1ldGFkYXRhLmNyZWF0ZWRBdCAmJiBtZXRhZGF0YS50dGxNcyA/IG1ldGFkYXRhLmNyZWF0ZWRBdCArIG1ldGFkYXRhLnR0bE1zIDogdW5kZWZpbmVkKTtcblxuICAgIGlmIChleHBpcmF0aW9uVGltZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gRGF0ZS5ub3coKSA+PSBleHBpcmF0aW9uVGltZTtcbiAgfVxufVxuIiwKICAgICJleHBvcnQgZnVuY3Rpb24gaXNDYWxsYWJsZSh2YWx1ZTogYW55KTogdmFsdWUgaXMgQ2FsbGFibGVGdW5jdGlvbiB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIjtcbn1cbiIsCiAgICAiZXhwb3J0IGNvbnN0IENBQ0hFX1RUTF9ORVZFUl9FWFBJUkUgPSAtMTtcbiIKICBdLAogICJtYXBwaW5ncyI6ICI7QUFBQTs7O0FDQU8sU0FBUyxVQUFVLENBQUMsT0FBdUM7QUFBQSxFQUNoRSxPQUFPLE9BQU8sVUFBVTtBQUFBOzs7QURJMUIsSUFBTSxzQkFBb0M7QUFBQSxFQUN4Qyx1QkFBdUI7QUFBQSxFQUN2QixPQUFPLEtBQUssS0FBSztBQUNuQjtBQUFBO0FBRU8sTUFBTSxNQUE4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QUM1QyxLQUFLLGNBQWMsSUFBSSxVQUFVLFNBQVM7QUFBQTtBQUFBLEVBR3BDLGdCQUFtQixDQUFDLE9BQVUsU0FBcUQ7QUFBQSxJQUN6RixNQUFNLE1BQU0sS0FBSyxJQUFJO0FBQUEsSUFDckIsSUFBSTtBQUFBLElBQ0osSUFBSSxRQUFRLFFBQVEsR0FBRztBQUFBLE1BQ3JCLFlBQVk7QUFBQSxJQUNkLEVBQU87QUFBQSxNQUNMLFlBQVksTUFBTSxRQUFRLFFBQVEsUUFBUTtBQUFBO0FBQUEsSUFHNUMsT0FBTztBQUFBLE1BQ0wsTUFBTTtBQUFBLE1BQ04sVUFBVTtBQUFBLFFBQ1IsV0FBVztBQUFBLFFBQ1gsT0FBTyxRQUFRO0FBQUEsUUFDZix1QkFBdUIsUUFBUTtBQUFBLFFBQy9CO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQTtBQUFBLEVBR00sU0FBUyxDQUFDLFVBQW1DO0FBQUEsSUFDbkQsSUFBSSxDQUFDLFVBQVU7QUFBQSxNQUNiLE9BQU87QUFBQSxJQUNUO0FBQUEsSUFFQSxJQUFJLFNBQVMsWUFBWSxHQUFHO0FBQUEsTUFDMUIsT0FBTztBQUFBLElBQ1Q7QUFBQSxJQUVBLE1BQU0saUJBQ0osU0FBUyxjQUFjLFNBQVMsYUFBYSxTQUFTLFFBQVEsU0FBUyxZQUFZLFNBQVMsUUFBUTtBQUFBLElBRXRHLElBQUksbUJBQW1CLFdBQVc7QUFBQSxNQUNoQyxPQUFPO0FBQUEsSUFDVDtBQUFBLElBRUEsT0FBTyxLQUFLLElBQUksS0FBSztBQUFBO0FBRXpCOztBRXJLTyxJQUFNLHlCQUF5QjsiLAogICJkZWJ1Z0lkIjogIjM3RkM3MzUzMkMxRDdFMzY2NDc1NkUyMTY0NzU2RTIxIiwKICAibmFtZXMiOiBbXQp9
138
+ //# debugId=45D5F9AC75EE418464756E2164756E21
139
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL2lzQ2FsbGFibGUudHMiLCAiLi4vLi4vc3JjL3V0aWxzL2lzUHJvbWlzZS50cyIsICIuLi8uLi9zcmMvY2FjaGUvY2FjaGVTZXJ2aWNlLnRzIiwgIi4uLy4uL3NyYy9jYWNoZS9jb25zdGFudHMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbCiAgICAiZXhwb3J0IGZ1bmN0aW9uIGlzQ2FsbGFibGUodmFsdWU6IGFueSk6IHZhbHVlIGlzIENhbGxhYmxlRnVuY3Rpb24ge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCI7XG59XG4iLAogICAgIi8qKlxuICogQHBhcmFtIHZhbHVlIHVua25vd25cbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2U8VCA9IGFueT4odmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBQcm9taXNlPFQ+IHtcbiAgcmV0dXJuIChcbiAgICAhIXZhbHVlICYmXG4gICAgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIikgJiZcbiAgICBcInRoZW5cIiBpbiB2YWx1ZSAmJlxuICAgIHR5cGVvZiB2YWx1ZS50aGVuID09PSBcImZ1bmN0aW9uXCJcbiAgKTtcbn1cbiIsCiAgICAiaW1wb3J0IHsgaXNDYWxsYWJsZSB9IGZyb20gXCIuLi91dGlscy9pc0NhbGxhYmxlLnRzXCI7XG5pbXBvcnQgeyBpc1Byb21pc2UgfSBmcm9tIFwiLi4vdXRpbHMvaXNQcm9taXNlLnRzXCI7XG5pbXBvcnQgdHlwZSB7IENhY2hlTWV0YWRhdGFPcHRpb25zLCBDYWNoZU9wdGlvbnMsIENhY2hlV2l0aE1ldGFkYXRhLCBWYWx1ZUxvYWRlciB9IGZyb20gXCIuL2ludGVybmFsL3R5cGVzLnRzXCI7XG5pbXBvcnQgdHlwZSB7IENhY2hlTWV0YWRhdGEsIElDYWNoZUFkYXB0ZXIgfSBmcm9tIFwiLi90eXBlcy50c1wiO1xuXG5jb25zdCBkZWZhdWx0Q2FjaGVPcHRpb25zOiBDYWNoZU9wdGlvbnMgPSB7XG4gIGV4cGlyYXRpb25UaHJlc2hvbGRNczogMCxcbiAgdHRsTXM6IDYwICogNjAgKiAxMDAwLFxufTtcblxuZXhwb3J0IGNsYXNzIENhY2hlPFRBZGFwdGVyIGV4dGVuZHMgSUNhY2hlQWRhcHRlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZD4ge1xuICBwcml2YXRlIGluTWVtb3J5Q2FjaGU6IE1hcDxzdHJpbmcsIENhY2hlV2l0aE1ldGFkYXRhPiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBDYWNoZU9wdGlvbnM7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWRhcHRlcj86IFRBZGFwdGVyO1xuXG4gIGNvbnN0cnVjdG9yKGRlZmF1bHRPcHRpb25zPzogUGFydGlhbDxDYWNoZU9wdGlvbnM+KTtcbiAgY29uc3RydWN0b3IoYWRhcHRlcj86IFRBZGFwdGVyLCBkZWZhdWx0T3B0aW9ucz86IFBhcnRpYWw8Q2FjaGVPcHRpb25zPik7XG4gIGNvbnN0cnVjdG9yKGFkYXB0ZXI/OiBUQWRhcHRlciB8IFBhcnRpYWw8Q2FjaGVPcHRpb25zPiwgZGVmYXVsdE9wdGlvbnM/OiBQYXJ0aWFsPENhY2hlT3B0aW9ucz4pIHtcbiAgICBjb25zdCBvcHRpb25zID0gYWRhcHRlciAmJiAhKFwiZ2V0VmFsdWVcIiBpbiBhZGFwdGVyKSA/IChhZGFwdGVyIGFzIFBhcnRpYWw8Q2FjaGVPcHRpb25zPikgOiBkZWZhdWx0T3B0aW9ucztcbiAgICBpZiAoYWRhcHRlciAmJiBcImdldFZhbHVlXCIgaW4gYWRhcHRlciAmJiBcInNldFZhbHVlXCIgaW4gYWRhcHRlcikge1xuICAgICAgdGhpcy5hZGFwdGVyID0gYWRhcHRlciBhcyBUQWRhcHRlcjtcbiAgICB9XG5cbiAgICB0aGlzLm9wdGlvbnMgPSB7XG4gICAgICAuLi5kZWZhdWx0Q2FjaGVPcHRpb25zLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRGcm9tQWRhcHRlcjxUPihjYWNoZUtleTogc3RyaW5nKTogUHJvbWlzZTxUIHwgdW5kZWZpbmVkPiB7XG4gICAgaWYgKCF0aGlzLmFkYXB0ZXIpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYWRhcHRlci5nZXRWYWx1ZShjYWNoZUtleSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNhdmVUb0FkYXB0ZXI8VD4oY2FjaGVLZXk6IHN0cmluZywgdmFsdWU6IFQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuYWRhcHRlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuc2V0VmFsdWU8VD4oY2FjaGVLZXksIHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXQ8VD4oXG4gICAgY2FjaGVLZXk6IHN0cmluZyxcbiAgICB2YWx1ZUxvYWRlcj86IFZhbHVlTG9hZGVyPFQ+LFxuICAgIG9wdGlvbnM6IFBhcnRpYWw8Q2FjaGVNZXRhZGF0YU9wdGlvbnM+ID0ge30sXG4gICk6IFByb21pc2U8VCB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSB0aGlzLm1lcmdlT3B0aW9ucyhvcHRpb25zKTtcblxuICAgIC8vIFRyeSBpbi1tZW1vcnkgY2FjaGUgZmlyc3RcbiAgICBjb25zdCBjYWNoZWRWYWx1ZSA9IHRoaXMudHJ5R2V0RnJvbU1lbW9yeTxUPihjYWNoZUtleSk7XG4gICAgaWYgKGNhY2hlZFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBjYWNoZWRWYWx1ZTtcbiAgICB9XG5cbiAgICAvLyBMb2FkIGZyZXNoIHZhbHVlIGZyb20gbG9hZGVyIGZ1bmN0aW9uIGZpcnN0XG4gICAgY29uc3QgZnJlc2hWYWx1ZSA9IGF3YWl0IHRoaXMudHJ5R2V0RnJvbVZhbHVlTG9hZGVyKHZhbHVlTG9hZGVyKTtcbiAgICBpZiAoZnJlc2hWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBhd2FpdCB0aGlzLmNhY2hlVmFsdWUoY2FjaGVLZXksIGZyZXNoVmFsdWUsIG1lcmdlZE9wdGlvbnMpO1xuXG4gICAgICByZXR1cm4gZnJlc2hWYWx1ZTtcbiAgICB9XG5cbiAgICAvLyBUcnkgYWRhcHRlciBjYWNoZSBzZWNvbmRcbiAgICBjb25zdCBhZGFwdGVyVmFsdWUgPSBhd2FpdCB0aGlzLnRyeUdldEZyb21BZGFwdGVyPFQ+KGNhY2hlS2V5KTtcbiAgICBpZiAoYWRhcHRlclZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGF3YWl0IHRoaXMuY2FjaGVWYWx1ZShjYWNoZUtleSwgYWRhcHRlclZhbHVlLCBtZXJnZWRPcHRpb25zKTtcblxuICAgICAgcmV0dXJuIGFkYXB0ZXJWYWx1ZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1lcmdlT3B0aW9ucyhvcHRpb25zOiBQYXJ0aWFsPENhY2hlTWV0YWRhdGFPcHRpb25zPik6IENhY2hlTWV0YWRhdGFPcHRpb25zIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHRsTXM6IHRoaXMub3B0aW9ucy50dGxNcyxcbiAgICAgIGV4cGlyYXRpb25UaHJlc2hvbGRNczogdGhpcy5vcHRpb25zLmV4cGlyYXRpb25UaHJlc2hvbGRNcyxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgdHJ5R2V0RnJvbU1lbW9yeTxUPihjYWNoZUtleTogc3RyaW5nKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgY2FjaGVkID0gdGhpcy5pbk1lbW9yeUNhY2hlLmdldChjYWNoZUtleSk7XG5cbiAgICBpZiAoY2FjaGVkICYmICF0aGlzLmlzRXhwaXJlZChjYWNoZWQubWV0YWRhdGEpKSB7XG4gICAgICByZXR1cm4gY2FjaGVkLmRhdGEgYXMgVDtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB0cnlHZXRGcm9tQWRhcHRlcjxUPihjYWNoZUtleTogc3RyaW5nKTogUHJvbWlzZTxUIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgY2FjaGVkID0gYXdhaXQgdGhpcy5nZXRGcm9tQWRhcHRlcjxDYWNoZVdpdGhNZXRhZGF0YTxUPj4oY2FjaGVLZXkpO1xuXG4gICAgaWYgKGNhY2hlZCAmJiAhdGhpcy5pc0V4cGlyZWQoY2FjaGVkLm1ldGFkYXRhKSkge1xuICAgICAgdGhpcy5pbk1lbW9yeUNhY2hlLnNldChjYWNoZUtleSwgY2FjaGVkKTtcbiAgICAgIHJldHVybiBjYWNoZWQuZGF0YTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB0cnlHZXRGcm9tVmFsdWVMb2FkZXI8VD4odmFsdWVMb2FkZXI/OiBWYWx1ZUxvYWRlcjxUPik6IFByb21pc2U8VCB8IHVuZGVmaW5lZD4ge1xuICAgIGlmICh2YWx1ZUxvYWRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmIChpc0NhbGxhYmxlKHZhbHVlTG9hZGVyKSkge1xuICAgICAgcmV0dXJuIGF3YWl0IHZhbHVlTG9hZGVyKCk7XG4gICAgfVxuXG4gICAgaWYgKGlzUHJvbWlzZSh2YWx1ZUxvYWRlcikpIHtcbiAgICAgIHJldHVybiBhd2FpdCB2YWx1ZUxvYWRlcjtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWVMb2FkZXI7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNhY2hlVmFsdWU8VD4oY2FjaGVLZXk6IHN0cmluZywgdmFsdWU6IFQsIG9wdGlvbnM6IENhY2hlTWV0YWRhdGFPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY2FjaGVEYXRhID0gdGhpcy5jcmVhdGVDYWNoZUVudHJ5KHZhbHVlLCBvcHRpb25zKTtcblxuICAgIGF3YWl0IHRoaXMuc2F2ZVRvQWRhcHRlcihjYWNoZUtleSwgY2FjaGVEYXRhKTtcbiAgICB0aGlzLmluTWVtb3J5Q2FjaGUuc2V0KGNhY2hlS2V5LCBjYWNoZURhdGEpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDYWNoZUVudHJ5PFQ+KHZhbHVlOiBULCBvcHRpb25zOiBDYWNoZU1ldGFkYXRhT3B0aW9ucyk6IENhY2hlV2l0aE1ldGFkYXRhPFQ+IHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGxldCBleHBpcmVzQXQ6IG51bWJlcjtcbiAgICBpZiAob3B0aW9ucy50dGxNcyA8IDApIHtcbiAgICAgIGV4cGlyZXNBdCA9IC0xO1xuICAgIH0gZWxzZSB7XG4gICAgICBleHBpcmVzQXQgPSBub3cgKyBvcHRpb25zLnR0bE1zIC0gb3B0aW9ucy5leHBpcmF0aW9uVGhyZXNob2xkTXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGE6IHZhbHVlLFxuICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgY3JlYXRlZEF0OiBub3csXG4gICAgICAgIHR0bE1zOiBvcHRpb25zLnR0bE1zLFxuICAgICAgICBleHBpcmF0aW9uVGhyZXNob2xkTXM6IG9wdGlvbnMuZXhwaXJhdGlvblRocmVzaG9sZE1zLFxuICAgICAgICBleHBpcmVzQXQsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGlzRXhwaXJlZChtZXRhZGF0YT86IENhY2hlTWV0YWRhdGEpOiBib29sZWFuIHtcbiAgICBpZiAoIW1ldGFkYXRhKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAobWV0YWRhdGEuZXhwaXJlc0F0IDwgMCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGV4cGlyYXRpb25UaW1lID1cbiAgICAgIG1ldGFkYXRhLmV4cGlyZXNBdCA/PyAobWV0YWRhdGEuY3JlYXRlZEF0ICYmIG1ldGFkYXRhLnR0bE1zID8gbWV0YWRhdGEuY3JlYXRlZEF0ICsgbWV0YWRhdGEudHRsTXMgOiB1bmRlZmluZWQpO1xuXG4gICAgaWYgKGV4cGlyYXRpb25UaW1lID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBEYXRlLm5vdygpID49IGV4cGlyYXRpb25UaW1lO1xuICB9XG59XG4iLAogICAgImV4cG9ydCBjb25zdCBDQUNIRV9UVExfTkVWRVJfRVhQSVJFID0gLTE7XG4iCiAgXSwKICAibWFwcGluZ3MiOiAiO0FBQU8sU0FBUyxVQUFVLENBQUMsT0FBdUM7QUFBQSxFQUNoRSxPQUFPLE9BQU8sVUFBVTtBQUFBOzs7QUNHbkIsU0FBUyxTQUFrQixDQUFDLE9BQXFDO0FBQUEsRUFDdEUsT0FDRSxDQUFDLENBQUMsVUFDRCxPQUFPLFVBQVUsWUFBWSxPQUFPLFVBQVUsZUFDL0MsVUFBVSxTQUNWLE9BQU8sTUFBTSxTQUFTO0FBQUE7OztBQ0oxQixJQUFNLHNCQUFvQztBQUFBLEVBQ3hDLHVCQUF1QjtBQUFBLEVBQ3ZCLE9BQU8sS0FBSyxLQUFLO0FBQ25CO0FBQUE7QUFFTyxNQUFNLE1BQThEO0FBQUEsRUFDakUsZ0JBQWdELElBQUk7QUFBQSxFQUMzQztBQUFBLEVBQ0E7QUFBQSxFQUlqQixXQUFXLENBQUMsU0FBNEMsZ0JBQXdDO0FBQUEsSUFDOUYsTUFBTSxVQUFVLFdBQVcsRUFBRSxjQUFjLFdBQVksVUFBb0M7QUFBQSxJQUMzRixJQUFJLFdBQVcsY0FBYyxXQUFXLGNBQWMsU0FBUztBQUFBLE1BQzdELEtBQUssVUFBVTtBQUFBLElBQ2pCO0FBQUEsSUFFQSxLQUFLLFVBQVU7QUFBQSxTQUNWO0FBQUEsU0FDQTtBQUFBLElBQ0w7QUFBQTtBQUFBLE9BR1ksZUFBaUIsQ0FBQyxVQUEwQztBQUFBLElBQ3hFLElBQUksQ0FBQyxLQUFLLFNBQVM7QUFBQSxNQUNqQjtBQUFBLElBQ0Y7QUFBQSxJQUVBLE9BQU8sS0FBSyxRQUFRLFNBQVMsUUFBUTtBQUFBO0FBQUEsT0FHekIsY0FBZ0IsQ0FBQyxVQUFrQixPQUF5QjtBQUFBLElBQ3hFLElBQUksQ0FBQyxLQUFLLFNBQVM7QUFBQSxNQUNqQjtBQUFBLElBQ0Y7QUFBQSxJQUVBLE9BQU8sS0FBSyxRQUFRLFNBQVksVUFBVSxLQUFLO0FBQUE7QUFBQSxPQUdwQyxJQUFNLENBQ2pCLFVBQ0EsYUFDQSxVQUF5QyxDQUFDLEdBQ2xCO0FBQUEsSUFDeEIsTUFBTSxnQkFBZ0IsS0FBSyxhQUFhLE9BQU87QUFBQSxJQUcvQyxNQUFNLGNBQWMsS0FBSyxpQkFBb0IsUUFBUTtBQUFBLElBQ3JELElBQUksZ0JBQWdCLFdBQVc7QUFBQSxNQUM3QixPQUFPO0FBQUEsSUFDVDtBQUFBLElBR0EsTUFBTSxhQUFhLE1BQU0sS0FBSyxzQkFBc0IsV0FBVztBQUFBLElBQy9ELElBQUksZUFBZSxXQUFXO0FBQUEsTUFDNUIsTUFBTSxLQUFLLFdBQVcsVUFBVSxZQUFZLGFBQWE7QUFBQSxNQUV6RCxPQUFPO0FBQUEsSUFDVDtBQUFBLElBR0EsTUFBTSxlQUFlLE1BQU0sS0FBSyxrQkFBcUIsUUFBUTtBQUFBLElBQzdELElBQUksaUJBQWlCLFdBQVc7QUFBQSxNQUM5QixNQUFNLEtBQUssV0FBVyxVQUFVLGNBQWMsYUFBYTtBQUFBLE1BRTNELE9BQU87QUFBQSxJQUNUO0FBQUE7QUFBQSxFQUdNLFlBQVksQ0FBQyxTQUE4RDtBQUFBLElBQ2pGLE9BQU87QUFBQSxNQUNMLE9BQU8sS0FBSyxRQUFRO0FBQUEsTUFDcEIsdUJBQXVCLEtBQUssUUFBUTtBQUFBLFNBQ2pDO0FBQUEsSUFDTDtBQUFBO0FBQUEsRUFHTSxnQkFBbUIsQ0FBQyxVQUFpQztBQUFBLElBQzNELE1BQU0sU0FBUyxLQUFLLGNBQWMsSUFBSSxRQUFRO0FBQUEsSUFFOUMsSUFBSSxVQUFVLENBQUMsS0FBSyxVQUFVLE9BQU8sUUFBUSxHQUFHO0FBQUEsTUFDOUMsT0FBTyxPQUFPO0FBQUEsSUFDaEI7QUFBQSxJQUVBO0FBQUE7QUFBQSxPQUdZLGtCQUFvQixDQUFDLFVBQTBDO0FBQUEsSUFDM0UsTUFBTSxTQUFTLE1BQU0sS0FBSyxlQUFxQyxRQUFRO0FBQUEsSUFFdkUsSUFBSSxVQUFVLENBQUMsS0FBSyxVQUFVLE9BQU8sUUFBUSxHQUFHO0FBQUEsTUFDOUMsS0FBSyxjQUFjLElBQUksVUFBVSxNQUFNO0FBQUEsTUFDdkMsT0FBTyxPQUFPO0FBQUEsSUFDaEI7QUFBQSxJQUVBO0FBQUE7QUFBQSxPQUdZLHNCQUF3QixDQUFDLGFBQXNEO0FBQUEsSUFDM0YsSUFBSSxnQkFBZ0IsV0FBVztBQUFBLE1BQzdCO0FBQUEsSUFDRjtBQUFBLElBRUEsSUFBSSxXQUFXLFdBQVcsR0FBRztBQUFBLE1BQzNCLE9BQU8sTUFBTSxZQUFZO0FBQUEsSUFDM0I7QUFBQSxJQUVBLElBQUksVUFBVSxXQUFXLEdBQUc7QUFBQSxNQUMxQixPQUFPLE1BQU07QUFBQSxJQUNmO0FBQUEsSUFFQSxPQUFPO0FBQUE7QUFBQSxPQUdLLFdBQWEsQ0FBQyxVQUFrQixPQUFVLFNBQThDO0FBQUEsSUFDcEcsTUFBTSxZQUFZLEtBQUssaUJBQWlCLE9BQU8sT0FBTztBQUFBLElBRXRELE1BQU0sS0FBSyxjQUFjLFVBQVUsU0FBUztBQUFBLElBQzVDLEtBQUssY0FBYyxJQUFJLFVBQVUsU0FBUztBQUFBO0FBQUEsRUFHcEMsZ0JBQW1CLENBQUMsT0FBVSxTQUFxRDtBQUFBLElBQ3pGLE1BQU0sTUFBTSxLQUFLLElBQUk7QUFBQSxJQUNyQixJQUFJO0FBQUEsSUFDSixJQUFJLFFBQVEsUUFBUSxHQUFHO0FBQUEsTUFDckIsWUFBWTtBQUFBLElBQ2QsRUFBTztBQUFBLE1BQ0wsWUFBWSxNQUFNLFFBQVEsUUFBUSxRQUFRO0FBQUE7QUFBQSxJQUc1QyxPQUFPO0FBQUEsTUFDTCxNQUFNO0FBQUEsTUFDTixVQUFVO0FBQUEsUUFDUixXQUFXO0FBQUEsUUFDWCxPQUFPLFFBQVE7QUFBQSxRQUNmLHVCQUF1QixRQUFRO0FBQUEsUUFDL0I7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBO0FBQUEsRUFHTSxTQUFTLENBQUMsVUFBbUM7QUFBQSxJQUNuRCxJQUFJLENBQUMsVUFBVTtBQUFBLE1BQ2IsT0FBTztBQUFBLElBQ1Q7QUFBQSxJQUVBLElBQUksU0FBUyxZQUFZLEdBQUc7QUFBQSxNQUMxQixPQUFPO0FBQUEsSUFDVDtBQUFBLElBRUEsTUFBTSxpQkFDSixTQUFTLGNBQWMsU0FBUyxhQUFhLFNBQVMsUUFBUSxTQUFTLFlBQVksU0FBUyxRQUFRO0FBQUEsSUFFdEcsSUFBSSxtQkFBbUIsV0FBVztBQUFBLE1BQ2hDLE9BQU87QUFBQSxJQUNUO0FBQUEsSUFFQSxPQUFPLEtBQUssSUFBSSxLQUFLO0FBQUE7QUFFekI7O0FDcktPLElBQU0seUJBQXlCOyIsCiAgImRlYnVnSWQiOiAiNDVENUY5QUM3NUVFNDE4NDY0NzU2RTIxNjQ3NTZFMjEiLAogICJuYW1lcyI6IFtdCn0=
@@ -1,11 +1,13 @@
1
- // src/cache/cacheService.ts
2
- import { isPromise } from "node:util/types";
3
-
4
1
  // src/utils/isCallable.ts
5
2
  function isCallable(value) {
6
3
  return typeof value === "function";
7
4
  }
8
5
 
6
+ // src/utils/isPromise.ts
7
+ function isPromise(value) {
8
+ return !!value && (typeof value === "object" || typeof value === "function") && "then" in value && typeof value.then === "function";
9
+ }
10
+
9
11
  // src/cache/cacheService.ts
10
12
  var defaultCacheOptions = {
11
13
  expirationThresholdMs: 0,
@@ -181,37 +183,46 @@ function randomString(length = 6) {
181
183
  // src/utils/sleep.ts
182
184
  var sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
183
185
  // src/neverthrow/tryCatch.ts
184
- function tryCatch(fn) {
186
+ function tryCatchSync(fn) {
185
187
  try {
186
188
  const data = fn();
187
- return [data, undefined];
189
+ return { data, error: null };
188
190
  } catch (error) {
189
- return [undefined, error];
191
+ return { data: null, error };
190
192
  }
191
193
  }
192
- async function tryCatchAsync(promise) {
194
+ async function tryCatch(promise) {
193
195
  try {
194
196
  const data = await promise;
195
- return [data, undefined];
197
+ return { data, error: null };
196
198
  } catch (error) {
197
- return [undefined, error];
199
+ return { data: null, error };
198
200
  }
199
201
  }
202
+ function isSuccess(result) {
203
+ return result.error === null;
204
+ }
205
+ function isError(result) {
206
+ return result.error !== null;
207
+ }
200
208
  export {
201
- tryCatchAsync,
209
+ tryCatchSync,
202
210
  tryCatch,
203
211
  streamToLines,
204
212
  sleep,
205
213
  randomString,
206
214
  jsonParser,
215
+ isSuccess,
216
+ isPromise,
207
217
  isPrimitive,
208
218
  isObject,
209
219
  isNullOrUndefined,
210
220
  isNullOrEmptyOrUndefined,
221
+ isError,
211
222
  chunksToLines,
212
223
  Cache,
213
224
  CACHE_TTL_NEVER_EXPIRE
214
225
  };
215
226
 
216
- //# debugId=C515A1B54E5277CB64756E2164756E21
217
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NhY2hlL2NhY2hlU2VydmljZS50cyIsICIuLi8uLi9zcmMvdXRpbHMvaXNDYWxsYWJsZS50cyIsICIuLi8uLi9zcmMvY2FjaGUvY29uc3RhbnRzLnRzIiwgIi4uLy4uL3NyYy91dGlscy9jaHVua3NUb0xpbmVzLnRzIiwgIi4uLy4uL3NyYy91dGlscy9pc051bGxPclVuZGVmaW5lZC50cyIsICIuLi8uLi9zcmMvdXRpbHMvaXNPYmplY3QudHMiLCAiLi4vLi4vc3JjL3V0aWxzL2lzUHJpbWl0aXZlLnRzIiwgIi4uLy4uL3NyYy91dGlscy9qc29uUGFyc2VyLnRzIiwgIi4uLy4uL3NyYy91dGlscy9yYW5kb21TdHJpbmcudHMiLCAiLi4vLi4vc3JjL3V0aWxzL3NsZWVwLnRzIiwgIi4uLy4uL3NyYy9uZXZlcnRocm93L3RyeUNhdGNoLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWwogICAgImltcG9ydCB7IGlzUHJvbWlzZSB9IGZyb20gXCJub2RlOnV0aWwvdHlwZXNcIjtcbmltcG9ydCB7IGlzQ2FsbGFibGUgfSBmcm9tIFwiLi4vdXRpbHMvaXNDYWxsYWJsZS50c1wiO1xuaW1wb3J0IHR5cGUgeyBDYWNoZU1ldGFkYXRhT3B0aW9ucywgQ2FjaGVPcHRpb25zLCBDYWNoZVdpdGhNZXRhZGF0YSwgVmFsdWVMb2FkZXIgfSBmcm9tIFwiLi9pbnRlcm5hbC90eXBlcy50c1wiO1xuaW1wb3J0IHR5cGUgeyBDYWNoZU1ldGFkYXRhLCBJQ2FjaGVBZGFwdGVyIH0gZnJvbSBcIi4vdHlwZXMudHNcIjtcblxuY29uc3QgZGVmYXVsdENhY2hlT3B0aW9uczogQ2FjaGVPcHRpb25zID0ge1xuICBleHBpcmF0aW9uVGhyZXNob2xkTXM6IDAsXG4gIHR0bE1zOiA2MCAqIDYwICogMTAwMCxcbn07XG5cbmV4cG9ydCBjbGFzcyBDYWNoZTxUQWRhcHRlciBleHRlbmRzIElDYWNoZUFkYXB0ZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ+IHtcbiAgcHJpdmF0ZSBpbk1lbW9yeUNhY2hlOiBNYXA8c3RyaW5nLCBDYWNoZVdpdGhNZXRhZGF0YT4gPSBuZXcgTWFwKCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogQ2FjaGVPcHRpb25zO1xuICBwcml2YXRlIHJlYWRvbmx5IGFkYXB0ZXI/OiBUQWRhcHRlcjtcblxuICBjb25zdHJ1Y3RvcihkZWZhdWx0T3B0aW9ucz86IFBhcnRpYWw8Q2FjaGVPcHRpb25zPik7XG4gIGNvbnN0cnVjdG9yKGFkYXB0ZXI/OiBUQWRhcHRlciwgZGVmYXVsdE9wdGlvbnM/OiBQYXJ0aWFsPENhY2hlT3B0aW9ucz4pO1xuICBjb25zdHJ1Y3RvcihhZGFwdGVyPzogVEFkYXB0ZXIgfCBQYXJ0aWFsPENhY2hlT3B0aW9ucz4sIGRlZmF1bHRPcHRpb25zPzogUGFydGlhbDxDYWNoZU9wdGlvbnM+KSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IGFkYXB0ZXIgJiYgIShcImdldFZhbHVlXCIgaW4gYWRhcHRlcikgPyAoYWRhcHRlciBhcyBQYXJ0aWFsPENhY2hlT3B0aW9ucz4pIDogZGVmYXVsdE9wdGlvbnM7XG4gICAgaWYgKGFkYXB0ZXIgJiYgXCJnZXRWYWx1ZVwiIGluIGFkYXB0ZXIgJiYgXCJzZXRWYWx1ZVwiIGluIGFkYXB0ZXIpIHtcbiAgICAgIHRoaXMuYWRhcHRlciA9IGFkYXB0ZXIgYXMgVEFkYXB0ZXI7XG4gICAgfVxuXG4gICAgdGhpcy5vcHRpb25zID0ge1xuICAgICAgLi4uZGVmYXVsdENhY2hlT3B0aW9ucyxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0RnJvbUFkYXB0ZXI8VD4oY2FjaGVLZXk6IHN0cmluZyk6IFByb21pc2U8VCB8IHVuZGVmaW5lZD4ge1xuICAgIGlmICghdGhpcy5hZGFwdGVyKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuZ2V0VmFsdWUoY2FjaGVLZXkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzYXZlVG9BZGFwdGVyPFQ+KGNhY2hlS2V5OiBzdHJpbmcsIHZhbHVlOiBUKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLmFkYXB0ZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hZGFwdGVyLnNldFZhbHVlPFQ+KGNhY2hlS2V5LCB2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0PFQ+KFxuICAgIGNhY2hlS2V5OiBzdHJpbmcsXG4gICAgdmFsdWVMb2FkZXI/OiBWYWx1ZUxvYWRlcjxUPixcbiAgICBvcHRpb25zOiBQYXJ0aWFsPENhY2hlTWV0YWRhdGFPcHRpb25zPiA9IHt9LFxuICApOiBQcm9taXNlPFQgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBtZXJnZWRPcHRpb25zID0gdGhpcy5tZXJnZU9wdGlvbnMob3B0aW9ucyk7XG5cbiAgICAvLyBUcnkgaW4tbWVtb3J5IGNhY2hlIGZpcnN0XG4gICAgY29uc3QgY2FjaGVkVmFsdWUgPSB0aGlzLnRyeUdldEZyb21NZW1vcnk8VD4oY2FjaGVLZXkpO1xuICAgIGlmIChjYWNoZWRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gY2FjaGVkVmFsdWU7XG4gICAgfVxuXG4gICAgLy8gTG9hZCBmcmVzaCB2YWx1ZSBmcm9tIGxvYWRlciBmdW5jdGlvbiBmaXJzdFxuICAgIGNvbnN0IGZyZXNoVmFsdWUgPSBhd2FpdCB0aGlzLnRyeUdldEZyb21WYWx1ZUxvYWRlcih2YWx1ZUxvYWRlcik7XG4gICAgaWYgKGZyZXNoVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgYXdhaXQgdGhpcy5jYWNoZVZhbHVlKGNhY2hlS2V5LCBmcmVzaFZhbHVlLCBtZXJnZWRPcHRpb25zKTtcblxuICAgICAgcmV0dXJuIGZyZXNoVmFsdWU7XG4gICAgfVxuXG4gICAgLy8gVHJ5IGFkYXB0ZXIgY2FjaGUgc2Vjb25kXG4gICAgY29uc3QgYWRhcHRlclZhbHVlID0gYXdhaXQgdGhpcy50cnlHZXRGcm9tQWRhcHRlcjxUPihjYWNoZUtleSk7XG4gICAgaWYgKGFkYXB0ZXJWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBhd2FpdCB0aGlzLmNhY2hlVmFsdWUoY2FjaGVLZXksIGFkYXB0ZXJWYWx1ZSwgbWVyZ2VkT3B0aW9ucyk7XG5cbiAgICAgIHJldHVybiBhZGFwdGVyVmFsdWU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtZXJnZU9wdGlvbnMob3B0aW9uczogUGFydGlhbDxDYWNoZU1ldGFkYXRhT3B0aW9ucz4pOiBDYWNoZU1ldGFkYXRhT3B0aW9ucyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR0bE1zOiB0aGlzLm9wdGlvbnMudHRsTXMsXG4gICAgICBleHBpcmF0aW9uVGhyZXNob2xkTXM6IHRoaXMub3B0aW9ucy5leHBpcmF0aW9uVGhyZXNob2xkTXMsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHRyeUdldEZyb21NZW1vcnk8VD4oY2FjaGVLZXk6IHN0cmluZyk6IFQgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGNhY2hlZCA9IHRoaXMuaW5NZW1vcnlDYWNoZS5nZXQoY2FjaGVLZXkpO1xuXG4gICAgaWYgKGNhY2hlZCAmJiAhdGhpcy5pc0V4cGlyZWQoY2FjaGVkLm1ldGFkYXRhKSkge1xuICAgICAgcmV0dXJuIGNhY2hlZC5kYXRhIGFzIFQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdHJ5R2V0RnJvbUFkYXB0ZXI8VD4oY2FjaGVLZXk6IHN0cmluZyk6IFByb21pc2U8VCB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IGNhY2hlZCA9IGF3YWl0IHRoaXMuZ2V0RnJvbUFkYXB0ZXI8Q2FjaGVXaXRoTWV0YWRhdGE8VD4+KGNhY2hlS2V5KTtcblxuICAgIGlmIChjYWNoZWQgJiYgIXRoaXMuaXNFeHBpcmVkKGNhY2hlZC5tZXRhZGF0YSkpIHtcbiAgICAgIHRoaXMuaW5NZW1vcnlDYWNoZS5zZXQoY2FjaGVLZXksIGNhY2hlZCk7XG4gICAgICByZXR1cm4gY2FjaGVkLmRhdGE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdHJ5R2V0RnJvbVZhbHVlTG9hZGVyPFQ+KHZhbHVlTG9hZGVyPzogVmFsdWVMb2FkZXI8VD4pOiBQcm9taXNlPFQgfCB1bmRlZmluZWQ+IHtcbiAgICBpZiAodmFsdWVMb2FkZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoaXNDYWxsYWJsZSh2YWx1ZUxvYWRlcikpIHtcbiAgICAgIHJldHVybiBhd2FpdCB2YWx1ZUxvYWRlcigpO1xuICAgIH1cblxuICAgIGlmIChpc1Byb21pc2UodmFsdWVMb2FkZXIpKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdmFsdWVMb2FkZXI7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlTG9hZGVyO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjYWNoZVZhbHVlPFQ+KGNhY2hlS2V5OiBzdHJpbmcsIHZhbHVlOiBULCBvcHRpb25zOiBDYWNoZU1ldGFkYXRhT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNhY2hlRGF0YSA9IHRoaXMuY3JlYXRlQ2FjaGVFbnRyeSh2YWx1ZSwgb3B0aW9ucyk7XG5cbiAgICBhd2FpdCB0aGlzLnNhdmVUb0FkYXB0ZXIoY2FjaGVLZXksIGNhY2hlRGF0YSk7XG4gICAgdGhpcy5pbk1lbW9yeUNhY2hlLnNldChjYWNoZUtleSwgY2FjaGVEYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQ2FjaGVFbnRyeTxUPih2YWx1ZTogVCwgb3B0aW9uczogQ2FjaGVNZXRhZGF0YU9wdGlvbnMpOiBDYWNoZVdpdGhNZXRhZGF0YTxUPiB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgZXhwaXJlc0F0OiBudW1iZXI7XG4gICAgaWYgKG9wdGlvbnMudHRsTXMgPCAwKSB7XG4gICAgICBleHBpcmVzQXQgPSAtMTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXhwaXJlc0F0ID0gbm93ICsgb3B0aW9ucy50dGxNcyAtIG9wdGlvbnMuZXhwaXJhdGlvblRocmVzaG9sZE1zO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkYXRhOiB2YWx1ZSxcbiAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgIGNyZWF0ZWRBdDogbm93LFxuICAgICAgICB0dGxNczogb3B0aW9ucy50dGxNcyxcbiAgICAgICAgZXhwaXJhdGlvblRocmVzaG9sZE1zOiBvcHRpb25zLmV4cGlyYXRpb25UaHJlc2hvbGRNcyxcbiAgICAgICAgZXhwaXJlc0F0LFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBpc0V4cGlyZWQobWV0YWRhdGE/OiBDYWNoZU1ldGFkYXRhKTogYm9vbGVhbiB7XG4gICAgaWYgKCFtZXRhZGF0YSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKG1ldGFkYXRhLmV4cGlyZXNBdCA8IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBleHBpcmF0aW9uVGltZSA9XG4gICAgICBtZXRhZGF0YS5leHBpcmVzQXQgPz8gKG1ldGFkYXRhLmNyZWF0ZWRBdCAmJiBtZXRhZGF0YS50dGxNcyA/IG1ldGFkYXRhLmNyZWF0ZWRBdCArIG1ldGFkYXRhLnR0bE1zIDogdW5kZWZpbmVkKTtcblxuICAgIGlmIChleHBpcmF0aW9uVGltZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gRGF0ZS5ub3coKSA+PSBleHBpcmF0aW9uVGltZTtcbiAgfVxufVxuIiwKICAgICJleHBvcnQgZnVuY3Rpb24gaXNDYWxsYWJsZSh2YWx1ZTogYW55KTogdmFsdWUgaXMgQ2FsbGFibGVGdW5jdGlvbiB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIjtcbn1cbiIsCiAgICAiZXhwb3J0IGNvbnN0IENBQ0hFX1RUTF9ORVZFUl9FWFBJUkUgPSAtMTtcbiIsCiAgICAiLyoqXG4gKiBDb252ZXJ0cyBhbiBhc3luYyBpdGVyYWJsZSBvZiBzdHJpbmcgb3IgVWludDhBcnJheSBjaHVua3MgaW50byBhbiBhc3luYyBpdGVyYWJsZSBvZiBsaW5lcy5cbiAqIEhhbmRsZXMgY2FzZXMgd2hlcmUgbGluZXMgbWF5IGJlIHNwbGl0IGFjcm9zcyBtdWx0aXBsZSBjaHVua3MuXG4gKiBVc2FnZTpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBwaXBlbGluZSB9IGZyb20gXCJub2RlOnN0cmVhbS9wcm9taXNlc1wiO1xuICogaW1wb3J0IHsgY3JlYXRlUmVhZFN0cmVhbSB9IGZyb20gXCJub2RlOmZzXCI7XG4gKiBpbXBvcnQgeyBzdHJlYW1Ub0xpbmVzIH0gZnJvbSBcIkBsdWthc2tqL3RzLXV0aWxzXCI7XG4gKlxuICogYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc0xpbmUoY2h1bms6IEFzeW5jSXRlcmFibGU8c3RyaW5nPikge1xuICogICBmb3IgYXdhaXQgKGNvbnN0IGxpbmUgb2YgY2h1bmspIHtcbiAqICAgICBjb25zb2xlLmxvZyhsaW5lKTtcbiAqICAgICB5aWVsZCBsaW5lO1xuICogICB9XG4gKiB9XG4gKiBjb25zdCByZWFkU3RyZWFtID0gY3JlYXRlUmVhZFN0cmVhbShcInBhdGgvdG8vZmlsZS50eHRcIiwgeyBlbmNvZGluZzogXCJ1dGYtOFwiIH0pO1xuICogYXdhaXQgcGlwZWxpbmUocmVhZFN0cmVhbSwgc3RyZWFtVG9MaW5lcywgcHJvY2Vzcy5zdGRvdXQpLmNhdGNoKChlcnIpID0+IHtcbiAqICAgY29uc29sZS5lcnJvcihlcnIpO1xuICogICBwcm9jZXNzLmV4aXQoMSk7XG4gKiB9KTtcbiAqIGBgYFxuICogQHBhcmFtIGNodW5rc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24qIHN0cmVhbVRvTGluZXMoY2h1bmtzOiBBc3luY0l0ZXJhYmxlPHN0cmluZyB8IFVpbnQ4QXJyYXk+KSB7XG4gIGxldCBwcmV2aW91cyA9IFwiXCI7XG5cbiAgZm9yIGF3YWl0IChjb25zdCBjaHVuayBvZiBjaHVua3MpIHtcbiAgICBwcmV2aW91cyArPSBjaHVuaztcbiAgICBsZXQgZW9sSW5kZXg6IG51bWJlcjtcblxuICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9Bc3NpZ25JbkV4cHJlc3Npb25zOiBcImV4cGxhbmF0aW9uXCJcbiAgICB3aGlsZSAoKGVvbEluZGV4ID0gcHJldmlvdXMuaW5kZXhPZihcIlxcblwiKSkgPj0gMCkge1xuICAgICAgLy8gdGhpcyBsaW5lIGluY2x1ZGVzIHRoZSBFT0xcbiAgICAgIGNvbnN0IGxpbmUgPSBwcmV2aW91cy5zbGljZSgwLCBlb2xJbmRleCArIDEpO1xuICAgICAgeWllbGQgbGluZT8udHJpbSgpID8/IFwiXCI7XG4gICAgICBwcmV2aW91cyA9IHByZXZpb3VzLnNsaWNlKGVvbEluZGV4ICsgMSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHByZXZpb3VzLmxlbmd0aCA+IDApIHtcbiAgICB5aWVsZCBwcmV2aW91cztcbiAgfVxufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIHVzZSBzdHJlYW1Ub0xpbmVzXG4gKi9cbmV4cG9ydCBjb25zdCBjaHVua3NUb0xpbmVzID0gc3RyZWFtVG9MaW5lcztcbiIsCiAgICAiZXhwb3J0IGNvbnN0IGlzTnVsbE9yVW5kZWZpbmVkID0gKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBudWxsIHwgdW5kZWZpbmVkID0+IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc051bGxPckVtcHR5T3JVbmRlZmluZWQodmFsdWU/OiBhbnkgfCBudWxsKTogdmFsdWUgaXMgbnVsbCB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSBcIlwiIHx8IHZhbHVlLnRvU3RyaW5nKCkudHJpbSgpID09PSBcIlwiO1xufVxuIiwKICAgICIvKipcbiAqIFR5cGUgZ3VhcmQgdGhhdCBjaGVja3MgaWYgdGhlIGlucHV0IGlzIGEgcGxhaW4gSmF2YVNjcmlwdCBvYmplY3QuXG4gKiBAcGFyYW0ge2FueX0gaW5wdXQgLSBUaGUgdmFsdWUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSBpbnB1dCBpcyBhIHBsYWluIG9iamVjdCwgZmFsc2Ugb3RoZXJ3aXNlXG4gKiBAdHlwZVBhcmFtIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBUeXBlIGd1YXJkIG5hcnJvd3MgdGhlIGlucHV0IHR5cGUgdG8gYSBzdHJpbmcta2V5ZWQgb2JqZWN0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc09iamVjdChpbnB1dDogYW55KTogaW5wdXQgaXMgUmVjb3JkPHN0cmluZywgYW55PiB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KGlucHV0KSA9PT0gXCJbb2JqZWN0IE9iamVjdF1cIjtcbn1cbiIsCiAgICAiZXhwb3J0IGZ1bmN0aW9uIGlzUHJpbWl0aXZlKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIHJldHVybiAodHlwZW9mIHZhbHVlICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiB2YWx1ZSAhPT0gXCJmdW5jdGlvblwiKSB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSBpbnN0YW5jZW9mIERhdGU7XG59XG4iLAogICAgImltcG9ydCBzanMgZnJvbSBcInNlY3VyZS1qc29uLXBhcnNlXCI7XG5cbi8qKlxuICogU2FmZWx5IHBhcnNlcyBKU09OIGlucHV0IHVzaW5nIHNlY3VyZS1qc29uLXBhcnNlIHdpdGggcHJvdG90eXBlIHBvbGx1dGlvbiBwcm90ZWN0aW9uLlxuICogQHBhcmFtIHthbnl9IGlucHV0IC0gVGhlIGlucHV0IHRvIGJlIHBhcnNlZCBhcyBKU09OXG4gKiBAcmV0dXJucyB7eyB2YWx1ZT86IGFueSwgZXJyPzogRXJyb3IgfX0gQW4gb2JqZWN0IGNvbnRhaW5pbmcgZWl0aGVyIHRoZSBwYXJzZWQgdmFsdWUgb3IgYW4gZXJyb3IgaWYgcGFyc2luZyBmYWlsZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGpzb25QYXJzZXIoaW5wdXQ6IGFueSkge1xuICB0cnkge1xuICAgIHJldHVybiB7IHZhbHVlOiBzanMucGFyc2UoaW5wdXQsIHsgcHJvdG9BY3Rpb246IFwicmVtb3ZlXCIgfSkgfTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIHsgZXJyIH07XG4gIH1cbn1cbiIsCiAgICAiZXhwb3J0IGZ1bmN0aW9uIHJhbmRvbVN0cmluZyhsZW5ndGg6IG51bWJlciA9IDYpOiBzdHJpbmcge1xuICBsZXQgcmVzdWx0ID0gXCJcIjtcbiAgY29uc3QgY2hhcmFjdGVycyA9IFwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODlcIjtcbiAgY29uc3QgY2hhcmFjdGVyc0xlbmd0aCA9IGNoYXJhY3RlcnMubGVuZ3RoO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgcmVzdWx0ICs9IGNoYXJhY3RlcnMuY2hhckF0KE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGNoYXJhY3RlcnNMZW5ndGgpKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuIiwKICAgICJleHBvcnQgY29uc3Qgc2xlZXAgPSAobXM6IG51bWJlcikgPT4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpKTtcbiIsCiAgICAiLy8gaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vdDNkb3RnZy9hNDg2YzRhZTY2ZDMyYmYxN2MwOWM3MzYwOWRhY2M1YlxuLy8gVHlwZXMgZm9yIHRoZSByZXN1bHQgb2JqZWN0IHdpdGggZGlzY3JpbWluYXRlZCB1bmlvblxuLy8gdHlwZSBTdWNjZXNzPFQ+ID0ge1xuLy8gICBkYXRhOiBUO1xuLy8gICBlcnJvcjogbnVsbDtcbi8vIH07XG5cbi8vIHR5cGUgRmFpbHVyZTxFPiA9IHtcbi8vICAgZGF0YTogbnVsbDtcbi8vICAgZXJyb3I6IEU7XG4vLyB9O1xuXG4vLyBleHBvcnQgdHlwZSBSZXN1bHQ8VCwgRSA9IEVycm9yPiA9IFN1Y2Nlc3M8VD4gfCBGYWlsdXJlPEU+O1xuXG5leHBvcnQgdHlwZSBSZXN1bHQ8VCwgRT4gPSBbdW5kZWZpbmVkLCBFXSB8IFtULCB1bmRlZmluZWRdO1xuZXhwb3J0IHR5cGUgUHJvbWlzZVJlc3VsdDxULCBFPiA9IFByb21pc2U8UmVzdWx0PFQsIEU+PjtcblxuLyoqXG4gKiBXcmFwcyBhIHN5bmNocm9ub3VzIGZ1bmN0aW9uIGluIGEgdHJ5LWNhdGNoIGJsb2NrIGFuZCByZXR1cm5zIGEgUmVzdWx0IHR1cGxlIGNvbnRhaW5pbmcgZWl0aGVyIHRoZSByZXR1cm5lZCB2YWx1ZSBvciB0aGUgY2F1Z2h0IGVycm9yXG4gKlxuICogQHRlbXBsYXRlIFQgLSBUaGUgdHlwZSBvZiB0aGUgc3VjY2Vzc2Z1bCByZXN1bHQgdmFsdWVcbiAqIEB0ZW1wbGF0ZSBFIC0gVGhlIHR5cGUgb2YgdGhlIGVycm9yIHZhbHVlLCBtdXN0IGV4dGVuZCBFcnJvclxuICogQHBhcmFtIHsoKSA9PiBUfSBmbiAtIFRoZSBmdW5jdGlvbiB0byBiZSBleGVjdXRlZFxuICogQHJldHVybnMge1Jlc3VsdDxULCBFPn0gQSB0dXBsZSBjb250YWluaW5nIGVpdGhlciBbZGF0YSwgdW5kZWZpbmVkXSBvciBbdW5kZWZpbmVkLCBlcnJvcl1cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgW2RhdGEsIGVycm9yXSA9IHRyeUNhdGNoKCgpID0+IHNvbWVSaXNreU9wZXJhdGlvbigpKTtcbiAqIGlmIChlcnJvcikge1xuICogICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAqIH0gZWxzZSB7XG4gKiAgIGNvbnNvbGUubG9nKGRhdGEpO1xuICogfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJ5Q2F0Y2g8VCwgRSBleHRlbmRzIEVycm9yPihmbjogKCkgPT4gVCk6IFJlc3VsdDxULCBFPiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGZuKCk7XG4gICAgcmV0dXJuIFtkYXRhIGFzIFQsIHVuZGVmaW5lZF07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIFt1bmRlZmluZWQsIGVycm9yIGFzIEVdO1xuICB9XG59XG5cbi8qKlxuICogV3JhcHMgYSBQcm9taXNlIGluIGEgdHJ5LWNhdGNoIGJsb2NrIGFuZCByZXR1cm5zIGEgUmVzdWx0IG9iamVjdCBjb250YWluaW5nIGVpdGhlciB0aGUgcmVzb2x2ZWQgZGF0YSBvciB0aGUgY2F1Z2h0IGVycm9yXG4gKlxuICogQHRlbXBsYXRlIFQgLSBUaGUgdHlwZSBvZiB0aGUgc3VjY2Vzc2Z1bCByZXN1bHQgdmFsdWVcbiAqIEB0ZW1wbGF0ZSBFIC0gVGhlIHR5cGUgb2YgdGhlIGVycm9yIHZhbHVlLCBkZWZhdWx0cyB0byBFcnJvclxuICogQHBhcmFtIHtQcm9taXNlPFQ+fSBwcm9taXNlIC0gVGhlIHByb21pc2UgdG8gYmUgZXhlY3V0ZWRcbiAqIEByZXR1cm5zIHtQcm9taXNlPFJlc3VsdDxULCBFPj59IEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGEgUmVzdWx0IG9iamVjdCBjb250YWluaW5nIGVpdGhlciB0aGUgZGF0YSBvciBlcnJvclxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCB7ZGF0YSwgZXJyb3J9ID0gYXdhaXQgdHJ5Q2F0Y2hBc3luYyhzb21lUHJvbWlzZSk7XG4gKiBpZiAoZXJyb3IpIHtcbiAqICAgY29uc29sZS5lcnJvcihyZXN1bHQuZXJyb3IpO1xuICogfSBlbHNlIHtcbiAqICAgY29uc29sZS5sb2coZGF0YSk7XG4gKiB9XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0cnlDYXRjaEFzeW5jPFQsIEUgZXh0ZW5kcyBFcnJvcj4ocHJvbWlzZTogUHJvbWlzZTxUPik6IFByb21pc2VSZXN1bHQ8VCwgRT4ge1xuICB0cnkge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBwcm9taXNlO1xuICAgIHJldHVybiBbZGF0YSBhcyBULCB1bmRlZmluZWRdO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBbdW5kZWZpbmVkLCBlcnJvciBhcyBFXTtcbiAgfVxufVxuIgogIF0sCiAgIm1hcHBpbmdzIjogIjtBQUFBOzs7QUNBTyxTQUFTLFVBQVUsQ0FBQyxPQUF1QztBQUFBLEVBQ2hFLE9BQU8sT0FBTyxVQUFVO0FBQUE7OztBREkxQixJQUFNLHNCQUFvQztBQUFBLEVBQ3hDLHVCQUF1QjtBQUFBLEVBQ3ZCLE9BQU8sS0FBSyxLQUFLO0FBQ25CO0FBQUE7QUFFTyxNQUFNLE1BQThEO0FBQUEsRUFDakUsZ0JBQWdELElBQUk7QUFBQSxFQUMzQztBQUFBLEVBQ0E7QUFBQSxFQUlqQixXQUFXLENBQUMsU0FBNEMsZ0JBQXdDO0FBQUEsSUFDOUYsTUFBTSxVQUFVLFdBQVcsRUFBRSxjQUFjLFdBQVksVUFBb0M7QUFBQSxJQUMzRixJQUFJLFdBQVcsY0FBYyxXQUFXLGNBQWMsU0FBUztBQUFBLE1BQzdELEtBQUssVUFBVTtBQUFBLElBQ2pCO0FBQUEsSUFFQSxLQUFLLFVBQVU7QUFBQSxTQUNWO0FBQUEsU0FDQTtBQUFBLElBQ0w7QUFBQTtBQUFBLE9BR1ksZUFBaUIsQ0FBQyxVQUEwQztBQUFBLElBQ3hFLElBQUksQ0FBQyxLQUFLLFNBQVM7QUFBQSxNQUNqQjtBQUFBLElBQ0Y7QUFBQSxJQUVBLE9BQU8sS0FBSyxRQUFRLFNBQVMsUUFBUTtBQUFBO0FBQUEsT0FHekIsY0FBZ0IsQ0FBQyxVQUFrQixPQUF5QjtBQUFBLElBQ3hFLElBQUksQ0FBQyxLQUFLLFNBQVM7QUFBQSxNQUNqQjtBQUFBLElBQ0Y7QUFBQSxJQUVBLE9BQU8sS0FBSyxRQUFRLFNBQVksVUFBVSxLQUFLO0FBQUE7QUFBQSxPQUdwQyxJQUFNLENBQ2pCLFVBQ0EsYUFD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
227
+ //# debugId=0B318D31A8C9EC1664756E2164756E21
228
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL2lzQ2FsbGFibGUudHMiLCAiLi4vLi4vc3JjL3V0aWxzL2lzUHJvbWlzZS50cyIsICIuLi8uLi9zcmMvY2FjaGUvY2FjaGVTZXJ2aWNlLnRzIiwgIi4uLy4uL3NyYy9jYWNoZS9jb25zdGFudHMudHMiLCAiLi4vLi4vc3JjL3V0aWxzL2NodW5rc1RvTGluZXMudHMiLCAiLi4vLi4vc3JjL3V0aWxzL2lzTnVsbE9yVW5kZWZpbmVkLnRzIiwgIi4uLy4uL3NyYy91dGlscy9pc09iamVjdC50cyIsICIuLi8uLi9zcmMvdXRpbHMvaXNQcmltaXRpdmUudHMiLCAiLi4vLi4vc3JjL3V0aWxzL2pzb25QYXJzZXIudHMiLCAiLi4vLi4vc3JjL3V0aWxzL3JhbmRvbVN0cmluZy50cyIsICIuLi8uLi9zcmMvdXRpbHMvc2xlZXAudHMiLCAiLi4vLi4vc3JjL25ldmVydGhyb3cvdHJ5Q2F0Y2gudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbCiAgICAiZXhwb3J0IGZ1bmN0aW9uIGlzQ2FsbGFibGUodmFsdWU6IGFueSk6IHZhbHVlIGlzIENhbGxhYmxlRnVuY3Rpb24ge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCI7XG59XG4iLAogICAgIi8qKlxuICogQHBhcmFtIHZhbHVlIHVua25vd25cbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1Byb21pc2U8VCA9IGFueT4odmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBQcm9taXNlPFQ+IHtcbiAgcmV0dXJuIChcbiAgICAhIXZhbHVlICYmXG4gICAgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIikgJiZcbiAgICBcInRoZW5cIiBpbiB2YWx1ZSAmJlxuICAgIHR5cGVvZiB2YWx1ZS50aGVuID09PSBcImZ1bmN0aW9uXCJcbiAgKTtcbn1cbiIsCiAgICAiaW1wb3J0IHsgaXNDYWxsYWJsZSB9IGZyb20gXCIuLi91dGlscy9pc0NhbGxhYmxlLnRzXCI7XG5pbXBvcnQgeyBpc1Byb21pc2UgfSBmcm9tIFwiLi4vdXRpbHMvaXNQcm9taXNlLnRzXCI7XG5pbXBvcnQgdHlwZSB7IENhY2hlTWV0YWRhdGFPcHRpb25zLCBDYWNoZU9wdGlvbnMsIENhY2hlV2l0aE1ldGFkYXRhLCBWYWx1ZUxvYWRlciB9IGZyb20gXCIuL2ludGVybmFsL3R5cGVzLnRzXCI7XG5pbXBvcnQgdHlwZSB7IENhY2hlTWV0YWRhdGEsIElDYWNoZUFkYXB0ZXIgfSBmcm9tIFwiLi90eXBlcy50c1wiO1xuXG5jb25zdCBkZWZhdWx0Q2FjaGVPcHRpb25zOiBDYWNoZU9wdGlvbnMgPSB7XG4gIGV4cGlyYXRpb25UaHJlc2hvbGRNczogMCxcbiAgdHRsTXM6IDYwICogNjAgKiAxMDAwLFxufTtcblxuZXhwb3J0IGNsYXNzIENhY2hlPFRBZGFwdGVyIGV4dGVuZHMgSUNhY2hlQWRhcHRlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZD4ge1xuICBwcml2YXRlIGluTWVtb3J5Q2FjaGU6IE1hcDxzdHJpbmcsIENhY2hlV2l0aE1ldGFkYXRhPiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBDYWNoZU9wdGlvbnM7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWRhcHRlcj86IFRBZGFwdGVyO1xuXG4gIGNvbnN0cnVjdG9yKGRlZmF1bHRPcHRpb25zPzogUGFydGlhbDxDYWNoZU9wdGlvbnM+KTtcbiAgY29uc3RydWN0b3IoYWRhcHRlcj86IFRBZGFwdGVyLCBkZWZhdWx0T3B0aW9ucz86IFBhcnRpYWw8Q2FjaGVPcHRpb25zPik7XG4gIGNvbnN0cnVjdG9yKGFkYXB0ZXI/OiBUQWRhcHRlciB8IFBhcnRpYWw8Q2FjaGVPcHRpb25zPiwgZGVmYXVsdE9wdGlvbnM/OiBQYXJ0aWFsPENhY2hlT3B0aW9ucz4pIHtcbiAgICBjb25zdCBvcHRpb25zID0gYWRhcHRlciAmJiAhKFwiZ2V0VmFsdWVcIiBpbiBhZGFwdGVyKSA/IChhZGFwdGVyIGFzIFBhcnRpYWw8Q2FjaGVPcHRpb25zPikgOiBkZWZhdWx0T3B0aW9ucztcbiAgICBpZiAoYWRhcHRlciAmJiBcImdldFZhbHVlXCIgaW4gYWRhcHRlciAmJiBcInNldFZhbHVlXCIgaW4gYWRhcHRlcikge1xuICAgICAgdGhpcy5hZGFwdGVyID0gYWRhcHRlciBhcyBUQWRhcHRlcjtcbiAgICB9XG5cbiAgICB0aGlzLm9wdGlvbnMgPSB7XG4gICAgICAuLi5kZWZhdWx0Q2FjaGVPcHRpb25zLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRGcm9tQWRhcHRlcjxUPihjYWNoZUtleTogc3RyaW5nKTogUHJvbWlzZTxUIHwgdW5kZWZpbmVkPiB7XG4gICAgaWYgKCF0aGlzLmFkYXB0ZXIpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYWRhcHRlci5nZXRWYWx1ZShjYWNoZUtleSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNhdmVUb0FkYXB0ZXI8VD4oY2FjaGVLZXk6IHN0cmluZywgdmFsdWU6IFQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuYWRhcHRlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuc2V0VmFsdWU8VD4oY2FjaGVLZXksIHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXQ8VD4oXG4gICAgY2FjaGVLZXk6IHN0cmluZyxcbiAgICB2YWx1ZUxvYWRlcj86IFZhbHVlTG9hZGVyPFQ+LFxuICAgIG9wdGlvbnM6IFBhcnRpYWw8Q2FjaGVNZXRhZGF0YU9wdGlvbnM+ID0ge30sXG4gICk6IFByb21pc2U8VCB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSB0aGlzLm1lcmdlT3B0aW9ucyhvcHRpb25zKTtcblxuICAgIC8vIFRyeSBpbi1tZW1vcnkgY2FjaGUgZmlyc3RcbiAgICBjb25zdCBjYWNoZWRWYWx1ZSA9IHRoaXMudHJ5R2V0RnJvbU1lbW9yeTxUPihjYWNoZUtleSk7XG4gICAgaWYgKGNhY2hlZFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBjYWNoZWRWYWx1ZTtcbiAgICB9XG5cbiAgICAvLyBMb2FkIGZyZXNoIHZhbHVlIGZyb20gbG9hZGVyIGZ1bmN0aW9uIGZpcnN0XG4gICAgY29uc3QgZnJlc2hWYWx1ZSA9IGF3YWl0IHRoaXMudHJ5R2V0RnJvbVZhbHVlTG9hZGVyKHZhbHVlTG9hZGVyKTtcbiAgICBpZiAoZnJlc2hWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBhd2FpdCB0aGlzLmNhY2hlVmFsdWUoY2FjaGVLZXksIGZyZXNoVmFsdWUsIG1lcmdlZE9wdGlvbnMpO1xuXG4gICAgICByZXR1cm4gZnJlc2hWYWx1ZTtcbiAgICB9XG5cbiAgICAvLyBUcnkgYWRhcHRlciBjYWNoZSBzZWNvbmRcbiAgICBjb25zdCBhZGFwdGVyVmFsdWUgPSBhd2FpdCB0aGlzLnRyeUdldEZyb21BZGFwdGVyPFQ+KGNhY2hlS2V5KTtcbiAgICBpZiAoYWRhcHRlclZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGF3YWl0IHRoaXMuY2FjaGVWYWx1ZShjYWNoZUtleSwgYWRhcHRlclZhbHVlLCBtZXJnZWRPcHRpb25zKTtcblxuICAgICAgcmV0dXJuIGFkYXB0ZXJWYWx1ZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1lcmdlT3B0aW9ucyhvcHRpb25zOiBQYXJ0aWFsPENhY2hlTWV0YWRhdGFPcHRpb25zPik6IENhY2hlTWV0YWRhdGFPcHRpb25zIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHRsTXM6IHRoaXMub3B0aW9ucy50dGxNcyxcbiAgICAgIGV4cGlyYXRpb25UaHJlc2hvbGRNczogdGhpcy5vcHRpb25zLmV4cGlyYXRpb25UaHJlc2hvbGRNcyxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgdHJ5R2V0RnJvbU1lbW9yeTxUPihjYWNoZUtleTogc3RyaW5nKTogVCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgY2FjaGVkID0gdGhpcy5pbk1lbW9yeUNhY2hlLmdldChjYWNoZUtleSk7XG5cbiAgICBpZiAoY2FjaGVkICYmICF0aGlzLmlzRXhwaXJlZChjYWNoZWQubWV0YWRhdGEpKSB7XG4gICAgICByZXR1cm4gY2FjaGVkLmRhdGEgYXMgVDtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB0cnlHZXRGcm9tQWRhcHRlcjxUPihjYWNoZUtleTogc3RyaW5nKTogUHJvbWlzZTxUIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgY2FjaGVkID0gYXdhaXQgdGhpcy5nZXRGcm9tQWRhcHRlcjxDYWNoZVdpdGhNZXRhZGF0YTxUPj4oY2FjaGVLZXkpO1xuXG4gICAgaWYgKGNhY2hlZCAmJiAhdGhpcy5pc0V4cGlyZWQoY2FjaGVkLm1ldGFkYXRhKSkge1xuICAgICAgdGhpcy5pbk1lbW9yeUNhY2hlLnNldChjYWNoZUtleSwgY2FjaGVkKTtcbiAgICAgIHJldHVybiBjYWNoZWQuZGF0YTtcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB0cnlHZXRGcm9tVmFsdWVMb2FkZXI8VD4odmFsdWVMb2FkZXI/OiBWYWx1ZUxvYWRlcjxUPik6IFByb21pc2U8VCB8IHVuZGVmaW5lZD4ge1xuICAgIGlmICh2YWx1ZUxvYWRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmIChpc0NhbGxhYmxlKHZhbHVlTG9hZGVyKSkge1xuICAgICAgcmV0dXJuIGF3YWl0IHZhbHVlTG9hZGVyKCk7XG4gICAgfVxuXG4gICAgaWYgKGlzUHJvbWlzZSh2YWx1ZUxvYWRlcikpIHtcbiAgICAgIHJldHVybiBhd2FpdCB2YWx1ZUxvYWRlcjtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWVMb2FkZXI7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNhY2hlVmFsdWU8VD4oY2FjaGVLZXk6IHN0cmluZywgdmFsdWU6IFQsIG9wdGlvbnM6IENhY2hlTWV0YWRhdGFPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgY2FjaGVEYXRhID0gdGhpcy5jcmVhdGVDYWNoZUVudHJ5KHZhbHVlLCBvcHRpb25zKTtcblxuICAgIGF3YWl0IHRoaXMuc2F2ZVRvQWRhcHRlcihjYWNoZUtleSwgY2FjaGVEYXRhKTtcbiAgICB0aGlzLmluTWVtb3J5Q2FjaGUuc2V0KGNhY2hlS2V5LCBjYWNoZURhdGEpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDYWNoZUVudHJ5PFQ+KHZhbHVlOiBULCBvcHRpb25zOiBDYWNoZU1ldGFkYXRhT3B0aW9ucyk6IENhY2hlV2l0aE1ldGFkYXRhPFQ+IHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGxldCBleHBpcmVzQXQ6IG51bWJlcjtcbiAgICBpZiAob3B0aW9ucy50dGxNcyA8IDApIHtcbiAgICAgIGV4cGlyZXNBdCA9IC0xO1xuICAgIH0gZWxzZSB7XG4gICAgICBleHBpcmVzQXQgPSBub3cgKyBvcHRpb25zLnR0bE1zIC0gb3B0aW9ucy5leHBpcmF0aW9uVGhyZXNob2xkTXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGE6IHZhbHVlLFxuICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgY3JlYXRlZEF0OiBub3csXG4gICAgICAgIHR0bE1zOiBvcHRpb25zLnR0bE1zLFxuICAgICAgICBleHBpcmF0aW9uVGhyZXNob2xkTXM6IG9wdGlvbnMuZXhwaXJhdGlvblRocmVzaG9sZE1zLFxuICAgICAgICBleHBpcmVzQXQsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGlzRXhwaXJlZChtZXRhZGF0YT86IENhY2hlTWV0YWRhdGEpOiBib29sZWFuIHtcbiAgICBpZiAoIW1ldGFkYXRhKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAobWV0YWRhdGEuZXhwaXJlc0F0IDwgMCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IGV4cGlyYXRpb25UaW1lID1cbiAgICAgIG1ldGFkYXRhLmV4cGlyZXNBdCA/PyAobWV0YWRhdGEuY3JlYXRlZEF0ICYmIG1ldGFkYXRhLnR0bE1zID8gbWV0YWRhdGEuY3JlYXRlZEF0ICsgbWV0YWRhdGEudHRsTXMgOiB1bmRlZmluZWQpO1xuXG4gICAgaWYgKGV4cGlyYXRpb25UaW1lID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBEYXRlLm5vdygpID49IGV4cGlyYXRpb25UaW1lO1xuICB9XG59XG4iLAogICAgImV4cG9ydCBjb25zdCBDQUNIRV9UVExfTkVWRVJfRVhQSVJFID0gLTE7XG4iLAogICAgIi8qKlxuICogQ29udmVydHMgYW4gYXN5bmMgaXRlcmFibGUgb2Ygc3RyaW5nIG9yIFVpbnQ4QXJyYXkgY2h1bmtzIGludG8gYW4gYXN5bmMgaXRlcmFibGUgb2YgbGluZXMuXG4gKiBIYW5kbGVzIGNhc2VzIHdoZXJlIGxpbmVzIG1heSBiZSBzcGxpdCBhY3Jvc3MgbXVsdGlwbGUgY2h1bmtzLlxuICogVXNhZ2U6XG4gKiBgYGB0c1xuICogaW1wb3J0IHsgcGlwZWxpbmUgfSBmcm9tIFwibm9kZTpzdHJlYW0vcHJvbWlzZXNcIjtcbiAqIGltcG9ydCB7IGNyZWF0ZVJlYWRTdHJlYW0gfSBmcm9tIFwibm9kZTpmc1wiO1xuICogaW1wb3J0IHsgc3RyZWFtVG9MaW5lcyB9IGZyb20gXCJAbHVrYXNrai90cy11dGlsc1wiO1xuICpcbiAqIGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NMaW5lKGNodW5rOiBBc3luY0l0ZXJhYmxlPHN0cmluZz4pIHtcbiAqICAgZm9yIGF3YWl0IChjb25zdCBsaW5lIG9mIGNodW5rKSB7XG4gKiAgICAgY29uc29sZS5sb2cobGluZSk7XG4gKiAgICAgeWllbGQgbGluZTtcbiAqICAgfVxuICogfVxuICogY29uc3QgcmVhZFN0cmVhbSA9IGNyZWF0ZVJlYWRTdHJlYW0oXCJwYXRoL3RvL2ZpbGUudHh0XCIsIHsgZW5jb2Rpbmc6IFwidXRmLThcIiB9KTtcbiAqIGF3YWl0IHBpcGVsaW5lKHJlYWRTdHJlYW0sIHN0cmVhbVRvTGluZXMsIHByb2Nlc3Muc3Rkb3V0KS5jYXRjaCgoZXJyKSA9PiB7XG4gKiAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAqICAgcHJvY2Vzcy5leGl0KDEpO1xuICogfSk7XG4gKiBgYGBcbiAqIEBwYXJhbSBjaHVua3NcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uKiBzdHJlYW1Ub0xpbmVzKGNodW5rczogQXN5bmNJdGVyYWJsZTxzdHJpbmcgfCBVaW50OEFycmF5Pikge1xuICBsZXQgcHJldmlvdXMgPSBcIlwiO1xuXG4gIGZvciBhd2FpdCAoY29uc3QgY2h1bmsgb2YgY2h1bmtzKSB7XG4gICAgcHJldmlvdXMgKz0gY2h1bms7XG4gICAgbGV0IGVvbEluZGV4OiBudW1iZXI7XG5cbiAgICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vQXNzaWduSW5FeHByZXNzaW9uczogXCJleHBsYW5hdGlvblwiXG4gICAgd2hpbGUgKChlb2xJbmRleCA9IHByZXZpb3VzLmluZGV4T2YoXCJcXG5cIikpID49IDApIHtcbiAgICAgIC8vIHRoaXMgbGluZSBpbmNsdWRlcyB0aGUgRU9MXG4gICAgICBjb25zdCBsaW5lID0gcHJldmlvdXMuc2xpY2UoMCwgZW9sSW5kZXggKyAxKTtcbiAgICAgIHlpZWxkIGxpbmU/LnRyaW0oKSA/PyBcIlwiO1xuICAgICAgcHJldmlvdXMgPSBwcmV2aW91cy5zbGljZShlb2xJbmRleCArIDEpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChwcmV2aW91cy5sZW5ndGggPiAwKSB7XG4gICAgeWllbGQgcHJldmlvdXM7XG4gIH1cbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCB1c2Ugc3RyZWFtVG9MaW5lc1xuICovXG5leHBvcnQgY29uc3QgY2h1bmtzVG9MaW5lcyA9IHN0cmVhbVRvTGluZXM7XG4iLAogICAgImV4cG9ydCBjb25zdCBpc051bGxPclVuZGVmaW5lZCA9ICh2YWx1ZTogYW55KTogdmFsdWUgaXMgbnVsbCB8IHVuZGVmaW5lZCA9PiB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsT3JFbXB0eU9yVW5kZWZpbmVkKHZhbHVlPzogYW55IHwgbnVsbCk6IHZhbHVlIGlzIG51bGwgfCB1bmRlZmluZWQge1xuICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gXCJcIiB8fCB2YWx1ZS50b1N0cmluZygpLnRyaW0oKSA9PT0gXCJcIjtcbn1cbiIsCiAgICAiLyoqXG4gKiBUeXBlIGd1YXJkIHRoYXQgY2hlY2tzIGlmIHRoZSBpbnB1dCBpcyBhIHBsYWluIEphdmFTY3JpcHQgb2JqZWN0LlxuICogQHBhcmFtIHthbnl9IGlucHV0IC0gVGhlIHZhbHVlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgaW5wdXQgaXMgYSBwbGFpbiBvYmplY3QsIGZhbHNlIG90aGVyd2lzZVxuICogQHR5cGVQYXJhbSB7UmVjb3JkPHN0cmluZywgYW55Pn0gVHlwZSBndWFyZCBuYXJyb3dzIHRoZSBpbnB1dCB0eXBlIHRvIGEgc3RyaW5nLWtleWVkIG9iamVjdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNPYmplY3QoaW5wdXQ6IGFueSk6IGlucHV0IGlzIFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5hcHBseShpbnB1dCkgPT09IFwiW29iamVjdCBPYmplY3RdXCI7XG59XG4iLAogICAgImV4cG9ydCBmdW5jdGlvbiBpc1ByaW1pdGl2ZSh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICByZXR1cm4gKHR5cGVvZiB2YWx1ZSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgdmFsdWUgIT09IFwiZnVuY3Rpb25cIikgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgaW5zdGFuY2VvZiBEYXRlO1xufVxuIiwKICAgICJpbXBvcnQgc2pzIGZyb20gXCJzZWN1cmUtanNvbi1wYXJzZVwiO1xuXG4vKipcbiAqIFNhZmVseSBwYXJzZXMgSlNPTiBpbnB1dCB1c2luZyBzZWN1cmUtanNvbi1wYXJzZSB3aXRoIHByb3RvdHlwZSBwb2xsdXRpb24gcHJvdGVjdGlvbi5cbiAqIEBwYXJhbSB7YW55fSBpbnB1dCAtIFRoZSBpbnB1dCB0byBiZSBwYXJzZWQgYXMgSlNPTlxuICogQHJldHVybnMge3sgdmFsdWU/OiBhbnksIGVycj86IEVycm9yIH19IEFuIG9iamVjdCBjb250YWluaW5nIGVpdGhlciB0aGUgcGFyc2VkIHZhbHVlIG9yIGFuIGVycm9yIGlmIHBhcnNpbmcgZmFpbGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBqc29uUGFyc2VyKGlucHV0OiBhbnkpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4geyB2YWx1ZTogc2pzLnBhcnNlKGlucHV0LCB7IHByb3RvQWN0aW9uOiBcInJlbW92ZVwiIH0pIH07XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiB7IGVyciB9O1xuICB9XG59XG4iLAogICAgImV4cG9ydCBmdW5jdGlvbiByYW5kb21TdHJpbmcobGVuZ3RoOiBudW1iZXIgPSA2KTogc3RyaW5nIHtcbiAgbGV0IHJlc3VsdCA9IFwiXCI7XG4gIGNvbnN0IGNoYXJhY3RlcnMgPSBcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5XCI7XG4gIGNvbnN0IGNoYXJhY3RlcnNMZW5ndGggPSBjaGFyYWN0ZXJzLmxlbmd0aDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIHJlc3VsdCArPSBjaGFyYWN0ZXJzLmNoYXJBdChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjaGFyYWN0ZXJzTGVuZ3RoKSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiIsCiAgICAiZXhwb3J0IGNvbnN0IHNsZWVwID0gKG1zOiBudW1iZXIpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKSk7XG4iLAogICAgIi8vIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL3QzZG90Z2cvYTQ4NmM0YWU2NmQzMmJmMTdjMDljNzM2MDlkYWNjNWJcbi8vIFR5cGVzIGZvciB0aGUgcmVzdWx0IG9iamVjdCB3aXRoIGRpc2NyaW1pbmF0ZWQgdW5pb25cbnR5cGUgUmVzdWx0U3VjY2VzczxUPiA9IHtcbiAgZGF0YTogVDtcbiAgZXJyb3I6IG51bGw7XG59O1xuXG50eXBlIFJlc3VsdEVycm9yPEU+ID0ge1xuICBkYXRhOiBudWxsO1xuICBlcnJvcjogRTtcbn07XG5cbmV4cG9ydCB0eXBlIFJlc3VsdDxULCBFID0gRXJyb3I+ID0gUmVzdWx0U3VjY2VzczxUPiB8IFJlc3VsdEVycm9yPEU+O1xuXG5leHBvcnQgdHlwZSBQcm9taXNlUmVzdWx0PFQsIEU+ID0gUHJvbWlzZTxSZXN1bHQ8VCwgRT4+O1xuXG4vKipcbiAqIFdyYXBzIGEgc3luY2hyb25vdXMgZnVuY3Rpb24gaW4gYSB0cnktY2F0Y2ggYmxvY2sgYW5kIHJldHVybnMgYSBSZXN1bHQgdHVwbGUgY29udGFpbmluZyBlaXRoZXIgdGhlIHJldHVybmVkIHZhbHVlIG9yIHRoZSBjYXVnaHQgZXJyb3JcbiAqXG4gKiBAdGVtcGxhdGUgVCAtIFRoZSB0eXBlIG9mIHRoZSBzdWNjZXNzZnVsIHJlc3VsdCB2YWx1ZVxuICogQHRlbXBsYXRlIEUgLSBUaGUgdHlwZSBvZiB0aGUgZXJyb3IgdmFsdWUsIG11c3QgZXh0ZW5kIEVycm9yXG4gKiBAcGFyYW0geygpID0+IFR9IGZuIC0gVGhlIGZ1bmN0aW9uIHRvIGJlIGV4ZWN1dGVkXG4gKiBAcmV0dXJucyB7UmVzdWx0PFQsIEU+fSBBIHR1cGxlIGNvbnRhaW5pbmcgZWl0aGVyIFtkYXRhLCB1bmRlZmluZWRdIG9yIFt1bmRlZmluZWQsIGVycm9yXVxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCB7ZGF0YSwgZXJyb3J9ID0gdHJ5Q2F0Y2goKCkgPT4gc29tZVJpc2t5T3BlcmF0aW9uKCkpO1xuICogaWYgKGVycm9yKSB7XG4gKiAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICogfSBlbHNlIHtcbiAqICAgY29uc29sZS5sb2coZGF0YSk7XG4gKiB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cnlDYXRjaFN5bmM8VCwgRSBleHRlbmRzIEVycm9yPihmbjogKCkgPT4gVCk6IFJlc3VsdDxULCBFPiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGZuKCk7XG4gICAgcmV0dXJuIHsgZGF0YTogZGF0YSBhcyBULCBlcnJvcjogbnVsbCB9O1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiB7IGRhdGE6IG51bGwsIGVycm9yOiBlcnJvciBhcyBFIH07XG4gIH1cbn1cblxuLyoqXG4gKiBXcmFwcyBhIFByb21pc2UgaW4gYSB0cnktY2F0Y2ggYmxvY2sgYW5kIHJldHVybnMgYSBSZXN1bHQgb2JqZWN0IGNvbnRhaW5pbmcgZWl0aGVyIHRoZSByZXNvbHZlZCBkYXRhIG9yIHRoZSBjYXVnaHQgZXJyb3JcbiAqXG4gKiBAdGVtcGxhdGUgVCAtIFRoZSB0eXBlIG9mIHRoZSBzdWNjZXNzZnVsIHJlc3VsdCB2YWx1ZVxuICogQHRlbXBsYXRlIEUgLSBUaGUgdHlwZSBvZiB0aGUgZXJyb3IgdmFsdWUsIGRlZmF1bHRzIHRvIEVycm9yXG4gKiBAcGFyYW0ge1Byb21pc2U8VD59IHByb21pc2UgLSBUaGUgcHJvbWlzZSB0byBiZSBleGVjdXRlZFxuICogQHJldHVybnMge1Byb21pc2U8UmVzdWx0PFQsIEU+Pn0gQSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBSZXN1bHQgb2JqZWN0IGNvbnRhaW5pbmcgZWl0aGVyIHRoZSBkYXRhIG9yIGVycm9yXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHtkYXRhLCBlcnJvcn0gPSBhd2FpdCB0cnlDYXRjaChzb21lUHJvbWlzZSk7XG4gKiBpZiAoZXJyb3IpIHtcbiAqICAgY29uc29sZS5lcnJvcihyZXN1bHQuZXJyb3IpO1xuICogfSBlbHNlIHtcbiAqICAgY29uc29sZS5sb2coZGF0YSk7XG4gKiB9XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0cnlDYXRjaDxULCBFIGV4dGVuZHMgRXJyb3I+KHByb21pc2U6IFByb21pc2U8VD4pOiBQcm9taXNlUmVzdWx0PFQsIEU+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcHJvbWlzZTtcbiAgICByZXR1cm4geyBkYXRhOiBkYXRhIGFzIFQsIGVycm9yOiBudWxsIH07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHsgZGF0YTogbnVsbCwgZXJyb3I6IGVycm9yIGFzIEUgfTtcbiAgfVxufVxuXG4vKipcbiAqIFR5cGUgZ3VhcmQgdG8gY2hlY2sgaWYgYSBSZXN1bHQgb2JqZWN0IHJlcHJlc2VudHMgYSBzdWNjZXNzZnVsIG9wZXJhdGlvblxuICpcbiAqIEB0ZW1wbGF0ZSBUIC0gVGhlIHR5cGUgb2YgdGhlIHN1Y2Nlc3NmdWwgcmVzdWx0IHZhbHVlXG4gKiBAdGVtcGxhdGUgRSAtIFRoZSB0eXBlIG9mIHRoZSBlcnJvciB2YWx1ZSwgZGVmYXVsdHMgdG8gRXJyb3JcbiAqIEBwYXJhbSB7UmVzdWx0PFQsIEU+fSByZXN1bHQgLSBUaGUgUmVzdWx0IG9iamVjdCB0byBjaGVja1xuICogQHJldHVybnMge3Jlc3VsdCBpcyBSZXN1bHRTdWNjZXNzPFQ+fSBUcnVlIGlmIHRoZSByZXN1bHQgaXMgc3VjY2Vzc2Z1bCAoZXJyb3IgaXMgbnVsbCksIGZhbHNlIG90aGVyd2lzZVxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCByZXN1bHQgPSB0cnlDYXRjaCgoKSA9PiBzb21lT3BlcmF0aW9uKCkpO1xuICogaWYgKGlzU3VjY2VzcyhyZXN1bHQpKSB7XG4gKiAgIGNvbnNvbGUubG9nKHJlc3VsdC5kYXRhKTsgLy8gVHlwZVNjcmlwdCBrbm93cyByZXN1bHQuZGF0YSBpcyBUXG4gKiB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1N1Y2Nlc3M8VCwgRSA9IEVycm9yPihyZXN1bHQ6IFJlc3VsdDxULCBFPik6IHJlc3VsdCBpcyBSZXN1bHRTdWNjZXNzPFQ+IHtcbiAgcmV0dXJuIHJlc3VsdC5lcnJvciA9PT0gbnVsbDtcbn1cblxuLyoqXG4gKiBUeXBlIGd1YXJkIHRvIGNoZWNrIGlmIGEgUmVzdWx0IG9iamVjdCByZXByZXNlbnRzIGEgZmFpbGVkIG9wZXJhdGlvblxuICpcbiAqIEB0ZW1wbGF0ZSBUIC0gVGhlIHR5cGUgb2YgdGhlIHN1Y2Nlc3NmdWwgcmVzdWx0IHZhbHVlXG4gKiBAdGVtcGxhdGUgRSAtIFRoZSB0eXBlIG9mIHRoZSBlcnJvciB2YWx1ZSwgZGVmYXVsdHMgdG8gRXJyb3JcbiAqIEBwYXJhbSB7UmVzdWx0PFQsIEU+fSByZXN1bHQgLSBUaGUgUmVzdWx0IG9iamVjdCB0byBjaGVja1xuICogQHJldHVybnMge3Jlc3VsdCBpcyBSZXN1bHRFcnJvcjxFPn0gVHJ1ZSBpZiB0aGUgcmVzdWx0IGlzIGFuIGVycm9yIChlcnJvciBpcyBub3QgbnVsbCksIGZhbHNlIG90aGVyd2lzZVxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCByZXN1bHQgPSB0cnlDYXRjaCgoKSA9PiBzb21lT3BlcmF0aW9uKCkpO1xuICogaWYgKGlzRXJyb3IocmVzdWx0KSkge1xuICogICBjb25zb2xlLmVycm9yKHJlc3VsdC5lcnJvcik7IC8vIFR5cGVTY3JpcHQga25vd3MgcmVzdWx0LmVycm9yIGlzIEVcbiAqIH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRXJyb3I8VCwgRSA9IEVycm9yPihyZXN1bHQ6IFJlc3VsdDxULCBFPik6IHJlc3VsdCBpcyBSZXN1bHRFcnJvcjxFPiB7XG4gIHJldHVybiByZXN1bHQuZXJyb3IgIT09IG51bGw7XG59XG4iCiAgXSwKICAibWFwcGluZ3MiOiAiO0FBQU8sU0FBUyxVQUFVLENBQUMsT0FBdUM7QUFBQSxFQUNoRSxPQUFPLE9BQU8sVUFBVTtBQUFBOzs7QUNHbkIsU0FBUyxTQUFrQixDQUFDLE9BQXFDO0FBQUEsRUFDdEUsT0FDRSxDQUFDLENBQUMsVUFDRCxPQUFPLFVBQVUsWUFBWSxPQUFPLFVBQVUsZUFDL0MsVUFBVSxTQUNWLE9BQU8sTUFBTSxTQUFTO0FBQUE7OztBQ0oxQixJQUFNLHNCQUFvQztBQUFBLEVBQ3hDLHVCQUF1QjtBQUFBLEVBQ3ZCLE9BQU8sS0FBSyxLQUFLO0FBQ25CO0FBQUE7QUFFTyxNQUFNLE1BQThEO0FBQUEsRUFDakUsZ0JBQWdELElBQUk7QUFBQSxFQUMzQztBQUFBLEVBQ0E7QUFBQSxFQUlqQixXQUFXLENBQUMsU0FBNEMsZ0JBQXdDO0FBQUEsSUFDOUYsTUFBTSxVQUFVLFdBQVcsRUFBRSxjQUFjLFdBQVksVUFBb0M7QUFBQSxJQUMzRixJQUFJLFdBQVcsY0FBYyxXQUFXLGNBQWMsU0FBUztBQUFBLE1BQzdELEtBQUssVUFBVTtBQUFBLElBQ2pCO0FBQUEsSUFFQSxLQUFLLFVBQVU7QUFBQSxTQUNWO0FBQUEsU0FDQTtBQUFBLElBQ0w7QUFBQTtBQUFBLE9BR1ksZUFBaUIsQ0FBQyxVQUEwQztBQUFBLElBQ3hFLElBQUksQ0FBQyxLQUFLLFNBQVM7QUFBQSxNQUNqQjtBQUFBLElBQ0Y7QUFBQSxJQUVBLE9BQU8sS0FBSyxRQUFRLFNBQVMsUUFBUTtBQUFBO0FBQUEsT0FHekIsY0FBZ0IsQ0FBQyxVQUFrQixPQUF5QjtBQUFBLElBQ3hFLElBQUksQ0FBQyxLQUFLLFNBQVM7QUFBQSxNQUNqQjtBQUFBLElBQ0Y7QUFBQSxJQUVBLE9BQU8sS0FBSyxRQUFRLFNBQVksVUFBVSxLQUFLO0FBQUE7QUFBQSxPQUdwQyxJQUFNLENBQ2pCLFVBQ0EsYUFDQSxVQUF5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
@@ -1,24 +1,32 @@
1
1
  // src/neverthrow/tryCatch.ts
2
- function tryCatch(fn) {
2
+ function tryCatchSync(fn) {
3
3
  try {
4
4
  const data = fn();
5
- return [data, undefined];
5
+ return { data, error: null };
6
6
  } catch (error) {
7
- return [undefined, error];
7
+ return { data: null, error };
8
8
  }
9
9
  }
10
- async function tryCatchAsync(promise) {
10
+ async function tryCatch(promise) {
11
11
  try {
12
12
  const data = await promise;
13
- return [data, undefined];
13
+ return { data, error: null };
14
14
  } catch (error) {
15
- return [undefined, error];
15
+ return { data: null, error };
16
16
  }
17
17
  }
18
+ function isSuccess(result) {
19
+ return result.error === null;
20
+ }
21
+ function isError(result) {
22
+ return result.error !== null;
23
+ }
18
24
  export {
19
- tryCatchAsync,
20
- tryCatch
25
+ tryCatchSync,
26
+ tryCatch,
27
+ isSuccess,
28
+ isError
21
29
  };
22
30
 
23
- //# debugId=5E0040E9752F227C64756E2164756E21
24
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL25ldmVydGhyb3cvdHJ5Q2F0Y2gudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbCiAgICAiLy8gaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vdDNkb3RnZy9hNDg2YzRhZTY2ZDMyYmYxN2MwOWM3MzYwOWRhY2M1YlxuLy8gVHlwZXMgZm9yIHRoZSByZXN1bHQgb2JqZWN0IHdpdGggZGlzY3JpbWluYXRlZCB1bmlvblxuLy8gdHlwZSBTdWNjZXNzPFQ+ID0ge1xuLy8gICBkYXRhOiBUO1xuLy8gICBlcnJvcjogbnVsbDtcbi8vIH07XG5cbi8vIHR5cGUgRmFpbHVyZTxFPiA9IHtcbi8vICAgZGF0YTogbnVsbDtcbi8vICAgZXJyb3I6IEU7XG4vLyB9O1xuXG4vLyBleHBvcnQgdHlwZSBSZXN1bHQ8VCwgRSA9IEVycm9yPiA9IFN1Y2Nlc3M8VD4gfCBGYWlsdXJlPEU+O1xuXG5leHBvcnQgdHlwZSBSZXN1bHQ8VCwgRT4gPSBbdW5kZWZpbmVkLCBFXSB8IFtULCB1bmRlZmluZWRdO1xuZXhwb3J0IHR5cGUgUHJvbWlzZVJlc3VsdDxULCBFPiA9IFByb21pc2U8UmVzdWx0PFQsIEU+PjtcblxuLyoqXG4gKiBXcmFwcyBhIHN5bmNocm9ub3VzIGZ1bmN0aW9uIGluIGEgdHJ5LWNhdGNoIGJsb2NrIGFuZCByZXR1cm5zIGEgUmVzdWx0IHR1cGxlIGNvbnRhaW5pbmcgZWl0aGVyIHRoZSByZXR1cm5lZCB2YWx1ZSBvciB0aGUgY2F1Z2h0IGVycm9yXG4gKlxuICogQHRlbXBsYXRlIFQgLSBUaGUgdHlwZSBvZiB0aGUgc3VjY2Vzc2Z1bCByZXN1bHQgdmFsdWVcbiAqIEB0ZW1wbGF0ZSBFIC0gVGhlIHR5cGUgb2YgdGhlIGVycm9yIHZhbHVlLCBtdXN0IGV4dGVuZCBFcnJvclxuICogQHBhcmFtIHsoKSA9PiBUfSBmbiAtIFRoZSBmdW5jdGlvbiB0byBiZSBleGVjdXRlZFxuICogQHJldHVybnMge1Jlc3VsdDxULCBFPn0gQSB0dXBsZSBjb250YWluaW5nIGVpdGhlciBbZGF0YSwgdW5kZWZpbmVkXSBvciBbdW5kZWZpbmVkLCBlcnJvcl1cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgW2RhdGEsIGVycm9yXSA9IHRyeUNhdGNoKCgpID0+IHNvbWVSaXNreU9wZXJhdGlvbigpKTtcbiAqIGlmIChlcnJvcikge1xuICogICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAqIH0gZWxzZSB7XG4gKiAgIGNvbnNvbGUubG9nKGRhdGEpO1xuICogfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJ5Q2F0Y2g8VCwgRSBleHRlbmRzIEVycm9yPihmbjogKCkgPT4gVCk6IFJlc3VsdDxULCBFPiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IGZuKCk7XG4gICAgcmV0dXJuIFtkYXRhIGFzIFQsIHVuZGVmaW5lZF07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIFt1bmRlZmluZWQsIGVycm9yIGFzIEVdO1xuICB9XG59XG5cbi8qKlxuICogV3JhcHMgYSBQcm9taXNlIGluIGEgdHJ5LWNhdGNoIGJsb2NrIGFuZCByZXR1cm5zIGEgUmVzdWx0IG9iamVjdCBjb250YWluaW5nIGVpdGhlciB0aGUgcmVzb2x2ZWQgZGF0YSBvciB0aGUgY2F1Z2h0IGVycm9yXG4gKlxuICogQHRlbXBsYXRlIFQgLSBUaGUgdHlwZSBvZiB0aGUgc3VjY2Vzc2Z1bCByZXN1bHQgdmFsdWVcbiAqIEB0ZW1wbGF0ZSBFIC0gVGhlIHR5cGUgb2YgdGhlIGVycm9yIHZhbHVlLCBkZWZhdWx0cyB0byBFcnJvclxuICogQHBhcmFtIHtQcm9taXNlPFQ+fSBwcm9taXNlIC0gVGhlIHByb21pc2UgdG8gYmUgZXhlY3V0ZWRcbiAqIEByZXR1cm5zIHtQcm9taXNlPFJlc3VsdDxULCBFPj59IEEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGEgUmVzdWx0IG9iamVjdCBjb250YWluaW5nIGVpdGhlciB0aGUgZGF0YSBvciBlcnJvclxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCB7ZGF0YSwgZXJyb3J9ID0gYXdhaXQgdHJ5Q2F0Y2hBc3luYyhzb21lUHJvbWlzZSk7XG4gKiBpZiAoZXJyb3IpIHtcbiAqICAgY29uc29sZS5lcnJvcihyZXN1bHQuZXJyb3IpO1xuICogfSBlbHNlIHtcbiAqICAgY29uc29sZS5sb2coZGF0YSk7XG4gKiB9XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB0cnlDYXRjaEFzeW5jPFQsIEUgZXh0ZW5kcyBFcnJvcj4ocHJvbWlzZTogUHJvbWlzZTxUPik6IFByb21pc2VSZXN1bHQ8VCwgRT4ge1xuICB0cnkge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBwcm9taXNlO1xuICAgIHJldHVybiBbZGF0YSBhcyBULCB1bmRlZmluZWRdO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBbdW5kZWZpbmVkLCBlcnJvciBhcyBFXTtcbiAgfVxufVxuIgogIF0sCiAgIm1hcHBpbmdzIjogIjtBQWlDTyxTQUFTLFFBQTRCLENBQUMsSUFBMkI7QUFBQSxFQUN0RSxJQUFJO0FBQUEsSUFDRixNQUFNLE9BQU8sR0FBRztBQUFBLElBQ2hCLE9BQU8sQ0FBQyxNQUFXLFNBQVM7QUFBQSxJQUM1QixPQUFPLE9BQU87QUFBQSxJQUNkLE9BQU8sQ0FBQyxXQUFXLEtBQVU7QUFBQTtBQUFBO0FBb0JqQyxlQUFzQixhQUFpQyxDQUFDLFNBQTBDO0FBQUEsRUFDaEcsSUFBSTtBQUFBLElBQ0YsTUFBTSxPQUFPLE1BQU07QUFBQSxJQUNuQixPQUFPLENBQUMsTUFBVyxTQUFTO0FBQUEsSUFDNUIsT0FBTyxPQUFPO0FBQUEsSUFDZCxPQUFPLENBQUMsV0FBVyxLQUFVO0FBQUE7QUFBQTsiLAogICJkZWJ1Z0lkIjogIjVFMDA0MEU5NzUyRjIyN0M2NDc1NkUyMTY0NzU2RTIxIiwKICAibmFtZXMiOiBbXQp9
31
+ //# debugId=ABB55CB38B6FD21664756E2164756E21
32
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL25ldmVydGhyb3cvdHJ5Q2F0Y2gudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbCiAgICAiLy8gaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vdDNkb3RnZy9hNDg2YzRhZTY2ZDMyYmYxN2MwOWM3MzYwOWRhY2M1YlxuLy8gVHlwZXMgZm9yIHRoZSByZXN1bHQgb2JqZWN0IHdpdGggZGlzY3JpbWluYXRlZCB1bmlvblxudHlwZSBSZXN1bHRTdWNjZXNzPFQ+ID0ge1xuICBkYXRhOiBUO1xuICBlcnJvcjogbnVsbDtcbn07XG5cbnR5cGUgUmVzdWx0RXJyb3I8RT4gPSB7XG4gIGRhdGE6IG51bGw7XG4gIGVycm9yOiBFO1xufTtcblxuZXhwb3J0IHR5cGUgUmVzdWx0PFQsIEUgPSBFcnJvcj4gPSBSZXN1bHRTdWNjZXNzPFQ+IHwgUmVzdWx0RXJyb3I8RT47XG5cbmV4cG9ydCB0eXBlIFByb21pc2VSZXN1bHQ8VCwgRT4gPSBQcm9taXNlPFJlc3VsdDxULCBFPj47XG5cbi8qKlxuICogV3JhcHMgYSBzeW5jaHJvbm91cyBmdW5jdGlvbiBpbiBhIHRyeS1jYXRjaCBibG9jayBhbmQgcmV0dXJucyBhIFJlc3VsdCB0dXBsZSBjb250YWluaW5nIGVpdGhlciB0aGUgcmV0dXJuZWQgdmFsdWUgb3IgdGhlIGNhdWdodCBlcnJvclxuICpcbiAqIEB0ZW1wbGF0ZSBUIC0gVGhlIHR5cGUgb2YgdGhlIHN1Y2Nlc3NmdWwgcmVzdWx0IHZhbHVlXG4gKiBAdGVtcGxhdGUgRSAtIFRoZSB0eXBlIG9mIHRoZSBlcnJvciB2YWx1ZSwgbXVzdCBleHRlbmQgRXJyb3JcbiAqIEBwYXJhbSB7KCkgPT4gVH0gZm4gLSBUaGUgZnVuY3Rpb24gdG8gYmUgZXhlY3V0ZWRcbiAqIEByZXR1cm5zIHtSZXN1bHQ8VCwgRT59IEEgdHVwbGUgY29udGFpbmluZyBlaXRoZXIgW2RhdGEsIHVuZGVmaW5lZF0gb3IgW3VuZGVmaW5lZCwgZXJyb3JdXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHtkYXRhLCBlcnJvcn0gPSB0cnlDYXRjaCgoKSA9PiBzb21lUmlza3lPcGVyYXRpb24oKSk7XG4gKiBpZiAoZXJyb3IpIHtcbiAqICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gKiB9IGVsc2Uge1xuICogICBjb25zb2xlLmxvZyhkYXRhKTtcbiAqIH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRyeUNhdGNoU3luYzxULCBFIGV4dGVuZHMgRXJyb3I+KGZuOiAoKSA9PiBUKTogUmVzdWx0PFQsIEU+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBkYXRhID0gZm4oKTtcbiAgICByZXR1cm4geyBkYXRhOiBkYXRhIGFzIFQsIGVycm9yOiBudWxsIH07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHsgZGF0YTogbnVsbCwgZXJyb3I6IGVycm9yIGFzIEUgfTtcbiAgfVxufVxuXG4vKipcbiAqIFdyYXBzIGEgUHJvbWlzZSBpbiBhIHRyeS1jYXRjaCBibG9jayBhbmQgcmV0dXJucyBhIFJlc3VsdCBvYmplY3QgY29udGFpbmluZyBlaXRoZXIgdGhlIHJlc29sdmVkIGRhdGEgb3IgdGhlIGNhdWdodCBlcnJvclxuICpcbiAqIEB0ZW1wbGF0ZSBUIC0gVGhlIHR5cGUgb2YgdGhlIHN1Y2Nlc3NmdWwgcmVzdWx0IHZhbHVlXG4gKiBAdGVtcGxhdGUgRSAtIFRoZSB0eXBlIG9mIHRoZSBlcnJvciB2YWx1ZSwgZGVmYXVsdHMgdG8gRXJyb3JcbiAqIEBwYXJhbSB7UHJvbWlzZTxUPn0gcHJvbWlzZSAtIFRoZSBwcm9taXNlIHRvIGJlIGV4ZWN1dGVkXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxSZXN1bHQ8VCwgRT4+fSBBIFByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIFJlc3VsdCBvYmplY3QgY29udGFpbmluZyBlaXRoZXIgdGhlIGRhdGEgb3IgZXJyb3JcbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3Qge2RhdGEsIGVycm9yfSA9IGF3YWl0IHRyeUNhdGNoKHNvbWVQcm9taXNlKTtcbiAqIGlmIChlcnJvcikge1xuICogICBjb25zb2xlLmVycm9yKHJlc3VsdC5lcnJvcik7XG4gKiB9IGVsc2Uge1xuICogICBjb25zb2xlLmxvZyhkYXRhKTtcbiAqIH1cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRyeUNhdGNoPFQsIEUgZXh0ZW5kcyBFcnJvcj4ocHJvbWlzZTogUHJvbWlzZTxUPik6IFByb21pc2VSZXN1bHQ8VCwgRT4ge1xuICB0cnkge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBwcm9taXNlO1xuICAgIHJldHVybiB7IGRhdGE6IGRhdGEgYXMgVCwgZXJyb3I6IG51bGwgfTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4geyBkYXRhOiBudWxsLCBlcnJvcjogZXJyb3IgYXMgRSB9O1xuICB9XG59XG5cbi8qKlxuICogVHlwZSBndWFyZCB0byBjaGVjayBpZiBhIFJlc3VsdCBvYmplY3QgcmVwcmVzZW50cyBhIHN1Y2Nlc3NmdWwgb3BlcmF0aW9uXG4gKlxuICogQHRlbXBsYXRlIFQgLSBUaGUgdHlwZSBvZiB0aGUgc3VjY2Vzc2Z1bCByZXN1bHQgdmFsdWVcbiAqIEB0ZW1wbGF0ZSBFIC0gVGhlIHR5cGUgb2YgdGhlIGVycm9yIHZhbHVlLCBkZWZhdWx0cyB0byBFcnJvclxuICogQHBhcmFtIHtSZXN1bHQ8VCwgRT59IHJlc3VsdCAtIFRoZSBSZXN1bHQgb2JqZWN0IHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7cmVzdWx0IGlzIFJlc3VsdFN1Y2Nlc3M8VD59IFRydWUgaWYgdGhlIHJlc3VsdCBpcyBzdWNjZXNzZnVsIChlcnJvciBpcyBudWxsKSwgZmFsc2Ugb3RoZXJ3aXNlXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHJlc3VsdCA9IHRyeUNhdGNoKCgpID0+IHNvbWVPcGVyYXRpb24oKSk7XG4gKiBpZiAoaXNTdWNjZXNzKHJlc3VsdCkpIHtcbiAqICAgY29uc29sZS5sb2cocmVzdWx0LmRhdGEpOyAvLyBUeXBlU2NyaXB0IGtub3dzIHJlc3VsdC5kYXRhIGlzIFRcbiAqIH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU3VjY2VzczxULCBFID0gRXJyb3I+KHJlc3VsdDogUmVzdWx0PFQsIEU+KTogcmVzdWx0IGlzIFJlc3VsdFN1Y2Nlc3M8VD4ge1xuICByZXR1cm4gcmVzdWx0LmVycm9yID09PSBudWxsO1xufVxuXG4vKipcbiAqIFR5cGUgZ3VhcmQgdG8gY2hlY2sgaWYgYSBSZXN1bHQgb2JqZWN0IHJlcHJlc2VudHMgYSBmYWlsZWQgb3BlcmF0aW9uXG4gKlxuICogQHRlbXBsYXRlIFQgLSBUaGUgdHlwZSBvZiB0aGUgc3VjY2Vzc2Z1bCByZXN1bHQgdmFsdWVcbiAqIEB0ZW1wbGF0ZSBFIC0gVGhlIHR5cGUgb2YgdGhlIGVycm9yIHZhbHVlLCBkZWZhdWx0cyB0byBFcnJvclxuICogQHBhcmFtIHtSZXN1bHQ8VCwgRT59IHJlc3VsdCAtIFRoZSBSZXN1bHQgb2JqZWN0IHRvIGNoZWNrXG4gKiBAcmV0dXJucyB7cmVzdWx0IGlzIFJlc3VsdEVycm9yPEU+fSBUcnVlIGlmIHRoZSByZXN1bHQgaXMgYW4gZXJyb3IgKGVycm9yIGlzIG5vdCBudWxsKSwgZmFsc2Ugb3RoZXJ3aXNlXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHJlc3VsdCA9IHRyeUNhdGNoKCgpID0+IHNvbWVPcGVyYXRpb24oKSk7XG4gKiBpZiAoaXNFcnJvcihyZXN1bHQpKSB7XG4gKiAgIGNvbnNvbGUuZXJyb3IocmVzdWx0LmVycm9yKTsgLy8gVHlwZVNjcmlwdCBrbm93cyByZXN1bHQuZXJyb3IgaXMgRVxuICogfVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNFcnJvcjxULCBFID0gRXJyb3I+KHJlc3VsdDogUmVzdWx0PFQsIEU+KTogcmVzdWx0IGlzIFJlc3VsdEVycm9yPEU+IHtcbiAgcmV0dXJuIHJlc3VsdC5lcnJvciAhPT0gbnVsbDtcbn1cbiIKICBdLAogICJtYXBwaW5ncyI6ICI7QUFnQ08sU0FBUyxZQUFnQyxDQUFDLElBQTJCO0FBQUEsRUFDMUUsSUFBSTtBQUFBLElBQ0YsTUFBTSxPQUFPLEdBQUc7QUFBQSxJQUNoQixPQUFPLEVBQUUsTUFBaUIsT0FBTyxLQUFLO0FBQUEsSUFDdEMsT0FBTyxPQUFPO0FBQUEsSUFDZCxPQUFPLEVBQUUsTUFBTSxNQUFNLE1BQWtCO0FBQUE7QUFBQTtBQW9CM0MsZUFBc0IsUUFBNEIsQ0FBQyxTQUEwQztBQUFBLEVBQzNGLElBQUk7QUFBQSxJQUNGLE1BQU0sT0FBTyxNQUFNO0FBQUEsSUFDbkIsT0FBTyxFQUFFLE1BQWlCLE9BQU8sS0FBSztBQUFBLElBQ3RDLE9BQU8sT0FBTztBQUFBLElBQ2QsT0FBTyxFQUFFLE1BQU0sTUFBTSxNQUFrQjtBQUFBO0FBQUE7QUFrQnBDLFNBQVMsU0FBdUIsQ0FBQyxRQUFrRDtBQUFBLEVBQ3hGLE9BQU8sT0FBTyxVQUFVO0FBQUE7QUFpQm5CLFNBQVMsT0FBcUIsQ0FBQyxRQUFnRDtBQUFBLEVBQ3BGLE9BQU8sT0FBTyxVQUFVO0FBQUE7IiwKICAiZGVidWdJZCI6ICJBQkI1NUNCMzhCNkZEMjE2NjQ3NTZFMjE2NDc1NkUyMSIsCiAgIm5hbWVzIjogW10KfQ==
@@ -3,6 +3,7 @@ export * from "./utils/chunksToLines.ts";
3
3
  export * from "./utils/isNullOrUndefined.ts";
4
4
  export * from "./utils/isObject.ts";
5
5
  export * from "./utils/isPrimitive.ts";
6
+ export * from "./utils/isPromise.ts";
6
7
  export * from "./utils/jsonParser.ts";
7
8
  export * from "./utils/randomString.ts";
8
9
  export * from "./utils/sleep.ts";
@@ -1,4 +1,12 @@
1
- export type Result<T, E> = [undefined, E] | [T, undefined];
1
+ type ResultSuccess<T> = {
2
+ data: T;
3
+ error: null;
4
+ };
5
+ type ResultError<E> = {
6
+ data: null;
7
+ error: E;
8
+ };
9
+ export type Result<T, E = Error> = ResultSuccess<T> | ResultError<E>;
2
10
  export type PromiseResult<T, E> = Promise<Result<T, E>>;
3
11
  /**
4
12
  * Wraps a synchronous function in a try-catch block and returns a Result tuple containing either the returned value or the caught error
@@ -9,14 +17,14 @@ export type PromiseResult<T, E> = Promise<Result<T, E>>;
9
17
  * @returns {Result<T, E>} A tuple containing either [data, undefined] or [undefined, error]
10
18
  *
11
19
  * @example
12
- * const [data, error] = tryCatch(() => someRiskyOperation());
20
+ * const {data, error} = tryCatch(() => someRiskyOperation());
13
21
  * if (error) {
14
22
  * console.error(error);
15
23
  * } else {
16
24
  * console.log(data);
17
25
  * }
18
26
  */
19
- export declare function tryCatch<T, E extends Error>(fn: () => T): Result<T, E>;
27
+ export declare function tryCatchSync<T, E extends Error>(fn: () => T): Result<T, E>;
20
28
  /**
21
29
  * Wraps a Promise in a try-catch block and returns a Result object containing either the resolved data or the caught error
22
30
  *
@@ -26,11 +34,42 @@ export declare function tryCatch<T, E extends Error>(fn: () => T): Result<T, E>;
26
34
  * @returns {Promise<Result<T, E>>} A Promise that resolves to a Result object containing either the data or error
27
35
  *
28
36
  * @example
29
- * const {data, error} = await tryCatchAsync(somePromise);
37
+ * const {data, error} = await tryCatch(somePromise);
30
38
  * if (error) {
31
39
  * console.error(result.error);
32
40
  * } else {
33
41
  * console.log(data);
34
42
  * }
35
43
  */
36
- export declare function tryCatchAsync<T, E extends Error>(promise: Promise<T>): PromiseResult<T, E>;
44
+ export declare function tryCatch<T, E extends Error>(promise: Promise<T>): PromiseResult<T, E>;
45
+ /**
46
+ * Type guard to check if a Result object represents a successful operation
47
+ *
48
+ * @template T - The type of the successful result value
49
+ * @template E - The type of the error value, defaults to Error
50
+ * @param {Result<T, E>} result - The Result object to check
51
+ * @returns {result is ResultSuccess<T>} True if the result is successful (error is null), false otherwise
52
+ *
53
+ * @example
54
+ * const result = tryCatch(() => someOperation());
55
+ * if (isSuccess(result)) {
56
+ * console.log(result.data); // TypeScript knows result.data is T
57
+ * }
58
+ */
59
+ export declare function isSuccess<T, E = Error>(result: Result<T, E>): result is ResultSuccess<T>;
60
+ /**
61
+ * Type guard to check if a Result object represents a failed operation
62
+ *
63
+ * @template T - The type of the successful result value
64
+ * @template E - The type of the error value, defaults to Error
65
+ * @param {Result<T, E>} result - The Result object to check
66
+ * @returns {result is ResultError<E>} True if the result is an error (error is not null), false otherwise
67
+ *
68
+ * @example
69
+ * const result = tryCatch(() => someOperation());
70
+ * if (isError(result)) {
71
+ * console.error(result.error); // TypeScript knows result.error is E
72
+ * }
73
+ */
74
+ export declare function isError<T, E = Error>(result: Result<T, E>): result is ResultError<E>;
75
+ export {};
@@ -1,5 +1,4 @@
1
1
  /**
2
- * @deprecated Use node:util/types::isPromise
3
2
  * @param value unknown
4
3
  * @returns
5
4
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lukaskj/ts-utils",
3
- "version": "1.2.2",
3
+ "version": "1.3.1",
4
4
  "module": "src/index.ts",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -21,7 +21,7 @@
21
21
  "devDependencies": {
22
22
  "@biomejs/biome": "^2.1.4",
23
23
  "@faker-js/faker": "^9.9.0",
24
- "@types/bun": "latest",
24
+ "@types/bun": "^1.3.10",
25
25
  "@types/node": "^24.2.1",
26
26
  "bun-mock-extended": "^3.0.5",
27
27
  "husky": "^9.1.7",
@@ -68,12 +68,12 @@
68
68
  },
69
69
  "repository": {
70
70
  "type": "git",
71
- "url": "git+https://github.com/lukaskj/bun-base-template.git"
71
+ "url": "git+https://github.com/lukaskj/ts-utils.git"
72
72
  },
73
73
  "bugs": {
74
- "url": "https://github.com/lukaskj/bun-base-template/issues"
74
+ "url": "https://github.com/lukaskj/ts-utils/issues"
75
75
  },
76
- "homepage": "https://github.com/lukaskj/bun-base-template#readme",
76
+ "homepage": "https://github.com/lukaskj/ts-utils#readme",
77
77
  "files": [
78
78
  "dist/**/*",
79
79
  "!**/test/**",