@powersync/web 0.0.0-dev-20260630141119 → 0.0.0-dev-20260708103617
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/bin/powersync.cjs +1 -1
- package/dist/index.umd.js +7821 -0
- package/dist/index.umd.js.map +1 -0
- package/dist/worker/SharedSyncImplementation.umd.js +16139 -0
- package/dist/worker/SharedSyncImplementation.umd.js.map +1 -0
- package/dist/worker/WASQLiteDB.umd.js +17434 -0
- package/dist/worker/WASQLiteDB.umd.js.map +1 -0
- package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_dist_mc-wa-s-9af0a7.umd.js +31 -0
- package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_dist_mc-wa-s-9af0a7.umd.js.map +1 -0
- package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_dist_mc-wa-s-bbf5a9.umd.js +31 -0
- package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_dist_mc-wa-s-bbf5a9.umd.js.map +1 -0
- package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_dist_wa-sqli-c26e0f.umd.js +31 -0
- package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_dist_wa-sqli-c26e0f.umd.js.map +1 -0
- package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_dist_wa-sqlite_mjs.umd.js +31 -0
- package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_dist_wa-sqlite_mjs.umd.js.map +1 -0
- package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-2fb422.umd.js +3562 -0
- package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-2fb422.umd.js.map +1 -0
- package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-833585.umd.js +1400 -0
- package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-833585.umd.js.map +1 -0
- package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-96fb23.umd.js +2478 -0
- package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-96fb23.umd.js.map +1 -0
- package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-c89911.umd.js +1681 -0
- package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-c89911.umd.js.map +1 -0
- package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-ec4eb1.umd.js +1820 -0
- package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-ec4eb1.umd.js.map +1 -0
- package/lib/package.json +91 -0
- package/lib/src/attachments/IndexDBFileSystemAdapter.js.map +1 -0
- package/lib/{db → src/db}/NavigatorTriggerClaimManager.d.ts +1 -1
- package/lib/src/db/NavigatorTriggerClaimManager.js.map +1 -0
- package/lib/src/db/PowerSyncDatabase.d.ts +78 -0
- package/lib/{db → src/db}/PowerSyncDatabase.js +61 -47
- package/lib/src/db/PowerSyncDatabase.js.map +1 -0
- package/lib/src/db/adapters/AbstractWebPowerSyncDatabaseOpenFactory.d.ts +23 -0
- package/lib/src/db/adapters/AbstractWebPowerSyncDatabaseOpenFactory.js +27 -0
- package/lib/src/db/adapters/AbstractWebPowerSyncDatabaseOpenFactory.js.map +1 -0
- package/lib/src/db/adapters/AsyncWebAdapter.d.ts +50 -0
- package/lib/{db → src/db}/adapters/AsyncWebAdapter.js +14 -14
- package/lib/src/db/adapters/AsyncWebAdapter.js.map +1 -0
- package/lib/src/db/adapters/SSRDBAdapter.d.ts +30 -0
- package/lib/src/db/adapters/SSRDBAdapter.js +69 -0
- package/lib/src/db/adapters/SSRDBAdapter.js.map +1 -0
- package/lib/{db → src/db}/adapters/WebDBAdapter.d.ts +1 -1
- package/lib/src/db/adapters/WebDBAdapter.js.map +1 -0
- package/lib/{db → src/db}/adapters/wa-sqlite/ConcurrentConnection.d.ts +4 -3
- package/lib/{db → src/db}/adapters/wa-sqlite/ConcurrentConnection.js +2 -2
- package/lib/src/db/adapters/wa-sqlite/ConcurrentConnection.js.map +1 -0
- package/lib/{db → src/db}/adapters/wa-sqlite/DatabaseClient.d.ts +4 -4
- package/lib/{db → src/db}/adapters/wa-sqlite/DatabaseClient.js +37 -11
- package/lib/src/db/adapters/wa-sqlite/DatabaseClient.js.map +1 -0
- package/lib/{db → src/db}/adapters/wa-sqlite/DatabaseServer.d.ts +5 -5
- package/lib/{db → src/db}/adapters/wa-sqlite/DatabaseServer.js +7 -11
- package/lib/src/db/adapters/wa-sqlite/DatabaseServer.js.map +1 -0
- package/lib/{db → src/db}/adapters/wa-sqlite/RawSqliteConnection.d.ts +12 -23
- package/lib/{db → src/db}/adapters/wa-sqlite/RawSqliteConnection.js +11 -17
- package/lib/src/db/adapters/wa-sqlite/RawSqliteConnection.js.map +1 -0
- package/lib/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.d.ts +45 -0
- package/lib/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.js +146 -0
- package/lib/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.js.map +1 -0
- package/lib/src/db/adapters/wa-sqlite/WASQLitePowerSyncDatabaseOpenFactory.d.ts +15 -0
- package/lib/src/db/adapters/wa-sqlite/WASQLitePowerSyncDatabaseOpenFactory.js +22 -0
- package/lib/src/db/adapters/wa-sqlite/WASQLitePowerSyncDatabaseOpenFactory.js.map +1 -0
- package/lib/src/db/adapters/wa-sqlite/vfs.d.ts +40 -0
- package/lib/src/db/adapters/wa-sqlite/vfs.js +95 -0
- package/lib/src/db/adapters/wa-sqlite/vfs.js.map +1 -0
- package/lib/src/db/adapters/web-sql-flags.d.ts +92 -0
- package/lib/src/db/adapters/web-sql-flags.js +37 -0
- package/lib/src/db/adapters/web-sql-flags.js.map +1 -0
- package/lib/{db → src/db}/sync/SSRWebStreamingSyncImplementation.d.ts +8 -4
- package/lib/{db → src/db}/sync/SSRWebStreamingSyncImplementation.js +11 -4
- package/lib/src/db/sync/SSRWebStreamingSyncImplementation.js.map +1 -0
- package/lib/{db → src/db}/sync/SharedWebStreamingSyncImplementation.d.ts +14 -13
- package/lib/{db → src/db}/sync/SharedWebStreamingSyncImplementation.js +66 -31
- package/lib/src/db/sync/SharedWebStreamingSyncImplementation.js.map +1 -0
- package/lib/src/db/sync/WebRemote.d.ts +7 -0
- package/lib/src/db/sync/WebRemote.js +33 -0
- package/lib/src/db/sync/WebRemote.js.map +1 -0
- package/lib/{db → src/db}/sync/WebStreamingSyncImplementation.d.ts +4 -2
- package/lib/{db → src/db}/sync/WebStreamingSyncImplementation.js +2 -3
- package/lib/src/db/sync/WebStreamingSyncImplementation.js.map +1 -0
- package/lib/src/db/sync/userAgent.js.map +1 -0
- package/lib/{index.d.ts → src/index.d.ts} +3 -1
- package/lib/{index.js → src/index.js} +3 -1
- package/lib/src/index.js.map +1 -0
- package/lib/src/shared/navigator.js.map +1 -0
- package/lib/src/shared/tab_close_signal.js.map +1 -0
- package/lib/src/worker/db/MultiDatabaseServer.d.ts +17 -0
- package/lib/{worker → src/worker}/db/MultiDatabaseServer.js +18 -26
- package/lib/src/worker/db/MultiDatabaseServer.js.map +1 -0
- package/lib/src/worker/db/WASQLiteDB.worker.d.ts +4 -0
- package/lib/src/worker/db/WASQLiteDB.worker.js +31 -0
- package/lib/src/worker/db/WASQLiteDB.worker.js.map +1 -0
- package/lib/src/worker/db/open-worker-database.d.ts +14 -0
- package/lib/src/worker/db/open-worker-database.js +53 -0
- package/lib/src/worker/db/open-worker-database.js.map +1 -0
- package/lib/src/worker/sync/AbstractSharedSyncClientProvider.d.ts +19 -0
- package/lib/src/worker/sync/AbstractSharedSyncClientProvider.js.map +1 -0
- package/lib/src/worker/sync/BroadcastLogger.d.ts +47 -0
- package/lib/src/worker/sync/BroadcastLogger.js +129 -0
- package/lib/src/worker/sync/BroadcastLogger.js.map +1 -0
- package/lib/{worker → src/worker}/sync/SharedSyncImplementation.d.ts +15 -11
- package/lib/{worker → src/worker}/sync/SharedSyncImplementation.js +43 -42
- package/lib/src/worker/sync/SharedSyncImplementation.js.map +1 -0
- package/lib/src/worker/sync/SharedSyncImplementation.worker.js +12 -0
- package/lib/src/worker/sync/SharedSyncImplementation.worker.js.map +1 -0
- package/lib/{worker → src/worker}/sync/WorkerClient.d.ts +3 -3
- package/lib/{worker → src/worker}/sync/WorkerClient.js +2 -2
- package/lib/src/worker/sync/WorkerClient.js.map +1 -0
- package/lib/tsconfig.tsbuildinfo +1 -0
- package/package.json +29 -22
- package/src/db/NavigatorTriggerClaimManager.ts +1 -1
- package/src/db/PowerSyncDatabase.ts +122 -80
- package/src/db/adapters/AbstractWebPowerSyncDatabaseOpenFactory.ts +47 -0
- package/src/db/adapters/AsyncWebAdapter.ts +26 -17
- package/src/db/adapters/SSRDBAdapter.ts +64 -14
- package/src/db/adapters/WebDBAdapter.ts +1 -1
- package/src/db/adapters/wa-sqlite/ConcurrentConnection.ts +5 -4
- package/src/db/adapters/wa-sqlite/DatabaseClient.ts +56 -20
- package/src/db/adapters/wa-sqlite/DatabaseServer.ts +12 -15
- package/src/db/adapters/wa-sqlite/RawSqliteConnection.ts +24 -41
- package/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.ts +126 -63
- package/src/db/adapters/wa-sqlite/WASQLitePowerSyncDatabaseOpenFactory.ts +24 -0
- package/src/db/adapters/wa-sqlite/vfs.ts +67 -54
- package/src/db/adapters/web-sql-flags.ts +141 -0
- package/src/db/sync/SSRWebStreamingSyncImplementation.ts +22 -4
- package/src/db/sync/SharedWebStreamingSyncImplementation.ts +77 -38
- package/src/db/sync/WebRemote.ts +26 -23
- package/src/db/sync/WebStreamingSyncImplementation.ts +5 -4
- package/src/index.ts +3 -1
- package/src/worker/db/MultiDatabaseServer.ts +25 -41
- package/src/worker/db/WASQLiteDB.worker.ts +35 -0
- package/src/worker/db/open-worker-database.ts +62 -0
- package/src/worker/sync/AbstractSharedSyncClientProvider.ts +10 -4
- package/src/worker/sync/BroadcastLogger.ts +103 -35
- package/src/worker/sync/SharedSyncImplementation.ts +63 -62
- package/src/worker/sync/SharedSyncImplementation.worker.ts +14 -0
- package/src/worker/sync/WorkerClient.ts +4 -4
- package/dist/index.react_native_web.js +0 -1879
- package/dist/index.react_native_web.js.map +0 -1
- package/dist/worker/AccessHandlePoolVFS-BPUHfZME.js +0 -2
- package/dist/worker/AccessHandlePoolVFS-BPUHfZME.js.map +0 -1
- package/dist/worker/FacadeVFS-d1ZDvud7.js +0 -2
- package/dist/worker/FacadeVFS-d1ZDvud7.js.map +0 -1
- package/dist/worker/IDBBatchAtomicVFS-DbkDb777.js +0 -2
- package/dist/worker/IDBBatchAtomicVFS-DbkDb777.js.map +0 -1
- package/dist/worker/OPFSCoopSyncVFS-DRKedN0p.js +0 -2
- package/dist/worker/OPFSCoopSyncVFS-DRKedN0p.js.map +0 -1
- package/dist/worker/OPFSWriteAheadVFS-BzodSqNq.js +0 -2
- package/dist/worker/OPFSWriteAheadVFS-BzodSqNq.js.map +0 -1
- package/dist/worker/mc-wa-sqlite-DiBqIVE5.js +0 -2
- package/dist/worker/mc-wa-sqlite-DiBqIVE5.js.map +0 -1
- package/dist/worker/mc-wa-sqlite-async-DUEhO9ef.js +0 -2
- package/dist/worker/mc-wa-sqlite-async-DUEhO9ef.js.map +0 -1
- package/dist/worker/wa-sqlite-BlSx7-_P.js +0 -2
- package/dist/worker/wa-sqlite-BlSx7-_P.js.map +0 -1
- package/dist/worker/wa-sqlite-async-BdR24Ucf.js +0 -2
- package/dist/worker/wa-sqlite-async-BdR24Ucf.js.map +0 -1
- package/dist/worker/websockets-Q8W_lerF.js +0 -9
- package/dist/worker/websockets-Q8W_lerF.js.map +0 -1
- package/dist/worker/worker.js +0 -7
- package/dist/worker/worker.js.map +0 -1
- package/lib/attachments/IndexDBFileSystemAdapter.js.map +0 -1
- package/lib/db/NavigatorTriggerClaimManager.js.map +0 -1
- package/lib/db/PowerSyncDatabase.d.ts +0 -67
- package/lib/db/PowerSyncDatabase.js.map +0 -1
- package/lib/db/adapters/AsyncWebAdapter.d.ts +0 -32
- package/lib/db/adapters/AsyncWebAdapter.js.map +0 -1
- package/lib/db/adapters/SSRDBAdapter.d.ts +0 -17
- package/lib/db/adapters/SSRDBAdapter.js +0 -37
- package/lib/db/adapters/SSRDBAdapter.js.map +0 -1
- package/lib/db/adapters/WebDBAdapter.js.map +0 -1
- package/lib/db/adapters/options.d.ts +0 -87
- package/lib/db/adapters/options.js +0 -6
- package/lib/db/adapters/options.js.map +0 -1
- package/lib/db/adapters/resolveAndValidateOptions.d.ts +0 -5
- package/lib/db/adapters/resolveAndValidateOptions.js +0 -33
- package/lib/db/adapters/resolveAndValidateOptions.js.map +0 -1
- package/lib/db/adapters/wa-sqlite/ConcurrentConnection.js.map +0 -1
- package/lib/db/adapters/wa-sqlite/DatabaseClient.js.map +0 -1
- package/lib/db/adapters/wa-sqlite/DatabaseServer.js.map +0 -1
- package/lib/db/adapters/wa-sqlite/RawSqliteConnection.js.map +0 -1
- package/lib/db/adapters/wa-sqlite/WASQLiteOpenFactory.d.ts +0 -18
- package/lib/db/adapters/wa-sqlite/WASQLiteOpenFactory.js +0 -131
- package/lib/db/adapters/wa-sqlite/WASQLiteOpenFactory.js.map +0 -1
- package/lib/db/adapters/wa-sqlite/vfs.d.ts +0 -50
- package/lib/db/adapters/wa-sqlite/vfs.js +0 -77
- package/lib/db/adapters/wa-sqlite/vfs.js.map +0 -1
- package/lib/db/sync/SSRWebStreamingSyncImplementation.js.map +0 -1
- package/lib/db/sync/SharedWebStreamingSyncImplementation.js.map +0 -1
- package/lib/db/sync/WebRemote.d.ts +0 -10
- package/lib/db/sync/WebRemote.js +0 -33
- package/lib/db/sync/WebRemote.js.map +0 -1
- package/lib/db/sync/WebStreamingSyncImplementation.js.map +0 -1
- package/lib/db/sync/userAgent.js.map +0 -1
- package/lib/index.js.map +0 -1
- package/lib/shared/navigator.js.map +0 -1
- package/lib/shared/tab_close_signal.js.map +0 -1
- package/lib/worker/SharedWorkerConnectionRequest.d.ts +0 -5
- package/lib/worker/SharedWorkerConnectionRequest.js +0 -2
- package/lib/worker/SharedWorkerConnectionRequest.js.map +0 -1
- package/lib/worker/client.d.ts +0 -15
- package/lib/worker/client.js +0 -77
- package/lib/worker/client.js.map +0 -1
- package/lib/worker/db/MultiDatabaseServer.d.ts +0 -22
- package/lib/worker/db/MultiDatabaseServer.js.map +0 -1
- package/lib/worker/sync/AbstractSharedSyncClientProvider.d.ts +0 -13
- package/lib/worker/sync/AbstractSharedSyncClientProvider.js.map +0 -1
- package/lib/worker/sync/BroadcastLogger.d.ts +0 -27
- package/lib/worker/sync/BroadcastLogger.js +0 -65
- package/lib/worker/sync/BroadcastLogger.js.map +0 -1
- package/lib/worker/sync/SharedSyncImplementation.js.map +0 -1
- package/lib/worker/sync/WorkerClient.js.map +0 -1
- package/lib/worker/worker.js +0 -34
- package/lib/worker/worker.js.map +0 -1
- package/src/db/adapters/options.ts +0 -100
- package/src/db/adapters/resolveAndValidateOptions.ts +0 -40
- package/src/worker/SharedWorkerConnectionRequest.ts +0 -6
- package/src/worker/client.ts +0 -100
- package/src/worker/worker.ts +0 -38
- /package/dist/{worker/assets/mc-wa-sqlite-async-D6idQS2r.wasm → 2075a31bb151adbb9767.wasm} +0 -0
- /package/dist/{worker/assets/wa-sqlite-XZW__iJk.wasm → 3322bc84de986b63c2cd.wasm} +0 -0
- /package/dist/{worker/assets/mc-wa-sqlite-CnHbhWvs.wasm → 8e97452e297be23b5e50.wasm} +0 -0
- /package/dist/{worker/assets/wa-sqlite-async-rHzzC98y.wasm → fbc178b70d530e8ce02b.wasm} +0 -0
- /package/lib/{attachments → src/attachments}/IndexDBFileSystemAdapter.d.ts +0 -0
- /package/lib/{attachments → src/attachments}/IndexDBFileSystemAdapter.js +0 -0
- /package/lib/{db → src/db}/NavigatorTriggerClaimManager.js +0 -0
- /package/lib/{db → src/db}/adapters/WebDBAdapter.js +0 -0
- /package/lib/{db → src/db}/sync/userAgent.d.ts +0 -0
- /package/lib/{db → src/db}/sync/userAgent.js +0 -0
- /package/lib/{shared → src/shared}/navigator.d.ts +0 -0
- /package/lib/{shared → src/shared}/navigator.js +0 -0
- /package/lib/{shared → src/shared}/tab_close_signal.d.ts +0 -0
- /package/lib/{shared → src/shared}/tab_close_signal.js +0 -0
- /package/lib/{worker → src/worker}/sync/AbstractSharedSyncClientProvider.js +0 -0
- /package/lib/{worker/worker.d.ts → src/worker/sync/SharedSyncImplementation.worker.d.ts} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"websockets-Q8W_lerF.js","sources":["../../../shared-internals/dist/websockets.mjs"],"sourcesContent":["var buffer = {};\n\nvar base64Js = {};\n\nvar hasRequiredBase64Js;\n\nfunction requireBase64Js () {\n\tif (hasRequiredBase64Js) return base64Js;\n\thasRequiredBase64Js = 1;\n\n\tbase64Js.byteLength = byteLength;\n\tbase64Js.toByteArray = toByteArray;\n\tbase64Js.fromByteArray = fromByteArray;\n\n\tvar lookup = [];\n\tvar revLookup = [];\n\tvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\n\n\tvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\tfor (var i = 0, len = code.length; i < len; ++i) {\n\t lookup[i] = code[i];\n\t revLookup[code.charCodeAt(i)] = i;\n\t}\n\n\t// Support decoding URL-safe base64 strings, as Node.js does.\n\t// See: https://en.wikipedia.org/wiki/Base64#URL_applications\n\trevLookup['-'.charCodeAt(0)] = 62;\n\trevLookup['_'.charCodeAt(0)] = 63;\n\n\tfunction getLens (b64) {\n\t var len = b64.length;\n\n\t if (len % 4 > 0) {\n\t throw new Error('Invalid string. Length must be a multiple of 4')\n\t }\n\n\t // Trim off extra bytes after placeholder bytes are found\n\t // See: https://github.com/beatgammit/base64-js/issues/42\n\t var validLen = b64.indexOf('=');\n\t if (validLen === -1) validLen = len;\n\n\t var placeHoldersLen = validLen === len\n\t ? 0\n\t : 4 - (validLen % 4);\n\n\t return [validLen, placeHoldersLen]\n\t}\n\n\t// base64 is 4/3 + up to two characters of the original data\n\tfunction byteLength (b64) {\n\t var lens = getLens(b64);\n\t var validLen = lens[0];\n\t var placeHoldersLen = lens[1];\n\t return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n\t}\n\n\tfunction _byteLength (b64, validLen, placeHoldersLen) {\n\t return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n\t}\n\n\tfunction toByteArray (b64) {\n\t var tmp;\n\t var lens = getLens(b64);\n\t var validLen = lens[0];\n\t var placeHoldersLen = lens[1];\n\n\t var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n\n\t var curByte = 0;\n\n\t // if there are placeholders, only get up to the last complete 4 chars\n\t var len = placeHoldersLen > 0\n\t ? validLen - 4\n\t : validLen;\n\n\t var i;\n\t for (i = 0; i < len; i += 4) {\n\t tmp =\n\t (revLookup[b64.charCodeAt(i)] << 18) |\n\t (revLookup[b64.charCodeAt(i + 1)] << 12) |\n\t (revLookup[b64.charCodeAt(i + 2)] << 6) |\n\t revLookup[b64.charCodeAt(i + 3)];\n\t arr[curByte++] = (tmp >> 16) & 0xFF;\n\t arr[curByte++] = (tmp >> 8) & 0xFF;\n\t arr[curByte++] = tmp & 0xFF;\n\t }\n\n\t if (placeHoldersLen === 2) {\n\t tmp =\n\t (revLookup[b64.charCodeAt(i)] << 2) |\n\t (revLookup[b64.charCodeAt(i + 1)] >> 4);\n\t arr[curByte++] = tmp & 0xFF;\n\t }\n\n\t if (placeHoldersLen === 1) {\n\t tmp =\n\t (revLookup[b64.charCodeAt(i)] << 10) |\n\t (revLookup[b64.charCodeAt(i + 1)] << 4) |\n\t (revLookup[b64.charCodeAt(i + 2)] >> 2);\n\t arr[curByte++] = (tmp >> 8) & 0xFF;\n\t arr[curByte++] = tmp & 0xFF;\n\t }\n\n\t return arr\n\t}\n\n\tfunction tripletToBase64 (num) {\n\t return lookup[num >> 18 & 0x3F] +\n\t lookup[num >> 12 & 0x3F] +\n\t lookup[num >> 6 & 0x3F] +\n\t lookup[num & 0x3F]\n\t}\n\n\tfunction encodeChunk (uint8, start, end) {\n\t var tmp;\n\t var output = [];\n\t for (var i = start; i < end; i += 3) {\n\t tmp =\n\t ((uint8[i] << 16) & 0xFF0000) +\n\t ((uint8[i + 1] << 8) & 0xFF00) +\n\t (uint8[i + 2] & 0xFF);\n\t output.push(tripletToBase64(tmp));\n\t }\n\t return output.join('')\n\t}\n\n\tfunction fromByteArray (uint8) {\n\t var tmp;\n\t var len = uint8.length;\n\t var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n\t var parts = [];\n\t var maxChunkLength = 16383; // must be multiple of 3\n\n\t // go through the array every three bytes, we'll deal with trailing stuff later\n\t for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n\t parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)));\n\t }\n\n\t // pad the end with zeros, but make sure to not forget the extra bytes\n\t if (extraBytes === 1) {\n\t tmp = uint8[len - 1];\n\t parts.push(\n\t lookup[tmp >> 2] +\n\t lookup[(tmp << 4) & 0x3F] +\n\t '=='\n\t );\n\t } else if (extraBytes === 2) {\n\t tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n\t parts.push(\n\t lookup[tmp >> 10] +\n\t lookup[(tmp >> 4) & 0x3F] +\n\t lookup[(tmp << 2) & 0x3F] +\n\t '='\n\t );\n\t }\n\n\t return parts.join('')\n\t}\n\treturn base64Js;\n}\n\nvar ieee754 = {};\n\n/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\n\nvar hasRequiredIeee754;\n\nfunction requireIeee754 () {\n\tif (hasRequiredIeee754) return ieee754;\n\thasRequiredIeee754 = 1;\n\tieee754.read = function (buffer, offset, isLE, mLen, nBytes) {\n\t var e, m;\n\t var eLen = (nBytes * 8) - mLen - 1;\n\t var eMax = (1 << eLen) - 1;\n\t var eBias = eMax >> 1;\n\t var nBits = -7;\n\t var i = isLE ? (nBytes - 1) : 0;\n\t var d = isLE ? -1 : 1;\n\t var s = buffer[offset + i];\n\n\t i += d;\n\n\t e = s & ((1 << (-nBits)) - 1);\n\t s >>= (-nBits);\n\t nBits += eLen;\n\t for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n\t m = e & ((1 << (-nBits)) - 1);\n\t e >>= (-nBits);\n\t nBits += mLen;\n\t for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n\t if (e === 0) {\n\t e = 1 - eBias;\n\t } else if (e === eMax) {\n\t return m ? NaN : ((s ? -1 : 1) * Infinity)\n\t } else {\n\t m = m + Math.pow(2, mLen);\n\t e = e - eBias;\n\t }\n\t return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n\t};\n\n\tieee754.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n\t var e, m, c;\n\t var eLen = (nBytes * 8) - mLen - 1;\n\t var eMax = (1 << eLen) - 1;\n\t var eBias = eMax >> 1;\n\t var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0);\n\t var i = isLE ? 0 : (nBytes - 1);\n\t var d = isLE ? 1 : -1;\n\t var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\n\n\t value = Math.abs(value);\n\n\t if (isNaN(value) || value === Infinity) {\n\t m = isNaN(value) ? 1 : 0;\n\t e = eMax;\n\t } else {\n\t e = Math.floor(Math.log(value) / Math.LN2);\n\t if (value * (c = Math.pow(2, -e)) < 1) {\n\t e--;\n\t c *= 2;\n\t }\n\t if (e + eBias >= 1) {\n\t value += rt / c;\n\t } else {\n\t value += rt * Math.pow(2, 1 - eBias);\n\t }\n\t if (value * c >= 2) {\n\t e++;\n\t c /= 2;\n\t }\n\n\t if (e + eBias >= eMax) {\n\t m = 0;\n\t e = eMax;\n\t } else if (e + eBias >= 1) {\n\t m = ((value * c) - 1) * Math.pow(2, mLen);\n\t e = e + eBias;\n\t } else {\n\t m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n\t e = 0;\n\t }\n\t }\n\n\t for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n\t e = (e << mLen) | m;\n\t eLen += mLen;\n\t for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n\t buffer[offset + i - d] |= s * 128;\n\t};\n\treturn ieee754;\n}\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n\nvar hasRequiredBuffer;\n\nfunction requireBuffer () {\n\tif (hasRequiredBuffer) return buffer;\n\thasRequiredBuffer = 1;\n\t(function (exports$1) {\n\n\t\tconst base64 = requireBase64Js();\n\t\tconst ieee754 = requireIeee754();\n\t\tconst customInspectSymbol =\n\t\t (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n\t\t ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n\t\t : null;\n\n\t\texports$1.Buffer = Buffer;\n\t\texports$1.SlowBuffer = SlowBuffer;\n\t\texports$1.INSPECT_MAX_BYTES = 50;\n\n\t\tconst K_MAX_LENGTH = 0x7fffffff;\n\t\texports$1.kMaxLength = K_MAX_LENGTH;\n\n\t\t/**\n\t\t * If `Buffer.TYPED_ARRAY_SUPPORT`:\n\t\t * === true Use Uint8Array implementation (fastest)\n\t\t * === false Print warning and recommend using `buffer` v4.x which has an Object\n\t\t * implementation (most compatible, even IE6)\n\t\t *\n\t\t * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n\t\t * Opera 11.6+, iOS 4.2+.\n\t\t *\n\t\t * We report that the browser does not support typed arrays if the are not subclassable\n\t\t * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n\t\t * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n\t\t * for __proto__ and has a buggy typed array implementation.\n\t\t */\n\t\tBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport();\n\n\t\tif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n\t\t typeof console.error === 'function') {\n\t\t console.error(\n\t\t 'This browser lacks typed array (Uint8Array) support which is required by ' +\n\t\t '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n\t\t );\n\t\t}\n\n\t\tfunction typedArraySupport () {\n\t\t // Can typed array instances can be augmented?\n\t\t try {\n\t\t const arr = new Uint8Array(1);\n\t\t const proto = { foo: function () { return 42 } };\n\t\t Object.setPrototypeOf(proto, Uint8Array.prototype);\n\t\t Object.setPrototypeOf(arr, proto);\n\t\t return arr.foo() === 42\n\t\t } catch (e) {\n\t\t return false\n\t\t }\n\t\t}\n\n\t\tObject.defineProperty(Buffer.prototype, 'parent', {\n\t\t enumerable: true,\n\t\t get: function () {\n\t\t if (!Buffer.isBuffer(this)) return undefined\n\t\t return this.buffer\n\t\t }\n\t\t});\n\n\t\tObject.defineProperty(Buffer.prototype, 'offset', {\n\t\t enumerable: true,\n\t\t get: function () {\n\t\t if (!Buffer.isBuffer(this)) return undefined\n\t\t return this.byteOffset\n\t\t }\n\t\t});\n\n\t\tfunction createBuffer (length) {\n\t\t if (length > K_MAX_LENGTH) {\n\t\t throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n\t\t }\n\t\t // Return an augmented `Uint8Array` instance\n\t\t const buf = new Uint8Array(length);\n\t\t Object.setPrototypeOf(buf, Buffer.prototype);\n\t\t return buf\n\t\t}\n\n\t\t/**\n\t\t * The Buffer constructor returns instances of `Uint8Array` that have their\n\t\t * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n\t\t * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n\t\t * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n\t\t * returns a single octet.\n\t\t *\n\t\t * The `Uint8Array` prototype remains unmodified.\n\t\t */\n\n\t\tfunction Buffer (arg, encodingOrOffset, length) {\n\t\t // Common case.\n\t\t if (typeof arg === 'number') {\n\t\t if (typeof encodingOrOffset === 'string') {\n\t\t throw new TypeError(\n\t\t 'The \"string\" argument must be of type string. Received type number'\n\t\t )\n\t\t }\n\t\t return allocUnsafe(arg)\n\t\t }\n\t\t return from(arg, encodingOrOffset, length)\n\t\t}\n\n\t\tBuffer.poolSize = 8192; // not used by this implementation\n\n\t\tfunction from (value, encodingOrOffset, length) {\n\t\t if (typeof value === 'string') {\n\t\t return fromString(value, encodingOrOffset)\n\t\t }\n\n\t\t if (ArrayBuffer.isView(value)) {\n\t\t return fromArrayView(value)\n\t\t }\n\n\t\t if (value == null) {\n\t\t throw new TypeError(\n\t\t 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n\t\t 'or Array-like Object. Received type ' + (typeof value)\n\t\t )\n\t\t }\n\n\t\t if (isInstance(value, ArrayBuffer) ||\n\t\t (value && isInstance(value.buffer, ArrayBuffer))) {\n\t\t return fromArrayBuffer(value, encodingOrOffset, length)\n\t\t }\n\n\t\t if (typeof SharedArrayBuffer !== 'undefined' &&\n\t\t (isInstance(value, SharedArrayBuffer) ||\n\t\t (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n\t\t return fromArrayBuffer(value, encodingOrOffset, length)\n\t\t }\n\n\t\t if (typeof value === 'number') {\n\t\t throw new TypeError(\n\t\t 'The \"value\" argument must not be of type number. Received type number'\n\t\t )\n\t\t }\n\n\t\t const valueOf = value.valueOf && value.valueOf();\n\t\t if (valueOf != null && valueOf !== value) {\n\t\t return Buffer.from(valueOf, encodingOrOffset, length)\n\t\t }\n\n\t\t const b = fromObject(value);\n\t\t if (b) return b\n\n\t\t if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n\t\t typeof value[Symbol.toPrimitive] === 'function') {\n\t\t return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n\t\t }\n\n\t\t throw new TypeError(\n\t\t 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n\t\t 'or Array-like Object. Received type ' + (typeof value)\n\t\t )\n\t\t}\n\n\t\t/**\n\t\t * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n\t\t * if value is a number.\n\t\t * Buffer.from(str[, encoding])\n\t\t * Buffer.from(array)\n\t\t * Buffer.from(buffer)\n\t\t * Buffer.from(arrayBuffer[, byteOffset[, length]])\n\t\t **/\n\t\tBuffer.from = function (value, encodingOrOffset, length) {\n\t\t return from(value, encodingOrOffset, length)\n\t\t};\n\n\t\t// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n\t\t// https://github.com/feross/buffer/pull/148\n\t\tObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype);\n\t\tObject.setPrototypeOf(Buffer, Uint8Array);\n\n\t\tfunction assertSize (size) {\n\t\t if (typeof size !== 'number') {\n\t\t throw new TypeError('\"size\" argument must be of type number')\n\t\t } else if (size < 0) {\n\t\t throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n\t\t }\n\t\t}\n\n\t\tfunction alloc (size, fill, encoding) {\n\t\t assertSize(size);\n\t\t if (size <= 0) {\n\t\t return createBuffer(size)\n\t\t }\n\t\t if (fill !== undefined) {\n\t\t // Only pay attention to encoding if it's a string. This\n\t\t // prevents accidentally sending in a number that would\n\t\t // be interpreted as a start offset.\n\t\t return typeof encoding === 'string'\n\t\t ? createBuffer(size).fill(fill, encoding)\n\t\t : createBuffer(size).fill(fill)\n\t\t }\n\t\t return createBuffer(size)\n\t\t}\n\n\t\t/**\n\t\t * Creates a new filled Buffer instance.\n\t\t * alloc(size[, fill[, encoding]])\n\t\t **/\n\t\tBuffer.alloc = function (size, fill, encoding) {\n\t\t return alloc(size, fill, encoding)\n\t\t};\n\n\t\tfunction allocUnsafe (size) {\n\t\t assertSize(size);\n\t\t return createBuffer(size < 0 ? 0 : checked(size) | 0)\n\t\t}\n\n\t\t/**\n\t\t * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n\t\t * */\n\t\tBuffer.allocUnsafe = function (size) {\n\t\t return allocUnsafe(size)\n\t\t};\n\t\t/**\n\t\t * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n\t\t */\n\t\tBuffer.allocUnsafeSlow = function (size) {\n\t\t return allocUnsafe(size)\n\t\t};\n\n\t\tfunction fromString (string, encoding) {\n\t\t if (typeof encoding !== 'string' || encoding === '') {\n\t\t encoding = 'utf8';\n\t\t }\n\n\t\t if (!Buffer.isEncoding(encoding)) {\n\t\t throw new TypeError('Unknown encoding: ' + encoding)\n\t\t }\n\n\t\t const length = byteLength(string, encoding) | 0;\n\t\t let buf = createBuffer(length);\n\n\t\t const actual = buf.write(string, encoding);\n\n\t\t if (actual !== length) {\n\t\t // Writing a hex string, for example, that contains invalid characters will\n\t\t // cause everything after the first invalid character to be ignored. (e.g.\n\t\t // 'abxxcd' will be treated as 'ab')\n\t\t buf = buf.slice(0, actual);\n\t\t }\n\n\t\t return buf\n\t\t}\n\n\t\tfunction fromArrayLike (array) {\n\t\t const length = array.length < 0 ? 0 : checked(array.length) | 0;\n\t\t const buf = createBuffer(length);\n\t\t for (let i = 0; i < length; i += 1) {\n\t\t buf[i] = array[i] & 255;\n\t\t }\n\t\t return buf\n\t\t}\n\n\t\tfunction fromArrayView (arrayView) {\n\t\t if (isInstance(arrayView, Uint8Array)) {\n\t\t const copy = new Uint8Array(arrayView);\n\t\t return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n\t\t }\n\t\t return fromArrayLike(arrayView)\n\t\t}\n\n\t\tfunction fromArrayBuffer (array, byteOffset, length) {\n\t\t if (byteOffset < 0 || array.byteLength < byteOffset) {\n\t\t throw new RangeError('\"offset\" is outside of buffer bounds')\n\t\t }\n\n\t\t if (array.byteLength < byteOffset + (length || 0)) {\n\t\t throw new RangeError('\"length\" is outside of buffer bounds')\n\t\t }\n\n\t\t let buf;\n\t\t if (byteOffset === undefined && length === undefined) {\n\t\t buf = new Uint8Array(array);\n\t\t } else if (length === undefined) {\n\t\t buf = new Uint8Array(array, byteOffset);\n\t\t } else {\n\t\t buf = new Uint8Array(array, byteOffset, length);\n\t\t }\n\n\t\t // Return an augmented `Uint8Array` instance\n\t\t Object.setPrototypeOf(buf, Buffer.prototype);\n\n\t\t return buf\n\t\t}\n\n\t\tfunction fromObject (obj) {\n\t\t if (Buffer.isBuffer(obj)) {\n\t\t const len = checked(obj.length) | 0;\n\t\t const buf = createBuffer(len);\n\n\t\t if (buf.length === 0) {\n\t\t return buf\n\t\t }\n\n\t\t obj.copy(buf, 0, 0, len);\n\t\t return buf\n\t\t }\n\n\t\t if (obj.length !== undefined) {\n\t\t if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n\t\t return createBuffer(0)\n\t\t }\n\t\t return fromArrayLike(obj)\n\t\t }\n\n\t\t if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n\t\t return fromArrayLike(obj.data)\n\t\t }\n\t\t}\n\n\t\tfunction checked (length) {\n\t\t // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n\t\t // length is NaN (which is otherwise coerced to zero.)\n\t\t if (length >= K_MAX_LENGTH) {\n\t\t throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n\t\t 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n\t\t }\n\t\t return length | 0\n\t\t}\n\n\t\tfunction SlowBuffer (length) {\n\t\t if (+length != length) { // eslint-disable-line eqeqeq\n\t\t length = 0;\n\t\t }\n\t\t return Buffer.alloc(+length)\n\t\t}\n\n\t\tBuffer.isBuffer = function isBuffer (b) {\n\t\t return b != null && b._isBuffer === true &&\n\t\t b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n\t\t};\n\n\t\tBuffer.compare = function compare (a, b) {\n\t\t if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength);\n\t\t if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength);\n\t\t if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n\t\t throw new TypeError(\n\t\t 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n\t\t )\n\t\t }\n\n\t\t if (a === b) return 0\n\n\t\t let x = a.length;\n\t\t let y = b.length;\n\n\t\t for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n\t\t if (a[i] !== b[i]) {\n\t\t x = a[i];\n\t\t y = b[i];\n\t\t break\n\t\t }\n\t\t }\n\n\t\t if (x < y) return -1\n\t\t if (y < x) return 1\n\t\t return 0\n\t\t};\n\n\t\tBuffer.isEncoding = function isEncoding (encoding) {\n\t\t switch (String(encoding).toLowerCase()) {\n\t\t case 'hex':\n\t\t case 'utf8':\n\t\t case 'utf-8':\n\t\t case 'ascii':\n\t\t case 'latin1':\n\t\t case 'binary':\n\t\t case 'base64':\n\t\t case 'ucs2':\n\t\t case 'ucs-2':\n\t\t case 'utf16le':\n\t\t case 'utf-16le':\n\t\t return true\n\t\t default:\n\t\t return false\n\t\t }\n\t\t};\n\n\t\tBuffer.concat = function concat (list, length) {\n\t\t if (!Array.isArray(list)) {\n\t\t throw new TypeError('\"list\" argument must be an Array of Buffers')\n\t\t }\n\n\t\t if (list.length === 0) {\n\t\t return Buffer.alloc(0)\n\t\t }\n\n\t\t let i;\n\t\t if (length === undefined) {\n\t\t length = 0;\n\t\t for (i = 0; i < list.length; ++i) {\n\t\t length += list[i].length;\n\t\t }\n\t\t }\n\n\t\t const buffer = Buffer.allocUnsafe(length);\n\t\t let pos = 0;\n\t\t for (i = 0; i < list.length; ++i) {\n\t\t let buf = list[i];\n\t\t if (isInstance(buf, Uint8Array)) {\n\t\t if (pos + buf.length > buffer.length) {\n\t\t if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf);\n\t\t buf.copy(buffer, pos);\n\t\t } else {\n\t\t Uint8Array.prototype.set.call(\n\t\t buffer,\n\t\t buf,\n\t\t pos\n\t\t );\n\t\t }\n\t\t } else if (!Buffer.isBuffer(buf)) {\n\t\t throw new TypeError('\"list\" argument must be an Array of Buffers')\n\t\t } else {\n\t\t buf.copy(buffer, pos);\n\t\t }\n\t\t pos += buf.length;\n\t\t }\n\t\t return buffer\n\t\t};\n\n\t\tfunction byteLength (string, encoding) {\n\t\t if (Buffer.isBuffer(string)) {\n\t\t return string.length\n\t\t }\n\t\t if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n\t\t return string.byteLength\n\t\t }\n\t\t if (typeof string !== 'string') {\n\t\t throw new TypeError(\n\t\t 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n\t\t 'Received type ' + typeof string\n\t\t )\n\t\t }\n\n\t\t const len = string.length;\n\t\t const mustMatch = (arguments.length > 2 && arguments[2] === true);\n\t\t if (!mustMatch && len === 0) return 0\n\n\t\t // Use a for loop to avoid recursion\n\t\t let loweredCase = false;\n\t\t for (;;) {\n\t\t switch (encoding) {\n\t\t case 'ascii':\n\t\t case 'latin1':\n\t\t case 'binary':\n\t\t return len\n\t\t case 'utf8':\n\t\t case 'utf-8':\n\t\t return utf8ToBytes(string).length\n\t\t case 'ucs2':\n\t\t case 'ucs-2':\n\t\t case 'utf16le':\n\t\t case 'utf-16le':\n\t\t return len * 2\n\t\t case 'hex':\n\t\t return len >>> 1\n\t\t case 'base64':\n\t\t return base64ToBytes(string).length\n\t\t default:\n\t\t if (loweredCase) {\n\t\t return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n\t\t }\n\t\t encoding = ('' + encoding).toLowerCase();\n\t\t loweredCase = true;\n\t\t }\n\t\t }\n\t\t}\n\t\tBuffer.byteLength = byteLength;\n\n\t\tfunction slowToString (encoding, start, end) {\n\t\t let loweredCase = false;\n\n\t\t // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n\t\t // property of a typed array.\n\n\t\t // This behaves neither like String nor Uint8Array in that we set start/end\n\t\t // to their upper/lower bounds if the value passed is out of range.\n\t\t // undefined is handled specially as per ECMA-262 6th Edition,\n\t\t // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n\t\t if (start === undefined || start < 0) {\n\t\t start = 0;\n\t\t }\n\t\t // Return early if start > this.length. Done here to prevent potential uint32\n\t\t // coercion fail below.\n\t\t if (start > this.length) {\n\t\t return ''\n\t\t }\n\n\t\t if (end === undefined || end > this.length) {\n\t\t end = this.length;\n\t\t }\n\n\t\t if (end <= 0) {\n\t\t return ''\n\t\t }\n\n\t\t // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n\t\t end >>>= 0;\n\t\t start >>>= 0;\n\n\t\t if (end <= start) {\n\t\t return ''\n\t\t }\n\n\t\t if (!encoding) encoding = 'utf8';\n\n\t\t while (true) {\n\t\t switch (encoding) {\n\t\t case 'hex':\n\t\t return hexSlice(this, start, end)\n\n\t\t case 'utf8':\n\t\t case 'utf-8':\n\t\t return utf8Slice(this, start, end)\n\n\t\t case 'ascii':\n\t\t return asciiSlice(this, start, end)\n\n\t\t case 'latin1':\n\t\t case 'binary':\n\t\t return latin1Slice(this, start, end)\n\n\t\t case 'base64':\n\t\t return base64Slice(this, start, end)\n\n\t\t case 'ucs2':\n\t\t case 'ucs-2':\n\t\t case 'utf16le':\n\t\t case 'utf-16le':\n\t\t return utf16leSlice(this, start, end)\n\n\t\t default:\n\t\t if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n\t\t encoding = (encoding + '').toLowerCase();\n\t\t loweredCase = true;\n\t\t }\n\t\t }\n\t\t}\n\n\t\t// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n\t\t// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n\t\t// reliably in a browserify context because there could be multiple different\n\t\t// copies of the 'buffer' package in use. This method works even for Buffer\n\t\t// instances that were created from another copy of the `buffer` package.\n\t\t// See: https://github.com/feross/buffer/issues/154\n\t\tBuffer.prototype._isBuffer = true;\n\n\t\tfunction swap (b, n, m) {\n\t\t const i = b[n];\n\t\t b[n] = b[m];\n\t\t b[m] = i;\n\t\t}\n\n\t\tBuffer.prototype.swap16 = function swap16 () {\n\t\t const len = this.length;\n\t\t if (len % 2 !== 0) {\n\t\t throw new RangeError('Buffer size must be a multiple of 16-bits')\n\t\t }\n\t\t for (let i = 0; i < len; i += 2) {\n\t\t swap(this, i, i + 1);\n\t\t }\n\t\t return this\n\t\t};\n\n\t\tBuffer.prototype.swap32 = function swap32 () {\n\t\t const len = this.length;\n\t\t if (len % 4 !== 0) {\n\t\t throw new RangeError('Buffer size must be a multiple of 32-bits')\n\t\t }\n\t\t for (let i = 0; i < len; i += 4) {\n\t\t swap(this, i, i + 3);\n\t\t swap(this, i + 1, i + 2);\n\t\t }\n\t\t return this\n\t\t};\n\n\t\tBuffer.prototype.swap64 = function swap64 () {\n\t\t const len = this.length;\n\t\t if (len % 8 !== 0) {\n\t\t throw new RangeError('Buffer size must be a multiple of 64-bits')\n\t\t }\n\t\t for (let i = 0; i < len; i += 8) {\n\t\t swap(this, i, i + 7);\n\t\t swap(this, i + 1, i + 6);\n\t\t swap(this, i + 2, i + 5);\n\t\t swap(this, i + 3, i + 4);\n\t\t }\n\t\t return this\n\t\t};\n\n\t\tBuffer.prototype.toString = function toString () {\n\t\t const length = this.length;\n\t\t if (length === 0) return ''\n\t\t if (arguments.length === 0) return utf8Slice(this, 0, length)\n\t\t return slowToString.apply(this, arguments)\n\t\t};\n\n\t\tBuffer.prototype.toLocaleString = Buffer.prototype.toString;\n\n\t\tBuffer.prototype.equals = function equals (b) {\n\t\t if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n\t\t if (this === b) return true\n\t\t return Buffer.compare(this, b) === 0\n\t\t};\n\n\t\tBuffer.prototype.inspect = function inspect () {\n\t\t let str = '';\n\t\t const max = exports$1.INSPECT_MAX_BYTES;\n\t\t str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim();\n\t\t if (this.length > max) str += ' ... ';\n\t\t return '<Buffer ' + str + '>'\n\t\t};\n\t\tif (customInspectSymbol) {\n\t\t Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect;\n\t\t}\n\n\t\tBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n\t\t if (isInstance(target, Uint8Array)) {\n\t\t target = Buffer.from(target, target.offset, target.byteLength);\n\t\t }\n\t\t if (!Buffer.isBuffer(target)) {\n\t\t throw new TypeError(\n\t\t 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n\t\t 'Received type ' + (typeof target)\n\t\t )\n\t\t }\n\n\t\t if (start === undefined) {\n\t\t start = 0;\n\t\t }\n\t\t if (end === undefined) {\n\t\t end = target ? target.length : 0;\n\t\t }\n\t\t if (thisStart === undefined) {\n\t\t thisStart = 0;\n\t\t }\n\t\t if (thisEnd === undefined) {\n\t\t thisEnd = this.length;\n\t\t }\n\n\t\t if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n\t\t throw new RangeError('out of range index')\n\t\t }\n\n\t\t if (thisStart >= thisEnd && start >= end) {\n\t\t return 0\n\t\t }\n\t\t if (thisStart >= thisEnd) {\n\t\t return -1\n\t\t }\n\t\t if (start >= end) {\n\t\t return 1\n\t\t }\n\n\t\t start >>>= 0;\n\t\t end >>>= 0;\n\t\t thisStart >>>= 0;\n\t\t thisEnd >>>= 0;\n\n\t\t if (this === target) return 0\n\n\t\t let x = thisEnd - thisStart;\n\t\t let y = end - start;\n\t\t const len = Math.min(x, y);\n\n\t\t const thisCopy = this.slice(thisStart, thisEnd);\n\t\t const targetCopy = target.slice(start, end);\n\n\t\t for (let i = 0; i < len; ++i) {\n\t\t if (thisCopy[i] !== targetCopy[i]) {\n\t\t x = thisCopy[i];\n\t\t y = targetCopy[i];\n\t\t break\n\t\t }\n\t\t }\n\n\t\t if (x < y) return -1\n\t\t if (y < x) return 1\n\t\t return 0\n\t\t};\n\n\t\t// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n\t\t// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n\t\t//\n\t\t// Arguments:\n\t\t// - buffer - a Buffer to search\n\t\t// - val - a string, Buffer, or number\n\t\t// - byteOffset - an index into `buffer`; will be clamped to an int32\n\t\t// - encoding - an optional encoding, relevant is val is a string\n\t\t// - dir - true for indexOf, false for lastIndexOf\n\t\tfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n\t\t // Empty buffer means no match\n\t\t if (buffer.length === 0) return -1\n\n\t\t // Normalize byteOffset\n\t\t if (typeof byteOffset === 'string') {\n\t\t encoding = byteOffset;\n\t\t byteOffset = 0;\n\t\t } else if (byteOffset > 0x7fffffff) {\n\t\t byteOffset = 0x7fffffff;\n\t\t } else if (byteOffset < -2147483648) {\n\t\t byteOffset = -2147483648;\n\t\t }\n\t\t byteOffset = +byteOffset; // Coerce to Number.\n\t\t if (numberIsNaN(byteOffset)) {\n\t\t // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n\t\t byteOffset = dir ? 0 : (buffer.length - 1);\n\t\t }\n\n\t\t // Normalize byteOffset: negative offsets start from the end of the buffer\n\t\t if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n\t\t if (byteOffset >= buffer.length) {\n\t\t if (dir) return -1\n\t\t else byteOffset = buffer.length - 1;\n\t\t } else if (byteOffset < 0) {\n\t\t if (dir) byteOffset = 0;\n\t\t else return -1\n\t\t }\n\n\t\t // Normalize val\n\t\t if (typeof val === 'string') {\n\t\t val = Buffer.from(val, encoding);\n\t\t }\n\n\t\t // Finally, search either indexOf (if dir is true) or lastIndexOf\n\t\t if (Buffer.isBuffer(val)) {\n\t\t // Special case: looking for empty string/buffer always fails\n\t\t if (val.length === 0) {\n\t\t return -1\n\t\t }\n\t\t return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n\t\t } else if (typeof val === 'number') {\n\t\t val = val & 0xFF; // Search for a byte value [0-255]\n\t\t if (typeof Uint8Array.prototype.indexOf === 'function') {\n\t\t if (dir) {\n\t\t return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n\t\t } else {\n\t\t return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n\t\t }\n\t\t }\n\t\t return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n\t\t }\n\n\t\t throw new TypeError('val must be string, number or Buffer')\n\t\t}\n\n\t\tfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n\t\t let indexSize = 1;\n\t\t let arrLength = arr.length;\n\t\t let valLength = val.length;\n\n\t\t if (encoding !== undefined) {\n\t\t encoding = String(encoding).toLowerCase();\n\t\t if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n\t\t encoding === 'utf16le' || encoding === 'utf-16le') {\n\t\t if (arr.length < 2 || val.length < 2) {\n\t\t return -1\n\t\t }\n\t\t indexSize = 2;\n\t\t arrLength /= 2;\n\t\t valLength /= 2;\n\t\t byteOffset /= 2;\n\t\t }\n\t\t }\n\n\t\t function read (buf, i) {\n\t\t if (indexSize === 1) {\n\t\t return buf[i]\n\t\t } else {\n\t\t return buf.readUInt16BE(i * indexSize)\n\t\t }\n\t\t }\n\n\t\t let i;\n\t\t if (dir) {\n\t\t let foundIndex = -1;\n\t\t for (i = byteOffset; i < arrLength; i++) {\n\t\t if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n\t\t if (foundIndex === -1) foundIndex = i;\n\t\t if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n\t\t } else {\n\t\t if (foundIndex !== -1) i -= i - foundIndex;\n\t\t foundIndex = -1;\n\t\t }\n\t\t }\n\t\t } else {\n\t\t if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n\t\t for (i = byteOffset; i >= 0; i--) {\n\t\t let found = true;\n\t\t for (let j = 0; j < valLength; j++) {\n\t\t if (read(arr, i + j) !== read(val, j)) {\n\t\t found = false;\n\t\t break\n\t\t }\n\t\t }\n\t\t if (found) return i\n\t\t }\n\t\t }\n\n\t\t return -1\n\t\t}\n\n\t\tBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n\t\t return this.indexOf(val, byteOffset, encoding) !== -1\n\t\t};\n\n\t\tBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n\t\t return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n\t\t};\n\n\t\tBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n\t\t return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n\t\t};\n\n\t\tfunction hexWrite (buf, string, offset, length) {\n\t\t offset = Number(offset) || 0;\n\t\t const remaining = buf.length - offset;\n\t\t if (!length) {\n\t\t length = remaining;\n\t\t } else {\n\t\t length = Number(length);\n\t\t if (length > remaining) {\n\t\t length = remaining;\n\t\t }\n\t\t }\n\n\t\t const strLen = string.length;\n\n\t\t if (length > strLen / 2) {\n\t\t length = strLen / 2;\n\t\t }\n\t\t let i;\n\t\t for (i = 0; i < length; ++i) {\n\t\t const parsed = parseInt(string.substr(i * 2, 2), 16);\n\t\t if (numberIsNaN(parsed)) return i\n\t\t buf[offset + i] = parsed;\n\t\t }\n\t\t return i\n\t\t}\n\n\t\tfunction utf8Write (buf, string, offset, length) {\n\t\t return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n\t\t}\n\n\t\tfunction asciiWrite (buf, string, offset, length) {\n\t\t return blitBuffer(asciiToBytes(string), buf, offset, length)\n\t\t}\n\n\t\tfunction base64Write (buf, string, offset, length) {\n\t\t return blitBuffer(base64ToBytes(string), buf, offset, length)\n\t\t}\n\n\t\tfunction ucs2Write (buf, string, offset, length) {\n\t\t return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n\t\t}\n\n\t\tBuffer.prototype.write = function write (string, offset, length, encoding) {\n\t\t // Buffer#write(string)\n\t\t if (offset === undefined) {\n\t\t encoding = 'utf8';\n\t\t length = this.length;\n\t\t offset = 0;\n\t\t // Buffer#write(string, encoding)\n\t\t } else if (length === undefined && typeof offset === 'string') {\n\t\t encoding = offset;\n\t\t length = this.length;\n\t\t offset = 0;\n\t\t // Buffer#write(string, offset[, length][, encoding])\n\t\t } else if (isFinite(offset)) {\n\t\t offset = offset >>> 0;\n\t\t if (isFinite(length)) {\n\t\t length = length >>> 0;\n\t\t if (encoding === undefined) encoding = 'utf8';\n\t\t } else {\n\t\t encoding = length;\n\t\t length = undefined;\n\t\t }\n\t\t } else {\n\t\t throw new Error(\n\t\t 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n\t\t )\n\t\t }\n\n\t\t const remaining = this.length - offset;\n\t\t if (length === undefined || length > remaining) length = remaining;\n\n\t\t if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n\t\t throw new RangeError('Attempt to write outside buffer bounds')\n\t\t }\n\n\t\t if (!encoding) encoding = 'utf8';\n\n\t\t let loweredCase = false;\n\t\t for (;;) {\n\t\t switch (encoding) {\n\t\t case 'hex':\n\t\t return hexWrite(this, string, offset, length)\n\n\t\t case 'utf8':\n\t\t case 'utf-8':\n\t\t return utf8Write(this, string, offset, length)\n\n\t\t case 'ascii':\n\t\t case 'latin1':\n\t\t case 'binary':\n\t\t return asciiWrite(this, string, offset, length)\n\n\t\t case 'base64':\n\t\t // Warning: maxLength not taken into account in base64Write\n\t\t return base64Write(this, string, offset, length)\n\n\t\t case 'ucs2':\n\t\t case 'ucs-2':\n\t\t case 'utf16le':\n\t\t case 'utf-16le':\n\t\t return ucs2Write(this, string, offset, length)\n\n\t\t default:\n\t\t if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n\t\t encoding = ('' + encoding).toLowerCase();\n\t\t loweredCase = true;\n\t\t }\n\t\t }\n\t\t};\n\n\t\tBuffer.prototype.toJSON = function toJSON () {\n\t\t return {\n\t\t type: 'Buffer',\n\t\t data: Array.prototype.slice.call(this._arr || this, 0)\n\t\t }\n\t\t};\n\n\t\tfunction base64Slice (buf, start, end) {\n\t\t if (start === 0 && end === buf.length) {\n\t\t return base64.fromByteArray(buf)\n\t\t } else {\n\t\t return base64.fromByteArray(buf.slice(start, end))\n\t\t }\n\t\t}\n\n\t\tfunction utf8Slice (buf, start, end) {\n\t\t end = Math.min(buf.length, end);\n\t\t const res = [];\n\n\t\t let i = start;\n\t\t while (i < end) {\n\t\t const firstByte = buf[i];\n\t\t let codePoint = null;\n\t\t let bytesPerSequence = (firstByte > 0xEF)\n\t\t ? 4\n\t\t : (firstByte > 0xDF)\n\t\t ? 3\n\t\t : (firstByte > 0xBF)\n\t\t ? 2\n\t\t : 1;\n\n\t\t if (i + bytesPerSequence <= end) {\n\t\t let secondByte, thirdByte, fourthByte, tempCodePoint;\n\n\t\t switch (bytesPerSequence) {\n\t\t case 1:\n\t\t if (firstByte < 0x80) {\n\t\t codePoint = firstByte;\n\t\t }\n\t\t break\n\t\t case 2:\n\t\t secondByte = buf[i + 1];\n\t\t if ((secondByte & 0xC0) === 0x80) {\n\t\t tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F);\n\t\t if (tempCodePoint > 0x7F) {\n\t\t codePoint = tempCodePoint;\n\t\t }\n\t\t }\n\t\t break\n\t\t case 3:\n\t\t secondByte = buf[i + 1];\n\t\t thirdByte = buf[i + 2];\n\t\t if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n\t\t tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F);\n\t\t if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n\t\t codePoint = tempCodePoint;\n\t\t }\n\t\t }\n\t\t break\n\t\t case 4:\n\t\t secondByte = buf[i + 1];\n\t\t thirdByte = buf[i + 2];\n\t\t fourthByte = buf[i + 3];\n\t\t if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n\t\t tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F);\n\t\t if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n\t\t codePoint = tempCodePoint;\n\t\t }\n\t\t }\n\t\t }\n\t\t }\n\n\t\t if (codePoint === null) {\n\t\t // we did not generate a valid codePoint so insert a\n\t\t // replacement char (U+FFFD) and advance only 1 byte\n\t\t codePoint = 0xFFFD;\n\t\t bytesPerSequence = 1;\n\t\t } else if (codePoint > 0xFFFF) {\n\t\t // encode to utf16 (surrogate pair dance)\n\t\t codePoint -= 0x10000;\n\t\t res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n\t\t codePoint = 0xDC00 | codePoint & 0x3FF;\n\t\t }\n\n\t\t res.push(codePoint);\n\t\t i += bytesPerSequence;\n\t\t }\n\n\t\t return decodeCodePointsArray(res)\n\t\t}\n\n\t\t// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n\t\t// the lowest limit is Chrome, with 0x10000 args.\n\t\t// We go 1 magnitude less, for safety\n\t\tconst MAX_ARGUMENTS_LENGTH = 0x1000;\n\n\t\tfunction decodeCodePointsArray (codePoints) {\n\t\t const len = codePoints.length;\n\t\t if (len <= MAX_ARGUMENTS_LENGTH) {\n\t\t return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n\t\t }\n\n\t\t // Decode in chunks to avoid \"call stack size exceeded\".\n\t\t let res = '';\n\t\t let i = 0;\n\t\t while (i < len) {\n\t\t res += String.fromCharCode.apply(\n\t\t String,\n\t\t codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n\t\t );\n\t\t }\n\t\t return res\n\t\t}\n\n\t\tfunction asciiSlice (buf, start, end) {\n\t\t let ret = '';\n\t\t end = Math.min(buf.length, end);\n\n\t\t for (let i = start; i < end; ++i) {\n\t\t ret += String.fromCharCode(buf[i] & 0x7F);\n\t\t }\n\t\t return ret\n\t\t}\n\n\t\tfunction latin1Slice (buf, start, end) {\n\t\t let ret = '';\n\t\t end = Math.min(buf.length, end);\n\n\t\t for (let i = start; i < end; ++i) {\n\t\t ret += String.fromCharCode(buf[i]);\n\t\t }\n\t\t return ret\n\t\t}\n\n\t\tfunction hexSlice (buf, start, end) {\n\t\t const len = buf.length;\n\n\t\t if (!start || start < 0) start = 0;\n\t\t if (!end || end < 0 || end > len) end = len;\n\n\t\t let out = '';\n\t\t for (let i = start; i < end; ++i) {\n\t\t out += hexSliceLookupTable[buf[i]];\n\t\t }\n\t\t return out\n\t\t}\n\n\t\tfunction utf16leSlice (buf, start, end) {\n\t\t const bytes = buf.slice(start, end);\n\t\t let res = '';\n\t\t // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n\t\t for (let i = 0; i < bytes.length - 1; i += 2) {\n\t\t res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256));\n\t\t }\n\t\t return res\n\t\t}\n\n\t\tBuffer.prototype.slice = function slice (start, end) {\n\t\t const len = this.length;\n\t\t start = ~~start;\n\t\t end = end === undefined ? len : ~~end;\n\n\t\t if (start < 0) {\n\t\t start += len;\n\t\t if (start < 0) start = 0;\n\t\t } else if (start > len) {\n\t\t start = len;\n\t\t }\n\n\t\t if (end < 0) {\n\t\t end += len;\n\t\t if (end < 0) end = 0;\n\t\t } else if (end > len) {\n\t\t end = len;\n\t\t }\n\n\t\t if (end < start) end = start;\n\n\t\t const newBuf = this.subarray(start, end);\n\t\t // Return an augmented `Uint8Array` instance\n\t\t Object.setPrototypeOf(newBuf, Buffer.prototype);\n\n\t\t return newBuf\n\t\t};\n\n\t\t/*\n\t\t * Need to make sure that buffer isn't trying to write out of bounds.\n\t\t */\n\t\tfunction checkOffset (offset, ext, length) {\n\t\t if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n\t\t if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n\t\t}\n\n\t\tBuffer.prototype.readUintLE =\n\t\tBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n\t\t offset = offset >>> 0;\n\t\t byteLength = byteLength >>> 0;\n\t\t if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n\t\t let val = this[offset];\n\t\t let mul = 1;\n\t\t let i = 0;\n\t\t while (++i < byteLength && (mul *= 0x100)) {\n\t\t val += this[offset + i] * mul;\n\t\t }\n\n\t\t return val\n\t\t};\n\n\t\tBuffer.prototype.readUintBE =\n\t\tBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n\t\t offset = offset >>> 0;\n\t\t byteLength = byteLength >>> 0;\n\t\t if (!noAssert) {\n\t\t checkOffset(offset, byteLength, this.length);\n\t\t }\n\n\t\t let val = this[offset + --byteLength];\n\t\t let mul = 1;\n\t\t while (byteLength > 0 && (mul *= 0x100)) {\n\t\t val += this[offset + --byteLength] * mul;\n\t\t }\n\n\t\t return val\n\t\t};\n\n\t\tBuffer.prototype.readUint8 =\n\t\tBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkOffset(offset, 1, this.length);\n\t\t return this[offset]\n\t\t};\n\n\t\tBuffer.prototype.readUint16LE =\n\t\tBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkOffset(offset, 2, this.length);\n\t\t return this[offset] | (this[offset + 1] << 8)\n\t\t};\n\n\t\tBuffer.prototype.readUint16BE =\n\t\tBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkOffset(offset, 2, this.length);\n\t\t return (this[offset] << 8) | this[offset + 1]\n\t\t};\n\n\t\tBuffer.prototype.readUint32LE =\n\t\tBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t\t return ((this[offset]) |\n\t\t (this[offset + 1] << 8) |\n\t\t (this[offset + 2] << 16)) +\n\t\t (this[offset + 3] * 0x1000000)\n\t\t};\n\n\t\tBuffer.prototype.readUint32BE =\n\t\tBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t\t return (this[offset] * 0x1000000) +\n\t\t ((this[offset + 1] << 16) |\n\t\t (this[offset + 2] << 8) |\n\t\t this[offset + 3])\n\t\t};\n\n\t\tBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n\t\t offset = offset >>> 0;\n\t\t validateNumber(offset, 'offset');\n\t\t const first = this[offset];\n\t\t const last = this[offset + 7];\n\t\t if (first === undefined || last === undefined) {\n\t\t boundsError(offset, this.length - 8);\n\t\t }\n\n\t\t const lo = first +\n\t\t this[++offset] * 2 ** 8 +\n\t\t this[++offset] * 2 ** 16 +\n\t\t this[++offset] * 2 ** 24;\n\n\t\t const hi = this[++offset] +\n\t\t this[++offset] * 2 ** 8 +\n\t\t this[++offset] * 2 ** 16 +\n\t\t last * 2 ** 24;\n\n\t\t return BigInt(lo) + (BigInt(hi) << BigInt(32))\n\t\t});\n\n\t\tBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n\t\t offset = offset >>> 0;\n\t\t validateNumber(offset, 'offset');\n\t\t const first = this[offset];\n\t\t const last = this[offset + 7];\n\t\t if (first === undefined || last === undefined) {\n\t\t boundsError(offset, this.length - 8);\n\t\t }\n\n\t\t const hi = first * 2 ** 24 +\n\t\t this[++offset] * 2 ** 16 +\n\t\t this[++offset] * 2 ** 8 +\n\t\t this[++offset];\n\n\t\t const lo = this[++offset] * 2 ** 24 +\n\t\t this[++offset] * 2 ** 16 +\n\t\t this[++offset] * 2 ** 8 +\n\t\t last;\n\n\t\t return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n\t\t});\n\n\t\tBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n\t\t offset = offset >>> 0;\n\t\t byteLength = byteLength >>> 0;\n\t\t if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n\t\t let val = this[offset];\n\t\t let mul = 1;\n\t\t let i = 0;\n\t\t while (++i < byteLength && (mul *= 0x100)) {\n\t\t val += this[offset + i] * mul;\n\t\t }\n\t\t mul *= 0x80;\n\n\t\t if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n\t\t return val\n\t\t};\n\n\t\tBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n\t\t offset = offset >>> 0;\n\t\t byteLength = byteLength >>> 0;\n\t\t if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n\t\t let i = byteLength;\n\t\t let mul = 1;\n\t\t let val = this[offset + --i];\n\t\t while (i > 0 && (mul *= 0x100)) {\n\t\t val += this[offset + --i] * mul;\n\t\t }\n\t\t mul *= 0x80;\n\n\t\t if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n\t\t return val\n\t\t};\n\n\t\tBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkOffset(offset, 1, this.length);\n\t\t if (!(this[offset] & 0x80)) return (this[offset])\n\t\t return ((0xff - this[offset] + 1) * -1)\n\t\t};\n\n\t\tBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkOffset(offset, 2, this.length);\n\t\t const val = this[offset] | (this[offset + 1] << 8);\n\t\t return (val & 0x8000) ? val | 0xFFFF0000 : val\n\t\t};\n\n\t\tBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkOffset(offset, 2, this.length);\n\t\t const val = this[offset + 1] | (this[offset] << 8);\n\t\t return (val & 0x8000) ? val | 0xFFFF0000 : val\n\t\t};\n\n\t\tBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t\t return (this[offset]) |\n\t\t (this[offset + 1] << 8) |\n\t\t (this[offset + 2] << 16) |\n\t\t (this[offset + 3] << 24)\n\t\t};\n\n\t\tBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t\t return (this[offset] << 24) |\n\t\t (this[offset + 1] << 16) |\n\t\t (this[offset + 2] << 8) |\n\t\t (this[offset + 3])\n\t\t};\n\n\t\tBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n\t\t offset = offset >>> 0;\n\t\t validateNumber(offset, 'offset');\n\t\t const first = this[offset];\n\t\t const last = this[offset + 7];\n\t\t if (first === undefined || last === undefined) {\n\t\t boundsError(offset, this.length - 8);\n\t\t }\n\n\t\t const val = this[offset + 4] +\n\t\t this[offset + 5] * 2 ** 8 +\n\t\t this[offset + 6] * 2 ** 16 +\n\t\t (last << 24); // Overflow\n\n\t\t return (BigInt(val) << BigInt(32)) +\n\t\t BigInt(first +\n\t\t this[++offset] * 2 ** 8 +\n\t\t this[++offset] * 2 ** 16 +\n\t\t this[++offset] * 2 ** 24)\n\t\t});\n\n\t\tBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n\t\t offset = offset >>> 0;\n\t\t validateNumber(offset, 'offset');\n\t\t const first = this[offset];\n\t\t const last = this[offset + 7];\n\t\t if (first === undefined || last === undefined) {\n\t\t boundsError(offset, this.length - 8);\n\t\t }\n\n\t\t const val = (first << 24) + // Overflow\n\t\t this[++offset] * 2 ** 16 +\n\t\t this[++offset] * 2 ** 8 +\n\t\t this[++offset];\n\n\t\t return (BigInt(val) << BigInt(32)) +\n\t\t BigInt(this[++offset] * 2 ** 24 +\n\t\t this[++offset] * 2 ** 16 +\n\t\t this[++offset] * 2 ** 8 +\n\t\t last)\n\t\t});\n\n\t\tBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkOffset(offset, 4, this.length);\n\t\t return ieee754.read(this, offset, true, 23, 4)\n\t\t};\n\n\t\tBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkOffset(offset, 4, this.length);\n\t\t return ieee754.read(this, offset, false, 23, 4)\n\t\t};\n\n\t\tBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkOffset(offset, 8, this.length);\n\t\t return ieee754.read(this, offset, true, 52, 8)\n\t\t};\n\n\t\tBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkOffset(offset, 8, this.length);\n\t\t return ieee754.read(this, offset, false, 52, 8)\n\t\t};\n\n\t\tfunction checkInt (buf, value, offset, ext, max, min) {\n\t\t if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n\t\t if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n\t\t if (offset + ext > buf.length) throw new RangeError('Index out of range')\n\t\t}\n\n\t\tBuffer.prototype.writeUintLE =\n\t\tBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n\t\t value = +value;\n\t\t offset = offset >>> 0;\n\t\t byteLength = byteLength >>> 0;\n\t\t if (!noAssert) {\n\t\t const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n\t\t checkInt(this, value, offset, byteLength, maxBytes, 0);\n\t\t }\n\n\t\t let mul = 1;\n\t\t let i = 0;\n\t\t this[offset] = value & 0xFF;\n\t\t while (++i < byteLength && (mul *= 0x100)) {\n\t\t this[offset + i] = (value / mul) & 0xFF;\n\t\t }\n\n\t\t return offset + byteLength\n\t\t};\n\n\t\tBuffer.prototype.writeUintBE =\n\t\tBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n\t\t value = +value;\n\t\t offset = offset >>> 0;\n\t\t byteLength = byteLength >>> 0;\n\t\t if (!noAssert) {\n\t\t const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n\t\t checkInt(this, value, offset, byteLength, maxBytes, 0);\n\t\t }\n\n\t\t let i = byteLength - 1;\n\t\t let mul = 1;\n\t\t this[offset + i] = value & 0xFF;\n\t\t while (--i >= 0 && (mul *= 0x100)) {\n\t\t this[offset + i] = (value / mul) & 0xFF;\n\t\t }\n\n\t\t return offset + byteLength\n\t\t};\n\n\t\tBuffer.prototype.writeUint8 =\n\t\tBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n\t\t value = +value;\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n\t\t this[offset] = (value & 0xff);\n\t\t return offset + 1\n\t\t};\n\n\t\tBuffer.prototype.writeUint16LE =\n\t\tBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n\t\t value = +value;\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\t\t this[offset] = (value & 0xff);\n\t\t this[offset + 1] = (value >>> 8);\n\t\t return offset + 2\n\t\t};\n\n\t\tBuffer.prototype.writeUint16BE =\n\t\tBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n\t\t value = +value;\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\t\t this[offset] = (value >>> 8);\n\t\t this[offset + 1] = (value & 0xff);\n\t\t return offset + 2\n\t\t};\n\n\t\tBuffer.prototype.writeUint32LE =\n\t\tBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n\t\t value = +value;\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\t\t this[offset + 3] = (value >>> 24);\n\t\t this[offset + 2] = (value >>> 16);\n\t\t this[offset + 1] = (value >>> 8);\n\t\t this[offset] = (value & 0xff);\n\t\t return offset + 4\n\t\t};\n\n\t\tBuffer.prototype.writeUint32BE =\n\t\tBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n\t\t value = +value;\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\t\t this[offset] = (value >>> 24);\n\t\t this[offset + 1] = (value >>> 16);\n\t\t this[offset + 2] = (value >>> 8);\n\t\t this[offset + 3] = (value & 0xff);\n\t\t return offset + 4\n\t\t};\n\n\t\tfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n\t\t checkIntBI(value, min, max, buf, offset, 7);\n\n\t\t let lo = Number(value & BigInt(0xffffffff));\n\t\t buf[offset++] = lo;\n\t\t lo = lo >> 8;\n\t\t buf[offset++] = lo;\n\t\t lo = lo >> 8;\n\t\t buf[offset++] = lo;\n\t\t lo = lo >> 8;\n\t\t buf[offset++] = lo;\n\t\t let hi = Number(value >> BigInt(32) & BigInt(0xffffffff));\n\t\t buf[offset++] = hi;\n\t\t hi = hi >> 8;\n\t\t buf[offset++] = hi;\n\t\t hi = hi >> 8;\n\t\t buf[offset++] = hi;\n\t\t hi = hi >> 8;\n\t\t buf[offset++] = hi;\n\t\t return offset\n\t\t}\n\n\t\tfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n\t\t checkIntBI(value, min, max, buf, offset, 7);\n\n\t\t let lo = Number(value & BigInt(0xffffffff));\n\t\t buf[offset + 7] = lo;\n\t\t lo = lo >> 8;\n\t\t buf[offset + 6] = lo;\n\t\t lo = lo >> 8;\n\t\t buf[offset + 5] = lo;\n\t\t lo = lo >> 8;\n\t\t buf[offset + 4] = lo;\n\t\t let hi = Number(value >> BigInt(32) & BigInt(0xffffffff));\n\t\t buf[offset + 3] = hi;\n\t\t hi = hi >> 8;\n\t\t buf[offset + 2] = hi;\n\t\t hi = hi >> 8;\n\t\t buf[offset + 1] = hi;\n\t\t hi = hi >> 8;\n\t\t buf[offset] = hi;\n\t\t return offset + 8\n\t\t}\n\n\t\tBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n\t\t return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n\t\t});\n\n\t\tBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n\t\t return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n\t\t});\n\n\t\tBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n\t\t value = +value;\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) {\n\t\t const limit = Math.pow(2, (8 * byteLength) - 1);\n\n\t\t checkInt(this, value, offset, byteLength, limit - 1, -limit);\n\t\t }\n\n\t\t let i = 0;\n\t\t let mul = 1;\n\t\t let sub = 0;\n\t\t this[offset] = value & 0xFF;\n\t\t while (++i < byteLength && (mul *= 0x100)) {\n\t\t if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n\t\t sub = 1;\n\t\t }\n\t\t this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n\t\t }\n\n\t\t return offset + byteLength\n\t\t};\n\n\t\tBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n\t\t value = +value;\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) {\n\t\t const limit = Math.pow(2, (8 * byteLength) - 1);\n\n\t\t checkInt(this, value, offset, byteLength, limit - 1, -limit);\n\t\t }\n\n\t\t let i = byteLength - 1;\n\t\t let mul = 1;\n\t\t let sub = 0;\n\t\t this[offset + i] = value & 0xFF;\n\t\t while (--i >= 0 && (mul *= 0x100)) {\n\t\t if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n\t\t sub = 1;\n\t\t }\n\t\t this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n\t\t }\n\n\t\t return offset + byteLength\n\t\t};\n\n\t\tBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n\t\t value = +value;\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -128);\n\t\t if (value < 0) value = 0xff + value + 1;\n\t\t this[offset] = (value & 0xff);\n\t\t return offset + 1\n\t\t};\n\n\t\tBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n\t\t value = +value;\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -32768);\n\t\t this[offset] = (value & 0xff);\n\t\t this[offset + 1] = (value >>> 8);\n\t\t return offset + 2\n\t\t};\n\n\t\tBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n\t\t value = +value;\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -32768);\n\t\t this[offset] = (value >>> 8);\n\t\t this[offset + 1] = (value & 0xff);\n\t\t return offset + 2\n\t\t};\n\n\t\tBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n\t\t value = +value;\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -2147483648);\n\t\t this[offset] = (value & 0xff);\n\t\t this[offset + 1] = (value >>> 8);\n\t\t this[offset + 2] = (value >>> 16);\n\t\t this[offset + 3] = (value >>> 24);\n\t\t return offset + 4\n\t\t};\n\n\t\tBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n\t\t value = +value;\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -2147483648);\n\t\t if (value < 0) value = 0xffffffff + value + 1;\n\t\t this[offset] = (value >>> 24);\n\t\t this[offset + 1] = (value >>> 16);\n\t\t this[offset + 2] = (value >>> 8);\n\t\t this[offset + 3] = (value & 0xff);\n\t\t return offset + 4\n\t\t};\n\n\t\tBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n\t\t return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n\t\t});\n\n\t\tBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n\t\t return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n\t\t});\n\n\t\tfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n\t\t if (offset + ext > buf.length) throw new RangeError('Index out of range')\n\t\t if (offset < 0) throw new RangeError('Index out of range')\n\t\t}\n\n\t\tfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n\t\t value = +value;\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) {\n\t\t checkIEEE754(buf, value, offset, 4);\n\t\t }\n\t\t ieee754.write(buf, value, offset, littleEndian, 23, 4);\n\t\t return offset + 4\n\t\t}\n\n\t\tBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n\t\t return writeFloat(this, value, offset, true, noAssert)\n\t\t};\n\n\t\tBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n\t\t return writeFloat(this, value, offset, false, noAssert)\n\t\t};\n\n\t\tfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n\t\t value = +value;\n\t\t offset = offset >>> 0;\n\t\t if (!noAssert) {\n\t\t checkIEEE754(buf, value, offset, 8);\n\t\t }\n\t\t ieee754.write(buf, value, offset, littleEndian, 52, 8);\n\t\t return offset + 8\n\t\t}\n\n\t\tBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n\t\t return writeDouble(this, value, offset, true, noAssert)\n\t\t};\n\n\t\tBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n\t\t return writeDouble(this, value, offset, false, noAssert)\n\t\t};\n\n\t\t// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n\t\tBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n\t\t if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n\t\t if (!start) start = 0;\n\t\t if (!end && end !== 0) end = this.length;\n\t\t if (targetStart >= target.length) targetStart = target.length;\n\t\t if (!targetStart) targetStart = 0;\n\t\t if (end > 0 && end < start) end = start;\n\n\t\t // Copy 0 bytes; we're done\n\t\t if (end === start) return 0\n\t\t if (target.length === 0 || this.length === 0) return 0\n\n\t\t // Fatal error conditions\n\t\t if (targetStart < 0) {\n\t\t throw new RangeError('targetStart out of bounds')\n\t\t }\n\t\t if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n\t\t if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n\t\t // Are we oob?\n\t\t if (end > this.length) end = this.length;\n\t\t if (target.length - targetStart < end - start) {\n\t\t end = target.length - targetStart + start;\n\t\t }\n\n\t\t const len = end - start;\n\n\t\t if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n\t\t // Use built-in when available, missing from IE11\n\t\t this.copyWithin(targetStart, start, end);\n\t\t } else {\n\t\t Uint8Array.prototype.set.call(\n\t\t target,\n\t\t this.subarray(start, end),\n\t\t targetStart\n\t\t );\n\t\t }\n\n\t\t return len\n\t\t};\n\n\t\t// Usage:\n\t\t// buffer.fill(number[, offset[, end]])\n\t\t// buffer.fill(buffer[, offset[, end]])\n\t\t// buffer.fill(string[, offset[, end]][, encoding])\n\t\tBuffer.prototype.fill = function fill (val, start, end, encoding) {\n\t\t // Handle string cases:\n\t\t if (typeof val === 'string') {\n\t\t if (typeof start === 'string') {\n\t\t encoding = start;\n\t\t start = 0;\n\t\t end = this.length;\n\t\t } else if (typeof end === 'string') {\n\t\t encoding = end;\n\t\t end = this.length;\n\t\t }\n\t\t if (encoding !== undefined && typeof encoding !== 'string') {\n\t\t throw new TypeError('encoding must be a string')\n\t\t }\n\t\t if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n\t\t throw new TypeError('Unknown encoding: ' + encoding)\n\t\t }\n\t\t if (val.length === 1) {\n\t\t const code = val.charCodeAt(0);\n\t\t if ((encoding === 'utf8' && code < 128) ||\n\t\t encoding === 'latin1') {\n\t\t // Fast path: If `val` fits into a single byte, use that numeric value.\n\t\t val = code;\n\t\t }\n\t\t }\n\t\t } else if (typeof val === 'number') {\n\t\t val = val & 255;\n\t\t } else if (typeof val === 'boolean') {\n\t\t val = Number(val);\n\t\t }\n\n\t\t // Invalid ranges are not set to a default, so can range check early.\n\t\t if (start < 0 || this.length < start || this.length < end) {\n\t\t throw new RangeError('Out of range index')\n\t\t }\n\n\t\t if (end <= start) {\n\t\t return this\n\t\t }\n\n\t\t start = start >>> 0;\n\t\t end = end === undefined ? this.length : end >>> 0;\n\n\t\t if (!val) val = 0;\n\n\t\t let i;\n\t\t if (typeof val === 'number') {\n\t\t for (i = start; i < end; ++i) {\n\t\t this[i] = val;\n\t\t }\n\t\t } else {\n\t\t const bytes = Buffer.isBuffer(val)\n\t\t ? val\n\t\t : Buffer.from(val, encoding);\n\t\t const len = bytes.length;\n\t\t if (len === 0) {\n\t\t throw new TypeError('The value \"' + val +\n\t\t '\" is invalid for argument \"value\"')\n\t\t }\n\t\t for (i = 0; i < end - start; ++i) {\n\t\t this[i + start] = bytes[i % len];\n\t\t }\n\t\t }\n\n\t\t return this\n\t\t};\n\n\t\t// CUSTOM ERRORS\n\t\t// =============\n\n\t\t// Simplified versions from Node, changed for Buffer-only usage\n\t\tconst errors = {};\n\t\tfunction E (sym, getMessage, Base) {\n\t\t errors[sym] = class NodeError extends Base {\n\t\t constructor () {\n\t\t super();\n\n\t\t Object.defineProperty(this, 'message', {\n\t\t value: getMessage.apply(this, arguments),\n\t\t writable: true,\n\t\t configurable: true\n\t\t });\n\n\t\t // Add the error code to the name to include it in the stack trace.\n\t\t this.name = `${this.name} [${sym}]`;\n\t\t // Access the stack to generate the error message including the error code\n\t\t // from the name.\n\t\t this.stack; // eslint-disable-line no-unused-expressions\n\t\t // Reset the name to the actual name.\n\t\t delete this.name;\n\t\t }\n\n\t\t get code () {\n\t\t return sym\n\t\t }\n\n\t\t set code (value) {\n\t\t Object.defineProperty(this, 'code', {\n\t\t configurable: true,\n\t\t enumerable: true,\n\t\t value,\n\t\t writable: true\n\t\t });\n\t\t }\n\n\t\t toString () {\n\t\t return `${this.name} [${sym}]: ${this.message}`\n\t\t }\n\t\t };\n\t\t}\n\n\t\tE('ERR_BUFFER_OUT_OF_BOUNDS',\n\t\t function (name) {\n\t\t if (name) {\n\t\t return `${name} is outside of buffer bounds`\n\t\t }\n\n\t\t return 'Attempt to access memory outside buffer bounds'\n\t\t }, RangeError);\n\t\tE('ERR_INVALID_ARG_TYPE',\n\t\t function (name, actual) {\n\t\t return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n\t\t }, TypeError);\n\t\tE('ERR_OUT_OF_RANGE',\n\t\t function (str, range, input) {\n\t\t let msg = `The value of \"${str}\" is out of range.`;\n\t\t let received = input;\n\t\t if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n\t\t received = addNumericalSeparator(String(input));\n\t\t } else if (typeof input === 'bigint') {\n\t\t received = String(input);\n\t\t if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n\t\t received = addNumericalSeparator(received);\n\t\t }\n\t\t received += 'n';\n\t\t }\n\t\t msg += ` It must be ${range}. Received ${received}`;\n\t\t return msg\n\t\t }, RangeError);\n\n\t\tfunction addNumericalSeparator (val) {\n\t\t let res = '';\n\t\t let i = val.length;\n\t\t const start = val[0] === '-' ? 1 : 0;\n\t\t for (; i >= start + 4; i -= 3) {\n\t\t res = `_${val.slice(i - 3, i)}${res}`;\n\t\t }\n\t\t return `${val.slice(0, i)}${res}`\n\t\t}\n\n\t\t// CHECK FUNCTIONS\n\t\t// ===============\n\n\t\tfunction checkBounds (buf, offset, byteLength) {\n\t\t validateNumber(offset, 'offset');\n\t\t if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n\t\t boundsError(offset, buf.length - (byteLength + 1));\n\t\t }\n\t\t}\n\n\t\tfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n\t\t if (value > max || value < min) {\n\t\t const n = typeof min === 'bigint' ? 'n' : '';\n\t\t let range;\n\t\t {\n\t\t if (min === 0 || min === BigInt(0)) {\n\t\t range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`;\n\t\t } else {\n\t\t range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n\t\t `${(byteLength + 1) * 8 - 1}${n}`;\n\t\t }\n\t\t }\n\t\t throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n\t\t }\n\t\t checkBounds(buf, offset, byteLength);\n\t\t}\n\n\t\tfunction validateNumber (value, name) {\n\t\t if (typeof value !== 'number') {\n\t\t throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n\t\t }\n\t\t}\n\n\t\tfunction boundsError (value, length, type) {\n\t\t if (Math.floor(value) !== value) {\n\t\t validateNumber(value, type);\n\t\t throw new errors.ERR_OUT_OF_RANGE('offset', 'an integer', value)\n\t\t }\n\n\t\t if (length < 0) {\n\t\t throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n\t\t }\n\n\t\t throw new errors.ERR_OUT_OF_RANGE('offset',\n\t\t `>= ${0} and <= ${length}`,\n\t\t value)\n\t\t}\n\n\t\t// HELPER FUNCTIONS\n\t\t// ================\n\n\t\tconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g;\n\n\t\tfunction base64clean (str) {\n\t\t // Node takes equal signs as end of the Base64 encoding\n\t\t str = str.split('=')[0];\n\t\t // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n\t\t str = str.trim().replace(INVALID_BASE64_RE, '');\n\t\t // Node converts strings with length < 2 to ''\n\t\t if (str.length < 2) return ''\n\t\t // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n\t\t while (str.length % 4 !== 0) {\n\t\t str = str + '=';\n\t\t }\n\t\t return str\n\t\t}\n\n\t\tfunction utf8ToBytes (string, units) {\n\t\t units = units || Infinity;\n\t\t let codePoint;\n\t\t const length = string.length;\n\t\t let leadSurrogate = null;\n\t\t const bytes = [];\n\n\t\t for (let i = 0; i < length; ++i) {\n\t\t codePoint = string.charCodeAt(i);\n\n\t\t // is surrogate component\n\t\t if (codePoint > 0xD7FF && codePoint < 0xE000) {\n\t\t // last char was a lead\n\t\t if (!leadSurrogate) {\n\t\t // no lead yet\n\t\t if (codePoint > 0xDBFF) {\n\t\t // unexpected trail\n\t\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t\t continue\n\t\t } else if (i + 1 === length) {\n\t\t // unpaired lead\n\t\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t\t continue\n\t\t }\n\n\t\t // valid lead\n\t\t leadSurrogate = codePoint;\n\n\t\t continue\n\t\t }\n\n\t\t // 2 leads in a row\n\t\t if (codePoint < 0xDC00) {\n\t\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t\t leadSurrogate = codePoint;\n\t\t continue\n\t\t }\n\n\t\t // valid surrogate pair\n\t\t codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n\t\t } else if (leadSurrogate) {\n\t\t // valid bmp char, but last char was a lead\n\t\t if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t\t }\n\n\t\t leadSurrogate = null;\n\n\t\t // encode utf8\n\t\t if (codePoint < 0x80) {\n\t\t if ((units -= 1) < 0) break\n\t\t bytes.push(codePoint);\n\t\t } else if (codePoint < 0x800) {\n\t\t if ((units -= 2) < 0) break\n\t\t bytes.push(\n\t\t codePoint >> 0x6 | 0xC0,\n\t\t codePoint & 0x3F | 0x80\n\t\t );\n\t\t } else if (codePoint < 0x10000) {\n\t\t if ((units -= 3) < 0) break\n\t\t bytes.push(\n\t\t codePoint >> 0xC | 0xE0,\n\t\t codePoint >> 0x6 & 0x3F | 0x80,\n\t\t codePoint & 0x3F | 0x80\n\t\t );\n\t\t } else if (codePoint < 0x110000) {\n\t\t if ((units -= 4) < 0) break\n\t\t bytes.push(\n\t\t codePoint >> 0x12 | 0xF0,\n\t\t codePoint >> 0xC & 0x3F | 0x80,\n\t\t codePoint >> 0x6 & 0x3F | 0x80,\n\t\t codePoint & 0x3F | 0x80\n\t\t );\n\t\t } else {\n\t\t throw new Error('Invalid code point')\n\t\t }\n\t\t }\n\n\t\t return bytes\n\t\t}\n\n\t\tfunction asciiToBytes (str) {\n\t\t const byteArray = [];\n\t\t for (let i = 0; i < str.length; ++i) {\n\t\t // Node's code seems to be doing this and not & 0x7F..\n\t\t byteArray.push(str.charCodeAt(i) & 0xFF);\n\t\t }\n\t\t return byteArray\n\t\t}\n\n\t\tfunction utf16leToBytes (str, units) {\n\t\t let c, hi, lo;\n\t\t const byteArray = [];\n\t\t for (let i = 0; i < str.length; ++i) {\n\t\t if ((units -= 2) < 0) break\n\n\t\t c = str.charCodeAt(i);\n\t\t hi = c >> 8;\n\t\t lo = c % 256;\n\t\t byteArray.push(lo);\n\t\t byteArray.push(hi);\n\t\t }\n\n\t\t return byteArray\n\t\t}\n\n\t\tfunction base64ToBytes (str) {\n\t\t return base64.toByteArray(base64clean(str))\n\t\t}\n\n\t\tfunction blitBuffer (src, dst, offset, length) {\n\t\t let i;\n\t\t for (i = 0; i < length; ++i) {\n\t\t if ((i + offset >= dst.length) || (i >= src.length)) break\n\t\t dst[i + offset] = src[i];\n\t\t }\n\t\t return i\n\t\t}\n\n\t\t// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n\t\t// the `instanceof` check but they should be treated as of that type.\n\t\t// See: https://github.com/feross/buffer/issues/166\n\t\tfunction isInstance (obj, type) {\n\t\t return obj instanceof type ||\n\t\t (obj != null && obj.constructor != null && obj.constructor.name != null &&\n\t\t obj.constructor.name === type.name)\n\t\t}\n\t\tfunction numberIsNaN (obj) {\n\t\t // For IE11 support\n\t\t return obj !== obj // eslint-disable-line no-self-compare\n\t\t}\n\n\t\t// Create lookup table for `toString('hex')`\n\t\t// See: https://github.com/feross/buffer/issues/219\n\t\tconst hexSliceLookupTable = (function () {\n\t\t const alphabet = '0123456789abcdef';\n\t\t const table = new Array(256);\n\t\t for (let i = 0; i < 16; ++i) {\n\t\t const i16 = i * 16;\n\t\t for (let j = 0; j < 16; ++j) {\n\t\t table[i16 + j] = alphabet[i] + alphabet[j];\n\t\t }\n\t\t }\n\t\t return table\n\t\t})();\n\n\t\t// Return not function with Error if BigInt not supported\n\t\tfunction defineBigIntMethod (fn) {\n\t\t return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n\t\t}\n\n\t\tfunction BufferBigIntNotDefined () {\n\t\t throw new Error('BigInt not supported')\n\t\t} \n\t} (buffer));\n\treturn buffer;\n}\n\nvar bufferExports = requireBuffer();\n\nconst doneResult = { done: true, value: undefined };\nfunction valueResult(value) {\n return { done: false, value };\n}\n\nvar dist$1 = {};\n\nvar Codecs = {};\n\nvar Frames = {};\n\nvar hasRequiredFrames;\n\nfunction requireFrames () {\n\tif (hasRequiredFrames) return Frames;\n\thasRequiredFrames = 1;\n\t(function (exports$1) {\n\t\t/*\n\t\t * Copyright 2021-2022 the original author or authors.\n\t\t *\n\t\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t\t * you may not use this file except in compliance with the License.\n\t\t * You may obtain a copy of the License at\n\t\t *\n\t\t * http://www.apache.org/licenses/LICENSE-2.0\n\t\t *\n\t\t * Unless required by applicable law or agreed to in writing, software\n\t\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t\t * See the License for the specific language governing permissions and\n\t\t * limitations under the License.\n\t\t */\n\t\tObject.defineProperty(exports$1, \"__esModule\", { value: true });\n\t\texports$1.Frame = exports$1.Lengths = exports$1.Flags = exports$1.FrameTypes = void 0;\n\t\tvar FrameTypes;\n\t\t(function (FrameTypes) {\n\t\t FrameTypes[FrameTypes[\"RESERVED\"] = 0] = \"RESERVED\";\n\t\t FrameTypes[FrameTypes[\"SETUP\"] = 1] = \"SETUP\";\n\t\t FrameTypes[FrameTypes[\"LEASE\"] = 2] = \"LEASE\";\n\t\t FrameTypes[FrameTypes[\"KEEPALIVE\"] = 3] = \"KEEPALIVE\";\n\t\t FrameTypes[FrameTypes[\"REQUEST_RESPONSE\"] = 4] = \"REQUEST_RESPONSE\";\n\t\t FrameTypes[FrameTypes[\"REQUEST_FNF\"] = 5] = \"REQUEST_FNF\";\n\t\t FrameTypes[FrameTypes[\"REQUEST_STREAM\"] = 6] = \"REQUEST_STREAM\";\n\t\t FrameTypes[FrameTypes[\"REQUEST_CHANNEL\"] = 7] = \"REQUEST_CHANNEL\";\n\t\t FrameTypes[FrameTypes[\"REQUEST_N\"] = 8] = \"REQUEST_N\";\n\t\t FrameTypes[FrameTypes[\"CANCEL\"] = 9] = \"CANCEL\";\n\t\t FrameTypes[FrameTypes[\"PAYLOAD\"] = 10] = \"PAYLOAD\";\n\t\t FrameTypes[FrameTypes[\"ERROR\"] = 11] = \"ERROR\";\n\t\t FrameTypes[FrameTypes[\"METADATA_PUSH\"] = 12] = \"METADATA_PUSH\";\n\t\t FrameTypes[FrameTypes[\"RESUME\"] = 13] = \"RESUME\";\n\t\t FrameTypes[FrameTypes[\"RESUME_OK\"] = 14] = \"RESUME_OK\";\n\t\t FrameTypes[FrameTypes[\"EXT\"] = 63] = \"EXT\";\n\t\t})(FrameTypes = exports$1.FrameTypes || (exports$1.FrameTypes = {}));\n\t\t(function (Flags) {\n\t\t Flags[Flags[\"NONE\"] = 0] = \"NONE\";\n\t\t Flags[Flags[\"COMPLETE\"] = 64] = \"COMPLETE\";\n\t\t Flags[Flags[\"FOLLOWS\"] = 128] = \"FOLLOWS\";\n\t\t Flags[Flags[\"IGNORE\"] = 512] = \"IGNORE\";\n\t\t Flags[Flags[\"LEASE\"] = 64] = \"LEASE\";\n\t\t Flags[Flags[\"METADATA\"] = 256] = \"METADATA\";\n\t\t Flags[Flags[\"NEXT\"] = 32] = \"NEXT\";\n\t\t Flags[Flags[\"RESPOND\"] = 128] = \"RESPOND\";\n\t\t Flags[Flags[\"RESUME_ENABLE\"] = 128] = \"RESUME_ENABLE\";\n\t\t})(exports$1.Flags || (exports$1.Flags = {}));\n\t\t(function (Flags) {\n\t\t function hasMetadata(flags) {\n\t\t return (flags & Flags.METADATA) === Flags.METADATA;\n\t\t }\n\t\t Flags.hasMetadata = hasMetadata;\n\t\t function hasComplete(flags) {\n\t\t return (flags & Flags.COMPLETE) === Flags.COMPLETE;\n\t\t }\n\t\t Flags.hasComplete = hasComplete;\n\t\t function hasNext(flags) {\n\t\t return (flags & Flags.NEXT) === Flags.NEXT;\n\t\t }\n\t\t Flags.hasNext = hasNext;\n\t\t function hasFollows(flags) {\n\t\t return (flags & Flags.FOLLOWS) === Flags.FOLLOWS;\n\t\t }\n\t\t Flags.hasFollows = hasFollows;\n\t\t function hasIgnore(flags) {\n\t\t return (flags & Flags.IGNORE) === Flags.IGNORE;\n\t\t }\n\t\t Flags.hasIgnore = hasIgnore;\n\t\t function hasRespond(flags) {\n\t\t return (flags & Flags.RESPOND) === Flags.RESPOND;\n\t\t }\n\t\t Flags.hasRespond = hasRespond;\n\t\t function hasLease(flags) {\n\t\t return (flags & Flags.LEASE) === Flags.LEASE;\n\t\t }\n\t\t Flags.hasLease = hasLease;\n\t\t function hasResume(flags) {\n\t\t return (flags & Flags.RESUME_ENABLE) === Flags.RESUME_ENABLE;\n\t\t }\n\t\t Flags.hasResume = hasResume;\n\t\t})(exports$1.Flags || (exports$1.Flags = {}));\n\t\t(function (Lengths) {\n\t\t Lengths[Lengths[\"FRAME\"] = 3] = \"FRAME\";\n\t\t Lengths[Lengths[\"HEADER\"] = 6] = \"HEADER\";\n\t\t Lengths[Lengths[\"METADATA\"] = 3] = \"METADATA\";\n\t\t Lengths[Lengths[\"REQUEST\"] = 3] = \"REQUEST\";\n\t\t})(exports$1.Lengths || (exports$1.Lengths = {}));\n\t\t(function (Frame) {\n\t\t function isConnection(frame) {\n\t\t return frame.streamId === 0;\n\t\t }\n\t\t Frame.isConnection = isConnection;\n\t\t function isRequest(frame) {\n\t\t return (FrameTypes.REQUEST_RESPONSE <= frame.type &&\n\t\t frame.type <= FrameTypes.REQUEST_CHANNEL);\n\t\t }\n\t\t Frame.isRequest = isRequest;\n\t\t})(exports$1.Frame || (exports$1.Frame = {}));\n\t\t\n\t} (Frames));\n\treturn Frames;\n}\n\nvar hasRequiredCodecs;\n\nfunction requireCodecs () {\n\tif (hasRequiredCodecs) return Codecs;\n\thasRequiredCodecs = 1;\n\t(function (exports$1) {\n\t\tvar __generator = (Codecs && Codecs.__generator) || function (thisArg, body) {\n\t\t var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n\t\t return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n\t\t function verb(n) { return function (v) { return step([n, v]); }; }\n\t\t function step(op) {\n\t\t if (f) throw new TypeError(\"Generator is already executing.\");\n\t\t while (_) try {\n\t\t if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n\t\t if (y = 0, t) op = [op[0] & 2, t.value];\n\t\t switch (op[0]) {\n\t\t case 0: case 1: t = op; break;\n\t\t case 4: _.label++; return { value: op[1], done: false };\n\t\t case 5: _.label++; y = op[1]; op = [0]; continue;\n\t\t case 7: op = _.ops.pop(); _.trys.pop(); continue;\n\t\t default:\n\t\t if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n\t\t if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n\t\t if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n\t\t if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n\t\t if (t[2]) _.ops.pop();\n\t\t _.trys.pop(); continue;\n\t\t }\n\t\t op = body.call(thisArg, _);\n\t\t } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n\t\t if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n\t\t }\n\t\t};\n\t\tObject.defineProperty(exports$1, \"__esModule\", { value: true });\n\t\texports$1.Deserializer = exports$1.sizeOfFrame = exports$1.serializeFrame = exports$1.deserializeFrame = exports$1.serializeFrameWithLength = exports$1.deserializeFrames = exports$1.deserializeFrameWithLength = exports$1.writeUInt64BE = exports$1.readUInt64BE = exports$1.writeUInt24BE = exports$1.readUInt24BE = exports$1.MAX_VERSION = exports$1.MAX_TTL = exports$1.MAX_STREAM_ID = exports$1.MAX_RESUME_LENGTH = exports$1.MAX_REQUEST_N = exports$1.MAX_REQUEST_COUNT = exports$1.MAX_MIME_LENGTH = exports$1.MAX_METADATA_LENGTH = exports$1.MAX_LIFETIME = exports$1.MAX_KEEPALIVE = exports$1.MAX_CODE = exports$1.FRAME_TYPE_OFFFSET = exports$1.FLAGS_MASK = void 0;\n\t\tvar Frames_1 = requireFrames();\n\t\texports$1.FLAGS_MASK = 0x3ff; // low 10 bits\n\t\texports$1.FRAME_TYPE_OFFFSET = 10; // frame type is offset 10 bytes within the uint16 containing type + flags\n\t\texports$1.MAX_CODE = 0x7fffffff; // uint31\n\t\texports$1.MAX_KEEPALIVE = 0x7fffffff; // uint31\n\t\texports$1.MAX_LIFETIME = 0x7fffffff; // uint31\n\t\texports$1.MAX_METADATA_LENGTH = 0xffffff; // uint24\n\t\texports$1.MAX_MIME_LENGTH = 0xff; // int8\n\t\texports$1.MAX_REQUEST_COUNT = 0x7fffffff; // uint31\n\t\texports$1.MAX_REQUEST_N = 0x7fffffff; // uint31\n\t\texports$1.MAX_RESUME_LENGTH = 0xffff; // uint16\n\t\texports$1.MAX_STREAM_ID = 0x7fffffff; // uint31\n\t\texports$1.MAX_TTL = 0x7fffffff; // uint31\n\t\texports$1.MAX_VERSION = 0xffff; // uint16\n\t\t/**\n\t\t * Mimimum value that would overflow bitwise operators (2^32).\n\t\t */\n\t\tvar BITWISE_OVERFLOW = 0x100000000;\n\t\t/**\n\t\t * Read a uint24 from a buffer starting at the given offset.\n\t\t */\n\t\tfunction readUInt24BE(buffer, offset) {\n\t\t var val1 = buffer.readUInt8(offset) << 16;\n\t\t var val2 = buffer.readUInt8(offset + 1) << 8;\n\t\t var val3 = buffer.readUInt8(offset + 2);\n\t\t return val1 | val2 | val3;\n\t\t}\n\t\texports$1.readUInt24BE = readUInt24BE;\n\t\t/**\n\t\t * Writes a uint24 to a buffer starting at the given offset, returning the\n\t\t * offset of the next byte.\n\t\t */\n\t\tfunction writeUInt24BE(buffer, value, offset) {\n\t\t offset = buffer.writeUInt8(value >>> 16, offset); // 3rd byte\n\t\t offset = buffer.writeUInt8((value >>> 8) & 0xff, offset); // 2nd byte\n\t\t return buffer.writeUInt8(value & 0xff, offset); // 1st byte\n\t\t}\n\t\texports$1.writeUInt24BE = writeUInt24BE;\n\t\t/**\n\t\t * Read a uint64 (technically supports up to 53 bits per JS number\n\t\t * representation).\n\t\t */\n\t\tfunction readUInt64BE(buffer, offset) {\n\t\t var high = buffer.readUInt32BE(offset);\n\t\t var low = buffer.readUInt32BE(offset + 4);\n\t\t return high * BITWISE_OVERFLOW + low;\n\t\t}\n\t\texports$1.readUInt64BE = readUInt64BE;\n\t\t/**\n\t\t * Write a uint64 (technically supports up to 53 bits per JS number\n\t\t * representation).\n\t\t */\n\t\tfunction writeUInt64BE(buffer, value, offset) {\n\t\t var high = (value / BITWISE_OVERFLOW) | 0;\n\t\t var low = value % BITWISE_OVERFLOW;\n\t\t offset = buffer.writeUInt32BE(high, offset); // first half of uint64\n\t\t return buffer.writeUInt32BE(low, offset); // second half of uint64\n\t\t}\n\t\texports$1.writeUInt64BE = writeUInt64BE;\n\t\t/**\n\t\t * Frame header is:\n\t\t * - stream id (uint32 = 4)\n\t\t * - type + flags (uint 16 = 2)\n\t\t */\n\t\tvar FRAME_HEADER_SIZE = 6;\n\t\t/**\n\t\t * Size of frame length and metadata length fields.\n\t\t */\n\t\tvar UINT24_SIZE = 3;\n\t\t/**\n\t\t * Reads a frame from a buffer that is prefixed with the frame length.\n\t\t */\n\t\tfunction deserializeFrameWithLength(buffer) {\n\t\t var frameLength = readUInt24BE(buffer, 0);\n\t\t return deserializeFrame(buffer.slice(UINT24_SIZE, UINT24_SIZE + frameLength));\n\t\t}\n\t\texports$1.deserializeFrameWithLength = deserializeFrameWithLength;\n\t\t/**\n\t\t * Given a buffer that may contain zero or more length-prefixed frames followed\n\t\t * by zero or more bytes of a (partial) subsequent frame, returns an array of\n\t\t * the frames and an int representing the buffer offset.\n\t\t */\n\t\tfunction deserializeFrames(buffer) {\n\t\t var offset, frameLength, frameStart, frameEnd, frameBuffer, frame;\n\t\t return __generator(this, function (_a) {\n\t\t switch (_a.label) {\n\t\t case 0:\n\t\t offset = 0;\n\t\t _a.label = 1;\n\t\t case 1:\n\t\t if (!(offset + UINT24_SIZE < buffer.length)) return [3 /*break*/, 3];\n\t\t frameLength = readUInt24BE(buffer, offset);\n\t\t frameStart = offset + UINT24_SIZE;\n\t\t frameEnd = frameStart + frameLength;\n\t\t if (frameEnd > buffer.length) {\n\t\t // not all bytes of next frame received\n\t\t return [3 /*break*/, 3];\n\t\t }\n\t\t frameBuffer = buffer.slice(frameStart, frameEnd);\n\t\t frame = deserializeFrame(frameBuffer);\n\t\t offset = frameEnd;\n\t\t return [4 /*yield*/, [frame, offset]];\n\t\t case 2:\n\t\t _a.sent();\n\t\t return [3 /*break*/, 1];\n\t\t case 3: return [2 /*return*/];\n\t\t }\n\t\t });\n\t\t}\n\t\texports$1.deserializeFrames = deserializeFrames;\n\t\t/**\n\t\t * Writes a frame to a buffer with a length prefix.\n\t\t */\n\t\tfunction serializeFrameWithLength(frame) {\n\t\t var buffer = serializeFrame(frame);\n\t\t var lengthPrefixed = bufferExports.Buffer.allocUnsafe(buffer.length + UINT24_SIZE);\n\t\t writeUInt24BE(lengthPrefixed, buffer.length, 0);\n\t\t buffer.copy(lengthPrefixed, UINT24_SIZE);\n\t\t return lengthPrefixed;\n\t\t}\n\t\texports$1.serializeFrameWithLength = serializeFrameWithLength;\n\t\t/**\n\t\t * Read a frame from the buffer.\n\t\t */\n\t\tfunction deserializeFrame(buffer) {\n\t\t var offset = 0;\n\t\t var streamId = buffer.readInt32BE(offset);\n\t\t offset += 4;\n\t\t // invariant(\n\t\t // streamId >= 0,\n\t\t // 'RSocketBinaryFraming: Invalid frame, expected a positive stream id, got `%s.',\n\t\t // streamId,\n\t\t // );\n\t\t var typeAndFlags = buffer.readUInt16BE(offset);\n\t\t offset += 2;\n\t\t var type = typeAndFlags >>> exports$1.FRAME_TYPE_OFFFSET; // keep highest 6 bits\n\t\t var flags = typeAndFlags & exports$1.FLAGS_MASK; // keep lowest 10 bits\n\t\t switch (type) {\n\t\t case Frames_1.FrameTypes.SETUP:\n\t\t return deserializeSetupFrame(buffer, streamId, flags);\n\t\t case Frames_1.FrameTypes.PAYLOAD:\n\t\t return deserializePayloadFrame(buffer, streamId, flags);\n\t\t case Frames_1.FrameTypes.ERROR:\n\t\t return deserializeErrorFrame(buffer, streamId, flags);\n\t\t case Frames_1.FrameTypes.KEEPALIVE:\n\t\t return deserializeKeepAliveFrame(buffer, streamId, flags);\n\t\t case Frames_1.FrameTypes.REQUEST_FNF:\n\t\t return deserializeRequestFnfFrame(buffer, streamId, flags);\n\t\t case Frames_1.FrameTypes.REQUEST_RESPONSE:\n\t\t return deserializeRequestResponseFrame(buffer, streamId, flags);\n\t\t case Frames_1.FrameTypes.REQUEST_STREAM:\n\t\t return deserializeRequestStreamFrame(buffer, streamId, flags);\n\t\t case Frames_1.FrameTypes.REQUEST_CHANNEL:\n\t\t return deserializeRequestChannelFrame(buffer, streamId, flags);\n\t\t case Frames_1.FrameTypes.METADATA_PUSH:\n\t\t return deserializeMetadataPushFrame(buffer, streamId, flags);\n\t\t case Frames_1.FrameTypes.REQUEST_N:\n\t\t return deserializeRequestNFrame(buffer, streamId, flags);\n\t\t case Frames_1.FrameTypes.RESUME:\n\t\t return deserializeResumeFrame(buffer, streamId, flags);\n\t\t case Frames_1.FrameTypes.RESUME_OK:\n\t\t return deserializeResumeOkFrame(buffer, streamId, flags);\n\t\t case Frames_1.FrameTypes.CANCEL:\n\t\t return deserializeCancelFrame(buffer, streamId, flags);\n\t\t case Frames_1.FrameTypes.LEASE:\n\t\t return deserializeLeaseFrame(buffer, streamId, flags);\n\t\t // invariant(\n\t\t // false,\n\t\t // \"RSocketBinaryFraming: Unsupported frame type `%s`.\",\n\t\t // getFrameTypeName(type)\n\t\t // );\n\t\t }\n\t\t}\n\t\texports$1.deserializeFrame = deserializeFrame;\n\t\t/**\n\t\t * Convert the frame to a (binary) buffer.\n\t\t */\n\t\tfunction serializeFrame(frame) {\n\t\t switch (frame.type) {\n\t\t case Frames_1.FrameTypes.SETUP:\n\t\t return serializeSetupFrame(frame);\n\t\t case Frames_1.FrameTypes.PAYLOAD:\n\t\t return serializePayloadFrame(frame);\n\t\t case Frames_1.FrameTypes.ERROR:\n\t\t return serializeErrorFrame(frame);\n\t\t case Frames_1.FrameTypes.KEEPALIVE:\n\t\t return serializeKeepAliveFrame(frame);\n\t\t case Frames_1.FrameTypes.REQUEST_FNF:\n\t\t case Frames_1.FrameTypes.REQUEST_RESPONSE:\n\t\t return serializeRequestFrame(frame);\n\t\t case Frames_1.FrameTypes.REQUEST_STREAM:\n\t\t case Frames_1.FrameTypes.REQUEST_CHANNEL:\n\t\t return serializeRequestManyFrame(frame);\n\t\t case Frames_1.FrameTypes.METADATA_PUSH:\n\t\t return serializeMetadataPushFrame(frame);\n\t\t case Frames_1.FrameTypes.REQUEST_N:\n\t\t return serializeRequestNFrame(frame);\n\t\t case Frames_1.FrameTypes.RESUME:\n\t\t return serializeResumeFrame(frame);\n\t\t case Frames_1.FrameTypes.RESUME_OK:\n\t\t return serializeResumeOkFrame(frame);\n\t\t case Frames_1.FrameTypes.CANCEL:\n\t\t return serializeCancelFrame(frame);\n\t\t case Frames_1.FrameTypes.LEASE:\n\t\t return serializeLeaseFrame(frame);\n\t\t // invariant(\n\t\t // false,\n\t\t // \"RSocketBinaryFraming: Unsupported frame type `%s`.\",\n\t\t // getFrameTypeName(frame.type)\n\t\t // );\n\t\t }\n\t\t}\n\t\texports$1.serializeFrame = serializeFrame;\n\t\t/**\n\t\t * Byte size of frame without size prefix\n\t\t */\n\t\tfunction sizeOfFrame(frame) {\n\t\t switch (frame.type) {\n\t\t case Frames_1.FrameTypes.SETUP:\n\t\t return sizeOfSetupFrame(frame);\n\t\t case Frames_1.FrameTypes.PAYLOAD:\n\t\t return sizeOfPayloadFrame(frame);\n\t\t case Frames_1.FrameTypes.ERROR:\n\t\t return sizeOfErrorFrame(frame);\n\t\t case Frames_1.FrameTypes.KEEPALIVE:\n\t\t return sizeOfKeepAliveFrame(frame);\n\t\t case Frames_1.FrameTypes.REQUEST_FNF:\n\t\t case Frames_1.FrameTypes.REQUEST_RESPONSE:\n\t\t return sizeOfRequestFrame(frame);\n\t\t case Frames_1.FrameTypes.REQUEST_STREAM:\n\t\t case Frames_1.FrameTypes.REQUEST_CHANNEL:\n\t\t return sizeOfRequestManyFrame(frame);\n\t\t case Frames_1.FrameTypes.METADATA_PUSH:\n\t\t return sizeOfMetadataPushFrame(frame);\n\t\t case Frames_1.FrameTypes.REQUEST_N:\n\t\t return sizeOfRequestNFrame();\n\t\t case Frames_1.FrameTypes.RESUME:\n\t\t return sizeOfResumeFrame(frame);\n\t\t case Frames_1.FrameTypes.RESUME_OK:\n\t\t return sizeOfResumeOkFrame();\n\t\t case Frames_1.FrameTypes.CANCEL:\n\t\t return sizeOfCancelFrame();\n\t\t case Frames_1.FrameTypes.LEASE:\n\t\t return sizeOfLeaseFrame(frame);\n\t\t // invariant(\n\t\t // false,\n\t\t // \"RSocketBinaryFraming: Unsupported frame type `%s`.\",\n\t\t // getFrameTypeName(frame.type)\n\t\t // );\n\t\t }\n\t\t}\n\t\texports$1.sizeOfFrame = sizeOfFrame;\n\t\t/**\n\t\t * Writes a SETUP frame into a new buffer and returns it.\n\t\t *\n\t\t * Prefix size is:\n\t\t * - version (2x uint16 = 4)\n\t\t * - keepalive (uint32 = 4)\n\t\t * - lifetime (uint32 = 4)\n\t\t * - mime lengths (2x uint8 = 2)\n\t\t */\n\t\tvar SETUP_FIXED_SIZE = 14;\n\t\tvar RESUME_TOKEN_LENGTH_SIZE = 2;\n\t\tfunction serializeSetupFrame(frame) {\n\t\t var resumeTokenLength = frame.resumeToken != null ? frame.resumeToken.byteLength : 0;\n\t\t var metadataMimeTypeLength = frame.metadataMimeType != null\n\t\t ? bufferExports.Buffer.byteLength(frame.metadataMimeType, \"ascii\")\n\t\t : 0;\n\t\t var dataMimeTypeLength = frame.dataMimeType != null\n\t\t ? bufferExports.Buffer.byteLength(frame.dataMimeType, \"ascii\")\n\t\t : 0;\n\t\t var payloadLength = getPayloadLength(frame);\n\t\t var buffer = bufferExports.Buffer.allocUnsafe(FRAME_HEADER_SIZE +\n\t\t SETUP_FIXED_SIZE + //\n\t\t (resumeTokenLength ? RESUME_TOKEN_LENGTH_SIZE + resumeTokenLength : 0) +\n\t\t metadataMimeTypeLength +\n\t\t dataMimeTypeLength +\n\t\t payloadLength);\n\t\t var offset = writeHeader(frame, buffer);\n\t\t offset = buffer.writeUInt16BE(frame.majorVersion, offset);\n\t\t offset = buffer.writeUInt16BE(frame.minorVersion, offset);\n\t\t offset = buffer.writeUInt32BE(frame.keepAlive, offset);\n\t\t offset = buffer.writeUInt32BE(frame.lifetime, offset);\n\t\t if (frame.flags & Frames_1.Flags.RESUME_ENABLE) {\n\t\t offset = buffer.writeUInt16BE(resumeTokenLength, offset);\n\t\t if (frame.resumeToken != null) {\n\t\t offset += frame.resumeToken.copy(buffer, offset);\n\t\t }\n\t\t }\n\t\t offset = buffer.writeUInt8(metadataMimeTypeLength, offset);\n\t\t if (frame.metadataMimeType != null) {\n\t\t offset += buffer.write(frame.metadataMimeType, offset, offset + metadataMimeTypeLength, \"ascii\");\n\t\t }\n\t\t offset = buffer.writeUInt8(dataMimeTypeLength, offset);\n\t\t if (frame.dataMimeType != null) {\n\t\t offset += buffer.write(frame.dataMimeType, offset, offset + dataMimeTypeLength, \"ascii\");\n\t\t }\n\t\t writePayload(frame, buffer, offset);\n\t\t return buffer;\n\t\t}\n\t\tfunction sizeOfSetupFrame(frame) {\n\t\t var resumeTokenLength = frame.resumeToken != null ? frame.resumeToken.byteLength : 0;\n\t\t var metadataMimeTypeLength = frame.metadataMimeType != null\n\t\t ? bufferExports.Buffer.byteLength(frame.metadataMimeType, \"ascii\")\n\t\t : 0;\n\t\t var dataMimeTypeLength = frame.dataMimeType != null\n\t\t ? bufferExports.Buffer.byteLength(frame.dataMimeType, \"ascii\")\n\t\t : 0;\n\t\t var payloadLength = getPayloadLength(frame);\n\t\t return (FRAME_HEADER_SIZE +\n\t\t SETUP_FIXED_SIZE + //\n\t\t (resumeTokenLength ? RESUME_TOKEN_LENGTH_SIZE + resumeTokenLength : 0) +\n\t\t metadataMimeTypeLength +\n\t\t dataMimeTypeLength +\n\t\t payloadLength);\n\t\t}\n\t\t/**\n\t\t * Reads a SETUP frame from the buffer and returns it.\n\t\t */\n\t\tfunction deserializeSetupFrame(buffer, streamId, flags) {\n\t\t // invariant(\n\t\t // streamId === 0,\n\t\t // 'RSocketBinaryFraming: Invalid SETUP frame, expected stream id to be 0.',\n\t\t // );\n\t\t buffer.length;\n\t\t var offset = FRAME_HEADER_SIZE;\n\t\t var majorVersion = buffer.readUInt16BE(offset);\n\t\t offset += 2;\n\t\t var minorVersion = buffer.readUInt16BE(offset);\n\t\t offset += 2;\n\t\t var keepAlive = buffer.readInt32BE(offset);\n\t\t offset += 4;\n\t\t // invariant(\n\t\t // keepAlive >= 0 && keepAlive <= MAX_KEEPALIVE,\n\t\t // 'RSocketBinaryFraming: Invalid SETUP frame, expected keepAlive to be ' +\n\t\t // '>= 0 and <= %s. Got `%s`.',\n\t\t // MAX_KEEPALIVE,\n\t\t // keepAlive,\n\t\t // );\n\t\t var lifetime = buffer.readInt32BE(offset);\n\t\t offset += 4;\n\t\t // invariant(\n\t\t // lifetime >= 0 && lifetime <= MAX_LIFETIME,\n\t\t // 'RSocketBinaryFraming: Invalid SETUP frame, expected lifetime to be ' +\n\t\t // '>= 0 and <= %s. Got `%s`.',\n\t\t // MAX_LIFETIME,\n\t\t // lifetime,\n\t\t // );\n\t\t var resumeToken = null;\n\t\t if (flags & Frames_1.Flags.RESUME_ENABLE) {\n\t\t var resumeTokenLength = buffer.readInt16BE(offset);\n\t\t offset += 2;\n\t\t // invariant(\n\t\t // resumeTokenLength >= 0 && resumeTokenLength <= MAX_RESUME_LENGTH,\n\t\t // 'RSocketBinaryFraming: Invalid SETUP frame, expected resumeToken length ' +\n\t\t // 'to be >= 0 and <= %s. Got `%s`.',\n\t\t // MAX_RESUME_LENGTH,\n\t\t // resumeTokenLength,\n\t\t // );\n\t\t resumeToken = buffer.slice(offset, offset + resumeTokenLength);\n\t\t offset += resumeTokenLength;\n\t\t }\n\t\t var metadataMimeTypeLength = buffer.readUInt8(offset);\n\t\t offset += 1;\n\t\t var metadataMimeType = buffer.toString(\"ascii\", offset, offset + metadataMimeTypeLength);\n\t\t offset += metadataMimeTypeLength;\n\t\t var dataMimeTypeLength = buffer.readUInt8(offset);\n\t\t offset += 1;\n\t\t var dataMimeType = buffer.toString(\"ascii\", offset, offset + dataMimeTypeLength);\n\t\t offset += dataMimeTypeLength;\n\t\t var frame = {\n\t\t data: null,\n\t\t dataMimeType: dataMimeType,\n\t\t flags: flags,\n\t\t keepAlive: keepAlive,\n\t\t lifetime: lifetime,\n\t\t majorVersion: majorVersion,\n\t\t metadata: null,\n\t\t metadataMimeType: metadataMimeType,\n\t\t minorVersion: minorVersion,\n\t\t resumeToken: resumeToken,\n\t\t // streamId,\n\t\t streamId: 0,\n\t\t type: Frames_1.FrameTypes.SETUP,\n\t\t };\n\t\t readPayload(buffer, frame, offset);\n\t\t return frame;\n\t\t}\n\t\t/**\n\t\t * Writes an ERROR frame into a new buffer and returns it.\n\t\t *\n\t\t * Prefix size is for the error code (uint32 = 4).\n\t\t */\n\t\tvar ERROR_FIXED_SIZE = 4;\n\t\tfunction serializeErrorFrame(frame) {\n\t\t var messageLength = frame.message != null ? bufferExports.Buffer.byteLength(frame.message, \"utf8\") : 0;\n\t\t var buffer = bufferExports.Buffer.allocUnsafe(FRAME_HEADER_SIZE + ERROR_FIXED_SIZE + messageLength);\n\t\t var offset = writeHeader(frame, buffer);\n\t\t offset = buffer.writeUInt32BE(frame.code, offset);\n\t\t if (frame.message != null) {\n\t\t buffer.write(frame.message, offset, offset + messageLength, \"utf8\");\n\t\t }\n\t\t return buffer;\n\t\t}\n\t\tfunction sizeOfErrorFrame(frame) {\n\t\t var messageLength = frame.message != null ? bufferExports.Buffer.byteLength(frame.message, \"utf8\") : 0;\n\t\t return FRAME_HEADER_SIZE + ERROR_FIXED_SIZE + messageLength;\n\t\t}\n\t\t/**\n\t\t * Reads an ERROR frame from the buffer and returns it.\n\t\t */\n\t\tfunction deserializeErrorFrame(buffer, streamId, flags) {\n\t\t buffer.length;\n\t\t var offset = FRAME_HEADER_SIZE;\n\t\t var code = buffer.readInt32BE(offset);\n\t\t offset += 4;\n\t\t // invariant(\n\t\t // code >= 0 && code <= MAX_CODE,\n\t\t // \"RSocketBinaryFraming: Invalid ERROR frame, expected code to be >= 0 and <= %s. Got `%s`.\",\n\t\t // MAX_CODE,\n\t\t // code\n\t\t // );\n\t\t var messageLength = buffer.length - offset;\n\t\t var message = \"\";\n\t\t if (messageLength > 0) {\n\t\t message = buffer.toString(\"utf8\", offset, offset + messageLength);\n\t\t offset += messageLength;\n\t\t }\n\t\t return {\n\t\t code: code,\n\t\t flags: flags,\n\t\t message: message,\n\t\t streamId: streamId,\n\t\t type: Frames_1.FrameTypes.ERROR,\n\t\t };\n\t\t}\n\t\t/**\n\t\t * Writes a KEEPALIVE frame into a new buffer and returns it.\n\t\t *\n\t\t * Prefix size is for the last received position (uint64 = 8).\n\t\t */\n\t\tvar KEEPALIVE_FIXED_SIZE = 8;\n\t\tfunction serializeKeepAliveFrame(frame) {\n\t\t var dataLength = frame.data != null ? frame.data.byteLength : 0;\n\t\t var buffer = bufferExports.Buffer.allocUnsafe(FRAME_HEADER_SIZE + KEEPALIVE_FIXED_SIZE + dataLength);\n\t\t var offset = writeHeader(frame, buffer);\n\t\t offset = writeUInt64BE(buffer, frame.lastReceivedPosition, offset);\n\t\t if (frame.data != null) {\n\t\t frame.data.copy(buffer, offset);\n\t\t }\n\t\t return buffer;\n\t\t}\n\t\tfunction sizeOfKeepAliveFrame(frame) {\n\t\t var dataLength = frame.data != null ? frame.data.byteLength : 0;\n\t\t return FRAME_HEADER_SIZE + KEEPALIVE_FIXED_SIZE + dataLength;\n\t\t}\n\t\t/**\n\t\t * Reads a KEEPALIVE frame from the buffer and returns it.\n\t\t */\n\t\tfunction deserializeKeepAliveFrame(buffer, streamId, flags) {\n\t\t // invariant(\n\t\t // streamId === 0,\n\t\t // \"RSocketBinaryFraming: Invalid KEEPALIVE frame, expected stream id to be 0.\"\n\t\t // );\n\t\t buffer.length;\n\t\t var offset = FRAME_HEADER_SIZE;\n\t\t var lastReceivedPosition = readUInt64BE(buffer, offset);\n\t\t offset += 8;\n\t\t var data = null;\n\t\t if (offset < buffer.length) {\n\t\t data = buffer.slice(offset, buffer.length);\n\t\t }\n\t\t return {\n\t\t data: data,\n\t\t flags: flags,\n\t\t lastReceivedPosition: lastReceivedPosition,\n\t\t // streamId,\n\t\t streamId: 0,\n\t\t type: Frames_1.FrameTypes.KEEPALIVE,\n\t\t };\n\t\t}\n\t\t/**\n\t\t * Writes a LEASE frame into a new buffer and returns it.\n\t\t *\n\t\t * Prefix size is for the ttl (uint32) and requestcount (uint32).\n\t\t */\n\t\tvar LEASE_FIXED_SIZE = 8;\n\t\tfunction serializeLeaseFrame(frame) {\n\t\t var metaLength = frame.metadata != null ? frame.metadata.byteLength : 0;\n\t\t var buffer = bufferExports.Buffer.allocUnsafe(FRAME_HEADER_SIZE + LEASE_FIXED_SIZE + metaLength);\n\t\t var offset = writeHeader(frame, buffer);\n\t\t offset = buffer.writeUInt32BE(frame.ttl, offset);\n\t\t offset = buffer.writeUInt32BE(frame.requestCount, offset);\n\t\t if (frame.metadata != null) {\n\t\t frame.metadata.copy(buffer, offset);\n\t\t }\n\t\t return buffer;\n\t\t}\n\t\tfunction sizeOfLeaseFrame(frame) {\n\t\t var metaLength = frame.metadata != null ? frame.metadata.byteLength : 0;\n\t\t return FRAME_HEADER_SIZE + LEASE_FIXED_SIZE + metaLength;\n\t\t}\n\t\t/**\n\t\t * Reads a LEASE frame from the buffer and returns it.\n\t\t */\n\t\tfunction deserializeLeaseFrame(buffer, streamId, flags) {\n\t\t // invariant(\n\t\t // streamId === 0,\n\t\t // \"RSocketBinaryFraming: Invalid LEASE frame, expected stream id to be 0.\"\n\t\t // );\n\t\t // const length = buffer.length;\n\t\t var offset = FRAME_HEADER_SIZE;\n\t\t var ttl = buffer.readUInt32BE(offset);\n\t\t offset += 4;\n\t\t var requestCount = buffer.readUInt32BE(offset);\n\t\t offset += 4;\n\t\t var metadata = null;\n\t\t if (offset < buffer.length) {\n\t\t metadata = buffer.slice(offset, buffer.length);\n\t\t }\n\t\t return {\n\t\t flags: flags,\n\t\t metadata: metadata,\n\t\t requestCount: requestCount,\n\t\t // streamId,\n\t\t streamId: 0,\n\t\t ttl: ttl,\n\t\t type: Frames_1.FrameTypes.LEASE,\n\t\t };\n\t\t}\n\t\t/**\n\t\t * Writes a REQUEST_FNF or REQUEST_RESPONSE frame to a new buffer and returns\n\t\t * it.\n\t\t *\n\t\t * Note that these frames have the same shape and only differ in their type.\n\t\t */\n\t\tfunction serializeRequestFrame(frame) {\n\t\t var payloadLength = getPayloadLength(frame);\n\t\t var buffer = bufferExports.Buffer.allocUnsafe(FRAME_HEADER_SIZE + payloadLength);\n\t\t var offset = writeHeader(frame, buffer);\n\t\t writePayload(frame, buffer, offset);\n\t\t return buffer;\n\t\t}\n\t\tfunction sizeOfRequestFrame(frame) {\n\t\t var payloadLength = getPayloadLength(frame);\n\t\t return FRAME_HEADER_SIZE + payloadLength;\n\t\t}\n\t\t/**\n\t\t * Writes a METADATA_PUSH frame to a new buffer and returns\n\t\t * it.\n\t\t */\n\t\tfunction serializeMetadataPushFrame(frame) {\n\t\t var metadata = frame.metadata;\n\t\t if (metadata != null) {\n\t\t var buffer = bufferExports.Buffer.allocUnsafe(FRAME_HEADER_SIZE + metadata.byteLength);\n\t\t var offset = writeHeader(frame, buffer);\n\t\t metadata.copy(buffer, offset);\n\t\t return buffer;\n\t\t }\n\t\t else {\n\t\t var buffer = bufferExports.Buffer.allocUnsafe(FRAME_HEADER_SIZE);\n\t\t writeHeader(frame, buffer);\n\t\t return buffer;\n\t\t }\n\t\t}\n\t\tfunction sizeOfMetadataPushFrame(frame) {\n\t\t return (FRAME_HEADER_SIZE + (frame.metadata != null ? frame.metadata.byteLength : 0));\n\t\t}\n\t\tfunction deserializeRequestFnfFrame(buffer, streamId, flags) {\n\t\t // invariant(\n\t\t // streamId > 0,\n\t\t // \"RSocketBinaryFraming: Invalid REQUEST_FNF frame, expected stream id to be > 0.\"\n\t\t // );\n\t\t buffer.length;\n\t\t var frame = {\n\t\t data: null,\n\t\t flags: flags,\n\t\t // length,\n\t\t metadata: null,\n\t\t streamId: streamId,\n\t\t type: Frames_1.FrameTypes.REQUEST_FNF,\n\t\t };\n\t\t readPayload(buffer, frame, FRAME_HEADER_SIZE);\n\t\t return frame;\n\t\t}\n\t\tfunction deserializeRequestResponseFrame(buffer, streamId, flags) {\n\t\t // invariant(\n\t\t // streamId > 0,\n\t\t // \"RSocketBinaryFraming: Invalid REQUEST_RESPONSE frame, expected stream id to be > 0.\"\n\t\t // );\n\t\t // const length = buffer.length;\n\t\t var frame = {\n\t\t data: null,\n\t\t flags: flags,\n\t\t // length,\n\t\t metadata: null,\n\t\t streamId: streamId,\n\t\t type: Frames_1.FrameTypes.REQUEST_RESPONSE,\n\t\t };\n\t\t readPayload(buffer, frame, FRAME_HEADER_SIZE);\n\t\t return frame;\n\t\t}\n\t\tfunction deserializeMetadataPushFrame(buffer, streamId, flags) {\n\t\t // invariant(\n\t\t // streamId === 0,\n\t\t // \"RSocketBinaryFraming: Invalid METADATA_PUSH frame, expected stream id to be 0.\"\n\t\t // );\n\t\t // const length = buffer.length;\n\t\t return {\n\t\t flags: flags,\n\t\t // length,\n\t\t metadata: length === FRAME_HEADER_SIZE\n\t\t ? null\n\t\t : buffer.slice(FRAME_HEADER_SIZE, length),\n\t\t // streamId,\n\t\t streamId: 0,\n\t\t type: Frames_1.FrameTypes.METADATA_PUSH,\n\t\t };\n\t\t}\n\t\t/**\n\t\t * Writes a REQUEST_STREAM or REQUEST_CHANNEL frame to a new buffer and returns\n\t\t * it.\n\t\t *\n\t\t * Note that these frames have the same shape and only differ in their type.\n\t\t *\n\t\t * Prefix size is for requestN (uint32 = 4).\n\t\t */\n\t\tvar REQUEST_MANY_HEADER = 4;\n\t\tfunction serializeRequestManyFrame(frame) {\n\t\t var payloadLength = getPayloadLength(frame);\n\t\t var buffer = bufferExports.Buffer.allocUnsafe(FRAME_HEADER_SIZE + REQUEST_MANY_HEADER + payloadLength);\n\t\t var offset = writeHeader(frame, buffer);\n\t\t offset = buffer.writeUInt32BE(frame.requestN, offset);\n\t\t writePayload(frame, buffer, offset);\n\t\t return buffer;\n\t\t}\n\t\tfunction sizeOfRequestManyFrame(frame) {\n\t\t var payloadLength = getPayloadLength(frame);\n\t\t return FRAME_HEADER_SIZE + REQUEST_MANY_HEADER + payloadLength;\n\t\t}\n\t\tfunction deserializeRequestStreamFrame(buffer, streamId, flags) {\n\t\t // invariant(\n\t\t // streamId > 0,\n\t\t // \"RSocketBinaryFraming: Invalid REQUEST_STREAM frame, expected stream id to be > 0.\"\n\t\t // );\n\t\t buffer.length;\n\t\t var offset = FRAME_HEADER_SIZE;\n\t\t var requestN = buffer.readInt32BE(offset);\n\t\t offset += 4;\n\t\t // invariant(\n\t\t // requestN > 0,\n\t\t // \"RSocketBinaryFraming: Invalid REQUEST_STREAM frame, expected requestN to be > 0, got `%s`.\",\n\t\t // requestN\n\t\t // );\n\t\t var frame = {\n\t\t data: null,\n\t\t flags: flags,\n\t\t // length,\n\t\t metadata: null,\n\t\t requestN: requestN,\n\t\t streamId: streamId,\n\t\t type: Frames_1.FrameTypes.REQUEST_STREAM,\n\t\t };\n\t\t readPayload(buffer, frame, offset);\n\t\t return frame;\n\t\t}\n\t\tfunction deserializeRequestChannelFrame(buffer, streamId, flags) {\n\t\t // invariant(\n\t\t // streamId > 0,\n\t\t // \"RSocketBinaryFraming: Invalid REQUEST_CHANNEL frame, expected stream id to be > 0.\"\n\t\t // );\n\t\t buffer.length;\n\t\t var offset = FRAME_HEADER_SIZE;\n\t\t var requestN = buffer.readInt32BE(offset);\n\t\t offset += 4;\n\t\t // invariant(\n\t\t // requestN > 0,\n\t\t // \"RSocketBinaryFraming: Invalid REQUEST_STREAM frame, expected requestN to be > 0, got `%s`.\",\n\t\t // requestN\n\t\t // );\n\t\t var frame = {\n\t\t data: null,\n\t\t flags: flags,\n\t\t // length,\n\t\t metadata: null,\n\t\t requestN: requestN,\n\t\t streamId: streamId,\n\t\t type: Frames_1.FrameTypes.REQUEST_CHANNEL,\n\t\t };\n\t\t readPayload(buffer, frame, offset);\n\t\t return frame;\n\t\t}\n\t\t/**\n\t\t * Writes a REQUEST_N frame to a new buffer and returns it.\n\t\t *\n\t\t * Prefix size is for requestN (uint32 = 4).\n\t\t */\n\t\tvar REQUEST_N_HEADER = 4;\n\t\tfunction serializeRequestNFrame(frame) {\n\t\t var buffer = bufferExports.Buffer.allocUnsafe(FRAME_HEADER_SIZE + REQUEST_N_HEADER);\n\t\t var offset = writeHeader(frame, buffer);\n\t\t buffer.writeUInt32BE(frame.requestN, offset);\n\t\t return buffer;\n\t\t}\n\t\tfunction sizeOfRequestNFrame(frame) {\n\t\t return FRAME_HEADER_SIZE + REQUEST_N_HEADER;\n\t\t}\n\t\tfunction deserializeRequestNFrame(buffer, streamId, flags) {\n\t\t // invariant(\n\t\t // streamId > 0,\n\t\t // \"RSocketBinaryFraming: Invalid REQUEST_N frame, expected stream id to be > 0.\"\n\t\t // );\n\t\t buffer.length;\n\t\t var requestN = buffer.readInt32BE(FRAME_HEADER_SIZE);\n\t\t // invariant(\n\t\t // requestN > 0,\n\t\t // \"RSocketBinaryFraming: Invalid REQUEST_STREAM frame, expected requestN to be > 0, got `%s`.\",\n\t\t // requestN\n\t\t // );\n\t\t return {\n\t\t flags: flags,\n\t\t // length,\n\t\t requestN: requestN,\n\t\t streamId: streamId,\n\t\t type: Frames_1.FrameTypes.REQUEST_N,\n\t\t };\n\t\t}\n\t\t/**\n\t\t * Writes a CANCEL frame to a new buffer and returns it.\n\t\t */\n\t\tfunction serializeCancelFrame(frame) {\n\t\t var buffer = bufferExports.Buffer.allocUnsafe(FRAME_HEADER_SIZE);\n\t\t writeHeader(frame, buffer);\n\t\t return buffer;\n\t\t}\n\t\tfunction sizeOfCancelFrame(frame) {\n\t\t return FRAME_HEADER_SIZE;\n\t\t}\n\t\tfunction deserializeCancelFrame(buffer, streamId, flags) {\n\t\t // invariant(\n\t\t // streamId > 0,\n\t\t // \"RSocketBinaryFraming: Invalid CANCEL frame, expected stream id to be > 0.\"\n\t\t // );\n\t\t buffer.length;\n\t\t return {\n\t\t flags: flags,\n\t\t // length,\n\t\t streamId: streamId,\n\t\t type: Frames_1.FrameTypes.CANCEL,\n\t\t };\n\t\t}\n\t\t/**\n\t\t * Writes a PAYLOAD frame to a new buffer and returns it.\n\t\t */\n\t\tfunction serializePayloadFrame(frame) {\n\t\t var payloadLength = getPayloadLength(frame);\n\t\t var buffer = bufferExports.Buffer.allocUnsafe(FRAME_HEADER_SIZE + payloadLength);\n\t\t var offset = writeHeader(frame, buffer);\n\t\t writePayload(frame, buffer, offset);\n\t\t return buffer;\n\t\t}\n\t\tfunction sizeOfPayloadFrame(frame) {\n\t\t var payloadLength = getPayloadLength(frame);\n\t\t return FRAME_HEADER_SIZE + payloadLength;\n\t\t}\n\t\tfunction deserializePayloadFrame(buffer, streamId, flags) {\n\t\t // invariant(\n\t\t // streamId > 0,\n\t\t // \"RSocketBinaryFraming: Invalid PAYLOAD frame, expected stream id to be > 0.\"\n\t\t // );\n\t\t buffer.length;\n\t\t var frame = {\n\t\t data: null,\n\t\t flags: flags,\n\t\t // length,\n\t\t metadata: null,\n\t\t streamId: streamId,\n\t\t type: Frames_1.FrameTypes.PAYLOAD,\n\t\t };\n\t\t readPayload(buffer, frame, FRAME_HEADER_SIZE);\n\t\t return frame;\n\t\t}\n\t\t/**\n\t\t * Writes a RESUME frame into a new buffer and returns it.\n\t\t *\n\t\t * Fixed size is:\n\t\t * - major version (uint16 = 2)\n\t\t * - minor version (uint16 = 2)\n\t\t * - token length (uint16 = 2)\n\t\t * - client position (uint64 = 8)\n\t\t * - server position (uint64 = 8)\n\t\t */\n\t\tvar RESUME_FIXED_SIZE = 22;\n\t\tfunction serializeResumeFrame(frame) {\n\t\t var resumeTokenLength = frame.resumeToken.byteLength;\n\t\t var buffer = bufferExports.Buffer.allocUnsafe(FRAME_HEADER_SIZE + RESUME_FIXED_SIZE + resumeTokenLength);\n\t\t var offset = writeHeader(frame, buffer);\n\t\t offset = buffer.writeUInt16BE(frame.majorVersion, offset);\n\t\t offset = buffer.writeUInt16BE(frame.minorVersion, offset);\n\t\t offset = buffer.writeUInt16BE(resumeTokenLength, offset);\n\t\t offset += frame.resumeToken.copy(buffer, offset);\n\t\t offset = writeUInt64BE(buffer, frame.serverPosition, offset);\n\t\t writeUInt64BE(buffer, frame.clientPosition, offset);\n\t\t return buffer;\n\t\t}\n\t\tfunction sizeOfResumeFrame(frame) {\n\t\t var resumeTokenLength = frame.resumeToken.byteLength;\n\t\t return FRAME_HEADER_SIZE + RESUME_FIXED_SIZE + resumeTokenLength;\n\t\t}\n\t\tfunction deserializeResumeFrame(buffer, streamId, flags) {\n\t\t // invariant(\n\t\t // streamId === 0,\n\t\t // \"RSocketBinaryFraming: Invalid RESUME frame, expected stream id to be 0.\"\n\t\t // );\n\t\t buffer.length;\n\t\t var offset = FRAME_HEADER_SIZE;\n\t\t var majorVersion = buffer.readUInt16BE(offset);\n\t\t offset += 2;\n\t\t var minorVersion = buffer.readUInt16BE(offset);\n\t\t offset += 2;\n\t\t var resumeTokenLength = buffer.readInt16BE(offset);\n\t\t offset += 2;\n\t\t // invariant(\n\t\t // resumeTokenLength >= 0 && resumeTokenLength <= MAX_RESUME_LENGTH,\n\t\t // \"RSocketBinaryFraming: Invalid SETUP frame, expected resumeToken length \" +\n\t\t // \"to be >= 0 and <= %s. Got `%s`.\",\n\t\t // MAX_RESUME_LENGTH,\n\t\t // resumeTokenLength\n\t\t // );\n\t\t var resumeToken = buffer.slice(offset, offset + resumeTokenLength);\n\t\t offset += resumeTokenLength;\n\t\t var serverPosition = readUInt64BE(buffer, offset);\n\t\t offset += 8;\n\t\t var clientPosition = readUInt64BE(buffer, offset);\n\t\t offset += 8;\n\t\t return {\n\t\t clientPosition: clientPosition,\n\t\t flags: flags,\n\t\t // length,\n\t\t majorVersion: majorVersion,\n\t\t minorVersion: minorVersion,\n\t\t resumeToken: resumeToken,\n\t\t serverPosition: serverPosition,\n\t\t // streamId,\n\t\t streamId: 0,\n\t\t type: Frames_1.FrameTypes.RESUME,\n\t\t };\n\t\t}\n\t\t/**\n\t\t * Writes a RESUME_OK frame into a new buffer and returns it.\n\t\t *\n\t\t * Fixed size is:\n\t\t * - client position (uint64 = 8)\n\t\t */\n\t\tvar RESUME_OK_FIXED_SIZE = 8;\n\t\tfunction serializeResumeOkFrame(frame) {\n\t\t var buffer = bufferExports.Buffer.allocUnsafe(FRAME_HEADER_SIZE + RESUME_OK_FIXED_SIZE);\n\t\t var offset = writeHeader(frame, buffer);\n\t\t writeUInt64BE(buffer, frame.clientPosition, offset);\n\t\t return buffer;\n\t\t}\n\t\tfunction sizeOfResumeOkFrame(frame) {\n\t\t return FRAME_HEADER_SIZE + RESUME_OK_FIXED_SIZE;\n\t\t}\n\t\tfunction deserializeResumeOkFrame(buffer, streamId, flags) {\n\t\t // invariant(\n\t\t // streamId === 0,\n\t\t // \"RSocketBinaryFraming: Invalid RESUME frame, expected stream id to be 0.\"\n\t\t // );\n\t\t buffer.length;\n\t\t var clientPosition = readUInt64BE(buffer, FRAME_HEADER_SIZE);\n\t\t return {\n\t\t clientPosition: clientPosition,\n\t\t flags: flags,\n\t\t // length,\n\t\t // streamId,\n\t\t streamId: 0,\n\t\t type: Frames_1.FrameTypes.RESUME_OK,\n\t\t };\n\t\t}\n\t\t/**\n\t\t * Write the header of the frame into the buffer.\n\t\t */\n\t\tfunction writeHeader(frame, buffer) {\n\t\t var offset = buffer.writeInt32BE(frame.streamId, 0);\n\t\t // shift frame to high 6 bits, extract lowest 10 bits from flags\n\t\t return buffer.writeUInt16BE((frame.type << exports$1.FRAME_TYPE_OFFFSET) | (frame.flags & exports$1.FLAGS_MASK), offset);\n\t\t}\n\t\t/**\n\t\t * Determine the length of the payload section of a frame. Only applies to\n\t\t * frame types that MAY have both metadata and data.\n\t\t */\n\t\tfunction getPayloadLength(frame) {\n\t\t var payloadLength = 0;\n\t\t if (frame.data != null) {\n\t\t payloadLength += frame.data.byteLength;\n\t\t }\n\t\t if (Frames_1.Flags.hasMetadata(frame.flags)) {\n\t\t payloadLength += UINT24_SIZE;\n\t\t if (frame.metadata != null) {\n\t\t payloadLength += frame.metadata.byteLength;\n\t\t }\n\t\t }\n\t\t return payloadLength;\n\t\t}\n\t\t/**\n\t\t * Write the payload of a frame into the given buffer. Only applies to frame\n\t\t * types that MAY have both metadata and data.\n\t\t */\n\t\tfunction writePayload(frame, buffer, offset) {\n\t\t if (Frames_1.Flags.hasMetadata(frame.flags)) {\n\t\t if (frame.metadata != null) {\n\t\t var metaLength = frame.metadata.byteLength;\n\t\t offset = writeUInt24BE(buffer, metaLength, offset);\n\t\t offset += frame.metadata.copy(buffer, offset);\n\t\t }\n\t\t else {\n\t\t offset = writeUInt24BE(buffer, 0, offset);\n\t\t }\n\t\t }\n\t\t if (frame.data != null) {\n\t\t frame.data.copy(buffer, offset);\n\t\t }\n\t\t}\n\t\t/**\n\t\t * Read the payload from a buffer and write it into the frame. Only applies to\n\t\t * frame types that MAY have both metadata and data.\n\t\t */\n\t\tfunction readPayload(buffer, frame, offset) {\n\t\t if (Frames_1.Flags.hasMetadata(frame.flags)) {\n\t\t var metaLength = readUInt24BE(buffer, offset);\n\t\t offset += UINT24_SIZE;\n\t\t if (metaLength > 0) {\n\t\t frame.metadata = buffer.slice(offset, offset + metaLength);\n\t\t offset += metaLength;\n\t\t }\n\t\t }\n\t\t if (offset < buffer.length) {\n\t\t frame.data = buffer.slice(offset, buffer.length);\n\t\t }\n\t\t}\n\t\t// exported as class to facilitate testing\n\t\tvar Deserializer = /** @class */ (function () {\n\t\t function Deserializer() {\n\t\t }\n\t\t /**\n\t\t * Read a frame from the buffer.\n\t\t */\n\t\t Deserializer.prototype.deserializeFrame = function (buffer) {\n\t\t return deserializeFrame(buffer);\n\t\t };\n\t\t /**\n\t\t * Reads a frame from a buffer that is prefixed with the frame length.\n\t\t */\n\t\t Deserializer.prototype.deserializeFrameWithLength = function (buffer) {\n\t\t return deserializeFrameWithLength(buffer);\n\t\t };\n\t\t /**\n\t\t * Given a buffer that may contain zero or more length-prefixed frames followed\n\t\t * by zero or more bytes of a (partial) subsequent frame, returns an array of\n\t\t * the frames and a int representing the buffer offset.\n\t\t */\n\t\t Deserializer.prototype.deserializeFrames = function (buffer) {\n\t\t return deserializeFrames(buffer);\n\t\t };\n\t\t return Deserializer;\n\t\t}());\n\t\texports$1.Deserializer = Deserializer;\n\t\t\n\t} (Codecs));\n\treturn Codecs;\n}\n\nvar Common = {};\n\nvar hasRequiredCommon;\n\nfunction requireCommon () {\n\tif (hasRequiredCommon) return Common;\n\thasRequiredCommon = 1;\n\t/*\n\t * Copyright 2021-2022 the original author or authors.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t */\n\tObject.defineProperty(Common, \"__esModule\", { value: true });\n\t\n\treturn Common;\n}\n\nvar Deferred = {};\n\nvar hasRequiredDeferred;\n\nfunction requireDeferred () {\n\tif (hasRequiredDeferred) return Deferred;\n\thasRequiredDeferred = 1;\n\t/*\n\t * Copyright 2021-2022 the original author or authors.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t */\n\tvar __values = (Deferred && Deferred.__values) || function(o) {\n\t var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n\t if (m) return m.call(o);\n\t if (o && typeof o.length === \"number\") return {\n\t next: function () {\n\t if (o && i >= o.length) o = void 0;\n\t return { value: o && o[i++], done: !o };\n\t }\n\t };\n\t throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n\t};\n\tObject.defineProperty(Deferred, \"__esModule\", { value: true });\n\tDeferred.Deferred = void 0;\n\tvar Deferred$1 = /** @class */ (function () {\n\t function Deferred() {\n\t this._done = false;\n\t this.onCloseCallbacks = [];\n\t }\n\t Object.defineProperty(Deferred.prototype, \"done\", {\n\t get: function () {\n\t return this._done;\n\t },\n\t enumerable: false,\n\t configurable: true\n\t });\n\t /**\n\t * Signals to an observer that the Deferred operation has been closed, which invokes\n\t * the provided `onClose` callback.\n\t */\n\t Deferred.prototype.close = function (error) {\n\t var e_1, _a, e_2, _b;\n\t if (this.done) {\n\t console.warn(\"Trying to close for the second time. \".concat(error ? \"Dropping error [\".concat(error, \"].\") : \"\"));\n\t return;\n\t }\n\t this._done = true;\n\t this._error = error;\n\t if (error) {\n\t try {\n\t for (var _c = __values(this.onCloseCallbacks), _d = _c.next(); !_d.done; _d = _c.next()) {\n\t var callback = _d.value;\n\t callback(error);\n\t }\n\t }\n\t catch (e_1_1) { e_1 = { error: e_1_1 }; }\n\t finally {\n\t try {\n\t if (_d && !_d.done && (_a = _c.return)) _a.call(_c);\n\t }\n\t finally { if (e_1) throw e_1.error; }\n\t }\n\t return;\n\t }\n\t try {\n\t for (var _e = __values(this.onCloseCallbacks), _f = _e.next(); !_f.done; _f = _e.next()) {\n\t var callback = _f.value;\n\t callback();\n\t }\n\t }\n\t catch (e_2_1) { e_2 = { error: e_2_1 }; }\n\t finally {\n\t try {\n\t if (_f && !_f.done && (_b = _e.return)) _b.call(_e);\n\t }\n\t finally { if (e_2) throw e_2.error; }\n\t }\n\t };\n\t /**\n\t * Registers a callback to be called when the Closeable is closed. optionally with an Error.\n\t */\n\t Deferred.prototype.onClose = function (callback) {\n\t if (this._done) {\n\t callback(this._error);\n\t return;\n\t }\n\t this.onCloseCallbacks.push(callback);\n\t };\n\t return Deferred;\n\t}());\n\tDeferred.Deferred = Deferred$1;\n\t\n\treturn Deferred;\n}\n\nvar Errors = {};\n\nvar hasRequiredErrors;\n\nfunction requireErrors () {\n\tif (hasRequiredErrors) return Errors;\n\thasRequiredErrors = 1;\n\t(function (exports$1) {\n\t\t/*\n\t\t * Copyright 2021-2022 the original author or authors.\n\t\t *\n\t\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t\t * you may not use this file except in compliance with the License.\n\t\t * You may obtain a copy of the License at\n\t\t *\n\t\t * http://www.apache.org/licenses/LICENSE-2.0\n\t\t *\n\t\t * Unless required by applicable law or agreed to in writing, software\n\t\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t\t * See the License for the specific language governing permissions and\n\t\t * limitations under the License.\n\t\t */\n\t\tvar __extends = (Errors && Errors.__extends) || (function () {\n\t\t var extendStatics = function (d, b) {\n\t\t extendStatics = Object.setPrototypeOf ||\n\t\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t\t function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n\t\t return extendStatics(d, b);\n\t\t };\n\t\t return function (d, b) {\n\t\t if (typeof b !== \"function\" && b !== null)\n\t\t throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\t\t extendStatics(d, b);\n\t\t function __() { this.constructor = d; }\n\t\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t\t };\n\t\t})();\n\t\tObject.defineProperty(exports$1, \"__esModule\", { value: true });\n\t\texports$1.ErrorCodes = exports$1.RSocketError = void 0;\n\t\tvar RSocketError = /** @class */ (function (_super) {\n\t\t __extends(RSocketError, _super);\n\t\t function RSocketError(code, message) {\n\t\t var _this = _super.call(this, message) || this;\n\t\t _this.code = code;\n\t\t return _this;\n\t\t }\n\t\t return RSocketError;\n\t\t}(Error));\n\t\texports$1.RSocketError = RSocketError;\n\t\t(function (ErrorCodes) {\n\t\t ErrorCodes[ErrorCodes[\"RESERVED\"] = 0] = \"RESERVED\";\n\t\t ErrorCodes[ErrorCodes[\"INVALID_SETUP\"] = 1] = \"INVALID_SETUP\";\n\t\t ErrorCodes[ErrorCodes[\"UNSUPPORTED_SETUP\"] = 2] = \"UNSUPPORTED_SETUP\";\n\t\t ErrorCodes[ErrorCodes[\"REJECTED_SETUP\"] = 3] = \"REJECTED_SETUP\";\n\t\t ErrorCodes[ErrorCodes[\"REJECTED_RESUME\"] = 4] = \"REJECTED_RESUME\";\n\t\t ErrorCodes[ErrorCodes[\"CONNECTION_CLOSE\"] = 258] = \"CONNECTION_CLOSE\";\n\t\t ErrorCodes[ErrorCodes[\"CONNECTION_ERROR\"] = 257] = \"CONNECTION_ERROR\";\n\t\t ErrorCodes[ErrorCodes[\"APPLICATION_ERROR\"] = 513] = \"APPLICATION_ERROR\";\n\t\t ErrorCodes[ErrorCodes[\"REJECTED\"] = 514] = \"REJECTED\";\n\t\t ErrorCodes[ErrorCodes[\"CANCELED\"] = 515] = \"CANCELED\";\n\t\t ErrorCodes[ErrorCodes[\"INVALID\"] = 516] = \"INVALID\";\n\t\t ErrorCodes[ErrorCodes[\"RESERVED_EXTENSION\"] = 4294967295] = \"RESERVED_EXTENSION\";\n\t\t})(exports$1.ErrorCodes || (exports$1.ErrorCodes = {}));\n\t\t\n\t} (Errors));\n\treturn Errors;\n}\n\nvar RSocket = {};\n\nvar hasRequiredRSocket;\n\nfunction requireRSocket () {\n\tif (hasRequiredRSocket) return RSocket;\n\thasRequiredRSocket = 1;\n\t/*\n\t * Copyright 2021-2022 the original author or authors.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t */\n\tObject.defineProperty(RSocket, \"__esModule\", { value: true });\n\t\n\treturn RSocket;\n}\n\nvar RSocketConnector = {};\n\nvar ClientServerMultiplexerDemultiplexer = {};\n\nvar hasRequiredClientServerMultiplexerDemultiplexer;\n\nfunction requireClientServerMultiplexerDemultiplexer () {\n\tif (hasRequiredClientServerMultiplexerDemultiplexer) return ClientServerMultiplexerDemultiplexer;\n\thasRequiredClientServerMultiplexerDemultiplexer = 1;\n\t(function (exports$1) {\n\t\t/*\n\t\t * Copyright 2021-2022 the original author or authors.\n\t\t *\n\t\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t\t * you may not use this file except in compliance with the License.\n\t\t * You may obtain a copy of the License at\n\t\t *\n\t\t * http://www.apache.org/licenses/LICENSE-2.0\n\t\t *\n\t\t * Unless required by applicable law or agreed to in writing, software\n\t\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t\t * See the License for the specific language governing permissions and\n\t\t * limitations under the License.\n\t\t */\n\t\tvar __extends = (ClientServerMultiplexerDemultiplexer && ClientServerMultiplexerDemultiplexer.__extends) || (function () {\n\t\t var extendStatics = function (d, b) {\n\t\t extendStatics = Object.setPrototypeOf ||\n\t\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t\t function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n\t\t return extendStatics(d, b);\n\t\t };\n\t\t return function (d, b) {\n\t\t if (typeof b !== \"function\" && b !== null)\n\t\t throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\t\t extendStatics(d, b);\n\t\t function __() { this.constructor = d; }\n\t\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t\t };\n\t\t})();\n\t\tvar __awaiter = (ClientServerMultiplexerDemultiplexer && ClientServerMultiplexerDemultiplexer.__awaiter) || function (thisArg, _arguments, P, generator) {\n\t\t function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n\t\t return new (P || (P = Promise))(function (resolve, reject) {\n\t\t function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n\t\t function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n\t\t function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n\t\t step((generator = generator.apply(thisArg, _arguments || [])).next());\n\t\t });\n\t\t};\n\t\tvar __generator = (ClientServerMultiplexerDemultiplexer && ClientServerMultiplexerDemultiplexer.__generator) || function (thisArg, body) {\n\t\t var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n\t\t return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n\t\t function verb(n) { return function (v) { return step([n, v]); }; }\n\t\t function step(op) {\n\t\t if (f) throw new TypeError(\"Generator is already executing.\");\n\t\t while (_) try {\n\t\t if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n\t\t if (y = 0, t) op = [op[0] & 2, t.value];\n\t\t switch (op[0]) {\n\t\t case 0: case 1: t = op; break;\n\t\t case 4: _.label++; return { value: op[1], done: false };\n\t\t case 5: _.label++; y = op[1]; op = [0]; continue;\n\t\t case 7: op = _.ops.pop(); _.trys.pop(); continue;\n\t\t default:\n\t\t if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n\t\t if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n\t\t if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n\t\t if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n\t\t if (t[2]) _.ops.pop();\n\t\t _.trys.pop(); continue;\n\t\t }\n\t\t op = body.call(thisArg, _);\n\t\t } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n\t\t if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n\t\t }\n\t\t};\n\t\tObject.defineProperty(exports$1, \"__esModule\", { value: true });\n\t\texports$1.ResumeOkAwaitingResumableClientServerInputMultiplexerDemultiplexer = exports$1.ResumableClientServerInputMultiplexerDemultiplexer = exports$1.ClientServerInputMultiplexerDemultiplexer = exports$1.StreamIdGenerator = void 0;\n\t\tvar _1 = requireDist$1();\n\t\tvar Deferred_1 = requireDeferred();\n\t\tvar Errors_1 = requireErrors();\n\t\tvar Frames_1 = requireFrames();\n\t\t(function (StreamIdGenerator) {\n\t\t function create(seedId) {\n\t\t return new StreamIdGeneratorImpl(seedId);\n\t\t }\n\t\t StreamIdGenerator.create = create;\n\t\t var StreamIdGeneratorImpl = /** @class */ (function () {\n\t\t function StreamIdGeneratorImpl(currentId) {\n\t\t this.currentId = currentId;\n\t\t }\n\t\t StreamIdGeneratorImpl.prototype.next = function (handler) {\n\t\t var nextId = this.currentId + 2;\n\t\t if (!handler(nextId)) {\n\t\t return;\n\t\t }\n\t\t this.currentId = nextId;\n\t\t };\n\t\t return StreamIdGeneratorImpl;\n\t\t }());\n\t\t})(exports$1.StreamIdGenerator || (exports$1.StreamIdGenerator = {}));\n\t\tvar ClientServerInputMultiplexerDemultiplexer = /** @class */ (function (_super) {\n\t\t __extends(ClientServerInputMultiplexerDemultiplexer, _super);\n\t\t function ClientServerInputMultiplexerDemultiplexer(streamIdSupplier, outbound, closeable) {\n\t\t var _this = _super.call(this) || this;\n\t\t _this.streamIdSupplier = streamIdSupplier;\n\t\t _this.outbound = outbound;\n\t\t _this.closeable = closeable;\n\t\t _this.registry = {};\n\t\t closeable.onClose(_this.close.bind(_this));\n\t\t return _this;\n\t\t }\n\t\t ClientServerInputMultiplexerDemultiplexer.prototype.handle = function (frame) {\n\t\t if (Frames_1.Frame.isConnection(frame)) {\n\t\t if (frame.type === _1.FrameTypes.RESERVED) {\n\t\t // TODO: throw\n\t\t return;\n\t\t }\n\t\t this.connectionFramesHandler.handle(frame);\n\t\t // TODO: Connection Handler\n\t\t }\n\t\t else if (Frames_1.Frame.isRequest(frame)) {\n\t\t if (this.registry[frame.streamId]) {\n\t\t // TODO: Send error and close connection\n\t\t return;\n\t\t }\n\t\t this.requestFramesHandler.handle(frame, this);\n\t\t }\n\t\t else {\n\t\t var handler = this.registry[frame.streamId];\n\t\t if (!handler) {\n\t\t // TODO: add validation\n\t\t return;\n\t\t }\n\t\t handler.handle(frame);\n\t\t }\n\t\t // TODO: add extensions support\n\t\t };\n\t\t ClientServerInputMultiplexerDemultiplexer.prototype.connectionInbound = function (handler) {\n\t\t if (this.connectionFramesHandler) {\n\t\t throw new Error(\"Connection frame handler has already been installed\");\n\t\t }\n\t\t this.connectionFramesHandler = handler;\n\t\t };\n\t\t ClientServerInputMultiplexerDemultiplexer.prototype.handleRequestStream = function (handler) {\n\t\t if (this.requestFramesHandler) {\n\t\t throw new Error(\"Stream handler has already been installed\");\n\t\t }\n\t\t this.requestFramesHandler = handler;\n\t\t };\n\t\t ClientServerInputMultiplexerDemultiplexer.prototype.send = function (frame) {\n\t\t this.outbound.send(frame);\n\t\t };\n\t\t Object.defineProperty(ClientServerInputMultiplexerDemultiplexer.prototype, \"connectionOutbound\", {\n\t\t get: function () {\n\t\t return this;\n\t\t },\n\t\t enumerable: false,\n\t\t configurable: true\n\t\t });\n\t\t ClientServerInputMultiplexerDemultiplexer.prototype.createRequestStream = function (streamHandler) {\n\t\t var _this = this;\n\t\t // handle requester side stream registration\n\t\t if (this.done) {\n\t\t streamHandler.handleReject(new Error(\"Already closed\"));\n\t\t return;\n\t\t }\n\t\t var registry = this.registry;\n\t\t this.streamIdSupplier.next(function (streamId) { return streamHandler.handleReady(streamId, _this); }, Object.keys(registry));\n\t\t };\n\t\t ClientServerInputMultiplexerDemultiplexer.prototype.connect = function (handler) {\n\t\t this.registry[handler.streamId] = handler;\n\t\t };\n\t\t ClientServerInputMultiplexerDemultiplexer.prototype.disconnect = function (stream) {\n\t\t delete this.registry[stream.streamId];\n\t\t };\n\t\t ClientServerInputMultiplexerDemultiplexer.prototype.close = function (error) {\n\t\t if (this.done) {\n\t\t _super.prototype.close.call(this, error);\n\t\t return;\n\t\t }\n\t\t for (var streamId in this.registry) {\n\t\t var stream = this.registry[streamId];\n\t\t stream.close(new Error(\"Closed. \".concat(error ? \"Original cause [\".concat(error, \"].\") : \"\")));\n\t\t }\n\t\t _super.prototype.close.call(this, error);\n\t\t };\n\t\t return ClientServerInputMultiplexerDemultiplexer;\n\t\t}(Deferred_1.Deferred));\n\t\texports$1.ClientServerInputMultiplexerDemultiplexer = ClientServerInputMultiplexerDemultiplexer;\n\t\tvar ResumableClientServerInputMultiplexerDemultiplexer = /** @class */ (function (_super) {\n\t\t __extends(ResumableClientServerInputMultiplexerDemultiplexer, _super);\n\t\t function ResumableClientServerInputMultiplexerDemultiplexer(streamIdSupplier, outbound, closeable, frameStore, token, sessionStoreOrReconnector, sessionTimeout) {\n\t\t var _this = _super.call(this, streamIdSupplier, outbound, new Deferred_1.Deferred()) || this;\n\t\t _this.frameStore = frameStore;\n\t\t _this.token = token;\n\t\t _this.sessionTimeout = sessionTimeout;\n\t\t if (sessionStoreOrReconnector instanceof Function) {\n\t\t _this.reconnector = sessionStoreOrReconnector;\n\t\t }\n\t\t else {\n\t\t _this.sessionStore = sessionStoreOrReconnector;\n\t\t }\n\t\t closeable.onClose(_this.handleConnectionClose.bind(_this));\n\t\t return _this;\n\t\t }\n\t\t ResumableClientServerInputMultiplexerDemultiplexer.prototype.send = function (frame) {\n\t\t if (Frames_1.Frame.isConnection(frame)) {\n\t\t if (frame.type === _1.FrameTypes.KEEPALIVE) {\n\t\t frame.lastReceivedPosition = this.frameStore.lastReceivedFramePosition;\n\t\t }\n\t\t else if (frame.type === _1.FrameTypes.ERROR) {\n\t\t this.outbound.send(frame);\n\t\t if (this.sessionStore) {\n\t\t delete this.sessionStore[this.token];\n\t\t }\n\t\t _super.prototype.close.call(this, new Errors_1.RSocketError(frame.code, frame.message));\n\t\t return;\n\t\t }\n\t\t }\n\t\t else {\n\t\t this.frameStore.store(frame);\n\t\t }\n\t\t this.outbound.send(frame);\n\t\t };\n\t\t ResumableClientServerInputMultiplexerDemultiplexer.prototype.handle = function (frame) {\n\t\t if (Frames_1.Frame.isConnection(frame)) {\n\t\t if (frame.type === _1.FrameTypes.KEEPALIVE) {\n\t\t try {\n\t\t this.frameStore.dropTo(frame.lastReceivedPosition);\n\t\t }\n\t\t catch (re) {\n\t\t this.outbound.send({\n\t\t type: _1.FrameTypes.ERROR,\n\t\t streamId: 0,\n\t\t flags: _1.Flags.NONE,\n\t\t code: re.code,\n\t\t message: re.message,\n\t\t });\n\t\t this.close(re);\n\t\t }\n\t\t }\n\t\t else if (frame.type === _1.FrameTypes.ERROR) {\n\t\t _super.prototype.handle.call(this, frame);\n\t\t if (this.sessionStore) {\n\t\t delete this.sessionStore[this.token];\n\t\t }\n\t\t _super.prototype.close.call(this, new Errors_1.RSocketError(frame.code, frame.message));\n\t\t return;\n\t\t }\n\t\t }\n\t\t else {\n\t\t this.frameStore.record(frame);\n\t\t }\n\t\t _super.prototype.handle.call(this, frame);\n\t\t };\n\t\t ResumableClientServerInputMultiplexerDemultiplexer.prototype.resume = function (frame, outbound, closeable) {\n\t\t this.outbound = outbound;\n\t\t switch (frame.type) {\n\t\t case _1.FrameTypes.RESUME: {\n\t\t clearTimeout(this.timeoutId);\n\t\t if (this.frameStore.lastReceivedFramePosition < frame.clientPosition) {\n\t\t var e = new Errors_1.RSocketError(_1.ErrorCodes.REJECTED_RESUME, \"Impossible to resume since first available client frame position is greater than last received server frame position\");\n\t\t this.outbound.send({\n\t\t type: _1.FrameTypes.ERROR,\n\t\t streamId: 0,\n\t\t flags: _1.Flags.NONE,\n\t\t code: e.code,\n\t\t message: e.message,\n\t\t });\n\t\t this.close(e);\n\t\t return;\n\t\t }\n\t\t try {\n\t\t this.frameStore.dropTo(frame.serverPosition);\n\t\t }\n\t\t catch (re) {\n\t\t this.outbound.send({\n\t\t type: _1.FrameTypes.ERROR,\n\t\t streamId: 0,\n\t\t flags: _1.Flags.NONE,\n\t\t code: re.code,\n\t\t message: re.message,\n\t\t });\n\t\t this.close(re);\n\t\t return;\n\t\t }\n\t\t this.outbound.send({\n\t\t type: _1.FrameTypes.RESUME_OK,\n\t\t streamId: 0,\n\t\t flags: _1.Flags.NONE,\n\t\t clientPosition: this.frameStore.lastReceivedFramePosition,\n\t\t });\n\t\t break;\n\t\t }\n\t\t case _1.FrameTypes.RESUME_OK: {\n\t\t try {\n\t\t this.frameStore.dropTo(frame.clientPosition);\n\t\t }\n\t\t catch (re) {\n\t\t this.outbound.send({\n\t\t type: _1.FrameTypes.ERROR,\n\t\t streamId: 0,\n\t\t flags: _1.Flags.NONE,\n\t\t code: re.code,\n\t\t message: re.message,\n\t\t });\n\t\t this.close(re);\n\t\t }\n\t\t break;\n\t\t }\n\t\t }\n\t\t this.frameStore.drain(this.outbound.send.bind(this.outbound));\n\t\t closeable.onClose(this.handleConnectionClose.bind(this));\n\t\t this.connectionFramesHandler.resume();\n\t\t };\n\t\t ResumableClientServerInputMultiplexerDemultiplexer.prototype.handleConnectionClose = function (_error) {\n\t\t return __awaiter(this, void 0, void 0, function () {\n\t\t var e_1;\n\t\t return __generator(this, function (_a) {\n\t\t switch (_a.label) {\n\t\t case 0:\n\t\t this.connectionFramesHandler.pause();\n\t\t if (!this.reconnector) return [3 /*break*/, 5];\n\t\t _a.label = 1;\n\t\t case 1:\n\t\t _a.trys.push([1, 3, , 4]);\n\t\t return [4 /*yield*/, this.reconnector(this, this.frameStore)];\n\t\t case 2:\n\t\t _a.sent();\n\t\t return [3 /*break*/, 4];\n\t\t case 3:\n\t\t e_1 = _a.sent();\n\t\t this.close(e_1);\n\t\t return [3 /*break*/, 4];\n\t\t case 4: return [3 /*break*/, 6];\n\t\t case 5:\n\t\t this.timeoutId = setTimeout(this.close.bind(this), this.sessionTimeout);\n\t\t _a.label = 6;\n\t\t case 6: return [2 /*return*/];\n\t\t }\n\t\t });\n\t\t });\n\t\t };\n\t\t return ResumableClientServerInputMultiplexerDemultiplexer;\n\t\t}(ClientServerInputMultiplexerDemultiplexer));\n\t\texports$1.ResumableClientServerInputMultiplexerDemultiplexer = ResumableClientServerInputMultiplexerDemultiplexer;\n\t\tvar ResumeOkAwaitingResumableClientServerInputMultiplexerDemultiplexer = /** @class */ (function () {\n\t\t function ResumeOkAwaitingResumableClientServerInputMultiplexerDemultiplexer(outbound, closeable, delegate) {\n\t\t this.outbound = outbound;\n\t\t this.closeable = closeable;\n\t\t this.delegate = delegate;\n\t\t this.resumed = false;\n\t\t }\n\t\t ResumeOkAwaitingResumableClientServerInputMultiplexerDemultiplexer.prototype.close = function () {\n\t\t this.delegate.close();\n\t\t };\n\t\t ResumeOkAwaitingResumableClientServerInputMultiplexerDemultiplexer.prototype.onClose = function (callback) {\n\t\t this.delegate.onClose(callback);\n\t\t };\n\t\t Object.defineProperty(ResumeOkAwaitingResumableClientServerInputMultiplexerDemultiplexer.prototype, \"connectionOutbound\", {\n\t\t get: function () {\n\t\t return this.delegate.connectionOutbound;\n\t\t },\n\t\t enumerable: false,\n\t\t configurable: true\n\t\t });\n\t\t ResumeOkAwaitingResumableClientServerInputMultiplexerDemultiplexer.prototype.createRequestStream = function (streamHandler) {\n\t\t this.delegate.createRequestStream(streamHandler);\n\t\t };\n\t\t ResumeOkAwaitingResumableClientServerInputMultiplexerDemultiplexer.prototype.connectionInbound = function (handler) {\n\t\t this.delegate.connectionInbound(handler);\n\t\t };\n\t\t ResumeOkAwaitingResumableClientServerInputMultiplexerDemultiplexer.prototype.handleRequestStream = function (handler) {\n\t\t this.delegate.handleRequestStream(handler);\n\t\t };\n\t\t ResumeOkAwaitingResumableClientServerInputMultiplexerDemultiplexer.prototype.handle = function (frame) {\n\t\t var _this = this;\n\t\t if (!this.resumed) {\n\t\t if (frame.type === _1.FrameTypes.RESUME_OK) {\n\t\t this.resumed = true;\n\t\t this.delegate.resume(frame, this.outbound, this.closeable);\n\t\t return;\n\t\t }\n\t\t else {\n\t\t this.outbound.send({\n\t\t type: _1.FrameTypes.ERROR,\n\t\t streamId: 0,\n\t\t code: _1.ErrorCodes.CONNECTION_ERROR,\n\t\t message: \"Incomplete RESUME handshake. Unexpected frame \".concat(frame.type, \" received\"),\n\t\t flags: _1.Flags.NONE,\n\t\t });\n\t\t this.closeable.close();\n\t\t this.closeable.onClose(function () {\n\t\t return _this.delegate.close(new Errors_1.RSocketError(_1.ErrorCodes.CONNECTION_ERROR, \"Incomplete RESUME handshake. Unexpected frame \".concat(frame.type, \" received\")));\n\t\t });\n\t\t }\n\t\t return;\n\t\t }\n\t\t this.delegate.handle(frame);\n\t\t };\n\t\t return ResumeOkAwaitingResumableClientServerInputMultiplexerDemultiplexer;\n\t\t}());\n\t\texports$1.ResumeOkAwaitingResumableClientServerInputMultiplexerDemultiplexer = ResumeOkAwaitingResumableClientServerInputMultiplexerDemultiplexer;\n\t\t\n\t} (ClientServerMultiplexerDemultiplexer));\n\treturn ClientServerMultiplexerDemultiplexer;\n}\n\nvar RSocketSupport = {};\n\nvar RequestChannelStream = {};\n\nvar Fragmenter = {};\n\nvar hasRequiredFragmenter;\n\nfunction requireFragmenter () {\n\tif (hasRequiredFragmenter) return Fragmenter;\n\thasRequiredFragmenter = 1;\n\t/*\n\t * Copyright 2021-2022 the original author or authors.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t */\n\tvar __generator = (Fragmenter && Fragmenter.__generator) || function (thisArg, body) {\n\t var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n\t return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n\t function verb(n) { return function (v) { return step([n, v]); }; }\n\t function step(op) {\n\t if (f) throw new TypeError(\"Generator is already executing.\");\n\t while (_) try {\n\t if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n\t if (y = 0, t) op = [op[0] & 2, t.value];\n\t switch (op[0]) {\n\t case 0: case 1: t = op; break;\n\t case 4: _.label++; return { value: op[1], done: false };\n\t case 5: _.label++; y = op[1]; op = [0]; continue;\n\t case 7: op = _.ops.pop(); _.trys.pop(); continue;\n\t default:\n\t if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n\t if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n\t if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n\t if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n\t if (t[2]) _.ops.pop();\n\t _.trys.pop(); continue;\n\t }\n\t op = body.call(thisArg, _);\n\t } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n\t if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n\t }\n\t};\n\tObject.defineProperty(Fragmenter, \"__esModule\", { value: true });\n\tFragmenter.fragmentWithRequestN = Fragmenter.fragment = Fragmenter.isFragmentable = void 0;\n\tvar Frames_1 = requireFrames();\n\tfunction isFragmentable(payload, fragmentSize, frameType) {\n\t if (fragmentSize === 0) {\n\t return false;\n\t }\n\t return (payload.data.byteLength +\n\t (payload.metadata ? payload.metadata.byteLength + Frames_1.Lengths.METADATA : 0) +\n\t (frameType == Frames_1.FrameTypes.REQUEST_STREAM ||\n\t frameType == Frames_1.FrameTypes.REQUEST_CHANNEL\n\t ? Frames_1.Lengths.REQUEST\n\t : 0) >\n\t fragmentSize);\n\t}\n\tFragmenter.isFragmentable = isFragmentable;\n\tfunction fragment(streamId, payload, fragmentSize, frameType, isComplete) {\n\t var dataLength, firstFrame, remaining, metadata, metadataLength, metadataPosition, nextMetadataPosition, nextMetadataPosition, dataPosition, data, nextDataPosition, nextDataPosition;\n\t var _a, _b;\n\t if (isComplete === void 0) { isComplete = false; }\n\t return __generator(this, function (_c) {\n\t switch (_c.label) {\n\t case 0:\n\t dataLength = (_b = (_a = payload.data) === null || _a === void 0 ? void 0 : _a.byteLength) !== null && _b !== void 0 ? _b : 0;\n\t firstFrame = frameType !== Frames_1.FrameTypes.PAYLOAD;\n\t remaining = fragmentSize;\n\t if (!payload.metadata) return [3 /*break*/, 6];\n\t metadataLength = payload.metadata.byteLength;\n\t if (!(metadataLength === 0)) return [3 /*break*/, 1];\n\t remaining -= Frames_1.Lengths.METADATA;\n\t metadata = bufferExports.Buffer.allocUnsafe(0);\n\t return [3 /*break*/, 6];\n\t case 1:\n\t metadataPosition = 0;\n\t if (!firstFrame) return [3 /*break*/, 3];\n\t remaining -= Frames_1.Lengths.METADATA;\n\t nextMetadataPosition = Math.min(metadataLength, metadataPosition + remaining);\n\t metadata = payload.metadata.slice(metadataPosition, nextMetadataPosition);\n\t remaining -= metadata.byteLength;\n\t metadataPosition = nextMetadataPosition;\n\t if (!(remaining === 0)) return [3 /*break*/, 3];\n\t firstFrame = false;\n\t return [4 /*yield*/, {\n\t type: frameType,\n\t flags: Frames_1.Flags.FOLLOWS | Frames_1.Flags.METADATA,\n\t data: undefined,\n\t metadata: metadata,\n\t streamId: streamId,\n\t }];\n\t case 2:\n\t _c.sent();\n\t metadata = undefined;\n\t remaining = fragmentSize;\n\t _c.label = 3;\n\t case 3:\n\t if (!(metadataPosition < metadataLength)) return [3 /*break*/, 6];\n\t remaining -= Frames_1.Lengths.METADATA;\n\t nextMetadataPosition = Math.min(metadataLength, metadataPosition + remaining);\n\t metadata = payload.metadata.slice(metadataPosition, nextMetadataPosition);\n\t remaining -= metadata.byteLength;\n\t metadataPosition = nextMetadataPosition;\n\t if (!(remaining === 0 || dataLength === 0)) return [3 /*break*/, 5];\n\t return [4 /*yield*/, {\n\t type: Frames_1.FrameTypes.PAYLOAD,\n\t flags: Frames_1.Flags.NEXT |\n\t Frames_1.Flags.METADATA |\n\t (metadataPosition === metadataLength &&\n\t isComplete &&\n\t dataLength === 0\n\t ? Frames_1.Flags.COMPLETE\n\t : Frames_1.Flags.FOLLOWS),\n\t data: undefined,\n\t metadata: metadata,\n\t streamId: streamId,\n\t }];\n\t case 4:\n\t _c.sent();\n\t metadata = undefined;\n\t remaining = fragmentSize;\n\t _c.label = 5;\n\t case 5: return [3 /*break*/, 3];\n\t case 6:\n\t dataPosition = 0;\n\t if (!firstFrame) return [3 /*break*/, 8];\n\t nextDataPosition = Math.min(dataLength, dataPosition + remaining);\n\t data = payload.data.slice(dataPosition, nextDataPosition);\n\t remaining -= data.byteLength;\n\t dataPosition = nextDataPosition;\n\t return [4 /*yield*/, {\n\t type: frameType,\n\t flags: Frames_1.Flags.FOLLOWS | (metadata ? Frames_1.Flags.METADATA : Frames_1.Flags.NONE),\n\t data: data,\n\t metadata: metadata,\n\t streamId: streamId,\n\t }];\n\t case 7:\n\t _c.sent();\n\t metadata = undefined;\n\t data = undefined;\n\t remaining = fragmentSize;\n\t _c.label = 8;\n\t case 8:\n\t if (!(dataPosition < dataLength)) return [3 /*break*/, 10];\n\t nextDataPosition = Math.min(dataLength, dataPosition + remaining);\n\t data = payload.data.slice(dataPosition, nextDataPosition);\n\t remaining -= data.byteLength;\n\t dataPosition = nextDataPosition;\n\t return [4 /*yield*/, {\n\t type: Frames_1.FrameTypes.PAYLOAD,\n\t flags: dataPosition === dataLength\n\t ? (isComplete ? Frames_1.Flags.COMPLETE : Frames_1.Flags.NONE) |\n\t Frames_1.Flags.NEXT |\n\t (metadata ? Frames_1.Flags.METADATA : 0)\n\t : Frames_1.Flags.FOLLOWS | Frames_1.Flags.NEXT | (metadata ? Frames_1.Flags.METADATA : 0),\n\t data: data,\n\t metadata: metadata,\n\t streamId: streamId,\n\t }];\n\t case 9:\n\t _c.sent();\n\t metadata = undefined;\n\t data = undefined;\n\t remaining = fragmentSize;\n\t return [3 /*break*/, 8];\n\t case 10: return [2 /*return*/];\n\t }\n\t });\n\t}\n\tFragmenter.fragment = fragment;\n\tfunction fragmentWithRequestN(streamId, payload, fragmentSize, frameType, requestN, isComplete) {\n\t var dataLength, firstFrame, remaining, metadata, metadataLength, metadataPosition, nextMetadataPosition, nextMetadataPosition, dataPosition, data, nextDataPosition, nextDataPosition;\n\t var _a, _b;\n\t if (isComplete === void 0) { isComplete = false; }\n\t return __generator(this, function (_c) {\n\t switch (_c.label) {\n\t case 0:\n\t dataLength = (_b = (_a = payload.data) === null || _a === void 0 ? void 0 : _a.byteLength) !== null && _b !== void 0 ? _b : 0;\n\t firstFrame = true;\n\t remaining = fragmentSize;\n\t if (!payload.metadata) return [3 /*break*/, 6];\n\t metadataLength = payload.metadata.byteLength;\n\t if (!(metadataLength === 0)) return [3 /*break*/, 1];\n\t remaining -= Frames_1.Lengths.METADATA;\n\t metadata = bufferExports.Buffer.allocUnsafe(0);\n\t return [3 /*break*/, 6];\n\t case 1:\n\t metadataPosition = 0;\n\t if (!firstFrame) return [3 /*break*/, 3];\n\t remaining -= Frames_1.Lengths.METADATA + Frames_1.Lengths.REQUEST;\n\t nextMetadataPosition = Math.min(metadataLength, metadataPosition + remaining);\n\t metadata = payload.metadata.slice(metadataPosition, nextMetadataPosition);\n\t remaining -= metadata.byteLength;\n\t metadataPosition = nextMetadataPosition;\n\t if (!(remaining === 0)) return [3 /*break*/, 3];\n\t firstFrame = false;\n\t return [4 /*yield*/, {\n\t type: frameType,\n\t flags: Frames_1.Flags.FOLLOWS | Frames_1.Flags.METADATA,\n\t data: undefined,\n\t requestN: requestN,\n\t metadata: metadata,\n\t streamId: streamId,\n\t }];\n\t case 2:\n\t _c.sent();\n\t metadata = undefined;\n\t remaining = fragmentSize;\n\t _c.label = 3;\n\t case 3:\n\t if (!(metadataPosition < metadataLength)) return [3 /*break*/, 6];\n\t remaining -= Frames_1.Lengths.METADATA;\n\t nextMetadataPosition = Math.min(metadataLength, metadataPosition + remaining);\n\t metadata = payload.metadata.slice(metadataPosition, nextMetadataPosition);\n\t remaining -= metadata.byteLength;\n\t metadataPosition = nextMetadataPosition;\n\t if (!(remaining === 0 || dataLength === 0)) return [3 /*break*/, 5];\n\t return [4 /*yield*/, {\n\t type: Frames_1.FrameTypes.PAYLOAD,\n\t flags: Frames_1.Flags.NEXT |\n\t Frames_1.Flags.METADATA |\n\t (metadataPosition === metadataLength &&\n\t isComplete &&\n\t dataLength === 0\n\t ? Frames_1.Flags.COMPLETE\n\t : Frames_1.Flags.FOLLOWS),\n\t data: undefined,\n\t metadata: metadata,\n\t streamId: streamId,\n\t }];\n\t case 4:\n\t _c.sent();\n\t metadata = undefined;\n\t remaining = fragmentSize;\n\t _c.label = 5;\n\t case 5: return [3 /*break*/, 3];\n\t case 6:\n\t dataPosition = 0;\n\t if (!firstFrame) return [3 /*break*/, 8];\n\t remaining -= Frames_1.Lengths.REQUEST;\n\t nextDataPosition = Math.min(dataLength, dataPosition + remaining);\n\t data = payload.data.slice(dataPosition, nextDataPosition);\n\t remaining -= data.byteLength;\n\t dataPosition = nextDataPosition;\n\t return [4 /*yield*/, {\n\t type: frameType,\n\t flags: Frames_1.Flags.FOLLOWS | (metadata ? Frames_1.Flags.METADATA : Frames_1.Flags.NONE),\n\t data: data,\n\t requestN: requestN,\n\t metadata: metadata,\n\t streamId: streamId,\n\t }];\n\t case 7:\n\t _c.sent();\n\t metadata = undefined;\n\t data = undefined;\n\t remaining = fragmentSize;\n\t _c.label = 8;\n\t case 8:\n\t if (!(dataPosition < dataLength)) return [3 /*break*/, 10];\n\t nextDataPosition = Math.min(dataLength, dataPosition + remaining);\n\t data = payload.data.slice(dataPosition, nextDataPosition);\n\t remaining -= data.byteLength;\n\t dataPosition = nextDataPosition;\n\t return [4 /*yield*/, {\n\t type: Frames_1.FrameTypes.PAYLOAD,\n\t flags: dataPosition === dataLength\n\t ? (isComplete ? Frames_1.Flags.COMPLETE : Frames_1.Flags.NONE) |\n\t Frames_1.Flags.NEXT |\n\t (metadata ? Frames_1.Flags.METADATA : 0)\n\t : Frames_1.Flags.FOLLOWS | Frames_1.Flags.NEXT | (metadata ? Frames_1.Flags.METADATA : 0),\n\t data: data,\n\t metadata: metadata,\n\t streamId: streamId,\n\t }];\n\t case 9:\n\t _c.sent();\n\t metadata = undefined;\n\t data = undefined;\n\t remaining = fragmentSize;\n\t return [3 /*break*/, 8];\n\t case 10: return [2 /*return*/];\n\t }\n\t });\n\t}\n\tFragmenter.fragmentWithRequestN = fragmentWithRequestN;\n\t\n\treturn Fragmenter;\n}\n\nvar Reassembler = {};\n\nvar hasRequiredReassembler;\n\nfunction requireReassembler () {\n\tif (hasRequiredReassembler) return Reassembler;\n\thasRequiredReassembler = 1;\n\t/*\n\t * Copyright 2021-2022 the original author or authors.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t */\n\tObject.defineProperty(Reassembler, \"__esModule\", { value: true });\n\tReassembler.cancel = Reassembler.reassemble = Reassembler.add = void 0;\n\tfunction add(holder, dataFragment, metadataFragment) {\n\t if (!holder.hasFragments) {\n\t holder.hasFragments = true;\n\t holder.data = dataFragment;\n\t if (metadataFragment) {\n\t holder.metadata = metadataFragment;\n\t }\n\t return true;\n\t }\n\t // TODO: add validation\n\t holder.data = holder.data\n\t ? bufferExports.Buffer.concat([holder.data, dataFragment])\n\t : dataFragment;\n\t if (holder.metadata && metadataFragment) {\n\t holder.metadata = bufferExports.Buffer.concat([holder.metadata, metadataFragment]);\n\t }\n\t return true;\n\t}\n\tReassembler.add = add;\n\tfunction reassemble(holder, dataFragment, metadataFragment) {\n\t // TODO: add validation\n\t holder.hasFragments = false;\n\t var data = holder.data\n\t ? bufferExports.Buffer.concat([holder.data, dataFragment])\n\t : dataFragment;\n\t holder.data = undefined;\n\t if (holder.metadata) {\n\t var metadata = metadataFragment\n\t ? bufferExports.Buffer.concat([holder.metadata, metadataFragment])\n\t : holder.metadata;\n\t holder.metadata = undefined;\n\t return {\n\t data: data,\n\t metadata: metadata,\n\t };\n\t }\n\t return {\n\t data: data,\n\t };\n\t}\n\tReassembler.reassemble = reassemble;\n\tfunction cancel(holder) {\n\t holder.hasFragments = false;\n\t holder.data = undefined;\n\t holder.metadata = undefined;\n\t}\n\tReassembler.cancel = cancel;\n\t\n\treturn Reassembler;\n}\n\nvar hasRequiredRequestChannelStream;\n\nfunction requireRequestChannelStream () {\n\tif (hasRequiredRequestChannelStream) return RequestChannelStream;\n\thasRequiredRequestChannelStream = 1;\n\t/*\n\t * Copyright 2021-2022 the original author or authors.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t */\n\tvar __createBinding = (RequestChannelStream && RequestChannelStream.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n\t if (k2 === undefined) k2 = k;\n\t Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n\t}) : (function(o, m, k, k2) {\n\t if (k2 === undefined) k2 = k;\n\t o[k2] = m[k];\n\t}));\n\tvar __setModuleDefault = (RequestChannelStream && RequestChannelStream.__setModuleDefault) || (Object.create ? (function(o, v) {\n\t Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n\t}) : function(o, v) {\n\t o[\"default\"] = v;\n\t});\n\tvar __importStar = (RequestChannelStream && RequestChannelStream.__importStar) || function (mod) {\n\t if (mod && mod.__esModule) return mod;\n\t var result = {};\n\t if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n\t __setModuleDefault(result, mod);\n\t return result;\n\t};\n\tvar __values = (RequestChannelStream && RequestChannelStream.__values) || function(o) {\n\t var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n\t if (m) return m.call(o);\n\t if (o && typeof o.length === \"number\") return {\n\t next: function () {\n\t if (o && i >= o.length) o = void 0;\n\t return { value: o && o[i++], done: !o };\n\t }\n\t };\n\t throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n\t};\n\tObject.defineProperty(RequestChannelStream, \"__esModule\", { value: true });\n\tRequestChannelStream.RequestChannelResponderStream = RequestChannelStream.RequestChannelRequesterStream = void 0;\n\tvar Errors_1 = requireErrors();\n\tvar Fragmenter_1 = requireFragmenter();\n\tvar Frames_1 = requireFrames();\n\tvar Reassembler = __importStar(requireReassembler());\n\tvar RequestChannelRequesterStream = /** @class */ (function () {\n\t function RequestChannelRequesterStream(payload, isComplete, receiver, fragmentSize, initialRequestN, leaseManager) {\n\t this.payload = payload;\n\t this.isComplete = isComplete;\n\t this.receiver = receiver;\n\t this.fragmentSize = fragmentSize;\n\t this.initialRequestN = initialRequestN;\n\t this.leaseManager = leaseManager;\n\t this.streamType = Frames_1.FrameTypes.REQUEST_CHANNEL;\n\t // TODO: add payload size validation\n\t }\n\t RequestChannelRequesterStream.prototype.handleReady = function (streamId, stream) {\n\t var e_1, _a;\n\t if (this.outboundDone) {\n\t return false;\n\t }\n\t this.streamId = streamId;\n\t this.stream = stream;\n\t stream.connect(this);\n\t var isCompleted = this.isComplete;\n\t if (isCompleted) {\n\t this.outboundDone = isCompleted;\n\t }\n\t if ((0, Fragmenter_1.isFragmentable)(this.payload, this.fragmentSize, Frames_1.FrameTypes.REQUEST_CHANNEL)) {\n\t try {\n\t for (var _b = __values((0, Fragmenter_1.fragmentWithRequestN)(streamId, this.payload, this.fragmentSize, Frames_1.FrameTypes.REQUEST_CHANNEL, this.initialRequestN, isCompleted)), _c = _b.next(); !_c.done; _c = _b.next()) {\n\t var frame = _c.value;\n\t this.stream.send(frame);\n\t }\n\t }\n\t catch (e_1_1) { e_1 = { error: e_1_1 }; }\n\t finally {\n\t try {\n\t if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n\t }\n\t finally { if (e_1) throw e_1.error; }\n\t }\n\t }\n\t else {\n\t this.stream.send({\n\t type: Frames_1.FrameTypes.REQUEST_CHANNEL,\n\t data: this.payload.data,\n\t metadata: this.payload.metadata,\n\t requestN: this.initialRequestN,\n\t flags: (this.payload.metadata !== undefined ? Frames_1.Flags.METADATA : Frames_1.Flags.NONE) |\n\t (isCompleted ? Frames_1.Flags.COMPLETE : Frames_1.Flags.NONE),\n\t streamId: streamId,\n\t });\n\t }\n\t if (this.hasExtension) {\n\t this.stream.send({\n\t type: Frames_1.FrameTypes.EXT,\n\t streamId: streamId,\n\t extendedContent: this.extendedContent,\n\t extendedType: this.extendedType,\n\t flags: this.flags,\n\t });\n\t }\n\t return true;\n\t };\n\t RequestChannelRequesterStream.prototype.handleReject = function (error) {\n\t if (this.inboundDone) {\n\t return;\n\t }\n\t this.inboundDone = true;\n\t this.outboundDone = true;\n\t this.receiver.onError(error);\n\t };\n\t RequestChannelRequesterStream.prototype.handle = function (frame) {\n\t var errorMessage;\n\t var frameType = frame.type;\n\t switch (frameType) {\n\t case Frames_1.FrameTypes.PAYLOAD: {\n\t var hasComplete = Frames_1.Flags.hasComplete(frame.flags);\n\t var hasNext = Frames_1.Flags.hasNext(frame.flags);\n\t if (hasComplete || !Frames_1.Flags.hasFollows(frame.flags)) {\n\t if (hasComplete) {\n\t this.inboundDone = true;\n\t if (this.outboundDone) {\n\t this.stream.disconnect(this);\n\t }\n\t if (!hasNext) {\n\t // TODO: add validation no frame in reassembly\n\t this.receiver.onComplete();\n\t return;\n\t }\n\t }\n\t var payload = this.hasFragments\n\t ? Reassembler.reassemble(this, frame.data, frame.metadata)\n\t : {\n\t data: frame.data,\n\t metadata: frame.metadata,\n\t };\n\t this.receiver.onNext(payload, hasComplete);\n\t return;\n\t }\n\t if (Reassembler.add(this, frame.data, frame.metadata)) {\n\t return;\n\t }\n\t errorMessage = \"Unexpected frame size\";\n\t break;\n\t }\n\t case Frames_1.FrameTypes.CANCEL: {\n\t if (this.outboundDone) {\n\t return;\n\t }\n\t this.outboundDone = true;\n\t if (this.inboundDone) {\n\t this.stream.disconnect(this);\n\t }\n\t this.receiver.cancel();\n\t return;\n\t }\n\t case Frames_1.FrameTypes.REQUEST_N: {\n\t if (this.outboundDone) {\n\t return;\n\t }\n\t if (this.hasFragments) {\n\t errorMessage = \"Unexpected frame type [\".concat(frameType, \"] during reassembly\");\n\t break;\n\t }\n\t this.receiver.request(frame.requestN);\n\t return;\n\t }\n\t case Frames_1.FrameTypes.ERROR: {\n\t var outboundDone = this.outboundDone;\n\t this.inboundDone = true;\n\t this.outboundDone = true;\n\t this.stream.disconnect(this);\n\t Reassembler.cancel(this);\n\t if (!outboundDone) {\n\t this.receiver.cancel();\n\t }\n\t this.receiver.onError(new Errors_1.RSocketError(frame.code, frame.message));\n\t return;\n\t }\n\t case Frames_1.FrameTypes.EXT:\n\t this.receiver.onExtension(frame.extendedType, frame.extendedContent, Frames_1.Flags.hasIgnore(frame.flags));\n\t return;\n\t default: {\n\t errorMessage = \"Unexpected frame type [\".concat(frameType, \"]\");\n\t }\n\t }\n\t this.close(new Errors_1.RSocketError(Errors_1.ErrorCodes.CANCELED, errorMessage));\n\t this.stream.send({\n\t type: Frames_1.FrameTypes.CANCEL,\n\t streamId: this.streamId,\n\t flags: Frames_1.Flags.NONE,\n\t });\n\t this.stream.disconnect(this);\n\t };\n\t RequestChannelRequesterStream.prototype.request = function (n) {\n\t if (this.inboundDone) {\n\t return;\n\t }\n\t if (!this.streamId) {\n\t this.initialRequestN += n;\n\t return;\n\t }\n\t this.stream.send({\n\t type: Frames_1.FrameTypes.REQUEST_N,\n\t flags: Frames_1.Flags.NONE,\n\t requestN: n,\n\t streamId: this.streamId,\n\t });\n\t };\n\t RequestChannelRequesterStream.prototype.cancel = function () {\n\t var _a;\n\t var inboundDone = this.inboundDone;\n\t var outboundDone = this.outboundDone;\n\t if (inboundDone && outboundDone) {\n\t return;\n\t }\n\t this.inboundDone = true;\n\t this.outboundDone = true;\n\t if (!outboundDone) {\n\t this.receiver.cancel();\n\t }\n\t if (!this.streamId) {\n\t (_a = this.leaseManager) === null || _a === void 0 ? void 0 : _a.cancelRequest(this);\n\t return;\n\t }\n\t this.stream.send({\n\t type: inboundDone ? Frames_1.FrameTypes.ERROR : Frames_1.FrameTypes.CANCEL,\n\t flags: Frames_1.Flags.NONE,\n\t streamId: this.streamId,\n\t code: Errors_1.ErrorCodes.CANCELED,\n\t message: \"Cancelled\",\n\t });\n\t this.stream.disconnect(this);\n\t Reassembler.cancel(this);\n\t };\n\t RequestChannelRequesterStream.prototype.onNext = function (payload, isComplete) {\n\t var e_2, _a;\n\t if (this.outboundDone) {\n\t return;\n\t }\n\t if (isComplete) {\n\t this.outboundDone = true;\n\t if (this.inboundDone) {\n\t this.stream.disconnect(this);\n\t }\n\t }\n\t if ((0, Fragmenter_1.isFragmentable)(payload, this.fragmentSize, Frames_1.FrameTypes.PAYLOAD)) {\n\t try {\n\t for (var _b = __values((0, Fragmenter_1.fragment)(this.streamId, payload, this.fragmentSize, Frames_1.FrameTypes.PAYLOAD, isComplete)), _c = _b.next(); !_c.done; _c = _b.next()) {\n\t var frame = _c.value;\n\t this.stream.send(frame);\n\t }\n\t }\n\t catch (e_2_1) { e_2 = { error: e_2_1 }; }\n\t finally {\n\t try {\n\t if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n\t }\n\t finally { if (e_2) throw e_2.error; }\n\t }\n\t }\n\t else {\n\t this.stream.send({\n\t type: Frames_1.FrameTypes.PAYLOAD,\n\t streamId: this.streamId,\n\t flags: Frames_1.Flags.NEXT |\n\t (payload.metadata ? Frames_1.Flags.METADATA : Frames_1.Flags.NONE) |\n\t (isComplete ? Frames_1.Flags.COMPLETE : Frames_1.Flags.NONE),\n\t data: payload.data,\n\t metadata: payload.metadata,\n\t });\n\t }\n\t };\n\t RequestChannelRequesterStream.prototype.onComplete = function () {\n\t if (!this.streamId) {\n\t this.isComplete = true;\n\t return;\n\t }\n\t if (this.outboundDone) {\n\t return;\n\t }\n\t this.outboundDone = true;\n\t this.stream.send({\n\t type: Frames_1.FrameTypes.PAYLOAD,\n\t streamId: this.streamId,\n\t flags: Frames_1.Flags.COMPLETE,\n\t data: null,\n\t metadata: null,\n\t });\n\t if (this.inboundDone) {\n\t this.stream.disconnect(this);\n\t }\n\t };\n\t RequestChannelRequesterStream.prototype.onError = function (error) {\n\t if (this.outboundDone) {\n\t return;\n\t }\n\t var inboundDone = this.inboundDone;\n\t this.outboundDone = true;\n\t this.inboundDone = true;\n\t this.stream.send({\n\t type: Frames_1.FrameTypes.ERROR,\n\t streamId: this.streamId,\n\t flags: Frames_1.Flags.NONE,\n\t code: error instanceof Errors_1.RSocketError\n\t ? error.code\n\t : Errors_1.ErrorCodes.APPLICATION_ERROR,\n\t message: error.message,\n\t });\n\t this.stream.disconnect(this);\n\t if (!inboundDone) {\n\t this.receiver.onError(error);\n\t }\n\t };\n\t RequestChannelRequesterStream.prototype.onExtension = function (extendedType, content, canBeIgnored) {\n\t if (this.outboundDone) {\n\t return;\n\t }\n\t if (!this.streamId) {\n\t this.hasExtension = true;\n\t this.extendedType = extendedType;\n\t this.extendedContent = content;\n\t this.flags = canBeIgnored ? Frames_1.Flags.IGNORE : Frames_1.Flags.NONE;\n\t return;\n\t }\n\t this.stream.send({\n\t streamId: this.streamId,\n\t type: Frames_1.FrameTypes.EXT,\n\t extendedType: extendedType,\n\t extendedContent: content,\n\t flags: canBeIgnored ? Frames_1.Flags.IGNORE : Frames_1.Flags.NONE,\n\t });\n\t };\n\t RequestChannelRequesterStream.prototype.close = function (error) {\n\t if (this.inboundDone && this.outboundDone) {\n\t return;\n\t }\n\t var inboundDone = this.inboundDone;\n\t var outboundDone = this.outboundDone;\n\t this.inboundDone = true;\n\t this.outboundDone = true;\n\t Reassembler.cancel(this);\n\t if (!outboundDone) {\n\t this.receiver.cancel();\n\t }\n\t if (!inboundDone) {\n\t if (error) {\n\t this.receiver.onError(error);\n\t }\n\t else {\n\t this.receiver.onComplete();\n\t }\n\t }\n\t };\n\t return RequestChannelRequesterStream;\n\t}());\n\tRequestChannelStream.RequestChannelRequesterStream = RequestChannelRequesterStream;\n\tvar RequestChannelResponderStream = /** @class */ (function () {\n\t function RequestChannelResponderStream(streamId, stream, fragmentSize, handler, frame) {\n\t this.streamId = streamId;\n\t this.stream = stream;\n\t this.fragmentSize = fragmentSize;\n\t this.handler = handler;\n\t this.streamType = Frames_1.FrameTypes.REQUEST_CHANNEL;\n\t stream.connect(this);\n\t if (Frames_1.Flags.hasFollows(frame.flags)) {\n\t Reassembler.add(this, frame.data, frame.metadata);\n\t this.initialRequestN = frame.requestN;\n\t this.isComplete = Frames_1.Flags.hasComplete(frame.flags);\n\t return;\n\t }\n\t var payload = {\n\t data: frame.data,\n\t metadata: frame.metadata,\n\t };\n\t var hasComplete = Frames_1.Flags.hasComplete(frame.flags);\n\t this.inboundDone = hasComplete;\n\t try {\n\t this.receiver = handler(payload, frame.requestN, hasComplete, this);\n\t if (this.outboundDone && this.defferedError) {\n\t this.receiver.onError(this.defferedError);\n\t }\n\t }\n\t catch (error) {\n\t if (this.outboundDone && !this.inboundDone) {\n\t this.cancel();\n\t }\n\t else {\n\t this.inboundDone = true;\n\t }\n\t this.onError(error);\n\t }\n\t }\n\t RequestChannelResponderStream.prototype.handle = function (frame) {\n\t var errorMessage;\n\t var frameType = frame.type;\n\t switch (frameType) {\n\t case Frames_1.FrameTypes.PAYLOAD: {\n\t if (Frames_1.Flags.hasFollows(frame.flags)) {\n\t if (Reassembler.add(this, frame.data, frame.metadata)) {\n\t return;\n\t }\n\t errorMessage = \"Unexpected frame size\";\n\t break;\n\t }\n\t var payload = this.hasFragments\n\t ? Reassembler.reassemble(this, frame.data, frame.metadata)\n\t : {\n\t data: frame.data,\n\t metadata: frame.metadata,\n\t };\n\t var hasComplete = Frames_1.Flags.hasComplete(frame.flags);\n\t if (!this.receiver) {\n\t var inboundDone = this.isComplete || hasComplete;\n\t if (inboundDone) {\n\t this.inboundDone = true;\n\t if (this.outboundDone) {\n\t this.stream.disconnect(this);\n\t }\n\t }\n\t try {\n\t this.receiver = this.handler(payload, this.initialRequestN, inboundDone, this);\n\t if (this.outboundDone && this.defferedError) {\n\t }\n\t }\n\t catch (error) {\n\t if (this.outboundDone && !this.inboundDone) {\n\t this.cancel();\n\t }\n\t else {\n\t this.inboundDone = true;\n\t }\n\t this.onError(error);\n\t }\n\t }\n\t else {\n\t if (hasComplete) {\n\t this.inboundDone = true;\n\t if (this.outboundDone) {\n\t this.stream.disconnect(this);\n\t }\n\t if (!Frames_1.Flags.hasNext(frame.flags)) {\n\t this.receiver.onComplete();\n\t return;\n\t }\n\t }\n\t this.receiver.onNext(payload, hasComplete);\n\t }\n\t return;\n\t }\n\t case Frames_1.FrameTypes.REQUEST_N: {\n\t if (!this.receiver || this.hasFragments) {\n\t errorMessage = \"Unexpected frame type [\".concat(frameType, \"] during reassembly\");\n\t break;\n\t }\n\t this.receiver.request(frame.requestN);\n\t return;\n\t }\n\t case Frames_1.FrameTypes.ERROR:\n\t case Frames_1.FrameTypes.CANCEL: {\n\t var inboundDone = this.inboundDone;\n\t var outboundDone = this.outboundDone;\n\t this.inboundDone = true;\n\t this.outboundDone = true;\n\t this.stream.disconnect(this);\n\t Reassembler.cancel(this);\n\t if (!this.receiver) {\n\t return;\n\t }\n\t if (!outboundDone) {\n\t this.receiver.cancel();\n\t }\n\t if (!inboundDone) {\n\t var error = frameType === Frames_1.FrameTypes.CANCEL\n\t ? new Errors_1.RSocketError(Errors_1.ErrorCodes.CANCELED, \"Cancelled\")\n\t : new Errors_1.RSocketError(frame.code, frame.message);\n\t this.receiver.onError(error);\n\t }\n\t return;\n\t }\n\t case Frames_1.FrameTypes.EXT: {\n\t if (!this.receiver || this.hasFragments) {\n\t errorMessage = \"Unexpected frame type [\".concat(frameType, \"] during reassembly\");\n\t break;\n\t }\n\t this.receiver.onExtension(frame.extendedType, frame.extendedContent, Frames_1.Flags.hasIgnore(frame.flags));\n\t return;\n\t }\n\t default: {\n\t errorMessage = \"Unexpected frame type [\".concat(frameType, \"]\");\n\t // TODO: throws if strict\n\t }\n\t }\n\t this.stream.send({\n\t type: Frames_1.FrameTypes.ERROR,\n\t flags: Frames_1.Flags.NONE,\n\t code: Errors_1.ErrorCodes.CANCELED,\n\t message: errorMessage,\n\t streamId: this.streamId,\n\t });\n\t this.stream.disconnect(this);\n\t this.close(new Errors_1.RSocketError(Errors_1.ErrorCodes.CANCELED, errorMessage));\n\t };\n\t RequestChannelResponderStream.prototype.onError = function (error) {\n\t if (this.outboundDone) {\n\t console.warn(\"Trying to error for the second time. \".concat(error ? \"Dropping error [\".concat(error, \"].\") : \"\"));\n\t return;\n\t }\n\t var inboundDone = this.inboundDone;\n\t this.outboundDone = true;\n\t this.inboundDone = true;\n\t this.stream.send({\n\t type: Frames_1.FrameTypes.ERROR,\n\t flags: Frames_1.Flags.NONE,\n\t code: error instanceof Errors_1.RSocketError\n\t ? error.code\n\t : Errors_1.ErrorCodes.APPLICATION_ERROR,\n\t message: error.message,\n\t streamId: this.streamId,\n\t });\n\t this.stream.disconnect(this);\n\t if (!inboundDone) {\n\t if (this.receiver) {\n\t this.receiver.onError(error);\n\t }\n\t else {\n\t this.defferedError = error;\n\t }\n\t }\n\t };\n\t RequestChannelResponderStream.prototype.onNext = function (payload, isCompletion) {\n\t var e_3, _a;\n\t if (this.outboundDone) {\n\t return;\n\t }\n\t if (isCompletion) {\n\t this.outboundDone = true;\n\t }\n\t // TODO: add payload size validation\n\t if ((0, Fragmenter_1.isFragmentable)(payload, this.fragmentSize, Frames_1.FrameTypes.PAYLOAD)) {\n\t try {\n\t for (var _b = __values((0, Fragmenter_1.fragment)(this.streamId, payload, this.fragmentSize, Frames_1.FrameTypes.PAYLOAD, isCompletion)), _c = _b.next(); !_c.done; _c = _b.next()) {\n\t var frame = _c.value;\n\t this.stream.send(frame);\n\t }\n\t }\n\t catch (e_3_1) { e_3 = { error: e_3_1 }; }\n\t finally {\n\t try {\n\t if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n\t }\n\t finally { if (e_3) throw e_3.error; }\n\t }\n\t }\n\t else {\n\t this.stream.send({\n\t type: Frames_1.FrameTypes.PAYLOAD,\n\t flags: Frames_1.Flags.NEXT |\n\t (isCompletion ? Frames_1.Flags.COMPLETE : Frames_1.Flags.NONE) |\n\t (payload.metadata ? Frames_1.Flags.METADATA : Frames_1.Flags.NONE),\n\t data: payload.data,\n\t metadata: payload.metadata,\n\t streamId: this.streamId,\n\t });\n\t }\n\t if (isCompletion && this.inboundDone) {\n\t this.stream.disconnect(this);\n\t }\n\t };\n\t RequestChannelResponderStream.prototype.onComplete = function () {\n\t if (this.outboundDone) {\n\t return;\n\t }\n\t this.outboundDone = true;\n\t this.stream.send({\n\t type: Frames_1.FrameTypes.PAYLOAD,\n\t flags: Frames_1.Flags.COMPLETE,\n\t streamId: this.streamId,\n\t data: null,\n\t metadata: null,\n\t });\n\t if (this.inboundDone) {\n\t this.stream.disconnect(this);\n\t }\n\t };\n\t RequestChannelResponderStream.prototype.onExtension = function (extendedType, content, canBeIgnored) {\n\t if (this.outboundDone && this.inboundDone) {\n\t return;\n\t }\n\t this.stream.send({\n\t type: Frames_1.FrameTypes.EXT,\n\t streamId: this.streamId,\n\t flags: canBeIgnored ? Frames_1.Flags.IGNORE : Frames_1.Flags.NONE,\n\t extendedType: extendedType,\n\t extendedContent: content,\n\t });\n\t };\n\t RequestChannelResponderStream.prototype.request = function (n) {\n\t if (this.inboundDone) {\n\t return;\n\t }\n\t this.stream.send({\n\t type: Frames_1.FrameTypes.REQUEST_N,\n\t flags: Frames_1.Flags.NONE,\n\t streamId: this.streamId,\n\t requestN: n,\n\t });\n\t };\n\t RequestChannelResponderStream.prototype.cancel = function () {\n\t if (this.inboundDone) {\n\t return;\n\t }\n\t this.inboundDone = true;\n\t this.stream.send({\n\t type: Frames_1.FrameTypes.CANCEL,\n\t flags: Frames_1.Flags.NONE,\n\t streamId: this.streamId,\n\t });\n\t if (this.outboundDone) {\n\t this.stream.disconnect(this);\n\t }\n\t };\n\t RequestChannelResponderStream.prototype.close = function (error) {\n\t if (this.inboundDone && this.outboundDone) {\n\t console.warn(\"Trying to close for the second time. \".concat(error ? \"Dropping error [\".concat(error, \"].\") : \"\"));\n\t return;\n\t }\n\t var inboundDone = this.inboundDone;\n\t var outboundDone = this.outboundDone;\n\t this.inboundDone = true;\n\t this.outboundDone = true;\n\t Reassembler.cancel(this);\n\t var receiver = this.receiver;\n\t if (!receiver) {\n\t return;\n\t }\n\t if (!outboundDone) {\n\t receiver.cancel();\n\t }\n\t if (!inboundDone) {\n\t if (error) {\n\t receiver.onError(error);\n\t }\n\t else {\n\t receiver.onComplete();\n\t }\n\t }\n\t };\n\t return RequestChannelResponderStream;\n\t}());\n\tRequestChannelStream.RequestChannelResponderStream = RequestChannelResponderStream;\n\t\n\treturn RequestChannelStream;\n}\n\nvar RequestFnFStream = {};\n\nvar hasRequiredRequestFnFStream;\n\nfunction requireRequestFnFStream () {\n\tif (hasRequiredRequestFnFStream) return RequestFnFStream;\n\thasRequiredRequestFnFStream = 1;\n\t/*\n\t * Copyright 2021-2022 the original author or authors.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t */\n\tvar __createBinding = (RequestFnFStream && RequestFnFStream.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n\t if (k2 === undefined) k2 = k;\n\t Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n\t}) : (function(o, m, k, k2) {\n\t if (k2 === undefined) k2 = k;\n\t o[k2] = m[k];\n\t}));\n\tvar __setModuleDefault = (RequestFnFStream && RequestFnFStream.__setModuleDefault) || (Object.create ? (function(o, v) {\n\t Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n\t}) : function(o, v) {\n\t o[\"default\"] = v;\n\t});\n\tvar __importStar = (RequestFnFStream && RequestFnFStream.__importStar) || function (mod) {\n\t if (mod && mod.__esModule) return mod;\n\t var result = {};\n\t if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n\t __setModuleDefault(result, mod);\n\t return result;\n\t};\n\tvar __values = (RequestFnFStream && RequestFnFStream.__values) || function(o) {\n\t var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n\t if (m) return m.call(o);\n\t if (o && typeof o.length === \"number\") return {\n\t next: function () {\n\t if (o && i >= o.length) o = void 0;\n\t return { value: o && o[i++], done: !o };\n\t }\n\t };\n\t throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n\t};\n\tObject.defineProperty(RequestFnFStream, \"__esModule\", { value: true });\n\tRequestFnFStream.RequestFnfResponderStream = RequestFnFStream.RequestFnFRequesterStream = void 0;\n\tvar Errors_1 = requireErrors();\n\tvar Fragmenter_1 = requireFragmenter();\n\tvar Frames_1 = requireFrames();\n\tvar Reassembler = __importStar(requireReassembler());\n\tvar RequestFnFRequesterStream = /** @class */ (function () {\n\t function RequestFnFRequesterStream(payload, receiver, fragmentSize, leaseManager) {\n\t this.payload = payload;\n\t this.receiver = receiver;\n\t this.fragmentSize = fragmentSize;\n\t this.leaseManager = leaseManager;\n\t this.streamType = Frames_1.FrameTypes.REQUEST_FNF;\n\t }\n\t RequestFnFRequesterStream.prototype.handleReady = function (streamId, stream) {\n\t var e_1, _a;\n\t if (this.done) {\n\t return false;\n\t }\n\t this.streamId = streamId;\n\t if ((0, Fragmenter_1.isFragmentable)(this.payload, this.fragmentSize, Frames_1.FrameTypes.REQUEST_FNF)) {\n\t try {\n\t for (var _b = __values((0, Fragmenter_1.fragment)(streamId, this.payload, this.fragmentSize, Frames_1.FrameTypes.REQUEST_FNF)), _c = _b.next(); !_c.done; _c = _b.next()) {\n\t var frame = _c.value;\n\t stream.send(frame);\n\t }\n\t }\n\t catch (e_1_1) { e_1 = { error: e_1_1 }; }\n\t finally {\n\t try {\n\t if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n\t }\n\t finally { if (e_1) throw e_1.error; }\n\t }\n\t }\n\t else {\n\t stream.send({\n\t type: Frames_1.FrameTypes.REQUEST_FNF,\n\t data: this.payload.data,\n\t metadata: this.payload.metadata,\n\t flags: this.payload.metadata ? Frames_1.Flags.METADATA : 0,\n\t streamId: streamId,\n\t });\n\t }\n\t this.done = true;\n\t this.receiver.onComplete();\n\t return true;\n\t };\n\t RequestFnFRequesterStream.prototype.handleReject = function (error) {\n\t if (this.done) {\n\t return;\n\t }\n\t this.done = true;\n\t this.receiver.onError(error);\n\t };\n\t RequestFnFRequesterStream.prototype.cancel = function () {\n\t var _a;\n\t if (this.done) {\n\t return;\n\t }\n\t this.done = true;\n\t (_a = this.leaseManager) === null || _a === void 0 ? void 0 : _a.cancelRequest(this);\n\t };\n\t RequestFnFRequesterStream.prototype.handle = function (frame) {\n\t if (frame.type == Frames_1.FrameTypes.ERROR) {\n\t this.close(new Errors_1.RSocketError(frame.code, frame.message));\n\t return;\n\t }\n\t this.close(new Errors_1.RSocketError(Errors_1.ErrorCodes.CANCELED, \"Received invalid frame\"));\n\t };\n\t RequestFnFRequesterStream.prototype.close = function (error) {\n\t if (this.done) {\n\t console.warn(\"Trying to close for the second time. \".concat(error ? \"Dropping error [\".concat(error, \"].\") : \"\"));\n\t return;\n\t }\n\t if (error) {\n\t this.receiver.onError(error);\n\t }\n\t else {\n\t this.receiver.onComplete();\n\t }\n\t };\n\t return RequestFnFRequesterStream;\n\t}());\n\tRequestFnFStream.RequestFnFRequesterStream = RequestFnFRequesterStream;\n\tvar RequestFnfResponderStream = /** @class */ (function () {\n\t function RequestFnfResponderStream(streamId, stream, handler, frame) {\n\t this.streamId = streamId;\n\t this.stream = stream;\n\t this.handler = handler;\n\t this.streamType = Frames_1.FrameTypes.REQUEST_FNF;\n\t if (Frames_1.Flags.hasFollows(frame.flags)) {\n\t Reassembler.add(this, frame.data, frame.metadata);\n\t stream.connect(this);\n\t return;\n\t }\n\t var payload = {\n\t data: frame.data,\n\t metadata: frame.metadata,\n\t };\n\t try {\n\t this.cancellable = handler(payload, this);\n\t }\n\t catch (e) {\n\t // do nothing\n\t }\n\t }\n\t RequestFnfResponderStream.prototype.handle = function (frame) {\n\t var errorMessage;\n\t if (frame.type == Frames_1.FrameTypes.PAYLOAD) {\n\t if (Frames_1.Flags.hasFollows(frame.flags)) {\n\t if (Reassembler.add(this, frame.data, frame.metadata)) {\n\t return;\n\t }\n\t errorMessage = \"Unexpected fragment size\";\n\t }\n\t else {\n\t this.stream.disconnect(this);\n\t var payload = Reassembler.reassemble(this, frame.data, frame.metadata);\n\t try {\n\t this.cancellable = this.handler(payload, this);\n\t }\n\t catch (e) {\n\t // do nothing\n\t }\n\t return;\n\t }\n\t }\n\t else {\n\t errorMessage = \"Unexpected frame type [\".concat(frame.type, \"]\");\n\t }\n\t this.done = true;\n\t if (frame.type != Frames_1.FrameTypes.CANCEL && frame.type != Frames_1.FrameTypes.ERROR) {\n\t this.stream.send({\n\t type: Frames_1.FrameTypes.ERROR,\n\t streamId: this.streamId,\n\t flags: Frames_1.Flags.NONE,\n\t code: Errors_1.ErrorCodes.CANCELED,\n\t message: errorMessage,\n\t });\n\t }\n\t this.stream.disconnect(this);\n\t Reassembler.cancel(this);\n\t // TODO: throws if strict\n\t };\n\t RequestFnfResponderStream.prototype.close = function (error) {\n\t var _a;\n\t if (this.done) {\n\t console.warn(\"Trying to close for the second time. \".concat(error ? \"Dropping error [\".concat(error, \"].\") : \"\"));\n\t return;\n\t }\n\t this.done = true;\n\t Reassembler.cancel(this);\n\t (_a = this.cancellable) === null || _a === void 0 ? void 0 : _a.cancel();\n\t };\n\t RequestFnfResponderStream.prototype.onError = function (error) { };\n\t RequestFnfResponderStream.prototype.onComplete = function () { };\n\t return RequestFnfResponderStream;\n\t}());\n\tRequestFnFStream.RequestFnfResponderStream = RequestFnfResponderStream;\n\t/*\n\texport function request(\n\t payload: Payload,\n\t responderStream: UnidirectionalStream\n\t): Handler<Cancellable> {\n\t return {\n\t create: (r) => {\n\t const response = new RequestFnFRequesterHandler(\n\t payload,\n\t responderStream,\n\t r\n\t );\n\n\t r.add(response);\n\n\t return response;\n\t },\n\t };\n\t}\n\n\texport function response(\n\t handler: (payload: Payload, responderStream: UnidirectionalStream,) => void\n\t): Handler<void> {\n\t return {\n\t create: (r) => new RequestFnfResponderHandler(),\n\t };\n\t} */\n\t\n\treturn RequestFnFStream;\n}\n\nvar RequestResponseStream = {};\n\nvar hasRequiredRequestResponseStream;\n\nfunction requireRequestResponseStream () {\n\tif (hasRequiredRequestResponseStream) return RequestResponseStream;\n\thasRequiredRequestResponseStream = 1;\n\t/*\n\t * Copyright 2021-2022 the original author or authors.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t */\n\tvar __createBinding = (RequestResponseStream && RequestResponseStream.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n\t if (k2 === undefined) k2 = k;\n\t Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n\t}) : (function(o, m, k, k2) {\n\t if (k2 === undefined) k2 = k;\n\t o[k2] = m[k];\n\t}));\n\tvar __setModuleDefault = (RequestResponseStream && RequestResponseStream.__setModuleDefault) || (Object.create ? (function(o, v) {\n\t Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n\t}) : function(o, v) {\n\t o[\"default\"] = v;\n\t});\n\tvar __importStar = (RequestResponseStream && RequestResponseStream.__importStar) || function (mod) {\n\t if (mod && mod.__esModule) return mod;\n\t var result = {};\n\t if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n\t __setModuleDefault(result, mod);\n\t return result;\n\t};\n\tvar __values = (RequestResponseStream && RequestResponseStream.__values) || function(o) {\n\t var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n\t if (m) return m.call(o);\n\t if (o && typeof o.length === \"number\") return {\n\t next: function () {\n\t if (o && i >= o.length) o = void 0;\n\t return { value: o && o[i++], done: !o };\n\t }\n\t };\n\t throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n\t};\n\tObject.defineProperty(RequestResponseStream, \"__esModule\", { value: true });\n\tRequestResponseStream.RequestResponseResponderStream = RequestResponseStream.RequestResponseRequesterStream = void 0;\n\tvar Errors_1 = requireErrors();\n\tvar Fragmenter_1 = requireFragmenter();\n\tvar Frames_1 = requireFrames();\n\tvar Reassembler = __importStar(requireReassembler());\n\tvar RequestResponseRequesterStream = /** @class */ (function () {\n\t function RequestResponseRequesterStream(payload, receiver, fragmentSize, leaseManager) {\n\t this.payload = payload;\n\t this.receiver = receiver;\n\t this.fragmentSize = fragmentSize;\n\t this.leaseManager = leaseManager;\n\t this.streamType = Frames_1.FrameTypes.REQUEST_RESPONSE;\n\t }\n\t RequestResponseRequesterStream.prototype.handleReady = function (streamId, stream) {\n\t var e_1, _a;\n\t if (this.done) {\n\t return false;\n\t }\n\t this.streamId = streamId;\n\t this.stream = stream;\n\t stream.connect(this);\n\t if ((0, Fragmenter_1.isFragmentable)(this.payload, this.fragmentSize, Frames_1.FrameTypes.REQUEST_RESPONSE)) {\n\t try {\n\t for (var _b = __values((0, Fragmenter_1.fragment)(streamId, this.payload, this.fragmentSize, Frames_1.FrameTypes.REQUEST_RESPONSE)), _c = _b.next(); !_c.done; _c = _b.next()) {\n\t var frame = _c.value;\n\t this.stream.send(frame);\n\t }\n\t }\n\t catch (e_1_1) { e_1 = { error: e_1_1 }; }\n\t finally {\n\t try {\n\t if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n\t }\n\t finally { if (e_1) throw e_1.error; }\n\t }\n\t }\n\t else {\n\t this.stream.send({\n\t type: Frames_1.FrameTypes.REQUEST_RESPONSE,\n\t data: this.payload.data,\n\t metadata: this.payload.metadata,\n\t flags: this.payload.metadata ? Frames_1.Flags.METADATA : 0,\n\t streamId: streamId,\n\t });\n\t }\n\t if (this.hasExtension) {\n\t this.stream.send({\n\t type: Frames_1.FrameTypes.EXT,\n\t streamId: streamId,\n\t extendedContent: this.extendedContent,\n\t extendedType: this.extendedType,\n\t flags: this.flags,\n\t });\n\t }\n\t return true;\n\t };\n\t RequestResponseRequesterStream.prototype.handleReject = function (error) {\n\t if (this.done) {\n\t return;\n\t }\n\t this.done = true;\n\t this.receiver.onError(error);\n\t };\n\t RequestResponseRequesterStream.prototype.handle = function (frame) {\n\t var errorMessage;\n\t var frameType = frame.type;\n\t switch (frameType) {\n\t case Frames_1.FrameTypes.PAYLOAD: {\n\t var hasComplete = Frames_1.Flags.hasComplete(frame.flags);\n\t var hasPayload = Frames_1.Flags.hasNext(frame.flags);\n\t if (hasComplete || !Frames_1.Flags.hasFollows(frame.flags)) {\n\t this.done = true;\n\t this.stream.disconnect(this);\n\t if (!hasPayload) {\n\t // TODO: add validation no frame in reassembly\n\t this.receiver.onComplete();\n\t return;\n\t }\n\t var payload = this.hasFragments\n\t ? Reassembler.reassemble(this, frame.data, frame.metadata)\n\t : {\n\t data: frame.data,\n\t metadata: frame.metadata,\n\t };\n\t this.receiver.onNext(payload, true);\n\t return;\n\t }\n\t if (!Reassembler.add(this, frame.data, frame.metadata)) {\n\t errorMessage = \"Unexpected fragment size\";\n\t break;\n\t }\n\t return;\n\t }\n\t case Frames_1.FrameTypes.ERROR: {\n\t this.done = true;\n\t this.stream.disconnect(this);\n\t Reassembler.cancel(this);\n\t this.receiver.onError(new Errors_1.RSocketError(frame.code, frame.message));\n\t return;\n\t }\n\t case Frames_1.FrameTypes.EXT: {\n\t if (this.hasFragments) {\n\t errorMessage = \"Unexpected frame type [\".concat(frameType, \"] during reassembly\");\n\t break;\n\t }\n\t this.receiver.onExtension(frame.extendedType, frame.extendedContent, Frames_1.Flags.hasIgnore(frame.flags));\n\t return;\n\t }\n\t default: {\n\t errorMessage = \"Unexpected frame type [\".concat(frameType, \"]\");\n\t }\n\t }\n\t this.close(new Errors_1.RSocketError(Errors_1.ErrorCodes.CANCELED, errorMessage));\n\t this.stream.send({\n\t type: Frames_1.FrameTypes.CANCEL,\n\t streamId: this.streamId,\n\t flags: Frames_1.Flags.NONE,\n\t });\n\t this.stream.disconnect(this);\n\t // TODO: throw an exception if strict frame handling mode\n\t };\n\t RequestResponseRequesterStream.prototype.cancel = function () {\n\t var _a;\n\t if (this.done) {\n\t return;\n\t }\n\t this.done = true;\n\t if (!this.streamId) {\n\t (_a = this.leaseManager) === null || _a === void 0 ? void 0 : _a.cancelRequest(this);\n\t return;\n\t }\n\t this.stream.send({\n\t type: Frames_1.FrameTypes.CANCEL,\n\t flags: Frames_1.Flags.NONE,\n\t streamId: this.streamId,\n\t });\n\t this.stream.disconnect(this);\n\t Reassembler.cancel(this);\n\t };\n\t RequestResponseRequesterStream.prototype.onExtension = function (extendedType, content, canBeIgnored) {\n\t if (this.done) {\n\t return;\n\t }\n\t if (!this.streamId) {\n\t this.hasExtension = true;\n\t this.extendedType = extendedType;\n\t this.extendedContent = content;\n\t this.flags = canBeIgnored ? Frames_1.Flags.IGNORE : Frames_1.Flags.NONE;\n\t return;\n\t }\n\t this.stream.send({\n\t streamId: this.streamId,\n\t type: Frames_1.FrameTypes.EXT,\n\t extendedType: extendedType,\n\t extendedContent: content,\n\t flags: canBeIgnored ? Frames_1.Flags.IGNORE : Frames_1.Flags.NONE,\n\t });\n\t };\n\t RequestResponseRequesterStream.prototype.close = function (error) {\n\t if (this.done) {\n\t return;\n\t }\n\t this.done = true;\n\t Reassembler.cancel(this);\n\t if (error) {\n\t this.receiver.onError(error);\n\t }\n\t else {\n\t this.receiver.onComplete();\n\t }\n\t };\n\t return RequestResponseRequesterStream;\n\t}());\n\tRequestResponseStream.RequestResponseRequesterStream = RequestResponseRequesterStream;\n\tvar RequestResponseResponderStream = /** @class */ (function () {\n\t function RequestResponseResponderStream(streamId, stream, fragmentSize, handler, frame) {\n\t this.streamId = streamId;\n\t this.stream = stream;\n\t this.fragmentSize = fragmentSize;\n\t this.handler = handler;\n\t this.streamType = Frames_1.FrameTypes.REQUEST_RESPONSE;\n\t stream.connect(this);\n\t if (Frames_1.Flags.hasFollows(frame.flags)) {\n\t Reassembler.add(this, frame.data, frame.metadata);\n\t return;\n\t }\n\t var payload = {\n\t data: frame.data,\n\t metadata: frame.metadata,\n\t };\n\t try {\n\t this.receiver = handler(payload, this);\n\t }\n\t catch (error) {\n\t this.onError(error);\n\t }\n\t }\n\t RequestResponseResponderStream.prototype.handle = function (frame) {\n\t var _a;\n\t var errorMessage;\n\t if (!this.receiver || this.hasFragments) {\n\t if (frame.type === Frames_1.FrameTypes.PAYLOAD) {\n\t if (Frames_1.Flags.hasFollows(frame.flags)) {\n\t if (Reassembler.add(this, frame.data, frame.metadata)) {\n\t return;\n\t }\n\t errorMessage = \"Unexpected fragment size\";\n\t }\n\t else {\n\t var payload = Reassembler.reassemble(this, frame.data, frame.metadata);\n\t try {\n\t this.receiver = this.handler(payload, this);\n\t }\n\t catch (error) {\n\t this.onError(error);\n\t }\n\t return;\n\t }\n\t }\n\t else {\n\t errorMessage = \"Unexpected frame type [\".concat(frame.type, \"] during reassembly\");\n\t }\n\t }\n\t else if (frame.type === Frames_1.FrameTypes.EXT) {\n\t this.receiver.onExtension(frame.extendedType, frame.extendedContent, Frames_1.Flags.hasIgnore(frame.flags));\n\t return;\n\t }\n\t else {\n\t errorMessage = \"Unexpected frame type [\".concat(frame.type, \"]\");\n\t }\n\t this.done = true;\n\t (_a = this.receiver) === null || _a === void 0 ? void 0 : _a.cancel();\n\t if (frame.type !== Frames_1.FrameTypes.CANCEL && frame.type !== Frames_1.FrameTypes.ERROR) {\n\t this.stream.send({\n\t type: Frames_1.FrameTypes.ERROR,\n\t flags: Frames_1.Flags.NONE,\n\t code: Errors_1.ErrorCodes.CANCELED,\n\t message: errorMessage,\n\t streamId: this.streamId,\n\t });\n\t }\n\t this.stream.disconnect(this);\n\t Reassembler.cancel(this);\n\t // TODO: throws if strict\n\t };\n\t RequestResponseResponderStream.prototype.onError = function (error) {\n\t if (this.done) {\n\t console.warn(\"Trying to error for the second time. \".concat(error ? \"Dropping error [\".concat(error, \"].\") : \"\"));\n\t return;\n\t }\n\t this.done = true;\n\t this.stream.send({\n\t type: Frames_1.FrameTypes.ERROR,\n\t flags: Frames_1.Flags.NONE,\n\t code: error instanceof Errors_1.RSocketError\n\t ? error.code\n\t : Errors_1.ErrorCodes.APPLICATION_ERROR,\n\t message: error.message,\n\t streamId: this.streamId,\n\t });\n\t this.stream.disconnect(this);\n\t };\n\t RequestResponseResponderStream.prototype.onNext = function (payload, isCompletion) {\n\t var e_2, _a;\n\t if (this.done) {\n\t return;\n\t }\n\t this.done = true;\n\t // TODO: add payload size validation\n\t if ((0, Fragmenter_1.isFragmentable)(payload, this.fragmentSize, Frames_1.FrameTypes.PAYLOAD)) {\n\t try {\n\t for (var _b = __values((0, Fragmenter_1.fragment)(this.streamId, payload, this.fragmentSize, Frames_1.FrameTypes.PAYLOAD, true)), _c = _b.next(); !_c.done; _c = _b.next()) {\n\t var frame = _c.value;\n\t this.stream.send(frame);\n\t }\n\t }\n\t catch (e_2_1) { e_2 = { error: e_2_1 }; }\n\t finally {\n\t try {\n\t if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n\t }\n\t finally { if (e_2) throw e_2.error; }\n\t }\n\t }\n\t else {\n\t this.stream.send({\n\t type: Frames_1.FrameTypes.PAYLOAD,\n\t flags: Frames_1.Flags.NEXT | Frames_1.Flags.COMPLETE | (payload.metadata ? Frames_1.Flags.METADATA : 0),\n\t data: payload.data,\n\t metadata: payload.metadata,\n\t streamId: this.streamId,\n\t });\n\t }\n\t this.stream.disconnect(this);\n\t };\n\t RequestResponseResponderStream.prototype.onComplete = function () {\n\t if (this.done) {\n\t return;\n\t }\n\t this.done = true;\n\t this.stream.send({\n\t type: Frames_1.FrameTypes.PAYLOAD,\n\t flags: Frames_1.Flags.COMPLETE,\n\t streamId: this.streamId,\n\t data: null,\n\t metadata: null,\n\t });\n\t this.stream.disconnect(this);\n\t };\n\t RequestResponseResponderStream.prototype.onExtension = function (extendedType, content, canBeIgnored) {\n\t if (this.done) {\n\t return;\n\t }\n\t this.stream.send({\n\t type: Frames_1.FrameTypes.EXT,\n\t streamId: this.streamId,\n\t flags: canBeIgnored ? Frames_1.Flags.IGNORE : Frames_1.Flags.NONE,\n\t extendedType: extendedType,\n\t extendedContent: content,\n\t });\n\t };\n\t RequestResponseResponderStream.prototype.close = function (error) {\n\t var _a;\n\t if (this.done) {\n\t console.warn(\"Trying to close for the second time. \".concat(error ? \"Dropping error [\".concat(error, \"].\") : \"\"));\n\t return;\n\t }\n\t Reassembler.cancel(this);\n\t (_a = this.receiver) === null || _a === void 0 ? void 0 : _a.cancel();\n\t };\n\t return RequestResponseResponderStream;\n\t}());\n\tRequestResponseStream.RequestResponseResponderStream = RequestResponseResponderStream;\n\t\n\treturn RequestResponseStream;\n}\n\nvar RequestStreamStream = {};\n\nvar hasRequiredRequestStreamStream;\n\nfunction requireRequestStreamStream () {\n\tif (hasRequiredRequestStreamStream) return RequestStreamStream;\n\thasRequiredRequestStreamStream = 1;\n\t/*\n\t * Copyright 2021-2022 the original author or authors.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t */\n\tvar __createBinding = (RequestStreamStream && RequestStreamStream.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n\t if (k2 === undefined) k2 = k;\n\t Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n\t}) : (function(o, m, k, k2) {\n\t if (k2 === undefined) k2 = k;\n\t o[k2] = m[k];\n\t}));\n\tvar __setModuleDefault = (RequestStreamStream && RequestStreamStream.__setModuleDefault) || (Object.create ? (function(o, v) {\n\t Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n\t}) : function(o, v) {\n\t o[\"default\"] = v;\n\t});\n\tvar __importStar = (RequestStreamStream && RequestStreamStream.__importStar) || function (mod) {\n\t if (mod && mod.__esModule) return mod;\n\t var result = {};\n\t if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n\t __setModuleDefault(result, mod);\n\t return result;\n\t};\n\tvar __values = (RequestStreamStream && RequestStreamStream.__values) || function(o) {\n\t var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n\t if (m) return m.call(o);\n\t if (o && typeof o.length === \"number\") return {\n\t next: function () {\n\t if (o && i >= o.length) o = void 0;\n\t return { value: o && o[i++], done: !o };\n\t }\n\t };\n\t throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n\t};\n\tObject.defineProperty(RequestStreamStream, \"__esModule\", { value: true });\n\tRequestStreamStream.RequestStreamResponderStream = RequestStreamStream.RequestStreamRequesterStream = void 0;\n\tvar Errors_1 = requireErrors();\n\tvar Fragmenter_1 = requireFragmenter();\n\tvar Frames_1 = requireFrames();\n\tvar Reassembler = __importStar(requireReassembler());\n\tvar RequestStreamRequesterStream = /** @class */ (function () {\n\t function RequestStreamRequesterStream(payload, receiver, fragmentSize, initialRequestN, leaseManager) {\n\t this.payload = payload;\n\t this.receiver = receiver;\n\t this.fragmentSize = fragmentSize;\n\t this.initialRequestN = initialRequestN;\n\t this.leaseManager = leaseManager;\n\t this.streamType = Frames_1.FrameTypes.REQUEST_STREAM;\n\t // TODO: add payload size validation\n\t }\n\t RequestStreamRequesterStream.prototype.handleReady = function (streamId, stream) {\n\t var e_1, _a;\n\t if (this.done) {\n\t return false;\n\t }\n\t this.streamId = streamId;\n\t this.stream = stream;\n\t stream.connect(this);\n\t if ((0, Fragmenter_1.isFragmentable)(this.payload, this.fragmentSize, Frames_1.FrameTypes.REQUEST_STREAM)) {\n\t try {\n\t for (var _b = __values((0, Fragmenter_1.fragmentWithRequestN)(streamId, this.payload, this.fragmentSize, Frames_1.FrameTypes.REQUEST_STREAM, this.initialRequestN)), _c = _b.next(); !_c.done; _c = _b.next()) {\n\t var frame = _c.value;\n\t this.stream.send(frame);\n\t }\n\t }\n\t catch (e_1_1) { e_1 = { error: e_1_1 }; }\n\t finally {\n\t try {\n\t if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n\t }\n\t finally { if (e_1) throw e_1.error; }\n\t }\n\t }\n\t else {\n\t this.stream.send({\n\t type: Frames_1.FrameTypes.REQUEST_STREAM,\n\t data: this.payload.data,\n\t metadata: this.payload.metadata,\n\t requestN: this.initialRequestN,\n\t flags: this.payload.metadata !== undefined ? Frames_1.Flags.METADATA : 0,\n\t streamId: streamId,\n\t });\n\t }\n\t if (this.hasExtension) {\n\t this.stream.send({\n\t type: Frames_1.FrameTypes.EXT,\n\t streamId: streamId,\n\t extendedContent: this.extendedContent,\n\t extendedType: this.extendedType,\n\t flags: this.flags,\n\t });\n\t }\n\t return true;\n\t };\n\t RequestStreamRequesterStream.prototype.handleReject = function (error) {\n\t if (this.done) {\n\t return;\n\t }\n\t this.done = true;\n\t this.receiver.onError(error);\n\t };\n\t RequestStreamRequesterStream.prototype.handle = function (frame) {\n\t var errorMessage;\n\t var frameType = frame.type;\n\t switch (frameType) {\n\t case Frames_1.FrameTypes.PAYLOAD: {\n\t var hasComplete = Frames_1.Flags.hasComplete(frame.flags);\n\t var hasNext = Frames_1.Flags.hasNext(frame.flags);\n\t if (hasComplete || !Frames_1.Flags.hasFollows(frame.flags)) {\n\t if (hasComplete) {\n\t this.done = true;\n\t this.stream.disconnect(this);\n\t if (!hasNext) {\n\t // TODO: add validation no frame in reassembly\n\t this.receiver.onComplete();\n\t return;\n\t }\n\t }\n\t var payload = this.hasFragments\n\t ? Reassembler.reassemble(this, frame.data, frame.metadata)\n\t : {\n\t data: frame.data,\n\t metadata: frame.metadata,\n\t };\n\t this.receiver.onNext(payload, hasComplete);\n\t return;\n\t }\n\t if (!Reassembler.add(this, frame.data, frame.metadata)) {\n\t errorMessage = \"Unexpected fragment size\";\n\t break;\n\t }\n\t return;\n\t }\n\t case Frames_1.FrameTypes.ERROR: {\n\t this.done = true;\n\t this.stream.disconnect(this);\n\t Reassembler.cancel(this);\n\t this.receiver.onError(new Errors_1.RSocketError(frame.code, frame.message));\n\t return;\n\t }\n\t case Frames_1.FrameTypes.EXT: {\n\t if (this.hasFragments) {\n\t errorMessage = \"Unexpected frame type [\".concat(frameType, \"] during reassembly\");\n\t break;\n\t }\n\t this.receiver.onExtension(frame.extendedType, frame.extendedContent, Frames_1.Flags.hasIgnore(frame.flags));\n\t return;\n\t }\n\t default: {\n\t errorMessage = \"Unexpected frame type [\".concat(frameType, \"]\");\n\t }\n\t }\n\t this.close(new Errors_1.RSocketError(Errors_1.ErrorCodes.CANCELED, errorMessage));\n\t this.stream.send({\n\t type: Frames_1.FrameTypes.CANCEL,\n\t streamId: this.streamId,\n\t flags: Frames_1.Flags.NONE,\n\t });\n\t this.stream.disconnect(this);\n\t // TODO: throw an exception if strict frame handling mode\n\t };\n\t RequestStreamRequesterStream.prototype.request = function (n) {\n\t if (this.done) {\n\t return;\n\t }\n\t if (!this.streamId) {\n\t this.initialRequestN += n;\n\t return;\n\t }\n\t this.stream.send({\n\t type: Frames_1.FrameTypes.REQUEST_N,\n\t flags: Frames_1.Flags.NONE,\n\t requestN: n,\n\t streamId: this.streamId,\n\t });\n\t };\n\t RequestStreamRequesterStream.prototype.cancel = function () {\n\t var _a;\n\t if (this.done) {\n\t return;\n\t }\n\t this.done = true;\n\t if (!this.streamId) {\n\t (_a = this.leaseManager) === null || _a === void 0 ? void 0 : _a.cancelRequest(this);\n\t return;\n\t }\n\t this.stream.send({\n\t type: Frames_1.FrameTypes.CANCEL,\n\t flags: Frames_1.Flags.NONE,\n\t streamId: this.streamId,\n\t });\n\t this.stream.disconnect(this);\n\t Reassembler.cancel(this);\n\t };\n\t RequestStreamRequesterStream.prototype.onExtension = function (extendedType, content, canBeIgnored) {\n\t if (this.done) {\n\t return;\n\t }\n\t if (!this.streamId) {\n\t this.hasExtension = true;\n\t this.extendedType = extendedType;\n\t this.extendedContent = content;\n\t this.flags = canBeIgnored ? Frames_1.Flags.IGNORE : Frames_1.Flags.NONE;\n\t return;\n\t }\n\t this.stream.send({\n\t streamId: this.streamId,\n\t type: Frames_1.FrameTypes.EXT,\n\t extendedType: extendedType,\n\t extendedContent: content,\n\t flags: canBeIgnored ? Frames_1.Flags.IGNORE : Frames_1.Flags.NONE,\n\t });\n\t };\n\t RequestStreamRequesterStream.prototype.close = function (error) {\n\t if (this.done) {\n\t return;\n\t }\n\t this.done = true;\n\t Reassembler.cancel(this);\n\t if (error) {\n\t this.receiver.onError(error);\n\t }\n\t else {\n\t this.receiver.onComplete();\n\t }\n\t };\n\t return RequestStreamRequesterStream;\n\t}());\n\tRequestStreamStream.RequestStreamRequesterStream = RequestStreamRequesterStream;\n\tvar RequestStreamResponderStream = /** @class */ (function () {\n\t function RequestStreamResponderStream(streamId, stream, fragmentSize, handler, frame) {\n\t this.streamId = streamId;\n\t this.stream = stream;\n\t this.fragmentSize = fragmentSize;\n\t this.handler = handler;\n\t this.streamType = Frames_1.FrameTypes.REQUEST_STREAM;\n\t stream.connect(this);\n\t if (Frames_1.Flags.hasFollows(frame.flags)) {\n\t this.initialRequestN = frame.requestN;\n\t Reassembler.add(this, frame.data, frame.metadata);\n\t return;\n\t }\n\t var payload = {\n\t data: frame.data,\n\t metadata: frame.metadata,\n\t };\n\t try {\n\t this.receiver = handler(payload, frame.requestN, this);\n\t }\n\t catch (error) {\n\t this.onError(error);\n\t }\n\t }\n\t RequestStreamResponderStream.prototype.handle = function (frame) {\n\t var _a;\n\t var errorMessage;\n\t if (!this.receiver || this.hasFragments) {\n\t if (frame.type === Frames_1.FrameTypes.PAYLOAD) {\n\t if (Frames_1.Flags.hasFollows(frame.flags)) {\n\t if (Reassembler.add(this, frame.data, frame.metadata)) {\n\t return;\n\t }\n\t errorMessage = \"Unexpected frame size\";\n\t }\n\t else {\n\t var payload = Reassembler.reassemble(this, frame.data, frame.metadata);\n\t try {\n\t this.receiver = this.handler(payload, this.initialRequestN, this);\n\t }\n\t catch (error) {\n\t this.onError(error);\n\t }\n\t return;\n\t }\n\t }\n\t else {\n\t errorMessage = \"Unexpected frame type [\".concat(frame.type, \"] during reassembly\");\n\t }\n\t }\n\t else if (frame.type === Frames_1.FrameTypes.REQUEST_N) {\n\t this.receiver.request(frame.requestN);\n\t return;\n\t }\n\t else if (frame.type === Frames_1.FrameTypes.EXT) {\n\t this.receiver.onExtension(frame.extendedType, frame.extendedContent, Frames_1.Flags.hasIgnore(frame.flags));\n\t return;\n\t }\n\t else {\n\t errorMessage = \"Unexpected frame type [\".concat(frame.type, \"]\");\n\t }\n\t this.done = true;\n\t Reassembler.cancel(this);\n\t (_a = this.receiver) === null || _a === void 0 ? void 0 : _a.cancel();\n\t if (frame.type !== Frames_1.FrameTypes.CANCEL && frame.type !== Frames_1.FrameTypes.ERROR) {\n\t this.stream.send({\n\t type: Frames_1.FrameTypes.ERROR,\n\t flags: Frames_1.Flags.NONE,\n\t code: Errors_1.ErrorCodes.CANCELED,\n\t message: errorMessage,\n\t streamId: this.streamId,\n\t });\n\t }\n\t this.stream.disconnect(this);\n\t // TODO: throws if strict\n\t };\n\t RequestStreamResponderStream.prototype.onError = function (error) {\n\t if (this.done) {\n\t console.warn(\"Trying to error for the second time. \".concat(error ? \"Dropping error [\".concat(error, \"].\") : \"\"));\n\t return;\n\t }\n\t this.done = true;\n\t this.stream.send({\n\t type: Frames_1.FrameTypes.ERROR,\n\t flags: Frames_1.Flags.NONE,\n\t code: error instanceof Errors_1.RSocketError\n\t ? error.code\n\t : Errors_1.ErrorCodes.APPLICATION_ERROR,\n\t message: error.message,\n\t streamId: this.streamId,\n\t });\n\t this.stream.disconnect(this);\n\t };\n\t RequestStreamResponderStream.prototype.onNext = function (payload, isCompletion) {\n\t var e_2, _a;\n\t if (this.done) {\n\t return;\n\t }\n\t if (isCompletion) {\n\t this.done = true;\n\t }\n\t // TODO: add payload size validation\n\t if ((0, Fragmenter_1.isFragmentable)(payload, this.fragmentSize, Frames_1.FrameTypes.PAYLOAD)) {\n\t try {\n\t for (var _b = __values((0, Fragmenter_1.fragment)(this.streamId, payload, this.fragmentSize, Frames_1.FrameTypes.PAYLOAD, isCompletion)), _c = _b.next(); !_c.done; _c = _b.next()) {\n\t var frame = _c.value;\n\t this.stream.send(frame);\n\t }\n\t }\n\t catch (e_2_1) { e_2 = { error: e_2_1 }; }\n\t finally {\n\t try {\n\t if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n\t }\n\t finally { if (e_2) throw e_2.error; }\n\t }\n\t }\n\t else {\n\t this.stream.send({\n\t type: Frames_1.FrameTypes.PAYLOAD,\n\t flags: Frames_1.Flags.NEXT |\n\t (isCompletion ? Frames_1.Flags.COMPLETE : Frames_1.Flags.NONE) |\n\t (payload.metadata ? Frames_1.Flags.METADATA : Frames_1.Flags.NONE),\n\t data: payload.data,\n\t metadata: payload.metadata,\n\t streamId: this.streamId,\n\t });\n\t }\n\t if (isCompletion) {\n\t this.stream.disconnect(this);\n\t }\n\t };\n\t RequestStreamResponderStream.prototype.onComplete = function () {\n\t if (this.done) {\n\t return;\n\t }\n\t this.done = true;\n\t this.stream.send({\n\t type: Frames_1.FrameTypes.PAYLOAD,\n\t flags: Frames_1.Flags.COMPLETE,\n\t streamId: this.streamId,\n\t data: null,\n\t metadata: null,\n\t });\n\t this.stream.disconnect(this);\n\t };\n\t RequestStreamResponderStream.prototype.onExtension = function (extendedType, content, canBeIgnored) {\n\t if (this.done) {\n\t return;\n\t }\n\t this.stream.send({\n\t type: Frames_1.FrameTypes.EXT,\n\t streamId: this.streamId,\n\t flags: canBeIgnored ? Frames_1.Flags.IGNORE : Frames_1.Flags.NONE,\n\t extendedType: extendedType,\n\t extendedContent: content,\n\t });\n\t };\n\t RequestStreamResponderStream.prototype.close = function (error) {\n\t var _a;\n\t if (this.done) {\n\t console.warn(\"Trying to close for the second time. \".concat(error ? \"Dropping error [\".concat(error, \"].\") : \"\"));\n\t return;\n\t }\n\t Reassembler.cancel(this);\n\t (_a = this.receiver) === null || _a === void 0 ? void 0 : _a.cancel();\n\t };\n\t return RequestStreamResponderStream;\n\t}());\n\tRequestStreamStream.RequestStreamResponderStream = RequestStreamResponderStream;\n\t\n\treturn RequestStreamStream;\n}\n\nvar hasRequiredRSocketSupport;\n\nfunction requireRSocketSupport () {\n\tif (hasRequiredRSocketSupport) return RSocketSupport;\n\thasRequiredRSocketSupport = 1;\n\t/*\n\t * Copyright 2021-2022 the original author or authors.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t */\n\tObject.defineProperty(RSocketSupport, \"__esModule\", { value: true });\n\tRSocketSupport.KeepAliveSender = RSocketSupport.KeepAliveHandler = RSocketSupport.DefaultConnectionFrameHandler = RSocketSupport.DefaultStreamRequestHandler = RSocketSupport.LeaseHandler = RSocketSupport.RSocketRequester = void 0;\n\tvar Errors_1 = requireErrors();\n\tvar Frames_1 = requireFrames();\n\tvar RequestChannelStream_1 = requireRequestChannelStream();\n\tvar RequestFnFStream_1 = requireRequestFnFStream();\n\tvar RequestResponseStream_1 = requireRequestResponseStream();\n\tvar RequestStreamStream_1 = requireRequestStreamStream();\n\tvar RSocketRequester = /** @class */ (function () {\n\t function RSocketRequester(connection, fragmentSize, leaseManager) {\n\t this.connection = connection;\n\t this.fragmentSize = fragmentSize;\n\t this.leaseManager = leaseManager;\n\t }\n\t RSocketRequester.prototype.fireAndForget = function (payload, responderStream) {\n\t var handler = new RequestFnFStream_1.RequestFnFRequesterStream(payload, responderStream, this.fragmentSize, this.leaseManager);\n\t if (this.leaseManager) {\n\t this.leaseManager.requestLease(handler);\n\t }\n\t else {\n\t this.connection.multiplexerDemultiplexer.createRequestStream(handler);\n\t }\n\t return handler;\n\t };\n\t RSocketRequester.prototype.requestResponse = function (payload, responderStream) {\n\t var handler = new RequestResponseStream_1.RequestResponseRequesterStream(payload, responderStream, this.fragmentSize, this.leaseManager);\n\t if (this.leaseManager) {\n\t this.leaseManager.requestLease(handler);\n\t }\n\t else {\n\t this.connection.multiplexerDemultiplexer.createRequestStream(handler);\n\t }\n\t return handler;\n\t };\n\t RSocketRequester.prototype.requestStream = function (payload, initialRequestN, responderStream) {\n\t var handler = new RequestStreamStream_1.RequestStreamRequesterStream(payload, responderStream, this.fragmentSize, initialRequestN, this.leaseManager);\n\t if (this.leaseManager) {\n\t this.leaseManager.requestLease(handler);\n\t }\n\t else {\n\t this.connection.multiplexerDemultiplexer.createRequestStream(handler);\n\t }\n\t return handler;\n\t };\n\t RSocketRequester.prototype.requestChannel = function (payload, initialRequestN, isCompleted, responderStream) {\n\t var handler = new RequestChannelStream_1.RequestChannelRequesterStream(payload, isCompleted, responderStream, this.fragmentSize, initialRequestN, this.leaseManager);\n\t if (this.leaseManager) {\n\t this.leaseManager.requestLease(handler);\n\t }\n\t else {\n\t this.connection.multiplexerDemultiplexer.createRequestStream(handler);\n\t }\n\t return handler;\n\t };\n\t RSocketRequester.prototype.metadataPush = function (metadata, responderStream) {\n\t throw new Error(\"Method not implemented.\");\n\t };\n\t RSocketRequester.prototype.close = function (error) {\n\t this.connection.close(error);\n\t };\n\t RSocketRequester.prototype.onClose = function (callback) {\n\t this.connection.onClose(callback);\n\t };\n\t return RSocketRequester;\n\t}());\n\tRSocketSupport.RSocketRequester = RSocketRequester;\n\tvar LeaseHandler = /** @class */ (function () {\n\t function LeaseHandler(maxPendingRequests, multiplexer) {\n\t this.maxPendingRequests = maxPendingRequests;\n\t this.multiplexer = multiplexer;\n\t this.pendingRequests = [];\n\t this.expirationTime = 0;\n\t this.availableLease = 0;\n\t }\n\t LeaseHandler.prototype.handle = function (frame) {\n\t this.expirationTime = frame.ttl + Date.now();\n\t this.availableLease = frame.requestCount;\n\t while (this.availableLease > 0 && this.pendingRequests.length > 0) {\n\t var handler = this.pendingRequests.shift();\n\t this.availableLease--;\n\t this.multiplexer.createRequestStream(handler);\n\t }\n\t };\n\t LeaseHandler.prototype.requestLease = function (handler) {\n\t var availableLease = this.availableLease;\n\t if (availableLease > 0 && Date.now() < this.expirationTime) {\n\t this.availableLease = availableLease - 1;\n\t this.multiplexer.createRequestStream(handler);\n\t return;\n\t }\n\t if (this.pendingRequests.length >= this.maxPendingRequests) {\n\t handler.handleReject(new Errors_1.RSocketError(Errors_1.ErrorCodes.REJECTED, \"No available lease given\"));\n\t return;\n\t }\n\t this.pendingRequests.push(handler);\n\t };\n\t LeaseHandler.prototype.cancelRequest = function (handler) {\n\t var index = this.pendingRequests.indexOf(handler);\n\t if (index > -1) {\n\t this.pendingRequests.splice(index, 1);\n\t }\n\t };\n\t return LeaseHandler;\n\t}());\n\tRSocketSupport.LeaseHandler = LeaseHandler;\n\tvar DefaultStreamRequestHandler = /** @class */ (function () {\n\t function DefaultStreamRequestHandler(rsocket, fragmentSize) {\n\t this.rsocket = rsocket;\n\t this.fragmentSize = fragmentSize;\n\t }\n\t DefaultStreamRequestHandler.prototype.handle = function (frame, stream) {\n\t switch (frame.type) {\n\t case Frames_1.FrameTypes.REQUEST_FNF:\n\t if (this.rsocket.fireAndForget) {\n\t new RequestFnFStream_1.RequestFnfResponderStream(frame.streamId, stream, this.rsocket.fireAndForget.bind(this.rsocket), frame);\n\t }\n\t return;\n\t case Frames_1.FrameTypes.REQUEST_RESPONSE:\n\t if (this.rsocket.requestResponse) {\n\t new RequestResponseStream_1.RequestResponseResponderStream(frame.streamId, stream, this.fragmentSize, this.rsocket.requestResponse.bind(this.rsocket), frame);\n\t return;\n\t }\n\t this.rejectRequest(frame.streamId, stream);\n\t return;\n\t case Frames_1.FrameTypes.REQUEST_STREAM:\n\t if (this.rsocket.requestStream) {\n\t new RequestStreamStream_1.RequestStreamResponderStream(frame.streamId, stream, this.fragmentSize, this.rsocket.requestStream.bind(this.rsocket), frame);\n\t return;\n\t }\n\t this.rejectRequest(frame.streamId, stream);\n\t return;\n\t case Frames_1.FrameTypes.REQUEST_CHANNEL:\n\t if (this.rsocket.requestChannel) {\n\t new RequestChannelStream_1.RequestChannelResponderStream(frame.streamId, stream, this.fragmentSize, this.rsocket.requestChannel.bind(this.rsocket), frame);\n\t return;\n\t }\n\t this.rejectRequest(frame.streamId, stream);\n\t return;\n\t }\n\t };\n\t DefaultStreamRequestHandler.prototype.rejectRequest = function (streamId, stream) {\n\t stream.send({\n\t type: Frames_1.FrameTypes.ERROR,\n\t streamId: streamId,\n\t flags: Frames_1.Flags.NONE,\n\t code: Errors_1.ErrorCodes.REJECTED,\n\t message: \"No available handler found\",\n\t });\n\t };\n\t DefaultStreamRequestHandler.prototype.close = function () { };\n\t return DefaultStreamRequestHandler;\n\t}());\n\tRSocketSupport.DefaultStreamRequestHandler = DefaultStreamRequestHandler;\n\tvar DefaultConnectionFrameHandler = /** @class */ (function () {\n\t function DefaultConnectionFrameHandler(connection, keepAliveHandler, keepAliveSender, leaseHandler, rsocket) {\n\t this.connection = connection;\n\t this.keepAliveHandler = keepAliveHandler;\n\t this.keepAliveSender = keepAliveSender;\n\t this.leaseHandler = leaseHandler;\n\t this.rsocket = rsocket;\n\t }\n\t DefaultConnectionFrameHandler.prototype.handle = function (frame) {\n\t switch (frame.type) {\n\t case Frames_1.FrameTypes.KEEPALIVE:\n\t this.keepAliveHandler.handle(frame);\n\t return;\n\t case Frames_1.FrameTypes.LEASE:\n\t if (this.leaseHandler) {\n\t this.leaseHandler.handle(frame);\n\t return;\n\t }\n\t // TODO throw exception and close connection\n\t return;\n\t case Frames_1.FrameTypes.ERROR:\n\t // TODO: add code validation\n\t this.connection.close(new Errors_1.RSocketError(frame.code, frame.message));\n\t return;\n\t case Frames_1.FrameTypes.METADATA_PUSH:\n\t if (this.rsocket.metadataPush) ;\n\t return;\n\t default:\n\t this.connection.multiplexerDemultiplexer.connectionOutbound.send({\n\t type: Frames_1.FrameTypes.ERROR,\n\t streamId: 0,\n\t flags: Frames_1.Flags.NONE,\n\t message: \"Received unknown frame type\",\n\t code: Errors_1.ErrorCodes.CONNECTION_ERROR,\n\t });\n\t // TODO: throw an exception and close connection\n\t }\n\t };\n\t DefaultConnectionFrameHandler.prototype.pause = function () {\n\t var _a;\n\t this.keepAliveHandler.pause();\n\t (_a = this.keepAliveSender) === null || _a === void 0 ? void 0 : _a.pause();\n\t };\n\t DefaultConnectionFrameHandler.prototype.resume = function () {\n\t var _a;\n\t this.keepAliveHandler.start();\n\t (_a = this.keepAliveSender) === null || _a === void 0 ? void 0 : _a.start();\n\t };\n\t DefaultConnectionFrameHandler.prototype.close = function (error) {\n\t var _a;\n\t this.keepAliveHandler.close();\n\t (_a = this.rsocket.close) === null || _a === void 0 ? void 0 : _a.call(this.rsocket, error);\n\t };\n\t return DefaultConnectionFrameHandler;\n\t}());\n\tRSocketSupport.DefaultConnectionFrameHandler = DefaultConnectionFrameHandler;\n\tvar KeepAliveHandlerStates;\n\t(function (KeepAliveHandlerStates) {\n\t KeepAliveHandlerStates[KeepAliveHandlerStates[\"Paused\"] = 0] = \"Paused\";\n\t KeepAliveHandlerStates[KeepAliveHandlerStates[\"Running\"] = 1] = \"Running\";\n\t KeepAliveHandlerStates[KeepAliveHandlerStates[\"Closed\"] = 2] = \"Closed\";\n\t})(KeepAliveHandlerStates || (KeepAliveHandlerStates = {}));\n\tvar KeepAliveHandler = /** @class */ (function () {\n\t function KeepAliveHandler(connection, keepAliveTimeoutDuration) {\n\t this.connection = connection;\n\t this.keepAliveTimeoutDuration = keepAliveTimeoutDuration;\n\t this.state = KeepAliveHandlerStates.Paused;\n\t this.outbound = connection.multiplexerDemultiplexer.connectionOutbound;\n\t }\n\t KeepAliveHandler.prototype.handle = function (frame) {\n\t this.keepAliveLastReceivedMillis = Date.now();\n\t if (Frames_1.Flags.hasRespond(frame.flags)) {\n\t this.outbound.send({\n\t type: Frames_1.FrameTypes.KEEPALIVE,\n\t streamId: 0,\n\t data: frame.data,\n\t flags: frame.flags ^ Frames_1.Flags.RESPOND,\n\t lastReceivedPosition: 0,\n\t });\n\t }\n\t };\n\t KeepAliveHandler.prototype.start = function () {\n\t if (this.state !== KeepAliveHandlerStates.Paused) {\n\t return;\n\t }\n\t this.keepAliveLastReceivedMillis = Date.now();\n\t this.state = KeepAliveHandlerStates.Running;\n\t this.activeTimeout = setTimeout(this.timeoutCheck.bind(this), this.keepAliveTimeoutDuration);\n\t };\n\t KeepAliveHandler.prototype.pause = function () {\n\t if (this.state !== KeepAliveHandlerStates.Running) {\n\t return;\n\t }\n\t this.state = KeepAliveHandlerStates.Paused;\n\t clearTimeout(this.activeTimeout);\n\t };\n\t KeepAliveHandler.prototype.close = function () {\n\t this.state = KeepAliveHandlerStates.Closed;\n\t clearTimeout(this.activeTimeout);\n\t };\n\t KeepAliveHandler.prototype.timeoutCheck = function () {\n\t var now = Date.now();\n\t var noKeepAliveDuration = now - this.keepAliveLastReceivedMillis;\n\t if (noKeepAliveDuration >= this.keepAliveTimeoutDuration) {\n\t this.connection.close(new Error(\"No keep-alive acks for \".concat(this.keepAliveTimeoutDuration, \" millis\")));\n\t }\n\t else {\n\t this.activeTimeout = setTimeout(this.timeoutCheck.bind(this), Math.max(100, this.keepAliveTimeoutDuration - noKeepAliveDuration));\n\t }\n\t };\n\t return KeepAliveHandler;\n\t}());\n\tRSocketSupport.KeepAliveHandler = KeepAliveHandler;\n\tvar KeepAliveSenderStates;\n\t(function (KeepAliveSenderStates) {\n\t KeepAliveSenderStates[KeepAliveSenderStates[\"Paused\"] = 0] = \"Paused\";\n\t KeepAliveSenderStates[KeepAliveSenderStates[\"Running\"] = 1] = \"Running\";\n\t KeepAliveSenderStates[KeepAliveSenderStates[\"Closed\"] = 2] = \"Closed\";\n\t})(KeepAliveSenderStates || (KeepAliveSenderStates = {}));\n\tvar KeepAliveSender = /** @class */ (function () {\n\t function KeepAliveSender(outbound, keepAlivePeriodDuration) {\n\t this.outbound = outbound;\n\t this.keepAlivePeriodDuration = keepAlivePeriodDuration;\n\t this.state = KeepAliveSenderStates.Paused;\n\t }\n\t KeepAliveSender.prototype.sendKeepAlive = function () {\n\t this.outbound.send({\n\t type: Frames_1.FrameTypes.KEEPALIVE,\n\t streamId: 0,\n\t data: undefined,\n\t flags: Frames_1.Flags.RESPOND,\n\t lastReceivedPosition: 0,\n\t });\n\t };\n\t KeepAliveSender.prototype.start = function () {\n\t if (this.state !== KeepAliveSenderStates.Paused) {\n\t return;\n\t }\n\t this.state = KeepAliveSenderStates.Running;\n\t this.activeInterval = setInterval(this.sendKeepAlive.bind(this), this.keepAlivePeriodDuration);\n\t };\n\t KeepAliveSender.prototype.pause = function () {\n\t if (this.state !== KeepAliveSenderStates.Running) {\n\t return;\n\t }\n\t this.state = KeepAliveSenderStates.Paused;\n\t clearInterval(this.activeInterval);\n\t };\n\t KeepAliveSender.prototype.close = function () {\n\t this.state = KeepAliveSenderStates.Closed;\n\t clearInterval(this.activeInterval);\n\t };\n\t return KeepAliveSender;\n\t}());\n\tRSocketSupport.KeepAliveSender = KeepAliveSender;\n\t\n\treturn RSocketSupport;\n}\n\nvar Resume = {};\n\nvar hasRequiredResume;\n\nfunction requireResume () {\n\tif (hasRequiredResume) return Resume;\n\thasRequiredResume = 1;\n\t/*\n\t * Copyright 2021-2022 the original author or authors.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t */\n\tvar __values = (Resume && Resume.__values) || function(o) {\n\t var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n\t if (m) return m.call(o);\n\t if (o && typeof o.length === \"number\") return {\n\t next: function () {\n\t if (o && i >= o.length) o = void 0;\n\t return { value: o && o[i++], done: !o };\n\t }\n\t };\n\t throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n\t};\n\tObject.defineProperty(Resume, \"__esModule\", { value: true });\n\tResume.FrameStore = void 0;\n\tvar _1 = requireDist$1();\n\tvar Codecs_1 = requireCodecs();\n\tvar FrameStore = /** @class */ (function () {\n\t function FrameStore() {\n\t this.storedFrames = [];\n\t this._lastReceivedFramePosition = 0;\n\t this._firstAvailableFramePosition = 0;\n\t this._lastSentFramePosition = 0;\n\t }\n\t Object.defineProperty(FrameStore.prototype, \"lastReceivedFramePosition\", {\n\t get: function () {\n\t return this._lastReceivedFramePosition;\n\t },\n\t enumerable: false,\n\t configurable: true\n\t });\n\t Object.defineProperty(FrameStore.prototype, \"firstAvailableFramePosition\", {\n\t get: function () {\n\t return this._firstAvailableFramePosition;\n\t },\n\t enumerable: false,\n\t configurable: true\n\t });\n\t Object.defineProperty(FrameStore.prototype, \"lastSentFramePosition\", {\n\t get: function () {\n\t return this._lastSentFramePosition;\n\t },\n\t enumerable: false,\n\t configurable: true\n\t });\n\t FrameStore.prototype.store = function (frame) {\n\t this._lastSentFramePosition += (0, Codecs_1.sizeOfFrame)(frame);\n\t this.storedFrames.push(frame);\n\t };\n\t FrameStore.prototype.record = function (frame) {\n\t this._lastReceivedFramePosition += (0, Codecs_1.sizeOfFrame)(frame);\n\t };\n\t FrameStore.prototype.dropTo = function (lastReceivedPosition) {\n\t var bytesToDrop = lastReceivedPosition - this._firstAvailableFramePosition;\n\t while (bytesToDrop > 0 && this.storedFrames.length > 0) {\n\t var storedFrame = this.storedFrames.shift();\n\t bytesToDrop -= (0, Codecs_1.sizeOfFrame)(storedFrame);\n\t }\n\t if (bytesToDrop !== 0) {\n\t throw new _1.RSocketError(_1.ErrorCodes.CONNECTION_ERROR, \"State inconsistency. Expected bytes to drop \".concat(lastReceivedPosition - this._firstAvailableFramePosition, \" but actual \").concat(bytesToDrop));\n\t }\n\t this._firstAvailableFramePosition = lastReceivedPosition;\n\t };\n\t FrameStore.prototype.drain = function (consumer) {\n\t var e_1, _a;\n\t try {\n\t for (var _b = __values(this.storedFrames), _c = _b.next(); !_c.done; _c = _b.next()) {\n\t var frame = _c.value;\n\t consumer(frame);\n\t }\n\t }\n\t catch (e_1_1) { e_1 = { error: e_1_1 }; }\n\t finally {\n\t try {\n\t if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n\t }\n\t finally { if (e_1) throw e_1.error; }\n\t }\n\t };\n\t return FrameStore;\n\t}());\n\tResume.FrameStore = FrameStore;\n\t\n\treturn Resume;\n}\n\nvar hasRequiredRSocketConnector;\n\nfunction requireRSocketConnector () {\n\tif (hasRequiredRSocketConnector) return RSocketConnector;\n\thasRequiredRSocketConnector = 1;\n\t/*\n\t * Copyright 2021-2022 the original author or authors.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t */\n\tvar __awaiter = (RSocketConnector && RSocketConnector.__awaiter) || function (thisArg, _arguments, P, generator) {\n\t function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n\t return new (P || (P = Promise))(function (resolve, reject) {\n\t function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n\t function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n\t function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n\t step((generator = generator.apply(thisArg, _arguments || [])).next());\n\t });\n\t};\n\tvar __generator = (RSocketConnector && RSocketConnector.__generator) || function (thisArg, body) {\n\t var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n\t return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n\t function verb(n) { return function (v) { return step([n, v]); }; }\n\t function step(op) {\n\t if (f) throw new TypeError(\"Generator is already executing.\");\n\t while (_) try {\n\t if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n\t if (y = 0, t) op = [op[0] & 2, t.value];\n\t switch (op[0]) {\n\t case 0: case 1: t = op; break;\n\t case 4: _.label++; return { value: op[1], done: false };\n\t case 5: _.label++; y = op[1]; op = [0]; continue;\n\t case 7: op = _.ops.pop(); _.trys.pop(); continue;\n\t default:\n\t if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n\t if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n\t if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n\t if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n\t if (t[2]) _.ops.pop();\n\t _.trys.pop(); continue;\n\t }\n\t op = body.call(thisArg, _);\n\t } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n\t if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n\t }\n\t};\n\tObject.defineProperty(RSocketConnector, \"__esModule\", { value: true });\n\tRSocketConnector.RSocketConnector = void 0;\n\tvar ClientServerMultiplexerDemultiplexer_1 = requireClientServerMultiplexerDemultiplexer();\n\tvar Frames_1 = requireFrames();\n\tvar RSocketSupport_1 = requireRSocketSupport();\n\tvar Resume_1 = requireResume();\n\tvar RSocketConnector$1 = /** @class */ (function () {\n\t function RSocketConnector(config) {\n\t this.config = config;\n\t }\n\t RSocketConnector.prototype.connect = function () {\n\t var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v;\n\t return __awaiter(this, void 0, void 0, function () {\n\t var config, setupFrame, connection, keepAliveSender, keepAliveHandler, leaseHandler, responder, connectionFrameHandler, streamsHandler;\n\t var _this = this;\n\t return __generator(this, function (_w) {\n\t switch (_w.label) {\n\t case 0:\n\t config = this.config;\n\t setupFrame = {\n\t type: Frames_1.FrameTypes.SETUP,\n\t dataMimeType: (_b = (_a = config.setup) === null || _a === void 0 ? void 0 : _a.dataMimeType) !== null && _b !== void 0 ? _b : \"application/octet-stream\",\n\t metadataMimeType: (_d = (_c = config.setup) === null || _c === void 0 ? void 0 : _c.metadataMimeType) !== null && _d !== void 0 ? _d : \"application/octet-stream\",\n\t keepAlive: (_f = (_e = config.setup) === null || _e === void 0 ? void 0 : _e.keepAlive) !== null && _f !== void 0 ? _f : 60000,\n\t lifetime: (_h = (_g = config.setup) === null || _g === void 0 ? void 0 : _g.lifetime) !== null && _h !== void 0 ? _h : 300000,\n\t metadata: (_k = (_j = config.setup) === null || _j === void 0 ? void 0 : _j.payload) === null || _k === void 0 ? void 0 : _k.metadata,\n\t data: (_m = (_l = config.setup) === null || _l === void 0 ? void 0 : _l.payload) === null || _m === void 0 ? void 0 : _m.data,\n\t resumeToken: (_p = (_o = config.resume) === null || _o === void 0 ? void 0 : _o.tokenGenerator()) !== null && _p !== void 0 ? _p : null,\n\t streamId: 0,\n\t majorVersion: 1,\n\t minorVersion: 0,\n\t flags: (((_r = (_q = config.setup) === null || _q === void 0 ? void 0 : _q.payload) === null || _r === void 0 ? void 0 : _r.metadata) ? Frames_1.Flags.METADATA : Frames_1.Flags.NONE) |\n\t (config.lease ? Frames_1.Flags.LEASE : Frames_1.Flags.NONE) |\n\t (config.resume ? Frames_1.Flags.RESUME_ENABLE : Frames_1.Flags.NONE),\n\t };\n\t return [4 /*yield*/, config.transport.connect(function (outbound) {\n\t return config.resume\n\t ? new ClientServerMultiplexerDemultiplexer_1.ResumableClientServerInputMultiplexerDemultiplexer(ClientServerMultiplexerDemultiplexer_1.StreamIdGenerator.create(-1), outbound, outbound, new Resume_1.FrameStore(), // TODO: add size control\n\t setupFrame.resumeToken.toString(), function (self, frameStore) { return __awaiter(_this, void 0, void 0, function () {\n\t var multiplexerDemultiplexerProvider, reconnectionAttempts, reconnector;\n\t return __generator(this, function (_a) {\n\t switch (_a.label) {\n\t case 0:\n\t multiplexerDemultiplexerProvider = function (outbound) {\n\t outbound.send({\n\t type: Frames_1.FrameTypes.RESUME,\n\t streamId: 0,\n\t flags: Frames_1.Flags.NONE,\n\t clientPosition: frameStore.firstAvailableFramePosition,\n\t serverPosition: frameStore.lastReceivedFramePosition,\n\t majorVersion: setupFrame.minorVersion,\n\t minorVersion: setupFrame.majorVersion,\n\t resumeToken: setupFrame.resumeToken,\n\t });\n\t return new ClientServerMultiplexerDemultiplexer_1.ResumeOkAwaitingResumableClientServerInputMultiplexerDemultiplexer(outbound, outbound, self);\n\t };\n\t reconnectionAttempts = -1;\n\t reconnector = function () {\n\t reconnectionAttempts++;\n\t return config.resume\n\t .reconnectFunction(reconnectionAttempts)\n\t .then(function () {\n\t return config.transport\n\t .connect(multiplexerDemultiplexerProvider)\n\t .catch(reconnector);\n\t });\n\t };\n\t return [4 /*yield*/, reconnector()];\n\t case 1:\n\t _a.sent();\n\t return [2 /*return*/];\n\t }\n\t });\n\t }); })\n\t : new ClientServerMultiplexerDemultiplexer_1.ClientServerInputMultiplexerDemultiplexer(ClientServerMultiplexerDemultiplexer_1.StreamIdGenerator.create(-1), outbound, outbound);\n\t })];\n\t case 1:\n\t connection = _w.sent();\n\t keepAliveSender = new RSocketSupport_1.KeepAliveSender(connection.multiplexerDemultiplexer.connectionOutbound, setupFrame.keepAlive);\n\t keepAliveHandler = new RSocketSupport_1.KeepAliveHandler(connection, setupFrame.lifetime);\n\t leaseHandler = config.lease\n\t ? new RSocketSupport_1.LeaseHandler((_s = config.lease.maxPendingRequests) !== null && _s !== void 0 ? _s : 256, connection.multiplexerDemultiplexer)\n\t : undefined;\n\t responder = (_t = config.responder) !== null && _t !== void 0 ? _t : {};\n\t connectionFrameHandler = new RSocketSupport_1.DefaultConnectionFrameHandler(connection, keepAliveHandler, keepAliveSender, leaseHandler, responder);\n\t streamsHandler = new RSocketSupport_1.DefaultStreamRequestHandler(responder, 0);\n\t connection.onClose(function (e) {\n\t keepAliveSender.close();\n\t keepAliveHandler.close();\n\t connectionFrameHandler.close(e);\n\t });\n\t connection.multiplexerDemultiplexer.connectionInbound(connectionFrameHandler);\n\t connection.multiplexerDemultiplexer.handleRequestStream(streamsHandler);\n\t connection.multiplexerDemultiplexer.connectionOutbound.send(setupFrame);\n\t keepAliveHandler.start();\n\t keepAliveSender.start();\n\t return [2 /*return*/, new RSocketSupport_1.RSocketRequester(connection, (_v = (_u = config.fragmentation) === null || _u === void 0 ? void 0 : _u.maxOutboundFragmentSize) !== null && _v !== void 0 ? _v : 0, leaseHandler)];\n\t }\n\t });\n\t });\n\t };\n\t return RSocketConnector;\n\t}());\n\tRSocketConnector.RSocketConnector = RSocketConnector$1;\n\t\n\treturn RSocketConnector;\n}\n\nvar RSocketServer = {};\n\nvar hasRequiredRSocketServer;\n\nfunction requireRSocketServer () {\n\tif (hasRequiredRSocketServer) return RSocketServer;\n\thasRequiredRSocketServer = 1;\n\t/*\n\t * Copyright 2021-2022 the original author or authors.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t */\n\tvar __awaiter = (RSocketServer && RSocketServer.__awaiter) || function (thisArg, _arguments, P, generator) {\n\t function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n\t return new (P || (P = Promise))(function (resolve, reject) {\n\t function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n\t function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n\t function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n\t step((generator = generator.apply(thisArg, _arguments || [])).next());\n\t });\n\t};\n\tvar __generator = (RSocketServer && RSocketServer.__generator) || function (thisArg, body) {\n\t var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n\t return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n\t function verb(n) { return function (v) { return step([n, v]); }; }\n\t function step(op) {\n\t if (f) throw new TypeError(\"Generator is already executing.\");\n\t while (_) try {\n\t if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n\t if (y = 0, t) op = [op[0] & 2, t.value];\n\t switch (op[0]) {\n\t case 0: case 1: t = op; break;\n\t case 4: _.label++; return { value: op[1], done: false };\n\t case 5: _.label++; y = op[1]; op = [0]; continue;\n\t case 7: op = _.ops.pop(); _.trys.pop(); continue;\n\t default:\n\t if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n\t if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n\t if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n\t if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n\t if (t[2]) _.ops.pop();\n\t _.trys.pop(); continue;\n\t }\n\t op = body.call(thisArg, _);\n\t } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n\t if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n\t }\n\t};\n\tObject.defineProperty(RSocketServer, \"__esModule\", { value: true });\n\tRSocketServer.RSocketServer = void 0;\n\tvar ClientServerMultiplexerDemultiplexer_1 = requireClientServerMultiplexerDemultiplexer();\n\tvar Errors_1 = requireErrors();\n\tvar Frames_1 = requireFrames();\n\tvar RSocketSupport_1 = requireRSocketSupport();\n\tvar Resume_1 = requireResume();\n\tvar RSocketServer$1 = /** @class */ (function () {\n\t function RSocketServer(config) {\n\t var _a, _b;\n\t this.acceptor = config.acceptor;\n\t this.transport = config.transport;\n\t this.lease = config.lease;\n\t this.serverSideKeepAlive = config.serverSideKeepAlive;\n\t this.sessionStore = config.resume ? {} : undefined;\n\t this.sessionTimeout = (_b = (_a = config.resume) === null || _a === void 0 ? void 0 : _a.sessionTimeout) !== null && _b !== void 0 ? _b : undefined;\n\t }\n\t RSocketServer.prototype.bind = function () {\n\t return __awaiter(this, void 0, void 0, function () {\n\t var _this = this;\n\t return __generator(this, function (_a) {\n\t switch (_a.label) {\n\t case 0: return [4 /*yield*/, this.transport.bind(function (frame, connection) { return __awaiter(_this, void 0, void 0, function () {\n\t var _a, error, error, leaseHandler, requester, responder, keepAliveHandler_1, keepAliveSender_1, connectionFrameHandler_1, streamsHandler, e_1;\n\t var _b, _c, _d, _e;\n\t return __generator(this, function (_f) {\n\t switch (_f.label) {\n\t case 0:\n\t _a = frame.type;\n\t switch (_a) {\n\t case Frames_1.FrameTypes.SETUP: return [3 /*break*/, 1];\n\t case Frames_1.FrameTypes.RESUME: return [3 /*break*/, 5];\n\t }\n\t return [3 /*break*/, 6];\n\t case 1:\n\t _f.trys.push([1, 3, , 4]);\n\t if (this.lease && !Frames_1.Flags.hasLease(frame.flags)) {\n\t error = new Errors_1.RSocketError(Errors_1.ErrorCodes.REJECTED_SETUP, \"Lease has to be enabled\");\n\t connection.multiplexerDemultiplexer.connectionOutbound.send({\n\t type: Frames_1.FrameTypes.ERROR,\n\t streamId: 0,\n\t flags: Frames_1.Flags.NONE,\n\t code: error.code,\n\t message: error.message,\n\t });\n\t connection.close(error);\n\t return [2 /*return*/];\n\t }\n\t if (Frames_1.Flags.hasLease(frame.flags) && !this.lease) {\n\t error = new Errors_1.RSocketError(Errors_1.ErrorCodes.REJECTED_SETUP, \"Lease has to be disabled\");\n\t connection.multiplexerDemultiplexer.connectionOutbound.send({\n\t type: Frames_1.FrameTypes.ERROR,\n\t streamId: 0,\n\t flags: Frames_1.Flags.NONE,\n\t code: error.code,\n\t message: error.message,\n\t });\n\t connection.close(error);\n\t return [2 /*return*/];\n\t }\n\t leaseHandler = Frames_1.Flags.hasLease(frame.flags)\n\t ? new RSocketSupport_1.LeaseHandler((_b = this.lease.maxPendingRequests) !== null && _b !== void 0 ? _b : 256, connection.multiplexerDemultiplexer)\n\t : undefined;\n\t requester = new RSocketSupport_1.RSocketRequester(connection, (_d = (_c = this.fragmentation) === null || _c === void 0 ? void 0 : _c.maxOutboundFragmentSize) !== null && _d !== void 0 ? _d : 0, leaseHandler);\n\t return [4 /*yield*/, this.acceptor.accept({\n\t data: frame.data,\n\t dataMimeType: frame.dataMimeType,\n\t metadata: frame.metadata,\n\t metadataMimeType: frame.metadataMimeType,\n\t flags: frame.flags,\n\t keepAliveMaxLifetime: frame.lifetime,\n\t keepAliveInterval: frame.keepAlive,\n\t resumeToken: frame.resumeToken,\n\t }, requester)];\n\t case 2:\n\t responder = _f.sent();\n\t keepAliveHandler_1 = new RSocketSupport_1.KeepAliveHandler(connection, frame.lifetime);\n\t keepAliveSender_1 = this.serverSideKeepAlive\n\t ? new RSocketSupport_1.KeepAliveSender(connection.multiplexerDemultiplexer.connectionOutbound, frame.keepAlive)\n\t : undefined;\n\t connectionFrameHandler_1 = new RSocketSupport_1.DefaultConnectionFrameHandler(connection, keepAliveHandler_1, keepAliveSender_1, leaseHandler, responder);\n\t streamsHandler = new RSocketSupport_1.DefaultStreamRequestHandler(responder, 0);\n\t connection.onClose(function (e) {\n\t keepAliveSender_1 === null || keepAliveSender_1 === void 0 ? void 0 : keepAliveSender_1.close();\n\t keepAliveHandler_1.close();\n\t connectionFrameHandler_1.close(e);\n\t });\n\t connection.multiplexerDemultiplexer.connectionInbound(connectionFrameHandler_1);\n\t connection.multiplexerDemultiplexer.handleRequestStream(streamsHandler);\n\t keepAliveHandler_1.start();\n\t keepAliveSender_1 === null || keepAliveSender_1 === void 0 ? void 0 : keepAliveSender_1.start();\n\t return [3 /*break*/, 4];\n\t case 3:\n\t e_1 = _f.sent();\n\t connection.multiplexerDemultiplexer.connectionOutbound.send({\n\t type: Frames_1.FrameTypes.ERROR,\n\t streamId: 0,\n\t code: Errors_1.ErrorCodes.REJECTED_SETUP,\n\t message: (_e = e_1.message) !== null && _e !== void 0 ? _e : \"\",\n\t flags: Frames_1.Flags.NONE,\n\t });\n\t connection.close(e_1 instanceof Errors_1.RSocketError\n\t ? e_1\n\t : new Errors_1.RSocketError(Errors_1.ErrorCodes.REJECTED_SETUP, e_1.message));\n\t return [3 /*break*/, 4];\n\t case 4: return [2 /*return*/];\n\t case 5:\n\t {\n\t // frame should be handled earlier\n\t return [2 /*return*/];\n\t }\n\t case 6:\n\t {\n\t connection.multiplexerDemultiplexer.connectionOutbound.send({\n\t type: Frames_1.FrameTypes.ERROR,\n\t streamId: 0,\n\t code: Errors_1.ErrorCodes.UNSUPPORTED_SETUP,\n\t message: \"Unsupported setup\",\n\t flags: Frames_1.Flags.NONE,\n\t });\n\t connection.close(new Errors_1.RSocketError(Errors_1.ErrorCodes.UNSUPPORTED_SETUP));\n\t }\n\t _f.label = 7;\n\t case 7: return [2 /*return*/];\n\t }\n\t });\n\t }); }, function (frame, outbound) {\n\t if (frame.type === Frames_1.FrameTypes.RESUME) {\n\t if (_this.sessionStore) {\n\t var multiplexerDemultiplexer = _this.sessionStore[frame.resumeToken.toString()];\n\t if (!multiplexerDemultiplexer) {\n\t outbound.send({\n\t type: Frames_1.FrameTypes.ERROR,\n\t streamId: 0,\n\t code: Errors_1.ErrorCodes.REJECTED_RESUME,\n\t message: \"No session found for the given resume token\",\n\t flags: Frames_1.Flags.NONE,\n\t });\n\t outbound.close();\n\t return;\n\t }\n\t multiplexerDemultiplexer.resume(frame, outbound, outbound);\n\t return multiplexerDemultiplexer;\n\t }\n\t outbound.send({\n\t type: Frames_1.FrameTypes.ERROR,\n\t streamId: 0,\n\t code: Errors_1.ErrorCodes.REJECTED_RESUME,\n\t message: \"Resume is not enabled\",\n\t flags: Frames_1.Flags.NONE,\n\t });\n\t outbound.close();\n\t return;\n\t }\n\t else if (frame.type === Frames_1.FrameTypes.SETUP) {\n\t if (Frames_1.Flags.hasResume(frame.flags)) {\n\t if (!_this.sessionStore) {\n\t var error = new Errors_1.RSocketError(Errors_1.ErrorCodes.REJECTED_SETUP, \"No resume support\");\n\t outbound.send({\n\t type: Frames_1.FrameTypes.ERROR,\n\t streamId: 0,\n\t flags: Frames_1.Flags.NONE,\n\t code: error.code,\n\t message: error.message,\n\t });\n\t outbound.close(error);\n\t return;\n\t }\n\t var multiplexerDumiltiplexer = new ClientServerMultiplexerDemultiplexer_1.ResumableClientServerInputMultiplexerDemultiplexer(ClientServerMultiplexerDemultiplexer_1.StreamIdGenerator.create(0), outbound, outbound, new Resume_1.FrameStore(), // TODO: add size parameter\n\t frame.resumeToken.toString(), _this.sessionStore, _this.sessionTimeout);\n\t _this.sessionStore[frame.resumeToken.toString()] =\n\t multiplexerDumiltiplexer;\n\t return multiplexerDumiltiplexer;\n\t }\n\t }\n\t return new ClientServerMultiplexerDemultiplexer_1.ClientServerInputMultiplexerDemultiplexer(ClientServerMultiplexerDemultiplexer_1.StreamIdGenerator.create(0), outbound, outbound);\n\t })];\n\t case 1: return [2 /*return*/, _a.sent()];\n\t }\n\t });\n\t });\n\t };\n\t return RSocketServer;\n\t}());\n\tRSocketServer.RSocketServer = RSocketServer$1;\n\t\n\treturn RSocketServer;\n}\n\nvar Transport = {};\n\nvar hasRequiredTransport;\n\nfunction requireTransport () {\n\tif (hasRequiredTransport) return Transport;\n\thasRequiredTransport = 1;\n\t/*\n\t * Copyright 2021-2022 the original author or authors.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t */\n\tObject.defineProperty(Transport, \"__esModule\", { value: true });\n\t\n\treturn Transport;\n}\n\nvar hasRequiredDist$1;\n\nfunction requireDist$1 () {\n\tif (hasRequiredDist$1) return dist$1;\n\thasRequiredDist$1 = 1;\n\t(function (exports$1) {\n\t\t/*\n\t\t * Copyright 2021-2022 the original author or authors.\n\t\t *\n\t\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t\t * you may not use this file except in compliance with the License.\n\t\t * You may obtain a copy of the License at\n\t\t *\n\t\t * http://www.apache.org/licenses/LICENSE-2.0\n\t\t *\n\t\t * Unless required by applicable law or agreed to in writing, software\n\t\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t\t * See the License for the specific language governing permissions and\n\t\t * limitations under the License.\n\t\t */\n\t\tvar __createBinding = (dist$1 && dist$1.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n\t\t if (k2 === undefined) k2 = k;\n\t\t Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n\t\t}) : (function(o, m, k, k2) {\n\t\t if (k2 === undefined) k2 = k;\n\t\t o[k2] = m[k];\n\t\t}));\n\t\tvar __exportStar = (dist$1 && dist$1.__exportStar) || function(m, exports$1) {\n\t\t for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports$1, p)) __createBinding(exports$1, m, p);\n\t\t};\n\t\tObject.defineProperty(exports$1, \"__esModule\", { value: true });\n\t\t__exportStar(requireCodecs(), exports$1);\n\t\t__exportStar(requireCommon(), exports$1);\n\t\t__exportStar(requireDeferred(), exports$1);\n\t\t__exportStar(requireErrors(), exports$1);\n\t\t__exportStar(requireFrames(), exports$1);\n\t\t__exportStar(requireRSocket(), exports$1);\n\t\t__exportStar(requireRSocketConnector(), exports$1);\n\t\t__exportStar(requireRSocketServer(), exports$1);\n\t\t__exportStar(requireTransport(), exports$1);\n\t\t\n\t} (dist$1));\n\treturn dist$1;\n}\n\nvar distExports$1 = requireDist$1();\n\nvar dist = {};\n\nvar WebsocketClientTransport = {};\n\nvar WebsocketDuplexConnection = {};\n\nvar hasRequiredWebsocketDuplexConnection;\n\nfunction requireWebsocketDuplexConnection () {\n\tif (hasRequiredWebsocketDuplexConnection) return WebsocketDuplexConnection;\n\thasRequiredWebsocketDuplexConnection = 1;\n\t/*\n\t * Copyright 2021-2022 the original author or authors.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t */\n\tvar __extends = (WebsocketDuplexConnection && WebsocketDuplexConnection.__extends) || (function () {\n\t var extendStatics = function (d, b) {\n\t extendStatics = Object.setPrototypeOf ||\n\t ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n\t return extendStatics(d, b);\n\t };\n\t return function (d, b) {\n\t if (typeof b !== \"function\" && b !== null)\n\t throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\t extendStatics(d, b);\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t };\n\t})();\n\tObject.defineProperty(WebsocketDuplexConnection, \"__esModule\", { value: true });\n\tWebsocketDuplexConnection.WebsocketDuplexConnection = void 0;\n\tvar rsocket_core_1 = requireDist$1();\n\tvar WebsocketDuplexConnection$1 = /** @class */ (function (_super) {\n\t __extends(WebsocketDuplexConnection, _super);\n\t function WebsocketDuplexConnection(websocket, deserializer, multiplexerDemultiplexerFactory) {\n\t var _this = _super.call(this) || this;\n\t _this.websocket = websocket;\n\t _this.deserializer = deserializer;\n\t _this.handleClosed = function (e) {\n\t _this.close(new Error(e.reason || \"WebsocketDuplexConnection: Socket closed unexpectedly.\"));\n\t };\n\t _this.handleError = function (e) {\n\t _this.close(e.error);\n\t };\n\t _this.handleMessage = function (message) {\n\t try {\n\t var buffer = bufferExports.Buffer.from(message.data);\n\t var frame = _this.deserializer.deserializeFrame(buffer);\n\t _this.multiplexerDemultiplexer.handle(frame);\n\t }\n\t catch (error) {\n\t _this.close(error);\n\t }\n\t };\n\t websocket.addEventListener(\"close\", _this.handleClosed);\n\t websocket.addEventListener(\"error\", _this.handleError);\n\t websocket.addEventListener(\"message\", _this.handleMessage);\n\t _this.multiplexerDemultiplexer = multiplexerDemultiplexerFactory(_this);\n\t return _this;\n\t }\n\t Object.defineProperty(WebsocketDuplexConnection.prototype, \"availability\", {\n\t get: function () {\n\t return this.done ? 0 : 1;\n\t },\n\t enumerable: false,\n\t configurable: true\n\t });\n\t WebsocketDuplexConnection.prototype.close = function (error) {\n\t if (this.done) {\n\t _super.prototype.close.call(this, error);\n\t return;\n\t }\n\t this.websocket.removeEventListener(\"close\", this.handleClosed);\n\t this.websocket.removeEventListener(\"error\", this.handleError);\n\t this.websocket.removeEventListener(\"message\", this.handleMessage);\n\t this.websocket.close();\n\t delete this.websocket;\n\t _super.prototype.close.call(this, error);\n\t };\n\t WebsocketDuplexConnection.prototype.send = function (frame) {\n\t if (this.done) {\n\t return;\n\t }\n\t var buffer = (0, rsocket_core_1.serializeFrame)(frame);\n\t this.websocket.send(buffer);\n\t };\n\t return WebsocketDuplexConnection;\n\t}(rsocket_core_1.Deferred));\n\tWebsocketDuplexConnection.WebsocketDuplexConnection = WebsocketDuplexConnection$1;\n\t\n\treturn WebsocketDuplexConnection;\n}\n\nvar hasRequiredWebsocketClientTransport;\n\nfunction requireWebsocketClientTransport () {\n\tif (hasRequiredWebsocketClientTransport) return WebsocketClientTransport;\n\thasRequiredWebsocketClientTransport = 1;\n\t/*\n\t * Copyright 2021-2022 the original author or authors.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t */\n\tObject.defineProperty(WebsocketClientTransport, \"__esModule\", { value: true });\n\tWebsocketClientTransport.WebsocketClientTransport = void 0;\n\tvar rsocket_core_1 = requireDist$1();\n\tvar WebsocketDuplexConnection_1 = requireWebsocketDuplexConnection();\n\tvar WebsocketClientTransport$1 = /** @class */ (function () {\n\t function WebsocketClientTransport(options) {\n\t var _a;\n\t this.url = options.url;\n\t this.factory = (_a = options.wsCreator) !== null && _a !== void 0 ? _a : (function (url) { return new WebSocket(url); });\n\t }\n\t WebsocketClientTransport.prototype.connect = function (multiplexerDemultiplexerFactory) {\n\t var _this = this;\n\t return new Promise(function (resolve, reject) {\n\t var websocket = _this.factory(_this.url);\n\t websocket.binaryType = \"arraybuffer\";\n\t var openListener = function () {\n\t websocket.removeEventListener(\"open\", openListener);\n\t websocket.removeEventListener(\"error\", errorListener);\n\t resolve(new WebsocketDuplexConnection_1.WebsocketDuplexConnection(websocket, new rsocket_core_1.Deserializer(), multiplexerDemultiplexerFactory));\n\t };\n\t var errorListener = function (ev) {\n\t websocket.removeEventListener(\"open\", openListener);\n\t websocket.removeEventListener(\"error\", errorListener);\n\t reject(ev.error);\n\t };\n\t websocket.addEventListener(\"open\", openListener);\n\t websocket.addEventListener(\"error\", errorListener);\n\t });\n\t };\n\t return WebsocketClientTransport;\n\t}());\n\tWebsocketClientTransport.WebsocketClientTransport = WebsocketClientTransport$1;\n\t\n\treturn WebsocketClientTransport;\n}\n\n/*\n * Copyright 2021-2022 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar hasRequiredDist;\n\nfunction requireDist () {\n\tif (hasRequiredDist) return dist;\n\thasRequiredDist = 1;\n\t(function (exports$1) {\n\t\tvar __createBinding = (dist && dist.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n\t\t if (k2 === undefined) k2 = k;\n\t\t Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n\t\t}) : (function(o, m, k, k2) {\n\t\t if (k2 === undefined) k2 = k;\n\t\t o[k2] = m[k];\n\t\t}));\n\t\tvar __exportStar = (dist && dist.__exportStar) || function(m, exports$1) {\n\t\t for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports$1, p)) __createBinding(exports$1, m, p);\n\t\t};\n\t\tObject.defineProperty(exports$1, \"__esModule\", { value: true });\n\t\t__exportStar(requireWebsocketClientTransport(), exports$1);\n\t\t\n\t} (dist));\n\treturn dist;\n}\n\nvar distExports = requireDist();\n\nconst SYNC_QUEUE_REQUEST_HIGH_WATER = 10;\nconst SYNC_QUEUE_REQUEST_LOW_WATER = 5;\n// Keep alive message is sent every period\nconst KEEP_ALIVE_MS = 20_000;\n// One message of any type must be received in this period.\nconst SOCKET_TIMEOUT_MS = 30_000;\n// One keepalive message must be received in this period.\n// If there is a backlog of messages (for example on slow connections), keepalive messages could be delayed\n// significantly. Therefore this is longer than the socket timeout.\nconst KEEP_ALIVE_LIFETIME_MS = 90_000;\nclass WebSocketSupport {\n #platform;\n constructor(platform) {\n this.#platform = platform;\n }\n async webSocketSyncStream({ remote, buffered, request, abortSignal, requestPayload }) {\n const mimeType = 'application/json';\n const userAgent = request.userAgent;\n function toBuffer(js) {\n return bufferExports.Buffer.from(JSON.stringify(js));\n }\n const syncQueueRequestSize = buffered ? 10 : 1;\n // While we're connecting (a process that can't be aborted in RSocket), the WebSocket instance to close if we wanted\n // to abort the connection.\n let pendingSocket = null;\n let keepAliveTimeout;\n let rsocket = null;\n let paused = false;\n const queue = new this.#platform.EventQueue({\n eventDelivered: () => {\n if (queue.countOutstandingEvents <= SYNC_QUEUE_REQUEST_LOW_WATER) {\n paused = false;\n requestMore();\n }\n }\n });\n let didClose = false;\n let connectionEstablished = false;\n let pendingEventsCount = syncQueueRequestSize;\n let res = null;\n const abortRequest = () => {\n if (didClose) {\n return;\n }\n didClose = true;\n clearTimeout(keepAliveTimeout);\n if (pendingSocket) {\n pendingSocket.close();\n }\n if (rsocket) {\n rsocket.close();\n }\n // Send a bogus event to the queue to ensure a pending listener gets woken up. We check for didClose and would\n // return a doneEvent.\n queue.notify(null);\n };\n function push(event) {\n queue.notify(event);\n if (queue.countOutstandingEvents >= SYNC_QUEUE_REQUEST_HIGH_WATER) {\n paused = true;\n }\n }\n function requestMore() {\n const delta = syncQueueRequestSize - pendingEventsCount;\n if (!paused && delta > 0) {\n res?.request(delta);\n pendingEventsCount = syncQueueRequestSize;\n }\n }\n // Handle upstream abort\n if (abortSignal.aborted) {\n throw new this.#platform.AbortOperation('Connection request aborted');\n }\n else {\n abortSignal.addEventListener('abort', abortRequest);\n }\n const resetTimeout = () => {\n clearTimeout(keepAliveTimeout);\n keepAliveTimeout = setTimeout(() => {\n remote.logger.log({\n level: this.#platform.LogLevels.error,\n message: `No data received on WebSocket in ${SOCKET_TIMEOUT_MS}ms, closing connection.`\n });\n abortRequest();\n }, SOCKET_TIMEOUT_MS);\n };\n resetTimeout();\n const connector = new distExports$1.RSocketConnector({\n transport: new distExports.WebsocketClientTransport({\n url: request.url,\n wsCreator: (url) => {\n const socket = (pendingSocket = remote.createSocket(url));\n socket.addEventListener('message', () => {\n resetTimeout();\n });\n return socket;\n }\n }),\n setup: {\n keepAlive: KEEP_ALIVE_MS,\n lifetime: KEEP_ALIVE_LIFETIME_MS,\n dataMimeType: mimeType,\n metadataMimeType: mimeType,\n payload: {\n data: null,\n metadata: toBuffer({\n token: request.headers.Authorization,\n user_agent: userAgent\n })\n }\n }\n });\n try {\n rsocket = await connector.connect();\n // The connection is established, we no longer need to monitor the initial timeout\n pendingSocket = null;\n }\n catch (ex) {\n remote.logger.log({ level: this.#platform.LogLevels.error, message: `Failed to connect WebSocket`, error: ex });\n abortRequest();\n throw ex;\n }\n resetTimeout();\n // Helps to prevent double close scenarios\n rsocket.onClose(() => (rsocket = null));\n return await new Promise((resolve, reject) => {\n const queueAsIterator = {\n next: async () => {\n if (didClose)\n return doneResult;\n const notification = await queue.waitForEvent(abortSignal);\n if (didClose) {\n return doneResult;\n }\n else {\n return valueResult(notification);\n }\n }\n };\n res = rsocket.requestStream({\n data: toBuffer(requestPayload),\n metadata: toBuffer({\n path: request.path\n })\n }, syncQueueRequestSize, // The initial N amount\n {\n onError: (e) => {\n if (e.message.includes('PSYNC_')) {\n if (e.message.includes('PSYNC_S21')) {\n remote.invalidateCredentials();\n }\n }\n else {\n // Possible that connection is with an older service, always invalidate to be safe\n if (e.message !== 'Closed. ') {\n remote.invalidateCredentials();\n }\n }\n // Don't log closed as an error\n if (e.message !== 'Closed. ') {\n remote.logger.log({ level: this.#platform.LogLevels.error, message: 'RSocket error', error: e });\n }\n // RSocket will close the RSocket stream automatically\n // Close the downstream stream as well - this will close the RSocket connection and WebSocket\n abortRequest();\n // Handles cases where the connection failed e.g. auth error or connection error\n if (!connectionEstablished) {\n reject(e);\n }\n },\n onNext: (payload) => {\n // The connection is active\n if (!connectionEstablished) {\n connectionEstablished = true;\n resolve(queueAsIterator);\n }\n const { data } = payload;\n if (data) {\n push(data);\n }\n // Less events are now pending\n pendingEventsCount--;\n // Request another event (unless the downstream consumer is paused).\n requestMore();\n },\n onComplete: () => {\n abortRequest(); // this will also emit a done event\n },\n onExtension: () => { }\n });\n });\n }\n}\n\nexport { WebSocketSupport };\n//# sourceMappingURL=websockets.mjs.map\n"],"names":["hasRequiredBase64Js","buffer","base64Js","hasRequiredIeee754","hasRequiredBuffer","ieee754","requireIeee754","read","offset","isLE","mLen","nBytes","e","m","eLen","eMax","eBias","nBits","i","d","s","NaN","Infinity","Math","pow","write","value","c","rt","abs","isNaN","floor","log","LN2","bufferExports","exports$1","base64","byteLength","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","tmp","arr","Arr","_byteLength","curByte","len","revLookup","charCodeAt","fromByteArray","uint8","length","extraBytes","parts","maxChunkLength","len2","push","encodeChunk","lookup","join","Uint8Array","Array","code","Error","indexOf","tripletToBase64","num","start","end","output","requireBase64Js","customInspectSymbol","Symbol","Buffer","SlowBuffer","alloc","INSPECT_MAX_BYTES","K_MAX_LENGTH","createBuffer","RangeError","buf","Object","setPrototypeOf","prototype","arg","encodingOrOffset","TypeError","allocUnsafe","from","string","encoding","isEncoding","actual","slice","fromString","ArrayBuffer","isView","arrayView","isInstance","copy","fromArrayBuffer","byteOffset","fromArrayLike","fromArrayView","SharedArrayBuffer","valueOf","b","obj","isBuffer","checked","undefined","numberIsNaN","type","isArray","data","fromObject","toPrimitive","assertSize","size","array","toString","mustMatch","arguments","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","this","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","n","bidirectionalIndexOf","val","dir","arrayIndexOf","call","lastIndexOf","indexSize","arrLength","valLength","String","readUInt16BE","foundIndex","found","j","hexWrite","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","str","byteArray","asciiToBytes","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","min","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","apply","decodeCodePointsArray","kMaxLength","TYPED_ARRAY_SUPPORT","proto","foo","typedArraySupport","console","error","defineProperty","enumerable","get","poolSize","fill","allocUnsafeSlow","_isBuffer","compare","a","x","y","concat","list","pos","set","swap16","swap32","swap64","toLocaleString","equals","inspect","max","replace","trim","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","_arr","ret","out","hexSliceLookupTable","bytes","checkOffset","ext","checkInt","wrtBigUInt64LE","checkIntBI","BigInt","wrtBigUInt64BE","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","readUintLE","readUIntLE","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readBigUInt64LE","defineBigIntMethod","validateNumber","first","last","boundsError","readBigUInt64BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readBigInt64LE","readBigInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeBigUInt64LE","writeBigUInt64BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeBigInt64LE","writeBigInt64BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","errors","E","sym","getMessage","Base","constructor","super","writable","configurable","name","stack","message","addNumericalSeparator","range","ERR_OUT_OF_RANGE","checkBounds","ERR_INVALID_ARG_TYPE","ERR_BUFFER_OUT_OF_BOUNDS","input","msg","received","isInteger","INVALID_BASE64_RE","leadSurrogate","split","base64clean","src","dst","alphabet","table","i16","fn","BufferBigIntNotDefined","doneResult","done","hasRequiredFrames","hasRequiredCodecs","dist$1","Codecs","Frames","requireFrames","Frame","Lengths","Flags","FrameTypes","hasMetadata","flags","METADATA","hasComplete","COMPLETE","hasNext","NEXT","hasFollows","FOLLOWS","hasIgnore","IGNORE","hasRespond","RESPOND","hasLease","LEASE","hasResume","RESUME_ENABLE","isConnection","frame","streamId","isRequest","REQUEST_RESPONSE","REQUEST_CHANNEL","requireCodecs","__generator","thisArg","body","f","t","g","_","label","sent","trys","ops","next","verb","throw","return","iterator","v","op","pop","step","Deserializer","sizeOfFrame","serializeFrame","deserializeFrame","serializeFrameWithLength","deserializeFrames","deserializeFrameWithLength","writeUInt64BE","readUInt64BE","writeUInt24BE","readUInt24BE","MAX_VERSION","MAX_TTL","MAX_STREAM_ID","MAX_RESUME_LENGTH","MAX_REQUEST_N","MAX_REQUEST_COUNT","MAX_MIME_LENGTH","MAX_METADATA_LENGTH","MAX_LIFETIME","MAX_KEEPALIVE","MAX_CODE","FRAME_TYPE_OFFFSET","FLAGS_MASK","Frames_1","BITWISE_OVERFLOW","high","low","frameLength","frameStart","frameEnd","frameBuffer","_a","typeAndFlags","SETUP","majorVersion","minorVersion","keepAlive","lifetime","resumeToken","resumeTokenLength","metadataMimeTypeLength","metadataMimeType","dataMimeTypeLength","dataMimeType","metadata","readPayload","deserializeSetupFrame","PAYLOAD","deserializePayloadFrame","ERROR","messageLength","deserializeErrorFrame","KEEPALIVE","lastReceivedPosition","deserializeKeepAliveFrame","REQUEST_FNF","deserializeRequestFnfFrame","deserializeRequestResponseFrame","REQUEST_STREAM","requestN","deserializeRequestStreamFrame","deserializeRequestChannelFrame","METADATA_PUSH","deserializeMetadataPushFrame","REQUEST_N","deserializeRequestNFrame","RESUME","serverPosition","clientPosition","deserializeResumeFrame","RESUME_OK","deserializeResumeOkFrame","CANCEL","deserializeCancelFrame","ttl","requestCount","deserializeLeaseFrame","payloadLength","getPayloadLength","SETUP_FIXED_SIZE","RESUME_TOKEN_LENGTH_SIZE","writeHeader","writePayload","serializeSetupFrame","serializePayloadFrame","ERROR_FIXED_SIZE","serializeErrorFrame","dataLength","KEEPALIVE_FIXED_SIZE","serializeKeepAliveFrame","serializeRequestFrame","REQUEST_MANY_HEADER","serializeRequestManyFrame","serializeMetadataPushFrame","REQUEST_N_HEADER","serializeRequestNFrame","RESUME_FIXED_SIZE","serializeResumeFrame","RESUME_OK_FIXED_SIZE","serializeResumeOkFrame","serializeCancelFrame","metaLength","LEASE_FIXED_SIZE","serializeLeaseFrame","lengthPrefixed","sizeOfSetupFrame","sizeOfPayloadFrame","sizeOfErrorFrame","sizeOfKeepAliveFrame","sizeOfRequestFrame","sizeOfRequestManyFrame","sizeOfMetadataPushFrame","sizeOfResumeFrame","sizeOfLeaseFrame","hasRequiredCommon","Common","hasRequiredDeferred","Deferred","requireDeferred","__values","o","Deferred$1","_done","onCloseCallbacks","close","e_1","e_2","_b","warn","_error","_c","_d","callback","e_1_1","_e","_f","e_2_1","onClose","hasRequiredErrors","Errors","requireErrors","extendStatics","__extends","__proto__","p","hasOwnProperty","__","create","ErrorCodes","RSocketError","_super","_this","hasRequiredRSocket","RSocket","hasRequiredClientServerMultiplexerDemultiplexer","RSocketConnector","ClientServerMultiplexerDemultiplexer","requireClientServerMultiplexerDemultiplexer","__awaiter","_arguments","P","generator","Promise","resolve","reject","fulfilled","rejected","result","then","ResumeOkAwaitingResumableClientServerInputMultiplexerDemultiplexer","ResumableClientServerInputMultiplexerDemultiplexer","ClientServerInputMultiplexerDemultiplexer","StreamIdGenerator","_1","requireDist$1","Deferred_1","Errors_1","seedId","StreamIdGeneratorImpl","currentId","handler","nextId","streamIdSupplier","outbound","closeable","registry","bind","handle","RESERVED","connectionFramesHandler","requestFramesHandler","connectionInbound","handleRequestStream","send","createRequestStream","streamHandler","handleReject","handleReady","keys","connect","disconnect","stream","frameStore","token","sessionStoreOrReconnector","sessionTimeout","Function","reconnector","sessionStore","handleConnectionClose","lastReceivedFramePosition","store","dropTo","re","NONE","record","resume","clearTimeout","timeoutId","REJECTED_RESUME","drain","pause","setTimeout","delegate","resumed","connectionOutbound","CONNECTION_ERROR","hasRequiredFragmenter","RSocketSupport","RequestChannelStream","Fragmenter","requireFragmenter","fragmentWithRequestN","fragment","isFragmentable","payload","fragmentSize","frameType","REQUEST","isComplete","firstFrame","metadataLength","metadataPosition","nextMetadataPosition","dataPosition","nextDataPosition","hasRequiredReassembler","hasRequiredRequestChannelStream","Reassembler","requireReassembler","cancel","reassemble","add","holder","dataFragment","metadataFragment","hasFragments","hasRequiredRequestFnFStream","RequestFnFStream","hasRequiredRequestResponseStream","RequestResponseStream","hasRequiredRequestStreamStream","hasRequiredRSocketSupport","RequestStreamStream","requireRSocketSupport","KeepAliveSender","KeepAliveHandler","DefaultConnectionFrameHandler","DefaultStreamRequestHandler","LeaseHandler","RSocketRequester","RequestChannelStream_1","__createBinding","k","k2","__setModuleDefault","__importStar","mod","__esModule","RequestChannelResponderStream","RequestChannelRequesterStream","Fragmenter_1","receiver","initialRequestN","leaseManager","streamType","outboundDone","isCompleted","hasExtension","EXT","extendedContent","extendedType","inboundDone","onError","errorMessage","onComplete","onNext","request","onExtension","CANCELED","cancelRequest","APPLICATION_ERROR","content","canBeIgnored","defferedError","isCompletion","e_3","e_3_1","requireRequestChannelStream","RequestFnFStream_1","RequestFnfResponderStream","RequestFnFRequesterStream","cancellable","requireRequestFnFStream","RequestResponseStream_1","RequestResponseResponderStream","RequestResponseRequesterStream","hasPayload","requireRequestResponseStream","RequestStreamStream_1","RequestStreamResponderStream","RequestStreamRequesterStream","requireRequestStreamStream","connection","fireAndForget","responderStream","requestLease","multiplexerDemultiplexer","requestResponse","requestStream","requestChannel","metadataPush","maxPendingRequests","multiplexer","pendingRequests","expirationTime","availableLease","Date","now","shift","REJECTED","index","splice","rsocket","rejectRequest","KeepAliveHandlerStates","keepAliveHandler","keepAliveSender","leaseHandler","KeepAliveSenderStates","keepAliveTimeoutDuration","state","Paused","keepAliveLastReceivedMillis","Running","activeTimeout","timeoutCheck","Closed","noKeepAliveDuration","keepAlivePeriodDuration","sendKeepAlive","activeInterval","setInterval","clearInterval","hasRequiredResume","hasRequiredRSocketConnector","Resume","requireResume","FrameStore","Codecs_1","storedFrames","_lastReceivedFramePosition","_firstAvailableFramePosition","_lastSentFramePosition","bytesToDrop","storedFrame","consumer","requireRSocketConnector","ClientServerMultiplexerDemultiplexer_1","RSocketSupport_1","Resume_1","RSocketConnector$1","config","_g","_h","_j","_k","_l","_m","_o","_p","_q","_r","_s","_t","_u","_v","setupFrame","responder","connectionFrameHandler","streamsHandler","_w","setup","tokenGenerator","lease","transport","self","multiplexerDemultiplexerProvider","reconnectionAttempts","firstAvailableFramePosition","reconnectFunction","catch","fragmentation","maxOutboundFragmentSize","hasRequiredRSocketServer","RSocketServer","requireRSocketServer","RSocketServer$1","acceptor","serverSideKeepAlive","requester","keepAliveHandler_1","keepAliveSender_1","connectionFrameHandler_1","REJECTED_SETUP","accept","keepAliveMaxLifetime","keepAliveInterval","UNSUPPORTED_SETUP","multiplexerDumiltiplexer","hasRequiredTransport","hasRequiredDist$1","Transport","__exportStar","hasRequiredWebsocketDuplexConnection","hasRequiredWebsocketClientTransport","hasRequiredDist","distExports$1","dist","WebsocketClientTransport","WebsocketDuplexConnection","requireWebsocketClientTransport","rsocket_core_1","WebsocketDuplexConnection_1","WebsocketDuplexConnection$1","websocket","deserializer","multiplexerDemultiplexerFactory","handleClosed","reason","handleError","handleMessage","addEventListener","removeEventListener","requireWebsocketDuplexConnection","WebsocketClientTransport$1","options","url","factory","wsCreator","WebSocket","binaryType","openListener","errorListener","ev","distExports","WebSocketSupport","platform","webSocketSyncStream","remote","buffered","abortSignal","requestPayload","mimeType","userAgent","toBuffer","js","JSON","stringify","syncQueueRequestSize","keepAliveTimeout","pendingSocket","paused","queue","EventQueue","eventDelivered","countOutstandingEvents","requestMore","didClose","connectionEstablished","pendingEventsCount","abortRequest","notify","delta","aborted","AbortOperation","resetTimeout","logger","level","LogLevels","connector","socket","createSocket","headers","Authorization","user_agent","ex","queueAsIterator","async","notification","waitForEvent","path","invalidateCredentials","event"],"mappings":"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"}
|