@warmhub/cli 0.54.0 → 0.55.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/wh.js +418 -1473
- package/package.json +2 -2
package/dist/wh.js
CHANGED
|
@@ -4,7 +4,7 @@ import { createRequire } from "node:module";
|
|
|
4
4
|
var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
|
|
5
5
|
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
6
6
|
|
|
7
|
-
// ../../node_modules/.bun/undici@6.
|
|
7
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/core/symbols.js
|
|
8
8
|
var require_symbols = __commonJS((exports, module) => {
|
|
9
9
|
module.exports = {
|
|
10
10
|
kClose: Symbol("close"),
|
|
@@ -75,7 +75,7 @@ var require_symbols = __commonJS((exports, module) => {
|
|
|
75
75
|
};
|
|
76
76
|
});
|
|
77
77
|
|
|
78
|
-
// ../../node_modules/.bun/undici@6.
|
|
78
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/core/errors.js
|
|
79
79
|
var require_errors = __commonJS((exports, module) => {
|
|
80
80
|
var kUndiciError = Symbol.for("undici.error.UND_ERR");
|
|
81
81
|
|
|
@@ -454,7 +454,7 @@ var require_errors = __commonJS((exports, module) => {
|
|
|
454
454
|
};
|
|
455
455
|
});
|
|
456
456
|
|
|
457
|
-
// ../../node_modules/.bun/undici@6.
|
|
457
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/core/constants.js
|
|
458
458
|
var require_constants = __commonJS((exports, module) => {
|
|
459
459
|
var headerNameLowerCasedRecord = {};
|
|
460
460
|
var wellknownHeaderNames = [
|
|
@@ -566,7 +566,7 @@ var require_constants = __commonJS((exports, module) => {
|
|
|
566
566
|
};
|
|
567
567
|
});
|
|
568
568
|
|
|
569
|
-
// ../../node_modules/.bun/undici@6.
|
|
569
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/core/tree.js
|
|
570
570
|
var require_tree = __commonJS((exports, module) => {
|
|
571
571
|
var {
|
|
572
572
|
wellknownHeaderNames,
|
|
@@ -678,7 +678,7 @@ var require_tree = __commonJS((exports, module) => {
|
|
|
678
678
|
};
|
|
679
679
|
});
|
|
680
680
|
|
|
681
|
-
// ../../node_modules/.bun/undici@6.
|
|
681
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/core/util.js
|
|
682
682
|
var require_util = __commonJS((exports, module) => {
|
|
683
683
|
var assert2 = __require("node:assert");
|
|
684
684
|
var { kDestroyed, kBodyUsed, kListeners, kBody } = require_symbols();
|
|
@@ -1182,7 +1182,7 @@ var require_util = __commonJS((exports, module) => {
|
|
|
1182
1182
|
};
|
|
1183
1183
|
});
|
|
1184
1184
|
|
|
1185
|
-
// ../../node_modules/.bun/undici@6.
|
|
1185
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/core/diagnostics.js
|
|
1186
1186
|
var require_diagnostics = __commonJS((exports, module) => {
|
|
1187
1187
|
var diagnosticsChannel = __require("node:diagnostics_channel");
|
|
1188
1188
|
var util = __require("node:util");
|
|
@@ -1309,7 +1309,7 @@ var require_diagnostics = __commonJS((exports, module) => {
|
|
|
1309
1309
|
};
|
|
1310
1310
|
});
|
|
1311
1311
|
|
|
1312
|
-
// ../../node_modules/.bun/undici@6.
|
|
1312
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/core/request.js
|
|
1313
1313
|
var require_request = __commonJS((exports, module) => {
|
|
1314
1314
|
var {
|
|
1315
1315
|
InvalidArgumentError,
|
|
@@ -1640,7 +1640,7 @@ var require_request = __commonJS((exports, module) => {
|
|
|
1640
1640
|
module.exports = Request;
|
|
1641
1641
|
});
|
|
1642
1642
|
|
|
1643
|
-
// ../../node_modules/.bun/undici@6.
|
|
1643
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/dispatcher/dispatcher.js
|
|
1644
1644
|
var require_dispatcher = __commonJS((exports, module) => {
|
|
1645
1645
|
var EventEmitter = __require("node:events");
|
|
1646
1646
|
|
|
@@ -1694,7 +1694,7 @@ var require_dispatcher = __commonJS((exports, module) => {
|
|
|
1694
1694
|
module.exports = Dispatcher;
|
|
1695
1695
|
});
|
|
1696
1696
|
|
|
1697
|
-
// ../../node_modules/.bun/undici@6.
|
|
1697
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/dispatcher/dispatcher-base.js
|
|
1698
1698
|
var require_dispatcher_base = __commonJS((exports, module) => {
|
|
1699
1699
|
var Dispatcher = require_dispatcher();
|
|
1700
1700
|
var {
|
|
@@ -1719,6 +1719,7 @@ var require_dispatcher_base = __commonJS((exports, module) => {
|
|
|
1719
1719
|
}
|
|
1720
1720
|
get webSocketOptions() {
|
|
1721
1721
|
return {
|
|
1722
|
+
maxFragments: this[kWebSocketOptions].maxFragments ?? 131072,
|
|
1722
1723
|
maxPayloadSize: this[kWebSocketOptions].maxPayloadSize ?? 128 * 1024 * 1024
|
|
1723
1724
|
};
|
|
1724
1725
|
}
|
|
@@ -1857,7 +1858,7 @@ var require_dispatcher_base = __commonJS((exports, module) => {
|
|
|
1857
1858
|
module.exports = DispatcherBase;
|
|
1858
1859
|
});
|
|
1859
1860
|
|
|
1860
|
-
// ../../node_modules/.bun/undici@6.
|
|
1861
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/util/timers.js
|
|
1861
1862
|
var require_timers = __commonJS((exports, module) => {
|
|
1862
1863
|
var fastNow = 0;
|
|
1863
1864
|
var RESOLUTION_MS = 1000;
|
|
@@ -1971,7 +1972,7 @@ var require_timers = __commonJS((exports, module) => {
|
|
|
1971
1972
|
};
|
|
1972
1973
|
});
|
|
1973
1974
|
|
|
1974
|
-
// ../../node_modules/.bun/undici@6.
|
|
1975
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/core/connect.js
|
|
1975
1976
|
var require_connect = __commonJS((exports, module) => {
|
|
1976
1977
|
var net = __require("node:net");
|
|
1977
1978
|
var assert2 = __require("node:assert");
|
|
@@ -2143,7 +2144,7 @@ var require_connect = __commonJS((exports, module) => {
|
|
|
2143
2144
|
module.exports = buildConnector;
|
|
2144
2145
|
});
|
|
2145
2146
|
|
|
2146
|
-
// ../../node_modules/.bun/undici@6.
|
|
2147
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/llhttp/utils.js
|
|
2147
2148
|
var require_utils = __commonJS((exports) => {
|
|
2148
2149
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
2149
2150
|
exports.enumToMap = undefined;
|
|
@@ -2160,7 +2161,7 @@ var require_utils = __commonJS((exports) => {
|
|
|
2160
2161
|
exports.enumToMap = enumToMap;
|
|
2161
2162
|
});
|
|
2162
2163
|
|
|
2163
|
-
// ../../node_modules/.bun/undici@6.
|
|
2164
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/llhttp/constants.js
|
|
2164
2165
|
var require_constants2 = __commonJS((exports) => {
|
|
2165
2166
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
2166
2167
|
exports.SPECIAL_HEADERS = exports.HEADER_STATE = exports.MINOR = exports.MAJOR = exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS = exports.TOKEN = exports.STRICT_TOKEN = exports.HEX = exports.URL_CHAR = exports.STRICT_URL_CHAR = exports.USERINFO_CHARS = exports.MARK = exports.ALPHANUM = exports.NUM = exports.HEX_MAP = exports.NUM_MAP = exports.ALPHA = exports.FINISH = exports.H_METHOD_MAP = exports.METHOD_MAP = exports.METHODS_RTSP = exports.METHODS_ICE = exports.METHODS_HTTP = exports.METHODS = exports.LENIENT_FLAGS = exports.FLAGS = exports.TYPE = exports.ERROR = undefined;
|
|
@@ -2476,19 +2477,19 @@ var require_constants2 = __commonJS((exports) => {
|
|
|
2476
2477
|
};
|
|
2477
2478
|
});
|
|
2478
2479
|
|
|
2479
|
-
// ../../node_modules/.bun/undici@6.
|
|
2480
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/llhttp/llhttp-wasm.js
|
|
2480
2481
|
var require_llhttp_wasm = __commonJS((exports, module) => {
|
|
2481
2482
|
var { Buffer: Buffer3 } = __require("node:buffer");
|
|
2482
2483
|
module.exports = Buffer3.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADDsYBAAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHyAhIyUmKCorLC8wMTIzNDU2Nzk6Ozw9lANAQkRFRklLTk9QUVJTVFVWWFpbXF1eX2BhYmNkZWZnaGpsb3Bxc3V2eHl6e3x/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBswG0AbUBtgG3AbgBuQG6AbsBvAG9Ab4BvwHAAcEBwgHDAcQBxQHGAccByAHJAcsBzAHNAc4BzwGKA4kDiAOHA4QDgwOAA/sC+gL5AvgC9wL0AvMC8gLLAsECsALZAQsgASAERw3wAkHdASEDDLMDCyABIARHDcgBQcMBIQMMsgMLIAEgBEcNe0H3ACEDDLEDCyABIARHDXBB7wAhAwywAwsgASAERw1pQeoAIQMMrwMLIAEgBEcNZUHoACEDDK4DCyABIARHDWJB5gAhAwytAwsgASAERw0aQRghAwysAwsgASAERw0VQRIhAwyrAwsgASAERw1CQcUAIQMMqgMLIAEgBEcNNEE/IQMMqQMLIAEgBEcNMkE8IQMMqAMLIAEgBEcNK0ExIQMMpwMLIAItAC5BAUYNnwMMwQILQQAhAAJAAkACQCACLQAqRQ0AIAItACtFDQAgAi8BMCIDQQJxRQ0BDAILIAIvATAiA0EBcUUNAQtBASEAIAItAChBAUYNACACLwEyIgVB5ABrQeQASQ0AIAVBzAFGDQAgBUGwAkYNACADQcAAcQ0AQQAhACADQYgEcUGABEYNACADQShxQQBHIQALIAJBADsBMCACQQA6AC8gAEUN3wIgAkIANwMgDOACC0EAIQACQCACKAI4IgNFDQAgAygCLCIDRQ0AIAIgAxEAACEACyAARQ3MASAAQRVHDd0CIAJBBDYCHCACIAE2AhQgAkGwGDYCECACQRU2AgxBACEDDKQDCyABIARGBEBBBiEDDKQDCyABQQFqIQFBACEAAkAgAigCOCIDRQ0AIAMoAlQiA0UNACACIAMRAAAhAAsgAA3ZAgwcCyACQgA3AyBBEiEDDIkDCyABIARHDRZBHSEDDKEDCyABIARHBEAgAUEBaiEBQRAhAwyIAwtBByEDDKADCyACIAIpAyAiCiAEIAFrrSILfSIMQgAgCiAMWhs3AyAgCiALWA3UAkEIIQMMnwMLIAEgBEcEQCACQQk2AgggAiABNgIEQRQhAwyGAwtBCSEDDJ4DCyACKQMgQgBSDccBIAIgAi8BMEGAAXI7ATAMQgsgASAERw0/QdAAIQMMnAMLIAEgBEYEQEELIQMMnAMLIAFBAWohAUEAIQACQCACKAI4IgNFDQAgAygCUCIDRQ0AIAIgAxEAACEACyAADc8CDMYBC0EAIQACQCACKAI4IgNFDQAgAygCSCIDRQ0AIAIgAxEAACEACyAARQ3GASAAQRVHDc0CIAJBCzYCHCACIAE2AhQgAkGCGTYCECACQRU2AgxBACEDDJoDC0EAIQACQCACKAI4IgNFDQAgAygCSCIDRQ0AIAIgAxEAACEACyAARQ0MIABBFUcNygIgAkEaNgIcIAIgATYCFCACQYIZNgIQIAJBFTYCDEEAIQMMmQMLQQAhAAJAIAIoAjgiA0UNACADKAJMIgNFDQAgAiADEQAAIQALIABFDcQBIABBFUcNxwIgAkELNgIcIAIgATYCFCACQZEXNgIQIAJBFTYCDEEAIQMMmAMLIAEgBEYEQEEPIQMMmAMLIAEtAAAiAEE7Rg0HIABBDUcNxAIgAUEBaiEBDMMBC0EAIQACQCACKAI4IgNFDQAgAygCTCIDRQ0AIAIgAxEAACEACyAARQ3DASAAQRVHDcICIAJBDzYCHCACIAE2AhQgAkGRFzYCECACQRU2AgxBACEDDJYDCwNAIAEtAABB8DVqLQAAIgBBAUcEQCAAQQJHDcECIAIoAgQhAEEAIQMgAkEANgIEIAIgACABQQFqIgEQLSIADcICDMUBCyAEIAFBAWoiAUcNAAtBEiEDDJUDC0EAIQACQCACKAI4IgNFDQAgAygCTCIDRQ0AIAIgAxEAACEACyAARQ3FASAAQRVHDb0CIAJBGzYCHCACIAE2AhQgAkGRFzYCECACQRU2AgxBACEDDJQDCyABIARGBEBBFiEDDJQDCyACQQo2AgggAiABNgIEQQAhAAJAIAIoAjgiA0UNACADKAJIIgNFDQAgAiADEQAAIQALIABFDcIBIABBFUcNuQIgAkEVNgIcIAIgATYCFCACQYIZNgIQIAJBFTYCDEEAIQMMkwMLIAEgBEcEQANAIAEtAABB8DdqLQAAIgBBAkcEQAJAIABBAWsOBMQCvQIAvgK9AgsgAUEBaiEBQQghAwz8AgsgBCABQQFqIgFHDQALQRUhAwyTAwtBFSEDDJIDCwNAIAEtAABB8DlqLQAAIgBBAkcEQCAAQQFrDgTFArcCwwK4ArcCCyAEIAFBAWoiAUcNAAtBGCEDDJEDCyABIARHBEAgAkELNgIIIAIgATYCBEEHIQMM+AILQRkhAwyQAwsgAUEBaiEBDAILIAEgBEYEQEEaIQMMjwMLAkAgAS0AAEENaw4UtQG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwG/Ab8BvwEAvwELQQAhAyACQQA2AhwgAkGvCzYCECACQQI2AgwgAiABQQFqNgIUDI4DCyABIARGBEBBGyEDDI4DCyABLQAAIgBBO0cEQCAAQQ1HDbECIAFBAWohAQy6AQsgAUEBaiEBC0EiIQMM8wILIAEgBEYEQEEcIQMMjAMLQgAhCgJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAS0AAEEwaw43wQLAAgABAgMEBQYH0AHQAdAB0AHQAdAB0AEICQoLDA3QAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdABDg8QERIT0AELQgIhCgzAAgtCAyEKDL8CC0IEIQoMvgILQgUhCgy9AgtCBiEKDLwCC0IHIQoMuwILQgghCgy6AgtCCSEKDLkCC0IKIQoMuAILQgshCgy3AgtCDCEKDLYCC0INIQoMtQILQg4hCgy0AgtCDyEKDLMCC0IKIQoMsgILQgshCgyxAgtCDCEKDLACC0INIQoMrwILQg4hCgyuAgtCDyEKDK0CC0IAIQoCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEtAABBMGsON8ACvwIAAQIDBAUGB74CvgK+Ar4CvgK+Ar4CCAkKCwwNvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ar4CvgK+Ag4PEBESE74CC0ICIQoMvwILQgMhCgy+AgtCBCEKDL0CC0IFIQoMvAILQgYhCgy7AgtCByEKDLoCC0IIIQoMuQILQgkhCgy4AgtCCiEKDLcCC0ILIQoMtgILQgwhCgy1AgtCDSEKDLQCC0IOIQoMswILQg8hCgyyAgtCCiEKDLECC0ILIQoMsAILQgwhCgyvAgtCDSEKDK4CC0IOIQoMrQILQg8hCgysAgsgAiACKQMgIgogBCABa60iC30iDEIAIAogDFobNwMgIAogC1gNpwJBHyEDDIkDCyABIARHBEAgAkEJNgIIIAIgATYCBEElIQMM8AILQSAhAwyIAwtBASEFIAIvATAiA0EIcUUEQCACKQMgQgBSIQULAkAgAi0ALgRAQQEhACACLQApQQVGDQEgA0HAAHFFIAVxRQ0BC0EAIQAgA0HAAHENAEECIQAgA0EIcQ0AIANBgARxBEACQCACLQAoQQFHDQAgAi0ALUEKcQ0AQQUhAAwCC0EEIQAMAQsgA0EgcUUEQAJAIAItAChBAUYNACACLwEyIgBB5ABrQeQASQ0AIABBzAFGDQAgAEGwAkYNAEEEIQAgA0EocUUNAiADQYgEcUGABEYNAgtBACEADAELQQBBAyACKQMgUBshAAsgAEEBaw4FvgIAsAEBpAKhAgtBESEDDO0CCyACQQE6AC8MhAMLIAEgBEcNnQJBJCEDDIQDCyABIARHDRxBxgAhAwyDAwtBACEAAkAgAigCOCIDRQ0AIAMoAkQiA0UNACACIAMRAAAhAAsgAEUNJyAAQRVHDZgCIAJB0AA2AhwgAiABNgIUIAJBkRg2AhAgAkEVNgIMQQAhAwyCAwsgASAERgRAQSghAwyCAwtBACEDIAJBADYCBCACQQw2AgggAiABIAEQKiIARQ2UAiACQSc2AhwgAiABNgIUIAIgADYCDAyBAwsgASAERgRAQSkhAwyBAwsgAS0AACIAQSBGDRMgAEEJRw2VAiABQQFqIQEMFAsgASAERwRAIAFBAWohAQwWC0EqIQMM/wILIAEgBEYEQEErIQMM/wILIAEtAAAiAEEJRyAAQSBHcQ2QAiACLQAsQQhHDd0CIAJBADoALAzdAgsgASAERgRAQSwhAwz+AgsgAS0AAEEKRw2OAiABQQFqIQEMsAELIAEgBEcNigJBLyEDDPwCCwNAIAEtAAAiAEEgRwRAIABBCmsOBIQCiAKIAoQChgILIAQgAUEBaiIBRw0AC0ExIQMM+wILQTIhAyABIARGDfoCIAIoAgAiACAEIAFraiEHIAEgAGtBA2ohBgJAA0AgAEHwO2otAAAgAS0AACIFQSByIAUgBUHBAGtB/wFxQRpJG0H/AXFHDQEgAEEDRgRAQQYhAQziAgsgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAc2AgAM+wILIAJBADYCAAyGAgtBMyEDIAQgASIARg35AiAEIAFrIAIoAgAiAWohByAAIAFrQQhqIQYCQANAIAFB9DtqLQAAIAAtAAAiBUEgciAFIAVBwQBrQf8BcUEaSRtB/wFxRw0BIAFBCEYEQEEFIQEM4QILIAFBAWohASAEIABBAWoiAEcNAAsgAiAHNgIADPoCCyACQQA2AgAgACEBDIUCC0E0IQMgBCABIgBGDfgCIAQgAWsgAigCACIBaiEHIAAgAWtBBWohBgJAA0AgAUHQwgBqLQAAIAAtAAAiBUEgciAFIAVBwQBrQf8BcUEaSRtB/wFxRw0BIAFBBUYEQEEHIQEM4AILIAFBAWohASAEIABBAWoiAEcNAAsgAiAHNgIADPkCCyACQQA2AgAgACEBDIQCCyABIARHBEADQCABLQAAQYA+ai0AACIAQQFHBEAgAEECRg0JDIECCyAEIAFBAWoiAUcNAAtBMCEDDPgCC0EwIQMM9wILIAEgBEcEQANAIAEtAAAiAEEgRwRAIABBCmsOBP8B/gH+Af8B/gELIAQgAUEBaiIBRw0AC0E4IQMM9wILQTghAwz2AgsDQCABLQAAIgBBIEcgAEEJR3EN9gEgBCABQQFqIgFHDQALQTwhAwz1AgsDQCABLQAAIgBBIEcEQAJAIABBCmsOBPkBBAT5AQALIABBLEYN9QEMAwsgBCABQQFqIgFHDQALQT8hAwz0AgtBwAAhAyABIARGDfMCIAIoAgAiACAEIAFraiEFIAEgAGtBBmohBgJAA0AgAEGAQGstAAAgAS0AAEEgckcNASAAQQZGDdsCIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADPQCCyACQQA2AgALQTYhAwzZAgsgASAERgRAQcEAIQMM8gILIAJBDDYCCCACIAE2AgQgAi0ALEEBaw4E+wHuAewB6wHUAgsgAUEBaiEBDPoBCyABIARHBEADQAJAIAEtAAAiAEEgciAAIABBwQBrQf8BcUEaSRtB/wFxIgBBCUYNACAAQSBGDQACQAJAAkACQCAAQeMAaw4TAAMDAwMDAwMBAwMDAwMDAwMDAgMLIAFBAWohAUExIQMM3AILIAFBAWohAUEyIQMM2wILIAFBAWohAUEzIQMM2gILDP4BCyAEIAFBAWoiAUcNAAtBNSEDDPACC0E1IQMM7wILIAEgBEcEQANAIAEtAABBgDxqLQAAQQFHDfcBIAQgAUEBaiIBRw0AC0E9IQMM7wILQT0hAwzuAgtBACEAAkAgAigCOCIDRQ0AIAMoAkAiA0UNACACIAMRAAAhAAsgAEUNASAAQRVHDeYBIAJBwgA2AhwgAiABNgIUIAJB4xg2AhAgAkEVNgIMQQAhAwztAgsgAUEBaiEBC0E8IQMM0gILIAEgBEYEQEHCACEDDOsCCwJAA0ACQCABLQAAQQlrDhgAAswCzALRAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAswCzALMAgDMAgsgBCABQQFqIgFHDQALQcIAIQMM6wILIAFBAWohASACLQAtQQFxRQ3+AQtBLCEDDNACCyABIARHDd4BQcQAIQMM6AILA0AgAS0AAEGQwABqLQAAQQFHDZwBIAQgAUEBaiIBRw0AC0HFACEDDOcCCyABLQAAIgBBIEYN/gEgAEE6Rw3AAiACKAIEIQBBACEDIAJBADYCBCACIAAgARApIgAN3gEM3QELQccAIQMgBCABIgBGDeUCIAQgAWsgAigCACIBaiEHIAAgAWtBBWohBgNAIAFBkMIAai0AACAALQAAIgVBIHIgBSAFQcEAa0H/AXFBGkkbQf8BcUcNvwIgAUEFRg3CAiABQQFqIQEgBCAAQQFqIgBHDQALIAIgBzYCAAzlAgtByAAhAyAEIAEiAEYN5AIgBCABayACKAIAIgFqIQcgACABa0EJaiEGA0AgAUGWwgBqLQAAIAAtAAAiBUEgciAFIAVBwQBrQf8BcUEaSRtB/wFxRw2+AkECIAFBCUYNwgIaIAFBAWohASAEIABBAWoiAEcNAAsgAiAHNgIADOQCCyABIARGBEBByQAhAwzkAgsCQAJAIAEtAAAiAEEgciAAIABBwQBrQf8BcUEaSRtB/wFxQe4Aaw4HAL8CvwK/Ar8CvwIBvwILIAFBAWohAUE+IQMMywILIAFBAWohAUE/IQMMygILQcoAIQMgBCABIgBGDeICIAQgAWsgAigCACIBaiEGIAAgAWtBAWohBwNAIAFBoMIAai0AACAALQAAIgVBIHIgBSAFQcEAa0H/AXFBGkkbQf8BcUcNvAIgAUEBRg2+AiABQQFqIQEgBCAAQQFqIgBHDQALIAIgBjYCAAziAgtBywAhAyAEIAEiAEYN4QIgBCABayACKAIAIgFqIQcgACABa0EOaiEGA0AgAUGiwgBqLQAAIAAtAAAiBUEgciAFIAVBwQBrQf8BcUEaSRtB/wFxRw27AiABQQ5GDb4CIAFBAWohASAEIABBAWoiAEcNAAsgAiAHNgIADOECC0HMACEDIAQgASIARg3gAiAEIAFrIAIoAgAiAWohByAAIAFrQQ9qIQYDQCABQcDCAGotAAAgAC0AACIFQSByIAUgBUHBAGtB/wFxQRpJG0H/AXFHDboCQQMgAUEPRg2+AhogAUEBaiEBIAQgAEEBaiIARw0ACyACIAc2AgAM4AILQc0AIQMgBCABIgBGDd8CIAQgAWsgAigCACIBaiEHIAAgAWtBBWohBgNAIAFB0MIAai0AACAALQAAIgVBIHIgBSAFQcEAa0H/AXFBGkkbQf8BcUcNuQJBBCABQQVGDb0CGiABQQFqIQEgBCAAQQFqIgBHDQALIAIgBzYCAAzfAgsgASAERgRAQc4AIQMM3wILAkACQAJAAkAgAS0AACIAQSByIAAgAEHBAGtB/wFxQRpJG0H/AXFB4wBrDhMAvAK8ArwCvAK8ArwCvAK8ArwCvAK8ArwCAbwCvAK8AgIDvAILIAFBAWohAUHBACEDDMgCCyABQQFqIQFBwgAhAwzHAgsgAUEBaiEBQcMAIQMMxgILIAFBAWohAUHEACEDDMUCCyABIARHBEAgAkENNgIIIAIgATYCBEHFACEDDMUCC0HPACEDDN0CCwJAAkAgAS0AAEEKaw4EAZABkAEAkAELIAFBAWohAQtBKCEDDMMCCyABIARGBEBB0QAhAwzcAgsgAS0AAEEgRw0AIAFBAWohASACLQAtQQFxRQ3QAQtBFyEDDMECCyABIARHDcsBQdIAIQMM2QILQdMAIQMgASAERg3YAiACKAIAIgAgBCABa2ohBiABIABrQQFqIQUDQCABLQAAIABB1sIAai0AAEcNxwEgAEEBRg3KASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBjYCAAzYAgsgASAERgRAQdUAIQMM2AILIAEtAABBCkcNwgEgAUEBaiEBDMoBCyABIARGBEBB1gAhAwzXAgsCQAJAIAEtAABBCmsOBADDAcMBAcMBCyABQQFqIQEMygELIAFBAWohAUHKACEDDL0CC0EAIQACQCACKAI4IgNFDQAgAygCPCIDRQ0AIAIgAxEAACEACyAADb8BQc0AIQMMvAILIAItAClBIkYNzwIMiQELIAQgASIFRgRAQdsAIQMM1AILQQAhAEEBIQFBASEGQQAhAwJAAn8CQAJAAkACQAJAAkACQCAFLQAAQTBrDgrFAcQBAAECAwQFBgjDAQtBAgwGC0EDDAULQQQMBAtBBQwDC0EGDAILQQcMAQtBCAshA0EAIQFBACEGDL0BC0EJIQNBASEAQQAhAUEAIQYMvAELIAEgBEYEQEHdACEDDNMCCyABLQAAQS5HDbgBIAFBAWohAQyIAQsgASAERw22AUHfACEDDNECCyABIARHBEAgAkEONgIIIAIgATYCBEHQACEDDLgCC0HgACEDDNACC0HhACEDIAEgBEYNzwIgAigCACIAIAQgAWtqIQUgASAAa0EDaiEGA0AgAS0AACAAQeLCAGotAABHDbEBIABBA0YNswEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMzwILQeIAIQMgASAERg3OAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYDQCABLQAAIABB5sIAai0AAEcNsAEgAEECRg2vASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAzOAgtB4wAhAyABIARGDc0CIAIoAgAiACAEIAFraiEFIAEgAGtBA2ohBgNAIAEtAAAgAEHpwgBqLQAARw2vASAAQQNGDa0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADM0CCyABIARGBEBB5QAhAwzNAgsgAUEBaiEBQQAhAAJAIAIoAjgiA0UNACADKAIwIgNFDQAgAiADEQAAIQALIAANqgFB1gAhAwyzAgsgASAERwRAA0AgAS0AACIAQSBHBEACQAJAAkAgAEHIAGsOCwABswGzAbMBswGzAbMBswGzAQKzAQsgAUEBaiEBQdIAIQMMtwILIAFBAWohAUHTACEDDLYCCyABQQFqIQFB1AAhAwy1AgsgBCABQQFqIgFHDQALQeQAIQMMzAILQeQAIQMMywILA0AgAS0AAEHwwgBqLQAAIgBBAUcEQCAAQQJrDgOnAaYBpQGkAQsgBCABQQFqIgFHDQALQeYAIQMMygILIAFBAWogASAERw0CGkHnACEDDMkCCwNAIAEtAABB8MQAai0AACIAQQFHBEACQCAAQQJrDgSiAaEBoAEAnwELQdcAIQMMsQILIAQgAUEBaiIBRw0AC0HoACEDDMgCCyABIARGBEBB6QAhAwzIAgsCQCABLQAAIgBBCmsOGrcBmwGbAbQBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBmwGbAZsBpAGbAZsBAJkBCyABQQFqCyEBQQYhAwytAgsDQCABLQAAQfDGAGotAABBAUcNfSAEIAFBAWoiAUcNAAtB6gAhAwzFAgsgAUEBaiABIARHDQIaQesAIQMMxAILIAEgBEYEQEHsACEDDMQCCyABQQFqDAELIAEgBEYEQEHtACEDDMMCCyABQQFqCyEBQQQhAwyoAgsgASAERgRAQe4AIQMMwQILAkACQAJAIAEtAABB8MgAai0AAEEBaw4HkAGPAY4BAHwBAo0BCyABQQFqIQEMCwsgAUEBagyTAQtBACEDIAJBADYCHCACQZsSNgIQIAJBBzYCDCACIAFBAWo2AhQMwAILAkADQCABLQAAQfDIAGotAAAiAEEERwRAAkACQCAAQQFrDgeUAZMBkgGNAQAEAY0BC0HaACEDDKoCCyABQQFqIQFB3AAhAwypAgsgBCABQQFqIgFHDQALQe8AIQMMwAILIAFBAWoMkQELIAQgASIARgRAQfAAIQMMvwILIAAtAABBL0cNASAAQQFqIQEMBwsgBCABIgBGBEBB8QAhAwy+AgsgAC0AACIBQS9GBEAgAEEBaiEBQd0AIQMMpQILIAFBCmsiA0EWSw0AIAAhAUEBIAN0QYmAgAJxDfkBC0EAIQMgAkEANgIcIAIgADYCFCACQYwcNgIQIAJBBzYCDAy8AgsgASAERwRAIAFBAWohAUHeACEDDKMCC0HyACEDDLsCCyABIARGBEBB9AAhAwy7AgsCQCABLQAAQfDMAGotAABBAWsOA/cBcwCCAQtB4QAhAwyhAgsgASAERwRAA0AgAS0AAEHwygBqLQAAIgBBA0cEQAJAIABBAWsOAvkBAIUBC0HfACEDDKMCCyAEIAFBAWoiAUcNAAtB8wAhAwy6AgtB8wAhAwy5AgsgASAERwRAIAJBDzYCCCACIAE2AgRB4AAhAwygAgtB9QAhAwy4AgsgASAERgRAQfYAIQMMuAILIAJBDzYCCCACIAE2AgQLQQMhAwydAgsDQCABLQAAQSBHDY4CIAQgAUEBaiIBRw0AC0H3ACEDDLUCCyABIARGBEBB+AAhAwy1AgsgAS0AAEEgRw16IAFBAWohAQxbC0EAIQACQCACKAI4IgNFDQAgAygCOCIDRQ0AIAIgAxEAACEACyAADXgMgAILIAEgBEYEQEH6ACEDDLMCCyABLQAAQcwARw10IAFBAWohAUETDHYLQfsAIQMgASAERg2xAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYDQCABLQAAIABB8M4Aai0AAEcNcyAAQQVGDXUgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMsQILIAEgBEYEQEH8ACEDDLECCwJAAkAgAS0AAEHDAGsODAB0dHR0dHR0dHR0AXQLIAFBAWohAUHmACEDDJgCCyABQQFqIQFB5wAhAwyXAgtB/QAhAyABIARGDa8CIAIoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQe3PAGotAABHDXIgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADLACCyACQQA2AgAgBkEBaiEBQRAMcwtB/gAhAyABIARGDa4CIAIoAgAiACAEIAFraiEFIAEgAGtBBWohBgJAA0AgAS0AACAAQfbOAGotAABHDXEgAEEFRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADK8CCyACQQA2AgAgBkEBaiEBQRYMcgtB/wAhAyABIARGDa0CIAIoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQfzOAGotAABHDXAgAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADK4CCyACQQA2AgAgBkEBaiEBQQUMcQsgASAERgRAQYABIQMMrQILIAEtAABB2QBHDW4gAUEBaiEBQQgMcAsgASAERgRAQYEBIQMMrAILAkACQCABLQAAQc4Aaw4DAG8BbwsgAUEBaiEBQesAIQMMkwILIAFBAWohAUHsACEDDJICCyABIARGBEBBggEhAwyrAgsCQAJAIAEtAABByABrDggAbm5ubm5uAW4LIAFBAWohAUHqACEDDJICCyABQQFqIQFB7QAhAwyRAgtBgwEhAyABIARGDakCIAIoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQYDPAGotAABHDWwgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADKoCCyACQQA2AgAgBkEBaiEBQQAMbQtBhAEhAyABIARGDagCIAIoAgAiACAEIAFraiEFIAEgAGtBBGohBgJAA0AgAS0AACAAQYPPAGotAABHDWsgAEEERg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADKkCCyACQQA2AgAgBkEBaiEBQSMMbAsgASAERgRAQYUBIQMMqAILAkACQCABLQAAQcwAaw4IAGtra2trawFrCyABQQFqIQFB7wAhAwyPAgsgAUEBaiEBQfAAIQMMjgILIAEgBEYEQEGGASEDDKcCCyABLQAAQcUARw1oIAFBAWohAQxgC0GHASEDIAEgBEYNpQIgAigCACIAIAQgAWtqIQUgASAAa0EDaiEGAkADQCABLQAAIABBiM8Aai0AAEcNaCAAQQNGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMpgILIAJBADYCACAGQQFqIQFBLQxpC0GIASEDIAEgBEYNpAIgAigCACIAIAQgAWtqIQUgASAAa0EIaiEGAkADQCABLQAAIABB0M8Aai0AAEcNZyAAQQhGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMpQILIAJBADYCACAGQQFqIQFBKQxoCyABIARGBEBBiQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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CABB3AgLii1JbnZhbGlkIGNoYXIgaW4gdXJsIHF1ZXJ5AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fYm9keQBDb250ZW50LUxlbmd0aCBvdmVyZmxvdwBDaHVuayBzaXplIG92ZXJmbG93AFJlc3BvbnNlIG92ZXJmbG93AEludmFsaWQgbWV0aG9kIGZvciBIVFRQL3gueCByZXF1ZXN0AEludmFsaWQgbWV0aG9kIGZvciBSVFNQL3gueCByZXF1ZXN0AEV4cGVjdGVkIFNPVVJDRSBtZXRob2QgZm9yIElDRS94LnggcmVxdWVzdABJbnZhbGlkIGNoYXIgaW4gdXJsIGZyYWdtZW50IHN0YXJ0AEV4cGVjdGVkIGRvdABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3N0YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zAFVzZXIgY2FsbGJhY2sgZXJyb3IAYG9uX3Jlc2V0YCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfaGVhZGVyYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9iZWdpbmAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3N0YXR1c19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3ZlcnNpb25fY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl91cmxfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXRob2RfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfZmllbGRfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fbmFtZWAgY2FsbGJhY2sgZXJyb3IAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzZXJ2ZXIASW52YWxpZCBoZWFkZXIgdmFsdWUgY2hhcgBJbnZhbGlkIGhlYWRlciBmaWVsZCBjaGFyAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdmVyc2lvbgBJbnZhbGlkIG1pbm9yIHZlcnNpb24ASW52YWxpZCBtYWpvciB2ZXJzaW9uAEV4cGVjdGVkIHNwYWNlIGFmdGVyIHZlcnNpb24ARXhwZWN0ZWQgQ1JMRiBhZnRlciB2ZXJzaW9uAEludmFsaWQgSFRUUCB2ZXJzaW9uAEludmFsaWQgaGVhZGVyIHRva2VuAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdXJsAEludmFsaWQgY2hhcmFjdGVycyBpbiB1cmwAVW5leHBlY3RlZCBzdGFydCBjaGFyIGluIHVybABEb3VibGUgQCBpbiB1cmwARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgARHVwbGljYXRlIENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhciBpbiB1cmwgcGF0aABDb250ZW50LUxlbmd0aCBjYW4ndCBiZSBwcmVzZW50IHdpdGggVHJhbnNmZXItRW5jb2RpbmcASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgc2l6ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl92YWx1ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlZCB2YWx1ZQBQYXVzZWQgYnkgb25faGVhZGVyc19jb21wbGV0ZQBJbnZhbGlkIEVPRiBzdGF0ZQBvbl9yZXNldCBwYXVzZQBvbl9jaHVua19oZWFkZXIgcGF1c2UAb25fbWVzc2FnZV9iZWdpbiBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fdmFsdWUgcGF1c2UAb25fc3RhdHVzX2NvbXBsZXRlIHBhdXNlAG9uX3ZlcnNpb25fY29tcGxldGUgcGF1c2UAb25fdXJsX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXNzYWdlX2NvbXBsZXRlIHBhdXNlAG9uX21ldGhvZF9jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfZmllbGRfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUgcGF1c2UAVW5leHBlY3RlZCBzcGFjZSBhZnRlciBzdGFydCBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAFBhdXNlIG9uIENPTk5FQ1QvVXBncmFkZQBQYXVzZSBvbiBQUkkvVXBncmFkZQBFeHBlY3RlZCBIVFRQLzIgQ29ubmVjdGlvbiBQcmVmYWNlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fbWV0aG9kAEV4cGVjdGVkIHNwYWNlIGFmdGVyIG1ldGhvZABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl9maWVsZABQYXVzZWQASW52YWxpZCB3b3JkIGVuY291bnRlcmVkAEludmFsaWQgbWV0aG9kIGVuY291bnRlcmVkAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2NoZW1hAFJlcXVlc3QgaGFzIGludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYABTV0lUQ0hfUFJPWFkAVVNFX1BST1hZAE1LQUNUSVZJVFkAVU5QUk9DRVNTQUJMRV9FTlRJVFkAQ09QWQBNT1ZFRF9QRVJNQU5FTlRMWQBUT09fRUFSTFkATk9USUZZAEZBSUxFRF9ERVBFTkRFTkNZAEJBRF9HQVRFV0FZAFBMQVkAUFVUAENIRUNLT1VUAEdBVEVXQVlfVElNRU9VVABSRVFVRVNUX1RJTUVPVVQATkVUV09SS19DT05ORUNUX1RJTUVPVVQAQ09OTkVDVElPTl9USU1FT1VUAExPR0lOX1RJTUVPVVQATkVUV09SS19SRUFEX1RJTUVPVVQAUE9TVABNSVNESVJFQ1RFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX0xPQURfQkFMQU5DRURfUkVRVUVTVABCQURfUkVRVUVTVABIVFRQX1JFUVVFU1RfU0VOVF9UT19IVFRQU19QT1JUAFJFUE9SVABJTV9BX1RFQVBPVABSRVNFVF9DT05URU5UAE5PX0NPTlRFTlQAUEFSVElBTF9DT05URU5UAEhQRV9JTlZBTElEX0NPTlNUQU5UAEhQRV9DQl9SRVNFVABHRVQASFBFX1NUUklDVABDT05GTElDVABURU1QT1JBUllfUkVESVJFQ1QAUEVSTUFORU5UX1JFRElSRUNUAENPTk5FQ1QATVVMVElfU1RBVFVTAEhQRV9JTlZBTElEX1NUQVRVUwBUT09fTUFOWV9SRVFVRVNUUwBFQVJMWV9ISU5UUwBVTkFWQUlMQUJMRV9GT1JfTEVHQUxfUkVBU09OUwBPUFRJT05TAFNXSVRDSElOR19QUk9UT0NPTFMAVkFSSUFOVF9BTFNPX05FR09USUFURVMATVVMVElQTEVfQ0hPSUNFUwBJTlRFUk5BTF9TRVJWRVJfRVJST1IAV0VCX1NFUlZFUl9VTktOT1dOX0VSUk9SAFJBSUxHVU5fRVJST1IASURFTlRJVFlfUFJPVklERVJfQVVUSEVOVElDQVRJT05fRVJST1IAU1NMX0NFUlRJRklDQVRFX0VSUk9SAElOVkFMSURfWF9GT1JXQVJERURfRk9SAFNFVF9QQVJBTUVURVIAR0VUX1BBUkFNRVRFUgBIUEVfVVNFUgBTRUVfT1RIRVIASFBFX0NCX0NIVU5LX0hFQURFUgBNS0NBTEVOREFSAFNFVFVQAFdFQl9TRVJWRVJfSVNfRE9XTgBURUFSRE9XTgBIUEVfQ0xPU0VEX0NPTk5FQ1RJT04ASEVVUklTVElDX0VYUElSQVRJT04ARElTQ09OTkVDVEVEX09QRVJBVElPTgBOT05fQVVUSE9SSVRBVElWRV9JTkZPUk1BVElPTgBIUEVfSU5WQUxJRF9WRVJTSU9OAEhQRV9DQl9NRVNTQUdFX0JFR0lOAFNJVEVfSVNfRlJPWkVOAEhQRV9JTlZBTElEX0hFQURFUl9UT0tFTgBJTlZBTElEX1RPS0VOAEZPUkJJRERFTgBFTkhBTkNFX1lPVVJfQ0FMTQBIUEVfSU5WQUxJRF9VUkwAQkxPQ0tFRF9CWV9QQVJFTlRBTF9DT05UUk9MAE1LQ09MAEFDTABIUEVfSU5URVJOQUwAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRV9VTk9GRklDSUFMAEhQRV9PSwBVTkxJTksAVU5MT0NLAFBSSQBSRVRSWV9XSVRIAEhQRV9JTlZBTElEX0NPTlRFTlRfTEVOR1RIAEhQRV9VTkVYUEVDVEVEX0NPTlRFTlRfTEVOR1RIAEZMVVNIAFBST1BQQVRDSABNLVNFQVJDSABVUklfVE9PX0xPTkcAUFJPQ0VTU0lORwBNSVNDRUxMQU5FT1VTX1BFUlNJU1RFTlRfV0FSTklORwBNSVNDRUxMQU5FT1VTX1dBUk5JTkcASFBFX0lOVkFMSURfVFJBTlNGRVJfRU5DT0RJTkcARXhwZWN0ZWQgQ1JMRgBIUEVfSU5WQUxJRF9DSFVOS19TSVpFAE1PVkUAQ09OVElOVUUASFBFX0NCX1NUQVRVU19DT01QTEVURQBIUEVfQ0JfSEVBREVSU19DT01QTEVURQBIUEVfQ0JfVkVSU0lPTl9DT01QTEVURQBIUEVfQ0JfVVJMX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8AAF4TAAAmEwAAMBAAAPAXAACdEwAAFRIAADkXAADwEgAAChAAAHUSAACtEgAAghMAAE8UAAB/EAAAoBUAACMUAACJEgAAixQAAE0VAADUEQAAzxQAABAYAADJFgAA3BYAAMERAADgFwAAuxQAAHQUAAB8FQAA5RQAAAgXAAAfEAAAZRUAAKMUAAAoFQAAAhUAAJkVAAAsEAAAixkAAE8PAADUDgAAahAAAM4QAAACFwAAiQ4AAG4TAAAcEwAAZhQAAFYXAADBEwAAzRMAAGwTAABoFwAAZhcAAF8XAAAiEwAAzg8AAGkOAADYDgAAYxYAAMsTAACqDgAAKBcAACYXAADFEwAAXRYAAOgRAABnEwAAZRMAAPIWAABzEwAAHRcAAPkWAADzEQAAzw4AAM4VAAAMEgAAsxEAAKURAABhEAAAMhcAALsTAEH5NQsBAQBBkDYL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB/TcLAQEAQZE4C14CAwICAgICAAACAgACAgACAgICAgICAgICAAQAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEH9OQsBAQBBkToLXgIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAQfA7Cw1sb3NlZWVwLWFsaXZlAEGJPAsBAQBBoDwL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBiT4LAQEAQaA+C+cBAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAEGwwAALXwEBAAEBAQEBAAABAQABAQABAQEBAQEBAQEBAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAEGQwgALIWVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgBBwMIACy1yYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AQfnCAAsFAQIAAQMAQZDDAAvgAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH5xAALBQECAAEDAEGQxQAL4AEEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cYACwQBAAABAEGRxwAL3wEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH6yAALBAEAAAIAQZDJAAtfAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAQfrKAAsEAQAAAQBBkMsACwEBAEGqywALQQIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAEH6zAALBAEAAAEAQZDNAAsBAQBBms0ACwYCAAAAAAIAQbHNAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB8M4AC5YBTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRU9SRElSRUNUT1JUUkNIUEFSQU1FVEVSVVJDRUJTQ1JJQkVBUkRPV05BQ0VJTkROS0NLVUJTQ1JJQkVIVFRQL0FEVFAv", "base64");
|
|
2483
2484
|
});
|
|
2484
2485
|
|
|
2485
|
-
// ../../node_modules/.bun/undici@6.
|
|
2486
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js
|
|
2486
2487
|
var require_llhttp_simd_wasm = __commonJS((exports, module) => {
|
|
2487
2488
|
var { Buffer: Buffer3 } = __require("node:buffer");
|
|
2488
2489
|
module.exports = Buffer3.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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AAADAEGUCAsFBAAAAAUAQaQICwkGAAAABwAAAAgAQdwIC4otSW52YWxpZCBjaGFyIGluIHVybCBxdWVyeQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2JvZHkAQ29udGVudC1MZW5ndGggb3ZlcmZsb3cAQ2h1bmsgc2l6ZSBvdmVyZmxvdwBSZXNwb25zZSBvdmVyZmxvdwBJbnZhbGlkIG1ldGhvZCBmb3IgSFRUUC94LnggcmVxdWVzdABJbnZhbGlkIG1ldGhvZCBmb3IgUlRTUC94LnggcmVxdWVzdABFeHBlY3RlZCBTT1VSQ0UgbWV0aG9kIGZvciBJQ0UveC54IHJlcXVlc3QASW52YWxpZCBjaGFyIGluIHVybCBmcmFnbWVudCBzdGFydABFeHBlY3RlZCBkb3QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9zdGF0dXMASW52YWxpZCByZXNwb25zZSBzdGF0dXMASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucwBVc2VyIGNhbGxiYWNrIGVycm9yAGBvbl9yZXNldGAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2hlYWRlcmAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfYmVnaW5gIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwBB+TULAQEAQZA2C+ABAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQf03CwEBAEGROAteAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgBB/TkLAQEAQZE6C14CAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEHwOwsNbG9zZWVlcC1hbGl2ZQBBiTwLAQEAQaA8C+ABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQYk+CwEBAEGgPgvnAQEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZABBsMAAC18BAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBBkMIACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQcDCAAstcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQoNClNNDQoNClRUUC9DRS9UU1AvAEH5wgALBQECAAEDAEGQwwAL4AEEAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cQACwUBAgABAwBBkMUAC+ABBAEBBQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQfnGAAsEAQAAAQBBkccAC98BAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+sgACwQBAAACAEGQyQALXwMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAEH6ygALBAEAAAEAQZDLAAsBAQBBqssAC0ECAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB+swACwQBAAABAEGQzQALAQEAQZrNAAsGAgAAAAACAEGxzQALOgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQfDOAAuWAU5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==", "base64");
|
|
2489
2490
|
});
|
|
2490
2491
|
|
|
2491
|
-
// ../../node_modules/.bun/undici@6.
|
|
2492
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/fetch/constants.js
|
|
2492
2493
|
var require_constants3 = __commonJS((exports, module) => {
|
|
2493
2494
|
var corsSafeListedMethods = ["GET", "HEAD", "POST"];
|
|
2494
2495
|
var corsSafeListedMethodsSet = new Set(corsSafeListedMethods);
|
|
@@ -2657,7 +2658,7 @@ var require_constants3 = __commonJS((exports, module) => {
|
|
|
2657
2658
|
};
|
|
2658
2659
|
});
|
|
2659
2660
|
|
|
2660
|
-
// ../../node_modules/.bun/undici@6.
|
|
2661
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/fetch/global.js
|
|
2661
2662
|
var require_global = __commonJS((exports, module) => {
|
|
2662
2663
|
var globalOrigin = Symbol.for("undici.globalOrigin.1");
|
|
2663
2664
|
function getGlobalOrigin() {
|
|
@@ -2690,7 +2691,7 @@ var require_global = __commonJS((exports, module) => {
|
|
|
2690
2691
|
};
|
|
2691
2692
|
});
|
|
2692
2693
|
|
|
2693
|
-
// ../../node_modules/.bun/undici@6.
|
|
2694
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/fetch/data-url.js
|
|
2694
2695
|
var require_data_url = __commonJS((exports, module) => {
|
|
2695
2696
|
var assert2 = __require("node:assert");
|
|
2696
2697
|
var encoder = new TextEncoder;
|
|
@@ -3003,7 +3004,7 @@ var require_data_url = __commonJS((exports, module) => {
|
|
|
3003
3004
|
};
|
|
3004
3005
|
});
|
|
3005
3006
|
|
|
3006
|
-
// ../../node_modules/.bun/undici@6.
|
|
3007
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/fetch/webidl.js
|
|
3007
3008
|
var require_webidl = __commonJS((exports, module) => {
|
|
3008
3009
|
var { types, inspect } = __require("node:util");
|
|
3009
3010
|
var { markAsUncloneable } = __require("node:worker_threads");
|
|
@@ -3409,7 +3410,7 @@ var require_webidl = __commonJS((exports, module) => {
|
|
|
3409
3410
|
};
|
|
3410
3411
|
});
|
|
3411
3412
|
|
|
3412
|
-
// ../../node_modules/.bun/undici@6.
|
|
3413
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/fetch/util.js
|
|
3413
3414
|
var require_util2 = __commonJS((exports, module) => {
|
|
3414
3415
|
var { Transform } = __require("node:stream");
|
|
3415
3416
|
var zlib = __require("node:zlib");
|
|
@@ -4221,7 +4222,7 @@ var require_util2 = __commonJS((exports, module) => {
|
|
|
4221
4222
|
};
|
|
4222
4223
|
});
|
|
4223
4224
|
|
|
4224
|
-
// ../../node_modules/.bun/undici@6.
|
|
4225
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/fetch/symbols.js
|
|
4225
4226
|
var require_symbols2 = __commonJS((exports, module) => {
|
|
4226
4227
|
module.exports = {
|
|
4227
4228
|
kUrl: Symbol("url"),
|
|
@@ -4232,7 +4233,7 @@ var require_symbols2 = __commonJS((exports, module) => {
|
|
|
4232
4233
|
};
|
|
4233
4234
|
});
|
|
4234
4235
|
|
|
4235
|
-
// ../../node_modules/.bun/undici@6.
|
|
4236
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/fetch/file.js
|
|
4236
4237
|
var require_file = __commonJS((exports, module) => {
|
|
4237
4238
|
var { Blob: Blob2, File } = __require("node:buffer");
|
|
4238
4239
|
var { kState } = require_symbols2();
|
|
@@ -4293,7 +4294,7 @@ var require_file = __commonJS((exports, module) => {
|
|
|
4293
4294
|
module.exports = { FileLike, isFileLike };
|
|
4294
4295
|
});
|
|
4295
4296
|
|
|
4296
|
-
// ../../node_modules/.bun/undici@6.
|
|
4297
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/fetch/formdata.js
|
|
4297
4298
|
var require_formdata = __commonJS((exports, module) => {
|
|
4298
4299
|
var { isBlobLike, iteratorMixin } = require_util2();
|
|
4299
4300
|
var { kState } = require_symbols2();
|
|
@@ -4433,7 +4434,7 @@ var require_formdata = __commonJS((exports, module) => {
|
|
|
4433
4434
|
module.exports = { FormData: FormData2, makeEntry };
|
|
4434
4435
|
});
|
|
4435
4436
|
|
|
4436
|
-
// ../../node_modules/.bun/undici@6.
|
|
4437
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/fetch/formdata-parser.js
|
|
4437
4438
|
var require_formdata_parser = __commonJS((exports, module) => {
|
|
4438
4439
|
var { isUSVString, bufferToLowerCasedHeaderName } = require_util();
|
|
4439
4440
|
var { utf8DecodeBytes } = require_util2();
|
|
@@ -4661,7 +4662,7 @@ var require_formdata_parser = __commonJS((exports, module) => {
|
|
|
4661
4662
|
};
|
|
4662
4663
|
});
|
|
4663
4664
|
|
|
4664
|
-
// ../../node_modules/.bun/undici@6.
|
|
4665
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/fetch/body.js
|
|
4665
4666
|
var require_body = __commonJS((exports, module) => {
|
|
4666
4667
|
var util = require_util();
|
|
4667
4668
|
var {
|
|
@@ -4968,7 +4969,7 @@ ${normalizeLinefeeds(value)}\r
|
|
|
4968
4969
|
};
|
|
4969
4970
|
});
|
|
4970
4971
|
|
|
4971
|
-
// ../../node_modules/.bun/undici@6.
|
|
4972
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/dispatcher/client-h1.js
|
|
4972
4973
|
var require_client_h1 = __commonJS((exports, module) => {
|
|
4973
4974
|
var assert2 = __require("node:assert");
|
|
4974
4975
|
var util = require_util();
|
|
@@ -5024,6 +5025,9 @@ var require_client_h1 = __commonJS((exports, module) => {
|
|
|
5024
5025
|
var FastBuffer = Buffer[Symbol.species];
|
|
5025
5026
|
var addListener = util.addListener;
|
|
5026
5027
|
var removeAllListeners = util.removeAllListeners;
|
|
5028
|
+
var kIdleSocketValidation = Symbol("kIdleSocketValidation");
|
|
5029
|
+
var kIdleSocketValidationTimeout = Symbol("kIdleSocketValidationTimeout");
|
|
5030
|
+
var kSocketUsed = Symbol("kSocketUsed");
|
|
5027
5031
|
var extractBody;
|
|
5028
5032
|
async function lazyllhttp() {
|
|
5029
5033
|
const llhttpWasmData = process.env.JEST_WORKER_ID ? require_llhttp_wasm() : undefined;
|
|
@@ -5185,24 +5189,55 @@ var require_client_h1 = __commonJS((exports, module) => {
|
|
|
5185
5189
|
currentBufferRef = null;
|
|
5186
5190
|
}
|
|
5187
5191
|
const offset = llhttp.llhttp_get_error_pos(this.ptr) - currentBufferPtr;
|
|
5188
|
-
if (ret
|
|
5189
|
-
|
|
5190
|
-
|
|
5191
|
-
|
|
5192
|
-
|
|
5193
|
-
|
|
5194
|
-
|
|
5195
|
-
|
|
5196
|
-
|
|
5197
|
-
const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0);
|
|
5198
|
-
message = "Response does not match the HTTP/1.1 protocol (" + Buffer.from(llhttp.memory.buffer, ptr, len).toString() + ")";
|
|
5192
|
+
if (ret !== constants.ERROR.OK) {
|
|
5193
|
+
const body = data.subarray(offset);
|
|
5194
|
+
if (ret === constants.ERROR.PAUSED_UPGRADE) {
|
|
5195
|
+
this.onUpgrade(body);
|
|
5196
|
+
} else if (ret === constants.ERROR.PAUSED) {
|
|
5197
|
+
this.paused = true;
|
|
5198
|
+
socket.unshift(body);
|
|
5199
|
+
} else {
|
|
5200
|
+
throw this.createError(ret, body);
|
|
5199
5201
|
}
|
|
5200
|
-
throw new HTTPParserError(message, constants.ERROR[ret], data.slice(offset));
|
|
5201
5202
|
}
|
|
5202
5203
|
} catch (err) {
|
|
5203
5204
|
util.destroy(socket, err);
|
|
5204
5205
|
}
|
|
5205
5206
|
}
|
|
5207
|
+
finish() {
|
|
5208
|
+
assert2(currentParser === null);
|
|
5209
|
+
assert2(this.ptr != null);
|
|
5210
|
+
assert2(!this.paused);
|
|
5211
|
+
const { llhttp } = this;
|
|
5212
|
+
let ret;
|
|
5213
|
+
try {
|
|
5214
|
+
currentParser = this;
|
|
5215
|
+
ret = llhttp.llhttp_finish(this.ptr);
|
|
5216
|
+
} finally {
|
|
5217
|
+
currentParser = null;
|
|
5218
|
+
}
|
|
5219
|
+
if (ret === constants.ERROR.OK) {
|
|
5220
|
+
return null;
|
|
5221
|
+
}
|
|
5222
|
+
if (ret === constants.ERROR.PAUSED || ret === constants.ERROR.PAUSED_UPGRADE) {
|
|
5223
|
+
this.paused = true;
|
|
5224
|
+
return null;
|
|
5225
|
+
}
|
|
5226
|
+
return this.createError(ret, EMPTY_BUF);
|
|
5227
|
+
}
|
|
5228
|
+
createError(ret, data) {
|
|
5229
|
+
const { llhttp, contentLength, bytesRead } = this;
|
|
5230
|
+
if (contentLength && bytesRead !== parseInt(contentLength, 10)) {
|
|
5231
|
+
return new ResponseContentLengthMismatchError;
|
|
5232
|
+
}
|
|
5233
|
+
const ptr = llhttp.llhttp_get_error_reason(this.ptr);
|
|
5234
|
+
let message = "";
|
|
5235
|
+
if (ptr) {
|
|
5236
|
+
const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0);
|
|
5237
|
+
message = "Response does not match the HTTP/1.1 protocol (" + Buffer.from(llhttp.memory.buffer, ptr, len).toString() + ")";
|
|
5238
|
+
}
|
|
5239
|
+
return new HTTPParserError(message, constants.ERROR[ret], data);
|
|
5240
|
+
}
|
|
5206
5241
|
destroy() {
|
|
5207
5242
|
assert2(this.ptr != null);
|
|
5208
5243
|
assert2(currentParser == null);
|
|
@@ -5222,6 +5257,10 @@ var require_client_h1 = __commonJS((exports, module) => {
|
|
|
5222
5257
|
if (socket.destroyed) {
|
|
5223
5258
|
return -1;
|
|
5224
5259
|
}
|
|
5260
|
+
if (client[kRunning] === 0) {
|
|
5261
|
+
util.destroy(socket, new SocketError("bad response", util.getSocketInfo(socket)));
|
|
5262
|
+
return -1;
|
|
5263
|
+
}
|
|
5225
5264
|
const request = client[kQueue][client[kRunningIdx]];
|
|
5226
5265
|
if (!request) {
|
|
5227
5266
|
return -1;
|
|
@@ -5301,6 +5340,10 @@ var require_client_h1 = __commonJS((exports, module) => {
|
|
|
5301
5340
|
if (socket.destroyed) {
|
|
5302
5341
|
return -1;
|
|
5303
5342
|
}
|
|
5343
|
+
if (client[kRunning] === 0) {
|
|
5344
|
+
util.destroy(socket, new SocketError("bad response", util.getSocketInfo(socket)));
|
|
5345
|
+
return -1;
|
|
5346
|
+
}
|
|
5304
5347
|
const request = client[kQueue][client[kRunningIdx]];
|
|
5305
5348
|
if (!request) {
|
|
5306
5349
|
return -1;
|
|
@@ -5422,6 +5465,7 @@ var require_client_h1 = __commonJS((exports, module) => {
|
|
|
5422
5465
|
}
|
|
5423
5466
|
request.onComplete(headers);
|
|
5424
5467
|
client[kQueue][client[kRunningIdx]++] = null;
|
|
5468
|
+
socket[kSocketUsed] = true;
|
|
5425
5469
|
if (socket[kWriting]) {
|
|
5426
5470
|
assert2(client[kRunning] === 0);
|
|
5427
5471
|
util.destroy(socket, new InformationalError("reset"));
|
|
@@ -5465,12 +5509,19 @@ var require_client_h1 = __commonJS((exports, module) => {
|
|
|
5465
5509
|
socket[kWriting] = false;
|
|
5466
5510
|
socket[kReset] = false;
|
|
5467
5511
|
socket[kBlocking] = false;
|
|
5512
|
+
socket[kIdleSocketValidation] = 0;
|
|
5513
|
+
socket[kIdleSocketValidationTimeout] = null;
|
|
5514
|
+
socket[kSocketUsed] = false;
|
|
5468
5515
|
socket[kParser] = new Parser(client, socket, llhttpInstance);
|
|
5469
5516
|
addListener(socket, "error", function(err) {
|
|
5470
5517
|
assert2(err.code !== "ERR_TLS_CERT_ALTNAME_INVALID");
|
|
5471
5518
|
const parser = this[kParser];
|
|
5472
5519
|
if (err.code === "ECONNRESET" && parser.statusCode && !parser.shouldKeepAlive) {
|
|
5473
|
-
parser.
|
|
5520
|
+
const parserErr = parser.finish();
|
|
5521
|
+
if (parserErr) {
|
|
5522
|
+
this[kError] = parserErr;
|
|
5523
|
+
this[kClient][kOnError](parserErr);
|
|
5524
|
+
}
|
|
5474
5525
|
return;
|
|
5475
5526
|
}
|
|
5476
5527
|
this[kError] = err;
|
|
@@ -5485,7 +5536,10 @@ var require_client_h1 = __commonJS((exports, module) => {
|
|
|
5485
5536
|
addListener(socket, "end", function() {
|
|
5486
5537
|
const parser = this[kParser];
|
|
5487
5538
|
if (parser.statusCode && !parser.shouldKeepAlive) {
|
|
5488
|
-
parser.
|
|
5539
|
+
const parserErr = parser.finish();
|
|
5540
|
+
if (parserErr) {
|
|
5541
|
+
util.destroy(this, parserErr);
|
|
5542
|
+
}
|
|
5489
5543
|
return;
|
|
5490
5544
|
}
|
|
5491
5545
|
util.destroy(this, new SocketError("other side closed", util.getSocketInfo(this)));
|
|
@@ -5493,9 +5547,10 @@ var require_client_h1 = __commonJS((exports, module) => {
|
|
|
5493
5547
|
addListener(socket, "close", function() {
|
|
5494
5548
|
const client2 = this[kClient];
|
|
5495
5549
|
const parser = this[kParser];
|
|
5550
|
+
clearIdleSocketValidation(this);
|
|
5496
5551
|
if (parser) {
|
|
5497
5552
|
if (!this[kError] && parser.statusCode && !parser.shouldKeepAlive) {
|
|
5498
|
-
parser.
|
|
5553
|
+
this[kError] = parser.finish() || this[kError];
|
|
5499
5554
|
}
|
|
5500
5555
|
this[kParser].destroy();
|
|
5501
5556
|
this[kParser] = null;
|
|
@@ -5544,7 +5599,7 @@ var require_client_h1 = __commonJS((exports, module) => {
|
|
|
5544
5599
|
return socket.destroyed;
|
|
5545
5600
|
},
|
|
5546
5601
|
busy(request) {
|
|
5547
|
-
if (socket[kWriting] || socket[kReset] || socket[kBlocking]) {
|
|
5602
|
+
if (socket[kWriting] || socket[kReset] || socket[kBlocking] || socket[kIdleSocketValidation] === 1) {
|
|
5548
5603
|
return true;
|
|
5549
5604
|
}
|
|
5550
5605
|
if (request) {
|
|
@@ -5562,6 +5617,24 @@ var require_client_h1 = __commonJS((exports, module) => {
|
|
|
5562
5617
|
}
|
|
5563
5618
|
};
|
|
5564
5619
|
}
|
|
5620
|
+
function clearIdleSocketValidation(socket) {
|
|
5621
|
+
if (socket[kIdleSocketValidationTimeout]) {
|
|
5622
|
+
clearTimeout(socket[kIdleSocketValidationTimeout]);
|
|
5623
|
+
socket[kIdleSocketValidationTimeout] = null;
|
|
5624
|
+
}
|
|
5625
|
+
socket[kIdleSocketValidation] = 0;
|
|
5626
|
+
}
|
|
5627
|
+
function scheduleIdleSocketValidation(client, socket) {
|
|
5628
|
+
socket[kIdleSocketValidation] = 1;
|
|
5629
|
+
socket[kIdleSocketValidationTimeout] = setTimeout(() => {
|
|
5630
|
+
socket[kIdleSocketValidationTimeout] = null;
|
|
5631
|
+
socket[kIdleSocketValidation] = 2;
|
|
5632
|
+
if (client[kSocket] === socket && !socket.destroyed) {
|
|
5633
|
+
client[kResume]();
|
|
5634
|
+
}
|
|
5635
|
+
}, 0);
|
|
5636
|
+
socket[kIdleSocketValidationTimeout].unref?.();
|
|
5637
|
+
}
|
|
5565
5638
|
function resumeH1(client) {
|
|
5566
5639
|
const socket = client[kSocket];
|
|
5567
5640
|
if (socket && !socket.destroyed) {
|
|
@@ -5574,6 +5647,29 @@ var require_client_h1 = __commonJS((exports, module) => {
|
|
|
5574
5647
|
socket.ref();
|
|
5575
5648
|
socket[kNoRef] = false;
|
|
5576
5649
|
}
|
|
5650
|
+
if (client[kRunning] === 0 && client[kPending] > 0 && socket[kSocketUsed]) {
|
|
5651
|
+
if (socket[kIdleSocketValidation] === 0) {
|
|
5652
|
+
scheduleIdleSocketValidation(client, socket);
|
|
5653
|
+
socket[kParser].readMore();
|
|
5654
|
+
if (socket.destroyed) {
|
|
5655
|
+
return;
|
|
5656
|
+
}
|
|
5657
|
+
return;
|
|
5658
|
+
}
|
|
5659
|
+
if (socket[kIdleSocketValidation] === 1) {
|
|
5660
|
+
socket[kParser].readMore();
|
|
5661
|
+
if (socket.destroyed) {
|
|
5662
|
+
return;
|
|
5663
|
+
}
|
|
5664
|
+
return;
|
|
5665
|
+
}
|
|
5666
|
+
}
|
|
5667
|
+
if (client[kRunning] === 0) {
|
|
5668
|
+
socket[kParser].readMore();
|
|
5669
|
+
if (socket.destroyed) {
|
|
5670
|
+
return;
|
|
5671
|
+
}
|
|
5672
|
+
}
|
|
5577
5673
|
if (client[kSize] === 0) {
|
|
5578
5674
|
if (socket[kParser].timeoutType !== TIMEOUT_KEEP_ALIVE) {
|
|
5579
5675
|
socket[kParser].setTimeout(client[kKeepAliveTimeoutValue], TIMEOUT_KEEP_ALIVE);
|
|
@@ -5626,6 +5722,7 @@ var require_client_h1 = __commonJS((exports, module) => {
|
|
|
5626
5722
|
process.emitWarning(new RequestContentLengthMismatchError);
|
|
5627
5723
|
}
|
|
5628
5724
|
const socket = client[kSocket];
|
|
5725
|
+
clearIdleSocketValidation(socket);
|
|
5629
5726
|
const abort = (err) => {
|
|
5630
5727
|
if (request.aborted || request.completed) {
|
|
5631
5728
|
return;
|
|
@@ -5986,7 +6083,7 @@ ${len.toString(16)}\r
|
|
|
5986
6083
|
module.exports = connectH1;
|
|
5987
6084
|
});
|
|
5988
6085
|
|
|
5989
|
-
// ../../node_modules/.bun/undici@6.
|
|
6086
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/dispatcher/client-h2.js
|
|
5990
6087
|
var require_client_h2 = __commonJS((exports, module) => {
|
|
5991
6088
|
var assert2 = __require("node:assert");
|
|
5992
6089
|
var { pipeline } = __require("node:stream");
|
|
@@ -6467,7 +6564,7 @@ var require_client_h2 = __commonJS((exports, module) => {
|
|
|
6467
6564
|
module.exports = connectH2;
|
|
6468
6565
|
});
|
|
6469
6566
|
|
|
6470
|
-
// ../../node_modules/.bun/undici@6.
|
|
6567
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/handler/redirect-handler.js
|
|
6471
6568
|
var require_redirect_handler = __commonJS((exports, module) => {
|
|
6472
6569
|
var util = require_util();
|
|
6473
6570
|
var { kBodyUsed } = require_symbols();
|
|
@@ -6624,7 +6721,7 @@ var require_redirect_handler = __commonJS((exports, module) => {
|
|
|
6624
6721
|
module.exports = RedirectHandler;
|
|
6625
6722
|
});
|
|
6626
6723
|
|
|
6627
|
-
// ../../node_modules/.bun/undici@6.
|
|
6724
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/interceptor/redirect-interceptor.js
|
|
6628
6725
|
var require_redirect_interceptor = __commonJS((exports, module) => {
|
|
6629
6726
|
var RedirectHandler = require_redirect_handler();
|
|
6630
6727
|
function createRedirectInterceptor({ maxRedirections: defaultMaxRedirections }) {
|
|
@@ -6643,7 +6740,7 @@ var require_redirect_interceptor = __commonJS((exports, module) => {
|
|
|
6643
6740
|
module.exports = createRedirectInterceptor;
|
|
6644
6741
|
});
|
|
6645
6742
|
|
|
6646
|
-
// ../../node_modules/.bun/undici@6.
|
|
6743
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/dispatcher/client.js
|
|
6647
6744
|
var require_client = __commonJS((exports, module) => {
|
|
6648
6745
|
var assert2 = __require("node:assert");
|
|
6649
6746
|
var net = __require("node:net");
|
|
@@ -7131,7 +7228,7 @@ var require_client = __commonJS((exports, module) => {
|
|
|
7131
7228
|
module.exports = Client;
|
|
7132
7229
|
});
|
|
7133
7230
|
|
|
7134
|
-
// ../../node_modules/.bun/undici@6.
|
|
7231
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/dispatcher/fixed-queue.js
|
|
7135
7232
|
var require_fixed_queue = __commonJS((exports, module) => {
|
|
7136
7233
|
var kSize = 2048;
|
|
7137
7234
|
var kMask = kSize - 1;
|
|
@@ -7186,7 +7283,7 @@ var require_fixed_queue = __commonJS((exports, module) => {
|
|
|
7186
7283
|
};
|
|
7187
7284
|
});
|
|
7188
7285
|
|
|
7189
|
-
// ../../node_modules/.bun/undici@6.
|
|
7286
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/dispatcher/pool-stats.js
|
|
7190
7287
|
var require_pool_stats = __commonJS((exports, module) => {
|
|
7191
7288
|
var { kFree, kConnected, kPending, kQueued, kRunning, kSize } = require_symbols();
|
|
7192
7289
|
var kPool = Symbol("pool");
|
|
@@ -7217,7 +7314,7 @@ var require_pool_stats = __commonJS((exports, module) => {
|
|
|
7217
7314
|
module.exports = PoolStats;
|
|
7218
7315
|
});
|
|
7219
7316
|
|
|
7220
|
-
// ../../node_modules/.bun/undici@6.
|
|
7317
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/dispatcher/pool-base.js
|
|
7221
7318
|
var require_pool_base = __commonJS((exports, module) => {
|
|
7222
7319
|
var DispatcherBase = require_dispatcher_base();
|
|
7223
7320
|
var FixedQueue = require_fixed_queue();
|
|
@@ -7370,7 +7467,7 @@ var require_pool_base = __commonJS((exports, module) => {
|
|
|
7370
7467
|
};
|
|
7371
7468
|
});
|
|
7372
7469
|
|
|
7373
|
-
// ../../node_modules/.bun/undici@6.
|
|
7470
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/dispatcher/pool.js
|
|
7374
7471
|
var require_pool = __commonJS((exports, module) => {
|
|
7375
7472
|
var {
|
|
7376
7473
|
PoolBase,
|
|
@@ -7459,7 +7556,7 @@ var require_pool = __commonJS((exports, module) => {
|
|
|
7459
7556
|
module.exports = Pool;
|
|
7460
7557
|
});
|
|
7461
7558
|
|
|
7462
|
-
// ../../node_modules/.bun/undici@6.
|
|
7559
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/dispatcher/balanced-pool.js
|
|
7463
7560
|
var require_balanced_pool = __commonJS((exports, module) => {
|
|
7464
7561
|
var {
|
|
7465
7562
|
BalancedPoolMissingUpstreamError,
|
|
@@ -7602,7 +7699,7 @@ var require_balanced_pool = __commonJS((exports, module) => {
|
|
|
7602
7699
|
module.exports = BalancedPool;
|
|
7603
7700
|
});
|
|
7604
7701
|
|
|
7605
|
-
// ../../node_modules/.bun/undici@6.
|
|
7702
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/dispatcher/agent.js
|
|
7606
7703
|
var require_agent = __commonJS((exports, module) => {
|
|
7607
7704
|
var { InvalidArgumentError } = require_errors();
|
|
7608
7705
|
var { kClients, kRunning, kClose, kDestroy, kDispatch, kInterceptors } = require_symbols();
|
|
@@ -7697,7 +7794,7 @@ var require_agent = __commonJS((exports, module) => {
|
|
|
7697
7794
|
module.exports = Agent;
|
|
7698
7795
|
});
|
|
7699
7796
|
|
|
7700
|
-
// ../../node_modules/.bun/undici@6.
|
|
7797
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/dispatcher/proxy-agent.js
|
|
7701
7798
|
var require_proxy_agent = __commonJS((exports, module) => {
|
|
7702
7799
|
var { kProxy, kClose, kDestroy, kDispatch, kInterceptors } = require_symbols();
|
|
7703
7800
|
var { URL: URL2 } = __require("node:url");
|
|
@@ -7912,7 +8009,7 @@ var require_proxy_agent = __commonJS((exports, module) => {
|
|
|
7912
8009
|
module.exports = ProxyAgent;
|
|
7913
8010
|
});
|
|
7914
8011
|
|
|
7915
|
-
// ../../node_modules/.bun/undici@6.
|
|
8012
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js
|
|
7916
8013
|
var require_env_http_proxy_agent = __commonJS((exports, module) => {
|
|
7917
8014
|
var DispatcherBase = require_dispatcher_base();
|
|
7918
8015
|
var { kClose, kDestroy, kClosed, kDestroyed, kDispatch, kNoProxyAgent, kHttpProxyAgent, kHttpsProxyAgent } = require_symbols();
|
|
@@ -8046,7 +8143,7 @@ var require_env_http_proxy_agent = __commonJS((exports, module) => {
|
|
|
8046
8143
|
module.exports = EnvHttpProxyAgent;
|
|
8047
8144
|
});
|
|
8048
8145
|
|
|
8049
|
-
// ../../node_modules/.bun/undici@6.
|
|
8146
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/handler/retry-handler.js
|
|
8050
8147
|
var require_retry_handler = __commonJS((exports, module) => {
|
|
8051
8148
|
var assert2 = __require("node:assert");
|
|
8052
8149
|
var { kRetryHandlerDefaultRetry } = require_symbols();
|
|
@@ -8303,7 +8400,7 @@ var require_retry_handler = __commonJS((exports, module) => {
|
|
|
8303
8400
|
module.exports = RetryHandler;
|
|
8304
8401
|
});
|
|
8305
8402
|
|
|
8306
|
-
// ../../node_modules/.bun/undici@6.
|
|
8403
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/dispatcher/retry-agent.js
|
|
8307
8404
|
var require_retry_agent = __commonJS((exports, module) => {
|
|
8308
8405
|
var Dispatcher = require_dispatcher();
|
|
8309
8406
|
var RetryHandler = require_retry_handler();
|
|
@@ -8336,7 +8433,7 @@ var require_retry_agent = __commonJS((exports, module) => {
|
|
|
8336
8433
|
module.exports = RetryAgent;
|
|
8337
8434
|
});
|
|
8338
8435
|
|
|
8339
|
-
// ../../node_modules/.bun/undici@6.
|
|
8436
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/api/readable.js
|
|
8340
8437
|
var require_readable = __commonJS((exports, module) => {
|
|
8341
8438
|
var assert2 = __require("node:assert");
|
|
8342
8439
|
var { Readable } = __require("node:stream");
|
|
@@ -8616,7 +8713,7 @@ var require_readable = __commonJS((exports, module) => {
|
|
|
8616
8713
|
module.exports = { Readable: BodyReadable, chunksDecode };
|
|
8617
8714
|
});
|
|
8618
8715
|
|
|
8619
|
-
// ../../node_modules/.bun/undici@6.
|
|
8716
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/api/util.js
|
|
8620
8717
|
var require_util3 = __commonJS((exports, module) => {
|
|
8621
8718
|
var assert2 = __require("node:assert");
|
|
8622
8719
|
var {
|
|
@@ -8674,7 +8771,7 @@ var require_util3 = __commonJS((exports, module) => {
|
|
|
8674
8771
|
};
|
|
8675
8772
|
});
|
|
8676
8773
|
|
|
8677
|
-
// ../../node_modules/.bun/undici@6.
|
|
8774
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/api/api-request.js
|
|
8678
8775
|
var require_api_request = __commonJS((exports, module) => {
|
|
8679
8776
|
var assert2 = __require("node:assert");
|
|
8680
8777
|
var { Readable } = require_readable();
|
|
@@ -8854,7 +8951,7 @@ var require_api_request = __commonJS((exports, module) => {
|
|
|
8854
8951
|
module.exports.RequestHandler = RequestHandler;
|
|
8855
8952
|
});
|
|
8856
8953
|
|
|
8857
|
-
// ../../node_modules/.bun/undici@6.
|
|
8954
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/api/abort-signal.js
|
|
8858
8955
|
var require_abort_signal = __commonJS((exports, module) => {
|
|
8859
8956
|
var { addAbortListener } = require_util();
|
|
8860
8957
|
var { RequestAbortedError } = require_errors();
|
|
@@ -8903,7 +9000,7 @@ var require_abort_signal = __commonJS((exports, module) => {
|
|
|
8903
9000
|
};
|
|
8904
9001
|
});
|
|
8905
9002
|
|
|
8906
|
-
// ../../node_modules/.bun/undici@6.
|
|
9003
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/api/api-stream.js
|
|
8907
9004
|
var require_api_stream = __commonJS((exports, module) => {
|
|
8908
9005
|
var assert2 = __require("node:assert");
|
|
8909
9006
|
var { finished, PassThrough } = __require("node:stream");
|
|
@@ -9070,7 +9167,7 @@ var require_api_stream = __commonJS((exports, module) => {
|
|
|
9070
9167
|
module.exports = stream;
|
|
9071
9168
|
});
|
|
9072
9169
|
|
|
9073
|
-
// ../../node_modules/.bun/undici@6.
|
|
9170
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/api/api-pipeline.js
|
|
9074
9171
|
var require_api_pipeline = __commonJS((exports, module) => {
|
|
9075
9172
|
var {
|
|
9076
9173
|
Readable,
|
|
@@ -9270,7 +9367,7 @@ var require_api_pipeline = __commonJS((exports, module) => {
|
|
|
9270
9367
|
module.exports = pipeline;
|
|
9271
9368
|
});
|
|
9272
9369
|
|
|
9273
|
-
// ../../node_modules/.bun/undici@6.
|
|
9370
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/api/api-upgrade.js
|
|
9274
9371
|
var require_api_upgrade = __commonJS((exports, module) => {
|
|
9275
9372
|
var { InvalidArgumentError, SocketError } = require_errors();
|
|
9276
9373
|
var { AsyncResource } = __require("node:async_hooks");
|
|
@@ -9360,7 +9457,7 @@ var require_api_upgrade = __commonJS((exports, module) => {
|
|
|
9360
9457
|
module.exports = upgrade;
|
|
9361
9458
|
});
|
|
9362
9459
|
|
|
9363
|
-
// ../../node_modules/.bun/undici@6.
|
|
9460
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/api/api-connect.js
|
|
9364
9461
|
var require_api_connect = __commonJS((exports, module) => {
|
|
9365
9462
|
var assert2 = __require("node:assert");
|
|
9366
9463
|
var { AsyncResource } = __require("node:async_hooks");
|
|
@@ -9448,7 +9545,7 @@ var require_api_connect = __commonJS((exports, module) => {
|
|
|
9448
9545
|
module.exports = connect;
|
|
9449
9546
|
});
|
|
9450
9547
|
|
|
9451
|
-
// ../../node_modules/.bun/undici@6.
|
|
9548
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/api/index.js
|
|
9452
9549
|
var require_api = __commonJS((exports, module) => {
|
|
9453
9550
|
exports.request = require_api_request();
|
|
9454
9551
|
exports.stream = require_api_stream();
|
|
@@ -9457,7 +9554,7 @@ var require_api = __commonJS((exports, module) => {
|
|
|
9457
9554
|
exports.connect = require_api_connect();
|
|
9458
9555
|
});
|
|
9459
9556
|
|
|
9460
|
-
// ../../node_modules/.bun/undici@6.
|
|
9557
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/mock/mock-errors.js
|
|
9461
9558
|
var require_mock_errors = __commonJS((exports, module) => {
|
|
9462
9559
|
var { UndiciError } = require_errors();
|
|
9463
9560
|
var kMockNotMatchedError = Symbol.for("undici.error.UND_MOCK_ERR_MOCK_NOT_MATCHED");
|
|
@@ -9480,7 +9577,7 @@ var require_mock_errors = __commonJS((exports, module) => {
|
|
|
9480
9577
|
};
|
|
9481
9578
|
});
|
|
9482
9579
|
|
|
9483
|
-
// ../../node_modules/.bun/undici@6.
|
|
9580
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/mock/mock-symbols.js
|
|
9484
9581
|
var require_mock_symbols = __commonJS((exports, module) => {
|
|
9485
9582
|
module.exports = {
|
|
9486
9583
|
kAgent: Symbol("agent"),
|
|
@@ -9505,7 +9602,7 @@ var require_mock_symbols = __commonJS((exports, module) => {
|
|
|
9505
9602
|
};
|
|
9506
9603
|
});
|
|
9507
9604
|
|
|
9508
|
-
// ../../node_modules/.bun/undici@6.
|
|
9605
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/mock/mock-utils.js
|
|
9509
9606
|
var require_mock_utils = __commonJS((exports, module) => {
|
|
9510
9607
|
var { MockNotMatchedError } = require_mock_errors();
|
|
9511
9608
|
var {
|
|
@@ -9795,7 +9892,7 @@ var require_mock_utils = __commonJS((exports, module) => {
|
|
|
9795
9892
|
};
|
|
9796
9893
|
});
|
|
9797
9894
|
|
|
9798
|
-
// ../../node_modules/.bun/undici@6.
|
|
9895
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/mock/mock-interceptor.js
|
|
9799
9896
|
var require_mock_interceptor = __commonJS((exports, module) => {
|
|
9800
9897
|
var { getResponseData, buildKey, addMockDispatch } = require_mock_utils();
|
|
9801
9898
|
var {
|
|
@@ -9932,7 +10029,7 @@ var require_mock_interceptor = __commonJS((exports, module) => {
|
|
|
9932
10029
|
exports.MockScope = MockScope;
|
|
9933
10030
|
});
|
|
9934
10031
|
|
|
9935
|
-
// ../../node_modules/.bun/undici@6.
|
|
10032
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/mock/mock-client.js
|
|
9936
10033
|
var require_mock_client = __commonJS((exports, module) => {
|
|
9937
10034
|
var { promisify: promisify7 } = __require("node:util");
|
|
9938
10035
|
var Client = require_client();
|
|
@@ -9980,7 +10077,7 @@ var require_mock_client = __commonJS((exports, module) => {
|
|
|
9980
10077
|
module.exports = MockClient;
|
|
9981
10078
|
});
|
|
9982
10079
|
|
|
9983
|
-
// ../../node_modules/.bun/undici@6.
|
|
10080
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/mock/mock-pool.js
|
|
9984
10081
|
var require_mock_pool = __commonJS((exports, module) => {
|
|
9985
10082
|
var { promisify: promisify7 } = __require("node:util");
|
|
9986
10083
|
var Pool = require_pool();
|
|
@@ -10028,7 +10125,7 @@ var require_mock_pool = __commonJS((exports, module) => {
|
|
|
10028
10125
|
module.exports = MockPool;
|
|
10029
10126
|
});
|
|
10030
10127
|
|
|
10031
|
-
// ../../node_modules/.bun/undici@6.
|
|
10128
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/mock/pluralizer.js
|
|
10032
10129
|
var require_pluralizer = __commonJS((exports, module) => {
|
|
10033
10130
|
var singulars = {
|
|
10034
10131
|
pronoun: "it",
|
|
@@ -10056,7 +10153,7 @@ var require_pluralizer = __commonJS((exports, module) => {
|
|
|
10056
10153
|
};
|
|
10057
10154
|
});
|
|
10058
10155
|
|
|
10059
|
-
// ../../node_modules/.bun/undici@6.
|
|
10156
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/mock/pending-interceptors-formatter.js
|
|
10060
10157
|
var require_pending_interceptors_formatter = __commonJS((exports, module) => {
|
|
10061
10158
|
var { Transform } = __require("node:stream");
|
|
10062
10159
|
var { Console } = __require("node:console");
|
|
@@ -10092,7 +10189,7 @@ var require_pending_interceptors_formatter = __commonJS((exports, module) => {
|
|
|
10092
10189
|
};
|
|
10093
10190
|
});
|
|
10094
10191
|
|
|
10095
|
-
// ../../node_modules/.bun/undici@6.
|
|
10192
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/mock/mock-agent.js
|
|
10096
10193
|
var require_mock_agent = __commonJS((exports, module) => {
|
|
10097
10194
|
var { kClients } = require_symbols();
|
|
10098
10195
|
var Agent = require_agent();
|
|
@@ -10218,7 +10315,7 @@ ${pendingInterceptorsFormatter.format(pending)}
|
|
|
10218
10315
|
module.exports = MockAgent;
|
|
10219
10316
|
});
|
|
10220
10317
|
|
|
10221
|
-
// ../../node_modules/.bun/undici@6.
|
|
10318
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/global.js
|
|
10222
10319
|
var require_global2 = __commonJS((exports, module) => {
|
|
10223
10320
|
var globalDispatcher = Symbol.for("undici.globalDispatcher.1");
|
|
10224
10321
|
var { InvalidArgumentError } = require_errors();
|
|
@@ -10246,7 +10343,7 @@ var require_global2 = __commonJS((exports, module) => {
|
|
|
10246
10343
|
};
|
|
10247
10344
|
});
|
|
10248
10345
|
|
|
10249
|
-
// ../../node_modules/.bun/undici@6.
|
|
10346
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/handler/decorator-handler.js
|
|
10250
10347
|
var require_decorator_handler = __commonJS((exports, module) => {
|
|
10251
10348
|
module.exports = class DecoratorHandler {
|
|
10252
10349
|
#handler;
|
|
@@ -10283,7 +10380,7 @@ var require_decorator_handler = __commonJS((exports, module) => {
|
|
|
10283
10380
|
};
|
|
10284
10381
|
});
|
|
10285
10382
|
|
|
10286
|
-
// ../../node_modules/.bun/undici@6.
|
|
10383
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/interceptor/redirect.js
|
|
10287
10384
|
var require_redirect = __commonJS((exports, module) => {
|
|
10288
10385
|
var RedirectHandler = require_redirect_handler();
|
|
10289
10386
|
module.exports = (opts) => {
|
|
@@ -10301,7 +10398,7 @@ var require_redirect = __commonJS((exports, module) => {
|
|
|
10301
10398
|
};
|
|
10302
10399
|
});
|
|
10303
10400
|
|
|
10304
|
-
// ../../node_modules/.bun/undici@6.
|
|
10401
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/interceptor/retry.js
|
|
10305
10402
|
var require_retry = __commonJS((exports, module) => {
|
|
10306
10403
|
var RetryHandler = require_retry_handler();
|
|
10307
10404
|
module.exports = (globalOpts) => {
|
|
@@ -10316,7 +10413,7 @@ var require_retry = __commonJS((exports, module) => {
|
|
|
10316
10413
|
};
|
|
10317
10414
|
});
|
|
10318
10415
|
|
|
10319
|
-
// ../../node_modules/.bun/undici@6.
|
|
10416
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/interceptor/dump.js
|
|
10320
10417
|
var require_dump = __commonJS((exports, module) => {
|
|
10321
10418
|
var util = require_util();
|
|
10322
10419
|
var { InvalidArgumentError, RequestAbortedError } = require_errors();
|
|
@@ -10401,7 +10498,7 @@ var require_dump = __commonJS((exports, module) => {
|
|
|
10401
10498
|
module.exports = createDumpInterceptor;
|
|
10402
10499
|
});
|
|
10403
10500
|
|
|
10404
|
-
// ../../node_modules/.bun/undici@6.
|
|
10501
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/interceptor/dns.js
|
|
10405
10502
|
var require_dns = __commonJS((exports, module) => {
|
|
10406
10503
|
var { isIP } = __require("node:net");
|
|
10407
10504
|
var { lookup } = __require("node:dns");
|
|
@@ -10663,7 +10760,7 @@ var require_dns = __commonJS((exports, module) => {
|
|
|
10663
10760
|
};
|
|
10664
10761
|
});
|
|
10665
10762
|
|
|
10666
|
-
// ../../node_modules/.bun/undici@6.
|
|
10763
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/fetch/headers.js
|
|
10667
10764
|
var require_headers = __commonJS((exports, module) => {
|
|
10668
10765
|
var { kConstruct } = require_symbols();
|
|
10669
10766
|
var { kEnumerableProperty } = require_util();
|
|
@@ -11070,7 +11167,7 @@ var require_headers = __commonJS((exports, module) => {
|
|
|
11070
11167
|
};
|
|
11071
11168
|
});
|
|
11072
11169
|
|
|
11073
|
-
// ../../node_modules/.bun/undici@6.
|
|
11170
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/fetch/response.js
|
|
11074
11171
|
var require_response = __commonJS((exports, module) => {
|
|
11075
11172
|
var { Headers: Headers2, HeadersList, fill, getHeadersGuard, setHeadersGuard, setHeadersList } = require_headers();
|
|
11076
11173
|
var { extractBody, cloneBody, mixinBody, hasFinalizationRegistry, streamRegistry, bodyUnusable } = require_body();
|
|
@@ -11440,7 +11537,7 @@ var require_response = __commonJS((exports, module) => {
|
|
|
11440
11537
|
};
|
|
11441
11538
|
});
|
|
11442
11539
|
|
|
11443
|
-
// ../../node_modules/.bun/undici@6.
|
|
11540
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/fetch/dispatcher-weakref.js
|
|
11444
11541
|
var require_dispatcher_weakref = __commonJS((exports, module) => {
|
|
11445
11542
|
var { kConnected, kSize } = require_symbols();
|
|
11446
11543
|
|
|
@@ -11480,7 +11577,7 @@ var require_dispatcher_weakref = __commonJS((exports, module) => {
|
|
|
11480
11577
|
};
|
|
11481
11578
|
});
|
|
11482
11579
|
|
|
11483
|
-
// ../../node_modules/.bun/undici@6.
|
|
11580
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/fetch/request.js
|
|
11484
11581
|
var require_request2 = __commonJS((exports, module) => {
|
|
11485
11582
|
var { extractBody, mixinBody, cloneBody, bodyUnusable } = require_body();
|
|
11486
11583
|
var { Headers: Headers2, fill: fillHeaders, HeadersList, setHeadersGuard, getHeadersGuard, setHeadersList, getHeadersList } = require_headers();
|
|
@@ -12070,7 +12167,7 @@ var require_request2 = __commonJS((exports, module) => {
|
|
|
12070
12167
|
module.exports = { Request, makeRequest, fromInnerRequest, cloneRequest };
|
|
12071
12168
|
});
|
|
12072
12169
|
|
|
12073
|
-
// ../../node_modules/.bun/undici@6.
|
|
12170
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/fetch/index.js
|
|
12074
12171
|
var require_fetch = __commonJS((exports, module) => {
|
|
12075
12172
|
var {
|
|
12076
12173
|
makeNetworkError,
|
|
@@ -13067,7 +13164,7 @@ var require_fetch = __commonJS((exports, module) => {
|
|
|
13067
13164
|
};
|
|
13068
13165
|
});
|
|
13069
13166
|
|
|
13070
|
-
// ../../node_modules/.bun/undici@6.
|
|
13167
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/fileapi/symbols.js
|
|
13071
13168
|
var require_symbols3 = __commonJS((exports, module) => {
|
|
13072
13169
|
module.exports = {
|
|
13073
13170
|
kState: Symbol("FileReader state"),
|
|
@@ -13079,7 +13176,7 @@ var require_symbols3 = __commonJS((exports, module) => {
|
|
|
13079
13176
|
};
|
|
13080
13177
|
});
|
|
13081
13178
|
|
|
13082
|
-
// ../../node_modules/.bun/undici@6.
|
|
13179
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/fileapi/progressevent.js
|
|
13083
13180
|
var require_progressevent = __commonJS((exports, module) => {
|
|
13084
13181
|
var { webidl } = require_webidl();
|
|
13085
13182
|
var kState = Symbol("ProgressEvent state");
|
|
@@ -13145,7 +13242,7 @@ var require_progressevent = __commonJS((exports, module) => {
|
|
|
13145
13242
|
};
|
|
13146
13243
|
});
|
|
13147
13244
|
|
|
13148
|
-
// ../../node_modules/.bun/undici@6.
|
|
13245
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/fileapi/encoding.js
|
|
13149
13246
|
var require_encoding = __commonJS((exports, module) => {
|
|
13150
13247
|
function getEncoding(label) {
|
|
13151
13248
|
if (!label) {
|
|
@@ -13428,7 +13525,7 @@ var require_encoding = __commonJS((exports, module) => {
|
|
|
13428
13525
|
};
|
|
13429
13526
|
});
|
|
13430
13527
|
|
|
13431
|
-
// ../../node_modules/.bun/undici@6.
|
|
13528
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/fileapi/util.js
|
|
13432
13529
|
var require_util4 = __commonJS((exports, module) => {
|
|
13433
13530
|
var {
|
|
13434
13531
|
kState,
|
|
@@ -13610,7 +13707,7 @@ var require_util4 = __commonJS((exports, module) => {
|
|
|
13610
13707
|
};
|
|
13611
13708
|
});
|
|
13612
13709
|
|
|
13613
|
-
// ../../node_modules/.bun/undici@6.
|
|
13710
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/fileapi/filereader.js
|
|
13614
13711
|
var require_filereader = __commonJS((exports, module) => {
|
|
13615
13712
|
var {
|
|
13616
13713
|
staticPropertyDescriptors,
|
|
@@ -13838,14 +13935,14 @@ var require_filereader = __commonJS((exports, module) => {
|
|
|
13838
13935
|
};
|
|
13839
13936
|
});
|
|
13840
13937
|
|
|
13841
|
-
// ../../node_modules/.bun/undici@6.
|
|
13938
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/cache/symbols.js
|
|
13842
13939
|
var require_symbols4 = __commonJS((exports, module) => {
|
|
13843
13940
|
module.exports = {
|
|
13844
13941
|
kConstruct: require_symbols().kConstruct
|
|
13845
13942
|
};
|
|
13846
13943
|
});
|
|
13847
13944
|
|
|
13848
|
-
// ../../node_modules/.bun/undici@6.
|
|
13945
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/cache/util.js
|
|
13849
13946
|
var require_util5 = __commonJS((exports, module) => {
|
|
13850
13947
|
var assert2 = __require("node:assert");
|
|
13851
13948
|
var { URLSerializer } = require_data_url();
|
|
@@ -13872,7 +13969,7 @@ var require_util5 = __commonJS((exports, module) => {
|
|
|
13872
13969
|
};
|
|
13873
13970
|
});
|
|
13874
13971
|
|
|
13875
|
-
// ../../node_modules/.bun/undici@6.
|
|
13972
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/cache/cache.js
|
|
13876
13973
|
var require_cache = __commonJS((exports, module) => {
|
|
13877
13974
|
var { kConstruct } = require_symbols4();
|
|
13878
13975
|
var { urlEquals, getFieldValues } = require_util5();
|
|
@@ -14375,7 +14472,7 @@ var require_cache = __commonJS((exports, module) => {
|
|
|
14375
14472
|
};
|
|
14376
14473
|
});
|
|
14377
14474
|
|
|
14378
|
-
// ../../node_modules/.bun/undici@6.
|
|
14475
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/cache/cachestorage.js
|
|
14379
14476
|
var require_cachestorage = __commonJS((exports, module) => {
|
|
14380
14477
|
var { kConstruct } = require_symbols4();
|
|
14381
14478
|
var { Cache } = require_cache();
|
|
@@ -14460,7 +14557,7 @@ var require_cachestorage = __commonJS((exports, module) => {
|
|
|
14460
14557
|
};
|
|
14461
14558
|
});
|
|
14462
14559
|
|
|
14463
|
-
// ../../node_modules/.bun/undici@6.
|
|
14560
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/cookies/constants.js
|
|
14464
14561
|
var require_constants4 = __commonJS((exports, module) => {
|
|
14465
14562
|
var maxAttributeValueSize = 1024;
|
|
14466
14563
|
var maxNameValuePairSize = 4096;
|
|
@@ -14470,7 +14567,7 @@ var require_constants4 = __commonJS((exports, module) => {
|
|
|
14470
14567
|
};
|
|
14471
14568
|
});
|
|
14472
14569
|
|
|
14473
|
-
// ../../node_modules/.bun/undici@6.
|
|
14570
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/cookies/util.js
|
|
14474
14571
|
var require_util6 = __commonJS((exports, module) => {
|
|
14475
14572
|
function isCTLExcludingHtab(value) {
|
|
14476
14573
|
for (let i = 0;i < value.length; ++i) {
|
|
@@ -14612,7 +14709,7 @@ var require_util6 = __commonJS((exports, module) => {
|
|
|
14612
14709
|
};
|
|
14613
14710
|
});
|
|
14614
14711
|
|
|
14615
|
-
// ../../node_modules/.bun/undici@6.
|
|
14712
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/cookies/parse.js
|
|
14616
14713
|
var require_parse = __commonJS((exports, module) => {
|
|
14617
14714
|
var { maxNameValuePairSize, maxAttributeValueSize } = require_constants4();
|
|
14618
14715
|
var { isCTLExcludingHtab } = require_util6();
|
|
@@ -14713,18 +14810,14 @@ var require_parse = __commonJS((exports, module) => {
|
|
|
14713
14810
|
} else if (attributeNameLowercase === "httponly") {
|
|
14714
14811
|
cookieAttributeList.httpOnly = true;
|
|
14715
14812
|
} else if (attributeNameLowercase === "samesite") {
|
|
14716
|
-
let enforcement = "Default";
|
|
14717
14813
|
const attributeValueLowercase = attributeValue.toLowerCase();
|
|
14718
|
-
if (attributeValueLowercase
|
|
14719
|
-
|
|
14720
|
-
}
|
|
14721
|
-
|
|
14722
|
-
|
|
14814
|
+
if (attributeValueLowercase === "none") {
|
|
14815
|
+
cookieAttributeList.sameSite = "None";
|
|
14816
|
+
} else if (attributeValueLowercase === "strict") {
|
|
14817
|
+
cookieAttributeList.sameSite = "Strict";
|
|
14818
|
+
} else if (attributeValueLowercase === "lax") {
|
|
14819
|
+
cookieAttributeList.sameSite = "Lax";
|
|
14723
14820
|
}
|
|
14724
|
-
if (attributeValueLowercase.includes("lax")) {
|
|
14725
|
-
enforcement = "Lax";
|
|
14726
|
-
}
|
|
14727
|
-
cookieAttributeList.sameSite = enforcement;
|
|
14728
14821
|
} else {
|
|
14729
14822
|
cookieAttributeList.unparsed ??= [];
|
|
14730
14823
|
cookieAttributeList.unparsed.push(`${attributeName}=${attributeValue}`);
|
|
@@ -14737,7 +14830,7 @@ var require_parse = __commonJS((exports, module) => {
|
|
|
14737
14830
|
};
|
|
14738
14831
|
});
|
|
14739
14832
|
|
|
14740
|
-
// ../../node_modules/.bun/undici@6.
|
|
14833
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/cookies/index.js
|
|
14741
14834
|
var require_cookies = __commonJS((exports, module) => {
|
|
14742
14835
|
var { parseSetCookie } = require_parse();
|
|
14743
14836
|
var { stringify } = require_util6();
|
|
@@ -14863,7 +14956,7 @@ var require_cookies = __commonJS((exports, module) => {
|
|
|
14863
14956
|
};
|
|
14864
14957
|
});
|
|
14865
14958
|
|
|
14866
|
-
// ../../node_modules/.bun/undici@6.
|
|
14959
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/websocket/events.js
|
|
14867
14960
|
var require_events = __commonJS((exports, module) => {
|
|
14868
14961
|
var { webidl } = require_webidl();
|
|
14869
14962
|
var { kEnumerableProperty } = require_util();
|
|
@@ -15125,7 +15218,7 @@ var require_events = __commonJS((exports, module) => {
|
|
|
15125
15218
|
};
|
|
15126
15219
|
});
|
|
15127
15220
|
|
|
15128
|
-
// ../../node_modules/.bun/undici@6.
|
|
15221
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/websocket/constants.js
|
|
15129
15222
|
var require_constants5 = __commonJS((exports, module) => {
|
|
15130
15223
|
var uid = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";
|
|
15131
15224
|
var staticPropertyDescriptors = {
|
|
@@ -15179,7 +15272,7 @@ var require_constants5 = __commonJS((exports, module) => {
|
|
|
15179
15272
|
};
|
|
15180
15273
|
});
|
|
15181
15274
|
|
|
15182
|
-
// ../../node_modules/.bun/undici@6.
|
|
15275
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/websocket/symbols.js
|
|
15183
15276
|
var require_symbols5 = __commonJS((exports, module) => {
|
|
15184
15277
|
module.exports = {
|
|
15185
15278
|
kWebSocketURL: Symbol("url"),
|
|
@@ -15193,7 +15286,7 @@ var require_symbols5 = __commonJS((exports, module) => {
|
|
|
15193
15286
|
};
|
|
15194
15287
|
});
|
|
15195
15288
|
|
|
15196
|
-
// ../../node_modules/.bun/undici@6.
|
|
15289
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/websocket/util.js
|
|
15197
15290
|
var require_util7 = __commonJS((exports, module) => {
|
|
15198
15291
|
var { kReadyState, kController, kResponse, kBinaryType, kWebSocketURL } = require_symbols5();
|
|
15199
15292
|
var { states, opcodes } = require_constants5();
|
|
@@ -15341,7 +15434,7 @@ var require_util7 = __commonJS((exports, module) => {
|
|
|
15341
15434
|
};
|
|
15342
15435
|
});
|
|
15343
15436
|
|
|
15344
|
-
// ../../node_modules/.bun/undici@6.
|
|
15437
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/websocket/frame.js
|
|
15345
15438
|
var require_frame = __commonJS((exports, module) => {
|
|
15346
15439
|
var { maxUnsigned16Bit } = require_constants5();
|
|
15347
15440
|
var BUFFER_SIZE = 16386;
|
|
@@ -15413,7 +15506,7 @@ var require_frame = __commonJS((exports, module) => {
|
|
|
15413
15506
|
};
|
|
15414
15507
|
});
|
|
15415
15508
|
|
|
15416
|
-
// ../../node_modules/.bun/undici@6.
|
|
15509
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/websocket/connection.js
|
|
15417
15510
|
var require_connection = __commonJS((exports, module) => {
|
|
15418
15511
|
var { uid, states, sentCloseFrameState, emptyBuffer, opcodes } = require_constants5();
|
|
15419
15512
|
var {
|
|
@@ -15593,7 +15686,7 @@ var require_connection = __commonJS((exports, module) => {
|
|
|
15593
15686
|
};
|
|
15594
15687
|
});
|
|
15595
15688
|
|
|
15596
|
-
// ../../node_modules/.bun/undici@6.
|
|
15689
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/websocket/permessage-deflate.js
|
|
15597
15690
|
var require_permessage_deflate = __commonJS((exports, module) => {
|
|
15598
15691
|
var { createInflateRaw, Z_DEFAULT_WINDOWBITS } = __require("node:zlib");
|
|
15599
15692
|
var { isValidClientWindowBits } = require_util7();
|
|
@@ -15662,7 +15755,7 @@ var require_permessage_deflate = __commonJS((exports, module) => {
|
|
|
15662
15755
|
module.exports = { PerMessageDeflate };
|
|
15663
15756
|
});
|
|
15664
15757
|
|
|
15665
|
-
// ../../node_modules/.bun/undici@6.
|
|
15758
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/websocket/receiver.js
|
|
15666
15759
|
var require_receiver = __commonJS((exports, module) => {
|
|
15667
15760
|
var { Writable } = __require("node:stream");
|
|
15668
15761
|
var assert2 = __require("node:assert");
|
|
@@ -15683,6 +15776,10 @@ var require_receiver = __commonJS((exports, module) => {
|
|
|
15683
15776
|
var { closeWebSocketConnection } = require_connection();
|
|
15684
15777
|
var { PerMessageDeflate } = require_permessage_deflate();
|
|
15685
15778
|
var { MessageSizeExceededError } = require_errors();
|
|
15779
|
+
function failWebsocketConnectionWithCode(ws, code, reason) {
|
|
15780
|
+
closeWebSocketConnection(ws, code, reason, Buffer.byteLength(reason));
|
|
15781
|
+
failWebsocketConnection(ws, reason);
|
|
15782
|
+
}
|
|
15686
15783
|
|
|
15687
15784
|
class ByteParser extends Writable {
|
|
15688
15785
|
#buffers = [];
|
|
@@ -15693,11 +15790,13 @@ var require_receiver = __commonJS((exports, module) => {
|
|
|
15693
15790
|
#info = {};
|
|
15694
15791
|
#fragments = [];
|
|
15695
15792
|
#extensions;
|
|
15793
|
+
#maxFragments;
|
|
15696
15794
|
#maxPayloadSize;
|
|
15697
15795
|
constructor(ws, extensions, options = {}) {
|
|
15698
15796
|
super();
|
|
15699
15797
|
this.ws = ws;
|
|
15700
15798
|
this.#extensions = extensions == null ? new Map : extensions;
|
|
15799
|
+
this.#maxFragments = options.maxFragments ?? 0;
|
|
15701
15800
|
this.#maxPayloadSize = options.maxPayloadSize ?? 0;
|
|
15702
15801
|
if (this.#extensions.has("permessage-deflate")) {
|
|
15703
15802
|
this.#extensions.set("permessage-deflate", new PerMessageDeflate(extensions, options));
|
|
@@ -15710,8 +15809,8 @@ var require_receiver = __commonJS((exports, module) => {
|
|
|
15710
15809
|
this.run(callback);
|
|
15711
15810
|
}
|
|
15712
15811
|
#validatePayloadLength() {
|
|
15713
|
-
if (this.#maxPayloadSize > 0 && !isControlFrame(this.#info.opcode) && this.#info.payloadLength > this.#maxPayloadSize) {
|
|
15714
|
-
|
|
15812
|
+
if (this.#maxPayloadSize > 0 && !isControlFrame(this.#info.opcode) && this.#info.payloadLength + this.#fragmentsBytes > this.#maxPayloadSize) {
|
|
15813
|
+
failWebsocketConnectionWithCode(this.ws, 1009, "Payload size exceeds maximum allowed size");
|
|
15715
15814
|
return false;
|
|
15716
15815
|
}
|
|
15717
15816
|
return true;
|
|
@@ -15822,9 +15921,11 @@ var require_receiver = __commonJS((exports, module) => {
|
|
|
15822
15921
|
this.#state = parserStates.INFO;
|
|
15823
15922
|
} else {
|
|
15824
15923
|
if (!this.#info.compressed) {
|
|
15825
|
-
this.writeFragments(body)
|
|
15924
|
+
if (!this.writeFragments(body)) {
|
|
15925
|
+
return;
|
|
15926
|
+
}
|
|
15826
15927
|
if (this.#maxPayloadSize > 0 && this.#fragmentsBytes > this.#maxPayloadSize) {
|
|
15827
|
-
|
|
15928
|
+
failWebsocketConnectionWithCode(this.ws, 1009, new MessageSizeExceededError().message);
|
|
15828
15929
|
return;
|
|
15829
15930
|
}
|
|
15830
15931
|
if (!this.#info.fragmented && this.#info.fin) {
|
|
@@ -15834,12 +15935,15 @@ var require_receiver = __commonJS((exports, module) => {
|
|
|
15834
15935
|
} else {
|
|
15835
15936
|
this.#extensions.get("permessage-deflate").decompress(body, this.#info.fin, (error, data) => {
|
|
15836
15937
|
if (error) {
|
|
15837
|
-
|
|
15938
|
+
const code = error instanceof MessageSizeExceededError ? 1009 : 1007;
|
|
15939
|
+
failWebsocketConnectionWithCode(this.ws, code, error.message);
|
|
15940
|
+
return;
|
|
15941
|
+
}
|
|
15942
|
+
if (!this.writeFragments(data)) {
|
|
15838
15943
|
return;
|
|
15839
15944
|
}
|
|
15840
|
-
this.writeFragments(data);
|
|
15841
15945
|
if (this.#maxPayloadSize > 0 && this.#fragmentsBytes > this.#maxPayloadSize) {
|
|
15842
|
-
|
|
15946
|
+
failWebsocketConnectionWithCode(this.ws, 1009, new MessageSizeExceededError().message);
|
|
15843
15947
|
return;
|
|
15844
15948
|
}
|
|
15845
15949
|
if (!this.#info.fin) {
|
|
@@ -15891,8 +15995,13 @@ var require_receiver = __commonJS((exports, module) => {
|
|
|
15891
15995
|
return buffer;
|
|
15892
15996
|
}
|
|
15893
15997
|
writeFragments(fragment) {
|
|
15998
|
+
if (this.#maxFragments > 0 && this.#fragments.length === this.#maxFragments) {
|
|
15999
|
+
failWebsocketConnectionWithCode(this.ws, 1008, "Too many message fragments");
|
|
16000
|
+
return false;
|
|
16001
|
+
}
|
|
15894
16002
|
this.#fragmentsBytes += fragment.length;
|
|
15895
16003
|
this.#fragments.push(fragment);
|
|
16004
|
+
return true;
|
|
15896
16005
|
}
|
|
15897
16006
|
consumeFragments() {
|
|
15898
16007
|
const fragments = this.#fragments;
|
|
@@ -15983,7 +16092,7 @@ var require_receiver = __commonJS((exports, module) => {
|
|
|
15983
16092
|
};
|
|
15984
16093
|
});
|
|
15985
16094
|
|
|
15986
|
-
// ../../node_modules/.bun/undici@6.
|
|
16095
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/websocket/sender.js
|
|
15987
16096
|
var require_sender = __commonJS((exports, module) => {
|
|
15988
16097
|
var { WebsocketFrameSend } = require_frame();
|
|
15989
16098
|
var { opcodes, sendHints } = require_constants5();
|
|
@@ -16056,7 +16165,7 @@ var require_sender = __commonJS((exports, module) => {
|
|
|
16056
16165
|
module.exports = { SendQueue };
|
|
16057
16166
|
});
|
|
16058
16167
|
|
|
16059
|
-
// ../../node_modules/.bun/undici@6.
|
|
16168
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/websocket/websocket.js
|
|
16060
16169
|
var require_websocket = __commonJS((exports, module) => {
|
|
16061
16170
|
var { webidl } = require_webidl();
|
|
16062
16171
|
var { URLSerializer } = require_data_url();
|
|
@@ -16294,8 +16403,11 @@ var require_websocket = __commonJS((exports, module) => {
|
|
|
16294
16403
|
}
|
|
16295
16404
|
#onConnectionEstablished(response, parsedExtensions) {
|
|
16296
16405
|
this[kResponse] = response;
|
|
16297
|
-
const
|
|
16406
|
+
const webSocketOptions = this[kController]?.dispatcher?.webSocketOptions;
|
|
16407
|
+
const maxFragments = webSocketOptions?.maxFragments;
|
|
16408
|
+
const maxPayloadSize = webSocketOptions?.maxPayloadSize;
|
|
16298
16409
|
const parser = new ByteParser(this, parsedExtensions, {
|
|
16410
|
+
maxFragments,
|
|
16299
16411
|
maxPayloadSize
|
|
16300
16412
|
});
|
|
16301
16413
|
parser.on("drain", onParserDrain);
|
|
@@ -16409,7 +16521,7 @@ var require_websocket = __commonJS((exports, module) => {
|
|
|
16409
16521
|
};
|
|
16410
16522
|
});
|
|
16411
16523
|
|
|
16412
|
-
// ../../node_modules/.bun/undici@6.
|
|
16524
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/eventsource/util.js
|
|
16413
16525
|
var require_util8 = __commonJS((exports, module) => {
|
|
16414
16526
|
function isValidLastEventId(value) {
|
|
16415
16527
|
return value.indexOf("\x00") === -1;
|
|
@@ -16435,7 +16547,7 @@ var require_util8 = __commonJS((exports, module) => {
|
|
|
16435
16547
|
};
|
|
16436
16548
|
});
|
|
16437
16549
|
|
|
16438
|
-
// ../../node_modules/.bun/undici@6.
|
|
16550
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/eventsource/eventsource-stream.js
|
|
16439
16551
|
var require_eventsource_stream = __commonJS((exports, module) => {
|
|
16440
16552
|
var { Transform } = __require("node:stream");
|
|
16441
16553
|
var { isASCIINumber, isValidLastEventId } = require_util8();
|
|
@@ -16629,7 +16741,7 @@ ${value}`;
|
|
|
16629
16741
|
};
|
|
16630
16742
|
});
|
|
16631
16743
|
|
|
16632
|
-
// ../../node_modules/.bun/undici@6.
|
|
16744
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/lib/web/eventsource/eventsource.js
|
|
16633
16745
|
var require_eventsource = __commonJS((exports, module) => {
|
|
16634
16746
|
var { pipeline } = __require("node:stream");
|
|
16635
16747
|
var { fetching } = require_fetch();
|
|
@@ -18432,6 +18544,88 @@ function inferOperationKind(op) {
|
|
|
18432
18544
|
const segments = op.name ? op.name.split("/").filter(Boolean) : [];
|
|
18433
18545
|
return segments.length >= 3 ? "assertion" : "thing";
|
|
18434
18546
|
}
|
|
18547
|
+
// ../../packages/rules/src/component-manifest-hash.ts
|
|
18548
|
+
function stableJson(value) {
|
|
18549
|
+
if (!value || typeof value !== "object") {
|
|
18550
|
+
return JSON.stringify(value);
|
|
18551
|
+
}
|
|
18552
|
+
if (Array.isArray(value)) {
|
|
18553
|
+
return `[${value.map((entry) => stableJson(entry)).join(",")}]`;
|
|
18554
|
+
}
|
|
18555
|
+
const record = value;
|
|
18556
|
+
return `{${Object.keys(record).sort().map((key) => `${JSON.stringify(key)}:${stableJson(record[key])}`).join(",")}}`;
|
|
18557
|
+
}
|
|
18558
|
+
function stableJsonEquals(left, right) {
|
|
18559
|
+
return stableJson(left) === stableJson(right);
|
|
18560
|
+
}
|
|
18561
|
+
|
|
18562
|
+
// ../../packages/rules/src/component-name-templates.ts
|
|
18563
|
+
var COMPONENT_TEMPLATE_VALUES = {
|
|
18564
|
+
"org-name": (ctx) => ctx.orgName,
|
|
18565
|
+
"repo-name": (ctx) => ctx.repoName
|
|
18566
|
+
};
|
|
18567
|
+
var TEMPLATE_TOKEN_RE = /<([a-z-]+)>/g;
|
|
18568
|
+
function listComponentTemplateTokens(value) {
|
|
18569
|
+
const tokens = new Set;
|
|
18570
|
+
for (const match of value.matchAll(TEMPLATE_TOKEN_RE)) {
|
|
18571
|
+
if (match[1]) {
|
|
18572
|
+
tokens.add(match[1]);
|
|
18573
|
+
}
|
|
18574
|
+
}
|
|
18575
|
+
return [...tokens];
|
|
18576
|
+
}
|
|
18577
|
+
function unsupportedComponentTemplateTokens(value) {
|
|
18578
|
+
return listComponentTemplateTokens(value).filter((token) => !(token in COMPONENT_TEMPLATE_VALUES));
|
|
18579
|
+
}
|
|
18580
|
+
function resolveComponentTemplate(value, ctx) {
|
|
18581
|
+
return value.replace(TEMPLATE_TOKEN_RE, (_match, token) => {
|
|
18582
|
+
const resolver = COMPONENT_TEMPLATE_VALUES[token];
|
|
18583
|
+
if (!resolver) {
|
|
18584
|
+
throw new Error(`Unsupported component template token <${token}>`);
|
|
18585
|
+
}
|
|
18586
|
+
return resolver(ctx);
|
|
18587
|
+
});
|
|
18588
|
+
}
|
|
18589
|
+
|
|
18590
|
+
// ../../packages/rules/src/component-install.ts
|
|
18591
|
+
function manifestShapeData(shape) {
|
|
18592
|
+
const data = { fields: shape.fields };
|
|
18593
|
+
if (shape.description !== undefined)
|
|
18594
|
+
data.description = shape.description;
|
|
18595
|
+
return data;
|
|
18596
|
+
}
|
|
18597
|
+
function shapeDataEquals(left, right) {
|
|
18598
|
+
return stableJsonEquals(left, right);
|
|
18599
|
+
}
|
|
18600
|
+
function describeShapeDataMismatch(expected, actual) {
|
|
18601
|
+
const actualData = actual && typeof actual === "object" && !Array.isArray(actual) ? actual : {};
|
|
18602
|
+
const missing = [];
|
|
18603
|
+
const different = [];
|
|
18604
|
+
for (const key of Object.keys(expected)) {
|
|
18605
|
+
if (!(key in actualData)) {
|
|
18606
|
+
missing.push(key);
|
|
18607
|
+
} else if (!shapeDataEquals(expected[key], actualData[key])) {
|
|
18608
|
+
different.push(key);
|
|
18609
|
+
}
|
|
18610
|
+
}
|
|
18611
|
+
for (const key of Object.keys(actualData)) {
|
|
18612
|
+
if (!(key in expected)) {
|
|
18613
|
+
different.push(key);
|
|
18614
|
+
}
|
|
18615
|
+
}
|
|
18616
|
+
const parts = [];
|
|
18617
|
+
if (missing.length > 0)
|
|
18618
|
+
parts.push(`missing ${missing.join(", ")}`);
|
|
18619
|
+
if (different.length > 0)
|
|
18620
|
+
parts.push(`different ${different.join(", ")}`);
|
|
18621
|
+
return parts.length > 0 ? parts.join("; ") : "data differs";
|
|
18622
|
+
}
|
|
18623
|
+
function resolveManifestCredentialName(name, ctx) {
|
|
18624
|
+
return resolveComponentTemplate(name, {
|
|
18625
|
+
orgName: ctx.orgName,
|
|
18626
|
+
repoName: ctx.repoName
|
|
18627
|
+
});
|
|
18628
|
+
}
|
|
18435
18629
|
// ../../packages/rules/src/repo-auth-scopes.ts
|
|
18436
18630
|
var REPO_AUTH_SCOPES = [
|
|
18437
18631
|
"repo:read",
|
|
@@ -18799,53 +18993,6 @@ function validateComponentManifestCliContract(manifest) {
|
|
|
18799
18993
|
}
|
|
18800
18994
|
return findings;
|
|
18801
18995
|
}
|
|
18802
|
-
// ../../packages/rules/src/component-manifest-hash.ts
|
|
18803
|
-
function stableJson(value) {
|
|
18804
|
-
if (!value || typeof value !== "object") {
|
|
18805
|
-
return JSON.stringify(value);
|
|
18806
|
-
}
|
|
18807
|
-
if (Array.isArray(value)) {
|
|
18808
|
-
return `[${value.map((entry) => stableJson(entry)).join(",")}]`;
|
|
18809
|
-
}
|
|
18810
|
-
const record = value;
|
|
18811
|
-
return `{${Object.keys(record).sort().map((key) => `${JSON.stringify(key)}:${stableJson(record[key])}`).join(",")}}`;
|
|
18812
|
-
}
|
|
18813
|
-
function stableJsonEquals(left, right) {
|
|
18814
|
-
return stableJson(left) === stableJson(right);
|
|
18815
|
-
}
|
|
18816
|
-
async function computeComponentManifestHash(manifest) {
|
|
18817
|
-
const { createHash } = await import("node:crypto");
|
|
18818
|
-
const content = stableJson(manifest);
|
|
18819
|
-
return createHash("sha256").update(content).digest("hex").slice(0, 16);
|
|
18820
|
-
}
|
|
18821
|
-
// ../../packages/rules/src/component-name-templates.ts
|
|
18822
|
-
var COMPONENT_TEMPLATE_VALUES = {
|
|
18823
|
-
"org-name": (ctx) => ctx.orgName,
|
|
18824
|
-
"repo-name": (ctx) => ctx.repoName
|
|
18825
|
-
};
|
|
18826
|
-
var TEMPLATE_TOKEN_RE = /<([a-z-]+)>/g;
|
|
18827
|
-
function listComponentTemplateTokens(value) {
|
|
18828
|
-
const tokens = new Set;
|
|
18829
|
-
for (const match of value.matchAll(TEMPLATE_TOKEN_RE)) {
|
|
18830
|
-
if (match[1]) {
|
|
18831
|
-
tokens.add(match[1]);
|
|
18832
|
-
}
|
|
18833
|
-
}
|
|
18834
|
-
return [...tokens];
|
|
18835
|
-
}
|
|
18836
|
-
function unsupportedComponentTemplateTokens(value) {
|
|
18837
|
-
return listComponentTemplateTokens(value).filter((token) => !(token in COMPONENT_TEMPLATE_VALUES));
|
|
18838
|
-
}
|
|
18839
|
-
function resolveComponentTemplate(value, ctx) {
|
|
18840
|
-
return value.replace(TEMPLATE_TOKEN_RE, (_match, token) => {
|
|
18841
|
-
const resolver = COMPONENT_TEMPLATE_VALUES[token];
|
|
18842
|
-
if (!resolver) {
|
|
18843
|
-
throw new Error(`Unsupported component template token <${token}>`);
|
|
18844
|
-
}
|
|
18845
|
-
return resolver(ctx);
|
|
18846
|
-
});
|
|
18847
|
-
}
|
|
18848
|
-
|
|
18849
18996
|
// ../../packages/rules/src/component-version.ts
|
|
18850
18997
|
var SEMVER_RE = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/;
|
|
18851
18998
|
function isValidSemver(version) {
|
|
@@ -21294,7 +21441,7 @@ function findSystemComponent(componentId) {
|
|
|
21294
21441
|
// ../../packages/sdk-ts/package.json
|
|
21295
21442
|
var package_default = {
|
|
21296
21443
|
name: "@warmhub/sdk-ts",
|
|
21297
|
-
version: "0.
|
|
21444
|
+
version: "0.55.0",
|
|
21298
21445
|
private: false,
|
|
21299
21446
|
type: "module",
|
|
21300
21447
|
description: "The TypeScript SDK for WarmHub — create repos, commit and query data, and compound knowledge with your AI agents.",
|
|
@@ -22206,6 +22353,28 @@ class WarmHubClient {
|
|
|
22206
22353
|
throw toWarmHubError(error);
|
|
22207
22354
|
}
|
|
22208
22355
|
},
|
|
22356
|
+
install: async (orgName, repoName, componentRef) => {
|
|
22357
|
+
try {
|
|
22358
|
+
return await this.trpc.component.install.mutate({
|
|
22359
|
+
orgName,
|
|
22360
|
+
repoName,
|
|
22361
|
+
componentRef
|
|
22362
|
+
});
|
|
22363
|
+
} catch (error) {
|
|
22364
|
+
throw toWarmHubError(error);
|
|
22365
|
+
}
|
|
22366
|
+
},
|
|
22367
|
+
uninstall: async (orgName, repoName, componentRef) => {
|
|
22368
|
+
try {
|
|
22369
|
+
return await this.trpc.component.uninstall.mutate({
|
|
22370
|
+
orgName,
|
|
22371
|
+
repoName,
|
|
22372
|
+
componentRef
|
|
22373
|
+
});
|
|
22374
|
+
} catch (error) {
|
|
22375
|
+
throw toWarmHubError(error);
|
|
22376
|
+
}
|
|
22377
|
+
},
|
|
22209
22378
|
registry: {
|
|
22210
22379
|
register: async (orgName, componentName, input) => {
|
|
22211
22380
|
try {
|
|
@@ -24027,32 +24196,6 @@ function toCliError(err) {
|
|
|
24027
24196
|
const message = err instanceof Error ? err.message : String(err);
|
|
24028
24197
|
return new CliError(1 /* Runtime */, "UNKNOWN", message, err);
|
|
24029
24198
|
}
|
|
24030
|
-
function isAlreadyExistsError(err, seen = new WeakSet) {
|
|
24031
|
-
if (typeof err === "string") {
|
|
24032
|
-
return err.includes("already exists") || err.includes("ALREADY_EXISTS");
|
|
24033
|
-
}
|
|
24034
|
-
if (err === null || typeof err !== "object") {
|
|
24035
|
-
return false;
|
|
24036
|
-
}
|
|
24037
|
-
if (seen.has(err)) {
|
|
24038
|
-
return false;
|
|
24039
|
-
}
|
|
24040
|
-
seen.add(err);
|
|
24041
|
-
const payloadMessage = err.message;
|
|
24042
|
-
const message = err instanceof Error ? err.message : typeof payloadMessage === "string" ? payloadMessage : undefined;
|
|
24043
|
-
const isAlreadyExistsMessage = message !== undefined && (message.includes("already exists") || message.includes("ALREADY_EXISTS"));
|
|
24044
|
-
const code = err.code;
|
|
24045
|
-
if (code === "ALREADY_EXISTS") {
|
|
24046
|
-
return true;
|
|
24047
|
-
}
|
|
24048
|
-
if (code === "CONFLICT") {
|
|
24049
|
-
return isAlreadyExistsMessage;
|
|
24050
|
-
}
|
|
24051
|
-
if (isAlreadyExistsMessage) {
|
|
24052
|
-
return true;
|
|
24053
|
-
}
|
|
24054
|
-
return isAlreadyExistsError(err.cause, seen);
|
|
24055
|
-
}
|
|
24056
24199
|
function generateSuggestions(code, message, context, errorCode) {
|
|
24057
24200
|
const suggestions = [];
|
|
24058
24201
|
if (code === "CONFIG" && (message.includes("repo") || message.includes("WARMHUB_REPO"))) {
|
|
@@ -31202,7 +31345,7 @@ async function fetchAllSummaries(client, org, repo) {
|
|
|
31202
31345
|
return items;
|
|
31203
31346
|
}
|
|
31204
31347
|
function filterActiveItems(items) {
|
|
31205
|
-
return items.filter((i) => i.active && i.state !== "paused" && i.state !== "error");
|
|
31348
|
+
return items.filter((i) => i.active && i.state !== "uninstalled" && i.state !== "paused" && i.state !== "error");
|
|
31206
31349
|
}
|
|
31207
31350
|
function extractRegisteredRef(data) {
|
|
31208
31351
|
if (typeof data !== "object" || data === null)
|
|
@@ -31610,82 +31753,8 @@ async function runGlobalSearchCommand(ctx, args) {
|
|
|
31610
31753
|
}
|
|
31611
31754
|
});
|
|
31612
31755
|
}
|
|
31613
|
-
|
|
31614
|
-
// ../../packages/warmhub-cli/src/manifest/name-resolution.ts
|
|
31615
|
-
function resolveManifestCredentialName(name, ctx) {
|
|
31616
|
-
return resolveComponentTemplate(name, {
|
|
31617
|
-
orgName: ctx.orgName,
|
|
31618
|
-
repoName: ctx.repoName
|
|
31619
|
-
});
|
|
31620
|
-
}
|
|
31621
|
-
function resolveManifestCredentialNames(names, ctx) {
|
|
31622
|
-
return (names ?? []).map((name) => resolveManifestCredentialName(name, ctx));
|
|
31623
|
-
}
|
|
31624
|
-
|
|
31625
|
-
// ../../packages/warmhub-cli/src/manifest/shape-data.ts
|
|
31626
|
-
function manifestShapeData(shape) {
|
|
31627
|
-
const data = { fields: shape.fields };
|
|
31628
|
-
if (shape.description !== undefined)
|
|
31629
|
-
data.description = shape.description;
|
|
31630
|
-
return data;
|
|
31631
|
-
}
|
|
31632
|
-
function shapeDataEquals(left, right) {
|
|
31633
|
-
return stableJsonEquals(left, right);
|
|
31634
|
-
}
|
|
31635
|
-
function describeShapeDataMismatch(expected, actual) {
|
|
31636
|
-
const actualData = actual && typeof actual === "object" && !Array.isArray(actual) ? actual : {};
|
|
31637
|
-
const missing = [];
|
|
31638
|
-
const different = [];
|
|
31639
|
-
for (const key of Object.keys(expected)) {
|
|
31640
|
-
if (!(key in actualData)) {
|
|
31641
|
-
missing.push(key);
|
|
31642
|
-
} else if (!shapeDataEquals(expected[key], actualData[key])) {
|
|
31643
|
-
different.push(key);
|
|
31644
|
-
}
|
|
31645
|
-
}
|
|
31646
|
-
for (const key of Object.keys(actualData)) {
|
|
31647
|
-
if (!(key in expected)) {
|
|
31648
|
-
different.push(key);
|
|
31649
|
-
}
|
|
31650
|
-
}
|
|
31651
|
-
const parts = [];
|
|
31652
|
-
if (missing.length > 0)
|
|
31653
|
-
parts.push(`missing ${missing.join(", ")}`);
|
|
31654
|
-
if (different.length > 0)
|
|
31655
|
-
parts.push(`different ${different.join(", ")}`);
|
|
31656
|
-
return parts.length > 0 ? parts.join("; ") : "data differs";
|
|
31657
|
-
}
|
|
31658
|
-
|
|
31659
31756
|
// ../../packages/warmhub-cli/src/manifest/shared-infra.ts
|
|
31660
31757
|
var SHARED_INFRA_SHAPES = findSystemComponent(SYSTEM_COMPONENT_ID)?.shapes ?? [];
|
|
31661
|
-
async function ensureSharedInfra(client, org, repo) {
|
|
31662
|
-
for (const shape of SHARED_INFRA_SHAPES) {
|
|
31663
|
-
try {
|
|
31664
|
-
await client.commit.apply(org, repo, `Ensure ${shape.name} shape`, [
|
|
31665
|
-
{
|
|
31666
|
-
operation: "add",
|
|
31667
|
-
kind: "shape",
|
|
31668
|
-
name: shape.name,
|
|
31669
|
-
data: { fields: shape.fields }
|
|
31670
|
-
}
|
|
31671
|
-
], { componentRef: SYSTEM_REGISTERED_COMPONENT_REF });
|
|
31672
|
-
} catch (err) {
|
|
31673
|
-
if (!isAlreadyExistsError(err)) {
|
|
31674
|
-
throw err;
|
|
31675
|
-
}
|
|
31676
|
-
try {
|
|
31677
|
-
await client.commit.apply(org, repo, `Tag ${shape.name} with system componentId`, [
|
|
31678
|
-
{
|
|
31679
|
-
operation: "revise",
|
|
31680
|
-
kind: "shape",
|
|
31681
|
-
name: shape.name,
|
|
31682
|
-
data: { fields: shape.fields }
|
|
31683
|
-
}
|
|
31684
|
-
], { componentRef: SYSTEM_REGISTERED_COMPONENT_REF });
|
|
31685
|
-
} catch {}
|
|
31686
|
-
}
|
|
31687
|
-
}
|
|
31688
|
-
}
|
|
31689
31758
|
|
|
31690
31759
|
// ../../packages/warmhub-cli/src/manifest/doctor.ts
|
|
31691
31760
|
async function doctorComponent(client, org, repo, componentId) {
|
|
@@ -31732,6 +31801,14 @@ async function doctorComponent(client, org, repo, componentId) {
|
|
|
31732
31801
|
});
|
|
31733
31802
|
return { componentId, componentName, state: "error", findings };
|
|
31734
31803
|
}
|
|
31804
|
+
if (existingState === "uninstalled") {
|
|
31805
|
+
findings.push({
|
|
31806
|
+
resource: "state",
|
|
31807
|
+
status: "inactive",
|
|
31808
|
+
message: "Component is uninstalled; reinstall to revive it"
|
|
31809
|
+
});
|
|
31810
|
+
return { componentId, componentName, state: "uninstalled", findings };
|
|
31811
|
+
}
|
|
31735
31812
|
let manifest;
|
|
31736
31813
|
try {
|
|
31737
31814
|
const raw = typeof installData.manifest === "string" ? installData.manifest : undefined;
|
|
@@ -31969,129 +32046,6 @@ function parseComponentPackage(dirPath) {
|
|
|
31969
32046
|
};
|
|
31970
32047
|
}
|
|
31971
32048
|
|
|
31972
|
-
// ../../packages/warmhub-cli/src/manifest/teardown.ts
|
|
31973
|
-
async function teardownComponent(client, org, repo, componentId) {
|
|
31974
|
-
const steps = [];
|
|
31975
|
-
const errors = [];
|
|
31976
|
-
let installData;
|
|
31977
|
-
try {
|
|
31978
|
-
const thing = await client.thing.get(org, repo, `ComponentInstall/${componentId}`);
|
|
31979
|
-
installData = thing.data && typeof thing.data === "object" ? thing.data : {};
|
|
31980
|
-
} catch {
|
|
31981
|
-
return {
|
|
31982
|
-
componentId,
|
|
31983
|
-
componentName: componentId,
|
|
31984
|
-
state: "error",
|
|
31985
|
-
steps: [
|
|
31986
|
-
{
|
|
31987
|
-
step: "load-install",
|
|
31988
|
-
status: "error",
|
|
31989
|
-
message: `ComponentInstall/${componentId} not found`
|
|
31990
|
-
}
|
|
31991
|
-
],
|
|
31992
|
-
errors: [`ComponentInstall/${componentId} not found`]
|
|
31993
|
-
};
|
|
31994
|
-
}
|
|
31995
|
-
const componentName = typeof installData.name === "string" ? installData.name : componentId;
|
|
31996
|
-
const registeredComponentRef = typeof installData.registeredComponentRef === "string" && installData.registeredComponentRef.length > 0 ? installData.registeredComponentRef : undefined;
|
|
31997
|
-
if (!registeredComponentRef) {
|
|
31998
|
-
return {
|
|
31999
|
-
componentId,
|
|
32000
|
-
componentName,
|
|
32001
|
-
state: "error",
|
|
32002
|
-
steps: [
|
|
32003
|
-
{
|
|
32004
|
-
step: "load-install",
|
|
32005
|
-
status: "error",
|
|
32006
|
-
message: "Install record is missing registeredComponentRef"
|
|
32007
|
-
}
|
|
32008
|
-
],
|
|
32009
|
-
errors: ["Install record is missing registeredComponentRef"]
|
|
32010
|
-
};
|
|
32011
|
-
}
|
|
32012
|
-
let subscriptionNames = [];
|
|
32013
|
-
let teardownPolicy = {};
|
|
32014
|
-
try {
|
|
32015
|
-
const raw = typeof installData.manifest === "string" ? installData.manifest : undefined;
|
|
32016
|
-
if (raw) {
|
|
32017
|
-
const manifest = JSON.parse(raw);
|
|
32018
|
-
subscriptionNames = (manifest.subscriptions ?? []).map((s) => s.name);
|
|
32019
|
-
teardownPolicy = manifest.teardown ?? {};
|
|
32020
|
-
}
|
|
32021
|
-
} catch {
|
|
32022
|
-
errors.push("Failed to parse manifest — cannot identify subscriptions");
|
|
32023
|
-
steps.push({
|
|
32024
|
-
step: "parse-manifest",
|
|
32025
|
-
status: "error",
|
|
32026
|
-
message: "Invalid manifest JSON"
|
|
32027
|
-
});
|
|
32028
|
-
}
|
|
32029
|
-
const subPolicy = teardownPolicy.subscriptions?.onDisable ?? "pause";
|
|
32030
|
-
if (subPolicy === "pause") {
|
|
32031
|
-
for (const subName of subscriptionNames) {
|
|
32032
|
-
try {
|
|
32033
|
-
const sub = await client.subscription.get(org, repo, subName);
|
|
32034
|
-
const ownerComponentRef = sub && typeof sub === "object" && "componentRef" in sub ? sub.componentRef : undefined;
|
|
32035
|
-
if (typeof ownerComponentRef === "string" && ownerComponentRef !== registeredComponentRef) {
|
|
32036
|
-
const msg = `Subscription "${subName}" is owned by "${ownerComponentRef}", not "${registeredComponentRef}"`;
|
|
32037
|
-
errors.push(msg);
|
|
32038
|
-
steps.push({
|
|
32039
|
-
step: `pause-${subName}`,
|
|
32040
|
-
status: "error",
|
|
32041
|
-
message: msg
|
|
32042
|
-
});
|
|
32043
|
-
continue;
|
|
32044
|
-
}
|
|
32045
|
-
await client.subscription.pause(org, repo, subName);
|
|
32046
|
-
steps.push({ step: `pause-${subName}`, status: "ok" });
|
|
32047
|
-
} catch (err) {
|
|
32048
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
32049
|
-
if (msg.includes("already paused") || msg.includes("not active")) {
|
|
32050
|
-
steps.push({
|
|
32051
|
-
step: `pause-${subName}`,
|
|
32052
|
-
status: "skipped",
|
|
32053
|
-
message: "Already paused"
|
|
32054
|
-
});
|
|
32055
|
-
} else if (msg.includes("not found") || msg.includes("NOT_FOUND")) {
|
|
32056
|
-
steps.push({
|
|
32057
|
-
step: `pause-${subName}`,
|
|
32058
|
-
status: "skipped",
|
|
32059
|
-
message: "Subscription not found"
|
|
32060
|
-
});
|
|
32061
|
-
} else {
|
|
32062
|
-
errors.push(`Failed to pause ${subName}: ${msg}`);
|
|
32063
|
-
steps.push({
|
|
32064
|
-
step: `pause-${subName}`,
|
|
32065
|
-
status: "error",
|
|
32066
|
-
message: msg
|
|
32067
|
-
});
|
|
32068
|
-
}
|
|
32069
|
-
}
|
|
32070
|
-
}
|
|
32071
|
-
}
|
|
32072
|
-
const state = errors.length > 0 ? "degraded" : "paused";
|
|
32073
|
-
try {
|
|
32074
|
-
await client.commit.apply(org, repo, `Teardown ${componentName}: ${state}`, [
|
|
32075
|
-
{
|
|
32076
|
-
operation: "revise",
|
|
32077
|
-
kind: "thing",
|
|
32078
|
-
name: `ComponentInstall/${componentId}`,
|
|
32079
|
-
data: {
|
|
32080
|
-
...installData,
|
|
32081
|
-
state,
|
|
32082
|
-
updatedAt: new Date().toISOString()
|
|
32083
|
-
}
|
|
32084
|
-
}
|
|
32085
|
-
], { componentRef: SYSTEM_REGISTERED_COMPONENT_REF });
|
|
32086
|
-
steps.push({ step: "update-state", status: "ok" });
|
|
32087
|
-
} catch (err) {
|
|
32088
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
32089
|
-
errors.push(`Failed to update state: ${msg}`);
|
|
32090
|
-
steps.push({ step: "update-state", status: "error", message: msg });
|
|
32091
|
-
}
|
|
32092
|
-
return { componentId, componentName, state, steps, errors };
|
|
32093
|
-
}
|
|
32094
|
-
|
|
32095
32049
|
// ../../packages/warmhub-cli/src/manifest/validate.ts
|
|
32096
32050
|
function crossValidate(pkg) {
|
|
32097
32051
|
const findings = [];
|
|
@@ -32619,31 +32573,25 @@ var handleTeardown = async (ctx, { args }) => {
|
|
|
32619
32573
|
}
|
|
32620
32574
|
const { org, repo } = parseOrgRepo(getRepoRef(ctx), ctx.config);
|
|
32621
32575
|
const repoSlug = `${org}/${repo}`;
|
|
32622
|
-
const componentId = await resolveInstalledComponentRefId(ctx.client, org, repo, name);
|
|
32623
32576
|
let result;
|
|
32624
32577
|
try {
|
|
32625
|
-
result = await
|
|
32578
|
+
result = await ctx.client.component.uninstall(org, repo, name);
|
|
32626
32579
|
} catch (error) {
|
|
32627
32580
|
invalidateInstallSnapshotCache(repoSlug);
|
|
32628
32581
|
throw error;
|
|
32629
32582
|
}
|
|
32630
|
-
|
|
32631
|
-
|
|
32632
|
-
|
|
32633
|
-
|
|
32634
|
-
await refreshInstallSnapshotCache(repoSlug, ctx.client);
|
|
32635
|
-
} catch {}
|
|
32636
|
-
}
|
|
32583
|
+
invalidateInstallSnapshotCache(repoSlug);
|
|
32584
|
+
try {
|
|
32585
|
+
await refreshInstallSnapshotCache(repoSlug, ctx.client);
|
|
32586
|
+
} catch {}
|
|
32637
32587
|
writeOutput(ctx, result, () => renderTeardownResult(ctx, result));
|
|
32638
|
-
if (result.errors.length > 0) {
|
|
32639
|
-
throw new CliError(1 /* Runtime */, "UNKNOWN", "Teardown had errors");
|
|
32640
|
-
}
|
|
32641
32588
|
};
|
|
32642
32589
|
function stateToColor(c, state) {
|
|
32643
32590
|
switch (state) {
|
|
32644
32591
|
case "ready":
|
|
32645
32592
|
return c.green;
|
|
32646
32593
|
case "paused":
|
|
32594
|
+
case "uninstalled":
|
|
32647
32595
|
return c.yellow;
|
|
32648
32596
|
case "degraded":
|
|
32649
32597
|
return c.red;
|
|
@@ -32669,12 +32617,15 @@ function renderTeardownResult(ctx, result) {
|
|
|
32669
32617
|
const c = ctx.colors;
|
|
32670
32618
|
const stateColor = stateToColor(c, result.state);
|
|
32671
32619
|
ctx.out(`${c.bold}Teardown:${c.reset} ${c.cyan}${result.componentName}${c.reset} ${stateColor}${result.state}${c.reset}`);
|
|
32672
|
-
|
|
32673
|
-
|
|
32674
|
-
|
|
32620
|
+
if (result.pausedSubscriptions.length > 0) {
|
|
32621
|
+
ctx.out(` ${c.green}paused${c.reset} ${result.pausedSubscriptions.length} subscription(s): ${result.pausedSubscriptions.join(", ")}`);
|
|
32622
|
+
}
|
|
32623
|
+
if (result.tokensRevoked > 0) {
|
|
32624
|
+
ctx.out(` ${c.green}revoked${c.reset} ${result.tokensRevoked} token(s)`);
|
|
32675
32625
|
}
|
|
32676
|
-
|
|
32677
|
-
|
|
32626
|
+
ctx.out(` uninstall callback: ${result.uninstallDispatched ? `${c.green}dispatched${c.reset}` : `${c.dim}not dispatched${c.reset}`}`);
|
|
32627
|
+
for (const warning of result.warnings) {
|
|
32628
|
+
ctx.out(` ${c.yellow}warning${c.reset}: ${warning}`);
|
|
32678
32629
|
}
|
|
32679
32630
|
}
|
|
32680
32631
|
function renderRegistryEntry(ctx, entry) {
|
|
@@ -38187,862 +38138,6 @@ async function dispatch(ctx) {
|
|
|
38187
38138
|
const hint = ctx._domainHint ? ` ${ctx._domainHint}` : "";
|
|
38188
38139
|
throw new CliError(2 /* UserInput */, "USER_INPUT", `Unknown command: ${command}`, undefined, hint.trim() || "Run 'wh help' for available commands.");
|
|
38189
38140
|
}
|
|
38190
|
-
// ../../packages/warmhub-cli/src/manifest/action-compiler.ts
|
|
38191
|
-
function compileSubscription(subscription) {
|
|
38192
|
-
if (!subscription.webhookUrl || subscription.webhookUrl.trim().length === 0) {
|
|
38193
|
-
throw new Error(`Subscription "${subscription.name}" must declare a non-empty "webhookUrl".`);
|
|
38194
|
-
}
|
|
38195
|
-
if (subscription.trigger.kind === "cron") {
|
|
38196
|
-
throw new Error(`Subscription "${subscription.name}" uses a cron trigger; cron subscriptions are no longer supported. Use an event trigger instead.`);
|
|
38197
|
-
}
|
|
38198
|
-
if (subscription.trigger.kind === "event") {
|
|
38199
|
-
return {
|
|
38200
|
-
name: subscription.name,
|
|
38201
|
-
kind: "webhook",
|
|
38202
|
-
shapeName: subscription.trigger.shape,
|
|
38203
|
-
filterJson: subscription.trigger.filter ?? {
|
|
38204
|
-
shape: subscription.trigger.shape
|
|
38205
|
-
},
|
|
38206
|
-
webhookUrl: subscription.webhookUrl,
|
|
38207
|
-
fallbackWebhookUrl: subscription.fallbackWebhookUrl,
|
|
38208
|
-
credentials: subscription.credentials ?? []
|
|
38209
|
-
};
|
|
38210
|
-
}
|
|
38211
|
-
const triggerKind = subscription.trigger.kind;
|
|
38212
|
-
throw new Error(`Subscription "${subscription.name}" has unsupported trigger kind "${triggerKind}".`);
|
|
38213
|
-
}
|
|
38214
|
-
// ../../packages/warmhub-cli/src/manifest/reconciler.ts
|
|
38215
|
-
function normalizeCredentialBindings(names) {
|
|
38216
|
-
return [...new Set(names)].sort();
|
|
38217
|
-
}
|
|
38218
|
-
async function reconcileComponent(client, org, repo, pkg, source, existingInstall) {
|
|
38219
|
-
const steps = [];
|
|
38220
|
-
const errors = [];
|
|
38221
|
-
const { meta, manifest } = pkg;
|
|
38222
|
-
const componentId = meta.id;
|
|
38223
|
-
const componentRef = source.registeredComponentRef;
|
|
38224
|
-
const validation = validateComponentPackage(pkg);
|
|
38225
|
-
if (!validation.valid) {
|
|
38226
|
-
const validationErrors = validation.findings.filter((f) => f.level === "error").map((f) => f.message);
|
|
38227
|
-
return {
|
|
38228
|
-
ok: false,
|
|
38229
|
-
componentId,
|
|
38230
|
-
componentName: meta.name,
|
|
38231
|
-
version: meta.version,
|
|
38232
|
-
state: "error",
|
|
38233
|
-
steps: [
|
|
38234
|
-
{
|
|
38235
|
-
step: "validate",
|
|
38236
|
-
status: "error",
|
|
38237
|
-
message: validationErrors.join("; ")
|
|
38238
|
-
}
|
|
38239
|
-
],
|
|
38240
|
-
errors: validationErrors,
|
|
38241
|
-
setupCreates: []
|
|
38242
|
-
};
|
|
38243
|
-
}
|
|
38244
|
-
steps.push({ step: "validate", status: "ok" });
|
|
38245
|
-
const partitionedShapes = partitionByProvisioning(manifest.shapes, "Shape");
|
|
38246
|
-
const partitionedCreds = partitionByProvisioning(manifest.credentials, "CredentialSet");
|
|
38247
|
-
const partitionedSubs = partitionByProvisioning(manifest.subscriptions, "Subscription");
|
|
38248
|
-
const setupCreates = [
|
|
38249
|
-
...partitionedShapes.setupRefs,
|
|
38250
|
-
...partitionedCreds.setupRefs,
|
|
38251
|
-
...partitionedSubs.setupRefs
|
|
38252
|
-
];
|
|
38253
|
-
const reconcileShapes = partitionedShapes.manifestEntries;
|
|
38254
|
-
const reconcileCreds = partitionedCreds.manifestEntries;
|
|
38255
|
-
const reconcileSubs = partitionedSubs.manifestEntries;
|
|
38256
|
-
await ensureSharedInfra(client, org, repo);
|
|
38257
|
-
steps.push({ step: "ensure-shared-infra", status: "ok" });
|
|
38258
|
-
const existingData = existingInstall.data;
|
|
38259
|
-
const persistedInstallId = typeof existingData?.installId === "string" ? existingData.installId : null;
|
|
38260
|
-
let oldManifest;
|
|
38261
|
-
if (existingData?.manifest && typeof existingData.manifest === "string") {
|
|
38262
|
-
try {
|
|
38263
|
-
oldManifest = JSON.parse(existingData.manifest);
|
|
38264
|
-
} catch {}
|
|
38265
|
-
}
|
|
38266
|
-
const previousState = typeof existingData?.state === "string" ? existingData.state : "";
|
|
38267
|
-
const isFailedInstallState = previousState === "error" || previousState === "installing";
|
|
38268
|
-
const wasIncomplete = isFailedInstallState;
|
|
38269
|
-
const oldShapeNames = wasIncomplete ? new Set : new Set(oldManifest?.shapes?.map((s) => s.name) ?? []);
|
|
38270
|
-
const oldSubNames = wasIncomplete ? new Set : new Set(oldManifest?.subscriptions?.map((s) => s.name) ?? []);
|
|
38271
|
-
const oldCredNames = wasIncomplete ? new Set : new Set(oldManifest?.credentials?.map((c) => c.name) ?? []);
|
|
38272
|
-
const liveShapeNames = new Set;
|
|
38273
|
-
const liveShapeDataByName = new Map;
|
|
38274
|
-
const liveShapeComponentRefByName = new Map;
|
|
38275
|
-
for (const shape of reconcileShapes) {
|
|
38276
|
-
if (isFailedInstallState || previousState !== "degraded" && !oldShapeNames.has(shape.name)) {
|
|
38277
|
-
continue;
|
|
38278
|
-
}
|
|
38279
|
-
try {
|
|
38280
|
-
const liveThing = await client.thing.get(org, repo, shape.name, undefined, {
|
|
38281
|
-
includeRetracted: true
|
|
38282
|
-
});
|
|
38283
|
-
if (liveThing.active === false)
|
|
38284
|
-
continue;
|
|
38285
|
-
liveShapeNames.add(shape.name);
|
|
38286
|
-
try {
|
|
38287
|
-
const liveShape = await client.shape.get(org, repo, shape.name, {
|
|
38288
|
-
includeRetracted: true
|
|
38289
|
-
});
|
|
38290
|
-
liveShapeDataByName.set(shape.name, liveShape.version?.data);
|
|
38291
|
-
liveShapeComponentRefByName.set(shape.name, liveShape.componentRef);
|
|
38292
|
-
} catch {}
|
|
38293
|
-
} catch {}
|
|
38294
|
-
}
|
|
38295
|
-
const liveSubNames = new Set;
|
|
38296
|
-
for (const sub of reconcileSubs) {
|
|
38297
|
-
if (wasIncomplete || !oldSubNames.has(sub.name))
|
|
38298
|
-
continue;
|
|
38299
|
-
try {
|
|
38300
|
-
await client.subscription.get(org, repo, sub.name);
|
|
38301
|
-
liveSubNames.add(sub.name);
|
|
38302
|
-
} catch {}
|
|
38303
|
-
}
|
|
38304
|
-
const liveCredNames = new Set;
|
|
38305
|
-
for (const cred of reconcileCreds) {
|
|
38306
|
-
if (wasIncomplete || !oldCredNames.has(cred.name))
|
|
38307
|
-
continue;
|
|
38308
|
-
const credentialSetName = resolveManifestCredentialName(cred.name, {
|
|
38309
|
-
orgName: org,
|
|
38310
|
-
repoName: repo
|
|
38311
|
-
});
|
|
38312
|
-
try {
|
|
38313
|
-
await client.credential.getSet(org, repo, credentialSetName);
|
|
38314
|
-
liveCredNames.add(cred.name);
|
|
38315
|
-
} catch {}
|
|
38316
|
-
}
|
|
38317
|
-
const newShapes = reconcileShapes.filter((s) => !liveShapeNames.has(s.name));
|
|
38318
|
-
if (newShapes.length > 0) {
|
|
38319
|
-
const shapeOps = newShapes.map((shape) => ({
|
|
38320
|
-
operation: "add",
|
|
38321
|
-
kind: "shape",
|
|
38322
|
-
name: shape.name,
|
|
38323
|
-
data: manifestShapeData(shape)
|
|
38324
|
-
}));
|
|
38325
|
-
try {
|
|
38326
|
-
await client.commit.apply(org, repo, `Add new shapes for ${meta.name}`, shapeOps, { componentRef });
|
|
38327
|
-
steps.push({ step: "add-new-shapes", status: "ok" });
|
|
38328
|
-
} catch (err) {
|
|
38329
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
38330
|
-
if (isAlreadyExistsError(err)) {
|
|
38331
|
-
steps.push({ step: "add-new-shapes", status: "skipped" });
|
|
38332
|
-
} else {
|
|
38333
|
-
errors.push(`Failed to add new shapes: ${msg}`);
|
|
38334
|
-
steps.push({ step: "add-new-shapes", status: "error", message: msg });
|
|
38335
|
-
}
|
|
38336
|
-
}
|
|
38337
|
-
}
|
|
38338
|
-
const changedShapes = reconcileShapes.filter((shape) => {
|
|
38339
|
-
if (!liveShapeNames.has(shape.name))
|
|
38340
|
-
return false;
|
|
38341
|
-
const liveData = liveShapeDataByName.get(shape.name);
|
|
38342
|
-
const liveComponentRef = liveShapeComponentRefByName.get(shape.name);
|
|
38343
|
-
return liveComponentRef !== componentRef || !shapeDataEquals(manifestShapeData(shape), liveData);
|
|
38344
|
-
});
|
|
38345
|
-
if (changedShapes.length > 0) {
|
|
38346
|
-
const shapeOps = changedShapes.map((shape) => ({
|
|
38347
|
-
operation: "revise",
|
|
38348
|
-
kind: "shape",
|
|
38349
|
-
name: shape.name,
|
|
38350
|
-
data: manifestShapeData(shape)
|
|
38351
|
-
}));
|
|
38352
|
-
try {
|
|
38353
|
-
await client.commit.apply(org, repo, `Reconcile shapes for ${meta.name}`, shapeOps, { componentRef });
|
|
38354
|
-
steps.push({ step: "claim-existing-shapes", status: "ok" });
|
|
38355
|
-
} catch (err) {
|
|
38356
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
38357
|
-
errors.push(`Failed to reconcile existing shapes: ${msg}`);
|
|
38358
|
-
steps.push({
|
|
38359
|
-
step: "claim-existing-shapes",
|
|
38360
|
-
status: "error",
|
|
38361
|
-
message: msg
|
|
38362
|
-
});
|
|
38363
|
-
}
|
|
38364
|
-
}
|
|
38365
|
-
const newCreds = reconcileCreds.filter((c) => !oldCredNames.has(c.name) || !liveCredNames.has(c.name));
|
|
38366
|
-
for (const cred of newCreds) {
|
|
38367
|
-
const credentialSetName = resolveManifestCredentialName(cred.name, {
|
|
38368
|
-
orgName: org,
|
|
38369
|
-
repoName: repo
|
|
38370
|
-
});
|
|
38371
|
-
try {
|
|
38372
|
-
await client.credential.createSet(org, repo, credentialSetName, {
|
|
38373
|
-
scope: "repo",
|
|
38374
|
-
description: cred.description
|
|
38375
|
-
});
|
|
38376
|
-
steps.push({ step: `add-credential-${credentialSetName}`, status: "ok" });
|
|
38377
|
-
} catch (err) {
|
|
38378
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
38379
|
-
if (isAlreadyExistsError(err)) {
|
|
38380
|
-
steps.push({
|
|
38381
|
-
step: `add-credential-${credentialSetName}`,
|
|
38382
|
-
status: "skipped"
|
|
38383
|
-
});
|
|
38384
|
-
} else {
|
|
38385
|
-
errors.push(`Failed to add credential ${credentialSetName}: ${msg}`);
|
|
38386
|
-
steps.push({
|
|
38387
|
-
step: `add-credential-${credentialSetName}`,
|
|
38388
|
-
status: "error",
|
|
38389
|
-
message: msg
|
|
38390
|
-
});
|
|
38391
|
-
}
|
|
38392
|
-
}
|
|
38393
|
-
}
|
|
38394
|
-
const newSubs = reconcileSubs.filter((s) => !oldSubNames.has(s.name) || !liveSubNames.has(s.name));
|
|
38395
|
-
for (const sub of newSubs) {
|
|
38396
|
-
let compiled;
|
|
38397
|
-
try {
|
|
38398
|
-
compiled = compileSubscription(sub);
|
|
38399
|
-
} catch (err) {
|
|
38400
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
38401
|
-
errors.push(`Failed to compile subscription ${sub.name}: ${msg}`);
|
|
38402
|
-
steps.push({
|
|
38403
|
-
step: `add-sub-${sub.name}`,
|
|
38404
|
-
status: "error",
|
|
38405
|
-
message: msg
|
|
38406
|
-
});
|
|
38407
|
-
continue;
|
|
38408
|
-
}
|
|
38409
|
-
try {
|
|
38410
|
-
await client.subscription.create({
|
|
38411
|
-
orgName: org,
|
|
38412
|
-
repoName: repo,
|
|
38413
|
-
name: compiled.name,
|
|
38414
|
-
kind: compiled.kind,
|
|
38415
|
-
shapeName: compiled.shapeName,
|
|
38416
|
-
filterJson: compiled.filterJson,
|
|
38417
|
-
webhookUrl: compiled.webhookUrl,
|
|
38418
|
-
fallbackWebhookUrl: compiled.fallbackWebhookUrl,
|
|
38419
|
-
componentRef
|
|
38420
|
-
});
|
|
38421
|
-
steps.push({ step: `add-sub-${sub.name}`, status: "ok" });
|
|
38422
|
-
} catch (err) {
|
|
38423
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
38424
|
-
if (isAlreadyExistsError(err)) {
|
|
38425
|
-
steps.push({ step: `add-sub-${sub.name}`, status: "skipped" });
|
|
38426
|
-
} else {
|
|
38427
|
-
errors.push(`Failed to add subscription ${sub.name}: ${msg}`);
|
|
38428
|
-
steps.push({
|
|
38429
|
-
step: `add-sub-${sub.name}`,
|
|
38430
|
-
status: "error",
|
|
38431
|
-
message: msg
|
|
38432
|
-
});
|
|
38433
|
-
}
|
|
38434
|
-
}
|
|
38435
|
-
for (const credName of resolveManifestCredentialNames(compiled.credentials, {
|
|
38436
|
-
orgName: org,
|
|
38437
|
-
repoName: repo
|
|
38438
|
-
})) {
|
|
38439
|
-
try {
|
|
38440
|
-
await client.subscription.bindCredentials(org, repo, compiled.name, credName);
|
|
38441
|
-
} catch {}
|
|
38442
|
-
}
|
|
38443
|
-
}
|
|
38444
|
-
const existingSubs = reconcileSubs.filter((s) => oldSubNames.has(s.name) && liveSubNames.has(s.name));
|
|
38445
|
-
for (const sub of existingSubs) {
|
|
38446
|
-
const stepName = `update-sub-${sub.name}`;
|
|
38447
|
-
let compiled;
|
|
38448
|
-
try {
|
|
38449
|
-
compiled = compileSubscription(sub);
|
|
38450
|
-
} catch (err) {
|
|
38451
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
38452
|
-
errors.push(`Failed to compile subscription ${sub.name}: ${msg}`);
|
|
38453
|
-
steps.push({ step: stepName, status: "error", message: msg });
|
|
38454
|
-
continue;
|
|
38455
|
-
}
|
|
38456
|
-
try {
|
|
38457
|
-
const liveSub = await client.subscription.get(org, repo, sub.name);
|
|
38458
|
-
if (liveSub.componentRef && liveSub.componentRef !== componentRef) {
|
|
38459
|
-
const msg = `Subscription "${sub.name}" is owned by component "${liveSub.componentRef}"`;
|
|
38460
|
-
errors.push(msg);
|
|
38461
|
-
steps.push({ step: stepName, status: "error", message: msg });
|
|
38462
|
-
continue;
|
|
38463
|
-
}
|
|
38464
|
-
const replacedLegacyCron = liveSub.kind === "cron";
|
|
38465
|
-
if (replacedLegacyCron) {
|
|
38466
|
-
await client.subscription.remove(org, repo, sub.name);
|
|
38467
|
-
try {
|
|
38468
|
-
await client.subscription.create({
|
|
38469
|
-
orgName: org,
|
|
38470
|
-
repoName: repo,
|
|
38471
|
-
name: compiled.name,
|
|
38472
|
-
kind: compiled.kind,
|
|
38473
|
-
shapeName: compiled.shapeName,
|
|
38474
|
-
filterJson: compiled.filterJson,
|
|
38475
|
-
webhookUrl: compiled.webhookUrl,
|
|
38476
|
-
fallbackWebhookUrl: compiled.fallbackWebhookUrl,
|
|
38477
|
-
componentRef
|
|
38478
|
-
});
|
|
38479
|
-
} catch (createErr) {
|
|
38480
|
-
const createMsg = createErr instanceof Error ? createErr.message : String(createErr);
|
|
38481
|
-
throw new Error(`Failed to create replacement webhook subscription: ${createMsg}; the deactivated legacy cron subscription was deleted — re-run reconcile to create the webhook subscription`);
|
|
38482
|
-
}
|
|
38483
|
-
if (liveSub.active === false) {
|
|
38484
|
-
await client.subscription.pause(org, repo, sub.name);
|
|
38485
|
-
}
|
|
38486
|
-
} else {
|
|
38487
|
-
await client.subscription.update({
|
|
38488
|
-
orgName: org,
|
|
38489
|
-
repoName: repo,
|
|
38490
|
-
name: compiled.name,
|
|
38491
|
-
shapeName: compiled.shapeName,
|
|
38492
|
-
filterJson: compiled.filterJson,
|
|
38493
|
-
webhookUrl: compiled.webhookUrl,
|
|
38494
|
-
fallbackWebhookUrl: compiled.fallbackWebhookUrl
|
|
38495
|
-
});
|
|
38496
|
-
}
|
|
38497
|
-
const desiredCredentials = normalizeCredentialBindings(resolveManifestCredentialNames(compiled.credentials, {
|
|
38498
|
-
orgName: org,
|
|
38499
|
-
repoName: repo
|
|
38500
|
-
}));
|
|
38501
|
-
const liveCredentials = replacedLegacyCron ? [] : normalizeCredentialBindings(liveSub.credentialSetNames);
|
|
38502
|
-
const credentialsChanged = desiredCredentials.length !== liveCredentials.length || desiredCredentials.some((name, index) => name !== liveCredentials[index]);
|
|
38503
|
-
if (credentialsChanged && liveCredentials.length > 0) {
|
|
38504
|
-
await client.subscription.unbindCredentials(org, repo, compiled.name);
|
|
38505
|
-
}
|
|
38506
|
-
if (credentialsChanged) {
|
|
38507
|
-
for (const credentialSetName of desiredCredentials) {
|
|
38508
|
-
await client.subscription.bindCredentials(org, repo, compiled.name, credentialSetName);
|
|
38509
|
-
}
|
|
38510
|
-
}
|
|
38511
|
-
steps.push({
|
|
38512
|
-
step: stepName,
|
|
38513
|
-
status: "ok",
|
|
38514
|
-
...replacedLegacyCron ? {
|
|
38515
|
-
message: liveSub.active === false ? "replaced legacy cron subscription (kept paused — resume after verifying the webhook)" : "replaced legacy cron subscription"
|
|
38516
|
-
} : {}
|
|
38517
|
-
});
|
|
38518
|
-
} catch (err) {
|
|
38519
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
38520
|
-
errors.push(`Failed to update subscription ${sub.name}: ${msg}`);
|
|
38521
|
-
steps.push({ step: stepName, status: "error", message: msg });
|
|
38522
|
-
}
|
|
38523
|
-
}
|
|
38524
|
-
if (manifest.seeds.length > 0) {
|
|
38525
|
-
for (const seed of manifest.seeds) {
|
|
38526
|
-
try {
|
|
38527
|
-
await client.commit.apply(org, repo, `Seed ${seed.shape}/${seed.name} for ${meta.name}`, [
|
|
38528
|
-
{
|
|
38529
|
-
operation: "revise",
|
|
38530
|
-
kind: "thing",
|
|
38531
|
-
name: `${seed.shape}/${seed.name}`,
|
|
38532
|
-
data: seed.data
|
|
38533
|
-
}
|
|
38534
|
-
], { componentRef });
|
|
38535
|
-
} catch (reviseErr) {
|
|
38536
|
-
const reviseMsg = reviseErr instanceof Error ? reviseErr.message : String(reviseErr);
|
|
38537
|
-
const reviseLooksMissing = reviseMsg.includes("not found") || reviseMsg.includes("NOT_FOUND");
|
|
38538
|
-
if (!reviseLooksMissing) {
|
|
38539
|
-
errors.push(`Failed to seed ${seed.shape}/${seed.name}: ${reviseMsg}`);
|
|
38540
|
-
continue;
|
|
38541
|
-
}
|
|
38542
|
-
try {
|
|
38543
|
-
await client.commit.apply(org, repo, `Seed ${seed.shape}/${seed.name} for ${meta.name}`, [
|
|
38544
|
-
{
|
|
38545
|
-
operation: "add",
|
|
38546
|
-
kind: "thing",
|
|
38547
|
-
name: `${seed.shape}/${seed.name}`,
|
|
38548
|
-
data: seed.data
|
|
38549
|
-
}
|
|
38550
|
-
], { componentRef });
|
|
38551
|
-
} catch (addErr) {
|
|
38552
|
-
const msg = addErr instanceof Error ? addErr.message : String(addErr);
|
|
38553
|
-
if (!isAlreadyExistsError(addErr)) {
|
|
38554
|
-
errors.push(`Failed to seed ${seed.shape}/${seed.name}: ${msg}`);
|
|
38555
|
-
}
|
|
38556
|
-
}
|
|
38557
|
-
}
|
|
38558
|
-
}
|
|
38559
|
-
steps.push({
|
|
38560
|
-
step: "reconcile-seeds",
|
|
38561
|
-
status: errors.length === 0 ? "ok" : "error"
|
|
38562
|
-
});
|
|
38563
|
-
}
|
|
38564
|
-
const state = errors.length > 0 ? "degraded" : "ready";
|
|
38565
|
-
try {
|
|
38566
|
-
await client.commit.apply(org, repo, `Reconcile ${meta.name}`, [
|
|
38567
|
-
{
|
|
38568
|
-
operation: "revise",
|
|
38569
|
-
kind: "thing",
|
|
38570
|
-
name: `ComponentInstall/${componentId}`,
|
|
38571
|
-
data: {
|
|
38572
|
-
componentId,
|
|
38573
|
-
name: meta.name,
|
|
38574
|
-
version: meta.version,
|
|
38575
|
-
source: "registry",
|
|
38576
|
-
sourceKind: "registered",
|
|
38577
|
-
sourceRef: source.ref ?? "",
|
|
38578
|
-
resolvedSha: source.resolvedSha ?? "",
|
|
38579
|
-
...source.registeredComponentRef ? { registeredComponentRef: source.registeredComponentRef } : {},
|
|
38580
|
-
manifestHash: await computeComponentManifestHash(manifest),
|
|
38581
|
-
state,
|
|
38582
|
-
manifest: JSON.stringify(manifest),
|
|
38583
|
-
installedAt: typeof existingData?.installedAt === "string" ? existingData.installedAt : new Date().toISOString(),
|
|
38584
|
-
updatedAt: new Date().toISOString(),
|
|
38585
|
-
...source.installId ?? persistedInstallId ? { installId: source.installId ?? persistedInstallId } : {}
|
|
38586
|
-
}
|
|
38587
|
-
}
|
|
38588
|
-
], { componentRef: SYSTEM_REGISTERED_COMPONENT_REF });
|
|
38589
|
-
steps.push({ step: "update-install-record", status: "ok" });
|
|
38590
|
-
} catch (err) {
|
|
38591
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
38592
|
-
errors.push(`Failed to update install record: ${msg}`);
|
|
38593
|
-
steps.push({ step: "update-install-record", status: "error", message: msg });
|
|
38594
|
-
}
|
|
38595
|
-
return {
|
|
38596
|
-
ok: errors.length === 0,
|
|
38597
|
-
componentId,
|
|
38598
|
-
componentName: meta.name,
|
|
38599
|
-
version: meta.version,
|
|
38600
|
-
state,
|
|
38601
|
-
steps,
|
|
38602
|
-
errors,
|
|
38603
|
-
setupCreates
|
|
38604
|
-
};
|
|
38605
|
-
}
|
|
38606
|
-
|
|
38607
|
-
// ../../packages/warmhub-cli/src/manifest/installer.ts
|
|
38608
|
-
async function installComponent(client, org, repo, pkg, source) {
|
|
38609
|
-
const steps = [];
|
|
38610
|
-
const errors = [];
|
|
38611
|
-
const setupCreates = [];
|
|
38612
|
-
const { meta, manifest } = pkg;
|
|
38613
|
-
const componentId = meta.id;
|
|
38614
|
-
assertCliMethodsAllowedForSource(pkg, source);
|
|
38615
|
-
const partitionedShapes = partitionByProvisioning(manifest.shapes, "Shape");
|
|
38616
|
-
const partitionedCreds = partitionByProvisioning(manifest.credentials, "CredentialSet");
|
|
38617
|
-
const partitionedSubs = partitionByProvisioning(manifest.subscriptions, "Subscription");
|
|
38618
|
-
setupCreates.push(...partitionedShapes.setupRefs, ...partitionedCreds.setupRefs, ...partitionedSubs.setupRefs);
|
|
38619
|
-
const validation = validateComponentPackage(pkg);
|
|
38620
|
-
if (!validation.valid) {
|
|
38621
|
-
const validationErrors = validation.findings.filter((f) => f.level === "error").map((f) => f.message);
|
|
38622
|
-
return {
|
|
38623
|
-
ok: false,
|
|
38624
|
-
componentId,
|
|
38625
|
-
componentName: meta.name,
|
|
38626
|
-
version: meta.version,
|
|
38627
|
-
state: "error",
|
|
38628
|
-
steps: [
|
|
38629
|
-
{
|
|
38630
|
-
step: "validate",
|
|
38631
|
-
status: "error",
|
|
38632
|
-
message: validationErrors.join("; ")
|
|
38633
|
-
}
|
|
38634
|
-
],
|
|
38635
|
-
errors: validationErrors,
|
|
38636
|
-
setupCreates
|
|
38637
|
-
};
|
|
38638
|
-
}
|
|
38639
|
-
steps.push({ step: "validate", status: "ok" });
|
|
38640
|
-
try {
|
|
38641
|
-
const existing = await client.thing.get(org, repo, `ComponentInstall/${componentId}`, undefined, { includeRetracted: true });
|
|
38642
|
-
if (existing) {
|
|
38643
|
-
const collision2 = await checkInstallNameCollision({
|
|
38644
|
-
client,
|
|
38645
|
-
org,
|
|
38646
|
-
repo,
|
|
38647
|
-
componentId,
|
|
38648
|
-
componentName: meta.name
|
|
38649
|
-
});
|
|
38650
|
-
if (!collision2.ok) {
|
|
38651
|
-
errors.push(collision2.message);
|
|
38652
|
-
steps.push({
|
|
38653
|
-
step: "check-name-collision",
|
|
38654
|
-
status: "error",
|
|
38655
|
-
message: collision2.message
|
|
38656
|
-
});
|
|
38657
|
-
return makeResult(componentId, meta, "error", steps, errors, setupCreates);
|
|
38658
|
-
}
|
|
38659
|
-
return reconcileComponent(client, org, repo, pkg, source, existing);
|
|
38660
|
-
}
|
|
38661
|
-
} catch (err) {
|
|
38662
|
-
if (!isComponentInstallNotFound(err)) {
|
|
38663
|
-
throw err;
|
|
38664
|
-
}
|
|
38665
|
-
}
|
|
38666
|
-
const collision = await checkInstallNameCollision({
|
|
38667
|
-
client,
|
|
38668
|
-
org,
|
|
38669
|
-
repo,
|
|
38670
|
-
componentId,
|
|
38671
|
-
componentName: meta.name
|
|
38672
|
-
});
|
|
38673
|
-
if (collision.ok) {
|
|
38674
|
-
steps.push({ step: "check-name-collision", status: "ok" });
|
|
38675
|
-
} else {
|
|
38676
|
-
errors.push(collision.message);
|
|
38677
|
-
steps.push({
|
|
38678
|
-
step: "check-name-collision",
|
|
38679
|
-
status: "error",
|
|
38680
|
-
message: collision.message
|
|
38681
|
-
});
|
|
38682
|
-
return makeResult(componentId, meta, "error", steps, errors, setupCreates);
|
|
38683
|
-
}
|
|
38684
|
-
try {
|
|
38685
|
-
await ensureSharedInfra(client, org, repo);
|
|
38686
|
-
steps.push({ step: "ensure-shared-infra", status: "ok" });
|
|
38687
|
-
} catch (err) {
|
|
38688
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
38689
|
-
errors.push(`Failed to ensure shared infra: ${msg}`);
|
|
38690
|
-
steps.push({ step: "ensure-shared-infra", status: "error", message: msg });
|
|
38691
|
-
return makeResult(componentId, meta, "error", steps, errors, setupCreates);
|
|
38692
|
-
}
|
|
38693
|
-
try {
|
|
38694
|
-
await client.commit.apply(org, repo, `Install ${meta.name}`, [
|
|
38695
|
-
{
|
|
38696
|
-
operation: "add",
|
|
38697
|
-
kind: "thing",
|
|
38698
|
-
name: `ComponentInstall/${componentId}`,
|
|
38699
|
-
data: {
|
|
38700
|
-
componentId,
|
|
38701
|
-
name: meta.name,
|
|
38702
|
-
version: meta.version,
|
|
38703
|
-
source: "registry",
|
|
38704
|
-
sourceKind: "registered",
|
|
38705
|
-
sourceRef: source.ref ?? "",
|
|
38706
|
-
resolvedSha: source.resolvedSha ?? "",
|
|
38707
|
-
...source.registeredComponentRef ? { registeredComponentRef: source.registeredComponentRef } : {},
|
|
38708
|
-
manifestHash: await computeComponentManifestHash(manifest),
|
|
38709
|
-
state: "installing",
|
|
38710
|
-
manifest: JSON.stringify(manifest),
|
|
38711
|
-
installedAt: new Date().toISOString(),
|
|
38712
|
-
...source.installId ? { installId: source.installId } : {}
|
|
38713
|
-
}
|
|
38714
|
-
}
|
|
38715
|
-
], { componentRef: SYSTEM_REGISTERED_COMPONENT_REF });
|
|
38716
|
-
steps.push({ step: "create-install-record", status: "ok" });
|
|
38717
|
-
} catch (err) {
|
|
38718
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
38719
|
-
errors.push(`Failed to create install record: ${msg}`);
|
|
38720
|
-
steps.push({ step: "create-install-record", status: "error", message: msg });
|
|
38721
|
-
return makeResult(componentId, meta, "error", steps, errors, setupCreates);
|
|
38722
|
-
}
|
|
38723
|
-
if (partitionedShapes.manifestEntries.length > 0) {
|
|
38724
|
-
const shapeOps = partitionedShapes.manifestEntries.map((shape) => ({
|
|
38725
|
-
operation: "add",
|
|
38726
|
-
kind: "shape",
|
|
38727
|
-
name: shape.name,
|
|
38728
|
-
data: manifestShapeData(shape)
|
|
38729
|
-
}));
|
|
38730
|
-
try {
|
|
38731
|
-
await client.commit.apply(org, repo, `Add shapes for ${meta.name}`, shapeOps, { componentRef: source.registeredComponentRef });
|
|
38732
|
-
steps.push({ step: "create-shapes", status: "ok" });
|
|
38733
|
-
} catch (err) {
|
|
38734
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
38735
|
-
if (isAlreadyExistsError(err)) {
|
|
38736
|
-
try {
|
|
38737
|
-
await reconcileShapesAfterCreateConflict(client, org, repo, pkg, source);
|
|
38738
|
-
steps.push({
|
|
38739
|
-
step: "create-shapes",
|
|
38740
|
-
status: "ok",
|
|
38741
|
-
message: "reconciled existing shapes"
|
|
38742
|
-
});
|
|
38743
|
-
} catch (fallbackErr) {
|
|
38744
|
-
const fallbackMsg = fallbackErr instanceof Error ? fallbackErr.message : String(fallbackErr);
|
|
38745
|
-
errors.push(`Failed to reconcile existing shapes: ${fallbackMsg}`);
|
|
38746
|
-
steps.push({
|
|
38747
|
-
step: "create-shapes",
|
|
38748
|
-
status: "error",
|
|
38749
|
-
message: fallbackMsg
|
|
38750
|
-
});
|
|
38751
|
-
}
|
|
38752
|
-
} else {
|
|
38753
|
-
errors.push(`Failed to create shapes: ${msg}`);
|
|
38754
|
-
steps.push({ step: "create-shapes", status: "error", message: msg });
|
|
38755
|
-
}
|
|
38756
|
-
}
|
|
38757
|
-
}
|
|
38758
|
-
for (const cred of partitionedCreds.manifestEntries) {
|
|
38759
|
-
const credentialSetName = resolveManifestCredentialName(cred.name, {
|
|
38760
|
-
orgName: org,
|
|
38761
|
-
repoName: repo
|
|
38762
|
-
});
|
|
38763
|
-
try {
|
|
38764
|
-
await client.credential.createSet(org, repo, credentialSetName, {
|
|
38765
|
-
scope: "repo",
|
|
38766
|
-
description: cred.description
|
|
38767
|
-
});
|
|
38768
|
-
steps.push({
|
|
38769
|
-
step: `create-credential-${credentialSetName}`,
|
|
38770
|
-
status: "ok"
|
|
38771
|
-
});
|
|
38772
|
-
} catch (err) {
|
|
38773
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
38774
|
-
if (isAlreadyExistsError(err)) {
|
|
38775
|
-
steps.push({
|
|
38776
|
-
step: `create-credential-${credentialSetName}`,
|
|
38777
|
-
status: "skipped",
|
|
38778
|
-
message: "already exists"
|
|
38779
|
-
});
|
|
38780
|
-
} else {
|
|
38781
|
-
errors.push(`Failed to create credential set ${credentialSetName}: ${msg}`);
|
|
38782
|
-
steps.push({
|
|
38783
|
-
step: `create-credential-${credentialSetName}`,
|
|
38784
|
-
status: "error",
|
|
38785
|
-
message: msg
|
|
38786
|
-
});
|
|
38787
|
-
}
|
|
38788
|
-
}
|
|
38789
|
-
}
|
|
38790
|
-
for (const sub of partitionedSubs.manifestEntries) {
|
|
38791
|
-
let compiled;
|
|
38792
|
-
try {
|
|
38793
|
-
compiled = compileSubscription(sub);
|
|
38794
|
-
} catch (err) {
|
|
38795
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
38796
|
-
errors.push(`Failed to compile subscription ${sub.name}: ${msg}`);
|
|
38797
|
-
steps.push({
|
|
38798
|
-
step: `create-sub-${sub.name}`,
|
|
38799
|
-
status: "error",
|
|
38800
|
-
message: msg
|
|
38801
|
-
});
|
|
38802
|
-
continue;
|
|
38803
|
-
}
|
|
38804
|
-
try {
|
|
38805
|
-
await client.subscription.create({
|
|
38806
|
-
orgName: org,
|
|
38807
|
-
repoName: repo,
|
|
38808
|
-
name: compiled.name,
|
|
38809
|
-
kind: compiled.kind,
|
|
38810
|
-
shapeName: compiled.shapeName,
|
|
38811
|
-
filterJson: compiled.filterJson,
|
|
38812
|
-
webhookUrl: compiled.webhookUrl,
|
|
38813
|
-
fallbackWebhookUrl: compiled.fallbackWebhookUrl,
|
|
38814
|
-
componentRef: source.registeredComponentRef
|
|
38815
|
-
});
|
|
38816
|
-
steps.push({ step: `create-sub-${sub.name}`, status: "ok" });
|
|
38817
|
-
} catch (err) {
|
|
38818
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
38819
|
-
if (isAlreadyExistsError(err)) {
|
|
38820
|
-
steps.push({
|
|
38821
|
-
step: `create-sub-${sub.name}`,
|
|
38822
|
-
status: "skipped",
|
|
38823
|
-
message: "already exists"
|
|
38824
|
-
});
|
|
38825
|
-
} else {
|
|
38826
|
-
errors.push(`Failed to create subscription ${sub.name}: ${msg}`);
|
|
38827
|
-
steps.push({
|
|
38828
|
-
step: `create-sub-${sub.name}`,
|
|
38829
|
-
status: "error",
|
|
38830
|
-
message: msg
|
|
38831
|
-
});
|
|
38832
|
-
}
|
|
38833
|
-
}
|
|
38834
|
-
for (const credName of resolveManifestCredentialNames(compiled.credentials, {
|
|
38835
|
-
orgName: org,
|
|
38836
|
-
repoName: repo
|
|
38837
|
-
})) {
|
|
38838
|
-
try {
|
|
38839
|
-
await client.subscription.bindCredentials(org, repo, compiled.name, credName);
|
|
38840
|
-
} catch {}
|
|
38841
|
-
}
|
|
38842
|
-
}
|
|
38843
|
-
for (const seed of manifest.seeds) {
|
|
38844
|
-
const seedName = `${seed.shape}/${seed.name}`;
|
|
38845
|
-
try {
|
|
38846
|
-
await client.commit.apply(org, repo, `Seed ${seedName} for ${meta.name}`, [
|
|
38847
|
-
{
|
|
38848
|
-
operation: "add",
|
|
38849
|
-
kind: "thing",
|
|
38850
|
-
name: seedName,
|
|
38851
|
-
data: seed.data
|
|
38852
|
-
}
|
|
38853
|
-
], { componentRef: source.registeredComponentRef });
|
|
38854
|
-
steps.push({ step: `seed-${seedName}`, status: "ok" });
|
|
38855
|
-
} catch (err) {
|
|
38856
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
38857
|
-
if (isAlreadyExistsError(err)) {
|
|
38858
|
-
steps.push({
|
|
38859
|
-
step: `seed-${seedName}`,
|
|
38860
|
-
status: "skipped",
|
|
38861
|
-
message: "already exists"
|
|
38862
|
-
});
|
|
38863
|
-
} else {
|
|
38864
|
-
errors.push(`Failed to seed ${seedName}: ${msg}`);
|
|
38865
|
-
steps.push({ step: `seed-${seedName}`, status: "error", message: msg });
|
|
38866
|
-
}
|
|
38867
|
-
}
|
|
38868
|
-
}
|
|
38869
|
-
const state = computeState(errors);
|
|
38870
|
-
try {
|
|
38871
|
-
await client.commit.apply(org, repo, `Finalize ${meta.name} install`, [
|
|
38872
|
-
{
|
|
38873
|
-
operation: "revise",
|
|
38874
|
-
kind: "thing",
|
|
38875
|
-
name: `ComponentInstall/${componentId}`,
|
|
38876
|
-
data: {
|
|
38877
|
-
componentId,
|
|
38878
|
-
name: meta.name,
|
|
38879
|
-
version: meta.version,
|
|
38880
|
-
source: "registry",
|
|
38881
|
-
sourceKind: "registered",
|
|
38882
|
-
sourceRef: source.ref ?? "",
|
|
38883
|
-
resolvedSha: source.resolvedSha ?? "",
|
|
38884
|
-
...source.registeredComponentRef ? { registeredComponentRef: source.registeredComponentRef } : {},
|
|
38885
|
-
manifestHash: await computeComponentManifestHash(manifest),
|
|
38886
|
-
state,
|
|
38887
|
-
manifest: JSON.stringify(manifest),
|
|
38888
|
-
installedAt: new Date().toISOString(),
|
|
38889
|
-
updatedAt: new Date().toISOString(),
|
|
38890
|
-
...source.installId ? { installId: source.installId } : {}
|
|
38891
|
-
}
|
|
38892
|
-
}
|
|
38893
|
-
], { componentRef: SYSTEM_REGISTERED_COMPONENT_REF });
|
|
38894
|
-
steps.push({ step: "finalize", status: "ok" });
|
|
38895
|
-
} catch (err) {
|
|
38896
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
38897
|
-
errors.push(`Failed to finalize install: ${msg}`);
|
|
38898
|
-
steps.push({ step: "finalize", status: "error", message: msg });
|
|
38899
|
-
}
|
|
38900
|
-
return makeResult(componentId, meta, state, steps, errors, setupCreates);
|
|
38901
|
-
}
|
|
38902
|
-
function computeState(errors) {
|
|
38903
|
-
if (errors.length > 0)
|
|
38904
|
-
return "degraded";
|
|
38905
|
-
return "ready";
|
|
38906
|
-
}
|
|
38907
|
-
function assertCliMethodsAllowedForSource(pkg, source) {
|
|
38908
|
-
const hasCliMethods = (pkg.manifest.cli?.methods?.length ?? 0) > 0;
|
|
38909
|
-
if (!hasCliMethods)
|
|
38910
|
-
return;
|
|
38911
|
-
if (typeof source.registeredComponentRef === "string" && source.registeredComponentRef.length > 0) {
|
|
38912
|
-
return;
|
|
38913
|
-
}
|
|
38914
|
-
throw new CliError(2 /* UserInput */, "USER_INPUT", "Components that declare manifest.cli.methods must be installed from the registry.", undefined, "Register the component, then install it as <org>/<name>. Local path and GitHub URL installs cannot expose CLI methods.");
|
|
38915
|
-
}
|
|
38916
|
-
async function reconcileShapesAfterCreateConflict(client, org, repo, pkg, source) {
|
|
38917
|
-
const { meta, manifest } = pkg;
|
|
38918
|
-
const existingShapes = new Map;
|
|
38919
|
-
for (const shape of manifest.shapes) {
|
|
38920
|
-
try {
|
|
38921
|
-
const existingShape = await client.shape.get(org, repo, shape.name, {
|
|
38922
|
-
includeRetracted: true
|
|
38923
|
-
});
|
|
38924
|
-
if (existingShape.componentRef !== source.registeredComponentRef) {
|
|
38925
|
-
const owner = existingShape.componentRef ? `owned by component "${existingShape.componentRef}"` : "not owned by this component";
|
|
38926
|
-
throw new Error(`Shape "${shape.name}" already exists and is ${owner}; cannot reconcile during fresh install`);
|
|
38927
|
-
}
|
|
38928
|
-
existingShapes.set(shape.name, existingShape);
|
|
38929
|
-
} catch (err) {
|
|
38930
|
-
if (!isNotFoundError(err)) {
|
|
38931
|
-
throw err;
|
|
38932
|
-
}
|
|
38933
|
-
existingShapes.set(shape.name, undefined);
|
|
38934
|
-
}
|
|
38935
|
-
}
|
|
38936
|
-
for (const shape of manifest.shapes) {
|
|
38937
|
-
const data = manifestShapeData(shape);
|
|
38938
|
-
const existingShape = existingShapes.get(shape.name);
|
|
38939
|
-
if (existingShape && existingShape.active !== false) {
|
|
38940
|
-
await client.commit.apply(org, repo, `Reconcile shape ${shape.name} for ${meta.name}`, [
|
|
38941
|
-
{
|
|
38942
|
-
operation: "revise",
|
|
38943
|
-
kind: "shape",
|
|
38944
|
-
name: shape.name,
|
|
38945
|
-
data
|
|
38946
|
-
}
|
|
38947
|
-
], { componentRef: source.registeredComponentRef });
|
|
38948
|
-
continue;
|
|
38949
|
-
}
|
|
38950
|
-
try {
|
|
38951
|
-
await client.commit.apply(org, repo, `Add shape ${shape.name} for ${meta.name}`, [
|
|
38952
|
-
{
|
|
38953
|
-
operation: "add",
|
|
38954
|
-
kind: "shape",
|
|
38955
|
-
name: shape.name,
|
|
38956
|
-
data
|
|
38957
|
-
}
|
|
38958
|
-
], { componentRef: source.registeredComponentRef });
|
|
38959
|
-
} catch (err) {
|
|
38960
|
-
if (isAlreadyExistsError(err)) {
|
|
38961
|
-
throw new Error(`Shape "${shape.name}" already exists but ownership could not be verified; cannot reconcile during fresh install`);
|
|
38962
|
-
}
|
|
38963
|
-
throw err;
|
|
38964
|
-
}
|
|
38965
|
-
}
|
|
38966
|
-
}
|
|
38967
|
-
function makeResult(componentId, meta, state, steps, errors, setupCreates = []) {
|
|
38968
|
-
return {
|
|
38969
|
-
ok: errors.length === 0,
|
|
38970
|
-
componentId,
|
|
38971
|
-
componentName: meta.name,
|
|
38972
|
-
version: meta.version,
|
|
38973
|
-
state,
|
|
38974
|
-
steps,
|
|
38975
|
-
errors,
|
|
38976
|
-
setupCreates
|
|
38977
|
-
};
|
|
38978
|
-
}
|
|
38979
|
-
function partitionByProvisioning(entries, kind) {
|
|
38980
|
-
const manifestEntries = [];
|
|
38981
|
-
const setupRefs = [];
|
|
38982
|
-
for (const entry of entries) {
|
|
38983
|
-
if (entry.provisioning === "setup") {
|
|
38984
|
-
setupRefs.push(`${kind}/${entry.name}`);
|
|
38985
|
-
} else {
|
|
38986
|
-
manifestEntries.push(entry);
|
|
38987
|
-
}
|
|
38988
|
-
}
|
|
38989
|
-
return { manifestEntries, setupRefs };
|
|
38990
|
-
}
|
|
38991
|
-
function isComponentInstallNotFound(err) {
|
|
38992
|
-
if (err instanceof WarmHubError) {
|
|
38993
|
-
return err.kind === "NOT_FOUND";
|
|
38994
|
-
}
|
|
38995
|
-
const message = err instanceof Error ? err.message : typeof err === "string" ? err : "";
|
|
38996
|
-
return message.includes("NOT_FOUND") || message.toLowerCase().includes("not found");
|
|
38997
|
-
}
|
|
38998
|
-
async function checkInstallNameCollision(args) {
|
|
38999
|
-
try {
|
|
39000
|
-
let cursor;
|
|
39001
|
-
do {
|
|
39002
|
-
const installs = await args.client.thing.query(args.org, args.repo, {
|
|
39003
|
-
shape: "ComponentInstall",
|
|
39004
|
-
kind: "thing",
|
|
39005
|
-
limit: 500,
|
|
39006
|
-
cursor
|
|
39007
|
-
});
|
|
39008
|
-
const colliding = installs.items.find((item) => {
|
|
39009
|
-
const data = item.data ?? {};
|
|
39010
|
-
return typeof data.name === "string" && data.name === args.componentName && typeof data.componentId === "string" && data.componentId !== args.componentId;
|
|
39011
|
-
});
|
|
39012
|
-
if (colliding) {
|
|
39013
|
-
const otherData = colliding.data ?? {};
|
|
39014
|
-
const otherId = typeof otherData.componentId === "string" ? otherData.componentId : "<unknown>";
|
|
39015
|
-
return {
|
|
39016
|
-
ok: false,
|
|
39017
|
-
message: `Cannot install "${args.componentName}" (componentId ${args.componentId}) into ${args.org}/${args.repo}: ` + `another component with the same name is already installed there (componentId ${otherId}). ` + "Two components sharing a name collide on `wh <name>` resolution and on the " + "`ComponentConfig/<name>` dispatch-config thing. Remove the existing install record or pick a different name."
|
|
39018
|
-
};
|
|
39019
|
-
}
|
|
39020
|
-
cursor = installs.nextCursor;
|
|
39021
|
-
} while (cursor);
|
|
39022
|
-
return { ok: true };
|
|
39023
|
-
} catch (err) {
|
|
39024
|
-
if (isComponentInstallNotFound(err)) {
|
|
39025
|
-
return { ok: true };
|
|
39026
|
-
}
|
|
39027
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
39028
|
-
return { ok: false, message: `Failed to check name collision: ${msg}` };
|
|
39029
|
-
}
|
|
39030
|
-
}
|
|
39031
|
-
function isNotFoundError(err) {
|
|
39032
|
-
return isComponentInstallNotFound(err);
|
|
39033
|
-
}
|
|
39034
|
-
async function installFromManifest(client, org, repo, manifest, source) {
|
|
39035
|
-
const pkg = {
|
|
39036
|
-
meta: {
|
|
39037
|
-
id: manifest.component.id,
|
|
39038
|
-
name: manifest.component.name,
|
|
39039
|
-
version: manifest.component.version
|
|
39040
|
-
},
|
|
39041
|
-
manifest,
|
|
39042
|
-
rootDir: ""
|
|
39043
|
-
};
|
|
39044
|
-
return installComponent(client, org, repo, pkg, source);
|
|
39045
|
-
}
|
|
39046
38141
|
// ../../packages/warmhub-cli/package.json
|
|
39047
38142
|
var package_default2 = {
|
|
39048
38143
|
name: "@warmhub/warmhub-cli",
|
|
@@ -39382,7 +38477,7 @@ function resolveLogLevel(flags, env) {
|
|
|
39382
38477
|
// package.json
|
|
39383
38478
|
var package_default3 = {
|
|
39384
38479
|
name: "@warmhub/cli",
|
|
39385
|
-
version: "0.
|
|
38480
|
+
version: "0.55.0",
|
|
39386
38481
|
private: false,
|
|
39387
38482
|
type: "module",
|
|
39388
38483
|
description: "The wh CLI for WarmHub — create repos, commit and query data, and compound knowledge with your AI agents.",
|
|
@@ -39436,43 +38531,12 @@ var package_default3 = {
|
|
|
39436
38531
|
devDependencies: {
|
|
39437
38532
|
"@warmhub/warmhub-cli": "workspace:*",
|
|
39438
38533
|
typescript: "5.9.3",
|
|
39439
|
-
undici: "6.
|
|
38534
|
+
undici: "6.27.0",
|
|
39440
38535
|
vitest: "4.1.5"
|
|
39441
38536
|
}
|
|
39442
38537
|
};
|
|
39443
38538
|
|
|
39444
|
-
// ../../packages/warmhub-cli/src/component-update-source.ts
|
|
39445
|
-
function resolveComponentUpdateSource(data) {
|
|
39446
|
-
const sourceKind = typeof data.sourceKind === "string" ? data.sourceKind : "";
|
|
39447
|
-
const registeredComponentRef = typeof data.registeredComponentRef === "string" ? data.registeredComponentRef : "";
|
|
39448
|
-
const source = typeof data.source === "string" ? data.source : "";
|
|
39449
|
-
const repoUrl = typeof data.repoUrl === "string" ? data.repoUrl : "";
|
|
39450
|
-
const effectiveSource = source || repoUrl;
|
|
39451
|
-
if (sourceKind === "system" || effectiveSource === "system") {
|
|
39452
|
-
const componentId = typeof data.sourceRef === "string" && data.sourceRef ? data.sourceRef : typeof data.componentId === "string" && data.componentId ? data.componentId : "";
|
|
39453
|
-
if (componentId) {
|
|
39454
|
-
return { kind: "system", componentId };
|
|
39455
|
-
}
|
|
39456
|
-
return { kind: "invalid", source: effectiveSource || "system" };
|
|
39457
|
-
}
|
|
39458
|
-
if (sourceKind === "registered" && registeredComponentRef !== "") {
|
|
39459
|
-
return {
|
|
39460
|
-
kind: "registered",
|
|
39461
|
-
componentRef: registeredComponentRef
|
|
39462
|
-
};
|
|
39463
|
-
}
|
|
39464
|
-
if (effectiveSource === "" || effectiveSource === "local") {
|
|
39465
|
-
return { kind: "local" };
|
|
39466
|
-
}
|
|
39467
|
-
return { kind: "invalid", source: effectiveSource };
|
|
39468
|
-
}
|
|
39469
|
-
|
|
39470
38539
|
// ../../packages/warmhub-cli/src/component-shell.ts
|
|
39471
|
-
function rejectRefForRegistered(componentRef, refOverride) {
|
|
39472
|
-
if (refOverride !== undefined) {
|
|
39473
|
-
throw new CliError(2 /* UserInput */, "USER_INPUT", `'${componentRef}' is a registered component; --ref is not supported (manifest version pinning is unavailable).`, undefined, "Registered components always install the latest published manifest. Re-run without --ref.");
|
|
39474
|
-
}
|
|
39475
|
-
}
|
|
39476
38540
|
async function maybeHandleComponentShellBoundary(argv, deps = {}) {
|
|
39477
38541
|
const parsed = parseArgs(argv);
|
|
39478
38542
|
const invocation = resolveInvocation(parsed);
|
|
@@ -39488,9 +38552,6 @@ async function maybeHandleComponentShellBoundary(argv, deps = {}) {
|
|
|
39488
38552
|
const writeErr = deps.err ?? err;
|
|
39489
38553
|
const debug = getBoolFlag(invocation.flags, "debug") || process.env.WARMHUB_DEBUG === "1";
|
|
39490
38554
|
let format = "pretty";
|
|
39491
|
-
const installFromManifestImpl = deps.installFromManifest ?? installFromManifest;
|
|
39492
|
-
const resolveRegisteredInstallImpl = deps.resolveRegisteredInstall ?? resolveRegisteredInstall;
|
|
39493
|
-
const callRegisteredSetupImpl = deps.callRegisteredSetup ?? callRegisteredSetup;
|
|
39494
38555
|
try {
|
|
39495
38556
|
canonicalizeGlobalFlags({ invocation });
|
|
39496
38557
|
const formatFlag = getStringFlag(invocation.flags, "format");
|
|
@@ -39506,50 +38567,27 @@ async function maybeHandleComponentShellBoundary(argv, deps = {}) {
|
|
|
39506
38567
|
config: deps.config,
|
|
39507
38568
|
client: deps.client
|
|
39508
38569
|
});
|
|
38570
|
+
const source = invocation.positional[1];
|
|
38571
|
+
if (!source) {
|
|
38572
|
+
return;
|
|
38573
|
+
}
|
|
39509
38574
|
if (componentShellVerb === "install") {
|
|
39510
|
-
const source = invocation.positional[1];
|
|
39511
|
-
if (!source) {
|
|
39512
|
-
return;
|
|
39513
|
-
}
|
|
39514
38575
|
if (!isRegisteredComponentSource(source)) {
|
|
39515
38576
|
return;
|
|
39516
38577
|
}
|
|
39517
|
-
|
|
39518
|
-
|
|
39519
|
-
return await handleRegisteredInstall({
|
|
39520
|
-
componentRef: source,
|
|
39521
|
-
repoFlag: repoFlag2,
|
|
39522
|
-
client,
|
|
39523
|
-
config,
|
|
39524
|
-
format,
|
|
39525
|
-
writeOut,
|
|
39526
|
-
writeErr,
|
|
39527
|
-
installFromManifest: installFromManifestImpl,
|
|
39528
|
-
resolveRegisteredInstall: resolveRegisteredInstallImpl,
|
|
39529
|
-
callRegisteredSetup: callRegisteredSetupImpl
|
|
39530
|
-
});
|
|
39531
|
-
}
|
|
39532
|
-
const componentRef = invocation.positional[1];
|
|
39533
|
-
if (!componentRef) {
|
|
39534
|
-
return;
|
|
39535
|
-
}
|
|
39536
|
-
if (!isRegisteredComponentSource(componentRef)) {
|
|
39537
|
-
throw new CliError(2 /* UserInput */, "USER_INPUT", `Invalid component reference '${componentRef}'. Expected '<org>/<name>' with no extra slashes and no empty parts.`, undefined, "Usage: wh component update <org/name> --repo org/repo");
|
|
38578
|
+
} else if (!isRegisteredComponentSource(source)) {
|
|
38579
|
+
throw new CliError(2 /* UserInput */, "USER_INPUT", `Invalid component reference '${source}'. Expected '<org>/<name>' with no extra slashes and no empty parts.`, undefined, "Usage: wh component update <org/name> --repo org/repo");
|
|
39538
38580
|
}
|
|
39539
38581
|
const repoFlag = getStringFlag(invocation.flags, "repo") ?? config.defaultRepo;
|
|
39540
|
-
const
|
|
39541
|
-
return await
|
|
39542
|
-
componentRef,
|
|
39543
|
-
|
|
39544
|
-
refOverride,
|
|
38582
|
+
const parsedRepo = parseOrgRepo(repoFlag, config);
|
|
38583
|
+
return await performRegisteredInstall({
|
|
38584
|
+
componentRef: source,
|
|
38585
|
+
verb: componentShellVerb === "install" ? "Installed" : "Updated",
|
|
39545
38586
|
client,
|
|
39546
|
-
|
|
38587
|
+
parsedRepo,
|
|
39547
38588
|
format,
|
|
39548
38589
|
writeOut,
|
|
39549
|
-
writeErr
|
|
39550
|
-
installFromManifest: installFromManifestImpl,
|
|
39551
|
-
resolveRegisteredInstall: resolveRegisteredInstallImpl,
|
|
39552
|
-
callRegisteredSetup: callRegisteredSetupImpl
|
|
38590
|
+
writeErr
|
|
39553
38591
|
});
|
|
39554
38592
|
} catch (error) {
|
|
39555
38593
|
return printCliError(toCliError2(error), writeErr, {
|
|
@@ -39558,91 +38596,40 @@ async function maybeHandleComponentShellBoundary(argv, deps = {}) {
|
|
|
39558
38596
|
});
|
|
39559
38597
|
}
|
|
39560
38598
|
}
|
|
39561
|
-
async function
|
|
39562
|
-
const
|
|
38599
|
+
async function performRegisteredInstall(args) {
|
|
38600
|
+
const installRepo = `${args.parsedRepo.org}/${args.parsedRepo.repo}`;
|
|
38601
|
+
let result;
|
|
39563
38602
|
try {
|
|
39564
|
-
|
|
38603
|
+
result = await args.client.component.install(args.parsedRepo.org, args.parsedRepo.repo, args.componentRef);
|
|
39565
38604
|
} catch (error) {
|
|
39566
|
-
|
|
39567
|
-
|
|
39568
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
39569
|
-
if (backendCode === "NOT_FOUND" || warmHubErrorKind(error) === "NOT_FOUND" && message === "Registered component not found") {
|
|
39570
|
-
throw new CliError(2 /* UserInput */, "USER_INPUT", `No component registered as ${args.componentRef}`, undefined, `Register it first with 'wh component register ${args.componentRef.split("/")[1] ?? args.componentRef} --org ${args.componentRef.split("/")[0] ?? "<org>"} --manifest <path>'.`, undefined, backendCode ?? "NOT_FOUND");
|
|
39571
|
-
}
|
|
39572
|
-
if (warmHubErrorKind(error) === "NOT_FOUND" && status === 404 && backendCode === undefined) {
|
|
39573
|
-
throw new CliError(4 /* Backend */, "BACKEND", message, error, "The backend may not expose the component-registry routes. Confirm the API URL points at a deployment that supports `wh component install`, or check for a proxy/path mismatch.");
|
|
38605
|
+
if (!isMissingRegistrationError(error)) {
|
|
38606
|
+
invalidateInstallSnapshotCache(installRepo);
|
|
39574
38607
|
}
|
|
39575
|
-
throw
|
|
38608
|
+
throw mapInstallError(error, args.componentRef, args.verb);
|
|
39576
38609
|
}
|
|
39577
|
-
}
|
|
39578
|
-
async function callRegisteredSetup(args) {
|
|
39579
|
-
const [ownerOrg, componentName] = args.componentRef.split("/");
|
|
39580
|
-
return await args.client.component.registry.setupCall(ownerOrg, componentName, {
|
|
39581
|
-
installId: args.installId,
|
|
39582
|
-
installRepo: args.installRepo,
|
|
39583
|
-
expectedManifestHash: args.expectedManifestHash
|
|
39584
|
-
});
|
|
39585
|
-
}
|
|
39586
|
-
async function handleRegisteredInstall(args) {
|
|
39587
|
-
const parsedRepo = parseOrgRepo(args.repoFlag, args.config);
|
|
39588
|
-
return performRegisteredInstall({
|
|
39589
|
-
componentRef: args.componentRef,
|
|
39590
|
-
verb: "Installed",
|
|
39591
|
-
client: args.client,
|
|
39592
|
-
parsedRepo,
|
|
39593
|
-
format: args.format,
|
|
39594
|
-
writeOut: args.writeOut,
|
|
39595
|
-
writeErr: args.writeErr,
|
|
39596
|
-
installFromManifest: args.installFromManifest,
|
|
39597
|
-
resolveRegisteredInstall: args.resolveRegisteredInstall,
|
|
39598
|
-
callRegisteredSetup: args.callRegisteredSetup
|
|
39599
|
-
});
|
|
39600
|
-
}
|
|
39601
|
-
async function performRegisteredInstall(args) {
|
|
39602
|
-
const installRepo = `${args.parsedRepo.org}/${args.parsedRepo.repo}`;
|
|
39603
|
-
const resolved = await args.resolveRegisteredInstall({
|
|
39604
|
-
componentRef: args.componentRef,
|
|
39605
|
-
installRepo,
|
|
39606
|
-
client: args.client
|
|
39607
|
-
});
|
|
39608
|
-
const persistedInstallId = readPersistedString(args.persistedInstallData, "installId");
|
|
39609
|
-
const installId = persistedInstallId ?? resolved.installId;
|
|
39610
38610
|
invalidateInstallSnapshotCache(installRepo);
|
|
39611
|
-
|
|
39612
|
-
|
|
39613
|
-
|
|
39614
|
-
|
|
39615
|
-
if (
|
|
39616
|
-
|
|
39617
|
-
|
|
38611
|
+
await writeInstallResult(args.writeOut, args.writeErr, args.format, args.verb, result, installRepo, args.client);
|
|
38612
|
+
return 0 /* Ok */;
|
|
38613
|
+
}
|
|
38614
|
+
function mapInstallError(error, componentRef, verb) {
|
|
38615
|
+
if (isMissingRegistrationError(error)) {
|
|
38616
|
+
const [ownerOrg, name] = componentRef.split("/");
|
|
38617
|
+
const backendCode = warmHubErrorBackendCode(error);
|
|
38618
|
+
return new CliError(2 /* UserInput */, "USER_INPUT", `No component registered as ${componentRef}`, undefined, `Register it first with 'wh component register ${name ?? componentRef} --org ${ownerOrg ?? "<org>"} --manifest <path>'.`, undefined, backendCode ?? "NOT_FOUND");
|
|
39618
38619
|
}
|
|
39619
|
-
if (
|
|
39620
|
-
|
|
39621
|
-
|
|
39622
|
-
setupResult = await args.callRegisteredSetup({
|
|
39623
|
-
componentRef: args.componentRef,
|
|
39624
|
-
installRepo,
|
|
39625
|
-
installId,
|
|
39626
|
-
expectedManifestHash: resolved.manifestHash,
|
|
39627
|
-
client: args.client
|
|
39628
|
-
});
|
|
39629
|
-
} catch (error) {
|
|
39630
|
-
if (isMissingManifestPermissionError(error)) {
|
|
39631
|
-
const backendCode = warmHubErrorBackendCode(error) ?? warmHubErrorKind(error);
|
|
39632
|
-
throw new CliError(2 /* UserInput */, "USER_INPUT", error.message, undefined, `Ask an org owner/admin to grant the missing permissions on the install repo, then re-run ${args.verb === "Installed" ? "install" : "update"}.`, undefined, backendCode);
|
|
39633
|
-
}
|
|
39634
|
-
throw error;
|
|
39635
|
-
}
|
|
39636
|
-
if (!setupResult.ok) {
|
|
39637
|
-
throw new CliError(1 /* Runtime */, "BACKEND", `Component setup failed with status ${setupResult.status}${setupResult.body ? `: ${setupResult.body}` : ""}`);
|
|
39638
|
-
}
|
|
38620
|
+
if (isMissingManifestPermissionError(error)) {
|
|
38621
|
+
const backendCode = warmHubErrorBackendCode(error) ?? warmHubErrorKind(error);
|
|
38622
|
+
return new CliError(2 /* UserInput */, "USER_INPUT", error.message, undefined, `Ask an org owner/admin to grant the missing permissions on the install repo, then re-run ${verb === "Installed" ? "install" : "update"}.`, undefined, backendCode);
|
|
39639
38623
|
}
|
|
39640
|
-
|
|
39641
|
-
return result.ok ? 0 /* Ok */ : 1 /* Runtime */;
|
|
38624
|
+
return error;
|
|
39642
38625
|
}
|
|
39643
|
-
|
|
39644
|
-
|
|
39645
|
-
|
|
38626
|
+
var REGISTRATION_NOT_FOUND_MESSAGE = "Registered component not found";
|
|
38627
|
+
function isMissingRegistrationError(error) {
|
|
38628
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
38629
|
+
if (message !== REGISTRATION_NOT_FOUND_MESSAGE) {
|
|
38630
|
+
return false;
|
|
38631
|
+
}
|
|
38632
|
+
return warmHubErrorBackendCode(error) === "NOT_FOUND" || warmHubErrorKind(error) === "NOT_FOUND";
|
|
39646
38633
|
}
|
|
39647
38634
|
function isMissingManifestPermissionError(error) {
|
|
39648
38635
|
return warmHubErrorKind(error) === "FORBIDDEN" && error instanceof Error && error.message.startsWith("Cannot install: caller is missing repo permissions required by the manifest:");
|
|
@@ -39655,14 +38642,6 @@ function warmHubErrorKind(error) {
|
|
|
39655
38642
|
const record = error;
|
|
39656
38643
|
return typeof record.kind === "string" ? record.kind : typeof record.code === "string" ? record.code : undefined;
|
|
39657
38644
|
}
|
|
39658
|
-
function warmHubErrorStatus(error) {
|
|
39659
|
-
if (error instanceof WarmHubError)
|
|
39660
|
-
return error.status;
|
|
39661
|
-
if (!error || typeof error !== "object")
|
|
39662
|
-
return;
|
|
39663
|
-
const status = error.status;
|
|
39664
|
-
return typeof status === "number" ? status : undefined;
|
|
39665
|
-
}
|
|
39666
38645
|
function warmHubErrorBackendCode(error) {
|
|
39667
38646
|
if (error instanceof WarmHubError)
|
|
39668
38647
|
return error.backendCode;
|
|
@@ -39671,56 +38650,22 @@ function warmHubErrorBackendCode(error) {
|
|
|
39671
38650
|
const backendCode = error.backendCode;
|
|
39672
38651
|
return typeof backendCode === "string" ? backendCode : undefined;
|
|
39673
38652
|
}
|
|
39674
|
-
async function handleComponentUpdate(args) {
|
|
39675
|
-
const parsedRepo = parseOrgRepo(args.repoFlag, args.config);
|
|
39676
|
-
const installRepo = `${parsedRepo.org}/${parsedRepo.repo}`;
|
|
39677
|
-
const componentId = await resolveInstalledComponentRefId(args.client, parsedRepo.org, parsedRepo.repo, args.componentRef);
|
|
39678
|
-
const installThing = await args.client.thing.get(parsedRepo.org, parsedRepo.repo, `ComponentInstall/${componentId}`);
|
|
39679
|
-
const installData = installThing.data && typeof installThing.data === "object" ? installThing.data : {};
|
|
39680
|
-
const source = resolveComponentUpdateSource(installData);
|
|
39681
|
-
if (source.kind === "registered") {
|
|
39682
|
-
rejectRefForRegistered(source.componentRef, args.refOverride);
|
|
39683
|
-
if (source.componentRef !== args.componentRef) {
|
|
39684
|
-
throw new CliError(2 /* UserInput */, "USER_INPUT", `Component '${args.componentRef}' resolved to an install for '${source.componentRef}', which is inconsistent with the install record.`);
|
|
39685
|
-
}
|
|
39686
|
-
return performRegisteredInstall({
|
|
39687
|
-
componentRef: source.componentRef,
|
|
39688
|
-
persistedInstallData: installData,
|
|
39689
|
-
verb: "Updated",
|
|
39690
|
-
client: args.client,
|
|
39691
|
-
parsedRepo,
|
|
39692
|
-
format: args.format,
|
|
39693
|
-
writeOut: args.writeOut,
|
|
39694
|
-
writeErr: args.writeErr,
|
|
39695
|
-
installFromManifest: args.installFromManifest,
|
|
39696
|
-
resolveRegisteredInstall: args.resolveRegisteredInstall,
|
|
39697
|
-
callRegisteredSetup: args.callRegisteredSetup
|
|
39698
|
-
});
|
|
39699
|
-
}
|
|
39700
|
-
if (source.kind === "system") {
|
|
39701
|
-
throw new CliError(2 /* UserInput */, "USER_INPUT", `Component '${args.componentRef}' is a platform-managed system install and cannot be updated via the CLI; it is reconciled automatically by the WarmHub backend.`);
|
|
39702
|
-
}
|
|
39703
|
-
throw new CliError(2 /* UserInput */, "USER_INPUT", `Component '${args.componentRef}' was not installed from a registered component and can no longer be updated in place.`, undefined, "Register the component (`wh component register <name> --org <org> --manifest <path>`) and reinstall it with `wh component install <org>/<name>`.");
|
|
39704
|
-
}
|
|
39705
38653
|
async function writeInstallResult(writeOut, writeErr, format, verb, result, installRepo, client) {
|
|
39706
|
-
|
|
39707
|
-
|
|
39708
|
-
|
|
39709
|
-
|
|
39710
|
-
writeErr(reservedWarning);
|
|
39711
|
-
}
|
|
38654
|
+
await rebuildInstallSnapshotCache(installRepo, client);
|
|
38655
|
+
const reservedWarning = formatReservedNameWarning(result.componentName);
|
|
38656
|
+
if (reservedWarning) {
|
|
38657
|
+
writeErr(reservedWarning);
|
|
39712
38658
|
}
|
|
39713
38659
|
if (format === "json" || format === "jsonl") {
|
|
39714
38660
|
writeOut(JSON.stringify(result));
|
|
39715
38661
|
return;
|
|
39716
38662
|
}
|
|
39717
|
-
|
|
39718
|
-
|
|
39719
|
-
|
|
38663
|
+
writeOut(`${verb} ${result.componentName} v${result.version} [${result.state}]`);
|
|
38664
|
+
if (result.errors.length > 0) {
|
|
38665
|
+
writeErr(`Completed with warnings: ${result.errors.join("; ")}`);
|
|
39720
38666
|
}
|
|
39721
|
-
writeOut(`${verb === "Installed" ? "Install" : "Update"} failed: ${result.errors.join("; ")}`);
|
|
39722
38667
|
}
|
|
39723
|
-
// ../../node_modules/.bun/undici@6.
|
|
38668
|
+
// ../../node_modules/.bun/undici@6.27.0/node_modules/undici/index.js
|
|
39724
38669
|
var Client = require_client();
|
|
39725
38670
|
var Dispatcher = require_dispatcher();
|
|
39726
38671
|
var Pool = require_pool();
|
|
@@ -40173,4 +39118,4 @@ if (!updateCheckSuppressedByArgv && shouldRunUpdateCheck(updateEligibility)) {
|
|
|
40173
39118
|
var interceptedExitCode = await maybeHandleComponentShellBoundary(dispatchArgv);
|
|
40174
39119
|
process.exitCode = interceptedExitCode === undefined ? await runCli(dispatchArgv, { version: package_default3.version }) : interceptedExitCode;
|
|
40175
39120
|
|
|
40176
|
-
//# debugId=
|
|
39121
|
+
//# debugId=DD2E54A9CAE4693764756E2164756E21
|