@ledgerhq/device-management-kit-devtools-websocket-server 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE.MD ADDED
@@ -0,0 +1,202 @@
1
+
2
+ Apache License
3
+ Version 2.0, January 2004
4
+ http://www.apache.org/licenses/
5
+
6
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7
+
8
+ 1. Definitions.
9
+
10
+ "License" shall mean the terms and conditions for use, reproduction,
11
+ and distribution as defined by Sections 1 through 9 of this document.
12
+
13
+ "Licensor" shall mean the copyright owner or entity authorized by
14
+ the copyright owner that is granting the License.
15
+
16
+ "Legal Entity" shall mean the union of the acting entity and all
17
+ other entities that control, are controlled by, or are under common
18
+ control with that entity. For the purposes of this definition,
19
+ "control" means (i) the power, direct or indirect, to cause the
20
+ direction or management of such entity, whether by contract or
21
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
22
+ outstanding shares, or (iii) beneficial ownership of such entity.
23
+
24
+ "You" (or "Your") shall mean an individual or Legal Entity
25
+ exercising permissions granted by this License.
26
+
27
+ "Source" form shall mean the preferred form for making modifications,
28
+ including but not limited to software source code, documentation
29
+ source, and configuration files.
30
+
31
+ "Object" form shall mean any form resulting from mechanical
32
+ transformation or translation of a Source form, including but
33
+ not limited to compiled object code, generated documentation,
34
+ and conversions to other media types.
35
+
36
+ "Work" shall mean the work of authorship, whether in Source or
37
+ Object form, made available under the License, as indicated by a
38
+ copyright notice that is included in or attached to the work
39
+ (an example is provided in the Appendix below).
40
+
41
+ "Derivative Works" shall mean any work, whether in Source or Object
42
+ form, that is based on (or derived from) the Work and for which the
43
+ editorial revisions, annotations, elaborations, or other modifications
44
+ represent, as a whole, an original work of authorship. For the purposes
45
+ of this License, Derivative Works shall not include works that remain
46
+ separable from, or merely link (or bind by name) to the interfaces of,
47
+ the Work and Derivative Works thereof.
48
+
49
+ "Contribution" shall mean any work of authorship, including
50
+ the original version of the Work and any modifications or additions
51
+ to that Work or Derivative Works thereof, that is intentionally
52
+ submitted to Licensor for inclusion in the Work by the copyright owner
53
+ or by an individual or Legal Entity authorized to submit on behalf of
54
+ the copyright owner. For the purposes of this definition, "submitted"
55
+ means any form of electronic, verbal, or written communication sent
56
+ to the Licensor or its representatives, including but not limited to
57
+ communication on electronic mailing lists, source code control systems,
58
+ and issue tracking systems that are managed by, or on behalf of, the
59
+ Licensor for the purpose of discussing and improving the Work, but
60
+ excluding communication that is conspicuously marked or otherwise
61
+ designated in writing by the copyright owner as "Not a Contribution."
62
+
63
+ "Contributor" shall mean Licensor and any individual or Legal Entity
64
+ on behalf of whom a Contribution has been received by Licensor and
65
+ subsequently incorporated within the Work.
66
+
67
+ 2. Grant of Copyright License. Subject to the terms and conditions of
68
+ this License, each Contributor hereby grants to You a perpetual,
69
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70
+ copyright license to reproduce, prepare Derivative Works of,
71
+ publicly display, publicly perform, sublicense, and distribute the
72
+ Work and such Derivative Works in Source or Object form.
73
+
74
+ 3. Grant of Patent License. Subject to the terms and conditions of
75
+ this License, each Contributor hereby grants to You a perpetual,
76
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77
+ (except as stated in this section) patent license to make, have made,
78
+ use, offer to sell, sell, import, and otherwise transfer the Work,
79
+ where such license applies only to those patent claims licensable
80
+ by such Contributor that are necessarily infringed by their
81
+ Contribution(s) alone or by combination of their Contribution(s)
82
+ with the Work to which such Contribution(s) was submitted. If You
83
+ institute patent litigation against any entity (including a
84
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
85
+ or a Contribution incorporated within the Work constitutes direct
86
+ or contributory patent infringement, then any patent licenses
87
+ granted to You under this License for that Work shall terminate
88
+ as of the date such litigation is filed.
89
+
90
+ 4. Redistribution. You may reproduce and distribute copies of the
91
+ Work or Derivative Works thereof in any medium, with or without
92
+ modifications, and in Source or Object form, provided that You
93
+ meet the following conditions:
94
+
95
+ (a) You must give any other recipients of the Work or
96
+ Derivative Works a copy of this License; and
97
+
98
+ (b) You must cause any modified files to carry prominent notices
99
+ stating that You changed the files; and
100
+
101
+ (c) You must retain, in the Source form of any Derivative Works
102
+ that You distribute, all copyright, patent, trademark, and
103
+ attribution notices from the Source form of the Work,
104
+ excluding those notices that do not pertain to any part of
105
+ the Derivative Works; and
106
+
107
+ (d) If the Work includes a "NOTICE" text file as part of its
108
+ distribution, then any Derivative Works that You distribute must
109
+ include a readable copy of the attribution notices contained
110
+ within such NOTICE file, excluding those notices that do not
111
+ pertain to any part of the Derivative Works, in at least one
112
+ of the following places: within a NOTICE text file distributed
113
+ as part of the Derivative Works; within the Source form or
114
+ documentation, if provided along with the Derivative Works; or,
115
+ within a display generated by the Derivative Works, if and
116
+ wherever such third-party notices normally appear. The contents
117
+ of the NOTICE file are for informational purposes only and
118
+ do not modify the License. You may add Your own attribution
119
+ notices within Derivative Works that You distribute, alongside
120
+ or as an addendum to the NOTICE text from the Work, provided
121
+ that such additional attribution notices cannot be construed
122
+ as modifying the License.
123
+
124
+ You may add Your own copyright statement to Your modifications and
125
+ may provide additional or different license terms and conditions
126
+ for use, reproduction, or distribution of Your modifications, or
127
+ for any such Derivative Works as a whole, provided Your use,
128
+ reproduction, and distribution of the Work otherwise complies with
129
+ the conditions stated in this License.
130
+
131
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
132
+ any Contribution intentionally submitted for inclusion in the Work
133
+ by You to the Licensor shall be under the terms and conditions of
134
+ this License, without any additional terms or conditions.
135
+ Notwithstanding the above, nothing herein shall supersede or modify
136
+ the terms of any separate license agreement you may have executed
137
+ with Licensor regarding such Contributions.
138
+
139
+ 6. Trademarks. This License does not grant permission to use the trade
140
+ names, trademarks, service marks, or product names of the Licensor,
141
+ except as required for reasonable and customary use in describing the
142
+ origin of the Work and reproducing the content of the NOTICE file.
143
+
144
+ 7. Disclaimer of Warranty. Unless required by applicable law or
145
+ agreed to in writing, Licensor provides the Work (and each
146
+ Contributor provides its Contributions) on an "AS IS" BASIS,
147
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148
+ implied, including, without limitation, any warranties or conditions
149
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150
+ PARTICULAR PURPOSE. You are solely responsible for determining the
151
+ appropriateness of using or redistributing the Work and assume any
152
+ risks associated with Your exercise of permissions under this License.
153
+
154
+ 8. Limitation of Liability. In no event and under no legal theory,
155
+ whether in tort (including negligence), contract, or otherwise,
156
+ unless required by applicable law (such as deliberate and grossly
157
+ negligent acts) or agreed to in writing, shall any Contributor be
158
+ liable to You for damages, including any direct, indirect, special,
159
+ incidental, or consequential damages of any character arising as a
160
+ result of this License or out of the use or inability to use the
161
+ Work (including but not limited to damages for loss of goodwill,
162
+ work stoppage, computer failure or malfunction, or any and all
163
+ other commercial damages or losses), even if such Contributor
164
+ has been advised of the possibility of such damages.
165
+
166
+ 9. Accepting Warranty or Additional Liability. While redistributing
167
+ the Work or Derivative Works thereof, You may choose to offer,
168
+ and charge a fee for, acceptance of support, warranty, indemnity,
169
+ or other liability obligations and/or rights consistent with this
170
+ License. However, in accepting such obligations, You may act only
171
+ on Your own behalf and on Your sole responsibility, not on behalf
172
+ of any other Contributor, and only if You agree to indemnify,
173
+ defend, and hold each Contributor harmless for any liability
174
+ incurred by, or claims asserted against, such Contributor by reason
175
+ of your accepting any such warranty or additional liability.
176
+
177
+ END OF TERMS AND CONDITIONS
178
+
179
+ APPENDIX: How to apply the Apache License to your work.
180
+
181
+ To apply the Apache License to your work, attach the following
182
+ boilerplate notice, with the fields enclosed by brackets "[]"
183
+ replaced with your own identifying information. (Don't include
184
+ the brackets!) The text should be enclosed in the appropriate
185
+ comment syntax for the file format. We also recommend that a
186
+ file or class name and description of purpose be included on the
187
+ same "printed page" as the copyright notice for easier
188
+ identification within third-party archives.
189
+
190
+ Copyright 2024-present Ledger
191
+
192
+ Licensed under the Apache License, Version 2.0 (the "License");
193
+ you may not use this file except in compliance with the License.
194
+ You may obtain a copy of the License at
195
+
196
+ http://www.apache.org/licenses/LICENSE-2.0
197
+
198
+ Unless required by applicable law or agreed to in writing, software
199
+ distributed under the License is distributed on an "AS IS" BASIS,
200
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
201
+ See the License for the specific language governing permissions and
202
+ limitations under the License.
@@ -0,0 +1,2 @@
1
+ "use strict";var a=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var p=(r,o,f,x)=>{if(o&&typeof o=="object"||typeof o=="function")for(let e of c(o))!d.call(r,e)&&e!==f&&a(r,e,{get:()=>o[e],enumerable:!(x=b(o,e))||x.enumerable});return r},t=(r,o,f)=>(p(r,o,"default"),f&&p(f,o,"default"));var g=r=>p(a({},"__esModule",{value:!0}),r);var m={};module.exports=g(m);t(m,require("./src/WebSocketServer"),module.exports);0&&(module.exports={...require("./src/WebSocketServer")});
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../index.ts"],
4
+ "sourcesContent": ["export * from \"./src/WebSocketServer\";\n"],
5
+ "mappings": "iaAAA,IAAAA,EAAA,kBAAAC,EAAAD,GAAAE,EAAAF,EAAc,iCAAd",
6
+ "names": ["index_exports", "__toCommonJS", "__reExport"]
7
+ }
@@ -0,0 +1,61 @@
1
+ {
2
+ "dependencies": {
3
+ "@ledgerhq/device-management-kit-devtools-websocket-common": "workspace:^",
4
+ "rxjs": "catalog:",
5
+ "ws": "catalog:"
6
+ },
7
+ "devDependencies": {
8
+ "@ledgerhq/device-management-kit": "workspace:^",
9
+ "@ledgerhq/eslint-config-dsdk": "workspace:^",
10
+ "@ledgerhq/ldmk-tool": "workspace:^",
11
+ "@ledgerhq/prettier-config-dsdk": "workspace:^",
12
+ "@ledgerhq/tsconfig-dsdk": "workspace:^",
13
+ "@ledgerhq/vitest-config-dmk": "workspace:^",
14
+ "@types/ws": "catalog:",
15
+ "tsx": "catalog:"
16
+ },
17
+ "exports": {
18
+ ".": {
19
+ "import": "./lib/esm/index.js",
20
+ "require": "./lib/cjs/index.js",
21
+ "types": "./lib/types/index.d.ts"
22
+ },
23
+ "./*": {
24
+ "import": "./lib/esm/*",
25
+ "require": "./lib/cjs/*",
26
+ "types": "./lib/types/*"
27
+ }
28
+ },
29
+ "files": [
30
+ "./lib"
31
+ ],
32
+ "license": "Apache-2.0",
33
+ "main": "lib/index.js",
34
+ "name": "@ledgerhq/device-management-kit-devtools-websocket-server",
35
+ "peerDependencies": {
36
+ "@ledgerhq/device-management-kit": "^1.2.0"
37
+ },
38
+ "private": false,
39
+ "repository": {
40
+ "type": "git",
41
+ "url": "https://github.com/LedgerHQ/device-sdk-ts.git"
42
+ },
43
+ "scripts": {
44
+ "build": "pnpm ldmk-tool build --entryPoints index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
45
+ "cli": "tsx src/cli.ts",
46
+ "dev": "concurrently \"pnpm watch:builds\" \"pnpm watch:types\"",
47
+ "lint": "eslint",
48
+ "lint:fix": "pnpm lint --fix",
49
+ "prebuild": "rimraf lib",
50
+ "prettier": "prettier . --check",
51
+ "prettier:fix": "prettier . --write",
52
+ "test": "vitest run",
53
+ "test:coverage": "vitest run --coverage",
54
+ "test:watch": "vitest",
55
+ "typecheck": "tsc --noEmit",
56
+ "watch:builds": "pnpm ldmk-tool watch --entryPoints index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
57
+ "watch:types": "concurrently \"tsc --watch -p tsconfig.prod.json\" \"tsc-alias --watch -p tsconfig.prod.json\""
58
+ },
59
+ "types": "lib/index.d.ts",
60
+ "version": "1.0.1"
61
+ }
@@ -0,0 +1,4 @@
1
+ "use strict";var u=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var h=(c,e)=>{for(var t in e)u(c,t,{get:e[t],enumerable:!0})},f=(c,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of d(e))!g.call(c,o)&&o!==t&&u(c,o,{get:()=>e[o],enumerable:!(n=p(e,o))||n.enumerable});return c};var S=c=>f(u({},"__esModule",{value:!0}),c);var v={};h(v,{DevToolsWebSocketServer:()=>b});module.exports=S(v);var s=require("@ledgerhq/device-management-kit-devtools-websocket-common"),l=require("rxjs"),i=require("ws");class b{clientPort;dashboardPort;connections={client:{server:null,connection:null,messageBuffer:new l.ReplaySubject,messageBufferSubscription:null},dashboard:{server:null,connection:null,messageBuffer:new l.ReplaySubject,messageBufferSubscription:null}};constructor(e={}){this.clientPort=e.clientPort??s.DEFAULT_CLIENT_PORT,this.dashboardPort=e.dashboardPort??s.DEFAULT_DASHBOARD_PORT}log(...e){console.log(new Date().toLocaleTimeString()+" [DevToolsWebSocketServer]",...e)}logError(...e){console.error(new Date().toLocaleTimeString()+" [DevToolsWebSocketServer]",...e)}logWarning(...e){console.warn(new Date().toLocaleTimeString()+" [DevToolsWebSocketServer]",...e)}getOppositeType(e){return e==="client"?"dashboard":"client"}logConnectionState(){function e(t){switch(t){case i.WebSocket.OPEN:return"\u2705 OPEN";case i.WebSocket.CLOSED:return"\u274C CLOSED";case i.WebSocket.CONNECTING:return"\u{1F504} CONNECTING";case i.WebSocket.CLOSING:return"\u{1F504}\u274C CLOSING";default:return"\u2753 UNKNOWN"}}this.log(` Connection state:
2
+ - Client connection: ${e(this.connections.client.connection?.readyState)}
3
+ - Dashboard connection: ${e(this.connections.dashboard.connection?.readyState)}`)}start(){this.log(`Starting servers on ports ${this.clientPort} (client) and ${this.dashboardPort} (dashboard)`),this.startServer("client",this.clientPort),this.startServer("dashboard",this.dashboardPort),this.log("Servers started successfully")}startServer(e,t){const n=this.connections[e];n.server=new i.WebSocketServer({port:t}),n.server.on("connection",o=>{this.log(`\u{1F50C} ${e} connected`),this.logConnectionState(),n.connection=o,this.setupConnection(o,e),this.setupMessageForwardingTo(e)}),n.server.on("error",o=>{this.logError(`\u{1F4A5} ${e} server error:`,o)})}setupConnection(e,t){e.on("message",n=>{try{const o=(0,s.parseSocketMessage)(n.toString()),r=o.type,a=o.payload;if(typeof r!="string"||typeof a!="string"){this.logError(`Invalid message format from ${t}`,{type:r,payload:a});return}if(r===s.WEBSOCKET_MESSAGE_TYPES.INIT){this.logConnectionState(),this.log(`Received init message from ${t}:`,a);return}if(r===s.WEBSOCKET_MESSAGE_TYPES.MESSAGE){this.forwardMessage(t,a);return}this.logWarning(`Unknown message type from ${t}:`,r)}catch(o){const r=o instanceof Error?o.message:String(o);this.logError(`Failed to parse message from ${t}:`,r)}}),e.on("close",()=>{this.log(`\u{1F50C}\u274C ${t} disconnected`),this.handleDisconnect(t)}),e.on("error",n=>{this.logError(`${t} connection error:`,n)})}handleDisconnect(e){const t=this.connections[e];t.connection=null,this.cleanupSubscription(e);const n=this.getOppositeType(e);this.cleanupSubscription(n),e==="client"?(this.resetMessageBuffer("client"),this.resetMessageBuffer("dashboard"),this.setupMessageForwardingTo("client"),this.setupMessageForwardingTo("dashboard")):(this.resetMessageBuffer("dashboard"),this.setupMessageForwardingTo("client"))}forwardMessage(e,t){this.connections[e].messageBuffer.next(t)}resetMessageBuffer(e){const t=this.connections[e];t.messageBuffer.complete(),t.messageBuffer=new l.ReplaySubject}setupMessageForwardingTo(e){const t=this.connections[e],n=this.getOppositeType(e),o=this.connections[n];t.connection&&t.connection.readyState===i.WebSocket.OPEN&&(o.messageBufferSubscription&&(o.messageBufferSubscription.unsubscribe(),o.messageBufferSubscription=null),o.messageBufferSubscription=o.messageBuffer.subscribe({next:r=>{t.connection&&t.connection.readyState===i.WebSocket.OPEN&&(this.log(`Forwarding message from ${n} to ${e}`),t.connection.send((0,s.formatSocketMessage)({type:s.WEBSOCKET_MESSAGE_TYPES.MESSAGE,payload:r})))}}))}cleanupSubscription(e){const t=this.connections[e];t.messageBufferSubscription&&(t.messageBufferSubscription.unsubscribe(),t.messageBufferSubscription=null)}async stop(){return this.log("Stopping servers..."),this.cleanupSubscription("client"),this.cleanupSubscription("dashboard"),this.connections.client.connection?.close(),this.connections.dashboard.connection?.close(),this.connections.client.connection=null,this.connections.dashboard.connection=null,new Promise(e=>{let t=0;const n=()=>{t++,t===2&&(this.log("Servers stopped"),e())},o=r=>{const a=this.connections[r];a.server?a.server.close(()=>{a.server=null,n()}):n()};o("client"),o("dashboard")})}destroy(){this.stop()}}0&&(module.exports={DevToolsWebSocketServer});
4
+ //# sourceMappingURL=WebSocketServer.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/WebSocketServer.ts"],
4
+ "sourcesContent": ["import {\n DEFAULT_CLIENT_PORT,\n DEFAULT_DASHBOARD_PORT,\n formatSocketMessage,\n parseSocketMessage,\n WEBSOCKET_MESSAGE_TYPES,\n} from \"@ledgerhq/device-management-kit-devtools-websocket-common\";\nimport { ReplaySubject, type Subscription } from \"rxjs\";\nimport { WebSocket, WebSocketServer } from \"ws\";\n\nexport type ServerConfig = {\n clientPort?: number;\n dashboardPort?: number;\n};\n\ntype ConnectionType = \"client\" | \"dashboard\";\n\ninterface ConnectionState {\n server: WebSocketServer | null;\n connection: WebSocket | null;\n /**\n * Messages to be forwarded to the opposite connection.\n */\n messageBuffer: ReplaySubject<string>;\n /**\n * Subscription to the message buffer.\n */\n messageBufferSubscription: Subscription | null;\n}\n\nexport class DevToolsWebSocketServer {\n private readonly clientPort: number;\n private readonly dashboardPort: number;\n\n // Use a map to handle both connections uniformly\n private connections: Record<ConnectionType, ConnectionState> = {\n client: {\n server: null,\n connection: null,\n messageBuffer: new ReplaySubject(),\n messageBufferSubscription: null,\n },\n dashboard: {\n server: null,\n connection: null,\n messageBuffer: new ReplaySubject(),\n messageBufferSubscription: null,\n },\n };\n\n constructor(config: ServerConfig = {}) {\n this.clientPort = config.clientPort ?? DEFAULT_CLIENT_PORT;\n this.dashboardPort = config.dashboardPort ?? DEFAULT_DASHBOARD_PORT;\n }\n\n private log(...args: Parameters<typeof console.log>) {\n console.log(\n new Date().toLocaleTimeString() + \" [DevToolsWebSocketServer]\",\n ...args,\n );\n }\n\n private logError(...args: Parameters<typeof console.error>) {\n console.error(\n new Date().toLocaleTimeString() + \" [DevToolsWebSocketServer]\",\n ...args,\n );\n }\n\n private logWarning(...args: Parameters<typeof console.warn>) {\n console.warn(\n new Date().toLocaleTimeString() + \" [DevToolsWebSocketServer]\",\n ...args,\n );\n }\n\n private getOppositeType(type: ConnectionType): ConnectionType {\n return type === \"client\" ? \"dashboard\" : \"client\";\n }\n\n private logConnectionState(): void {\n function mapStateToText(state: number | undefined) {\n switch (state) {\n case WebSocket.OPEN:\n return \"\u2705 OPEN\";\n case WebSocket.CLOSED:\n return \"\u274C CLOSED\";\n case WebSocket.CONNECTING:\n return \"\uD83D\uDD04 CONNECTING\";\n case WebSocket.CLOSING:\n return \"\uD83D\uDD04\u274C CLOSING\";\n default:\n return \"\u2753 UNKNOWN\";\n }\n }\n\n this.log(\n ` Connection state:\\n` +\n ` - Client connection: ${mapStateToText(this.connections.client.connection?.readyState)}\\n` +\n ` - Dashboard connection: ${mapStateToText(this.connections.dashboard.connection?.readyState)}`,\n );\n }\n\n start(): void {\n this.log(\n `Starting servers on ports ${this.clientPort} (client) and ${this.dashboardPort} (dashboard)`,\n );\n\n this.startServer(\"client\", this.clientPort);\n this.startServer(\"dashboard\", this.dashboardPort);\n\n this.log(\"Servers started successfully\");\n }\n\n private startServer(type: ConnectionType, port: number): void {\n const state = this.connections[type];\n state.server = new WebSocketServer({ port });\n\n state.server.on(\"connection\", (ws: WebSocket) => {\n this.log(`\uD83D\uDD0C ${type} connected`);\n this.logConnectionState();\n\n state.connection = ws;\n this.setupConnection(ws, type);\n this.setupMessageForwardingTo(type);\n });\n\n state.server.on(\"error\", (error: Error) => {\n this.logError(`\uD83D\uDCA5 ${type} server error:`, error);\n });\n }\n\n private setupConnection(ws: WebSocket, connectionType: ConnectionType): void {\n ws.on(\"message\", (data: Buffer) => {\n try {\n const parsed = parseSocketMessage(data.toString());\n const messageType = parsed.type;\n const payload = parsed.payload;\n\n if (typeof messageType !== \"string\" || typeof payload !== \"string\") {\n this.logError(`Invalid message format from ${connectionType}`, {\n type: messageType,\n payload,\n });\n return;\n }\n\n if (messageType === WEBSOCKET_MESSAGE_TYPES.INIT) {\n this.logConnectionState();\n this.log(`Received init message from ${connectionType}:`, payload);\n return;\n }\n\n if (messageType === WEBSOCKET_MESSAGE_TYPES.MESSAGE) {\n this.forwardMessage(connectionType, payload);\n return;\n }\n\n this.logWarning(\n `Unknown message type from ${connectionType}:`,\n messageType,\n );\n } catch (error: unknown) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n this.logError(\n `Failed to parse message from ${connectionType}:`,\n errorMessage,\n );\n }\n });\n\n ws.on(\"close\", () => {\n this.log(`\uD83D\uDD0C\u274C ${connectionType} disconnected`);\n this.handleDisconnect(connectionType);\n });\n\n ws.on(\"error\", (error: Error) => {\n this.logError(`${connectionType} connection error:`, error);\n });\n }\n\n private handleDisconnect(connectionType: ConnectionType): void {\n const state = this.connections[connectionType];\n state.connection = null;\n\n // Clean up subscription on THIS side (for messages going out)\n this.cleanupSubscription(connectionType);\n\n // Also clean up subscription on OPPOSITE side (for messages coming in)\n // This ensures when we reconnect, we create a fresh subscription\n const oppositeType = this.getOppositeType(connectionType);\n this.cleanupSubscription(oppositeType);\n\n // Reset buffers based on connection type\n if (connectionType === \"client\") {\n // Reset both buffers when client disconnects\n this.resetMessageBuffer(\"client\");\n this.resetMessageBuffer(\"dashboard\");\n this.setupMessageForwardingTo(\"client\");\n this.setupMessageForwardingTo(\"dashboard\");\n } else {\n // Reset dashboard-to-client buffer when dashboard disconnects\n this.resetMessageBuffer(\"dashboard\");\n this.setupMessageForwardingTo(\"client\");\n }\n }\n\n private forwardMessage(\n fromConnectionType: ConnectionType,\n payload: string,\n ): void {\n // Always emit to the appropriate ReplaySubject\n this.connections[fromConnectionType].messageBuffer.next(payload);\n }\n\n private resetMessageBuffer(connectionType: ConnectionType): void {\n const state = this.connections[connectionType];\n state.messageBuffer.complete();\n state.messageBuffer = new ReplaySubject<string>();\n }\n\n private setupMessageForwardingTo(toConnectionType: ConnectionType): void {\n const state = this.connections[toConnectionType];\n const oppositeType = this.getOppositeType(toConnectionType);\n const oppositeState = this.connections[oppositeType];\n\n // Set up forwarding from the opposite connection to this one\n if (state.connection && state.connection.readyState === WebSocket.OPEN) {\n // Always clean up existing subscription first to ensure fresh subscription\n if (oppositeState.messageBufferSubscription) {\n oppositeState.messageBufferSubscription.unsubscribe();\n oppositeState.messageBufferSubscription = null;\n }\n // Create new subscription - this will replay all buffered messages\n oppositeState.messageBufferSubscription =\n oppositeState.messageBuffer.subscribe({\n next: (payload) => {\n if (\n state.connection &&\n state.connection.readyState === WebSocket.OPEN\n ) {\n this.log(\n `Forwarding message from ${oppositeType} to ${toConnectionType}`,\n );\n state.connection.send(\n formatSocketMessage({\n type: WEBSOCKET_MESSAGE_TYPES.MESSAGE,\n payload,\n }),\n );\n }\n },\n });\n }\n }\n\n private cleanupSubscription(type: ConnectionType): void {\n const state = this.connections[type];\n if (state.messageBufferSubscription) {\n state.messageBufferSubscription.unsubscribe();\n state.messageBufferSubscription = null;\n }\n }\n\n async stop(): Promise<void> {\n this.log(\"Stopping servers...\");\n\n // Clean up all subscriptions\n this.cleanupSubscription(\"client\");\n this.cleanupSubscription(\"dashboard\");\n\n // Close all connections\n this.connections.client.connection?.close();\n this.connections.dashboard.connection?.close();\n this.connections.client.connection = null;\n this.connections.dashboard.connection = null;\n\n // Close servers\n return new Promise<void>((resolve) => {\n let closedCount = 0;\n const checkClosed = () => {\n closedCount++;\n if (closedCount === 2) {\n this.log(\"Servers stopped\");\n resolve();\n }\n };\n\n const closeServer = (type: ConnectionType) => {\n const state = this.connections[type];\n if (state.server) {\n state.server.close(() => {\n state.server = null;\n checkClosed();\n });\n } else {\n checkClosed();\n }\n };\n\n closeServer(\"client\");\n closeServer(\"dashboard\");\n });\n }\n\n destroy(): void {\n this.stop();\n }\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,6BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAMO,qEACPC,EAAiD,gBACjDC,EAA2C,cAsBpC,MAAMJ,CAAwB,CAClB,WACA,cAGT,YAAuD,CAC7D,OAAQ,CACN,OAAQ,KACR,WAAY,KACZ,cAAe,IAAI,gBACnB,0BAA2B,IAC7B,EACA,UAAW,CACT,OAAQ,KACR,WAAY,KACZ,cAAe,IAAI,gBACnB,0BAA2B,IAC7B,CACF,EAEA,YAAYK,EAAuB,CAAC,EAAG,CACrC,KAAK,WAAaA,EAAO,YAAc,sBACvC,KAAK,cAAgBA,EAAO,eAAiB,wBAC/C,CAEQ,OAAOC,EAAsC,CACnD,QAAQ,IACN,IAAI,KAAK,EAAE,mBAAmB,EAAI,6BAClC,GAAGA,CACL,CACF,CAEQ,YAAYA,EAAwC,CAC1D,QAAQ,MACN,IAAI,KAAK,EAAE,mBAAmB,EAAI,6BAClC,GAAGA,CACL,CACF,CAEQ,cAAcA,EAAuC,CAC3D,QAAQ,KACN,IAAI,KAAK,EAAE,mBAAmB,EAAI,6BAClC,GAAGA,CACL,CACF,CAEQ,gBAAgBC,EAAsC,CAC5D,OAAOA,IAAS,SAAW,YAAc,QAC3C,CAEQ,oBAA2B,CACjC,SAASC,EAAeC,EAA2B,CACjD,OAAQA,EAAO,CACb,KAAK,YAAU,KACb,MAAO,cACT,KAAK,YAAU,OACb,MAAO,gBACT,KAAK,YAAU,WACb,MAAO,uBACT,KAAK,YAAU,QACb,MAAO,0BACT,QACE,MAAO,gBACX,CACF,CAEA,KAAK,IACH;AAAA,yBAC4BD,EAAe,KAAK,YAAY,OAAO,YAAY,UAAU,CAAC;AAAA,4BAC3DA,EAAe,KAAK,YAAY,UAAU,YAAY,UAAU,CAAC,EAClG,CACF,CAEA,OAAc,CACZ,KAAK,IACH,6BAA6B,KAAK,UAAU,iBAAiB,KAAK,aAAa,cACjF,EAEA,KAAK,YAAY,SAAU,KAAK,UAAU,EAC1C,KAAK,YAAY,YAAa,KAAK,aAAa,EAEhD,KAAK,IAAI,8BAA8B,CACzC,CAEQ,YAAYD,EAAsBG,EAAoB,CAC5D,MAAMD,EAAQ,KAAK,YAAYF,CAAI,EACnCE,EAAM,OAAS,IAAI,kBAAgB,CAAE,KAAAC,CAAK,CAAC,EAE3CD,EAAM,OAAO,GAAG,aAAeE,GAAkB,CAC/C,KAAK,IAAI,aAAMJ,CAAI,YAAY,EAC/B,KAAK,mBAAmB,EAExBE,EAAM,WAAaE,EACnB,KAAK,gBAAgBA,EAAIJ,CAAI,EAC7B,KAAK,yBAAyBA,CAAI,CACpC,CAAC,EAEDE,EAAM,OAAO,GAAG,QAAUG,GAAiB,CACzC,KAAK,SAAS,aAAML,CAAI,iBAAkBK,CAAK,CACjD,CAAC,CACH,CAEQ,gBAAgBD,EAAeE,EAAsC,CAC3EF,EAAG,GAAG,UAAYG,GAAiB,CACjC,GAAI,CACF,MAAMC,KAAS,sBAAmBD,EAAK,SAAS,CAAC,EAC3CE,EAAcD,EAAO,KACrBE,EAAUF,EAAO,QAEvB,GAAI,OAAOC,GAAgB,UAAY,OAAOC,GAAY,SAAU,CAClE,KAAK,SAAS,+BAA+BJ,CAAc,GAAI,CAC7D,KAAMG,EACN,QAAAC,CACF,CAAC,EACD,MACF,CAEA,GAAID,IAAgB,0BAAwB,KAAM,CAChD,KAAK,mBAAmB,EACxB,KAAK,IAAI,8BAA8BH,CAAc,IAAKI,CAAO,EACjE,MACF,CAEA,GAAID,IAAgB,0BAAwB,QAAS,CACnD,KAAK,eAAeH,EAAgBI,CAAO,EAC3C,MACF,CAEA,KAAK,WACH,6BAA6BJ,CAAc,IAC3CG,CACF,CACF,OAASJ,EAAgB,CACvB,MAAMM,EACJN,aAAiB,MAAQA,EAAM,QAAU,OAAOA,CAAK,EACvD,KAAK,SACH,gCAAgCC,CAAc,IAC9CK,CACF,CACF,CACF,CAAC,EAEDP,EAAG,GAAG,QAAS,IAAM,CACnB,KAAK,IAAI,mBAAOE,CAAc,eAAe,EAC7C,KAAK,iBAAiBA,CAAc,CACtC,CAAC,EAEDF,EAAG,GAAG,QAAUC,GAAiB,CAC/B,KAAK,SAAS,GAAGC,CAAc,qBAAsBD,CAAK,CAC5D,CAAC,CACH,CAEQ,iBAAiBC,EAAsC,CAC7D,MAAMJ,EAAQ,KAAK,YAAYI,CAAc,EAC7CJ,EAAM,WAAa,KAGnB,KAAK,oBAAoBI,CAAc,EAIvC,MAAMM,EAAe,KAAK,gBAAgBN,CAAc,EACxD,KAAK,oBAAoBM,CAAY,EAGjCN,IAAmB,UAErB,KAAK,mBAAmB,QAAQ,EAChC,KAAK,mBAAmB,WAAW,EACnC,KAAK,yBAAyB,QAAQ,EACtC,KAAK,yBAAyB,WAAW,IAGzC,KAAK,mBAAmB,WAAW,EACnC,KAAK,yBAAyB,QAAQ,EAE1C,CAEQ,eACNO,EACAH,EACM,CAEN,KAAK,YAAYG,CAAkB,EAAE,cAAc,KAAKH,CAAO,CACjE,CAEQ,mBAAmBJ,EAAsC,CAC/D,MAAMJ,EAAQ,KAAK,YAAYI,CAAc,EAC7CJ,EAAM,cAAc,SAAS,EAC7BA,EAAM,cAAgB,IAAI,eAC5B,CAEQ,yBAAyBY,EAAwC,CACvE,MAAMZ,EAAQ,KAAK,YAAYY,CAAgB,EACzCF,EAAe,KAAK,gBAAgBE,CAAgB,EACpDC,EAAgB,KAAK,YAAYH,CAAY,EAG/CV,EAAM,YAAcA,EAAM,WAAW,aAAe,YAAU,OAE5Da,EAAc,4BAChBA,EAAc,0BAA0B,YAAY,EACpDA,EAAc,0BAA4B,MAG5CA,EAAc,0BACZA,EAAc,cAAc,UAAU,CACpC,KAAOL,GAAY,CAEfR,EAAM,YACNA,EAAM,WAAW,aAAe,YAAU,OAE1C,KAAK,IACH,2BAA2BU,CAAY,OAAOE,CAAgB,EAChE,EACAZ,EAAM,WAAW,QACf,uBAAoB,CAClB,KAAM,0BAAwB,QAC9B,QAAAQ,CACF,CAAC,CACH,EAEJ,CACF,CAAC,EAEP,CAEQ,oBAAoBV,EAA4B,CACtD,MAAME,EAAQ,KAAK,YAAYF,CAAI,EAC/BE,EAAM,4BACRA,EAAM,0BAA0B,YAAY,EAC5CA,EAAM,0BAA4B,KAEtC,CAEA,MAAM,MAAsB,CAC1B,YAAK,IAAI,qBAAqB,EAG9B,KAAK,oBAAoB,QAAQ,EACjC,KAAK,oBAAoB,WAAW,EAGpC,KAAK,YAAY,OAAO,YAAY,MAAM,EAC1C,KAAK,YAAY,UAAU,YAAY,MAAM,EAC7C,KAAK,YAAY,OAAO,WAAa,KACrC,KAAK,YAAY,UAAU,WAAa,KAGjC,IAAI,QAAec,GAAY,CACpC,IAAIC,EAAc,EAClB,MAAMC,EAAc,IAAM,CACxBD,IACIA,IAAgB,IAClB,KAAK,IAAI,iBAAiB,EAC1BD,EAAQ,EAEZ,EAEMG,EAAenB,GAAyB,CAC5C,MAAME,EAAQ,KAAK,YAAYF,CAAI,EAC/BE,EAAM,OACRA,EAAM,OAAO,MAAM,IAAM,CACvBA,EAAM,OAAS,KACfgB,EAAY,CACd,CAAC,EAEDA,EAAY,CAEhB,EAEAC,EAAY,QAAQ,EACpBA,EAAY,WAAW,CACzB,CAAC,CACH,CAEA,SAAgB,CACd,KAAK,KAAK,CACZ,CACF",
6
+ "names": ["WebSocketServer_exports", "__export", "DevToolsWebSocketServer", "__toCommonJS", "import_device_management_kit_devtools_websocket_common", "import_rxjs", "import_ws", "config", "args", "type", "mapStateToText", "state", "port", "ws", "error", "connectionType", "data", "parsed", "messageType", "payload", "errorMessage", "oppositeType", "fromConnectionType", "toConnectionType", "oppositeState", "resolve", "closedCount", "checkClosed", "closeServer"]
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";var t=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var k=Object.prototype.hasOwnProperty;var p=(r,e)=>{for(var S in e)t(r,S,{get:e[S],enumerable:!0})},s=(r,e,S,v)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of f(e))!k.call(r,o)&&o!==S&&t(r,o,{get:()=>e[o],enumerable:!(v=c(e,o))||v.enumerable});return r};var W=r=>s(t({},"__esModule",{value:!0}),r);var a={};p(a,{WebSocketServer:()=>b.DevToolsWebSocketServer});module.exports=W(a);var b=require("./WebSocketServer");0&&(module.exports={WebSocketServer});
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/index.ts"],
4
+ "sourcesContent": ["export {\n type ServerConfig,\n DevToolsWebSocketServer as WebSocketServer,\n} from \"./WebSocketServer\";\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,gEAAAE,EAAAF,GAAA,IAAAG,EAGO",
6
+ "names": ["src_exports", "__export", "__toCommonJS", "import_WebSocketServer"]
7
+ }
@@ -0,0 +1,2 @@
1
+ export*from"./src/WebSocketServer";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../index.ts"],
4
+ "sourcesContent": ["export * from \"./src/WebSocketServer\";\n"],
5
+ "mappings": "AAAA,WAAc",
6
+ "names": []
7
+ }
@@ -0,0 +1,61 @@
1
+ {
2
+ "dependencies": {
3
+ "@ledgerhq/device-management-kit-devtools-websocket-common": "workspace:^",
4
+ "rxjs": "catalog:",
5
+ "ws": "catalog:"
6
+ },
7
+ "devDependencies": {
8
+ "@ledgerhq/device-management-kit": "workspace:^",
9
+ "@ledgerhq/eslint-config-dsdk": "workspace:^",
10
+ "@ledgerhq/ldmk-tool": "workspace:^",
11
+ "@ledgerhq/prettier-config-dsdk": "workspace:^",
12
+ "@ledgerhq/tsconfig-dsdk": "workspace:^",
13
+ "@ledgerhq/vitest-config-dmk": "workspace:^",
14
+ "@types/ws": "catalog:",
15
+ "tsx": "catalog:"
16
+ },
17
+ "exports": {
18
+ ".": {
19
+ "import": "./lib/esm/index.js",
20
+ "require": "./lib/cjs/index.js",
21
+ "types": "./lib/types/index.d.ts"
22
+ },
23
+ "./*": {
24
+ "import": "./lib/esm/*",
25
+ "require": "./lib/cjs/*",
26
+ "types": "./lib/types/*"
27
+ }
28
+ },
29
+ "files": [
30
+ "./lib"
31
+ ],
32
+ "license": "Apache-2.0",
33
+ "main": "lib/index.js",
34
+ "name": "@ledgerhq/device-management-kit-devtools-websocket-server",
35
+ "peerDependencies": {
36
+ "@ledgerhq/device-management-kit": "^1.2.0"
37
+ },
38
+ "private": false,
39
+ "repository": {
40
+ "type": "git",
41
+ "url": "https://github.com/LedgerHQ/device-sdk-ts.git"
42
+ },
43
+ "scripts": {
44
+ "build": "pnpm ldmk-tool build --entryPoints index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
45
+ "cli": "tsx src/cli.ts",
46
+ "dev": "concurrently \"pnpm watch:builds\" \"pnpm watch:types\"",
47
+ "lint": "eslint",
48
+ "lint:fix": "pnpm lint --fix",
49
+ "prebuild": "rimraf lib",
50
+ "prettier": "prettier . --check",
51
+ "prettier:fix": "prettier . --write",
52
+ "test": "vitest run",
53
+ "test:coverage": "vitest run --coverage",
54
+ "test:watch": "vitest",
55
+ "typecheck": "tsc --noEmit",
56
+ "watch:builds": "pnpm ldmk-tool watch --entryPoints index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
57
+ "watch:types": "concurrently \"tsc --watch -p tsconfig.prod.json\" \"tsc-alias --watch -p tsconfig.prod.json\""
58
+ },
59
+ "types": "lib/index.d.ts",
60
+ "version": "1.0.1"
61
+ }
@@ -0,0 +1,4 @@
1
+ import{DEFAULT_CLIENT_PORT as l,DEFAULT_DASHBOARD_PORT as u,formatSocketMessage as p,parseSocketMessage as d,WEBSOCKET_MESSAGE_TYPES as c}from"@ledgerhq/device-management-kit-devtools-websocket-common";import{ReplaySubject as a}from"rxjs";import{WebSocket as i,WebSocketServer as g}from"ws";class v{clientPort;dashboardPort;connections={client:{server:null,connection:null,messageBuffer:new a,messageBufferSubscription:null},dashboard:{server:null,connection:null,messageBuffer:new a,messageBufferSubscription:null}};constructor(e={}){this.clientPort=e.clientPort??l,this.dashboardPort=e.dashboardPort??u}log(...e){console.log(new Date().toLocaleTimeString()+" [DevToolsWebSocketServer]",...e)}logError(...e){console.error(new Date().toLocaleTimeString()+" [DevToolsWebSocketServer]",...e)}logWarning(...e){console.warn(new Date().toLocaleTimeString()+" [DevToolsWebSocketServer]",...e)}getOppositeType(e){return e==="client"?"dashboard":"client"}logConnectionState(){function e(t){switch(t){case i.OPEN:return"\u2705 OPEN";case i.CLOSED:return"\u274C CLOSED";case i.CONNECTING:return"\u{1F504} CONNECTING";case i.CLOSING:return"\u{1F504}\u274C CLOSING";default:return"\u2753 UNKNOWN"}}this.log(` Connection state:
2
+ - Client connection: ${e(this.connections.client.connection?.readyState)}
3
+ - Dashboard connection: ${e(this.connections.dashboard.connection?.readyState)}`)}start(){this.log(`Starting servers on ports ${this.clientPort} (client) and ${this.dashboardPort} (dashboard)`),this.startServer("client",this.clientPort),this.startServer("dashboard",this.dashboardPort),this.log("Servers started successfully")}startServer(e,t){const n=this.connections[e];n.server=new g({port:t}),n.server.on("connection",o=>{this.log(`\u{1F50C} ${e} connected`),this.logConnectionState(),n.connection=o,this.setupConnection(o,e),this.setupMessageForwardingTo(e)}),n.server.on("error",o=>{this.logError(`\u{1F4A5} ${e} server error:`,o)})}setupConnection(e,t){e.on("message",n=>{try{const o=d(n.toString()),s=o.type,r=o.payload;if(typeof s!="string"||typeof r!="string"){this.logError(`Invalid message format from ${t}`,{type:s,payload:r});return}if(s===c.INIT){this.logConnectionState(),this.log(`Received init message from ${t}:`,r);return}if(s===c.MESSAGE){this.forwardMessage(t,r);return}this.logWarning(`Unknown message type from ${t}:`,s)}catch(o){const s=o instanceof Error?o.message:String(o);this.logError(`Failed to parse message from ${t}:`,s)}}),e.on("close",()=>{this.log(`\u{1F50C}\u274C ${t} disconnected`),this.handleDisconnect(t)}),e.on("error",n=>{this.logError(`${t} connection error:`,n)})}handleDisconnect(e){const t=this.connections[e];t.connection=null,this.cleanupSubscription(e);const n=this.getOppositeType(e);this.cleanupSubscription(n),e==="client"?(this.resetMessageBuffer("client"),this.resetMessageBuffer("dashboard"),this.setupMessageForwardingTo("client"),this.setupMessageForwardingTo("dashboard")):(this.resetMessageBuffer("dashboard"),this.setupMessageForwardingTo("client"))}forwardMessage(e,t){this.connections[e].messageBuffer.next(t)}resetMessageBuffer(e){const t=this.connections[e];t.messageBuffer.complete(),t.messageBuffer=new a}setupMessageForwardingTo(e){const t=this.connections[e],n=this.getOppositeType(e),o=this.connections[n];t.connection&&t.connection.readyState===i.OPEN&&(o.messageBufferSubscription&&(o.messageBufferSubscription.unsubscribe(),o.messageBufferSubscription=null),o.messageBufferSubscription=o.messageBuffer.subscribe({next:s=>{t.connection&&t.connection.readyState===i.OPEN&&(this.log(`Forwarding message from ${n} to ${e}`),t.connection.send(p({type:c.MESSAGE,payload:s})))}}))}cleanupSubscription(e){const t=this.connections[e];t.messageBufferSubscription&&(t.messageBufferSubscription.unsubscribe(),t.messageBufferSubscription=null)}async stop(){return this.log("Stopping servers..."),this.cleanupSubscription("client"),this.cleanupSubscription("dashboard"),this.connections.client.connection?.close(),this.connections.dashboard.connection?.close(),this.connections.client.connection=null,this.connections.dashboard.connection=null,new Promise(e=>{let t=0;const n=()=>{t++,t===2&&(this.log("Servers stopped"),e())},o=s=>{const r=this.connections[s];r.server?r.server.close(()=>{r.server=null,n()}):n()};o("client"),o("dashboard")})}destroy(){this.stop()}}export{v as DevToolsWebSocketServer};
4
+ //# sourceMappingURL=WebSocketServer.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/WebSocketServer.ts"],
4
+ "sourcesContent": ["import {\n DEFAULT_CLIENT_PORT,\n DEFAULT_DASHBOARD_PORT,\n formatSocketMessage,\n parseSocketMessage,\n WEBSOCKET_MESSAGE_TYPES,\n} from \"@ledgerhq/device-management-kit-devtools-websocket-common\";\nimport { ReplaySubject, type Subscription } from \"rxjs\";\nimport { WebSocket, WebSocketServer } from \"ws\";\n\nexport type ServerConfig = {\n clientPort?: number;\n dashboardPort?: number;\n};\n\ntype ConnectionType = \"client\" | \"dashboard\";\n\ninterface ConnectionState {\n server: WebSocketServer | null;\n connection: WebSocket | null;\n /**\n * Messages to be forwarded to the opposite connection.\n */\n messageBuffer: ReplaySubject<string>;\n /**\n * Subscription to the message buffer.\n */\n messageBufferSubscription: Subscription | null;\n}\n\nexport class DevToolsWebSocketServer {\n private readonly clientPort: number;\n private readonly dashboardPort: number;\n\n // Use a map to handle both connections uniformly\n private connections: Record<ConnectionType, ConnectionState> = {\n client: {\n server: null,\n connection: null,\n messageBuffer: new ReplaySubject(),\n messageBufferSubscription: null,\n },\n dashboard: {\n server: null,\n connection: null,\n messageBuffer: new ReplaySubject(),\n messageBufferSubscription: null,\n },\n };\n\n constructor(config: ServerConfig = {}) {\n this.clientPort = config.clientPort ?? DEFAULT_CLIENT_PORT;\n this.dashboardPort = config.dashboardPort ?? DEFAULT_DASHBOARD_PORT;\n }\n\n private log(...args: Parameters<typeof console.log>) {\n console.log(\n new Date().toLocaleTimeString() + \" [DevToolsWebSocketServer]\",\n ...args,\n );\n }\n\n private logError(...args: Parameters<typeof console.error>) {\n console.error(\n new Date().toLocaleTimeString() + \" [DevToolsWebSocketServer]\",\n ...args,\n );\n }\n\n private logWarning(...args: Parameters<typeof console.warn>) {\n console.warn(\n new Date().toLocaleTimeString() + \" [DevToolsWebSocketServer]\",\n ...args,\n );\n }\n\n private getOppositeType(type: ConnectionType): ConnectionType {\n return type === \"client\" ? \"dashboard\" : \"client\";\n }\n\n private logConnectionState(): void {\n function mapStateToText(state: number | undefined) {\n switch (state) {\n case WebSocket.OPEN:\n return \"\u2705 OPEN\";\n case WebSocket.CLOSED:\n return \"\u274C CLOSED\";\n case WebSocket.CONNECTING:\n return \"\uD83D\uDD04 CONNECTING\";\n case WebSocket.CLOSING:\n return \"\uD83D\uDD04\u274C CLOSING\";\n default:\n return \"\u2753 UNKNOWN\";\n }\n }\n\n this.log(\n ` Connection state:\\n` +\n ` - Client connection: ${mapStateToText(this.connections.client.connection?.readyState)}\\n` +\n ` - Dashboard connection: ${mapStateToText(this.connections.dashboard.connection?.readyState)}`,\n );\n }\n\n start(): void {\n this.log(\n `Starting servers on ports ${this.clientPort} (client) and ${this.dashboardPort} (dashboard)`,\n );\n\n this.startServer(\"client\", this.clientPort);\n this.startServer(\"dashboard\", this.dashboardPort);\n\n this.log(\"Servers started successfully\");\n }\n\n private startServer(type: ConnectionType, port: number): void {\n const state = this.connections[type];\n state.server = new WebSocketServer({ port });\n\n state.server.on(\"connection\", (ws: WebSocket) => {\n this.log(`\uD83D\uDD0C ${type} connected`);\n this.logConnectionState();\n\n state.connection = ws;\n this.setupConnection(ws, type);\n this.setupMessageForwardingTo(type);\n });\n\n state.server.on(\"error\", (error: Error) => {\n this.logError(`\uD83D\uDCA5 ${type} server error:`, error);\n });\n }\n\n private setupConnection(ws: WebSocket, connectionType: ConnectionType): void {\n ws.on(\"message\", (data: Buffer) => {\n try {\n const parsed = parseSocketMessage(data.toString());\n const messageType = parsed.type;\n const payload = parsed.payload;\n\n if (typeof messageType !== \"string\" || typeof payload !== \"string\") {\n this.logError(`Invalid message format from ${connectionType}`, {\n type: messageType,\n payload,\n });\n return;\n }\n\n if (messageType === WEBSOCKET_MESSAGE_TYPES.INIT) {\n this.logConnectionState();\n this.log(`Received init message from ${connectionType}:`, payload);\n return;\n }\n\n if (messageType === WEBSOCKET_MESSAGE_TYPES.MESSAGE) {\n this.forwardMessage(connectionType, payload);\n return;\n }\n\n this.logWarning(\n `Unknown message type from ${connectionType}:`,\n messageType,\n );\n } catch (error: unknown) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n this.logError(\n `Failed to parse message from ${connectionType}:`,\n errorMessage,\n );\n }\n });\n\n ws.on(\"close\", () => {\n this.log(`\uD83D\uDD0C\u274C ${connectionType} disconnected`);\n this.handleDisconnect(connectionType);\n });\n\n ws.on(\"error\", (error: Error) => {\n this.logError(`${connectionType} connection error:`, error);\n });\n }\n\n private handleDisconnect(connectionType: ConnectionType): void {\n const state = this.connections[connectionType];\n state.connection = null;\n\n // Clean up subscription on THIS side (for messages going out)\n this.cleanupSubscription(connectionType);\n\n // Also clean up subscription on OPPOSITE side (for messages coming in)\n // This ensures when we reconnect, we create a fresh subscription\n const oppositeType = this.getOppositeType(connectionType);\n this.cleanupSubscription(oppositeType);\n\n // Reset buffers based on connection type\n if (connectionType === \"client\") {\n // Reset both buffers when client disconnects\n this.resetMessageBuffer(\"client\");\n this.resetMessageBuffer(\"dashboard\");\n this.setupMessageForwardingTo(\"client\");\n this.setupMessageForwardingTo(\"dashboard\");\n } else {\n // Reset dashboard-to-client buffer when dashboard disconnects\n this.resetMessageBuffer(\"dashboard\");\n this.setupMessageForwardingTo(\"client\");\n }\n }\n\n private forwardMessage(\n fromConnectionType: ConnectionType,\n payload: string,\n ): void {\n // Always emit to the appropriate ReplaySubject\n this.connections[fromConnectionType].messageBuffer.next(payload);\n }\n\n private resetMessageBuffer(connectionType: ConnectionType): void {\n const state = this.connections[connectionType];\n state.messageBuffer.complete();\n state.messageBuffer = new ReplaySubject<string>();\n }\n\n private setupMessageForwardingTo(toConnectionType: ConnectionType): void {\n const state = this.connections[toConnectionType];\n const oppositeType = this.getOppositeType(toConnectionType);\n const oppositeState = this.connections[oppositeType];\n\n // Set up forwarding from the opposite connection to this one\n if (state.connection && state.connection.readyState === WebSocket.OPEN) {\n // Always clean up existing subscription first to ensure fresh subscription\n if (oppositeState.messageBufferSubscription) {\n oppositeState.messageBufferSubscription.unsubscribe();\n oppositeState.messageBufferSubscription = null;\n }\n // Create new subscription - this will replay all buffered messages\n oppositeState.messageBufferSubscription =\n oppositeState.messageBuffer.subscribe({\n next: (payload) => {\n if (\n state.connection &&\n state.connection.readyState === WebSocket.OPEN\n ) {\n this.log(\n `Forwarding message from ${oppositeType} to ${toConnectionType}`,\n );\n state.connection.send(\n formatSocketMessage({\n type: WEBSOCKET_MESSAGE_TYPES.MESSAGE,\n payload,\n }),\n );\n }\n },\n });\n }\n }\n\n private cleanupSubscription(type: ConnectionType): void {\n const state = this.connections[type];\n if (state.messageBufferSubscription) {\n state.messageBufferSubscription.unsubscribe();\n state.messageBufferSubscription = null;\n }\n }\n\n async stop(): Promise<void> {\n this.log(\"Stopping servers...\");\n\n // Clean up all subscriptions\n this.cleanupSubscription(\"client\");\n this.cleanupSubscription(\"dashboard\");\n\n // Close all connections\n this.connections.client.connection?.close();\n this.connections.dashboard.connection?.close();\n this.connections.client.connection = null;\n this.connections.dashboard.connection = null;\n\n // Close servers\n return new Promise<void>((resolve) => {\n let closedCount = 0;\n const checkClosed = () => {\n closedCount++;\n if (closedCount === 2) {\n this.log(\"Servers stopped\");\n resolve();\n }\n };\n\n const closeServer = (type: ConnectionType) => {\n const state = this.connections[type];\n if (state.server) {\n state.server.close(() => {\n state.server = null;\n checkClosed();\n });\n } else {\n checkClosed();\n }\n };\n\n closeServer(\"client\");\n closeServer(\"dashboard\");\n });\n }\n\n destroy(): void {\n this.stop();\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["DEFAULT_CLIENT_PORT", "DEFAULT_DASHBOARD_PORT", "formatSocketMessage", "parseSocketMessage", "WEBSOCKET_MESSAGE_TYPES", "ReplaySubject", "WebSocket", "WebSocketServer", "DevToolsWebSocketServer", "config", "args", "type", "mapStateToText", "state", "port", "ws", "error", "connectionType", "data", "parsed", "messageType", "payload", "errorMessage", "oppositeType", "fromConnectionType", "toConnectionType", "oppositeState", "resolve", "closedCount", "checkClosed", "closeServer"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{DevToolsWebSocketServer as o}from"./WebSocketServer";export{o as WebSocketServer};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/index.ts"],
4
+ "sourcesContent": ["export {\n type ServerConfig,\n DevToolsWebSocketServer as WebSocketServer,\n} from \"./WebSocketServer\";\n"],
5
+ "mappings": "AAAA,OAE6B,2BAA3BA,MACK",
6
+ "names": ["DevToolsWebSocketServer"]
7
+ }
@@ -0,0 +1,2 @@
1
+ export * from "./src/WebSocketServer";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,26 @@
1
+ export type ServerConfig = {
2
+ clientPort?: number;
3
+ dashboardPort?: number;
4
+ };
5
+ export declare class DevToolsWebSocketServer {
6
+ private readonly clientPort;
7
+ private readonly dashboardPort;
8
+ private connections;
9
+ constructor(config?: ServerConfig);
10
+ private log;
11
+ private logError;
12
+ private logWarning;
13
+ private getOppositeType;
14
+ private logConnectionState;
15
+ start(): void;
16
+ private startServer;
17
+ private setupConnection;
18
+ private handleDisconnect;
19
+ private forwardMessage;
20
+ private resetMessageBuffer;
21
+ private setupMessageForwardingTo;
22
+ private cleanupSubscription;
23
+ stop(): Promise<void>;
24
+ destroy(): void;
25
+ }
26
+ //# sourceMappingURL=WebSocketServer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebSocketServer.d.ts","sourceRoot":"","sources":["../../../src/WebSocketServer.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAiBF,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IAGvC,OAAO,CAAC,WAAW,CAajB;gBAEU,MAAM,GAAE,YAAiB;IAKrC,OAAO,CAAC,GAAG;IAOX,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,kBAAkB;IAuB1B,KAAK,IAAI,IAAI;IAWb,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,eAAe;IAkDvB,OAAO,CAAC,gBAAgB;IA0BxB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,wBAAwB;IAmChC,OAAO,CAAC,mBAAmB;IAQrB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAyC3B,OAAO,IAAI,IAAI;CAGhB"}
@@ -0,0 +1,2 @@
1
+ export { type ServerConfig, DevToolsWebSocketServer as WebSocketServer, } from "./WebSocketServer";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EACjB,uBAAuB,IAAI,eAAe,GAC3C,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1 @@
1
+ {"fileNames":["../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es5.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2016.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2021.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.dom.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.decorators.d.ts","../../../../../node_modules/.pnpm/typescript@5.9.2/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../websocket-common/lib/types/src/index.d.ts","../../../websocket-common/lib/types/index.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/Subscription.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/Subscriber.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/Operator.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/Observable.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/types.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/audit.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/auditTime.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/buffer.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/bufferCount.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/bufferTime.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/bufferToggle.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/bufferWhen.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/catchError.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/combineLatestAll.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/combineAll.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/combineLatest.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/combineLatestWith.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/concat.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/concatAll.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/concatMap.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/concatMapTo.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/concatWith.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/connect.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/count.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/debounce.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/debounceTime.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/defaultIfEmpty.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/delay.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/delayWhen.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/dematerialize.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/distinct.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/distinctUntilChanged.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/distinctUntilKeyChanged.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/elementAt.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/endWith.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/every.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/exhaustAll.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/exhaust.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/exhaustMap.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/expand.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/filter.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/finalize.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/find.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/findIndex.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/first.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/Subject.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/groupBy.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/ignoreElements.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/isEmpty.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/last.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/map.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/mapTo.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/Notification.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/materialize.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/max.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/merge.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/mergeAll.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/mergeMap.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/flatMap.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/mergeMapTo.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/mergeScan.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/mergeWith.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/min.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/observable/ConnectableObservable.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/multicast.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/observeOn.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/onErrorResumeNextWith.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/pairwise.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/partition.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/pluck.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/publish.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/publishBehavior.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/publishLast.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/publishReplay.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/race.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/raceWith.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/reduce.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/repeat.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/repeatWhen.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/retry.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/retryWhen.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/refCount.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/sample.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/sampleTime.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/scan.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/sequenceEqual.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/share.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/shareReplay.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/single.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/skip.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/skipLast.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/skipUntil.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/skipWhile.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/startWith.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/subscribeOn.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/switchAll.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/switchMap.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/switchMapTo.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/switchScan.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/take.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/takeLast.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/takeUntil.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/takeWhile.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/tap.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/throttle.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/throttleTime.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/throwIfEmpty.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/timeInterval.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/timeout.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/timeoutWith.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/timestamp.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/toArray.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/window.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/windowCount.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/windowTime.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/windowToggle.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/windowWhen.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/withLatestFrom.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/zip.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/zipAll.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/operators/zipWith.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/operators/index.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/scheduler/Action.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/Scheduler.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/testing/TestMessage.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/testing/SubscriptionLog.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/testing/SubscriptionLoggable.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/testing/ColdObservable.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/testing/HotObservable.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/scheduler/AsyncScheduler.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/scheduler/timerHandle.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/scheduler/AsyncAction.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/scheduler/VirtualTimeScheduler.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/testing/TestScheduler.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/testing/index.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/symbol/observable.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/observable/dom/animationFrames.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/BehaviorSubject.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/ReplaySubject.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/AsyncSubject.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/scheduler/AsapScheduler.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/scheduler/asap.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/scheduler/async.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/scheduler/QueueScheduler.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/scheduler/queue.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/scheduler/AnimationFrameScheduler.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/scheduler/animationFrame.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/util/identity.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/util/pipe.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/util/noop.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/util/isObservable.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/lastValueFrom.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/firstValueFrom.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/util/ArgumentOutOfRangeError.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/util/EmptyError.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/util/NotFoundError.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/util/ObjectUnsubscribedError.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/util/SequenceError.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/util/UnsubscriptionError.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/observable/bindCallback.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/observable/bindNodeCallback.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/AnyCatcher.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/observable/combineLatest.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/observable/concat.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/observable/connectable.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/observable/defer.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/observable/empty.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/observable/forkJoin.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/observable/from.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/observable/fromEvent.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/observable/fromEventPattern.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/observable/generate.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/observable/iif.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/observable/interval.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/observable/merge.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/observable/never.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/observable/of.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/observable/onErrorResumeNext.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/observable/pairs.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/observable/partition.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/observable/race.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/observable/range.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/observable/throwError.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/observable/timer.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/observable/using.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/observable/zip.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/scheduled/scheduled.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/internal/config.d.ts","../../../../../node_modules/.pnpm/rxjs@7.8.2/node_modules/rxjs/dist/types/index.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/compatibility/disposable.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/compatibility/indexable.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/compatibility/iterators.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/compatibility/index.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/globals.typedarray.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/buffer.buffer.d.ts","../../../../../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.d.ts","../../../../../node_modules/.pnpm/undici-types@6.20.0/node_modules/undici-types/header.d.ts","../../../../../node_modules/.pnpm/undici-types@6.20.0/node_modules/undici-types/readable.d.ts","../../../../../node_modules/.pnpm/undici-types@6.20.0/node_modules/undici-types/file.d.ts","../../../../../node_modules/.pnpm/undici-types@6.20.0/node_modules/undici-types/fetch.d.ts","../../../../../node_modules/.pnpm/undici-types@6.20.0/node_modules/undici-types/formdata.d.ts","../../../../../node_modules/.pnpm/undici-types@6.20.0/node_modules/undici-types/connector.d.ts","../../../../../node_modules/.pnpm/undici-types@6.20.0/node_modules/undici-types/client.d.ts","../../../../../node_modules/.pnpm/undici-types@6.20.0/node_modules/undici-types/errors.d.ts","../../../../../node_modules/.pnpm/undici-types@6.20.0/node_modules/undici-types/dispatcher.d.ts","../../../../../node_modules/.pnpm/undici-types@6.20.0/node_modules/undici-types/global-dispatcher.d.ts","../../../../../node_modules/.pnpm/undici-types@6.20.0/node_modules/undici-types/global-origin.d.ts","../../../../../node_modules/.pnpm/undici-types@6.20.0/node_modules/undici-types/pool-stats.d.ts","../../../../../node_modules/.pnpm/undici-types@6.20.0/node_modules/undici-types/pool.d.ts","../../../../../node_modules/.pnpm/undici-types@6.20.0/node_modules/undici-types/handlers.d.ts","../../../../../node_modules/.pnpm/undici-types@6.20.0/node_modules/undici-types/balanced-pool.d.ts","../../../../../node_modules/.pnpm/undici-types@6.20.0/node_modules/undici-types/agent.d.ts","../../../../../node_modules/.pnpm/undici-types@6.20.0/node_modules/undici-types/mock-interceptor.d.ts","../../../../../node_modules/.pnpm/undici-types@6.20.0/node_modules/undici-types/mock-agent.d.ts","../../../../../node_modules/.pnpm/undici-types@6.20.0/node_modules/undici-types/mock-client.d.ts","../../../../../node_modules/.pnpm/undici-types@6.20.0/node_modules/undici-types/mock-pool.d.ts","../../../../../node_modules/.pnpm/undici-types@6.20.0/node_modules/undici-types/mock-errors.d.ts","../../../../../node_modules/.pnpm/undici-types@6.20.0/node_modules/undici-types/proxy-agent.d.ts","../../../../../node_modules/.pnpm/undici-types@6.20.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../../../node_modules/.pnpm/undici-types@6.20.0/node_modules/undici-types/retry-handler.d.ts","../../../../../node_modules/.pnpm/undici-types@6.20.0/node_modules/undici-types/retry-agent.d.ts","../../../../../node_modules/.pnpm/undici-types@6.20.0/node_modules/undici-types/api.d.ts","../../../../../node_modules/.pnpm/undici-types@6.20.0/node_modules/undici-types/interceptors.d.ts","../../../../../node_modules/.pnpm/undici-types@6.20.0/node_modules/undici-types/util.d.ts","../../../../../node_modules/.pnpm/undici-types@6.20.0/node_modules/undici-types/cookies.d.ts","../../../../../node_modules/.pnpm/undici-types@6.20.0/node_modules/undici-types/patch.d.ts","../../../../../node_modules/.pnpm/undici-types@6.20.0/node_modules/undici-types/websocket.d.ts","../../../../../node_modules/.pnpm/undici-types@6.20.0/node_modules/undici-types/eventsource.d.ts","../../../../../node_modules/.pnpm/undici-types@6.20.0/node_modules/undici-types/filereader.d.ts","../../../../../node_modules/.pnpm/undici-types@6.20.0/node_modules/undici-types/diagnostics-channel.d.ts","../../../../../node_modules/.pnpm/undici-types@6.20.0/node_modules/undici-types/content-type.d.ts","../../../../../node_modules/.pnpm/undici-types@6.20.0/node_modules/undici-types/cache.d.ts","../../../../../node_modules/.pnpm/undici-types@6.20.0/node_modules/undici-types/index.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/globals.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/assert.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/assert/strict.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/async_hooks.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/buffer.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/child_process.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/cluster.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/console.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/constants.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/crypto.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/dgram.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/diagnostics_channel.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/dns.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/dns/promises.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/domain.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/dom-events.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/events.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/fs.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/fs/promises.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/http.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/http2.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/https.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/inspector.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/module.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/net.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/os.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/path.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/perf_hooks.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/process.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/punycode.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/querystring.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/readline.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/readline/promises.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/repl.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/sea.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/sqlite.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/stream.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/stream/promises.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/stream/consumers.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/stream/web.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/string_decoder.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/test.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/timers.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/timers/promises.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/tls.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/trace_events.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/tty.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/url.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/util.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/v8.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/vm.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/wasi.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/worker_threads.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/zlib.d.ts","../../../../../node_modules/.pnpm/@types+node@22.10.1/node_modules/@types/node/index.d.ts","../../../../../node_modules/.pnpm/@types+ws@8.5.14/node_modules/@types/ws/index.d.mts","../../src/WebSocketServer.ts","../../src/index.ts","../../index.ts","../../../../../node_modules/.pnpm/@vitest+pretty-format@3.2.4/node_modules/@vitest/pretty-format/dist/index.d.ts","../../../../../node_modules/.pnpm/@vitest+utils@3.2.4/node_modules/@vitest/utils/dist/types.d.ts","../../../../../node_modules/.pnpm/@vitest+utils@3.2.4/node_modules/@vitest/utils/dist/helpers.d.ts","../../../../../node_modules/.pnpm/tinyrainbow@2.0.0/node_modules/tinyrainbow/dist/index-8b61d5bc.d.ts","../../../../../node_modules/.pnpm/tinyrainbow@2.0.0/node_modules/tinyrainbow/dist/node.d.ts","../../../../../node_modules/.pnpm/@vitest+utils@3.2.4/node_modules/@vitest/utils/dist/index.d.ts","../../../../../node_modules/.pnpm/@vitest+runner@3.2.4/node_modules/@vitest/runner/dist/tasks.d-CkscK4of.d.ts","../../../../../node_modules/.pnpm/@vitest+utils@3.2.4/node_modules/@vitest/utils/dist/types.d-BCElaP-c.d.ts","../../../../../node_modules/.pnpm/@vitest+utils@3.2.4/node_modules/@vitest/utils/dist/diff.d.ts","../../../../../node_modules/.pnpm/@vitest+runner@3.2.4/node_modules/@vitest/runner/dist/types.d.ts","../../../../../node_modules/.pnpm/@vitest+utils@3.2.4/node_modules/@vitest/utils/dist/error.d.ts","../../../../../node_modules/.pnpm/@vitest+runner@3.2.4/node_modules/@vitest/runner/dist/index.d.ts","../../../../../node_modules/.pnpm/vitest@3.2.4_@types+debug@4.1.12_@types+node@22.10.1_jiti@1.21.6_jsdom@26.0.0_bufferuti_47d4192721073f96f73ea8259c7612e8/node_modules/vitest/optional-types.d.ts","../../../../../node_modules/.pnpm/vitest@3.2.4_@types+debug@4.1.12_@types+node@22.10.1_jiti@1.21.6_jsdom@26.0.0_bufferuti_47d4192721073f96f73ea8259c7612e8/node_modules/vitest/dist/chunks/environment.d.cL3nLXbE.d.ts","../../../../../node_modules/.pnpm/vite@7.1.6_@types+node@22.10.1_jiti@1.21.6_terser@5.43.1_tsx@4.20.3_yaml@2.7.0/node_modules/vite/types/hmrPayload.d.ts","../../../../../node_modules/.pnpm/vite@7.1.6_@types+node@22.10.1_jiti@1.21.6_terser@5.43.1_tsx@4.20.3_yaml@2.7.0/node_modules/vite/dist/node/moduleRunnerTransport-BWUZBVLX.d.ts","../../../../../node_modules/.pnpm/vite@7.1.6_@types+node@22.10.1_jiti@1.21.6_terser@5.43.1_tsx@4.20.3_yaml@2.7.0/node_modules/vite/types/customEvent.d.ts","../../../../../node_modules/.pnpm/@types+estree@1.0.8/node_modules/@types/estree/index.d.ts","../../../../../node_modules/.pnpm/rollup@4.55.1/node_modules/rollup/dist/rollup.d.ts","../../../../../node_modules/.pnpm/rollup@4.55.1/node_modules/rollup/dist/parseAst.d.ts","../../../../../node_modules/.pnpm/vite@7.1.6_@types+node@22.10.1_jiti@1.21.6_terser@5.43.1_tsx@4.20.3_yaml@2.7.0/node_modules/vite/types/hot.d.ts","../../../../../node_modules/.pnpm/vite@7.1.6_@types+node@22.10.1_jiti@1.21.6_terser@5.43.1_tsx@4.20.3_yaml@2.7.0/node_modules/vite/dist/node/module-runner.d.ts","../../../../../node_modules/.pnpm/esbuild@0.25.12/node_modules/esbuild/lib/main.d.ts","../../../../../node_modules/.pnpm/@jridgewell+trace-mapping@0.3.30/node_modules/@jridgewell/trace-mapping/types/sourcemap-segment.d.mts","../../../../../node_modules/.pnpm/@jridgewell+trace-mapping@0.3.30/node_modules/@jridgewell/trace-mapping/types/types.d.mts","../../../../../node_modules/.pnpm/@jridgewell+trace-mapping@0.3.30/node_modules/@jridgewell/trace-mapping/types/flatten-map.d.mts","../../../../../node_modules/.pnpm/@jridgewell+trace-mapping@0.3.30/node_modules/@jridgewell/trace-mapping/types/trace-mapping.d.mts","../../../../../node_modules/.pnpm/@jridgewell+gen-mapping@0.3.13/node_modules/@jridgewell/gen-mapping/types/sourcemap-segment.d.mts","../../../../../node_modules/.pnpm/@jridgewell+gen-mapping@0.3.13/node_modules/@jridgewell/gen-mapping/types/types.d.mts","../../../../../node_modules/.pnpm/@jridgewell+gen-mapping@0.3.13/node_modules/@jridgewell/gen-mapping/types/gen-mapping.d.mts","../../../../../node_modules/.pnpm/@jridgewell+source-map@0.3.11/node_modules/@jridgewell/source-map/types/source-map.d.mts","../../../../../node_modules/.pnpm/terser@5.43.1/node_modules/terser/tools/terser.d.ts","../../../../../node_modules/.pnpm/vite@7.1.6_@types+node@22.10.1_jiti@1.21.6_terser@5.43.1_tsx@4.20.3_yaml@2.7.0/node_modules/vite/types/internal/terserOptions.d.ts","../../../../../node_modules/.pnpm/source-map-js@1.2.1/node_modules/source-map-js/source-map.d.ts","../../../../../node_modules/.pnpm/postcss@8.5.6/node_modules/postcss/lib/previous-map.d.ts","../../../../../node_modules/.pnpm/postcss@8.5.6/node_modules/postcss/lib/input.d.ts","../../../../../node_modules/.pnpm/postcss@8.5.6/node_modules/postcss/lib/css-syntax-error.d.ts","../../../../../node_modules/.pnpm/postcss@8.5.6/node_modules/postcss/lib/declaration.d.ts","../../../../../node_modules/.pnpm/postcss@8.5.6/node_modules/postcss/lib/root.d.ts","../../../../../node_modules/.pnpm/postcss@8.5.6/node_modules/postcss/lib/warning.d.ts","../../../../../node_modules/.pnpm/postcss@8.5.6/node_modules/postcss/lib/lazy-result.d.ts","../../../../../node_modules/.pnpm/postcss@8.5.6/node_modules/postcss/lib/no-work-result.d.ts","../../../../../node_modules/.pnpm/postcss@8.5.6/node_modules/postcss/lib/processor.d.ts","../../../../../node_modules/.pnpm/postcss@8.5.6/node_modules/postcss/lib/result.d.ts","../../../../../node_modules/.pnpm/postcss@8.5.6/node_modules/postcss/lib/document.d.ts","../../../../../node_modules/.pnpm/postcss@8.5.6/node_modules/postcss/lib/rule.d.ts","../../../../../node_modules/.pnpm/postcss@8.5.6/node_modules/postcss/lib/node.d.ts","../../../../../node_modules/.pnpm/postcss@8.5.6/node_modules/postcss/lib/comment.d.ts","../../../../../node_modules/.pnpm/postcss@8.5.6/node_modules/postcss/lib/container.d.ts","../../../../../node_modules/.pnpm/postcss@8.5.6/node_modules/postcss/lib/at-rule.d.ts","../../../../../node_modules/.pnpm/postcss@8.5.6/node_modules/postcss/lib/list.d.ts","../../../../../node_modules/.pnpm/postcss@8.5.6/node_modules/postcss/lib/postcss.d.ts","../../../../../node_modules/.pnpm/postcss@8.5.6/node_modules/postcss/lib/postcss.d.mts","../../../../../node_modules/.pnpm/vite@7.1.6_@types+node@22.10.1_jiti@1.21.6_terser@5.43.1_tsx@4.20.3_yaml@2.7.0/node_modules/vite/types/internal/lightningcssOptions.d.ts","../../../../../node_modules/.pnpm/vite@7.1.6_@types+node@22.10.1_jiti@1.21.6_terser@5.43.1_tsx@4.20.3_yaml@2.7.0/node_modules/vite/types/internal/cssPreprocessorOptions.d.ts","../../../../../node_modules/.pnpm/vite@7.1.6_@types+node@22.10.1_jiti@1.21.6_terser@5.43.1_tsx@4.20.3_yaml@2.7.0/node_modules/vite/types/importGlob.d.ts","../../../../../node_modules/.pnpm/vite@7.1.6_@types+node@22.10.1_jiti@1.21.6_terser@5.43.1_tsx@4.20.3_yaml@2.7.0/node_modules/vite/types/metadata.d.ts","../../../../../node_modules/.pnpm/vite@7.1.6_@types+node@22.10.1_jiti@1.21.6_terser@5.43.1_tsx@4.20.3_yaml@2.7.0/node_modules/vite/dist/node/index.d.ts","../../../../../node_modules/.pnpm/@vitest+mocker@3.2.4_vite@7.1.6_@types+node@22.10.1_jiti@1.21.6_terser@5.43.1_tsx@4.20.3_yaml@2.7.0_/node_modules/@vitest/mocker/dist/registry.d-D765pazg.d.ts","../../../../../node_modules/.pnpm/@vitest+mocker@3.2.4_vite@7.1.6_@types+node@22.10.1_jiti@1.21.6_terser@5.43.1_tsx@4.20.3_yaml@2.7.0_/node_modules/@vitest/mocker/dist/types.d-D_aRZRdy.d.ts","../../../../../node_modules/.pnpm/@vitest+mocker@3.2.4_vite@7.1.6_@types+node@22.10.1_jiti@1.21.6_terser@5.43.1_tsx@4.20.3_yaml@2.7.0_/node_modules/@vitest/mocker/dist/index.d.ts","../../../../../node_modules/.pnpm/@vitest+utils@3.2.4/node_modules/@vitest/utils/dist/source-map.d.ts","../../../../../node_modules/.pnpm/vite-node@3.2.4_@types+node@22.10.1_jiti@1.21.6_terser@5.43.1_tsx@4.20.3_yaml@2.7.0/node_modules/vite-node/dist/trace-mapping.d-DLVdEqOp.d.ts","../../../../../node_modules/.pnpm/vite-node@3.2.4_@types+node@22.10.1_jiti@1.21.6_terser@5.43.1_tsx@4.20.3_yaml@2.7.0/node_modules/vite-node/dist/index.d-DGmxD2U7.d.ts","../../../../../node_modules/.pnpm/vite-node@3.2.4_@types+node@22.10.1_jiti@1.21.6_terser@5.43.1_tsx@4.20.3_yaml@2.7.0/node_modules/vite-node/dist/index.d.ts","../../../../../node_modules/.pnpm/@vitest+snapshot@3.2.4/node_modules/@vitest/snapshot/dist/environment.d-DHdQ1Csl.d.ts","../../../../../node_modules/.pnpm/@vitest+snapshot@3.2.4/node_modules/@vitest/snapshot/dist/rawSnapshot.d-lFsMJFUd.d.ts","../../../../../node_modules/.pnpm/@vitest+snapshot@3.2.4/node_modules/@vitest/snapshot/dist/index.d.ts","../../../../../node_modules/.pnpm/@vitest+snapshot@3.2.4/node_modules/@vitest/snapshot/dist/environment.d.ts","../../../../../node_modules/.pnpm/vitest@3.2.4_@types+debug@4.1.12_@types+node@22.10.1_jiti@1.21.6_jsdom@26.0.0_bufferuti_47d4192721073f96f73ea8259c7612e8/node_modules/vitest/dist/chunks/config.d.D2ROskhv.d.ts","../../../../../node_modules/.pnpm/vitest@3.2.4_@types+debug@4.1.12_@types+node@22.10.1_jiti@1.21.6_jsdom@26.0.0_bufferuti_47d4192721073f96f73ea8259c7612e8/node_modules/vitest/dist/chunks/worker.d.1GmBbd7G.d.ts","../../../../../node_modules/.pnpm/@types+deep-eql@4.0.2/node_modules/@types/deep-eql/index.d.ts","../../../../../node_modules/.pnpm/@types+chai@5.2.2/node_modules/@types/chai/index.d.ts","../../../../../node_modules/.pnpm/@vitest+runner@3.2.4/node_modules/@vitest/runner/dist/utils.d.ts","../../../../../node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.d.ts","../../../../../node_modules/.pnpm/vitest@3.2.4_@types+debug@4.1.12_@types+node@22.10.1_jiti@1.21.6_jsdom@26.0.0_bufferuti_47d4192721073f96f73ea8259c7612e8/node_modules/vitest/dist/chunks/benchmark.d.BwvBVTda.d.ts","../../../../../node_modules/.pnpm/vite-node@3.2.4_@types+node@22.10.1_jiti@1.21.6_terser@5.43.1_tsx@4.20.3_yaml@2.7.0/node_modules/vite-node/dist/client.d.ts","../../../../../node_modules/.pnpm/vitest@3.2.4_@types+debug@4.1.12_@types+node@22.10.1_jiti@1.21.6_jsdom@26.0.0_bufferuti_47d4192721073f96f73ea8259c7612e8/node_modules/vitest/dist/chunks/coverage.d.S9RMNXIe.d.ts","../../../../../node_modules/.pnpm/@vitest+snapshot@3.2.4/node_modules/@vitest/snapshot/dist/manager.d.ts","../../../../../node_modules/.pnpm/vitest@3.2.4_@types+debug@4.1.12_@types+node@22.10.1_jiti@1.21.6_jsdom@26.0.0_bufferuti_47d4192721073f96f73ea8259c7612e8/node_modules/vitest/dist/chunks/reporters.d.BFLkQcL6.d.ts","../../../../../node_modules/.pnpm/vitest@3.2.4_@types+debug@4.1.12_@types+node@22.10.1_jiti@1.21.6_jsdom@26.0.0_bufferuti_47d4192721073f96f73ea8259c7612e8/node_modules/vitest/dist/chunks/worker.d.CKwWzBSj.d.ts","../../../../../node_modules/.pnpm/@vitest+spy@3.2.4/node_modules/@vitest/spy/dist/index.d.ts","../../../../../node_modules/.pnpm/@vitest+expect@3.2.4/node_modules/@vitest/expect/dist/index.d.ts","../../../../../node_modules/.pnpm/vitest@3.2.4_@types+debug@4.1.12_@types+node@22.10.1_jiti@1.21.6_jsdom@26.0.0_bufferuti_47d4192721073f96f73ea8259c7612e8/node_modules/vitest/dist/chunks/global.d.MAmajcmJ.d.ts","../../../../../node_modules/.pnpm/vitest@3.2.4_@types+debug@4.1.12_@types+node@22.10.1_jiti@1.21.6_jsdom@26.0.0_bufferuti_47d4192721073f96f73ea8259c7612e8/node_modules/vitest/dist/chunks/vite.d.CMLlLIFP.d.ts","../../../../../node_modules/.pnpm/vitest@3.2.4_@types+debug@4.1.12_@types+node@22.10.1_jiti@1.21.6_jsdom@26.0.0_bufferuti_47d4192721073f96f73ea8259c7612e8/node_modules/vitest/dist/chunks/mocker.d.BE_2ls6u.d.ts","../../../../../node_modules/.pnpm/vitest@3.2.4_@types+debug@4.1.12_@types+node@22.10.1_jiti@1.21.6_jsdom@26.0.0_bufferuti_47d4192721073f96f73ea8259c7612e8/node_modules/vitest/dist/chunks/suite.d.FvehnV49.d.ts","../../../../../node_modules/.pnpm/expect-type@1.2.1/node_modules/expect-type/dist/utils.d.ts","../../../../../node_modules/.pnpm/expect-type@1.2.1/node_modules/expect-type/dist/overloads.d.ts","../../../../../node_modules/.pnpm/expect-type@1.2.1/node_modules/expect-type/dist/branding.d.ts","../../../../../node_modules/.pnpm/expect-type@1.2.1/node_modules/expect-type/dist/messages.d.ts","../../../../../node_modules/.pnpm/expect-type@1.2.1/node_modules/expect-type/dist/index.d.ts","../../../../../node_modules/.pnpm/vitest@3.2.4_@types+debug@4.1.12_@types+node@22.10.1_jiti@1.21.6_jsdom@26.0.0_bufferuti_47d4192721073f96f73ea8259c7612e8/node_modules/vitest/dist/index.d.ts","../../../../../node_modules/.pnpm/vitest@3.2.4_@types+debug@4.1.12_@types+node@22.10.1_jiti@1.21.6_jsdom@26.0.0_bufferuti_47d4192721073f96f73ea8259c7612e8/node_modules/vitest/globals.d.ts"],"fileIdsList":[[256,299,380,382],[256,299],[256,299,381],[256,299,380,383],[256,299,378,380],[256,299,377,378,379],[256,299,377,380],[256,299,425],[256,296,299],[256,298,299],[299],[256,299,304,334],[256,299,300,305,311,312,319,331,342],[256,299,300,301,311,319],[251,252,253,256,299],[256,299,302,343],[256,299,303,304,312,320],[256,299,304,331,339],[256,299,305,307,311,319],[256,298,299,306],[256,299,307,308],[256,299,311],[256,299,309,311],[256,298,299,311],[256,299,311,312,313,331,342],[256,299,311,312,313,326,331,334],[256,294,299,347],[256,294,299,307,311,314,319,331,342],[256,299,311,312,314,315,319,331,339,342],[256,299,314,316,331,339,342],[254,255,256,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348],[256,299,311,317],[256,299,318,342,347],[256,299,307,311,319,331],[256,299,320],[256,299,321],[256,298,299,322],[256,296,297,298,299,300,301,302,303,304,305,306,307,308,309,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348],[256,299,324],[256,299,325],[256,299,311,326,327],[256,299,326,328,343,345],[256,299,311,331,332,333,334],[256,299,331,333],[256,299,331,332],[256,299,334],[256,299,335],[256,296,299,331],[256,299,311,337,338],[256,299,337,338],[256,299,304,319,331,339],[256,299,340],[256,299,319,341],[256,299,314,325,342],[256,299,304,343],[256,299,331,344],[256,299,318,345],[256,299,346],[256,299,304,311,313,322,331,342,345,347],[256,299,331,348],[256,299,311,314,316,331,339,342,348,349],[256,299,358,359,362,435],[256,299,412,413],[256,299,359,360,362,363,364],[256,299,359],[256,299,359,360,362],[256,299,359,360],[256,299,419],[256,299,354,419,420],[256,299,354,419],[256,299,354,361],[256,299,355],[256,299,354,355,356,358],[256,299,354],[256,299,441,442],[256,299,441,442,443,444],[256,299,441,443],[256,299,441],[256,299,402],[256,299,400,402],[256,299,391,399,400,401,403,405],[256,299,389],[256,299,392,397,402,405],[256,299,388,405],[256,299,392,393,396,397,398,405],[256,299,392,393,394,396,397,405],[256,299,389,390,391,392,393,397,398,399,401,402,403,405],[256,299,405],[256,299,387,389,390,391,392,393,394,396,397,398,399,400,401,402,403,404],[256,299,387,405],[256,299,392,394,395,397,398,405],[256,299,396,405],[256,299,397,398,402,405],[256,299,390,400],[256,299,372,410,411],[256,299,371,372],[62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,78,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,118,119,120,121,122,123,124,125,126,127,128,129,131,132,133,134,135,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,181,182,183,185,194,196,197,198,199,200,201,203,204,206,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,256,299],[107,256,299],[65,66,256,299],[62,63,64,66,256,299],[63,66,256,299],[66,107,256,299],[62,66,184,256,299],[64,65,66,256,299],[62,66,256,299],[66,256,299],[65,256,299],[62,65,107,256,299],[63,65,66,223,256,299],[65,66,223,256,299],[65,231,256,299],[63,65,66,256,299],[75,256,299],[98,256,299],[119,256,299],[65,66,107,256,299],[66,114,256,299],[65,66,107,125,256,299],[65,66,125,256,299],[66,166,256,299],[62,66,185,256,299],[191,193,256,299],[62,66,184,191,192,256,299],[184,185,193,256,299],[191,256,299],[62,66,191,192,193,256,299],[207,256,299],[202,256,299],[205,256,299],[63,65,185,186,187,188,256,299],[107,185,186,187,188,256,299],[185,187,256,299],[65,186,187,189,190,194,256,299],[62,65,256,299],[66,209,256,299],[67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,108,109,110,111,112,113,115,116,117,118,119,120,121,122,123,124,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,256,299],[195,256,299],[256,299,384],[256,299,357],[256,266,270,299,342],[256,266,299,331,342],[256,261,299],[256,263,266,299,339,342],[256,299,319,339],[256,299,349],[256,261,299,349],[256,263,266,299,319,342],[256,258,259,262,265,299,311,331,342],[256,266,273,299],[256,258,264,299],[256,266,287,288,299],[256,262,266,299,334,342,349],[256,287,299,349],[256,260,261,299,349],[256,266,299],[256,260,261,262,263,264,265,266,267,268,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,288,289,290,291,292,293,299],[256,266,281,299],[256,266,273,274,299],[256,264,266,274,275,299],[256,265,299],[256,258,261,266,299],[256,266,270,274,275,299],[256,270,299],[256,264,266,269,299,342],[256,258,263,266,273,299],[256,299,331],[256,261,266,287,299,347,349],[256,299,416,417],[256,299,416],[256,299,311,312,314,315,316,319,331,339,342,348,349,368,369,370,372,373,375,376,386,406,407,408,409,410,411],[256,299,368,369,370,374],[256,299,368],[256,299,370],[256,299,385],[256,299,372,411],[256,299,365,427,428,437],[256,299,354,362,365,421,422,437],[256,299,430],[256,299,366],[256,299,354,365,367,421,429,436,437],[256,299,414],[256,299,302,312,331,354,359,362,365,367,411,414,415,418,421,423,424,426,429,431,432,437,438],[256,299,365,427,428,429,437],[256,299,411,433,438],[256,299,365,367,418,421,423,437],[256,299,347,424],[256,299,302,312,331,347,354,359,362,365,366,367,411,414,415,418,421,422,423,424,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,445],[256,299,446],[60,256,299],[256,299,351],[61,250,256,299,350]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},"bf1152ad2dd7e1f3a7f1755ed6f844f4108108a7f485069e3138d0c7bd6e7821","08d3af0ce37fe7a0d6e70aadfd0d1a14908fbdcb518bd6df59afa3222ee43712",{"version":"073ca26c96184db9941b5ec0ddea6981c9b816156d9095747809e524fdd90e35","impliedFormat":1},{"version":"e41d17a2ec23306d953cda34e573ed62954ca6ea9b8c8b74e013d07a6886ce47","impliedFormat":1},{"version":"241bd4add06f06f0699dcd58f3b334718d85e3045d9e9d4fa556f11f4d1569c1","impliedFormat":1},{"version":"2ae3787e1498b20aad1b9c2ee9ea517ec30e89b70d242d8e3e52d1e091039695","impliedFormat":1},{"version":"c7c72c4cffb1bc83617eefed71ed68cc89df73cab9e19507ccdecb3e72b4967e","affectsGlobalScope":true,"impliedFormat":1},{"version":"b8bff8a60af0173430b18d9c3e5c443eaa3c515617210c0c7b3d2e1743c19ecb","impliedFormat":1},{"version":"38b38db08e7121828294dec10957a7a9ff263e33e2a904b346516d4a4acca482","impliedFormat":1},{"version":"a76ebdf2579e68e4cfe618269c47e5a12a4e045c2805ed7f7ab37af8daa6b091","impliedFormat":1},{"version":"8a2aaea564939c22be05d665cc955996721bad6d43148f8fa21ae8f64afecd37","impliedFormat":1},{"version":"e59d36b7b6e8ba2dd36d032a5f5c279d2460968c8b4e691ca384f118fb09b52a","impliedFormat":1},{"version":"e96885c0684c9042ec72a9a43ef977f6b4b4a2728f4b9e737edcbaa0c74e5bf6","impliedFormat":1},{"version":"95950a187596e206d32d5d9c7b932901088c65ed8f9040e614aa8e321e0225ef","impliedFormat":1},{"version":"89e061244da3fc21b7330f4bd32f47c1813dd4d7f1dc3d0883d88943f035b993","impliedFormat":1},{"version":"e46558c2e04d06207b080138678020448e7fc201f3d69c2601b0d1456105f29a","impliedFormat":1},{"version":"71549375db52b1163411dba383b5f4618bdf35dc57fa327a1c7d135cf9bf67d1","impliedFormat":1},{"version":"7e6b2d61d6215a4e82ea75bc31a80ebb8ad0c2b37a60c10c70dd671e8d9d6d5d","impliedFormat":1},{"version":"78bea05df2896083cca28ed75784dde46d4b194984e8fc559123b56873580a23","impliedFormat":1},{"version":"5dd04ced37b7ea09f29d277db11f160df7fd73ba8b9dba86cb25552e0653a637","impliedFormat":1},{"version":"f74b81712e06605677ae1f061600201c425430151f95b5ef4d04387ad7617e6a","impliedFormat":1},{"version":"9a72847fcf4ac937e352d40810f7b7aec7422d9178451148296cf1aa19467620","impliedFormat":1},{"version":"3ae18f60e0b96fa1e025059b7d25b3247ba4dcb5f4372f6d6e67ce2adac74eac","impliedFormat":1},{"version":"2b9260f44a2e071450ae82c110f5dc8f330c9e5c3e85567ed97248330f2bf639","impliedFormat":1},{"version":"4f196e13684186bda6f5115fc4677a87cf84a0c9c4fc17b8f51e0984f3697b6d","impliedFormat":1},{"version":"61419f2c5822b28c1ea483258437c1faab87d00c6f84481aa22afb3380d8e9a4","impliedFormat":1},{"version":"64479aee03812264e421c0bf5104a953ca7b02740ba80090aead1330d0effe91","impliedFormat":1},{"version":"0521108c9f8ddb17654a0a54dae6ba9667c99eddccfd6af5748113e022d1c37a","impliedFormat":1},{"version":"c5570e504be103e255d80c60b56c367bf45d502ca52ee35c55dec882f6563b5c","impliedFormat":1},{"version":"ee764e6e9a7f2b987cc1a2c0a9afd7a8f4d5ebc4fdb66ad557a7f14a8c2bd320","impliedFormat":1},{"version":"0520b5093712c10c6ef23b5fea2f833bf5481771977112500045e5ea7e8e2b69","impliedFormat":1},{"version":"5c3cf26654cf762ac4d7fd7b83f09acfe08eef88d2d6983b9a5a423cb4004ca3","impliedFormat":1},{"version":"e60fa19cf7911c1623b891155d7eb6b7e844e9afdf5738e3b46f3b687730a2bd","impliedFormat":1},{"version":"b1fd72ff2bb0ba91bb588f3e5329f8fc884eb859794f1c4657a2bfa122ae54d0","impliedFormat":1},{"version":"6cf42a4f3cfec648545925d43afaa8bb364ac10a839ffed88249da109361b275","impliedFormat":1},{"version":"d7058e75920120b142a9d57be25562a3cd9a936269fd52908505f530105f2ec4","impliedFormat":1},{"version":"6df52b70d7f7702202f672541a5f4a424d478ee5be51a9d37b8ccbe1dbf3c0f2","impliedFormat":1},{"version":"0ca7f997e9a4d8985e842b7c882e521b6f63233c4086e9fe79dd7a9dc4742b5e","impliedFormat":1},{"version":"91046b5c6b55d3b194c81fd4df52f687736fad3095e9d103ead92bb64dc160ee","impliedFormat":1},{"version":"db5704fdad56c74dfc5941283c1182ed471bd17598209d3ac4a49faa72e43cfc","impliedFormat":1},{"version":"758e8e89559b02b81bc0f8fd395b17ad5aff75490c862cbe369bb1a3d1577c40","impliedFormat":1},{"version":"2ee64342c077b1868f1834c063f575063051edd6e2964257d34aad032d6b657c","impliedFormat":1},{"version":"6f6b4b3d670b6a5f0e24ea001c1b3d36453c539195e875687950a178f1730fa7","impliedFormat":1},{"version":"a472a1d3f25ce13a1d44911cd3983956ac040ce2018e155435ea34afb25f864c","impliedFormat":1},{"version":"b48b83a86dd9cfe36f8776b3ff52fcd45b0e043c0538dc4a4b149ba45fe367b9","impliedFormat":1},{"version":"792de5c062444bd2ee0413fb766e57e03cce7cdaebbfc52fc0c7c8e95069c96b","impliedFormat":1},{"version":"a79e3e81094c7a04a885bad9b049c519aace53300fb8a0fe4f26727cb5a746ce","impliedFormat":1},{"version":"93181bac0d90db185bb730c95214f6118ae997fe836a98a49664147fbcaf1988","impliedFormat":1},{"version":"8a4e89564d8ea66ad87ee3762e07540f9f0656a62043c910d819b4746fc429c5","impliedFormat":1},{"version":"b9011d99942889a0f95e120d06b698c628b0b6fdc3e6b7ecb459b97ed7d5bcc6","impliedFormat":1},{"version":"4d639cbbcc2f8f9ce6d55d5d503830d6c2556251df332dc5255d75af53c8a0e7","impliedFormat":1},{"version":"cdb48277f600ab5f429ecf1c5ea046683bc6b9f73f3deab9a100adac4b34969c","impliedFormat":1},{"version":"75be84956a29040a1afbe864c0a7a369dfdb739380072484eff153905ef867ee","impliedFormat":1},{"version":"b06b4adc2ae03331a92abd1b19af8eb91ec2bf8541747ee355887a167d53145e","impliedFormat":1},{"version":"c54166a85bd60f86d1ebb90ce0117c0ecb850b8a33b366691629fdf26f1bbbd8","impliedFormat":1},{"version":"0d417c15c5c635384d5f1819cc253a540fe786cc3fda32f6a2ae266671506a21","impliedFormat":1},{"version":"80f23f1d60fbed356f726b3b26f9d348dddbb34027926d10d59fad961e70a730","impliedFormat":1},{"version":"cb59317243a11379a101eb2f27b9df1022674c3df1df0727360a0a3f963f523b","impliedFormat":1},{"version":"cc20bb2227dd5de0aab0c8d697d1572f8000550e62c7bf5c92f212f657dd88c5","impliedFormat":1},{"version":"06b8a7d46195b6b3980e523ef59746702fd210b71681a83a5cf73799623621f9","impliedFormat":1},{"version":"860e4405959f646c101b8005a191298b2381af8f33716dc5f42097e4620608f8","impliedFormat":1},{"version":"f7e32adf714b8f25d3c1783473abec3f2e82d5724538d8dcf6f51baaaff1ca7a","impliedFormat":1},{"version":"d0da80c845999a16c24d0783033fb5366ada98df17867c98ad433ede05cd87fd","impliedFormat":1},{"version":"bfbf80f9cd4558af2d7b2006065340aaaced15947d590045253ded50aabb9bc5","impliedFormat":1},{"version":"fd9a991b51870325e46ebb0e6e18722d313f60cd8e596e645ec5ac15b96dbf4e","impliedFormat":1},{"version":"c3bd2b94e4298f81743d92945b80e9b56c1cdfb2bef43c149b7106a2491b1fc9","impliedFormat":1},{"version":"a246cce57f558f9ebaffd55c1e5673da44ea603b4da3b2b47eb88915d30a9181","impliedFormat":1},{"version":"d993eacc103c5a065227153c9aae8acea3a4322fe1a169ee7c70b77015bf0bb2","impliedFormat":1},{"version":"fc2b03d0c042aa1627406e753a26a1eaad01b3c496510a78016822ef8d456bb6","impliedFormat":1},{"version":"063c7ebbe756f0155a8b453f410ca6b76ffa1bbc1048735bcaf9c7c81a1ce35f","impliedFormat":1},{"version":"314e402cd481370d08f63051ae8b8c8e6370db5ee3b8820eeeaaf8d722a6dac6","impliedFormat":1},{"version":"9669075ac38ce36b638b290ba468233980d9f38bdc62f0519213b2fd3e2552ec","impliedFormat":1},{"version":"4d123de012c24e2f373925100be73d50517ac490f9ed3578ac82d0168bfbd303","impliedFormat":1},{"version":"656c9af789629aa36b39092bee3757034009620439d9a39912f587538033ce28","impliedFormat":1},{"version":"3ac3f4bdb8c0905d4c3035d6f7fb20118c21e8a17bee46d3735195b0c2a9f39f","impliedFormat":1},{"version":"1f453e6798ed29c86f703e9b41662640d4f2e61337007f27ac1c616f20093f69","impliedFormat":1},{"version":"af43b7871ff21c62bf1a54ec5c488e31a8d3408d5b51ff2e9f8581b6c55f2fc7","impliedFormat":1},{"version":"70550511d25cbb0b6a64dcac7fffc3c1397fd4cbeb6b23ccc7f9b794ab8a6954","impliedFormat":1},{"version":"af0fbf08386603a62f2a78c42d998c90353b1f1d22e05a384545f7accf881e0a","impliedFormat":1},{"version":"cefc20054d20b85b534206dbcedd509bb74f87f3d8bc45c58c7be3a76caa45e1","impliedFormat":1},{"version":"ad6eee4877d0f7e5244d34bc5026fd6e9cf8e66c5c79416b73f9f6ebf132f924","impliedFormat":1},{"version":"4888fd2bcfee9a0ce89d0df860d233e0cee8ee9c479b6bd5a5d5f9aae98342fe","impliedFormat":1},{"version":"f4749c102ced952aa6f40f0b579865429c4869f6d83df91000e98005476bee87","impliedFormat":1},{"version":"56654d2c5923598384e71cb808fac2818ca3f07dd23bb018988a39d5e64f268b","impliedFormat":1},{"version":"8b6719d3b9e65863da5390cb26994602c10a315aa16e7d70778a63fee6c4c079","impliedFormat":1},{"version":"05f56cd4b929977d18df8f3d08a4c929a2592ef5af083e79974b20a063f30940","impliedFormat":1},{"version":"547d3c406a21b30e2b78629ecc0b2ddaf652d9e0bdb2d59ceebce5612906df33","impliedFormat":1},{"version":"b3a4f9385279443c3a5568ec914a9492b59a723386161fd5ef0619d9f8982f97","impliedFormat":1},{"version":"3fe66aba4fbe0c3ba196a4f9ed2a776fe99dc4d1567a558fb11693e9fcc4e6ed","impliedFormat":1},{"version":"140eef237c7db06fc5adcb5df434ee21e81ee3a6fd57e1a75b8b3750aa2df2d8","impliedFormat":1},{"version":"0944ec553e4744efae790c68807a461720cff9f3977d4911ac0d918a17c9dd99","impliedFormat":1},{"version":"cb46b38d5e791acaa243bf342b8b5f8491639847463ac965b93896d4fb0af0d9","impliedFormat":1},{"version":"7c7d9e116fe51100ff766703e6b5e4424f51ad8977fe474ddd8d0959aa6de257","impliedFormat":1},{"version":"af70a2567e586be0083df3938b6a6792e6821363d8ef559ad8d721a33a5bcdaf","impliedFormat":1},{"version":"006cff3a8bcb92d77953f49a94cd7d5272fef4ab488b9052ef82b6a1260d870b","impliedFormat":1},{"version":"7d44bfdc8ee5e9af70738ff652c622ae3ad81815e63ab49bdc593d34cb3a68e5","impliedFormat":1},{"version":"339814517abd4dbc7b5f013dfd3b5e37ef0ea914a8bbe65413ecffd668792bc6","impliedFormat":1},{"version":"34d5bc0a6958967ec237c99f980155b5145b76e6eb927c9ffc57d8680326b5d8","impliedFormat":1},{"version":"9eae79b70c9d8288032cbe1b21d0941f6bd4f315e14786b2c1d10bccc634e897","impliedFormat":1},{"version":"18ce015ed308ea469b13b17f99ce53bbb97975855b2a09b86c052eefa4aa013a","impliedFormat":1},{"version":"5a931bc4106194e474be141e0bc1046629510dc95b9a0e4b02a3783847222965","impliedFormat":1},{"version":"5e5f371bf23d5ced2212a5ff56675aefbd0c9b3f4d4fdda1b6123ac6e28f058c","impliedFormat":1},{"version":"907c17ad5a05eecb29b42b36cc8fec6437be27cc4986bb3a218e4f74f606911c","impliedFormat":1},{"version":"ce60a562cd2a92f37a88f2ddd99a3abfbc5848d7baf38c48fb8d3243701fcb75","impliedFormat":1},{"version":"a726ad2d0a98bfffbe8bc1cd2d90b6d831638c0adc750ce73103a471eb9a891c","impliedFormat":1},{"version":"f44c0c8ce58d3dacac016607a1a90e5342d830ea84c48d2e571408087ae55894","impliedFormat":1},{"version":"75a315a098e630e734d9bc932d9841b64b30f7a349a20cf4717bf93044eff113","impliedFormat":1},{"version":"9131d95e32b3d4611d4046a613e022637348f6cebfe68230d4e81b691e4761a1","impliedFormat":1},{"version":"b03aa292cfdcd4edc3af00a7dbd71136dd067ec70a7536b655b82f4dd444e857","impliedFormat":1},{"version":"b6e2b0448ced813b8c207810d96551a26e7d7bb73255eea4b9701698f78846d6","impliedFormat":1},{"version":"8ae10cd85c1bd94d2f2d17c4cbd25c068a4b2471c70c2d96434239f97040747a","impliedFormat":1},{"version":"9ed5b799c50467b0c9f81ddf544b6bcda3e34d92076d6cab183c84511e45c39f","impliedFormat":1},{"version":"b4fa87cc1833839e51c49f20de71230e259c15b2c9c3e89e4814acc1d1ef10de","impliedFormat":1},{"version":"e90ac9e4ac0326faa1bc39f37af38ace0f9d4a655cd6d147713c653139cf4928","impliedFormat":1},{"version":"ea27110249d12e072956473a86fd1965df8e1be985f3b686b4e277afefdde584","impliedFormat":1},{"version":"8776a368617ce51129b74db7d55c3373dadcce5d0701e61d106e99998922a239","impliedFormat":1},{"version":"5666075052877fe2fdddd5b16de03168076cf0f03fbca5c1d4a3b8f43cba570c","impliedFormat":1},{"version":"9108ab5af05418f599ab48186193b1b07034c79a4a212a7f73535903ba4ca249","impliedFormat":1},{"version":"bb4e2cdcadf9c9e6ee2820af23cee6582d47c9c9c13b0dca1baaffe01fbbcb5f","impliedFormat":1},{"version":"6e30d0b5a1441d831d19fe02300ab3d83726abd5141cbcc0e2993fa0efd33db4","impliedFormat":1},{"version":"423f28126b2fc8d8d6fa558035309000a1297ed24473c595b7dec52e5c7ebae5","impliedFormat":1},{"version":"fb30734f82083d4790775dae393cd004924ebcbfde49849d9430bf0f0229dd16","impliedFormat":1},{"version":"2c92b04a7a4a1cd9501e1be338bf435738964130fb2ad5bd6c339ee41224ac4c","impliedFormat":1},{"version":"c5c5f0157b41833180419dacfbd2bcce78fb1a51c136bd4bcba5249864d8b9b5","impliedFormat":1},{"version":"02ae43d5bae42efcd5a00d3923e764895ce056bca005a9f4e623aa6b4797c8af","impliedFormat":1},{"version":"db6e01f17012a9d7b610ae764f94a1af850f5d98c9c826ad61747dca0fb800bd","impliedFormat":1},{"version":"8a44b424edee7bb17dc35a558cc15f92555f14a0441205613e0e50452ab3a602","impliedFormat":1},{"version":"24a00d0f98b799e6f628373249ece352b328089c3383b5606214357e9107e7d5","impliedFormat":1},{"version":"33637e3bc64edd2075d4071c55d60b32bdb0d243652977c66c964021b6fc8066","impliedFormat":1},{"version":"0f0ad9f14dedfdca37260931fac1edf0f6b951c629e84027255512f06a6ebc4c","impliedFormat":1},{"version":"16ad86c48bf950f5a480dc812b64225ca4a071827d3d18ffc5ec1ae176399e36","impliedFormat":1},{"version":"8cbf55a11ff59fd2b8e39a4aa08e25c5ddce46e3af0ed71fb51610607a13c505","impliedFormat":1},{"version":"d5bc4544938741f5daf8f3a339bfbf0d880da9e89e79f44a6383aaf056fe0159","impliedFormat":1},{"version":"97f9169882d393e6f303f570168ca86b5fe9aab556e9a43672dae7e6bb8e6495","impliedFormat":1},{"version":"7c9adb3fcd7851497818120b7e151465406e711d6a596a71b807f3a17853cb58","impliedFormat":1},{"version":"6752d402f9282dd6f6317c8c048aaaac27295739a166eed27e00391b358fed9a","impliedFormat":1},{"version":"9fd7466b77020847dbc9d2165829796bf7ea00895b2520ff3752ffdcff53564b","impliedFormat":1},{"version":"fbfc12d54a4488c2eb166ed63bab0fb34413e97069af273210cf39da5280c8d6","impliedFormat":1},{"version":"85a84240002b7cf577cec637167f0383409d086e3c4443852ca248fc6e16711e","impliedFormat":1},{"version":"84794e3abd045880e0fadcf062b648faf982aa80cfc56d28d80120e298178626","impliedFormat":1},{"version":"053d8b827286a16a669a36ffc8ccc8acdf8cc154c096610aa12348b8c493c7b8","impliedFormat":1},{"version":"3cce4ce031710970fe12d4f7834375f5fd455aa129af4c11eb787935923ff551","impliedFormat":1},{"version":"8f62cbd3afbd6a07bb8c934294b6bfbe437021b89e53a4da7de2648ecfc7af25","impliedFormat":1},{"version":"62c3621d34fb2567c17a2c4b89914ebefbfbd1b1b875b070391a7d4f722e55dc","impliedFormat":1},{"version":"c05ac811542e0b59cb9c2e8f60e983461f0b0e39cea93e320fad447ff8e474f3","impliedFormat":1},{"version":"8e7a5b8f867b99cc8763c0b024068fb58e09f7da2c4810c12833e1ca6eb11c4f","impliedFormat":1},{"version":"132351cbd8437a463757d3510258d0fa98fd3ebef336f56d6f359cf3e177a3ce","impliedFormat":1},{"version":"df877050b04c29b9f8409aa10278d586825f511f0841d1ec41b6554f8362092b","impliedFormat":1},{"version":"33d1888c3c27d3180b7fd20bac84e97ecad94b49830d5dd306f9e770213027d1","impliedFormat":1},{"version":"ee942c58036a0de88505ffd7c129f86125b783888288c2389330168677d6347f","impliedFormat":1},{"version":"a3f317d500c30ea56d41501632cdcc376dae6d24770563a5e59c039e1c2a08ec","impliedFormat":1},{"version":"eb21ddc3a8136a12e69176531197def71dc28ffaf357b74d4bf83407bd845991","impliedFormat":1},{"version":"0c1651a159995dfa784c57b4ea9944f16bdf8d924ed2d8b3db5c25d25749a343","impliedFormat":1},{"version":"aaa13958e03409d72e179b5d7f6ec5c6cc666b7be14773ae7b6b5ee4921e52db","impliedFormat":1},{"version":"0a86e049843ad02977a94bb9cdfec287a6c5a0a4b6b5391a6648b1a122072c5a","impliedFormat":1},{"version":"40f06693e2e3e58526b713c937895c02e113552dc8ba81ecd49cdd9596567ddb","impliedFormat":1},{"version":"4ed5e1992aedb174fb8f5aa8796aa6d4dcb8bd819b4af1b162a222b680a37fa0","impliedFormat":1},{"version":"d7f4bd46a8b97232ea6f8c28012b8d2b995e55e729d11405f159d3e00c51420a","impliedFormat":1},{"version":"d604d413aff031f4bfbdae1560e54ebf503d374464d76d50a2c6ded4df525712","impliedFormat":1},{"version":"e4f4f9cf1e3ac9fd91ada072e4d428ecbf0aa6dc57138fb797b8a0ca3a1d521c","impliedFormat":1},{"version":"12bfd290936824373edda13f48a4094adee93239b9a73432db603127881a300d","impliedFormat":1},{"version":"340ceb3ea308f8e98264988a663640e567c553b8d6dc7d5e43a8f3b64f780374","impliedFormat":1},{"version":"c5a769564e530fba3ec696d0a5cff1709b9095a0bdf5b0826d940d2fc9786413","impliedFormat":1},{"version":"7124ef724c3fc833a17896f2d994c368230a8d4b235baed39aa8037db31de54f","impliedFormat":1},{"version":"5de1c0759a76e7710f76899dcae601386424eab11fb2efaf190f2b0f09c3d3d3","impliedFormat":1},{"version":"9c5ee8f7e581f045b6be979f062a61bf076d362bf89c7f966b993a23424e8b0d","impliedFormat":1},{"version":"1a11df987948a86aa1ec4867907c59bdf431f13ed2270444bf47f788a5c7f92d","impliedFormat":1},{"version":"8018dd2e95e7ce6e613ddd81672a54532614dc745520a2f9e3860ff7fb1be0ca","impliedFormat":1},{"version":"b756781cd40d465da57d1fc6a442c34ae61fe8c802d752aace24f6a43fedacee","impliedFormat":1},{"version":"0fe76167c87289ea094e01616dcbab795c11b56bad23e1ef8aba9aa37e93432a","impliedFormat":1},{"version":"3a45029dba46b1f091e8dc4d784e7be970e209cd7d4ff02bd15270a98a9ba24b","impliedFormat":1},{"version":"032c1581f921f8874cf42966f27fd04afcabbb7878fa708a8251cac5415a2a06","impliedFormat":1},{"version":"69c68ed9652842ce4b8e495d63d2cd425862104c9fb7661f72e7aa8a9ef836f8","impliedFormat":1},{"version":"0e704ee6e9fd8b6a5a7167886f4d8915f4bc22ed79f19cb7b32bd28458f50643","impliedFormat":1},{"version":"06f62a14599a68bcde148d1efd60c2e52e8fa540cc7dcfa4477af132bb3de271","impliedFormat":1},{"version":"904a96f84b1bcee9a7f0f258d17f8692e6652a0390566515fe6741a5c6db8c1c","impliedFormat":1},{"version":"11f19ce32d21222419cecab448fa335017ebebf4f9e5457c4fa9df42fa2dcca7","impliedFormat":1},{"version":"2e8ee2cbb5e9159764e2189cf5547aebd0e6b0d9a64d479397bb051cd1991744","impliedFormat":1},{"version":"1b0471d75f5adb7f545c1a97c02a0f825851b95fe6e069ac6ecaa461b8bb321d","impliedFormat":1},{"version":"1d157c31a02b1e5cca9bc495b3d8d39f4b42b409da79f863fb953fbe3c7d4884","impliedFormat":1},{"version":"07baaceaec03d88a4b78cb0651b25f1ae0322ac1aa0b555ae3749a79a41cba86","impliedFormat":1},{"version":"619a132f634b4ebe5b4b4179ea5870f62f2cb09916a25957bff17b408de8b56d","impliedFormat":1},{"version":"f60fa446a397eb1aead9c4e568faf2df8068b4d0306ebc075fb4be16ed26b741","impliedFormat":1},{"version":"f3cb784be4d9e91f966a0b5052a098d9b53b0af0d341f690585b0cc05c6ca412","impliedFormat":1},{"version":"350f63439f8fe2e06c97368ddc7fb6d6c676d54f59520966f7dbbe6a4586014e","impliedFormat":1},{"version":"eba613b9b357ac8c50a925fa31dc7e65ff3b95a07efbaa684b624f143d8d34ba","impliedFormat":1},{"version":"45b74185005ed45bec3f07cac6e4d68eaf02ead9ff5a66721679fb28020e5e7c","impliedFormat":1},{"version":"0f6199602df09bdb12b95b5434f5d7474b1490d2cd8cc036364ab3ba6fd24263","impliedFormat":1},{"version":"c8ca7fd9ec7a3ec82185bfc8213e4a7f63ae748fd6fced931741d23ef4ea3c0f","impliedFormat":1},{"version":"5c6a8a3c2a8d059f0592d4eab59b062210a1c871117968b10797dee36d991ef7","impliedFormat":1},{"version":"ad77fd25ece8e09247040826a777dc181f974d28257c9cd5acb4921b51967bd8","impliedFormat":1},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"030e350db2525514580ed054f712ffb22d273e6bc7eddc1bb7eda1e0ba5d395e","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"a79e62f1e20467e11a904399b8b18b18c0c6eea6b50c1168bf215356d5bebfaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"0fd06258805d26c72f5997e07a23155d322d5f05387adb3744a791fe6a0b042d","affectsGlobalScope":true,"impliedFormat":1},{"version":"4967529644e391115ca5592184d4b63980569adf60ee685f968fd59ab1557188","impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"24bd580b5743dc56402c440dc7f9a4f5d592ad7a419f25414d37a7bfe11e342b","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"6bdc71028db658243775263e93a7db2fd2abfce3ca569c3cca5aee6ed5eb186d","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"81184fe8e67d78ac4e5374650f0892d547d665d77da2b2f544b5d84729c4a15d","affectsGlobalScope":true,"impliedFormat":1},{"version":"f52e8dacc97d71dcc96af29e49584353f9c54cb916d132e3e768d8b8129c928d","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"76103716ba397bbb61f9fa9c9090dca59f39f9047cb1352b2179c5d8e7f4e8d0","impliedFormat":1},{"version":"53eac70430b30089a3a1959d8306b0f9cfaf0de75224b68ef25243e0b5ad1ca3","affectsGlobalScope":true,"impliedFormat":1},{"version":"4314c7a11517e221f7296b46547dbc4df047115b182f544d072bdccffa57fc72","impliedFormat":1},{"version":"115971d64632ea4742b5b115fb64ed04bcaae2c3c342f13d9ba7e3f9ee39c4e7","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","impliedFormat":1},{"version":"86956cc2eb9dd371d6fab493d326a574afedebf76eef3fa7833b8e0d9b52d6f1","affectsGlobalScope":true,"impliedFormat":1},{"version":"24642567d3729bcc545bacb65ee7c0db423400c7f1ef757cab25d05650064f98","impliedFormat":1},{"version":"e6f5a38687bebe43a4cef426b69d34373ef68be9a6b1538ec0a371e69f309354","impliedFormat":1},{"version":"a6bf63d17324010ca1fbf0389cab83f93389bb0b9a01dc8a346d092f65b3605f","impliedFormat":1},{"version":"e009777bef4b023a999b2e5b9a136ff2cde37dc3f77c744a02840f05b18be8ff","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true,"impliedFormat":1},{"version":"875928df2f3e9a3aed4019539a15d04ff6140a06df6cd1b2feb836d22a81eaca","affectsGlobalScope":true,"impliedFormat":1},{"version":"e9ad08a376ac84948fcca0013d6f1d4ae4f9522e26b91f87945b97c99d7cc30b","impliedFormat":1},{"version":"eaf9ee1d90a35d56264f0bf39842282c58b9219e112ac7d0c1bce98c6c5da672","impliedFormat":1},{"version":"c15c4427ae7fd1dcd7f312a8a447ac93581b0d4664ddf151ecd07de4bf2bb9d7","impliedFormat":1},{"version":"5135bdd72cc05a8192bd2e92f0914d7fc43ee077d1293dc622a049b7035a0afb","impliedFormat":1},{"version":"4f80de3a11c0d2f1329a72e92c7416b2f7eab14f67e92cac63bb4e8d01c6edc8","impliedFormat":1},{"version":"6d386bc0d7f3afa1d401afc3e00ed6b09205a354a9795196caed937494a713e6","impliedFormat":1},{"version":"75c3400359d59fae5aed4c4a59fcd8a9760cf451e25dc2174cb5e08b9d4803e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"94c4187083503a74f4544503b5a30e2bd7af0032dc739b0c9a7ce87f8bddc7b9","impliedFormat":1},{"version":"b1b6ee0d012aeebe11d776a155d8979730440082797695fc8e2a5c326285678f","impliedFormat":1},{"version":"45875bcae57270aeb3ebc73a5e3fb4c7b9d91d6b045f107c1d8513c28ece71c0","impliedFormat":1},{"version":"3eb62baae4df08c9173e6903d3ca45942ccec8c3659b0565684a75f3292cffbb","affectsGlobalScope":true,"impliedFormat":1},{"version":"a85683ef86875f4ad4c6b7301bbcc63fb379a8d80d3d3fd735ee57f48ef8a47e","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"c6b4e0a02545304935ecbf7de7a8e056a31bb50939b5b321c9d50a405b5a0bba","impliedFormat":1},{"version":"fab29e6d649aa074a6b91e3bdf2bff484934a46067f6ee97a30fcd9762ae2213","impliedFormat":1},{"version":"8145e07aad6da5f23f2fcd8c8e4c5c13fb26ee986a79d03b0829b8fce152d8b2","impliedFormat":1},{"version":"e1120271ebbc9952fdc7b2dd3e145560e52e06956345e6fdf91d70ca4886464f","impliedFormat":1},{"version":"15c5e91b5f08be34a78e3d976179bf5b7a9cc28dc0ef1ffebffeb3c7812a2dca","impliedFormat":1},{"version":"a8f06c2382a30b7cb89ad2dfc48fc3b2b490f3dafcd839dadc008e4e5d57031d","impliedFormat":1},{"version":"553870e516f8c772b89f3820576152ebc70181d7994d96917bb943e37da7f8a7","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","impliedFormat":1},{"version":"745c4240220559bd340c8aeb6e3c5270a709d3565e934dc22a69c304703956bc","affectsGlobalScope":true,"impliedFormat":1},{"version":"2754d8221d77c7b382096651925eb476f1066b3348da4b73fe71ced7801edada","impliedFormat":1},{"version":"9212c6e9d80cb45441a3614e95afd7235a55a18584c2ed32d6c1aca5a0c53d93","affectsGlobalScope":true,"impliedFormat":1},{"version":"bef91efa0baea5d0e0f0f27b574a8bc100ce62a6d7e70220a0d58af6acab5e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"282fd2a1268a25345b830497b4b7bf5037a5e04f6a9c44c840cb605e19fea841","impliedFormat":1},{"version":"5360a27d3ebca11b224d7d3e38e3e2c63f8290cb1fcf6c3610401898f8e68bc3","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"7d6ff413e198d25639f9f01f16673e7df4e4bd2875a42455afd4ecc02ef156da","affectsGlobalScope":true,"impliedFormat":1},{"version":"6bd91a2a356600dee28eb0438082d0799a18a974a6537c4410a796bab749813c","affectsGlobalScope":true,"impliedFormat":1},{"version":"f689c4237b70ae6be5f0e4180e8833f34ace40529d1acc0676ab8fb8f70457d7","impliedFormat":1},{"version":"ae25afbbf1ed5df63a177d67b9048bf7481067f1b8dc9c39212e59db94fc9fc6","impliedFormat":1},{"version":"ac5ed35e649cdd8143131964336ab9076937fa91802ec760b3ea63b59175c10a","impliedFormat":1},{"version":"52a8e7e8a1454b6d1b5ad428efae3870ffc56f2c02d923467f2940c454aa9aec","affectsGlobalScope":true,"impliedFormat":1},{"version":"78dc0513cc4f1642906b74dda42146bcbd9df7401717d6e89ea6d72d12ecb539","impliedFormat":1},{"version":"ad90122e1cb599b3bc06a11710eb5489101be678f2920f2322b0ac3e195af78d","impliedFormat":1},{"version":"a43888a317b3bff47f90099c9689d7bb38daeb3899bb8928ca1b0f54961b9d32","impliedFormat":99},{"version":"552056ba04f5d283694f923e7a0c8938e2df12e161bfb36d63238d9c863920d9","signature":"b129ec96c1a5253e84be5557e3e3d49d0d4a7be6b043e7b6307958cd49803f88"},{"version":"136432374c0d61c639badb4b51421de42e9b03b4a16e52a1c24cf59f63d20e3b","signature":"44699b005b996cf5fddab9a3918b61773b25ca8375167f3969f8643b0d75c4ec"},"58a908337dfa9368de863870df5b5022df895b63466bc3cdec44ec2b11c7eeb5",{"version":"5c54a34e3d91727f7ae840bfe4d5d1c9a2f93c54cb7b6063d06ee4a6c3322656","impliedFormat":99},{"version":"db4da53b03596668cf6cc9484834e5de3833b9e7e64620cf08399fe069cd398d","impliedFormat":99},{"version":"ac7c28f153820c10850457994db1462d8c8e462f253b828ad942a979f726f2f9","impliedFormat":99},{"version":"f9b028d3c3891dd817e24d53102132b8f696269309605e6ed4f0db2c113bbd82","impliedFormat":99},{"version":"fb7c8d90e52e2884509166f96f3d591020c7b7977ab473b746954b0c8d100960","impliedFormat":99},{"version":"0bff51d6ed0c9093f6955b9d8258ce152ddb273359d50a897d8baabcb34de2c4","impliedFormat":99},{"version":"45cec9a1ba6549060552eead8959d47226048e0b71c7d0702ae58b7e16a28912","impliedFormat":99},{"version":"ef13c73d6157a32933c612d476c1524dd674cf5b9a88571d7d6a0d147544d529","impliedFormat":99},{"version":"13918e2b81c4288695f9b1f3dcc2468caf0f848d5c1f3dc00071c619d34ff63a","impliedFormat":99},{"version":"6907b09850f86610e7a528348c15484c1e1c09a18a9c1e98861399dfe4b18b46","impliedFormat":99},{"version":"12deea8eaa7a4fc1a2908e67da99831e5c5a6b46ad4f4f948fd4759314ea2b80","impliedFormat":99},{"version":"f0a8b376568a18f9a4976ecb0855187672b16b96c4df1c183a7e52dc1b5d98e8","impliedFormat":99},{"version":"8124828a11be7db984fcdab052fd4ff756b18edcfa8d71118b55388176210923","impliedFormat":99},{"version":"092944a8c05f9b96579161e88c6f211d5304a76bd2c47f8d4c30053269146bc8","impliedFormat":99},{"version":"a7ca8df4f2931bef2aa4118078584d84a0b16539598eaadf7dce9104dfaa381c","impliedFormat":1},{"version":"5c31dea483b64cbb341ea8a7073c457720d1574f87837e71cccb70ce91196211","impliedFormat":99},{"version":"11443a1dcfaaa404c68d53368b5b818712b95dd19f188cab1669c39bee8b84b3","impliedFormat":1},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"4e741b9c88e80c9e4cedf07b5a698e8e3a3bd73cf649f664d6dd3f868c05c2f3","affectsGlobalScope":true,"impliedFormat":1},{"version":"a660aa95476042d3fdcc1343cf6bb8fdf24772d31712b1db321c5a4dcc325434","impliedFormat":1},{"version":"36977c14a7f7bfc8c0426ae4343875689949fb699f3f84ecbe5b300ebf9a2c55","impliedFormat":1},{"version":"d5c87103a3fcead5092b17d518890c88c543938b1f0363e965a90ee89195e2b5","impliedFormat":99},{"version":"161c8e0690c46021506e32fda85956d785b70f309ae97011fd27374c065cac9b","affectsGlobalScope":true,"impliedFormat":1},{"version":"971f12a5fc236419ced0b7b9f23a53c1758233713f565635bbf4b85e2b23f55a","impliedFormat":99},{"version":"76de3321ce519928f1ff7d7a30391c0dc7374af20f81d9167919f038895b5cb0","impliedFormat":99},{"version":"094b9210da23b8711709b0535c59841186267bf6b83c1609aa9b515f830ab274","impliedFormat":99},{"version":"fbfbb4e99c6259ff5ccc4a5a62b3b63c0c8cae6e84737786c4a4c761c9a9de91","impliedFormat":99},{"version":"604887bbd5b0a93234ce882543a465f008636185c52e0f0353330e2bc38b03b6","impliedFormat":99},{"version":"32bf912173e8a9533631f9e9d8dc90a2ac7b52c2355611ddd886beab24dfd182","impliedFormat":99},{"version":"82695324abf7f3278b6d9f0582f4a544e8f7055c8cbe1065ab5cbacde1719c4c","impliedFormat":99},{"version":"43bba542e50e19241ec64bc13cfc0d9273e6198f36563cecad1f4e4b78ad47f3","impliedFormat":99},{"version":"b8cb3b69c0e8114f758bb8ef8efeef1cc80f8911bfd21126def73d2174ce479e","impliedFormat":99},{"version":"f582b0fcbf1eea9b318ab92fb89ea9ab2ebb84f9b60af89328a91155e1afce72","impliedFormat":1},{"version":"402e5c534fb2b85fa771170595db3ac0dd532112c8fa44fc23f233bc6967488b","impliedFormat":1},{"version":"8885cf05f3e2abf117590bbb951dcf6359e3e5ac462af1c901cfd24c6a6472e2","impliedFormat":1},{"version":"333caa2bfff7f06017f114de738050dd99a765c7eb16571c6d25a38c0d5365dc","impliedFormat":1},{"version":"e61df3640a38d535fd4bc9f4a53aef17c296b58dc4b6394fd576b808dd2fe5e6","impliedFormat":1},{"version":"459920181700cec8cbdf2a5faca127f3f17fd8dd9d9e577ed3f5f3af5d12a2e4","impliedFormat":1},{"version":"4719c209b9c00b579553859407a7e5dcfaa1c472994bd62aa5dd3cc0757eb077","impliedFormat":1},{"version":"7ec359bbc29b69d4063fe7dad0baaf35f1856f914db16b3f4f6e3e1bca4099fa","impliedFormat":1},{"version":"70790a7f0040993ca66ab8a07a059a0f8256e7bb57d968ae945f696cbff4ac7a","impliedFormat":1},{"version":"d1b9a81e99a0050ca7f2d98d7eedc6cda768f0eb9fa90b602e7107433e64c04c","impliedFormat":1},{"version":"a022503e75d6953d0e82c2c564508a5c7f8556fad5d7f971372d2d40479e4034","impliedFormat":1},{"version":"b215c4f0096f108020f666ffcc1f072c81e9f2f95464e894a5d5f34c5ea2a8b1","impliedFormat":1},{"version":"644491cde678bd462bb922c1d0cfab8f17d626b195ccb7f008612dc31f445d2d","impliedFormat":1},{"version":"dfe54dab1fa4961a6bcfba68c4ca955f8b5bbeb5f2ab3c915aa7adaa2eabc03a","impliedFormat":1},{"version":"1251d53755b03cde02466064260bb88fd83c30006a46395b7d9167340bc59b73","impliedFormat":1},{"version":"47865c5e695a382a916b1eedda1b6523145426e48a2eae4647e96b3b5e52024f","impliedFormat":1},{"version":"4cdf27e29feae6c7826cdd5c91751cc35559125e8304f9e7aed8faef97dcf572","impliedFormat":1},{"version":"331b8f71bfae1df25d564f5ea9ee65a0d847c4a94baa45925b6f38c55c7039bf","impliedFormat":1},{"version":"2a771d907aebf9391ac1f50e4ad37952943515eeea0dcc7e78aa08f508294668","impliedFormat":1},{"version":"0146fd6262c3fd3da51cb0254bb6b9a4e42931eb2f56329edd4c199cb9aaf804","impliedFormat":1},{"version":"183f480885db5caa5a8acb833c2be04f98056bdcc5fb29e969ff86e07efe57ab","impliedFormat":99},{"version":"4ec16d7a4e366c06a4573d299e15fe6207fc080f41beac5da06f4af33ea9761e","impliedFormat":1},{"version":"960bd764c62ac43edc24eaa2af958a4b4f1fa5d27df5237e176d0143b36a39c6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59f8dc89b9e724a6a667f52cdf4b90b6816ae6c9842ce176d38fcc973669009e","affectsGlobalScope":true,"impliedFormat":1},{"version":"e4af494f7a14b226bbe732e9c130d8811f8c7025911d7c58dd97121a85519715","impliedFormat":1},{"version":"d0a8d5d71276499768cc01e995674c2e2d0b8df08c78c42930a9aea83eea4daf","impliedFormat":99},{"version":"b34b5f6b506abb206b1ea73c6a332b9ee9c8c98be0f6d17cdbda9430ecc1efab","impliedFormat":99},{"version":"75d4c746c3d16af0df61e7b0afe9606475a23335d9f34fcc525d388c21e9058b","impliedFormat":99},{"version":"fa959bf357232201c32566f45d97e70538c75a093c940af594865d12f31d4912","impliedFormat":99},{"version":"d2c52abd76259fc39a30dfae70a2e5ce77fd23144457a7ff1b64b03de6e3aec7","impliedFormat":99},{"version":"e6233e1c976265e85aa8ad76c3881febe6264cb06ae3136f0257e1eab4a6cc5a","impliedFormat":99},{"version":"f73e2335e568014e279927321770da6fe26facd4ac96cdc22a56687f1ecbb58e","impliedFormat":99},{"version":"317878f156f976d487e21fd1d58ad0461ee0a09185d5b0a43eedf2a56eb7e4ea","impliedFormat":99},{"version":"324ac98294dab54fbd580c7d0e707d94506d7b2c3d5efe981a8495f02cf9ad96","impliedFormat":99},{"version":"9ec72eb493ff209b470467e24264116b6a8616484bca438091433a545dfba17e","impliedFormat":99},{"version":"d6ee22aba183d5fc0c7b8617f77ee82ecadc2c14359cc51271c135e23f6ed51f","impliedFormat":99},{"version":"49747416f08b3ba50500a215e7a55d75268b84e31e896a40313c8053e8dec908","impliedFormat":99},{"version":"81e634f1c5e1ca309e7e3dc69e2732eea932ef07b8b34517d452e5a3e9a36fa3","impliedFormat":99},{"version":"34f39f75f2b5aa9c84a9f8157abbf8322e6831430e402badeaf58dd284f9b9a6","impliedFormat":99},{"version":"427fe2004642504828c1476d0af4270e6ad4db6de78c0b5da3e4c5ca95052a99","impliedFormat":1},{"version":"c8905dbea83f3220676a669366cd8c1acef56af4d9d72a8b2241b1d044bb4302","affectsGlobalScope":true,"impliedFormat":99},{"version":"891694d3694abd66f0b8872997b85fd8e52bc51632ce0f8128c96962b443189f","impliedFormat":99},{"version":"69bf2422313487956e4dacf049f30cb91b34968912058d244cb19e4baa24da97","impliedFormat":99},{"version":"971a2c327ff166c770c5fb35699575ba2d13bba1f6d2757309c9be4b30036c8e","impliedFormat":99},{"version":"4f45e8effab83434a78d17123b01124259fbd1e335732135c213955d85222234","impliedFormat":99},{"version":"7bd51996fb7717941cbe094b05adc0d80b9503b350a77b789bbb0fc786f28053","impliedFormat":99},{"version":"b62006bbc815fe8190c7aee262aad6bff993e3f9ade70d7057dfceab6de79d2f","impliedFormat":99},{"version":"13497c0d73306e27f70634c424cd2f3b472187164f36140b504b3756b0ff476d","impliedFormat":99},{"version":"bf7a2d0f6d9e72d59044079d61000c38da50328ccdff28c47528a1a139c610ec","impliedFormat":99},{"version":"04471dc55f802c29791cc75edda8c4dd2a121f71c2401059da61eff83099e8ab","impliedFormat":99},{"version":"120a80aa556732f684db3ed61aeff1d6671e1655bd6cba0aa88b22b88ac9a6b1","affectsGlobalScope":true,"impliedFormat":99},{"version":"e58c0b5226aff07b63be6ac6e1bec9d55bc3d2bda3b11b9b68cccea8c24ae839","affectsGlobalScope":true,"impliedFormat":99},{"version":"a23a08b626aa4d4a1924957bd8c4d38a7ffc032e21407bbd2c97413e1d8c3dbd","impliedFormat":99},{"version":"5a88655bf852c8cc007d6bc874ab61d1d63fba97063020458177173c454e9b4a","impliedFormat":99},{"version":"7e4dfae2da12ec71ffd9f55f4641a6e05610ce0d6784838659490e259e4eb13c","impliedFormat":99},{"version":"c30a41267fc04c6518b17e55dcb2b810f267af4314b0b6d7df1c33a76ce1b330","impliedFormat":1},{"version":"72422d0bac4076912385d0c10911b82e4694fc106e2d70added091f88f0824ba","impliedFormat":1},{"version":"da251b82c25bee1d93f9fd80c5a61d945da4f708ca21285541d7aff83ecb8200","impliedFormat":1},{"version":"4c8ca51077f382498f47074cf304d654aba5d362416d4f809dfdd5d4f6b3aaca","impliedFormat":1},{"version":"c6bddf16578495abc8b5546850b047f30c4b5a2a2b7fecefc0e11a44a6e91399","impliedFormat":1},{"version":"13573a613314e40482386fe9c7934f9d86f3e06f19b840466c75391fb833b99b","impliedFormat":99},{"version":"ed09d42b14a604190e8c9fc972d18ea47d5c03c6c4a0003c9620dca915a1973d","affectsGlobalScope":true,"impliedFormat":99}],"root":[[351,353]],"options":{"allowUnreachableCode":false,"allowUnusedLabels":false,"checkJs":false,"declaration":true,"declarationMap":true,"emitDeclarationOnly":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"module":7,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noImplicitReturns":true,"noPropertyAccessFromIndexSignature":true,"noUncheckedIndexedAccess":true,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"./","skipLibCheck":false,"sourceMap":true,"strict":true,"stripInternal":true,"target":9},"referencedMap":[[383,1],[381,2],[382,3],[384,4],[379,5],[377,2],[380,6],[378,7],[426,8],[425,2],[371,2],[296,9],[297,9],[298,10],[256,11],[299,12],[300,13],[301,14],[251,2],[254,15],[252,2],[253,2],[302,16],[303,17],[304,18],[305,19],[306,20],[307,21],[308,21],[310,22],[309,23],[311,24],[312,25],[313,26],[295,27],[255,2],[314,28],[315,29],[316,30],[349,31],[317,32],[318,33],[319,34],[320,35],[321,36],[322,37],[323,38],[324,39],[325,40],[326,41],[327,41],[328,42],[329,2],[330,2],[331,43],[333,44],[332,45],[334,46],[335,47],[336,48],[337,49],[338,50],[339,51],[340,52],[341,53],[342,54],[343,55],[344,56],[345,57],[346,58],[347,59],[348,60],[350,61],[436,62],[414,63],[412,2],[413,2],[354,2],[365,64],[360,65],[363,66],[427,67],[419,2],[422,68],[421,69],[432,69],[420,70],[435,2],[362,71],[364,71],[356,72],[359,73],[415,72],[361,74],[355,2],[257,2],[376,2],[443,75],[445,76],[444,77],[442,78],[441,2],[403,79],[401,80],[402,81],[390,82],[391,80],[398,83],[389,84],[394,85],[404,2],[395,86],[400,87],[406,88],[405,89],[388,90],[396,91],[397,92],[392,93],[399,79],[393,94],[373,95],[372,96],[250,97],[223,2],[201,98],[199,98],[114,99],[65,100],[64,101],[200,102],[185,103],[107,104],[63,105],[62,106],[249,101],[214,107],[213,107],[125,108],[221,99],[222,99],[224,109],[225,99],[226,106],[227,99],[198,99],[228,99],[229,110],[230,99],[231,107],[232,111],[233,99],[234,99],[235,99],[236,99],[237,107],[238,99],[239,99],[240,99],[241,99],[242,112],[243,99],[244,99],[245,99],[246,99],[247,99],[67,106],[68,106],[69,106],[70,106],[71,106],[72,106],[73,106],[74,99],[76,113],[77,106],[75,106],[78,106],[79,106],[80,106],[81,106],[82,106],[83,106],[84,99],[85,106],[86,106],[87,106],[88,106],[89,106],[90,99],[91,106],[92,106],[93,106],[94,106],[95,106],[96,106],[97,99],[99,114],[98,106],[100,106],[101,106],[102,106],[103,106],[104,112],[105,99],[106,99],[120,115],[108,116],[109,106],[110,106],[111,99],[112,106],[113,106],[115,117],[116,106],[117,106],[118,106],[119,106],[121,106],[122,106],[123,106],[124,106],[126,118],[127,106],[128,106],[129,106],[130,99],[131,106],[132,119],[133,119],[134,119],[135,99],[136,106],[137,106],[138,106],[143,106],[139,106],[140,99],[141,106],[142,99],[144,106],[145,106],[146,106],[147,106],[148,106],[149,106],[150,99],[151,106],[152,106],[153,106],[154,106],[155,106],[156,106],[157,106],[158,106],[159,106],[160,106],[161,106],[162,106],[163,106],[164,106],[165,106],[166,106],[167,120],[168,106],[169,106],[170,106],[171,106],[172,106],[173,106],[174,99],[175,99],[176,99],[177,99],[178,99],[179,106],[180,106],[181,106],[182,106],[248,99],[184,121],[207,122],[202,122],[193,123],[191,124],[205,125],[194,126],[208,127],[203,128],[204,125],[206,129],[192,2],[197,2],[189,130],[190,131],[187,2],[188,132],[186,106],[195,133],[66,134],[215,2],[216,2],[217,2],[218,2],[219,2],[220,2],[209,2],[212,107],[211,2],[210,135],[183,136],[196,137],[387,2],[385,138],[428,2],[357,2],[358,139],[58,2],[59,2],[10,2],[11,2],[13,2],[12,2],[2,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[3,2],[22,2],[23,2],[4,2],[24,2],[28,2],[25,2],[26,2],[27,2],[29,2],[30,2],[31,2],[5,2],[32,2],[33,2],[34,2],[35,2],[6,2],[39,2],[36,2],[37,2],[38,2],[40,2],[7,2],[41,2],[46,2],[47,2],[42,2],[43,2],[44,2],[45,2],[8,2],[51,2],[48,2],[49,2],[50,2],[52,2],[9,2],[53,2],[54,2],[55,2],[57,2],[56,2],[1,2],[273,140],[283,141],[272,140],[293,142],[264,143],[263,144],[292,145],[286,146],[291,147],[266,148],[280,149],[265,150],[289,151],[261,152],[260,145],[290,153],[262,154],[267,155],[268,2],[271,155],[258,2],[294,156],[284,157],[275,158],[276,159],[278,160],[274,161],[277,162],[287,145],[269,163],[270,164],[279,165],[259,166],[282,157],[281,155],[285,2],[288,167],[430,168],[417,169],[418,168],[416,2],[411,170],[375,171],[369,172],[370,172],[368,2],[374,173],[409,2],[408,2],[407,2],[386,174],[410,175],[429,176],[423,177],[431,178],[367,179],[437,180],[439,181],[433,182],[440,183],[438,184],[424,185],[434,186],[446,187],[447,188],[366,2],[61,189],[60,2],[353,190],[351,191],[352,190]],"version":"5.9.2"}
package/package.json ADDED
@@ -0,0 +1,61 @@
1
+ {
2
+ "dependencies": {
3
+ "rxjs": "7.8.2",
4
+ "ws": "^8.18.0",
5
+ "@ledgerhq/device-management-kit-devtools-websocket-common": "^1.0.2"
6
+ },
7
+ "devDependencies": {
8
+ "@types/ws": "^8.5.14",
9
+ "tsx": "4.19.2",
10
+ "@ledgerhq/device-management-kit": "^1.2.0",
11
+ "@ledgerhq/prettier-config-dsdk": "^0.0.2",
12
+ "@ledgerhq/ldmk-tool": "^0.0.1",
13
+ "@ledgerhq/tsconfig-dsdk": "^1.0.1",
14
+ "@ledgerhq/vitest-config-dmk": "^0.0.0",
15
+ "@ledgerhq/eslint-config-dsdk": "^0.0.2"
16
+ },
17
+ "exports": {
18
+ ".": {
19
+ "import": "./lib/esm/index.js",
20
+ "require": "./lib/cjs/index.js",
21
+ "types": "./lib/types/index.d.ts"
22
+ },
23
+ "./*": {
24
+ "import": "./lib/esm/*",
25
+ "require": "./lib/cjs/*",
26
+ "types": "./lib/types/*"
27
+ }
28
+ },
29
+ "files": [
30
+ "./lib"
31
+ ],
32
+ "license": "Apache-2.0",
33
+ "main": "lib/index.js",
34
+ "name": "@ledgerhq/device-management-kit-devtools-websocket-server",
35
+ "peerDependencies": {
36
+ "@ledgerhq/device-management-kit": "^1.2.0"
37
+ },
38
+ "private": false,
39
+ "repository": {
40
+ "type": "git",
41
+ "url": "https://github.com/LedgerHQ/device-sdk-ts.git"
42
+ },
43
+ "types": "lib/index.d.ts",
44
+ "version": "1.0.1",
45
+ "scripts": {
46
+ "build": "pnpm ldmk-tool build --entryPoints index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
47
+ "cli": "tsx src/cli.ts",
48
+ "dev": "concurrently \"pnpm watch:builds\" \"pnpm watch:types\"",
49
+ "lint": "eslint",
50
+ "lint:fix": "pnpm lint --fix",
51
+ "prebuild": "rimraf lib",
52
+ "prettier": "prettier . --check",
53
+ "prettier:fix": "prettier . --write",
54
+ "test": "vitest run",
55
+ "test:coverage": "vitest run --coverage",
56
+ "test:watch": "vitest",
57
+ "typecheck": "tsc --noEmit",
58
+ "watch:builds": "pnpm ldmk-tool watch --entryPoints index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
59
+ "watch:types": "concurrently \"tsc --watch -p tsconfig.prod.json\" \"tsc-alias --watch -p tsconfig.prod.json\""
60
+ }
61
+ }