tedious 16.4.1 → 16.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/benchmarks/bulk-load/iterable.js +1 -1
  2. package/benchmarks/common.js +2 -4
  3. package/benchmarks/package-lock.json +21173 -0
  4. package/benchmarks/package.json +11 -0
  5. package/benchmarks/query/call-tvp.js +1 -1
  6. package/benchmarks/query/insert-varbinary.js +1 -1
  7. package/benchmarks/query/select-many-rows.js +1 -1
  8. package/benchmarks/query/select-nvarchar.js +1 -1
  9. package/benchmarks/query/select-varbinary.js +1 -1
  10. package/benchmarks/request/rpcrequest-payload-tvp.js +2 -2
  11. package/benchmarks/request/rpcrequest-payload-varbinary.js +2 -2
  12. package/benchmarks/token-parser/colmetadata-token.js +4 -2
  13. package/benchmarks/token-parser/done-token.js +5 -2
  14. package/benchmarks/token-parser/simple-tokens.js +8 -2
  15. package/lib/always-encrypted/aead-aes-256-cbc-hmac-algorithm.js +1 -8
  16. package/lib/always-encrypted/aead-aes-256-cbc-hmac-algorithm.js.map +1 -1
  17. package/lib/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.js +1 -8
  18. package/lib/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.js.map +1 -1
  19. package/lib/always-encrypted/cek-entry.js +1 -7
  20. package/lib/always-encrypted/cek-entry.js.map +1 -1
  21. package/lib/always-encrypted/keystore-provider-azure-key-vault.js +1 -8
  22. package/lib/always-encrypted/keystore-provider-azure-key-vault.js.map +1 -1
  23. package/lib/always-encrypted/symmetric-key.js +1 -2
  24. package/lib/always-encrypted/symmetric-key.js.map +1 -1
  25. package/lib/bulk-load-payload.js +1 -3
  26. package/lib/bulk-load-payload.js.map +1 -1
  27. package/lib/bulk-load.js +15 -23
  28. package/lib/bulk-load.js.map +1 -1
  29. package/lib/collation.js +1 -7
  30. package/lib/collation.js.map +1 -1
  31. package/lib/connection.js +22 -28
  32. package/lib/connection.js.map +1 -1
  33. package/lib/debug.js +1 -4
  34. package/lib/debug.js.map +1 -1
  35. package/lib/errors/abort-error.js +1 -2
  36. package/lib/errors/abort-error.js.map +1 -1
  37. package/lib/errors/timeout-error.js +1 -2
  38. package/lib/errors/timeout-error.js.map +1 -1
  39. package/lib/errors.js +1 -10
  40. package/lib/errors.js.map +1 -1
  41. package/lib/incoming-message-stream.js +1 -4
  42. package/lib/incoming-message-stream.js.map +1 -1
  43. package/lib/login7-payload.js +1 -23
  44. package/lib/login7-payload.js.map +1 -1
  45. package/lib/message-io.js +1 -8
  46. package/lib/message-io.js.map +1 -1
  47. package/lib/message.js +1 -4
  48. package/lib/message.js.map +1 -1
  49. package/lib/ntlm-payload.js +1 -2
  50. package/lib/ntlm-payload.js.map +1 -1
  51. package/lib/outgoing-message-stream.js +1 -5
  52. package/lib/outgoing-message-stream.js.map +1 -1
  53. package/lib/packet.js +1 -2
  54. package/lib/packet.js.map +1 -1
  55. package/lib/prelogin-payload.js +1 -11
  56. package/lib/prelogin-payload.js.map +1 -1
  57. package/lib/request.js +13 -19
  58. package/lib/request.js.map +1 -1
  59. package/lib/rpcrequest-payload.js +1 -6
  60. package/lib/rpcrequest-payload.js.map +1 -1
  61. package/lib/sqlbatch-payload.js +1 -4
  62. package/lib/sqlbatch-payload.js.map +1 -1
  63. package/lib/token/handler.js +3 -13
  64. package/lib/token/handler.js.map +1 -1
  65. package/lib/token/stream-parser.js +1 -10
  66. package/lib/token/stream-parser.js.map +1 -1
  67. package/lib/token/token-stream-parser.js +1 -4
  68. package/lib/token/token-stream-parser.js.map +1 -1
  69. package/lib/token/token.js +2 -88
  70. package/lib/token/token.js.map +1 -1
  71. package/lib/tracking-buffer/writable-tracking-buffer.js +1 -7
  72. package/lib/tracking-buffer/writable-tracking-buffer.js.map +1 -1
  73. package/lib/transaction.js +1 -4
  74. package/lib/transaction.js.map +1 -1
  75. package/package.json +1 -1
  76. package/benchmarks/bulk-load/stream.js +0 -62
  77. package/benchmarks/bulk-load/sync.js +0 -59
@@ -1 +1 @@
1
- {"version":3,"file":"login7-payload.js","names":["_sprintfJs","require","_tdsVersions","FLAGS_1","ENDIAN_LITTLE","ENDIAN_BIG","CHARSET_ASCII","CHARSET_EBCDIC","FLOAT_IEEE_754","FLOAT_VAX","FLOAT_ND5000","BCP_DUMPLOAD_ON","BCP_DUMPLOAD_OFF","USE_DB_ON","USE_DB_OFF","INIT_DB_WARN","INIT_DB_FATAL","SET_LANG_WARN_OFF","SET_LANG_WARN_ON","FLAGS_2","INIT_LANG_WARN","INIT_LANG_FATAL","ODBC_OFF","ODBC_ON","F_TRAN_BOUNDARY","F_CACHE_CONNECT","USER_NORMAL","USER_SERVER","USER_REMUSER","USER_SQLREPL","INTEGRATED_SECURITY_OFF","INTEGRATED_SECURITY_ON","TYPE_FLAGS","SQL_DFLT","SQL_TSQL","OLEDB_OFF","OLEDB_ON","READ_WRITE_INTENT","READ_ONLY_INTENT","FLAGS_3","CHANGE_PASSWORD_NO","CHANGE_PASSWORD_YES","BINARY_XML","SPAWN_USER_INSTANCE","UNKNOWN_COLLATION_HANDLING","EXTENSION_USED","FEDAUTH_OPTIONS","FEATURE_ID","LIBRARY_SECURITYTOKEN","LIBRARY_ADAL","FEDAUTH_YES_ECHO","FEDAUTH_NO_ECHO","ADAL_WORKFLOW_USER_PASS","ADAL_WORKFLOW_INTEGRATED","FEATURE_EXT_TERMINATOR","Login7Payload","tdsVersion","packetSize","clientProgVer","clientPid","connectionId","clientTimeZone","clientLcid","readOnlyIntent","initDbFatal","userName","password","serverName","appName","hostname","libraryName","language","database","clientId","sspi","attachDbFile","changePassword","fedAuth","constructor","undefined","toBuffer","fixedData","Buffer","alloc","buffers","offset","dataOffset","length","writeUInt32LE","writeUInt8","buildOptionFlags1","buildOptionFlags2","buildTypeFlags","buildOptionFlags3","writeInt32LE","writeUInt16LE","buffer","from","push","scramblePassword","extensions","buildFeatureExt","extensionOffset","copy","data","concat","flags1","type","echo","workflow","token","fedAuthToken","buf","versions","UTF8_SUPPORT_FEATURE_ID","UTF8_SUPPORT_CLIENT_SUPPORTS_UTF8","flags2","typeFlags","b","len","byte","lowNibble","highNibble","toString","indent","sprintf","_default","exports","default","module"],"sources":["../src/login7-payload.ts"],"sourcesContent":["import { sprintf } from 'sprintf-js';\nimport { versions } from './tds-versions';\n\nconst FLAGS_1 = {\n ENDIAN_LITTLE: 0x00,\n ENDIAN_BIG: 0x01,\n CHARSET_ASCII: 0x00,\n CHARSET_EBCDIC: 0x02,\n FLOAT_IEEE_754: 0x00,\n FLOAT_VAX: 0x04,\n FLOAT_ND5000: 0x08,\n BCP_DUMPLOAD_ON: 0x00,\n BCP_DUMPLOAD_OFF: 0x10,\n USE_DB_ON: 0x00,\n USE_DB_OFF: 0x20,\n INIT_DB_WARN: 0x00,\n INIT_DB_FATAL: 0x40,\n SET_LANG_WARN_OFF: 0x00,\n SET_LANG_WARN_ON: 0x80\n};\n\nconst FLAGS_2 = {\n INIT_LANG_WARN: 0x00,\n INIT_LANG_FATAL: 0x01,\n ODBC_OFF: 0x00,\n ODBC_ON: 0x02,\n F_TRAN_BOUNDARY: 0x04,\n F_CACHE_CONNECT: 0x08,\n USER_NORMAL: 0x00,\n USER_SERVER: 0x10,\n USER_REMUSER: 0x20,\n USER_SQLREPL: 0x40,\n INTEGRATED_SECURITY_OFF: 0x00,\n INTEGRATED_SECURITY_ON: 0x80\n};\n\nconst TYPE_FLAGS = {\n SQL_DFLT: 0x00,\n SQL_TSQL: 0x08,\n OLEDB_OFF: 0x00,\n OLEDB_ON: 0x10,\n READ_WRITE_INTENT: 0x00,\n READ_ONLY_INTENT: 0x20\n};\n\nconst FLAGS_3 = {\n CHANGE_PASSWORD_NO: 0x00,\n CHANGE_PASSWORD_YES: 0x01,\n BINARY_XML: 0x02,\n SPAWN_USER_INSTANCE: 0x04,\n UNKNOWN_COLLATION_HANDLING: 0x08,\n EXTENSION_USED: 0x10\n};\n\nconst FEDAUTH_OPTIONS = {\n FEATURE_ID: 0x02,\n LIBRARY_SECURITYTOKEN: 0x01,\n LIBRARY_ADAL: 0x02,\n FEDAUTH_YES_ECHO: 0x01,\n FEDAUTH_NO_ECHO: 0x00,\n ADAL_WORKFLOW_USER_PASS: 0x01,\n ADAL_WORKFLOW_INTEGRATED: 0x02\n};\n\nconst FEATURE_EXT_TERMINATOR = 0xFF;\n\ninterface Options {\n tdsVersion: number;\n packetSize: number;\n clientProgVer: number;\n clientPid: number;\n connectionId: number;\n clientTimeZone: number;\n clientLcid: number;\n}\n\n/*\n s2.2.6.3\n */\nclass Login7Payload {\n tdsVersion: number;\n packetSize: number;\n clientProgVer: number;\n clientPid: number;\n connectionId: number;\n clientTimeZone: number;\n clientLcid: number;\n\n readOnlyIntent: boolean;\n initDbFatal: boolean;\n\n userName: string | undefined;\n password: string | undefined;\n serverName: string | undefined;\n appName: string | undefined;\n hostname: string | undefined;\n libraryName: string | undefined;\n language: string | undefined;\n database: string | undefined;\n clientId: Buffer | undefined;\n sspi: Buffer | undefined;\n attachDbFile: string | undefined;\n changePassword: string | undefined;\n\n fedAuth: { type: 'ADAL', echo: boolean, workflow: 'default' | 'integrated' } | { type: 'SECURITYTOKEN', echo: boolean, fedAuthToken: string } | undefined;\n\n constructor({ tdsVersion, packetSize, clientProgVer, clientPid, connectionId, clientTimeZone, clientLcid }: Options) {\n this.tdsVersion = tdsVersion;\n this.packetSize = packetSize;\n this.clientProgVer = clientProgVer;\n this.clientPid = clientPid;\n this.connectionId = connectionId;\n this.clientTimeZone = clientTimeZone;\n this.clientLcid = clientLcid;\n\n this.readOnlyIntent = false;\n this.initDbFatal = false;\n\n this.fedAuth = undefined;\n\n this.userName = undefined;\n this.password = undefined;\n this.serverName = undefined;\n this.appName = undefined;\n this.hostname = undefined;\n this.libraryName = undefined;\n this.language = undefined;\n this.database = undefined;\n this.clientId = undefined;\n this.sspi = undefined;\n this.attachDbFile = undefined;\n this.changePassword = undefined;\n }\n\n toBuffer() {\n const fixedData = Buffer.alloc(94);\n const buffers = [fixedData];\n\n let offset = 0;\n let dataOffset = fixedData.length;\n\n // Length: 4-byte\n offset = fixedData.writeUInt32LE(0, offset);\n\n // TDSVersion: 4-byte\n offset = fixedData.writeUInt32LE(this.tdsVersion, offset);\n\n // PacketSize: 4-byte\n offset = fixedData.writeUInt32LE(this.packetSize, offset);\n\n // ClientProgVer: 4-byte\n offset = fixedData.writeUInt32LE(this.clientProgVer, offset);\n\n // ClientPID: 4-byte\n offset = fixedData.writeUInt32LE(this.clientPid, offset);\n\n // ConnectionID: 4-byte\n offset = fixedData.writeUInt32LE(this.connectionId, offset);\n\n // OptionFlags1: 1-byte\n offset = fixedData.writeUInt8(this.buildOptionFlags1(), offset);\n\n // OptionFlags2: 1-byte\n offset = fixedData.writeUInt8(this.buildOptionFlags2(), offset);\n\n // TypeFlags: 1-byte\n offset = fixedData.writeUInt8(this.buildTypeFlags(), offset);\n\n // OptionFlags3: 1-byte\n offset = fixedData.writeUInt8(this.buildOptionFlags3(), offset);\n\n // ClientTimZone: 4-byte\n offset = fixedData.writeInt32LE(this.clientTimeZone, offset);\n\n // ClientLCID: 4-byte\n offset = fixedData.writeUInt32LE(this.clientLcid, offset);\n\n // ibHostName: 2-byte\n offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n // cchHostName: 2-byte\n if (this.hostname) {\n const buffer = Buffer.from(this.hostname, 'ucs2');\n\n offset = fixedData.writeUInt16LE(buffer.length / 2, offset);\n dataOffset += buffer.length;\n\n buffers.push(buffer);\n } else {\n offset = fixedData.writeUInt16LE(dataOffset, offset);\n }\n\n // ibUserName: 2-byte\n offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n // cchUserName: 2-byte\n if (this.userName) {\n const buffer = Buffer.from(this.userName, 'ucs2');\n\n offset = fixedData.writeUInt16LE(buffer.length / 2, offset);\n dataOffset += buffer.length;\n\n buffers.push(buffer);\n } else {\n offset = fixedData.writeUInt16LE(0, offset);\n }\n\n // ibPassword: 2-byte\n offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n // cchPassword: 2-byte\n if (this.password) {\n const buffer = Buffer.from(this.password, 'ucs2');\n\n offset = fixedData.writeUInt16LE(buffer.length / 2, offset);\n dataOffset += buffer.length;\n\n buffers.push(this.scramblePassword(buffer));\n } else {\n offset = fixedData.writeUInt16LE(0, offset);\n }\n\n // ibAppName: 2-byte\n offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n // cchAppName: 2-byte\n if (this.appName) {\n const buffer = Buffer.from(this.appName, 'ucs2');\n\n offset = fixedData.writeUInt16LE(buffer.length / 2, offset);\n dataOffset += buffer.length;\n\n buffers.push(buffer);\n } else {\n offset = fixedData.writeUInt16LE(0, offset);\n }\n\n // ibServerName: 2-byte\n offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n // cchServerName: 2-byte\n if (this.serverName) {\n const buffer = Buffer.from(this.serverName, 'ucs2');\n\n offset = fixedData.writeUInt16LE(buffer.length / 2, offset);\n dataOffset += buffer.length;\n\n buffers.push(buffer);\n } else {\n offset = fixedData.writeUInt16LE(0, offset);\n }\n\n // (ibUnused / ibExtension): 2-byte\n offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n // (cchUnused / cbExtension): 2-byte\n const extensions = this.buildFeatureExt();\n offset = fixedData.writeUInt16LE(4, offset);\n const extensionOffset = Buffer.alloc(4);\n extensionOffset.writeUInt32LE(dataOffset += 4, 0);\n dataOffset += extensions.length;\n buffers.push(extensionOffset, extensions);\n\n // ibCltIntName: 2-byte\n offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n // cchCltIntName: 2-byte\n if (this.libraryName) {\n const buffer = Buffer.from(this.libraryName, 'ucs2');\n\n offset = fixedData.writeUInt16LE(buffer.length / 2, offset);\n dataOffset += buffer.length;\n\n buffers.push(buffer);\n } else {\n offset = fixedData.writeUInt16LE(0, offset);\n }\n\n // ibLanguage: 2-byte\n offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n // cchLanguage: 2-byte\n if (this.language) {\n const buffer = Buffer.from(this.language, 'ucs2');\n\n offset = fixedData.writeUInt16LE(buffer.length / 2, offset);\n dataOffset += buffer.length;\n\n buffers.push(buffer);\n } else {\n offset = fixedData.writeUInt16LE(0, offset);\n }\n\n // ibDatabase: 2-byte\n offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n // cchDatabase: 2-byte\n if (this.database) {\n const buffer = Buffer.from(this.database, 'ucs2');\n\n offset = fixedData.writeUInt16LE(buffer.length / 2, offset);\n dataOffset += buffer.length;\n\n buffers.push(buffer);\n } else {\n offset = fixedData.writeUInt16LE(0, offset);\n }\n\n // ClientID: 6-byte\n if (this.clientId) {\n this.clientId.copy(fixedData, offset, 0, 6);\n }\n offset += 6;\n\n // ibSSPI: 2-byte\n offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n // cbSSPI: 2-byte\n if (this.sspi) {\n if (this.sspi.length > 65535) {\n offset = fixedData.writeUInt16LE(65535, offset);\n } else {\n offset = fixedData.writeUInt16LE(this.sspi.length, offset);\n }\n\n buffers.push(this.sspi);\n } else {\n offset = fixedData.writeUInt16LE(0, offset);\n }\n\n // ibAtchDBFile: 2-byte\n offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n // cchAtchDBFile: 2-byte\n if (this.attachDbFile) {\n const buffer = Buffer.from(this.attachDbFile, 'ucs2');\n\n offset = fixedData.writeUInt16LE(buffer.length / 2, offset);\n dataOffset += buffer.length;\n\n buffers.push(buffer);\n } else {\n offset = fixedData.writeUInt16LE(0, offset);\n }\n\n // ibChangePassword: 2-byte\n offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n // cchChangePassword: 2-byte\n if (this.changePassword) {\n const buffer = Buffer.from(this.changePassword, 'ucs2');\n\n offset = fixedData.writeUInt16LE(buffer.length / 2, offset);\n dataOffset += buffer.length;\n\n buffers.push(buffer);\n } else {\n offset = fixedData.writeUInt16LE(0, offset);\n }\n\n // cbSSPILong: 4-byte\n if (this.sspi && this.sspi.length > 65535) {\n fixedData.writeUInt32LE(this.sspi.length, offset);\n } else {\n fixedData.writeUInt32LE(0, offset);\n }\n\n const data = Buffer.concat(buffers);\n data.writeUInt32LE(data.length, 0);\n return data;\n }\n\n buildOptionFlags1() {\n let flags1 = FLAGS_1.ENDIAN_LITTLE | FLAGS_1.CHARSET_ASCII | FLAGS_1.FLOAT_IEEE_754 | FLAGS_1.BCP_DUMPLOAD_OFF | FLAGS_1.USE_DB_OFF | FLAGS_1.SET_LANG_WARN_ON;\n if (this.initDbFatal) {\n flags1 |= FLAGS_1.INIT_DB_FATAL;\n } else {\n flags1 |= FLAGS_1.INIT_DB_WARN;\n }\n return flags1;\n }\n\n buildFeatureExt() {\n const buffers = [];\n\n const fedAuth = this.fedAuth;\n if (fedAuth) {\n switch (fedAuth.type) {\n case 'ADAL':\n const buffer = Buffer.alloc(7);\n buffer.writeUInt8(FEDAUTH_OPTIONS.FEATURE_ID, 0);\n buffer.writeUInt32LE(2, 1);\n buffer.writeUInt8((FEDAUTH_OPTIONS.LIBRARY_ADAL << 1) | (fedAuth.echo ? FEDAUTH_OPTIONS.FEDAUTH_YES_ECHO : FEDAUTH_OPTIONS.FEDAUTH_NO_ECHO), 5);\n buffer.writeUInt8(fedAuth.workflow === 'integrated' ? 0x02 : FEDAUTH_OPTIONS.ADAL_WORKFLOW_USER_PASS, 6);\n buffers.push(buffer);\n break;\n\n case 'SECURITYTOKEN':\n const token = Buffer.from(fedAuth.fedAuthToken, 'ucs2');\n const buf = Buffer.alloc(10);\n\n let offset = 0;\n offset = buf.writeUInt8(FEDAUTH_OPTIONS.FEATURE_ID, offset);\n offset = buf.writeUInt32LE(token.length + 4 + 1, offset);\n offset = buf.writeUInt8((FEDAUTH_OPTIONS.LIBRARY_SECURITYTOKEN << 1) | (fedAuth.echo ? FEDAUTH_OPTIONS.FEDAUTH_YES_ECHO : FEDAUTH_OPTIONS.FEDAUTH_NO_ECHO), offset);\n buf.writeInt32LE(token.length, offset);\n\n buffers.push(buf);\n buffers.push(token);\n\n break;\n }\n }\n\n if (this.tdsVersion >= versions['7_4']) {\n // Signal UTF-8 support: Value 0x0A, bit 0 must be set to 1. Added in TDS 7.4.\n const UTF8_SUPPORT_FEATURE_ID = 0x0a;\n const UTF8_SUPPORT_CLIENT_SUPPORTS_UTF8 = 0x01;\n const buf = Buffer.alloc(6);\n buf.writeUInt8(UTF8_SUPPORT_FEATURE_ID, 0);\n buf.writeUInt32LE(1, 1);\n buf.writeUInt8(UTF8_SUPPORT_CLIENT_SUPPORTS_UTF8, 5);\n buffers.push(buf);\n }\n\n buffers.push(Buffer.from([FEATURE_EXT_TERMINATOR]));\n\n return Buffer.concat(buffers);\n }\n\n buildOptionFlags2() {\n let flags2 = FLAGS_2.INIT_LANG_WARN | FLAGS_2.ODBC_OFF | FLAGS_2.USER_NORMAL;\n if (this.sspi) {\n flags2 |= FLAGS_2.INTEGRATED_SECURITY_ON;\n } else {\n flags2 |= FLAGS_2.INTEGRATED_SECURITY_OFF;\n }\n return flags2;\n }\n\n buildTypeFlags() {\n let typeFlags = TYPE_FLAGS.SQL_DFLT | TYPE_FLAGS.OLEDB_OFF;\n if (this.readOnlyIntent) {\n typeFlags |= TYPE_FLAGS.READ_ONLY_INTENT;\n } else {\n typeFlags |= TYPE_FLAGS.READ_WRITE_INTENT;\n }\n return typeFlags;\n }\n\n buildOptionFlags3() {\n return FLAGS_3.CHANGE_PASSWORD_NO | FLAGS_3.UNKNOWN_COLLATION_HANDLING | FLAGS_3.EXTENSION_USED;\n }\n\n scramblePassword(password: Buffer) {\n for (let b = 0, len = password.length; b < len; b++) {\n let byte = password[b];\n const lowNibble = byte & 0x0f;\n const highNibble = byte >> 4;\n byte = (lowNibble << 4) | highNibble;\n byte = byte ^ 0xa5;\n password[b] = byte;\n }\n return password;\n }\n\n toString(indent = '') {\n return indent + 'Login7 - ' +\n sprintf('TDS:0x%08X, PacketSize:0x%08X, ClientProgVer:0x%08X, ClientPID:0x%08X, ConnectionID:0x%08X',\n this.tdsVersion, this.packetSize, this.clientProgVer, this.clientPid, this.connectionId\n ) + '\\n' + indent + ' ' +\n sprintf('Flags1:0x%02X, Flags2:0x%02X, TypeFlags:0x%02X, Flags3:0x%02X, ClientTimezone:%d, ClientLCID:0x%08X',\n this.buildOptionFlags1(), this.buildOptionFlags2(), this.buildTypeFlags(), this.buildOptionFlags3(), this.clientTimeZone, this.clientLcid\n ) + '\\n' + indent + ' ' +\n sprintf(\"Hostname:'%s', Username:'%s', Password:'%s', AppName:'%s', ServerName:'%s', LibraryName:'%s'\",\n this.hostname, this.userName, this.password, this.appName, this.serverName, this.libraryName\n ) + '\\n' + indent + ' ' +\n sprintf(\"Language:'%s', Database:'%s', SSPI:'%s', AttachDbFile:'%s', ChangePassword:'%s'\",\n this.language, this.database, this.sspi, this.attachDbFile, this.changePassword\n );\n }\n}\n\nexport default Login7Payload;\nmodule.exports = Login7Payload;\n"],"mappings":"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"}
1
+ {"version":3,"file":"login7-payload.js","names":["_sprintfJs","require","_tdsVersions","FLAGS_1","ENDIAN_LITTLE","ENDIAN_BIG","CHARSET_ASCII","CHARSET_EBCDIC","FLOAT_IEEE_754","FLOAT_VAX","FLOAT_ND5000","BCP_DUMPLOAD_ON","BCP_DUMPLOAD_OFF","USE_DB_ON","USE_DB_OFF","INIT_DB_WARN","INIT_DB_FATAL","SET_LANG_WARN_OFF","SET_LANG_WARN_ON","FLAGS_2","INIT_LANG_WARN","INIT_LANG_FATAL","ODBC_OFF","ODBC_ON","F_TRAN_BOUNDARY","F_CACHE_CONNECT","USER_NORMAL","USER_SERVER","USER_REMUSER","USER_SQLREPL","INTEGRATED_SECURITY_OFF","INTEGRATED_SECURITY_ON","TYPE_FLAGS","SQL_DFLT","SQL_TSQL","OLEDB_OFF","OLEDB_ON","READ_WRITE_INTENT","READ_ONLY_INTENT","FLAGS_3","CHANGE_PASSWORD_NO","CHANGE_PASSWORD_YES","BINARY_XML","SPAWN_USER_INSTANCE","UNKNOWN_COLLATION_HANDLING","EXTENSION_USED","FEDAUTH_OPTIONS","FEATURE_ID","LIBRARY_SECURITYTOKEN","LIBRARY_ADAL","FEDAUTH_YES_ECHO","FEDAUTH_NO_ECHO","ADAL_WORKFLOW_USER_PASS","ADAL_WORKFLOW_INTEGRATED","FEATURE_EXT_TERMINATOR","Login7Payload","constructor","tdsVersion","packetSize","clientProgVer","clientPid","connectionId","clientTimeZone","clientLcid","readOnlyIntent","initDbFatal","fedAuth","undefined","userName","password","serverName","appName","hostname","libraryName","language","database","clientId","sspi","attachDbFile","changePassword","toBuffer","fixedData","Buffer","alloc","buffers","offset","dataOffset","length","writeUInt32LE","writeUInt8","buildOptionFlags1","buildOptionFlags2","buildTypeFlags","buildOptionFlags3","writeInt32LE","writeUInt16LE","buffer","from","push","scramblePassword","extensions","buildFeatureExt","extensionOffset","copy","data","concat","flags1","type","echo","workflow","token","fedAuthToken","buf","versions","UTF8_SUPPORT_FEATURE_ID","UTF8_SUPPORT_CLIENT_SUPPORTS_UTF8","flags2","typeFlags","b","len","byte","lowNibble","highNibble","toString","indent","sprintf","_default","exports","default","module"],"sources":["../src/login7-payload.ts"],"sourcesContent":["import { sprintf } from 'sprintf-js';\nimport { versions } from './tds-versions';\n\nconst FLAGS_1 = {\n ENDIAN_LITTLE: 0x00,\n ENDIAN_BIG: 0x01,\n CHARSET_ASCII: 0x00,\n CHARSET_EBCDIC: 0x02,\n FLOAT_IEEE_754: 0x00,\n FLOAT_VAX: 0x04,\n FLOAT_ND5000: 0x08,\n BCP_DUMPLOAD_ON: 0x00,\n BCP_DUMPLOAD_OFF: 0x10,\n USE_DB_ON: 0x00,\n USE_DB_OFF: 0x20,\n INIT_DB_WARN: 0x00,\n INIT_DB_FATAL: 0x40,\n SET_LANG_WARN_OFF: 0x00,\n SET_LANG_WARN_ON: 0x80\n};\n\nconst FLAGS_2 = {\n INIT_LANG_WARN: 0x00,\n INIT_LANG_FATAL: 0x01,\n ODBC_OFF: 0x00,\n ODBC_ON: 0x02,\n F_TRAN_BOUNDARY: 0x04,\n F_CACHE_CONNECT: 0x08,\n USER_NORMAL: 0x00,\n USER_SERVER: 0x10,\n USER_REMUSER: 0x20,\n USER_SQLREPL: 0x40,\n INTEGRATED_SECURITY_OFF: 0x00,\n INTEGRATED_SECURITY_ON: 0x80\n};\n\nconst TYPE_FLAGS = {\n SQL_DFLT: 0x00,\n SQL_TSQL: 0x08,\n OLEDB_OFF: 0x00,\n OLEDB_ON: 0x10,\n READ_WRITE_INTENT: 0x00,\n READ_ONLY_INTENT: 0x20\n};\n\nconst FLAGS_3 = {\n CHANGE_PASSWORD_NO: 0x00,\n CHANGE_PASSWORD_YES: 0x01,\n BINARY_XML: 0x02,\n SPAWN_USER_INSTANCE: 0x04,\n UNKNOWN_COLLATION_HANDLING: 0x08,\n EXTENSION_USED: 0x10\n};\n\nconst FEDAUTH_OPTIONS = {\n FEATURE_ID: 0x02,\n LIBRARY_SECURITYTOKEN: 0x01,\n LIBRARY_ADAL: 0x02,\n FEDAUTH_YES_ECHO: 0x01,\n FEDAUTH_NO_ECHO: 0x00,\n ADAL_WORKFLOW_USER_PASS: 0x01,\n ADAL_WORKFLOW_INTEGRATED: 0x02\n};\n\nconst FEATURE_EXT_TERMINATOR = 0xFF;\n\ninterface Options {\n tdsVersion: number;\n packetSize: number;\n clientProgVer: number;\n clientPid: number;\n connectionId: number;\n clientTimeZone: number;\n clientLcid: number;\n}\n\n/*\n s2.2.6.3\n */\nclass Login7Payload {\n declare tdsVersion: number;\n declare packetSize: number;\n declare clientProgVer: number;\n declare clientPid: number;\n declare connectionId: number;\n declare clientTimeZone: number;\n declare clientLcid: number;\n\n declare readOnlyIntent: boolean;\n declare initDbFatal: boolean;\n\n declare userName: string | undefined;\n declare password: string | undefined;\n declare serverName: string | undefined;\n declare appName: string | undefined;\n declare hostname: string | undefined;\n declare libraryName: string | undefined;\n declare language: string | undefined;\n declare database: string | undefined;\n declare clientId: Buffer | undefined;\n declare sspi: Buffer | undefined;\n declare attachDbFile: string | undefined;\n declare changePassword: string | undefined;\n\n declare fedAuth: { type: 'ADAL', echo: boolean, workflow: 'default' | 'integrated' } | { type: 'SECURITYTOKEN', echo: boolean, fedAuthToken: string } | undefined;\n\n constructor({ tdsVersion, packetSize, clientProgVer, clientPid, connectionId, clientTimeZone, clientLcid }: Options) {\n this.tdsVersion = tdsVersion;\n this.packetSize = packetSize;\n this.clientProgVer = clientProgVer;\n this.clientPid = clientPid;\n this.connectionId = connectionId;\n this.clientTimeZone = clientTimeZone;\n this.clientLcid = clientLcid;\n\n this.readOnlyIntent = false;\n this.initDbFatal = false;\n\n this.fedAuth = undefined;\n\n this.userName = undefined;\n this.password = undefined;\n this.serverName = undefined;\n this.appName = undefined;\n this.hostname = undefined;\n this.libraryName = undefined;\n this.language = undefined;\n this.database = undefined;\n this.clientId = undefined;\n this.sspi = undefined;\n this.attachDbFile = undefined;\n this.changePassword = undefined;\n }\n\n toBuffer() {\n const fixedData = Buffer.alloc(94);\n const buffers = [fixedData];\n\n let offset = 0;\n let dataOffset = fixedData.length;\n\n // Length: 4-byte\n offset = fixedData.writeUInt32LE(0, offset);\n\n // TDSVersion: 4-byte\n offset = fixedData.writeUInt32LE(this.tdsVersion, offset);\n\n // PacketSize: 4-byte\n offset = fixedData.writeUInt32LE(this.packetSize, offset);\n\n // ClientProgVer: 4-byte\n offset = fixedData.writeUInt32LE(this.clientProgVer, offset);\n\n // ClientPID: 4-byte\n offset = fixedData.writeUInt32LE(this.clientPid, offset);\n\n // ConnectionID: 4-byte\n offset = fixedData.writeUInt32LE(this.connectionId, offset);\n\n // OptionFlags1: 1-byte\n offset = fixedData.writeUInt8(this.buildOptionFlags1(), offset);\n\n // OptionFlags2: 1-byte\n offset = fixedData.writeUInt8(this.buildOptionFlags2(), offset);\n\n // TypeFlags: 1-byte\n offset = fixedData.writeUInt8(this.buildTypeFlags(), offset);\n\n // OptionFlags3: 1-byte\n offset = fixedData.writeUInt8(this.buildOptionFlags3(), offset);\n\n // ClientTimZone: 4-byte\n offset = fixedData.writeInt32LE(this.clientTimeZone, offset);\n\n // ClientLCID: 4-byte\n offset = fixedData.writeUInt32LE(this.clientLcid, offset);\n\n // ibHostName: 2-byte\n offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n // cchHostName: 2-byte\n if (this.hostname) {\n const buffer = Buffer.from(this.hostname, 'ucs2');\n\n offset = fixedData.writeUInt16LE(buffer.length / 2, offset);\n dataOffset += buffer.length;\n\n buffers.push(buffer);\n } else {\n offset = fixedData.writeUInt16LE(dataOffset, offset);\n }\n\n // ibUserName: 2-byte\n offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n // cchUserName: 2-byte\n if (this.userName) {\n const buffer = Buffer.from(this.userName, 'ucs2');\n\n offset = fixedData.writeUInt16LE(buffer.length / 2, offset);\n dataOffset += buffer.length;\n\n buffers.push(buffer);\n } else {\n offset = fixedData.writeUInt16LE(0, offset);\n }\n\n // ibPassword: 2-byte\n offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n // cchPassword: 2-byte\n if (this.password) {\n const buffer = Buffer.from(this.password, 'ucs2');\n\n offset = fixedData.writeUInt16LE(buffer.length / 2, offset);\n dataOffset += buffer.length;\n\n buffers.push(this.scramblePassword(buffer));\n } else {\n offset = fixedData.writeUInt16LE(0, offset);\n }\n\n // ibAppName: 2-byte\n offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n // cchAppName: 2-byte\n if (this.appName) {\n const buffer = Buffer.from(this.appName, 'ucs2');\n\n offset = fixedData.writeUInt16LE(buffer.length / 2, offset);\n dataOffset += buffer.length;\n\n buffers.push(buffer);\n } else {\n offset = fixedData.writeUInt16LE(0, offset);\n }\n\n // ibServerName: 2-byte\n offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n // cchServerName: 2-byte\n if (this.serverName) {\n const buffer = Buffer.from(this.serverName, 'ucs2');\n\n offset = fixedData.writeUInt16LE(buffer.length / 2, offset);\n dataOffset += buffer.length;\n\n buffers.push(buffer);\n } else {\n offset = fixedData.writeUInt16LE(0, offset);\n }\n\n // (ibUnused / ibExtension): 2-byte\n offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n // (cchUnused / cbExtension): 2-byte\n const extensions = this.buildFeatureExt();\n offset = fixedData.writeUInt16LE(4, offset);\n const extensionOffset = Buffer.alloc(4);\n extensionOffset.writeUInt32LE(dataOffset += 4, 0);\n dataOffset += extensions.length;\n buffers.push(extensionOffset, extensions);\n\n // ibCltIntName: 2-byte\n offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n // cchCltIntName: 2-byte\n if (this.libraryName) {\n const buffer = Buffer.from(this.libraryName, 'ucs2');\n\n offset = fixedData.writeUInt16LE(buffer.length / 2, offset);\n dataOffset += buffer.length;\n\n buffers.push(buffer);\n } else {\n offset = fixedData.writeUInt16LE(0, offset);\n }\n\n // ibLanguage: 2-byte\n offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n // cchLanguage: 2-byte\n if (this.language) {\n const buffer = Buffer.from(this.language, 'ucs2');\n\n offset = fixedData.writeUInt16LE(buffer.length / 2, offset);\n dataOffset += buffer.length;\n\n buffers.push(buffer);\n } else {\n offset = fixedData.writeUInt16LE(0, offset);\n }\n\n // ibDatabase: 2-byte\n offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n // cchDatabase: 2-byte\n if (this.database) {\n const buffer = Buffer.from(this.database, 'ucs2');\n\n offset = fixedData.writeUInt16LE(buffer.length / 2, offset);\n dataOffset += buffer.length;\n\n buffers.push(buffer);\n } else {\n offset = fixedData.writeUInt16LE(0, offset);\n }\n\n // ClientID: 6-byte\n if (this.clientId) {\n this.clientId.copy(fixedData, offset, 0, 6);\n }\n offset += 6;\n\n // ibSSPI: 2-byte\n offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n // cbSSPI: 2-byte\n if (this.sspi) {\n if (this.sspi.length > 65535) {\n offset = fixedData.writeUInt16LE(65535, offset);\n } else {\n offset = fixedData.writeUInt16LE(this.sspi.length, offset);\n }\n\n buffers.push(this.sspi);\n } else {\n offset = fixedData.writeUInt16LE(0, offset);\n }\n\n // ibAtchDBFile: 2-byte\n offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n // cchAtchDBFile: 2-byte\n if (this.attachDbFile) {\n const buffer = Buffer.from(this.attachDbFile, 'ucs2');\n\n offset = fixedData.writeUInt16LE(buffer.length / 2, offset);\n dataOffset += buffer.length;\n\n buffers.push(buffer);\n } else {\n offset = fixedData.writeUInt16LE(0, offset);\n }\n\n // ibChangePassword: 2-byte\n offset = fixedData.writeUInt16LE(dataOffset, offset);\n\n // cchChangePassword: 2-byte\n if (this.changePassword) {\n const buffer = Buffer.from(this.changePassword, 'ucs2');\n\n offset = fixedData.writeUInt16LE(buffer.length / 2, offset);\n dataOffset += buffer.length;\n\n buffers.push(buffer);\n } else {\n offset = fixedData.writeUInt16LE(0, offset);\n }\n\n // cbSSPILong: 4-byte\n if (this.sspi && this.sspi.length > 65535) {\n fixedData.writeUInt32LE(this.sspi.length, offset);\n } else {\n fixedData.writeUInt32LE(0, offset);\n }\n\n const data = Buffer.concat(buffers);\n data.writeUInt32LE(data.length, 0);\n return data;\n }\n\n buildOptionFlags1() {\n let flags1 = FLAGS_1.ENDIAN_LITTLE | FLAGS_1.CHARSET_ASCII | FLAGS_1.FLOAT_IEEE_754 | FLAGS_1.BCP_DUMPLOAD_OFF | FLAGS_1.USE_DB_OFF | FLAGS_1.SET_LANG_WARN_ON;\n if (this.initDbFatal) {\n flags1 |= FLAGS_1.INIT_DB_FATAL;\n } else {\n flags1 |= FLAGS_1.INIT_DB_WARN;\n }\n return flags1;\n }\n\n buildFeatureExt() {\n const buffers = [];\n\n const fedAuth = this.fedAuth;\n if (fedAuth) {\n switch (fedAuth.type) {\n case 'ADAL':\n const buffer = Buffer.alloc(7);\n buffer.writeUInt8(FEDAUTH_OPTIONS.FEATURE_ID, 0);\n buffer.writeUInt32LE(2, 1);\n buffer.writeUInt8((FEDAUTH_OPTIONS.LIBRARY_ADAL << 1) | (fedAuth.echo ? FEDAUTH_OPTIONS.FEDAUTH_YES_ECHO : FEDAUTH_OPTIONS.FEDAUTH_NO_ECHO), 5);\n buffer.writeUInt8(fedAuth.workflow === 'integrated' ? 0x02 : FEDAUTH_OPTIONS.ADAL_WORKFLOW_USER_PASS, 6);\n buffers.push(buffer);\n break;\n\n case 'SECURITYTOKEN':\n const token = Buffer.from(fedAuth.fedAuthToken, 'ucs2');\n const buf = Buffer.alloc(10);\n\n let offset = 0;\n offset = buf.writeUInt8(FEDAUTH_OPTIONS.FEATURE_ID, offset);\n offset = buf.writeUInt32LE(token.length + 4 + 1, offset);\n offset = buf.writeUInt8((FEDAUTH_OPTIONS.LIBRARY_SECURITYTOKEN << 1) | (fedAuth.echo ? FEDAUTH_OPTIONS.FEDAUTH_YES_ECHO : FEDAUTH_OPTIONS.FEDAUTH_NO_ECHO), offset);\n buf.writeInt32LE(token.length, offset);\n\n buffers.push(buf);\n buffers.push(token);\n\n break;\n }\n }\n\n if (this.tdsVersion >= versions['7_4']) {\n // Signal UTF-8 support: Value 0x0A, bit 0 must be set to 1. Added in TDS 7.4.\n const UTF8_SUPPORT_FEATURE_ID = 0x0a;\n const UTF8_SUPPORT_CLIENT_SUPPORTS_UTF8 = 0x01;\n const buf = Buffer.alloc(6);\n buf.writeUInt8(UTF8_SUPPORT_FEATURE_ID, 0);\n buf.writeUInt32LE(1, 1);\n buf.writeUInt8(UTF8_SUPPORT_CLIENT_SUPPORTS_UTF8, 5);\n buffers.push(buf);\n }\n\n buffers.push(Buffer.from([FEATURE_EXT_TERMINATOR]));\n\n return Buffer.concat(buffers);\n }\n\n buildOptionFlags2() {\n let flags2 = FLAGS_2.INIT_LANG_WARN | FLAGS_2.ODBC_OFF | FLAGS_2.USER_NORMAL;\n if (this.sspi) {\n flags2 |= FLAGS_2.INTEGRATED_SECURITY_ON;\n } else {\n flags2 |= FLAGS_2.INTEGRATED_SECURITY_OFF;\n }\n return flags2;\n }\n\n buildTypeFlags() {\n let typeFlags = TYPE_FLAGS.SQL_DFLT | TYPE_FLAGS.OLEDB_OFF;\n if (this.readOnlyIntent) {\n typeFlags |= TYPE_FLAGS.READ_ONLY_INTENT;\n } else {\n typeFlags |= TYPE_FLAGS.READ_WRITE_INTENT;\n }\n return typeFlags;\n }\n\n buildOptionFlags3() {\n return FLAGS_3.CHANGE_PASSWORD_NO | FLAGS_3.UNKNOWN_COLLATION_HANDLING | FLAGS_3.EXTENSION_USED;\n }\n\n scramblePassword(password: Buffer) {\n for (let b = 0, len = password.length; b < len; b++) {\n let byte = password[b];\n const lowNibble = byte & 0x0f;\n const highNibble = byte >> 4;\n byte = (lowNibble << 4) | highNibble;\n byte = byte ^ 0xa5;\n password[b] = byte;\n }\n return password;\n }\n\n toString(indent = '') {\n return indent + 'Login7 - ' +\n sprintf('TDS:0x%08X, PacketSize:0x%08X, ClientProgVer:0x%08X, ClientPID:0x%08X, ConnectionID:0x%08X',\n this.tdsVersion, this.packetSize, this.clientProgVer, this.clientPid, this.connectionId\n ) + '\\n' + indent + ' ' +\n sprintf('Flags1:0x%02X, Flags2:0x%02X, TypeFlags:0x%02X, Flags3:0x%02X, ClientTimezone:%d, ClientLCID:0x%08X',\n this.buildOptionFlags1(), this.buildOptionFlags2(), this.buildTypeFlags(), this.buildOptionFlags3(), this.clientTimeZone, this.clientLcid\n ) + '\\n' + indent + ' ' +\n sprintf(\"Hostname:'%s', Username:'%s', Password:'%s', AppName:'%s', ServerName:'%s', LibraryName:'%s'\",\n this.hostname, this.userName, this.password, this.appName, this.serverName, this.libraryName\n ) + '\\n' + indent + ' ' +\n sprintf(\"Language:'%s', Database:'%s', SSPI:'%s', AttachDbFile:'%s', ChangePassword:'%s'\",\n this.language, this.database, this.sspi, this.attachDbFile, this.changePassword\n );\n }\n}\n\nexport default Login7Payload;\nmodule.exports = Login7Payload;\n"],"mappings":"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"}
package/lib/message-io.js CHANGED
@@ -15,13 +15,6 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
15
15
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
16
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
17
  class MessageIO extends _events.EventEmitter {
18
- socket;
19
- debug;
20
- tlsNegotiationComplete;
21
- incomingMessageStream;
22
- outgoingMessageStream;
23
- securePair;
24
- incomingMessageIterator;
25
18
  constructor(socket, packetSize, debug) {
26
19
  super();
27
20
  this.socket = socket;
@@ -158,4 +151,4 @@ class MessageIO extends _events.EventEmitter {
158
151
  var _default = MessageIO;
159
152
  exports.default = _default;
160
153
  module.exports = MessageIO;
161
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbmF0aXZlRHVwbGV4cGFpciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwidGxzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfZXZlbnRzIiwiX21lc3NhZ2UiLCJfcGFja2V0IiwiX2luY29taW5nTWVzc2FnZVN0cmVhbSIsIl9vdXRnb2luZ01lc3NhZ2VTdHJlYW0iLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwiTWVzc2FnZUlPIiwiRXZlbnRFbWl0dGVyIiwic29ja2V0IiwiZGVidWciLCJ0bHNOZWdvdGlhdGlvbkNvbXBsZXRlIiwiaW5jb21pbmdNZXNzYWdlU3RyZWFtIiwib3V0Z29pbmdNZXNzYWdlU3RyZWFtIiwic2VjdXJlUGFpciIsImluY29taW5nTWVzc2FnZUl0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwYWNrZXRTaXplIiwiSW5jb21pbmdNZXNzYWdlU3RyZWFtIiwiU3ltYm9sIiwiYXN5bmNJdGVyYXRvciIsIk91dGdvaW5nTWVzc2FnZVN0cmVhbSIsInBpcGUiLCJhcmdzIiwibGVuZ3RoIiwibG9nIiwiY2xlYXJ0ZXh0Iiwic2V0TWF4U2VuZEZyYWdtZW50Iiwic3RhcnRUbHMiLCJjcmVkZW50aWFsc0RldGFpbHMiLCJob3N0bmFtZSIsInRydXN0U2VydmVyQ2VydGlmaWNhdGUiLCJtYXhWZXJzaW9uIiwiaW5jbHVkZXMiLCJzZWN1cmVDb250ZXh0IiwiY3JlYXRlU2VjdXJlQ29udGV4dCIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiZHVwbGV4cGFpciIsIkR1cGxleFBhaXIiLCJjb25uZWN0Iiwic29ja2V0MSIsInNlcnZlcm5hbWUiLCJyZWplY3RVbmF1dGhvcml6ZWQiLCJlbmNyeXB0ZWQiLCJzb2NrZXQyIiwib25TZWN1cmVDb25uZWN0IiwicmVtb3ZlTGlzdGVuZXIiLCJvblJlYWRhYmxlIiwib25FcnJvciIsIm9uY2UiLCJlcnIiLCJkZXN0cm95IiwiY2lwaGVyIiwiZ2V0Q2lwaGVyIiwibmFtZSIsInZlcnNpb24iLCJlbWl0IiwidW5waXBlIiwibWVzc2FnZSIsIk1lc3NhZ2UiLCJ0eXBlIiwiVFlQRSIsIlBSRUxPR0lOIiwicmVzZXRDb25uZWN0aW9uIiwiY2h1bmsiLCJyZWFkIiwid3JpdGUiLCJlbmQiLCJyZWFkTWVzc2FnZSIsInRoZW4iLCJyZXNwb25zZSIsImRhdGEiLCJjYXRjaCIsInNlbmRNZXNzYWdlIiwicGFja2V0VHlwZSIsInJlc3VsdCIsIm5leHQiLCJkb25lIiwiRXJyb3IiLCJ2YWx1ZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9tZXNzYWdlLWlvLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEdXBsZXhQYWlyIGZyb20gJ25hdGl2ZS1kdXBsZXhwYWlyJztcblxuaW1wb3J0IHsgRHVwbGV4IH0gZnJvbSAnc3RyZWFtJztcbmltcG9ydCAqIGFzIHRscyBmcm9tICd0bHMnO1xuaW1wb3J0IHsgU29ja2V0IH0gZnJvbSAnbmV0JztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5cbmltcG9ydCBEZWJ1ZyBmcm9tICcuL2RlYnVnJztcblxuaW1wb3J0IE1lc3NhZ2UgZnJvbSAnLi9tZXNzYWdlJztcbmltcG9ydCB7IFRZUEUgfSBmcm9tICcuL3BhY2tldCc7XG5cbmltcG9ydCBJbmNvbWluZ01lc3NhZ2VTdHJlYW0gZnJvbSAnLi9pbmNvbWluZy1tZXNzYWdlLXN0cmVhbSc7XG5pbXBvcnQgT3V0Z29pbmdNZXNzYWdlU3RyZWFtIGZyb20gJy4vb3V0Z29pbmctbWVzc2FnZS1zdHJlYW0nO1xuXG5jbGFzcyBNZXNzYWdlSU8gZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBzb2NrZXQ6IFNvY2tldDtcbiAgZGVidWc6IERlYnVnO1xuXG4gIHRsc05lZ290aWF0aW9uQ29tcGxldGU6IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBpbmNvbWluZ01lc3NhZ2VTdHJlYW06IEluY29taW5nTWVzc2FnZVN0cmVhbTtcbiAgb3V0Z29pbmdNZXNzYWdlU3RyZWFtOiBPdXRnb2luZ01lc3NhZ2VTdHJlYW07XG5cbiAgc2VjdXJlUGFpcj86IHtcbiAgICBjbGVhcnRleHQ6IHRscy5UTFNTb2NrZXQ7XG4gICAgZW5jcnlwdGVkOiBEdXBsZXg7XG4gIH07XG5cbiAgaW5jb21pbmdNZXNzYWdlSXRlcmF0b3I6IEFzeW5jSXRlcmFibGVJdGVyYXRvcjxNZXNzYWdlPjtcblxuICBjb25zdHJ1Y3Rvcihzb2NrZXQ6IFNvY2tldCwgcGFja2V0U2l6ZTogbnVtYmVyLCBkZWJ1ZzogRGVidWcpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5zb2NrZXQgPSBzb2NrZXQ7XG4gICAgdGhpcy5kZWJ1ZyA9IGRlYnVnO1xuXG4gICAgdGhpcy50bHNOZWdvdGlhdGlvbkNvbXBsZXRlID0gZmFsc2U7XG5cbiAgICB0aGlzLmluY29taW5nTWVzc2FnZVN0cmVhbSA9IG5ldyBJbmNvbWluZ01lc3NhZ2VTdHJlYW0odGhpcy5kZWJ1Zyk7XG4gICAgdGhpcy5pbmNvbWluZ01lc3NhZ2VJdGVyYXRvciA9IHRoaXMuaW5jb21pbmdNZXNzYWdlU3RyZWFtW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpO1xuXG4gICAgdGhpcy5vdXRnb2luZ01lc3NhZ2VTdHJlYW0gPSBuZXcgT3V0Z29pbmdNZXNzYWdlU3RyZWFtKHRoaXMuZGVidWcsIHsgcGFja2V0U2l6ZTogcGFja2V0U2l6ZSB9KTtcblxuICAgIHRoaXMuc29ja2V0LnBpcGUodGhpcy5pbmNvbWluZ01lc3NhZ2VTdHJlYW0pO1xuICAgIHRoaXMub3V0Z29pbmdNZXNzYWdlU3RyZWFtLnBpcGUodGhpcy5zb2NrZXQpO1xuICB9XG5cbiAgcGFja2V0U2l6ZSguLi5hcmdzOiBbbnVtYmVyXSkge1xuICAgIGlmIChhcmdzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHBhY2tldFNpemUgPSBhcmdzWzBdO1xuICAgICAgdGhpcy5kZWJ1Zy5sb2coJ1BhY2tldCBzaXplIGNoYW5nZWQgZnJvbSAnICsgdGhpcy5vdXRnb2luZ01lc3NhZ2VTdHJlYW0ucGFja2V0U2l6ZSArICcgdG8gJyArIHBhY2tldFNpemUpO1xuICAgICAgdGhpcy5vdXRnb2luZ01lc3NhZ2VTdHJlYW0ucGFja2V0U2l6ZSA9IHBhY2tldFNpemU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc2VjdXJlUGFpcikge1xuICAgICAgdGhpcy5zZWN1cmVQYWlyLmNsZWFydGV4dC5zZXRNYXhTZW5kRnJhZ21lbnQodGhpcy5vdXRnb2luZ01lc3NhZ2VTdHJlYW0ucGFja2V0U2l6ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMub3V0Z29pbmdNZXNzYWdlU3RyZWFtLnBhY2tldFNpemU7XG4gIH1cblxuICAvLyBOZWdvdGlhdGUgVExTIGVuY3J5cHRpb24uXG4gIHN0YXJ0VGxzKGNyZWRlbnRpYWxzRGV0YWlsczogdGxzLlNlY3VyZUNvbnRleHRPcHRpb25zLCBob3N0bmFtZTogc3RyaW5nLCB0cnVzdFNlcnZlckNlcnRpZmljYXRlOiBib29sZWFuKSB7XG4gICAgaWYgKCFjcmVkZW50aWFsc0RldGFpbHMubWF4VmVyc2lvbiB8fCAhWydUTFN2MS4yJywgJ1RMU3YxLjEnLCAnVExTdjEnXS5pbmNsdWRlcyhjcmVkZW50aWFsc0RldGFpbHMubWF4VmVyc2lvbikpIHtcbiAgICAgIGNyZWRlbnRpYWxzRGV0YWlscy5tYXhWZXJzaW9uID0gJ1RMU3YxLjInO1xuICAgIH1cblxuICAgIGNvbnN0IHNlY3VyZUNvbnRleHQgPSB0bHMuY3JlYXRlU2VjdXJlQ29udGV4dChjcmVkZW50aWFsc0RldGFpbHMpO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IGR1cGxleHBhaXIgPSBuZXcgRHVwbGV4UGFpcigpO1xuICAgICAgY29uc3Qgc2VjdXJlUGFpciA9IHRoaXMuc2VjdXJlUGFpciA9IHtcbiAgICAgICAgY2xlYXJ0ZXh0OiB0bHMuY29ubmVjdCh7XG4gICAgICAgICAgc29ja2V0OiBkdXBsZXhwYWlyLnNvY2tldDEgYXMgU29ja2V0LFxuICAgICAgICAgIHNlcnZlcm5hbWU6IGhvc3RuYW1lLFxuICAgICAgICAgIHNlY3VyZUNvbnRleHQ6IHNlY3VyZUNvbnRleHQsXG4gICAgICAgICAgcmVqZWN0VW5hdXRob3JpemVkOiAhdHJ1c3RTZXJ2ZXJDZXJ0aWZpY2F0ZVxuICAgICAgICB9KSxcbiAgICAgICAgZW5jcnlwdGVkOiBkdXBsZXhwYWlyLnNvY2tldDJcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uU2VjdXJlQ29ubmVjdCA9ICgpID0+IHtcbiAgICAgICAgc2VjdXJlUGFpci5lbmNyeXB0ZWQucmVtb3ZlTGlzdGVuZXIoJ3JlYWRhYmxlJywgb25SZWFkYWJsZSk7XG4gICAgICAgIHNlY3VyZVBhaXIuY2xlYXJ0ZXh0LnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uRXJyb3IpO1xuICAgICAgICBzZWN1cmVQYWlyLmNsZWFydGV4dC5yZW1vdmVMaXN0ZW5lcignc2VjdXJlQ29ubmVjdCcsIG9uU2VjdXJlQ29ubmVjdCk7XG5cbiAgICAgICAgLy8gSWYgd2UgZW5jb3VudGVyIGFueSBlcnJvcnMgZnJvbSB0aGlzIHBvaW50IG9uLFxuICAgICAgICAvLyB3ZSBqdXN0IGZvcndhcmQgdGhlbSB0byB0aGUgYWN0dWFsIG5ldHdvcmsgc29ja2V0LlxuICAgICAgICBzZWN1cmVQYWlyLmNsZWFydGV4dC5vbmNlKCdlcnJvcicsIChlcnIpID0+IHtcbiAgICAgICAgICB0aGlzLnNvY2tldC5kZXN0cm95KGVycik7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGNpcGhlciA9IHNlY3VyZVBhaXIuY2xlYXJ0ZXh0LmdldENpcGhlcigpO1xuICAgICAgICBpZiAoY2lwaGVyKSB7XG4gICAgICAgICAgdGhpcy5kZWJ1Zy5sb2coJ1RMUyBuZWdvdGlhdGVkICgnICsgY2lwaGVyLm5hbWUgKyAnLCAnICsgY2lwaGVyLnZlcnNpb24gKyAnKScpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5lbWl0KCdzZWN1cmUnLCBzZWN1cmVQYWlyLmNsZWFydGV4dCk7XG5cbiAgICAgICAgc2VjdXJlUGFpci5jbGVhcnRleHQuc2V0TWF4U2VuZEZyYWdtZW50KHRoaXMub3V0Z29pbmdNZXNzYWdlU3RyZWFtLnBhY2tldFNpemUpO1xuXG4gICAgICAgIHRoaXMub3V0Z29pbmdNZXNzYWdlU3RyZWFtLnVucGlwZSh0aGlzLnNvY2tldCk7XG4gICAgICAgIHRoaXMuc29ja2V0LnVucGlwZSh0aGlzLmluY29taW5nTWVzc2FnZVN0cmVhbSk7XG5cbiAgICAgICAgdGhpcy5zb2NrZXQucGlwZShzZWN1cmVQYWlyLmVuY3J5cHRlZCk7XG4gICAgICAgIHNlY3VyZVBhaXIuZW5jcnlwdGVkLnBpcGUodGhpcy5zb2NrZXQpO1xuXG4gICAgICAgIHNlY3VyZVBhaXIuY2xlYXJ0ZXh0LnBpcGUodGhpcy5pbmNvbWluZ01lc3NhZ2VTdHJlYW0pO1xuICAgICAgICB0aGlzLm91dGdvaW5nTWVzc2FnZVN0cmVhbS5waXBlKHNlY3VyZVBhaXIuY2xlYXJ0ZXh0KTtcblxuICAgICAgICB0aGlzLnRsc05lZ290aWF0aW9uQ29tcGxldGUgPSB0cnVlO1xuXG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uRXJyb3IgPSAoZXJyPzogRXJyb3IpID0+IHtcbiAgICAgICAgc2VjdXJlUGFpci5lbmNyeXB0ZWQucmVtb3ZlTGlzdGVuZXIoJ3JlYWRhYmxlJywgb25SZWFkYWJsZSk7XG4gICAgICAgIHNlY3VyZVBhaXIuY2xlYXJ0ZXh0LnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uRXJyb3IpO1xuICAgICAgICBzZWN1cmVQYWlyLmNsZWFydGV4dC5yZW1vdmVMaXN0ZW5lcignc2VjdXJlQ29ubmVjdCcsIG9uU2VjdXJlQ29ubmVjdCk7XG5cbiAgICAgICAgc2VjdXJlUGFpci5jbGVhcnRleHQuZGVzdHJveSgpO1xuICAgICAgICBzZWN1cmVQYWlyLmVuY3J5cHRlZC5kZXN0cm95KCk7XG5cbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvblJlYWRhYmxlID0gKCkgPT4ge1xuICAgICAgICAvLyBXaGVuIHRoZXJlIGlzIGhhbmRzaGFrZSBkYXRhIG9uIHRoZSBlbmNyeXBlZCBzdHJlYW0gb2YgdGhlIHNlY3VyZSBwYWlyLFxuICAgICAgICAvLyB3ZSB3cmFwIGl0IGludG8gYSBgUFJFTE9HSU5gIG1lc3NhZ2UgYW5kIHNlbmQgaXQgdG8gdGhlIHNlcnZlci5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gRm9yIGVhY2ggYFBSRUxPR0lOYCBtZXNzYWdlIHdlIHNlbnQgd2UgZ2V0IGJhY2sgZXhhY3RseSBvbmUgcmVzcG9uc2UgbWVzc2FnZVxuICAgICAgICAvLyB0aGF0IGNvbnRhaW5zIHRoZSBzZXJ2ZXIncyBoYW5kc2hha2UgcmVzcG9uc2UgZGF0YS5cbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IG5ldyBNZXNzYWdlKHsgdHlwZTogVFlQRS5QUkVMT0dJTiwgcmVzZXRDb25uZWN0aW9uOiBmYWxzZSB9KTtcblxuICAgICAgICBsZXQgY2h1bms7XG4gICAgICAgIHdoaWxlIChjaHVuayA9IHNlY3VyZVBhaXIuZW5jcnlwdGVkLnJlYWQoKSkge1xuICAgICAgICAgIG1lc3NhZ2Uud3JpdGUoY2h1bmspO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3V0Z29pbmdNZXNzYWdlU3RyZWFtLndyaXRlKG1lc3NhZ2UpO1xuICAgICAgICBtZXNzYWdlLmVuZCgpO1xuXG4gICAgICAgIHRoaXMucmVhZE1lc3NhZ2UoKS50aGVuKGFzeW5jIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgIC8vIFNldHVwIHJlYWRhYmxlIGhhbmRsZXIgZm9yIHRoZSBuZXh0IHJvdW5kIG9mIGhhbmRzaGFraW5nLlxuICAgICAgICAgIC8vIElmIHdlIGVuY291bnRlciBhIGBzZWN1cmVDb25uZWN0YCBvbiB0aGUgY2xlYXJ0ZXh0IHNpZGVcbiAgICAgICAgICAvLyBvZiB0aGUgc2VjdXJlIHBhaXIsIHRoZSBgcmVhZGFibGVgIGhhbmRsZXIgaXMgY2xlYXJlZFxuICAgICAgICAgIC8vIGFuZCBubyBmdXJ0aGVyIGhhbmRzaGFrZSBoYW5kbGluZyB3aWxsIGhhcHBlbi5cbiAgICAgICAgICBzZWN1cmVQYWlyLmVuY3J5cHRlZC5vbmNlKCdyZWFkYWJsZScsIG9uUmVhZGFibGUpO1xuXG4gICAgICAgICAgZm9yIGF3YWl0IChjb25zdCBkYXRhIG9mIHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAvLyBXZSBmZWVkIHRoZSBzZXJ2ZXIncyBoYW5kc2hha2UgcmVzcG9uc2UgYmFjayBpbnRvIHRoZVxuICAgICAgICAgICAgLy8gZW5jcnlwdGVkIGVuZCBvZiB0aGUgc2VjdXJlIHBhaXIuXG4gICAgICAgICAgICBzZWN1cmVQYWlyLmVuY3J5cHRlZC53cml0ZShkYXRhKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLmNhdGNoKG9uRXJyb3IpO1xuICAgICAgfTtcblxuICAgICAgc2VjdXJlUGFpci5jbGVhcnRleHQub25jZSgnZXJyb3InLCBvbkVycm9yKTtcbiAgICAgIHNlY3VyZVBhaXIuY2xlYXJ0ZXh0Lm9uY2UoJ3NlY3VyZUNvbm5lY3QnLCBvblNlY3VyZUNvbm5lY3QpO1xuICAgICAgc2VjdXJlUGFpci5lbmNyeXB0ZWQub25jZSgncmVhZGFibGUnLCBvblJlYWRhYmxlKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFRPRE8gbGlzdGVuIGZvciAnZHJhaW4nIGV2ZW50IHdoZW4gc29ja2V0LndyaXRlIHJldHVybnMgZmFsc2UuXG4gIC8vIFRPRE8gaW1wbGVtZW50IGluY29tcGxldGUgcmVxdWVzdCBjYW5jZWxhdGlvbiAoMi4yLjEuNilcbiAgc2VuZE1lc3NhZ2UocGFja2V0VHlwZTogbnVtYmVyLCBkYXRhPzogQnVmZmVyLCByZXNldENvbm5lY3Rpb24/OiBib29sZWFuKSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IG5ldyBNZXNzYWdlKHsgdHlwZTogcGFja2V0VHlwZSwgcmVzZXRDb25uZWN0aW9uOiByZXNldENvbm5lY3Rpb24gfSk7XG4gICAgbWVzc2FnZS5lbmQoZGF0YSk7XG4gICAgdGhpcy5vdXRnb2luZ01lc3NhZ2VTdHJlYW0ud3JpdGUobWVzc2FnZSk7XG4gICAgcmV0dXJuIG1lc3NhZ2U7XG4gIH1cblxuICAvKipcbiAgICogUmVhZCB0aGUgbmV4dCBpbmNvbWluZyBtZXNzYWdlIGZyb20gdGhlIHNvY2tldC5cbiAgICovXG4gIGFzeW5jIHJlYWRNZXNzYWdlKCk6IFByb21pc2U8TWVzc2FnZT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuaW5jb21pbmdNZXNzYWdlSXRlcmF0b3IubmV4dCgpO1xuXG4gICAgaWYgKHJlc3VsdC5kb25lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VuZXhwZWN0ZWQgZW5kIG9mIG1lc3NhZ2Ugc3RyZWFtJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdC52YWx1ZTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBNZXNzYWdlSU87XG5tb2R1bGUuZXhwb3J0cyA9IE1lc3NhZ2VJTztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUdBLElBQUFDLEdBQUEsR0FBQUMsdUJBQUEsQ0FBQUYsT0FBQTtBQUVBLElBQUFHLE9BQUEsR0FBQUgsT0FBQTtBQUlBLElB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
154
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbmF0aXZlRHVwbGV4cGFpciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwidGxzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfZXZlbnRzIiwiX21lc3NhZ2UiLCJfcGFja2V0IiwiX2luY29taW5nTWVzc2FnZVN0cmVhbSIsIl9vdXRnb2luZ01lc3NhZ2VTdHJlYW0iLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImNhY2hlIiwiaGFzIiwiZ2V0IiwibmV3T2JqIiwiaGFzUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJrZXkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJkZXNjIiwic2V0IiwiTWVzc2FnZUlPIiwiRXZlbnRFbWl0dGVyIiwiY29uc3RydWN0b3IiLCJzb2NrZXQiLCJwYWNrZXRTaXplIiwiZGVidWciLCJ0bHNOZWdvdGlhdGlvbkNvbXBsZXRlIiwiaW5jb21pbmdNZXNzYWdlU3RyZWFtIiwiSW5jb21pbmdNZXNzYWdlU3RyZWFtIiwiaW5jb21pbmdNZXNzYWdlSXRlcmF0b3IiLCJTeW1ib2wiLCJhc3luY0l0ZXJhdG9yIiwib3V0Z29pbmdNZXNzYWdlU3RyZWFtIiwiT3V0Z29pbmdNZXNzYWdlU3RyZWFtIiwicGlwZSIsImFyZ3MiLCJsZW5ndGgiLCJsb2ciLCJzZWN1cmVQYWlyIiwiY2xlYXJ0ZXh0Iiwic2V0TWF4U2VuZEZyYWdtZW50Iiwic3RhcnRUbHMiLCJjcmVkZW50aWFsc0RldGFpbHMiLCJob3N0bmFtZSIsInRydXN0U2VydmVyQ2VydGlmaWNhdGUiLCJtYXhWZXJzaW9uIiwiaW5jbHVkZXMiLCJzZWN1cmVDb250ZXh0IiwiY3JlYXRlU2VjdXJlQ29udGV4dCIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiZHVwbGV4cGFpciIsIkR1cGxleFBhaXIiLCJjb25uZWN0Iiwic29ja2V0MSIsInNlcnZlcm5hbWUiLCJyZWplY3RVbmF1dGhvcml6ZWQiLCJlbmNyeXB0ZWQiLCJzb2NrZXQyIiwib25TZWN1cmVDb25uZWN0IiwicmVtb3ZlTGlzdGVuZXIiLCJvblJlYWRhYmxlIiwib25FcnJvciIsIm9uY2UiLCJlcnIiLCJkZXN0cm95IiwiY2lwaGVyIiwiZ2V0Q2lwaGVyIiwibmFtZSIsInZlcnNpb24iLCJlbWl0IiwidW5waXBlIiwibWVzc2FnZSIsIk1lc3NhZ2UiLCJ0eXBlIiwiVFlQRSIsIlBSRUxPR0lOIiwicmVzZXRDb25uZWN0aW9uIiwiY2h1bmsiLCJyZWFkIiwid3JpdGUiLCJlbmQiLCJyZWFkTWVzc2FnZSIsInRoZW4iLCJyZXNwb25zZSIsImRhdGEiLCJjYXRjaCIsInNlbmRNZXNzYWdlIiwicGFja2V0VHlwZSIsInJlc3VsdCIsIm5leHQiLCJkb25lIiwiRXJyb3IiLCJ2YWx1ZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9tZXNzYWdlLWlvLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEdXBsZXhQYWlyIGZyb20gJ25hdGl2ZS1kdXBsZXhwYWlyJztcblxuaW1wb3J0IHsgRHVwbGV4IH0gZnJvbSAnc3RyZWFtJztcbmltcG9ydCAqIGFzIHRscyBmcm9tICd0bHMnO1xuaW1wb3J0IHsgU29ja2V0IH0gZnJvbSAnbmV0JztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5cbmltcG9ydCBEZWJ1ZyBmcm9tICcuL2RlYnVnJztcblxuaW1wb3J0IE1lc3NhZ2UgZnJvbSAnLi9tZXNzYWdlJztcbmltcG9ydCB7IFRZUEUgfSBmcm9tICcuL3BhY2tldCc7XG5cbmltcG9ydCBJbmNvbWluZ01lc3NhZ2VTdHJlYW0gZnJvbSAnLi9pbmNvbWluZy1tZXNzYWdlLXN0cmVhbSc7XG5pbXBvcnQgT3V0Z29pbmdNZXNzYWdlU3RyZWFtIGZyb20gJy4vb3V0Z29pbmctbWVzc2FnZS1zdHJlYW0nO1xuXG5jbGFzcyBNZXNzYWdlSU8gZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuICBkZWNsYXJlIHNvY2tldDogU29ja2V0O1xuICBkZWNsYXJlIGRlYnVnOiBEZWJ1ZztcblxuICBkZWNsYXJlIHRsc05lZ290aWF0aW9uQ29tcGxldGU6IGJvb2xlYW47XG5cbiAgZGVjbGFyZSBwcml2YXRlIGluY29taW5nTWVzc2FnZVN0cmVhbTogSW5jb21pbmdNZXNzYWdlU3RyZWFtO1xuICBkZWNsYXJlIG91dGdvaW5nTWVzc2FnZVN0cmVhbTogT3V0Z29pbmdNZXNzYWdlU3RyZWFtO1xuXG4gIGRlY2xhcmUgc2VjdXJlUGFpcj86IHtcbiAgICBjbGVhcnRleHQ6IHRscy5UTFNTb2NrZXQ7XG4gICAgZW5jcnlwdGVkOiBEdXBsZXg7XG4gIH07XG5cbiAgZGVjbGFyZSBpbmNvbWluZ01lc3NhZ2VJdGVyYXRvcjogQXN5bmNJdGVyYWJsZUl0ZXJhdG9yPE1lc3NhZ2U+O1xuXG4gIGNvbnN0cnVjdG9yKHNvY2tldDogU29ja2V0LCBwYWNrZXRTaXplOiBudW1iZXIsIGRlYnVnOiBEZWJ1Zykge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLnNvY2tldCA9IHNvY2tldDtcbiAgICB0aGlzLmRlYnVnID0gZGVidWc7XG5cbiAgICB0aGlzLnRsc05lZ290aWF0aW9uQ29tcGxldGUgPSBmYWxzZTtcblxuICAgIHRoaXMuaW5jb21pbmdNZXNzYWdlU3RyZWFtID0gbmV3IEluY29taW5nTWVzc2FnZVN0cmVhbSh0aGlzLmRlYnVnKTtcbiAgICB0aGlzLmluY29taW5nTWVzc2FnZUl0ZXJhdG9yID0gdGhpcy5pbmNvbWluZ01lc3NhZ2VTdHJlYW1bU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCk7XG5cbiAgICB0aGlzLm91dGdvaW5nTWVzc2FnZVN0cmVhbSA9IG5ldyBPdXRnb2luZ01lc3NhZ2VTdHJlYW0odGhpcy5kZWJ1ZywgeyBwYWNrZXRTaXplOiBwYWNrZXRTaXplIH0pO1xuXG4gICAgdGhpcy5zb2NrZXQucGlwZSh0aGlzLmluY29taW5nTWVzc2FnZVN0cmVhbSk7XG4gICAgdGhpcy5vdXRnb2luZ01lc3NhZ2VTdHJlYW0ucGlwZSh0aGlzLnNvY2tldCk7XG4gIH1cblxuICBwYWNrZXRTaXplKC4uLmFyZ3M6IFtudW1iZXJdKSB7XG4gICAgaWYgKGFyZ3MubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgcGFja2V0U2l6ZSA9IGFyZ3NbMF07XG4gICAgICB0aGlzLmRlYnVnLmxvZygnUGFja2V0IHNpemUgY2hhbmdlZCBmcm9tICcgKyB0aGlzLm91dGdvaW5nTWVzc2FnZVN0cmVhbS5wYWNrZXRTaXplICsgJyB0byAnICsgcGFja2V0U2l6ZSk7XG4gICAgICB0aGlzLm91dGdvaW5nTWVzc2FnZVN0cmVhbS5wYWNrZXRTaXplID0gcGFja2V0U2l6ZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zZWN1cmVQYWlyKSB7XG4gICAgICB0aGlzLnNlY3VyZVBhaXIuY2xlYXJ0ZXh0LnNldE1heFNlbmRGcmFnbWVudCh0aGlzLm91dGdvaW5nTWVzc2FnZVN0cmVhbS5wYWNrZXRTaXplKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5vdXRnb2luZ01lc3NhZ2VTdHJlYW0ucGFja2V0U2l6ZTtcbiAgfVxuXG4gIC8vIE5lZ290aWF0ZSBUTFMgZW5jcnlwdGlvbi5cbiAgc3RhcnRUbHMoY3JlZGVudGlhbHNEZXRhaWxzOiB0bHMuU2VjdXJlQ29udGV4dE9wdGlvbnMsIGhvc3RuYW1lOiBzdHJpbmcsIHRydXN0U2VydmVyQ2VydGlmaWNhdGU6IGJvb2xlYW4pIHtcbiAgICBpZiAoIWNyZWRlbnRpYWxzRGV0YWlscy5tYXhWZXJzaW9uIHx8ICFbJ1RMU3YxLjInLCAnVExTdjEuMScsICdUTFN2MSddLmluY2x1ZGVzKGNyZWRlbnRpYWxzRGV0YWlscy5tYXhWZXJzaW9uKSkge1xuICAgICAgY3JlZGVudGlhbHNEZXRhaWxzLm1heFZlcnNpb24gPSAnVExTdjEuMic7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VjdXJlQ29udGV4dCA9IHRscy5jcmVhdGVTZWN1cmVDb250ZXh0KGNyZWRlbnRpYWxzRGV0YWlscyk7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgZHVwbGV4cGFpciA9IG5ldyBEdXBsZXhQYWlyKCk7XG4gICAgICBjb25zdCBzZWN1cmVQYWlyID0gdGhpcy5zZWN1cmVQYWlyID0ge1xuICAgICAgICBjbGVhcnRleHQ6IHRscy5jb25uZWN0KHtcbiAgICAgICAgICBzb2NrZXQ6IGR1cGxleHBhaXIuc29ja2V0MSBhcyBTb2NrZXQsXG4gICAgICAgICAgc2VydmVybmFtZTogaG9zdG5hbWUsXG4gICAgICAgICAgc2VjdXJlQ29udGV4dDogc2VjdXJlQ29udGV4dCxcbiAgICAgICAgICByZWplY3RVbmF1dGhvcml6ZWQ6ICF0cnVzdFNlcnZlckNlcnRpZmljYXRlXG4gICAgICAgIH0pLFxuICAgICAgICBlbmNyeXB0ZWQ6IGR1cGxleHBhaXIuc29ja2V0MlxuICAgICAgfTtcblxuICAgICAgY29uc3Qgb25TZWN1cmVDb25uZWN0ID0gKCkgPT4ge1xuICAgICAgICBzZWN1cmVQYWlyLmVuY3J5cHRlZC5yZW1vdmVMaXN0ZW5lcigncmVhZGFibGUnLCBvblJlYWRhYmxlKTtcbiAgICAgICAgc2VjdXJlUGFpci5jbGVhcnRleHQucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25FcnJvcik7XG4gICAgICAgIHNlY3VyZVBhaXIuY2xlYXJ0ZXh0LnJlbW92ZUxpc3RlbmVyKCdzZWN1cmVDb25uZWN0Jywgb25TZWN1cmVDb25uZWN0KTtcblxuICAgICAgICAvLyBJZiB3ZSBlbmNvdW50ZXIgYW55IGVycm9ycyBmcm9tIHRoaXMgcG9pbnQgb24sXG4gICAgICAgIC8vIHdlIGp1c3QgZm9yd2FyZCB0aGVtIHRvIHRoZSBhY3R1YWwgbmV0d29yayBzb2NrZXQuXG4gICAgICAgIHNlY3VyZVBhaXIuY2xlYXJ0ZXh0Lm9uY2UoJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgICAgIHRoaXMuc29ja2V0LmRlc3Ryb3koZXJyKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgY2lwaGVyID0gc2VjdXJlUGFpci5jbGVhcnRleHQuZ2V0Q2lwaGVyKCk7XG4gICAgICAgIGlmIChjaXBoZXIpIHtcbiAgICAgICAgICB0aGlzLmRlYnVnLmxvZygnVExTIG5lZ290aWF0ZWQgKCcgKyBjaXBoZXIubmFtZSArICcsICcgKyBjaXBoZXIudmVyc2lvbiArICcpJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmVtaXQoJ3NlY3VyZScsIHNlY3VyZVBhaXIuY2xlYXJ0ZXh0KTtcblxuICAgICAgICBzZWN1cmVQYWlyLmNsZWFydGV4dC5zZXRNYXhTZW5kRnJhZ21lbnQodGhpcy5vdXRnb2luZ01lc3NhZ2VTdHJlYW0ucGFja2V0U2l6ZSk7XG5cbiAgICAgICAgdGhpcy5vdXRnb2luZ01lc3NhZ2VTdHJlYW0udW5waXBlKHRoaXMuc29ja2V0KTtcbiAgICAgICAgdGhpcy5zb2NrZXQudW5waXBlKHRoaXMuaW5jb21pbmdNZXNzYWdlU3RyZWFtKTtcblxuICAgICAgICB0aGlzLnNvY2tldC5waXBlKHNlY3VyZVBhaXIuZW5jcnlwdGVkKTtcbiAgICAgICAgc2VjdXJlUGFpci5lbmNyeXB0ZWQucGlwZSh0aGlzLnNvY2tldCk7XG5cbiAgICAgICAgc2VjdXJlUGFpci5jbGVhcnRleHQucGlwZSh0aGlzLmluY29taW5nTWVzc2FnZVN0cmVhbSk7XG4gICAgICAgIHRoaXMub3V0Z29pbmdNZXNzYWdlU3RyZWFtLnBpcGUoc2VjdXJlUGFpci5jbGVhcnRleHQpO1xuXG4gICAgICAgIHRoaXMudGxzTmVnb3RpYXRpb25Db21wbGV0ZSA9IHRydWU7XG5cbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfTtcblxuICAgICAgY29uc3Qgb25FcnJvciA9IChlcnI/OiBFcnJvcikgPT4ge1xuICAgICAgICBzZWN1cmVQYWlyLmVuY3J5cHRlZC5yZW1vdmVMaXN0ZW5lcigncmVhZGFibGUnLCBvblJlYWRhYmxlKTtcbiAgICAgICAgc2VjdXJlUGFpci5jbGVhcnRleHQucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25FcnJvcik7XG4gICAgICAgIHNlY3VyZVBhaXIuY2xlYXJ0ZXh0LnJlbW92ZUxpc3RlbmVyKCdzZWN1cmVDb25uZWN0Jywgb25TZWN1cmVDb25uZWN0KTtcblxuICAgICAgICBzZWN1cmVQYWlyLmNsZWFydGV4dC5kZXN0cm95KCk7XG4gICAgICAgIHNlY3VyZVBhaXIuZW5jcnlwdGVkLmRlc3Ryb3koKTtcblxuICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uUmVhZGFibGUgPSAoKSA9PiB7XG4gICAgICAgIC8vIFdoZW4gdGhlcmUgaXMgaGFuZHNoYWtlIGRhdGEgb24gdGhlIGVuY3J5cGVkIHN0cmVhbSBvZiB0aGUgc2VjdXJlIHBhaXIsXG4gICAgICAgIC8vIHdlIHdyYXAgaXQgaW50byBhIGBQUkVMT0dJTmAgbWVzc2FnZSBhbmQgc2VuZCBpdCB0byB0aGUgc2VydmVyLlxuICAgICAgICAvL1xuICAgICAgICAvLyBGb3IgZWFjaCBgUFJFTE9HSU5gIG1lc3NhZ2Ugd2Ugc2VudCB3ZSBnZXQgYmFjayBleGFjdGx5IG9uZSByZXNwb25zZSBtZXNzYWdlXG4gICAgICAgIC8vIHRoYXQgY29udGFpbnMgdGhlIHNlcnZlcidzIGhhbmRzaGFrZSByZXNwb25zZSBkYXRhLlxuICAgICAgICBjb25zdCBtZXNzYWdlID0gbmV3IE1lc3NhZ2UoeyB0eXBlOiBUWVBFLlBSRUxPR0lOLCByZXNldENvbm5lY3Rpb246IGZhbHNlIH0pO1xuXG4gICAgICAgIGxldCBjaHVuaztcbiAgICAgICAgd2hpbGUgKGNodW5rID0gc2VjdXJlUGFpci5lbmNyeXB0ZWQucmVhZCgpKSB7XG4gICAgICAgICAgbWVzc2FnZS53cml0ZShjaHVuayk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vdXRnb2luZ01lc3NhZ2VTdHJlYW0ud3JpdGUobWVzc2FnZSk7XG4gICAgICAgIG1lc3NhZ2UuZW5kKCk7XG5cbiAgICAgICAgdGhpcy5yZWFkTWVzc2FnZSgpLnRoZW4oYXN5bmMgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgLy8gU2V0dXAgcmVhZGFibGUgaGFuZGxlciBmb3IgdGhlIG5leHQgcm91bmQgb2YgaGFuZHNoYWtpbmcuXG4gICAgICAgICAgLy8gSWYgd2UgZW5jb3VudGVyIGEgYHNlY3VyZUNvbm5lY3RgIG9uIHRoZSBjbGVhcnRleHQgc2lkZVxuICAgICAgICAgIC8vIG9mIHRoZSBzZWN1cmUgcGFpciwgdGhlIGByZWFkYWJsZWAgaGFuZGxlciBpcyBjbGVhcmVkXG4gICAgICAgICAgLy8gYW5kIG5vIGZ1cnRoZXIgaGFuZHNoYWtlIGhhbmRsaW5nIHdpbGwgaGFwcGVuLlxuICAgICAgICAgIHNlY3VyZVBhaXIuZW5jcnlwdGVkLm9uY2UoJ3JlYWRhYmxlJywgb25SZWFkYWJsZSk7XG5cbiAgICAgICAgICBmb3IgYXdhaXQgKGNvbnN0IGRhdGEgb2YgcmVzcG9uc2UpIHtcbiAgICAgICAgICAgIC8vIFdlIGZlZWQgdGhlIHNlcnZlcidzIGhhbmRzaGFrZSByZXNwb25zZSBiYWNrIGludG8gdGhlXG4gICAgICAgICAgICAvLyBlbmNyeXB0ZWQgZW5kIG9mIHRoZSBzZWN1cmUgcGFpci5cbiAgICAgICAgICAgIHNlY3VyZVBhaXIuZW5jcnlwdGVkLndyaXRlKGRhdGEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSkuY2F0Y2gob25FcnJvcik7XG4gICAgICB9O1xuXG4gICAgICBzZWN1cmVQYWlyLmNsZWFydGV4dC5vbmNlKCdlcnJvcicsIG9uRXJyb3IpO1xuICAgICAgc2VjdXJlUGFpci5jbGVhcnRleHQub25jZSgnc2VjdXJlQ29ubmVjdCcsIG9uU2VjdXJlQ29ubmVjdCk7XG4gICAgICBzZWN1cmVQYWlyLmVuY3J5cHRlZC5vbmNlKCdyZWFkYWJsZScsIG9uUmVhZGFibGUpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gVE9ETyBsaXN0ZW4gZm9yICdkcmFpbicgZXZlbnQgd2hlbiBzb2NrZXQud3JpdGUgcmV0dXJucyBmYWxzZS5cbiAgLy8gVE9ETyBpbXBsZW1lbnQgaW5jb21wbGV0ZSByZXF1ZXN0IGNhbmNlbGF0aW9uICgyLjIuMS42KVxuICBzZW5kTWVzc2FnZShwYWNrZXRUeXBlOiBudW1iZXIsIGRhdGE/OiBCdWZmZXIsIHJlc2V0Q29ubmVjdGlvbj86IGJvb2xlYW4pIHtcbiAgICBjb25zdCBtZXNzYWdlID0gbmV3IE1lc3NhZ2UoeyB0eXBlOiBwYWNrZXRUeXBlLCByZXNldENvbm5lY3Rpb246IHJlc2V0Q29ubmVjdGlvbiB9KTtcbiAgICBtZXNzYWdlLmVuZChkYXRhKTtcbiAgICB0aGlzLm91dGdvaW5nTWVzc2FnZVN0cmVhbS53cml0ZShtZXNzYWdlKTtcbiAgICByZXR1cm4gbWVzc2FnZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkIHRoZSBuZXh0IGluY29taW5nIG1lc3NhZ2UgZnJvbSB0aGUgc29ja2V0LlxuICAgKi9cbiAgYXN5bmMgcmVhZE1lc3NhZ2UoKTogUHJvbWlzZTxNZXNzYWdlPiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5pbmNvbWluZ01lc3NhZ2VJdGVyYXRvci5uZXh0KCk7XG5cbiAgICBpZiAocmVzdWx0LmRvbmUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5leHBlY3RlZCBlbmQgb2YgbWVzc2FnZSBzdHJlYW0nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0LnZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE1lc3NhZ2VJTztcbm1vZHVsZS5leHBvcnRzID0gTWVzc2FnZUlPO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxpQkFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBR0EsSUFBQUMsR0FBQSxH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
@@ -1 +1 @@
1
- {"version":3,"file":"message-io.js","names":["_nativeDuplexpair","_interopRequireDefault","require","tls","_interopRequireWildcard","_events","_message","_packet","_incomingMessageStream","_outgoingMessageStream","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","MessageIO","EventEmitter","socket","debug","tlsNegotiationComplete","incomingMessageStream","outgoingMessageStream","securePair","incomingMessageIterator","constructor","packetSize","IncomingMessageStream","Symbol","asyncIterator","OutgoingMessageStream","pipe","args","length","log","cleartext","setMaxSendFragment","startTls","credentialsDetails","hostname","trustServerCertificate","maxVersion","includes","secureContext","createSecureContext","Promise","resolve","reject","duplexpair","DuplexPair","connect","socket1","servername","rejectUnauthorized","encrypted","socket2","onSecureConnect","removeListener","onReadable","onError","once","err","destroy","cipher","getCipher","name","version","emit","unpipe","message","Message","type","TYPE","PRELOGIN","resetConnection","chunk","read","write","end","readMessage","then","response","data","catch","sendMessage","packetType","result","next","done","Error","value","_default","exports","module"],"sources":["../src/message-io.ts"],"sourcesContent":["import DuplexPair from 'native-duplexpair';\n\nimport { Duplex } from 'stream';\nimport * as tls from 'tls';\nimport { Socket } from 'net';\nimport { EventEmitter } from 'events';\n\nimport Debug from './debug';\n\nimport Message from './message';\nimport { TYPE } from './packet';\n\nimport IncomingMessageStream from './incoming-message-stream';\nimport OutgoingMessageStream from './outgoing-message-stream';\n\nclass MessageIO extends EventEmitter {\n socket: Socket;\n debug: Debug;\n\n tlsNegotiationComplete: boolean;\n\n private incomingMessageStream: IncomingMessageStream;\n outgoingMessageStream: OutgoingMessageStream;\n\n securePair?: {\n cleartext: tls.TLSSocket;\n encrypted: Duplex;\n };\n\n incomingMessageIterator: AsyncIterableIterator<Message>;\n\n constructor(socket: Socket, packetSize: number, debug: Debug) {\n super();\n\n this.socket = socket;\n this.debug = debug;\n\n this.tlsNegotiationComplete = false;\n\n this.incomingMessageStream = new IncomingMessageStream(this.debug);\n this.incomingMessageIterator = this.incomingMessageStream[Symbol.asyncIterator]();\n\n this.outgoingMessageStream = new OutgoingMessageStream(this.debug, { packetSize: packetSize });\n\n this.socket.pipe(this.incomingMessageStream);\n this.outgoingMessageStream.pipe(this.socket);\n }\n\n packetSize(...args: [number]) {\n if (args.length > 0) {\n const packetSize = args[0];\n this.debug.log('Packet size changed from ' + this.outgoingMessageStream.packetSize + ' to ' + packetSize);\n this.outgoingMessageStream.packetSize = packetSize;\n }\n\n if (this.securePair) {\n this.securePair.cleartext.setMaxSendFragment(this.outgoingMessageStream.packetSize);\n }\n\n return this.outgoingMessageStream.packetSize;\n }\n\n // Negotiate TLS encryption.\n startTls(credentialsDetails: tls.SecureContextOptions, hostname: string, trustServerCertificate: boolean) {\n if (!credentialsDetails.maxVersion || !['TLSv1.2', 'TLSv1.1', 'TLSv1'].includes(credentialsDetails.maxVersion)) {\n credentialsDetails.maxVersion = 'TLSv1.2';\n }\n\n const secureContext = tls.createSecureContext(credentialsDetails);\n\n return new Promise<void>((resolve, reject) => {\n const duplexpair = new DuplexPair();\n const securePair = this.securePair = {\n cleartext: tls.connect({\n socket: duplexpair.socket1 as Socket,\n servername: hostname,\n secureContext: secureContext,\n rejectUnauthorized: !trustServerCertificate\n }),\n encrypted: duplexpair.socket2\n };\n\n const onSecureConnect = () => {\n securePair.encrypted.removeListener('readable', onReadable);\n securePair.cleartext.removeListener('error', onError);\n securePair.cleartext.removeListener('secureConnect', onSecureConnect);\n\n // If we encounter any errors from this point on,\n // we just forward them to the actual network socket.\n securePair.cleartext.once('error', (err) => {\n this.socket.destroy(err);\n });\n\n const cipher = securePair.cleartext.getCipher();\n if (cipher) {\n this.debug.log('TLS negotiated (' + cipher.name + ', ' + cipher.version + ')');\n }\n\n this.emit('secure', securePair.cleartext);\n\n securePair.cleartext.setMaxSendFragment(this.outgoingMessageStream.packetSize);\n\n this.outgoingMessageStream.unpipe(this.socket);\n this.socket.unpipe(this.incomingMessageStream);\n\n this.socket.pipe(securePair.encrypted);\n securePair.encrypted.pipe(this.socket);\n\n securePair.cleartext.pipe(this.incomingMessageStream);\n this.outgoingMessageStream.pipe(securePair.cleartext);\n\n this.tlsNegotiationComplete = true;\n\n resolve();\n };\n\n const onError = (err?: Error) => {\n securePair.encrypted.removeListener('readable', onReadable);\n securePair.cleartext.removeListener('error', onError);\n securePair.cleartext.removeListener('secureConnect', onSecureConnect);\n\n securePair.cleartext.destroy();\n securePair.encrypted.destroy();\n\n reject(err);\n };\n\n const onReadable = () => {\n // When there is handshake data on the encryped stream of the secure pair,\n // we wrap it into a `PRELOGIN` message and send it to the server.\n //\n // For each `PRELOGIN` message we sent we get back exactly one response message\n // that contains the server's handshake response data.\n const message = new Message({ type: TYPE.PRELOGIN, resetConnection: false });\n\n let chunk;\n while (chunk = securePair.encrypted.read()) {\n message.write(chunk);\n }\n this.outgoingMessageStream.write(message);\n message.end();\n\n this.readMessage().then(async (response) => {\n // Setup readable handler for the next round of handshaking.\n // If we encounter a `secureConnect` on the cleartext side\n // of the secure pair, the `readable` handler is cleared\n // and no further handshake handling will happen.\n securePair.encrypted.once('readable', onReadable);\n\n for await (const data of response) {\n // We feed the server's handshake response back into the\n // encrypted end of the secure pair.\n securePair.encrypted.write(data);\n }\n }).catch(onError);\n };\n\n securePair.cleartext.once('error', onError);\n securePair.cleartext.once('secureConnect', onSecureConnect);\n securePair.encrypted.once('readable', onReadable);\n });\n }\n\n // TODO listen for 'drain' event when socket.write returns false.\n // TODO implement incomplete request cancelation (2.2.1.6)\n sendMessage(packetType: number, data?: Buffer, resetConnection?: boolean) {\n const message = new Message({ type: packetType, resetConnection: resetConnection });\n message.end(data);\n this.outgoingMessageStream.write(message);\n return message;\n }\n\n /**\n * Read the next incoming message from the socket.\n */\n async readMessage(): Promise<Message> {\n const result = await this.incomingMessageIterator.next();\n\n if (result.done) {\n throw new Error('unexpected end of message stream');\n }\n\n return result.value;\n }\n}\n\nexport default MessageIO;\nmodule.exports = MessageIO;\n"],"mappings":"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"}
1
+ {"version":3,"file":"message-io.js","names":["_nativeDuplexpair","_interopRequireDefault","require","tls","_interopRequireWildcard","_events","_message","_packet","_incomingMessageStream","_outgoingMessageStream","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","MessageIO","EventEmitter","constructor","socket","packetSize","debug","tlsNegotiationComplete","incomingMessageStream","IncomingMessageStream","incomingMessageIterator","Symbol","asyncIterator","outgoingMessageStream","OutgoingMessageStream","pipe","args","length","log","securePair","cleartext","setMaxSendFragment","startTls","credentialsDetails","hostname","trustServerCertificate","maxVersion","includes","secureContext","createSecureContext","Promise","resolve","reject","duplexpair","DuplexPair","connect","socket1","servername","rejectUnauthorized","encrypted","socket2","onSecureConnect","removeListener","onReadable","onError","once","err","destroy","cipher","getCipher","name","version","emit","unpipe","message","Message","type","TYPE","PRELOGIN","resetConnection","chunk","read","write","end","readMessage","then","response","data","catch","sendMessage","packetType","result","next","done","Error","value","_default","exports","module"],"sources":["../src/message-io.ts"],"sourcesContent":["import DuplexPair from 'native-duplexpair';\n\nimport { Duplex } from 'stream';\nimport * as tls from 'tls';\nimport { Socket } from 'net';\nimport { EventEmitter } from 'events';\n\nimport Debug from './debug';\n\nimport Message from './message';\nimport { TYPE } from './packet';\n\nimport IncomingMessageStream from './incoming-message-stream';\nimport OutgoingMessageStream from './outgoing-message-stream';\n\nclass MessageIO extends EventEmitter {\n declare socket: Socket;\n declare debug: Debug;\n\n declare tlsNegotiationComplete: boolean;\n\n declare private incomingMessageStream: IncomingMessageStream;\n declare outgoingMessageStream: OutgoingMessageStream;\n\n declare securePair?: {\n cleartext: tls.TLSSocket;\n encrypted: Duplex;\n };\n\n declare incomingMessageIterator: AsyncIterableIterator<Message>;\n\n constructor(socket: Socket, packetSize: number, debug: Debug) {\n super();\n\n this.socket = socket;\n this.debug = debug;\n\n this.tlsNegotiationComplete = false;\n\n this.incomingMessageStream = new IncomingMessageStream(this.debug);\n this.incomingMessageIterator = this.incomingMessageStream[Symbol.asyncIterator]();\n\n this.outgoingMessageStream = new OutgoingMessageStream(this.debug, { packetSize: packetSize });\n\n this.socket.pipe(this.incomingMessageStream);\n this.outgoingMessageStream.pipe(this.socket);\n }\n\n packetSize(...args: [number]) {\n if (args.length > 0) {\n const packetSize = args[0];\n this.debug.log('Packet size changed from ' + this.outgoingMessageStream.packetSize + ' to ' + packetSize);\n this.outgoingMessageStream.packetSize = packetSize;\n }\n\n if (this.securePair) {\n this.securePair.cleartext.setMaxSendFragment(this.outgoingMessageStream.packetSize);\n }\n\n return this.outgoingMessageStream.packetSize;\n }\n\n // Negotiate TLS encryption.\n startTls(credentialsDetails: tls.SecureContextOptions, hostname: string, trustServerCertificate: boolean) {\n if (!credentialsDetails.maxVersion || !['TLSv1.2', 'TLSv1.1', 'TLSv1'].includes(credentialsDetails.maxVersion)) {\n credentialsDetails.maxVersion = 'TLSv1.2';\n }\n\n const secureContext = tls.createSecureContext(credentialsDetails);\n\n return new Promise<void>((resolve, reject) => {\n const duplexpair = new DuplexPair();\n const securePair = this.securePair = {\n cleartext: tls.connect({\n socket: duplexpair.socket1 as Socket,\n servername: hostname,\n secureContext: secureContext,\n rejectUnauthorized: !trustServerCertificate\n }),\n encrypted: duplexpair.socket2\n };\n\n const onSecureConnect = () => {\n securePair.encrypted.removeListener('readable', onReadable);\n securePair.cleartext.removeListener('error', onError);\n securePair.cleartext.removeListener('secureConnect', onSecureConnect);\n\n // If we encounter any errors from this point on,\n // we just forward them to the actual network socket.\n securePair.cleartext.once('error', (err) => {\n this.socket.destroy(err);\n });\n\n const cipher = securePair.cleartext.getCipher();\n if (cipher) {\n this.debug.log('TLS negotiated (' + cipher.name + ', ' + cipher.version + ')');\n }\n\n this.emit('secure', securePair.cleartext);\n\n securePair.cleartext.setMaxSendFragment(this.outgoingMessageStream.packetSize);\n\n this.outgoingMessageStream.unpipe(this.socket);\n this.socket.unpipe(this.incomingMessageStream);\n\n this.socket.pipe(securePair.encrypted);\n securePair.encrypted.pipe(this.socket);\n\n securePair.cleartext.pipe(this.incomingMessageStream);\n this.outgoingMessageStream.pipe(securePair.cleartext);\n\n this.tlsNegotiationComplete = true;\n\n resolve();\n };\n\n const onError = (err?: Error) => {\n securePair.encrypted.removeListener('readable', onReadable);\n securePair.cleartext.removeListener('error', onError);\n securePair.cleartext.removeListener('secureConnect', onSecureConnect);\n\n securePair.cleartext.destroy();\n securePair.encrypted.destroy();\n\n reject(err);\n };\n\n const onReadable = () => {\n // When there is handshake data on the encryped stream of the secure pair,\n // we wrap it into a `PRELOGIN` message and send it to the server.\n //\n // For each `PRELOGIN` message we sent we get back exactly one response message\n // that contains the server's handshake response data.\n const message = new Message({ type: TYPE.PRELOGIN, resetConnection: false });\n\n let chunk;\n while (chunk = securePair.encrypted.read()) {\n message.write(chunk);\n }\n this.outgoingMessageStream.write(message);\n message.end();\n\n this.readMessage().then(async (response) => {\n // Setup readable handler for the next round of handshaking.\n // If we encounter a `secureConnect` on the cleartext side\n // of the secure pair, the `readable` handler is cleared\n // and no further handshake handling will happen.\n securePair.encrypted.once('readable', onReadable);\n\n for await (const data of response) {\n // We feed the server's handshake response back into the\n // encrypted end of the secure pair.\n securePair.encrypted.write(data);\n }\n }).catch(onError);\n };\n\n securePair.cleartext.once('error', onError);\n securePair.cleartext.once('secureConnect', onSecureConnect);\n securePair.encrypted.once('readable', onReadable);\n });\n }\n\n // TODO listen for 'drain' event when socket.write returns false.\n // TODO implement incomplete request cancelation (2.2.1.6)\n sendMessage(packetType: number, data?: Buffer, resetConnection?: boolean) {\n const message = new Message({ type: packetType, resetConnection: resetConnection });\n message.end(data);\n this.outgoingMessageStream.write(message);\n return message;\n }\n\n /**\n * Read the next incoming message from the socket.\n */\n async readMessage(): Promise<Message> {\n const result = await this.incomingMessageIterator.next();\n\n if (result.done) {\n throw new Error('unexpected end of message stream');\n }\n\n return result.value;\n }\n}\n\nexport default MessageIO;\nmodule.exports = MessageIO;\n"],"mappings":"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"}
package/lib/message.js CHANGED
@@ -6,9 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  var _stream = require("stream");
8
8
  class Message extends _stream.PassThrough {
9
- type;
10
- resetConnection;
11
- ignore;
12
9
  constructor({
13
10
  type,
14
11
  resetConnection = false
@@ -22,4 +19,4 @@ class Message extends _stream.PassThrough {
22
19
  var _default = Message;
23
20
  exports.default = _default;
24
21
  module.exports = Message;
25
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3RyZWFtIiwicmVxdWlyZSIsIk1lc3NhZ2UiLCJQYXNzVGhyb3VnaCIsInR5cGUiLCJyZXNldENvbm5lY3Rpb24iLCJpZ25vcmUiLCJjb25zdHJ1Y3RvciIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi9zcmMvbWVzc2FnZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXNzVGhyb3VnaCB9IGZyb20gJ3N0cmVhbSc7XG5cbmNsYXNzIE1lc3NhZ2UgZXh0ZW5kcyBQYXNzVGhyb3VnaCB7XG4gIHR5cGU6IG51bWJlcjtcbiAgcmVzZXRDb25uZWN0aW9uOiBib29sZWFuO1xuICBpZ25vcmU6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoeyB0eXBlLCByZXNldENvbm5lY3Rpb24gPSBmYWxzZSB9OiB7IHR5cGU6IG51bWJlciwgcmVzZXRDb25uZWN0aW9uPzogYm9vbGVhbiB8IHVuZGVmaW5lZCB9KSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy5yZXNldENvbm5lY3Rpb24gPSByZXNldENvbm5lY3Rpb247XG4gICAgdGhpcy5pZ25vcmUgPSBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBNZXNzYWdlO1xubW9kdWxlLmV4cG9ydHMgPSBNZXNzYWdlO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLE9BQUE7QUFFQSxNQUFNQyxPQUFPLFNBQVNDLG1CQUFXLENBQUM7RUFDaENDLElBQUk7RUFDSkMsZUFBZTtFQUNmQyxNQUFNO0VBRU5DLFdBQVdBLENBQUM7SUFBRUgsSUFBSTtJQUFFQyxlQUFlLEdBQUc7RUFBK0QsQ0FBQyxFQUFFO0lBQ3RHLEtBQUssQ0FBQyxDQUFDO0lBRVAsSUFBSSxDQUFDRCxJQUFJLEdBQUdBLElBQUk7SUFDaEIsSUFBSSxDQUFDQyxlQUFlLEdBQUdBLGVBQWU7SUFDdEMsSUFBSSxDQUFDQyxNQUFNLEdBQUcsS0FBSztFQUNyQjtBQUNGO0FBQUMsSUFBQUUsUUFBQSxHQUVjTixPQUFPO0FBQUFPLE9BQUEsQ0FBQUMsT0FBQSxHQUFBRixRQUFBO0FBQ3RCRyxNQUFNLENBQUNGLE9BQU8sR0FBR1AsT0FBTyJ9
22
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3RyZWFtIiwicmVxdWlyZSIsIk1lc3NhZ2UiLCJQYXNzVGhyb3VnaCIsImNvbnN0cnVjdG9yIiwidHlwZSIsInJlc2V0Q29ubmVjdGlvbiIsImlnbm9yZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi9zcmMvbWVzc2FnZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYXNzVGhyb3VnaCB9IGZyb20gJ3N0cmVhbSc7XG5cbmNsYXNzIE1lc3NhZ2UgZXh0ZW5kcyBQYXNzVGhyb3VnaCB7XG4gIGRlY2xhcmUgdHlwZTogbnVtYmVyO1xuICBkZWNsYXJlIHJlc2V0Q29ubmVjdGlvbjogYm9vbGVhbjtcbiAgZGVjbGFyZSBpZ25vcmU6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoeyB0eXBlLCByZXNldENvbm5lY3Rpb24gPSBmYWxzZSB9OiB7IHR5cGU6IG51bWJlciwgcmVzZXRDb25uZWN0aW9uPzogYm9vbGVhbiB8IHVuZGVmaW5lZCB9KSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy5yZXNldENvbm5lY3Rpb24gPSByZXNldENvbm5lY3Rpb247XG4gICAgdGhpcy5pZ25vcmUgPSBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBNZXNzYWdlO1xubW9kdWxlLmV4cG9ydHMgPSBNZXNzYWdlO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLE9BQUE7QUFFQSxNQUFNQyxPQUFPLFNBQVNDLG1CQUFXLENBQUM7RUFLaENDLFdBQVdBLENBQUM7SUFBRUMsSUFBSTtJQUFFQyxlQUFlLEdBQUc7RUFBK0QsQ0FBQyxFQUFFO0lBQ3RHLEtBQUssQ0FBQyxDQUFDO0lBRVAsSUFBSSxDQUFDRCxJQUFJLEdBQUdBLElBQUk7SUFDaEIsSUFBSSxDQUFDQyxlQUFlLEdBQUdBLGVBQWU7SUFDdEMsSUFBSSxDQUFDQyxNQUFNLEdBQUcsS0FBSztFQUNyQjtBQUNGO0FBQUMsSUFBQUMsUUFBQSxHQUVjTixPQUFPO0FBQUFPLE9BQUEsQ0FBQUMsT0FBQSxHQUFBRixRQUFBO0FBQ3RCRyxNQUFNLENBQUNGLE9BQU8sR0FBR1AsT0FBTyJ9
@@ -1 +1 @@
1
- {"version":3,"file":"message.js","names":["_stream","require","Message","PassThrough","type","resetConnection","ignore","constructor","_default","exports","default","module"],"sources":["../src/message.ts"],"sourcesContent":["import { PassThrough } from 'stream';\n\nclass Message extends PassThrough {\n type: number;\n resetConnection: boolean;\n ignore: boolean;\n\n constructor({ type, resetConnection = false }: { type: number, resetConnection?: boolean | undefined }) {\n super();\n\n this.type = type;\n this.resetConnection = resetConnection;\n this.ignore = false;\n }\n}\n\nexport default Message;\nmodule.exports = Message;\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAEA,MAAMC,OAAO,SAASC,mBAAW,CAAC;EAChCC,IAAI;EACJC,eAAe;EACfC,MAAM;EAENC,WAAWA,CAAC;IAAEH,IAAI;IAAEC,eAAe,GAAG;EAA+D,CAAC,EAAE;IACtG,KAAK,CAAC,CAAC;IAEP,IAAI,CAACD,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACC,eAAe,GAAGA,eAAe;IACtC,IAAI,CAACC,MAAM,GAAG,KAAK;EACrB;AACF;AAAC,IAAAE,QAAA,GAEcN,OAAO;AAAAO,OAAA,CAAAC,OAAA,GAAAF,QAAA;AACtBG,MAAM,CAACF,OAAO,GAAGP,OAAO"}
1
+ {"version":3,"file":"message.js","names":["_stream","require","Message","PassThrough","constructor","type","resetConnection","ignore","_default","exports","default","module"],"sources":["../src/message.ts"],"sourcesContent":["import { PassThrough } from 'stream';\n\nclass Message extends PassThrough {\n declare type: number;\n declare resetConnection: boolean;\n declare ignore: boolean;\n\n constructor({ type, resetConnection = false }: { type: number, resetConnection?: boolean | undefined }) {\n super();\n\n this.type = type;\n this.resetConnection = resetConnection;\n this.ignore = false;\n }\n}\n\nexport default Message;\nmodule.exports = Message;\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAEA,MAAMC,OAAO,SAASC,mBAAW,CAAC;EAKhCC,WAAWA,CAAC;IAAEC,IAAI;IAAEC,eAAe,GAAG;EAA+D,CAAC,EAAE;IACtG,KAAK,CAAC,CAAC;IAEP,IAAI,CAACD,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACC,eAAe,GAAGA,eAAe;IACtC,IAAI,CAACC,MAAM,GAAG,KAAK;EACrB;AACF;AAAC,IAAAC,QAAA,GAEcN,OAAO;AAAAO,OAAA,CAAAC,OAAA,GAAAF,QAAA;AACtBG,MAAM,CAACF,OAAO,GAAGP,OAAO"}
@@ -11,7 +11,6 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
11
11
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
12
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
13
  class NTLMResponsePayload {
14
- data;
15
14
  constructor(loginData) {
16
15
  this.data = this.createResponse(loginData);
17
16
  }
@@ -135,4 +134,4 @@ class NTLMResponsePayload {
135
134
  var _default = NTLMResponsePayload;
136
135
  exports.default = _default;
137
136
  module.exports = NTLMResponsePayload;
138
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd3JpdGFibGVUcmFja2luZ0J1ZmZlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiY3J5cHRvIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfanNNZCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJOVExNUmVzcG9uc2VQYXlsb2FkIiwiZGF0YSIsImNvbnN0cnVjdG9yIiwibG9naW5EYXRhIiwiY3JlYXRlUmVzcG9uc2UiLCJ0b1N0cmluZyIsImluZGVudCIsImNoYWxsZW5nZSIsImNsaWVudF9ub25jZSIsImNyZWF0ZUNsaWVudE5vbmNlIiwibG12MmxlbiIsIm50bG12MmxlbiIsImRvbWFpbiIsInVzZXJuYW1lIiwidXNlck5hbWUiLCJwYXNzd29yZCIsIm50bG1EYXRhIiwibnRsbXBhY2tldCIsInNlcnZlcl9kYXRhIiwidGFyZ2V0Iiwic2VydmVyX25vbmNlIiwibm9uY2UiLCJidWZmZXJMZW5ndGgiLCJsZW5ndGgiLCJXcml0YWJsZVRyYWNraW5nQnVmZmVyIiwicG9zaXRpb24iLCJ3cml0ZVN0cmluZyIsIndyaXRlVUludDMyTEUiLCJiYXNlSWR4IiwiZG5JZHgiLCJ1bklkeCIsImwySWR4IiwibnRJZHgiLCJ3cml0ZVVJbnQxNkxFIiwibG12MkRhdGEiLCJsbXYyUmVzcG9uc2UiLCJjb3B5RnJvbSIsImdlblRpbWUiLCJEYXRlIiwiZ2V0VGltZSIsIm50bG1EYXRhQnVmZmVyIiwibnRsbXYyUmVzcG9uc2UiLCJ0aW1lc3RhbXAiLCJjcmVhdGVUaW1lc3RhbXAiLCJCdWZmZXIiLCJhbGxvYyIsIm5pZHgiLCJ3cml0ZVVJbnQ4IiwiTWF0aCIsImNlaWwiLCJyYW5kb20iLCJ1c2VyIiwic2VydmVyTm9uY2UiLCJ0YXJnZXRJbmZvIiwiY2xpZW50Tm9uY2UiLCJteXRpbWUiLCJoYXNoIiwibnR2Mkhhc2giLCJkYXRhTGVuZ3RoIiwiY29weSIsImhtYWNNRDUiLCJ0aW1lIiwidGVudGhzT2ZBTWljcm9zZWNvbmQiLCJCaWdJbnQiLCJsbyIsIk51bWJlciIsImhpIiwicmVzdWx0IiwibmV3aGFzaCIsInJlc3BvbnNlIiwibnRIYXNoIiwiaWRlbnRpdHkiLCJmcm9tIiwidG9VcHBlckNhc2UiLCJ0ZXh0IiwidW5pY29kZVN0cmluZyIsIm1kNCIsImFycmF5QnVmZmVyIiwiY3JlYXRlSG1hYyIsInVwZGF0ZSIsImRpZ2VzdCIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9udGxtLXBheWxvYWQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIgZnJvbSAnLi90cmFja2luZy1idWZmZXIvd3JpdGFibGUtdHJhY2tpbmctYnVmZmVyJztcbmltcG9ydCAqIGFzIGNyeXB0byBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IG1kNCBmcm9tICdqcy1tZDQnO1xuXG5pbnRlcmZhY2UgT3B0aW9ucyB7XG4gIGRvbWFpbjogc3RyaW5nO1xuICB1c2VyTmFtZTogc3RyaW5nO1xuICBwYXNzd29yZDogc3RyaW5nO1xuICBudGxtcGFja2V0OiB7XG4gICAgdGFyZ2V0OiBCdWZmZXI7XG4gICAgbm9uY2U6IEJ1ZmZlcjtcbiAgfTtcbn1cblxuY2xhc3MgTlRMTVJlc3BvbnNlUGF5bG9hZCB7XG4gIGRhdGE6IEJ1ZmZlcjtcblxuICBjb25zdHJ1Y3Rvcihsb2dpbkRhdGE6IE9wdGlvbnMpIHtcbiAgICB0aGlzLmRhdGEgPSB0aGlzLmNyZWF0ZVJlc3BvbnNlKGxvZ2luRGF0YSk7XG4gIH1cblxuICB0b1N0cmluZyhpbmRlbnQgPSAnJykge1xuICAgIHJldHVybiBpbmRlbnQgKyAnTlRMTSBBdXRoJztcbiAgfVxuXG4gIGNyZWF0ZVJlc3BvbnNlKGNoYWxsZW5nZTogT3B0aW9ucykge1xuICAgIGNvbnN0IGNsaWVudF9ub25jZSA9IHRoaXMuY3JlYXRlQ2xpZW50Tm9uY2UoKTtcbiAgICBjb25zdCBsbXYybGVuID0gMjQ7XG4gICAgY29uc3QgbnRsbXYybGVuID0gMTY7XG4gICAgY29uc3QgZG9tYWluID0gY2hhbGxlbmdlLmRvbWFpbjtcbiAgICBjb25zdCB1c2VybmFtZSA9IGNoYWxsZW5nZS51c2VyTmFtZTtcbiAgICBjb25zdCBwYXNzd29yZCA9IGNoYWxsZW5nZS5wYXNzd29yZDtcbiAgICBjb25zdCBudGxtRGF0YSA9IGNoYWxsZW5nZS5udGxtcGFja2V0O1xuICAgIGNvbnN0IHNlcnZlcl9kYXRhID0gbnRsbURhdGEudGFyZ2V0O1xuICAgIGNvbnN0IHNlcnZlcl9ub25jZSA9IG50bG1EYXRhLm5vbmNlO1xuICAgIGNvbnN0IGJ1ZmZlckxlbmd0aCA9IDY0ICsgKGRvbWFpbi5sZW5ndGggKiAyKSArICh1c2VybmFtZS5sZW5ndGggKiAyKSArIGxtdjJsZW4gKyBudGxtdjJsZW4gKyA4ICsgOCArIDggKyA0ICsgc2VydmVyX2RhdGEubGVuZ3RoICsgNDtcbiAgICBjb25zdCBkYXRhID0gbmV3IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIoYnVmZmVyTGVuZ3RoKTtcbiAgICBkYXRhLnBvc2l0aW9uID0gMDtcbiAgICBkYXRhLndyaXRlU3RyaW5nKCdOVExNU1NQXFx1MDAwMCcsICd1dGY4Jyk7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKDB4MDMpO1xuICAgIGNvbnN0IGJhc2VJZHggPSA2NDtcbiAgICBjb25zdCBkbklkeCA9IGJhc2VJZHg7XG4gICAgY29uc3QgdW5JZHggPSBkbklkeCArIGRvbWFpbi5sZW5ndGggKiAyO1xuICAgIGNvbnN0IGwySWR4ID0gdW5JZHggKyB1c2VybmFtZS5sZW5ndGggKiAyO1xuICAgIGNvbnN0IG50SWR4ID0gbDJJZHggKyBsbXYybGVuO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRShsbXYybGVuKTtcbiAgICBkYXRhLndyaXRlVUludDE2TEUobG12Mmxlbik7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKGwySWR4KTtcbiAgICBkYXRhLndyaXRlVUludDE2TEUobnRsbXYybGVuKTtcbiAgICBkYXRhLndyaXRlVUludDE2TEUobnRsbXYybGVuKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUobnRJZHgpO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRShkb21haW4ubGVuZ3RoICogMik7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKGRvbWFpbi5sZW5ndGggKiAyKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoZG5JZHgpO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRSh1c2VybmFtZS5sZW5ndGggKiAyKTtcbiAgICBkYXRhLndyaXRlVUludDE2TEUodXNlcm5hbWUubGVuZ3RoICogMik7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKHVuSWR4KTtcbiAgICBkYXRhLndyaXRlVUludDE2TEUoMCk7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKDApO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRShiYXNlSWR4KTtcbiAgICBkYXRhLndyaXRlVUludDE2TEUoMCk7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKDApO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRShiYXNlSWR4KTtcbiAgICBkYXRhLndyaXRlVUludDE2TEUoMHg4MjAxKTtcbiAgICBkYXRhLndyaXRlVUludDE2TEUoMHgwOCk7XG4gICAgZGF0YS53cml0ZVN0cmluZyhkb21haW4sICd1Y3MyJyk7XG4gICAgZGF0YS53cml0ZVN0cmluZyh1c2VybmFtZSwgJ3VjczInKTtcbiAgICBjb25zdCBsbXYyRGF0YSA9IHRoaXMubG12MlJlc3BvbnNlKGRvbWFpbiwgdXNlcm5hbWUsIHBhc3N3b3JkLCBzZXJ2ZXJfbm9uY2UsIGNsaWVudF9ub25jZSk7XG4gICAgZGF0YS5jb3B5RnJvbShsbXYyRGF0YSk7XG4gICAgY29uc3QgZ2VuVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgIGNvbnN0IG50bG1EYXRhQnVmZmVyID0gdGhpcy5udGxtdjJSZXNwb25zZShkb21haW4sIHVzZXJuYW1lLCBwYXNzd29yZCwgc2VydmVyX25vbmNlLCBzZXJ2ZXJfZGF0YSwgY2xpZW50X25vbmNlLCBnZW5UaW1lKTtcbiAgICBkYXRhLmNvcHlGcm9tKG50bG1EYXRhQnVmZmVyKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoMHgwMTAxKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoMHgwMDAwKTtcbiAgICBjb25zdCB0aW1lc3RhbXAgPSB0aGlzLmNyZWF0ZVRpbWVzdGFtcChnZW5UaW1lKTtcbiAgICBkYXRhLmNvcHlGcm9tKHRpbWVzdGFtcCk7XG4gICAgZGF0YS5jb3B5RnJvbShjbGllbnRfbm9uY2UpO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRSgweDAwMDApO1xuICAgIGRhdGEuY29weUZyb20oc2VydmVyX2RhdGEpO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRSgweDAwMDApO1xuICAgIHJldHVybiBkYXRhLmRhdGE7XG4gIH1cblxuICBjcmVhdGVDbGllbnROb25jZSgpIHtcbiAgICBjb25zdCBjbGllbnRfbm9uY2UgPSBCdWZmZXIuYWxsb2MoOCwgMCk7XG4gICAgbGV0IG5pZHggPSAwO1xuICAgIHdoaWxlIChuaWR4IDwgOCkge1xuICAgICAgY2xpZW50X25vbmNlLndyaXRlVUludDgoTWF0aC5jZWlsKE1hdGgucmFuZG9tKCkgKiAyNTUpLCBuaWR4KTtcbiAgICAgIG5pZHgrKztcbiAgICB9XG4gICAgcmV0dXJuIGNsaWVudF9ub25jZTtcbiAgfVxuXG4gIG50bG12MlJlc3BvbnNlKGRvbWFpbjogc3RyaW5nLCB1c2VyOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcsIHNlcnZlck5vbmNlOiBCdWZmZXIsIHRhcmdldEluZm86IEJ1ZmZlciwgY2xpZW50Tm9uY2U6IEJ1ZmZlciwgbXl0aW1lOiBudW1iZXIpIHtcbiAgICBjb25zdCB0aW1lc3RhbXAgPSB0aGlzLmNyZWF0ZVRpbWVzdGFtcChteXRpbWUpO1xuICAgIGNvbnN0IGhhc2ggPSB0aGlzLm50djJIYXNoKGRvbWFpbiwgdXNlciwgcGFzc3dvcmQpO1xuICAgIGNvbnN0IGRhdGFMZW5ndGggPSA0MCArIHRhcmdldEluZm8ubGVuZ3RoO1xuICAgIGNvbnN0IGRhdGEgPSBCdWZmZXIuYWxsb2MoZGF0YUxlbmd0aCwgMCk7XG4gICAgc2VydmVyTm9uY2UuY29weShkYXRhLCAwLCAwLCA4KTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoMHgxMDEsIDgpO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRSgweDAsIDEyKTtcbiAgICB0aW1lc3RhbXAuY29weShkYXRhLCAxNiwgMCwgOCk7XG4gICAgY2xpZW50Tm9uY2UuY29weShkYXRhLCAyNCwgMCwgOCk7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKDB4MCwgMzIpO1xuICAgIHRhcmdldEluZm8uY29weShkYXRhLCAzNiwgMCwgdGFyZ2V0SW5mby5sZW5ndGgpO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRSgweDAsIDM2ICsgdGFyZ2V0SW5mby5sZW5ndGgpO1xuICAgIHJldHVybiB0aGlzLmhtYWNNRDUoZGF0YSwgaGFzaCk7XG4gIH1cblxuICBjcmVhdGVUaW1lc3RhbXAodGltZTogbnVtYmVyKSB7XG4gICAgY29uc3QgdGVudGhzT2ZBTWljcm9zZWNvbmQgPSAoQmlnSW50KHRpbWUpICsgQmlnSW50KDExNjQ0NDczNjAwKSkgKiBCaWdJbnQoMTAwMDAwMDApO1xuXG4gICAgY29uc3QgbG8gPSBOdW1iZXIodGVudGhzT2ZBTWljcm9zZWNvbmQgJiBCaWdJbnQoMHhmZmZmZmZmZikpO1xuICAgIGNvbnN0IGhpID0gTnVtYmVyKCh0ZW50aHNPZkFNaWNyb3NlY29uZCA+PiBCaWdJbnQoMzIpKSAmIEJpZ0ludCgweGZmZmZmZmZmKSk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBCdWZmZXIuYWxsb2MoOCk7XG4gICAgcmVzdWx0LndyaXRlVUludDMyTEUobG8sIDApO1xuICAgIHJlc3VsdC53cml0ZVVJbnQzMkxFKGhpLCA0KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgbG12MlJlc3BvbnNlKGRvbWFpbjogc3RyaW5nLCB1c2VyOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcsIHNlcnZlck5vbmNlOiBCdWZmZXIsIGNsaWVudE5vbmNlOiBCdWZmZXIpIHtcbiAgICBjb25zdCBoYXNoID0gdGhpcy5udHYySGFzaChkb21haW4sIHVzZXIsIHBhc3N3b3JkKTtcbiAgICBjb25zdCBkYXRhID0gQnVmZmVyLmFsbG9jKHNlcnZlck5vbmNlLmxlbmd0aCArIGNsaWVudE5vbmNlLmxlbmd0aCwgMCk7XG5cbiAgICBzZXJ2ZXJOb25jZS5jb3B5KGRhdGEpO1xuICAgIGNsaWVudE5vbmNlLmNvcHkoZGF0YSwgc2VydmVyTm9uY2UubGVuZ3RoLCAwLCBjbGllbnROb25jZS5sZW5ndGgpO1xuXG4gICAgY29uc3QgbmV3aGFzaCA9IHRoaXMuaG1hY01ENShkYXRhLCBoYXNoKTtcbiAgICBjb25zdCByZXNwb25zZSA9IEJ1ZmZlci5hbGxvYyhuZXdoYXNoLmxlbmd0aCArIGNsaWVudE5vbmNlLmxlbmd0aCwgMCk7XG5cbiAgICBuZXdoYXNoLmNvcHkocmVzcG9uc2UpO1xuICAgIGNsaWVudE5vbmNlLmNvcHkocmVzcG9uc2UsIG5ld2hhc2gubGVuZ3RoLCAwLCBjbGllbnROb25jZS5sZW5ndGgpO1xuXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xuICB9XG5cbiAgbnR2Mkhhc2goZG9tYWluOiBzdHJpbmcsIHVzZXI6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZykge1xuICAgIGNvbnN0IGhhc2ggPSB0aGlzLm50SGFzaChwYXNzd29yZCk7XG4gICAgY29uc3QgaWRlbnRpdHkgPSBCdWZmZXIuZnJvbSh1c2VyLnRvVXBwZXJDYXNlKCkgKyBkb21haW4udG9VcHBlckNhc2UoKSwgJ3VjczInKTtcbiAgICByZXR1cm4gdGhpcy5obWFjTUQ1KGlkZW50aXR5LCBoYXNoKTtcbiAgfVxuXG4gIG50SGFzaCh0ZXh0OiBzdHJpbmcpIHtcbiAgICBjb25zdCB1bmljb2RlU3RyaW5nID0gQnVmZmVyLmZyb20odGV4dCwgJ3VjczInKTtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20obWQ0LmFycmF5QnVmZmVyKHVuaWNvZGVTdHJpbmcpKTtcbiAgfVxuXG4gIGhtYWNNRDUoZGF0YTogQnVmZmVyLCBrZXk6IEJ1ZmZlcikge1xuICAgIHJldHVybiBjcnlwdG8uY3JlYXRlSG1hYygnTUQ1Jywga2V5KS51cGRhdGUoZGF0YSkuZGlnZXN0KCk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTlRMTVJlc3BvbnNlUGF5bG9hZDtcbm1vZHVsZS5leHBvcnRzID0gTlRMTVJlc3BvbnNlUGF5bG9hZDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsdUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLEtBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUF5QixTQUFBSSx5QkFBQUMsV0FBQSxlQUFBQyxPQUFBLGtDQUFBQyxpQkFBQSxPQUFBRCxPQUFBLFFBQUFFLGdCQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEsQ0FBQUMsV0FBQSxXQUFBQSxXQUFBLEdBQUFHLGdCQUFBLEdBQUFELGlCQUFBLEtBQUFGLFdBQUE7QUFBQSxTQUFBSCx3QkFBQU8sR0FBQSxFQUFBSixXQUFBLFNBQUFBLFdBQUEsSUFBQUksR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsV0FBQUQsR0FBQSxRQUFBQSxHQUFBLG9CQUFBQSxHQUFBLHdCQUFBQSxHQUFBLDRCQUFBRSxPQUFBLEVBQUFG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
137
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd3JpdGFibGVUcmFja2luZ0J1ZmZlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiY3J5cHRvIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfanNNZCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJOVExNUmVzcG9uc2VQYXlsb2FkIiwiY29uc3RydWN0b3IiLCJsb2dpbkRhdGEiLCJkYXRhIiwiY3JlYXRlUmVzcG9uc2UiLCJ0b1N0cmluZyIsImluZGVudCIsImNoYWxsZW5nZSIsImNsaWVudF9ub25jZSIsImNyZWF0ZUNsaWVudE5vbmNlIiwibG12MmxlbiIsIm50bG12MmxlbiIsImRvbWFpbiIsInVzZXJuYW1lIiwidXNlck5hbWUiLCJwYXNzd29yZCIsIm50bG1EYXRhIiwibnRsbXBhY2tldCIsInNlcnZlcl9kYXRhIiwidGFyZ2V0Iiwic2VydmVyX25vbmNlIiwibm9uY2UiLCJidWZmZXJMZW5ndGgiLCJsZW5ndGgiLCJXcml0YWJsZVRyYWNraW5nQnVmZmVyIiwicG9zaXRpb24iLCJ3cml0ZVN0cmluZyIsIndyaXRlVUludDMyTEUiLCJiYXNlSWR4IiwiZG5JZHgiLCJ1bklkeCIsImwySWR4IiwibnRJZHgiLCJ3cml0ZVVJbnQxNkxFIiwibG12MkRhdGEiLCJsbXYyUmVzcG9uc2UiLCJjb3B5RnJvbSIsImdlblRpbWUiLCJEYXRlIiwiZ2V0VGltZSIsIm50bG1EYXRhQnVmZmVyIiwibnRsbXYyUmVzcG9uc2UiLCJ0aW1lc3RhbXAiLCJjcmVhdGVUaW1lc3RhbXAiLCJCdWZmZXIiLCJhbGxvYyIsIm5pZHgiLCJ3cml0ZVVJbnQ4IiwiTWF0aCIsImNlaWwiLCJyYW5kb20iLCJ1c2VyIiwic2VydmVyTm9uY2UiLCJ0YXJnZXRJbmZvIiwiY2xpZW50Tm9uY2UiLCJteXRpbWUiLCJoYXNoIiwibnR2Mkhhc2giLCJkYXRhTGVuZ3RoIiwiY29weSIsImhtYWNNRDUiLCJ0aW1lIiwidGVudGhzT2ZBTWljcm9zZWNvbmQiLCJCaWdJbnQiLCJsbyIsIk51bWJlciIsImhpIiwicmVzdWx0IiwibmV3aGFzaCIsInJlc3BvbnNlIiwibnRIYXNoIiwiaWRlbnRpdHkiLCJmcm9tIiwidG9VcHBlckNhc2UiLCJ0ZXh0IiwidW5pY29kZVN0cmluZyIsIm1kNCIsImFycmF5QnVmZmVyIiwiY3JlYXRlSG1hYyIsInVwZGF0ZSIsImRpZ2VzdCIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9udGxtLXBheWxvYWQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFdyaXRhYmxlVHJhY2tpbmdCdWZmZXIgZnJvbSAnLi90cmFja2luZy1idWZmZXIvd3JpdGFibGUtdHJhY2tpbmctYnVmZmVyJztcbmltcG9ydCAqIGFzIGNyeXB0byBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IG1kNCBmcm9tICdqcy1tZDQnO1xuXG5pbnRlcmZhY2UgT3B0aW9ucyB7XG4gIGRvbWFpbjogc3RyaW5nO1xuICB1c2VyTmFtZTogc3RyaW5nO1xuICBwYXNzd29yZDogc3RyaW5nO1xuICBudGxtcGFja2V0OiB7XG4gICAgdGFyZ2V0OiBCdWZmZXI7XG4gICAgbm9uY2U6IEJ1ZmZlcjtcbiAgfTtcbn1cblxuY2xhc3MgTlRMTVJlc3BvbnNlUGF5bG9hZCB7XG4gIGRlY2xhcmUgZGF0YTogQnVmZmVyO1xuXG4gIGNvbnN0cnVjdG9yKGxvZ2luRGF0YTogT3B0aW9ucykge1xuICAgIHRoaXMuZGF0YSA9IHRoaXMuY3JlYXRlUmVzcG9uc2UobG9naW5EYXRhKTtcbiAgfVxuXG4gIHRvU3RyaW5nKGluZGVudCA9ICcnKSB7XG4gICAgcmV0dXJuIGluZGVudCArICdOVExNIEF1dGgnO1xuICB9XG5cbiAgY3JlYXRlUmVzcG9uc2UoY2hhbGxlbmdlOiBPcHRpb25zKSB7XG4gICAgY29uc3QgY2xpZW50X25vbmNlID0gdGhpcy5jcmVhdGVDbGllbnROb25jZSgpO1xuICAgIGNvbnN0IGxtdjJsZW4gPSAyNDtcbiAgICBjb25zdCBudGxtdjJsZW4gPSAxNjtcbiAgICBjb25zdCBkb21haW4gPSBjaGFsbGVuZ2UuZG9tYWluO1xuICAgIGNvbnN0IHVzZXJuYW1lID0gY2hhbGxlbmdlLnVzZXJOYW1lO1xuICAgIGNvbnN0IHBhc3N3b3JkID0gY2hhbGxlbmdlLnBhc3N3b3JkO1xuICAgIGNvbnN0IG50bG1EYXRhID0gY2hhbGxlbmdlLm50bG1wYWNrZXQ7XG4gICAgY29uc3Qgc2VydmVyX2RhdGEgPSBudGxtRGF0YS50YXJnZXQ7XG4gICAgY29uc3Qgc2VydmVyX25vbmNlID0gbnRsbURhdGEubm9uY2U7XG4gICAgY29uc3QgYnVmZmVyTGVuZ3RoID0gNjQgKyAoZG9tYWluLmxlbmd0aCAqIDIpICsgKHVzZXJuYW1lLmxlbmd0aCAqIDIpICsgbG12MmxlbiArIG50bG12MmxlbiArIDggKyA4ICsgOCArIDQgKyBzZXJ2ZXJfZGF0YS5sZW5ndGggKyA0O1xuICAgIGNvbnN0IGRhdGEgPSBuZXcgV3JpdGFibGVUcmFja2luZ0J1ZmZlcihidWZmZXJMZW5ndGgpO1xuICAgIGRhdGEucG9zaXRpb24gPSAwO1xuICAgIGRhdGEud3JpdGVTdHJpbmcoJ05UTE1TU1BcXHUwMDAwJywgJ3V0ZjgnKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoMHgwMyk7XG4gICAgY29uc3QgYmFzZUlkeCA9IDY0O1xuICAgIGNvbnN0IGRuSWR4ID0gYmFzZUlkeDtcbiAgICBjb25zdCB1bklkeCA9IGRuSWR4ICsgZG9tYWluLmxlbmd0aCAqIDI7XG4gICAgY29uc3QgbDJJZHggPSB1bklkeCArIHVzZXJuYW1lLmxlbmd0aCAqIDI7XG4gICAgY29uc3QgbnRJZHggPSBsMklkeCArIGxtdjJsZW47XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKGxtdjJsZW4pO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRShsbXYybGVuKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUobDJJZHgpO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRShudGxtdjJsZW4pO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRShudGxtdjJsZW4pO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRShudElkeCk7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKGRvbWFpbi5sZW5ndGggKiAyKTtcbiAgICBkYXRhLndyaXRlVUludDE2TEUoZG9tYWluLmxlbmd0aCAqIDIpO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRShkbklkeCk7XG4gICAgZGF0YS53cml0ZVVJbnQxNkxFKHVzZXJuYW1lLmxlbmd0aCAqIDIpO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRSh1c2VybmFtZS5sZW5ndGggKiAyKTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUodW5JZHgpO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRSgwKTtcbiAgICBkYXRhLndyaXRlVUludDE2TEUoMCk7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKGJhc2VJZHgpO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRSgwKTtcbiAgICBkYXRhLndyaXRlVUludDE2TEUoMCk7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKGJhc2VJZHgpO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRSgweDgyMDEpO1xuICAgIGRhdGEud3JpdGVVSW50MTZMRSgweDA4KTtcbiAgICBkYXRhLndyaXRlU3RyaW5nKGRvbWFpbiwgJ3VjczInKTtcbiAgICBkYXRhLndyaXRlU3RyaW5nKHVzZXJuYW1lLCAndWNzMicpO1xuICAgIGNvbnN0IGxtdjJEYXRhID0gdGhpcy5sbXYyUmVzcG9uc2UoZG9tYWluLCB1c2VybmFtZSwgcGFzc3dvcmQsIHNlcnZlcl9ub25jZSwgY2xpZW50X25vbmNlKTtcbiAgICBkYXRhLmNvcHlGcm9tKGxtdjJEYXRhKTtcbiAgICBjb25zdCBnZW5UaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgY29uc3QgbnRsbURhdGFCdWZmZXIgPSB0aGlzLm50bG12MlJlc3BvbnNlKGRvbWFpbiwgdXNlcm5hbWUsIHBhc3N3b3JkLCBzZXJ2ZXJfbm9uY2UsIHNlcnZlcl9kYXRhLCBjbGllbnRfbm9uY2UsIGdlblRpbWUpO1xuICAgIGRhdGEuY29weUZyb20obnRsbURhdGFCdWZmZXIpO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRSgweDAxMDEpO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRSgweDAwMDApO1xuICAgIGNvbnN0IHRpbWVzdGFtcCA9IHRoaXMuY3JlYXRlVGltZXN0YW1wKGdlblRpbWUpO1xuICAgIGRhdGEuY29weUZyb20odGltZXN0YW1wKTtcbiAgICBkYXRhLmNvcHlGcm9tKGNsaWVudF9ub25jZSk7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKDB4MDAwMCk7XG4gICAgZGF0YS5jb3B5RnJvbShzZXJ2ZXJfZGF0YSk7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKDB4MDAwMCk7XG4gICAgcmV0dXJuIGRhdGEuZGF0YTtcbiAgfVxuXG4gIGNyZWF0ZUNsaWVudE5vbmNlKCkge1xuICAgIGNvbnN0IGNsaWVudF9ub25jZSA9IEJ1ZmZlci5hbGxvYyg4LCAwKTtcbiAgICBsZXQgbmlkeCA9IDA7XG4gICAgd2hpbGUgKG5pZHggPCA4KSB7XG4gICAgICBjbGllbnRfbm9uY2Uud3JpdGVVSW50OChNYXRoLmNlaWwoTWF0aC5yYW5kb20oKSAqIDI1NSksIG5pZHgpO1xuICAgICAgbmlkeCsrO1xuICAgIH1cbiAgICByZXR1cm4gY2xpZW50X25vbmNlO1xuICB9XG5cbiAgbnRsbXYyUmVzcG9uc2UoZG9tYWluOiBzdHJpbmcsIHVzZXI6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZywgc2VydmVyTm9uY2U6IEJ1ZmZlciwgdGFyZ2V0SW5mbzogQnVmZmVyLCBjbGllbnROb25jZTogQnVmZmVyLCBteXRpbWU6IG51bWJlcikge1xuICAgIGNvbnN0IHRpbWVzdGFtcCA9IHRoaXMuY3JlYXRlVGltZXN0YW1wKG15dGltZSk7XG4gICAgY29uc3QgaGFzaCA9IHRoaXMubnR2Mkhhc2goZG9tYWluLCB1c2VyLCBwYXNzd29yZCk7XG4gICAgY29uc3QgZGF0YUxlbmd0aCA9IDQwICsgdGFyZ2V0SW5mby5sZW5ndGg7XG4gICAgY29uc3QgZGF0YSA9IEJ1ZmZlci5hbGxvYyhkYXRhTGVuZ3RoLCAwKTtcbiAgICBzZXJ2ZXJOb25jZS5jb3B5KGRhdGEsIDAsIDAsIDgpO1xuICAgIGRhdGEud3JpdGVVSW50MzJMRSgweDEwMSwgOCk7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKDB4MCwgMTIpO1xuICAgIHRpbWVzdGFtcC5jb3B5KGRhdGEsIDE2LCAwLCA4KTtcbiAgICBjbGllbnROb25jZS5jb3B5KGRhdGEsIDI0LCAwLCA4KTtcbiAgICBkYXRhLndyaXRlVUludDMyTEUoMHgwLCAzMik7XG4gICAgdGFyZ2V0SW5mby5jb3B5KGRhdGEsIDM2LCAwLCB0YXJnZXRJbmZvLmxlbmd0aCk7XG4gICAgZGF0YS53cml0ZVVJbnQzMkxFKDB4MCwgMzYgKyB0YXJnZXRJbmZvLmxlbmd0aCk7XG4gICAgcmV0dXJuIHRoaXMuaG1hY01ENShkYXRhLCBoYXNoKTtcbiAgfVxuXG4gIGNyZWF0ZVRpbWVzdGFtcCh0aW1lOiBudW1iZXIpIHtcbiAgICBjb25zdCB0ZW50aHNPZkFNaWNyb3NlY29uZCA9IChCaWdJbnQodGltZSkgKyBCaWdJbnQoMTE2NDQ0NzM2MDApKSAqIEJpZ0ludCgxMDAwMDAwMCk7XG5cbiAgICBjb25zdCBsbyA9IE51bWJlcih0ZW50aHNPZkFNaWNyb3NlY29uZCAmIEJpZ0ludCgweGZmZmZmZmZmKSk7XG4gICAgY29uc3QgaGkgPSBOdW1iZXIoKHRlbnRoc09mQU1pY3Jvc2Vjb25kID4+IEJpZ0ludCgzMikpICYgQmlnSW50KDB4ZmZmZmZmZmYpKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IEJ1ZmZlci5hbGxvYyg4KTtcbiAgICByZXN1bHQud3JpdGVVSW50MzJMRShsbywgMCk7XG4gICAgcmVzdWx0LndyaXRlVUludDMyTEUoaGksIDQpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBsbXYyUmVzcG9uc2UoZG9tYWluOiBzdHJpbmcsIHVzZXI6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZywgc2VydmVyTm9uY2U6IEJ1ZmZlciwgY2xpZW50Tm9uY2U6IEJ1ZmZlcikge1xuICAgIGNvbnN0IGhhc2ggPSB0aGlzLm50djJIYXNoKGRvbWFpbiwgdXNlciwgcGFzc3dvcmQpO1xuICAgIGNvbnN0IGRhdGEgPSBCdWZmZXIuYWxsb2Moc2VydmVyTm9uY2UubGVuZ3RoICsgY2xpZW50Tm9uY2UubGVuZ3RoLCAwKTtcblxuICAgIHNlcnZlck5vbmNlLmNvcHkoZGF0YSk7XG4gICAgY2xpZW50Tm9uY2UuY29weShkYXRhLCBzZXJ2ZXJOb25jZS5sZW5ndGgsIDAsIGNsaWVudE5vbmNlLmxlbmd0aCk7XG5cbiAgICBjb25zdCBuZXdoYXNoID0gdGhpcy5obWFjTUQ1KGRhdGEsIGhhc2gpO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gQnVmZmVyLmFsbG9jKG5ld2hhc2gubGVuZ3RoICsgY2xpZW50Tm9uY2UubGVuZ3RoLCAwKTtcblxuICAgIG5ld2hhc2guY29weShyZXNwb25zZSk7XG4gICAgY2xpZW50Tm9uY2UuY29weShyZXNwb25zZSwgbmV3aGFzaC5sZW5ndGgsIDAsIGNsaWVudE5vbmNlLmxlbmd0aCk7XG5cbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH1cblxuICBudHYySGFzaChkb21haW46IHN0cmluZywgdXNlcjogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKSB7XG4gICAgY29uc3QgaGFzaCA9IHRoaXMubnRIYXNoKHBhc3N3b3JkKTtcbiAgICBjb25zdCBpZGVudGl0eSA9IEJ1ZmZlci5mcm9tKHVzZXIudG9VcHBlckNhc2UoKSArIGRvbWFpbi50b1VwcGVyQ2FzZSgpLCAndWNzMicpO1xuICAgIHJldHVybiB0aGlzLmhtYWNNRDUoaWRlbnRpdHksIGhhc2gpO1xuICB9XG5cbiAgbnRIYXNoKHRleHQ6IHN0cmluZykge1xuICAgIGNvbnN0IHVuaWNvZGVTdHJpbmcgPSBCdWZmZXIuZnJvbSh0ZXh0LCAndWNzMicpO1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShtZDQuYXJyYXlCdWZmZXIodW5pY29kZVN0cmluZykpO1xuICB9XG5cbiAgaG1hY01ENShkYXRhOiBCdWZmZXIsIGtleTogQnVmZmVyKSB7XG4gICAgcmV0dXJuIGNyeXB0by5jcmVhdGVIbWFjKCdNRDUnLCBrZXkpLnVwZGF0ZShkYXRhKS5kaWdlc3QoKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBOVExNUmVzcG9uc2VQYXlsb2FkO1xubW9kdWxlLmV4cG9ydHMgPSBOVExNUmVzcG9uc2VQYXlsb2FkO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSx1QkFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBQyx1QkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsS0FBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQXlCLFNBQUFJLHlCQUFBQyxXQUFBLGVBQUFDLE9BQUEsa0NBQUFDLGlCQUFBLE9BQUFELE9BQUEsUUFBQUUsZ0JBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSxDQUFBQyxXQUFBLFdBQUFBLFdBQUEsR0FBQUcsZ0JBQUEsR0FBQUQsaUJBQUEsS0FBQUYsV0FBQTtBQUFBLFNBQUFILHdCQUFBTyxHQUFBLEVBQUFKLFdBQUEsU0FBQUEsV0FBQSxJQUFBSSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxXQUFBRCxHQUFBLFFBQUFBLEdBQUEsb0JBQUFBLEdBQUEsd0JBQUFBLEdBQUEsNEJBQUFFLE9B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
@@ -1 +1 @@
1
- {"version":3,"file":"ntlm-payload.js","names":["_writableTrackingBuffer","_interopRequireDefault","require","crypto","_interopRequireWildcard","_jsMd","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","NTLMResponsePayload","data","constructor","loginData","createResponse","toString","indent","challenge","client_nonce","createClientNonce","lmv2len","ntlmv2len","domain","username","userName","password","ntlmData","ntlmpacket","server_data","target","server_nonce","nonce","bufferLength","length","WritableTrackingBuffer","position","writeString","writeUInt32LE","baseIdx","dnIdx","unIdx","l2Idx","ntIdx","writeUInt16LE","lmv2Data","lmv2Response","copyFrom","genTime","Date","getTime","ntlmDataBuffer","ntlmv2Response","timestamp","createTimestamp","Buffer","alloc","nidx","writeUInt8","Math","ceil","random","user","serverNonce","targetInfo","clientNonce","mytime","hash","ntv2Hash","dataLength","copy","hmacMD5","time","tenthsOfAMicrosecond","BigInt","lo","Number","hi","result","newhash","response","ntHash","identity","from","toUpperCase","text","unicodeString","md4","arrayBuffer","createHmac","update","digest","_default","exports","module"],"sources":["../src/ntlm-payload.ts"],"sourcesContent":["import WritableTrackingBuffer from './tracking-buffer/writable-tracking-buffer';\nimport * as crypto from 'crypto';\nimport md4 from 'js-md4';\n\ninterface Options {\n domain: string;\n userName: string;\n password: string;\n ntlmpacket: {\n target: Buffer;\n nonce: Buffer;\n };\n}\n\nclass NTLMResponsePayload {\n data: Buffer;\n\n constructor(loginData: Options) {\n this.data = this.createResponse(loginData);\n }\n\n toString(indent = '') {\n return indent + 'NTLM Auth';\n }\n\n createResponse(challenge: Options) {\n const client_nonce = this.createClientNonce();\n const lmv2len = 24;\n const ntlmv2len = 16;\n const domain = challenge.domain;\n const username = challenge.userName;\n const password = challenge.password;\n const ntlmData = challenge.ntlmpacket;\n const server_data = ntlmData.target;\n const server_nonce = ntlmData.nonce;\n const bufferLength = 64 + (domain.length * 2) + (username.length * 2) + lmv2len + ntlmv2len + 8 + 8 + 8 + 4 + server_data.length + 4;\n const data = new WritableTrackingBuffer(bufferLength);\n data.position = 0;\n data.writeString('NTLMSSP\\u0000', 'utf8');\n data.writeUInt32LE(0x03);\n const baseIdx = 64;\n const dnIdx = baseIdx;\n const unIdx = dnIdx + domain.length * 2;\n const l2Idx = unIdx + username.length * 2;\n const ntIdx = l2Idx + lmv2len;\n data.writeUInt16LE(lmv2len);\n data.writeUInt16LE(lmv2len);\n data.writeUInt32LE(l2Idx);\n data.writeUInt16LE(ntlmv2len);\n data.writeUInt16LE(ntlmv2len);\n data.writeUInt32LE(ntIdx);\n data.writeUInt16LE(domain.length * 2);\n data.writeUInt16LE(domain.length * 2);\n data.writeUInt32LE(dnIdx);\n data.writeUInt16LE(username.length * 2);\n data.writeUInt16LE(username.length * 2);\n data.writeUInt32LE(unIdx);\n data.writeUInt16LE(0);\n data.writeUInt16LE(0);\n data.writeUInt32LE(baseIdx);\n data.writeUInt16LE(0);\n data.writeUInt16LE(0);\n data.writeUInt32LE(baseIdx);\n data.writeUInt16LE(0x8201);\n data.writeUInt16LE(0x08);\n data.writeString(domain, 'ucs2');\n data.writeString(username, 'ucs2');\n const lmv2Data = this.lmv2Response(domain, username, password, server_nonce, client_nonce);\n data.copyFrom(lmv2Data);\n const genTime = new Date().getTime();\n const ntlmDataBuffer = this.ntlmv2Response(domain, username, password, server_nonce, server_data, client_nonce, genTime);\n data.copyFrom(ntlmDataBuffer);\n data.writeUInt32LE(0x0101);\n data.writeUInt32LE(0x0000);\n const timestamp = this.createTimestamp(genTime);\n data.copyFrom(timestamp);\n data.copyFrom(client_nonce);\n data.writeUInt32LE(0x0000);\n data.copyFrom(server_data);\n data.writeUInt32LE(0x0000);\n return data.data;\n }\n\n createClientNonce() {\n const client_nonce = Buffer.alloc(8, 0);\n let nidx = 0;\n while (nidx < 8) {\n client_nonce.writeUInt8(Math.ceil(Math.random() * 255), nidx);\n nidx++;\n }\n return client_nonce;\n }\n\n ntlmv2Response(domain: string, user: string, password: string, serverNonce: Buffer, targetInfo: Buffer, clientNonce: Buffer, mytime: number) {\n const timestamp = this.createTimestamp(mytime);\n const hash = this.ntv2Hash(domain, user, password);\n const dataLength = 40 + targetInfo.length;\n const data = Buffer.alloc(dataLength, 0);\n serverNonce.copy(data, 0, 0, 8);\n data.writeUInt32LE(0x101, 8);\n data.writeUInt32LE(0x0, 12);\n timestamp.copy(data, 16, 0, 8);\n clientNonce.copy(data, 24, 0, 8);\n data.writeUInt32LE(0x0, 32);\n targetInfo.copy(data, 36, 0, targetInfo.length);\n data.writeUInt32LE(0x0, 36 + targetInfo.length);\n return this.hmacMD5(data, hash);\n }\n\n createTimestamp(time: number) {\n const tenthsOfAMicrosecond = (BigInt(time) + BigInt(11644473600)) * BigInt(10000000);\n\n const lo = Number(tenthsOfAMicrosecond & BigInt(0xffffffff));\n const hi = Number((tenthsOfAMicrosecond >> BigInt(32)) & BigInt(0xffffffff));\n\n const result = Buffer.alloc(8);\n result.writeUInt32LE(lo, 0);\n result.writeUInt32LE(hi, 4);\n return result;\n }\n\n lmv2Response(domain: string, user: string, password: string, serverNonce: Buffer, clientNonce: Buffer) {\n const hash = this.ntv2Hash(domain, user, password);\n const data = Buffer.alloc(serverNonce.length + clientNonce.length, 0);\n\n serverNonce.copy(data);\n clientNonce.copy(data, serverNonce.length, 0, clientNonce.length);\n\n const newhash = this.hmacMD5(data, hash);\n const response = Buffer.alloc(newhash.length + clientNonce.length, 0);\n\n newhash.copy(response);\n clientNonce.copy(response, newhash.length, 0, clientNonce.length);\n\n return response;\n }\n\n ntv2Hash(domain: string, user: string, password: string) {\n const hash = this.ntHash(password);\n const identity = Buffer.from(user.toUpperCase() + domain.toUpperCase(), 'ucs2');\n return this.hmacMD5(identity, hash);\n }\n\n ntHash(text: string) {\n const unicodeString = Buffer.from(text, 'ucs2');\n return Buffer.from(md4.arrayBuffer(unicodeString));\n }\n\n hmacMD5(data: Buffer, key: Buffer) {\n return crypto.createHmac('MD5', key).update(data).digest();\n }\n}\n\nexport default NTLMResponsePayload;\nmodule.exports = NTLMResponsePayload;\n"],"mappings":"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"}
1
+ {"version":3,"file":"ntlm-payload.js","names":["_writableTrackingBuffer","_interopRequireDefault","require","crypto","_interopRequireWildcard","_jsMd","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","NTLMResponsePayload","constructor","loginData","data","createResponse","toString","indent","challenge","client_nonce","createClientNonce","lmv2len","ntlmv2len","domain","username","userName","password","ntlmData","ntlmpacket","server_data","target","server_nonce","nonce","bufferLength","length","WritableTrackingBuffer","position","writeString","writeUInt32LE","baseIdx","dnIdx","unIdx","l2Idx","ntIdx","writeUInt16LE","lmv2Data","lmv2Response","copyFrom","genTime","Date","getTime","ntlmDataBuffer","ntlmv2Response","timestamp","createTimestamp","Buffer","alloc","nidx","writeUInt8","Math","ceil","random","user","serverNonce","targetInfo","clientNonce","mytime","hash","ntv2Hash","dataLength","copy","hmacMD5","time","tenthsOfAMicrosecond","BigInt","lo","Number","hi","result","newhash","response","ntHash","identity","from","toUpperCase","text","unicodeString","md4","arrayBuffer","createHmac","update","digest","_default","exports","module"],"sources":["../src/ntlm-payload.ts"],"sourcesContent":["import WritableTrackingBuffer from './tracking-buffer/writable-tracking-buffer';\nimport * as crypto from 'crypto';\nimport md4 from 'js-md4';\n\ninterface Options {\n domain: string;\n userName: string;\n password: string;\n ntlmpacket: {\n target: Buffer;\n nonce: Buffer;\n };\n}\n\nclass NTLMResponsePayload {\n declare data: Buffer;\n\n constructor(loginData: Options) {\n this.data = this.createResponse(loginData);\n }\n\n toString(indent = '') {\n return indent + 'NTLM Auth';\n }\n\n createResponse(challenge: Options) {\n const client_nonce = this.createClientNonce();\n const lmv2len = 24;\n const ntlmv2len = 16;\n const domain = challenge.domain;\n const username = challenge.userName;\n const password = challenge.password;\n const ntlmData = challenge.ntlmpacket;\n const server_data = ntlmData.target;\n const server_nonce = ntlmData.nonce;\n const bufferLength = 64 + (domain.length * 2) + (username.length * 2) + lmv2len + ntlmv2len + 8 + 8 + 8 + 4 + server_data.length + 4;\n const data = new WritableTrackingBuffer(bufferLength);\n data.position = 0;\n data.writeString('NTLMSSP\\u0000', 'utf8');\n data.writeUInt32LE(0x03);\n const baseIdx = 64;\n const dnIdx = baseIdx;\n const unIdx = dnIdx + domain.length * 2;\n const l2Idx = unIdx + username.length * 2;\n const ntIdx = l2Idx + lmv2len;\n data.writeUInt16LE(lmv2len);\n data.writeUInt16LE(lmv2len);\n data.writeUInt32LE(l2Idx);\n data.writeUInt16LE(ntlmv2len);\n data.writeUInt16LE(ntlmv2len);\n data.writeUInt32LE(ntIdx);\n data.writeUInt16LE(domain.length * 2);\n data.writeUInt16LE(domain.length * 2);\n data.writeUInt32LE(dnIdx);\n data.writeUInt16LE(username.length * 2);\n data.writeUInt16LE(username.length * 2);\n data.writeUInt32LE(unIdx);\n data.writeUInt16LE(0);\n data.writeUInt16LE(0);\n data.writeUInt32LE(baseIdx);\n data.writeUInt16LE(0);\n data.writeUInt16LE(0);\n data.writeUInt32LE(baseIdx);\n data.writeUInt16LE(0x8201);\n data.writeUInt16LE(0x08);\n data.writeString(domain, 'ucs2');\n data.writeString(username, 'ucs2');\n const lmv2Data = this.lmv2Response(domain, username, password, server_nonce, client_nonce);\n data.copyFrom(lmv2Data);\n const genTime = new Date().getTime();\n const ntlmDataBuffer = this.ntlmv2Response(domain, username, password, server_nonce, server_data, client_nonce, genTime);\n data.copyFrom(ntlmDataBuffer);\n data.writeUInt32LE(0x0101);\n data.writeUInt32LE(0x0000);\n const timestamp = this.createTimestamp(genTime);\n data.copyFrom(timestamp);\n data.copyFrom(client_nonce);\n data.writeUInt32LE(0x0000);\n data.copyFrom(server_data);\n data.writeUInt32LE(0x0000);\n return data.data;\n }\n\n createClientNonce() {\n const client_nonce = Buffer.alloc(8, 0);\n let nidx = 0;\n while (nidx < 8) {\n client_nonce.writeUInt8(Math.ceil(Math.random() * 255), nidx);\n nidx++;\n }\n return client_nonce;\n }\n\n ntlmv2Response(domain: string, user: string, password: string, serverNonce: Buffer, targetInfo: Buffer, clientNonce: Buffer, mytime: number) {\n const timestamp = this.createTimestamp(mytime);\n const hash = this.ntv2Hash(domain, user, password);\n const dataLength = 40 + targetInfo.length;\n const data = Buffer.alloc(dataLength, 0);\n serverNonce.copy(data, 0, 0, 8);\n data.writeUInt32LE(0x101, 8);\n data.writeUInt32LE(0x0, 12);\n timestamp.copy(data, 16, 0, 8);\n clientNonce.copy(data, 24, 0, 8);\n data.writeUInt32LE(0x0, 32);\n targetInfo.copy(data, 36, 0, targetInfo.length);\n data.writeUInt32LE(0x0, 36 + targetInfo.length);\n return this.hmacMD5(data, hash);\n }\n\n createTimestamp(time: number) {\n const tenthsOfAMicrosecond = (BigInt(time) + BigInt(11644473600)) * BigInt(10000000);\n\n const lo = Number(tenthsOfAMicrosecond & BigInt(0xffffffff));\n const hi = Number((tenthsOfAMicrosecond >> BigInt(32)) & BigInt(0xffffffff));\n\n const result = Buffer.alloc(8);\n result.writeUInt32LE(lo, 0);\n result.writeUInt32LE(hi, 4);\n return result;\n }\n\n lmv2Response(domain: string, user: string, password: string, serverNonce: Buffer, clientNonce: Buffer) {\n const hash = this.ntv2Hash(domain, user, password);\n const data = Buffer.alloc(serverNonce.length + clientNonce.length, 0);\n\n serverNonce.copy(data);\n clientNonce.copy(data, serverNonce.length, 0, clientNonce.length);\n\n const newhash = this.hmacMD5(data, hash);\n const response = Buffer.alloc(newhash.length + clientNonce.length, 0);\n\n newhash.copy(response);\n clientNonce.copy(response, newhash.length, 0, clientNonce.length);\n\n return response;\n }\n\n ntv2Hash(domain: string, user: string, password: string) {\n const hash = this.ntHash(password);\n const identity = Buffer.from(user.toUpperCase() + domain.toUpperCase(), 'ucs2');\n return this.hmacMD5(identity, hash);\n }\n\n ntHash(text: string) {\n const unicodeString = Buffer.from(text, 'ucs2');\n return Buffer.from(md4.arrayBuffer(unicodeString));\n }\n\n hmacMD5(data: Buffer, key: Buffer) {\n return crypto.createHmac('MD5', key).update(data).digest();\n }\n}\n\nexport default NTLMResponsePayload;\nmodule.exports = NTLMResponsePayload;\n"],"mappings":"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"}
@@ -9,10 +9,6 @@ var _stream = require("stream");
9
9
  var _packet = require("./packet");
10
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
11
  class OutgoingMessageStream extends _stream.Duplex {
12
- packetSize;
13
- debug;
14
- bl;
15
- currentMessage;
16
12
  constructor(debug, {
17
13
  packetSize
18
14
  }) {
@@ -83,4 +79,4 @@ class OutgoingMessageStream extends _stream.Duplex {
83
79
  var _default = OutgoingMessageStream;
84
80
  exports.default = _default;
85
81
  module.exports = OutgoingMessageStream;
86
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYmwiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9zdHJlYW0iLCJfcGFja2V0Iiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJPdXRnb2luZ01lc3NhZ2VTdHJlYW0iLCJEdXBsZXgiLCJwYWNrZXRTaXplIiwiZGVidWciLCJibCIsImN1cnJlbnRNZXNzYWdlIiwiY29uc3RydWN0b3IiLCJ3cml0YWJsZU9iamVjdE1vZGUiLCJCdWZmZXJMaXN0Iiwib24iLCJwdXNoIiwiX3dyaXRlIiwibWVzc2FnZSIsIl9lbmNvZGluZyIsImNhbGxiYWNrIiwibGVuZ3RoIiwiSEVBREVSX0xFTkdUSCIsInBhY2tldE51bWJlciIsImRhdGEiLCJpZ25vcmUiLCJhcHBlbmQiLCJzbGljZSIsImNvbnN1bWUiLCJwYWNrZXQiLCJQYWNrZXQiLCJ0eXBlIiwicGFja2V0SWQiLCJyZXNldENvbm5lY3Rpb24iLCJhZGREYXRhIiwiYnVmZmVyIiwicGF1c2UiLCJsYXN0IiwidW5kZWZpbmVkIiwiX3JlYWQiLCJfc2l6ZSIsInJlc3VtZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9vdXRnb2luZy1tZXNzYWdlLXN0cmVhbS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVmZmVyTGlzdCBmcm9tICdibCc7XG5pbXBvcnQgeyBEdXBsZXggfSBmcm9tICdzdHJlYW0nO1xuXG5pbXBvcnQgRGVidWcgZnJvbSAnLi9kZWJ1Zyc7XG5pbXBvcnQgTWVzc2FnZSBmcm9tICcuL21lc3NhZ2UnO1xuaW1wb3J0IHsgUGFja2V0LCBIRUFERVJfTEVOR1RIIH0gZnJvbSAnLi9wYWNrZXQnO1xuXG5jbGFzcyBPdXRnb2luZ01lc3NhZ2VTdHJlYW0gZXh0ZW5kcyBEdXBsZXgge1xuICBwYWNrZXRTaXplOiBudW1iZXI7XG4gIGRlYnVnOiBEZWJ1ZztcbiAgYmw6IGFueTtcblxuICBjdXJyZW50TWVzc2FnZTogTWVzc2FnZSB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihkZWJ1ZzogRGVidWcsIHsgcGFja2V0U2l6ZSB9OiB7IHBhY2tldFNpemU6IG51bWJlciB9KSB7XG4gICAgc3VwZXIoeyB3cml0YWJsZU9iamVjdE1vZGU6IHRydWUgfSk7XG5cbiAgICB0aGlzLnBhY2tldFNpemUgPSBwYWNrZXRTaXplO1xuICAgIHRoaXMuZGVidWcgPSBkZWJ1ZztcbiAgICB0aGlzLmJsID0gbmV3IEJ1ZmZlckxpc3QoKTtcblxuICAgIC8vIFdoZW4gdGhlIHdyaXRhYmxlIHNpZGUgaXMgZW5kZWQsIHB1c2ggYG51bGxgXG4gICAgLy8gdG8gYWxzbyBlbmQgdGhlIHJlYWRhYmxlIHNpZGUuXG4gICAgdGhpcy5vbignZmluaXNoJywgKCkgPT4ge1xuICAgICAgdGhpcy5wdXNoKG51bGwpO1xuICAgIH0pO1xuICB9XG5cbiAgX3dyaXRlKG1lc3NhZ2U6IE1lc3NhZ2UsIF9lbmNvZGluZzogc3RyaW5nLCBjYWxsYmFjazogKGVycj86IEVycm9yIHwgbnVsbCkgPT4gdm9pZCkge1xuICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMucGFja2V0U2l6ZSAtIEhFQURFUl9MRU5HVEg7XG4gICAgbGV0IHBhY2tldE51bWJlciA9IDA7XG5cbiAgICB0aGlzLmN1cnJlbnRNZXNzYWdlID0gbWVzc2FnZTtcbiAgICB0aGlzLmN1cnJlbnRNZXNzYWdlLm9uKCdkYXRhJywgKGRhdGE6IEJ1ZmZlcikgPT4ge1xuICAgICAgaWYgKG1lc3NhZ2UuaWdub3JlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5ibC5hcHBlbmQoZGF0YSk7XG5cbiAgICAgIHdoaWxlICh0aGlzLmJsLmxlbmd0aCA+IGxlbmd0aCkge1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5ibC5zbGljZSgwLCBsZW5ndGgpO1xuICAgICAgICB0aGlzLmJsLmNvbnN1bWUobGVuZ3RoKTtcblxuICAgICAgICAvLyBUT0RPOiBHZXQgcmlkIG9mIGNyZWF0aW5nIGBQYWNrZXRgIGluc3RhbmNlcyBoZXJlLlxuICAgICAgICBjb25zdCBwYWNrZXQgPSBuZXcgUGFja2V0KG1lc3NhZ2UudHlwZSk7XG4gICAgICAgIHBhY2tldC5wYWNrZXRJZChwYWNrZXROdW1iZXIgKz0gMSk7XG4gICAgICAgIHBhY2tldC5yZXNldENvbm5lY3Rpb24obWVzc2FnZS5yZXNldENvbm5lY3Rpb24pO1xuICAgICAgICBwYWNrZXQuYWRkRGF0YShkYXRhKTtcblxuICAgICAgICB0aGlzLmRlYnVnLnBhY2tldCgnU2VudCcsIHBhY2tldCk7XG4gICAgICAgIHRoaXMuZGVidWcuZGF0YShwYWNrZXQpO1xuXG4gICAgICAgIGlmICh0aGlzLnB1c2gocGFja2V0LmJ1ZmZlcikgPT09IGZhbHNlKSB7XG4gICAgICAgICAgbWVzc2FnZS5wYXVzZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmN1cnJlbnRNZXNzYWdlLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5ibC5zbGljZSgpO1xuICAgICAgdGhpcy5ibC5jb25zdW1lKGRhdGEubGVuZ3RoKTtcblxuICAgICAgLy8gVE9ETzogR2V0IHJpZCBvZiBjcmVhdGluZyBgUGFja2V0YCBpbnN0YW5jZXMgaGVyZS5cbiAgICAgIGNvbnN0IHBhY2tldCA9IG5ldyBQYWNrZXQobWVzc2FnZS50eXBlKTtcbiAgICAgIHBhY2tldC5wYWNrZXRJZChwYWNrZXROdW1iZXIgKz0gMSk7XG4gICAgICBwYWNrZXQucmVzZXRDb25uZWN0aW9uKG1lc3NhZ2UucmVzZXRDb25uZWN0aW9uKTtcbiAgICAgIHBhY2tldC5sYXN0KHRydWUpO1xuICAgICAgcGFja2V0Lmlnbm9yZShtZXNzYWdlLmlnbm9yZSk7XG4gICAgICBwYWNrZXQuYWRkRGF0YShkYXRhKTtcblxuICAgICAgdGhpcy5kZWJ1Zy5wYWNrZXQoJ1NlbnQnLCBwYWNrZXQpO1xuICAgICAgdGhpcy5kZWJ1Zy5kYXRhKHBhY2tldCk7XG5cbiAgICAgIHRoaXMucHVzaChwYWNrZXQuYnVmZmVyKTtcblxuICAgICAgdGhpcy5jdXJyZW50TWVzc2FnZSA9IHVuZGVmaW5lZDtcblxuICAgICAgY2FsbGJhY2soKTtcbiAgICB9KTtcbiAgfVxuXG4gIF9yZWFkKF9zaXplOiBudW1iZXIpIHtcbiAgICAvLyBJZiB3ZSBkbyBoYXZlIGEgbWVzc2FnZSwgcmVzdW1lIGl0IGFuZCBnZXQgZGF0YSBmbG93aW5nLlxuICAgIC8vIE90aGVyd2lzZSwgdGhlcmUgaXMgbm90aGluZyB0byBkby5cbiAgICBpZiAodGhpcy5jdXJyZW50TWVzc2FnZSkge1xuICAgICAgdGhpcy5jdXJyZW50TWVzc2FnZS5yZXN1bWUoKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgT3V0Z29pbmdNZXNzYWdlU3RyZWFtO1xubW9kdWxlLmV4cG9ydHMgPSBPdXRnb2luZ01lc3NhZ2VTdHJlYW07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLEdBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUlBLElBQUFFLE9BQUEsR0FBQUYsT0FBQTtBQUFpRCxTQUFBRCx1QkFBQUksR0FBQSxXQUFBQSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxHQUFBRCxHQUFBLEtBQUFFLE9BQUEsRUFBQUYsR0FBQTtBQUVqRCxNQUFNRyxxQkFBcUIsU0FBU0MsY0FBTSxDQUFDO0VBQ3pDQyxVQUFVO0VBQ1ZDLEtBQUs7RUFDTEMsRUFBRTtFQUVGQyxjQUFjO0VBRWRDLFdBQVdBLENBQUNILEtBQVksRUFBRTtJQUFFRDtFQUFtQyxDQUFDLEVBQUU7SUFDaEUsS0FBSyxDQUFDO01BQUVLLGtCQUFrQixFQUFFO0lBQUssQ0FBQyxDQUFDO0lBRW5DLElBQUksQ0FBQ0wsVUFBVSxHQUFHQSxVQUFVO0lBQzVCLElBQUksQ0FBQ0MsS0FBSyxHQUFHQSxLQUFLO0lBQ2xCLElBQUksQ0FBQ0MsRUFBRSxHQUFHLElBQUlJ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
82
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYmwiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9zdHJlYW0iLCJfcGFja2V0Iiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJPdXRnb2luZ01lc3NhZ2VTdHJlYW0iLCJEdXBsZXgiLCJjb25zdHJ1Y3RvciIsImRlYnVnIiwicGFja2V0U2l6ZSIsIndyaXRhYmxlT2JqZWN0TW9kZSIsImJsIiwiQnVmZmVyTGlzdCIsIm9uIiwicHVzaCIsIl93cml0ZSIsIm1lc3NhZ2UiLCJfZW5jb2RpbmciLCJjYWxsYmFjayIsImxlbmd0aCIsIkhFQURFUl9MRU5HVEgiLCJwYWNrZXROdW1iZXIiLCJjdXJyZW50TWVzc2FnZSIsImRhdGEiLCJpZ25vcmUiLCJhcHBlbmQiLCJzbGljZSIsImNvbnN1bWUiLCJwYWNrZXQiLCJQYWNrZXQiLCJ0eXBlIiwicGFja2V0SWQiLCJyZXNldENvbm5lY3Rpb24iLCJhZGREYXRhIiwiYnVmZmVyIiwicGF1c2UiLCJsYXN0IiwidW5kZWZpbmVkIiwiX3JlYWQiLCJfc2l6ZSIsInJlc3VtZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9vdXRnb2luZy1tZXNzYWdlLXN0cmVhbS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQnVmZmVyTGlzdCBmcm9tICdibCc7XG5pbXBvcnQgeyBEdXBsZXggfSBmcm9tICdzdHJlYW0nO1xuXG5pbXBvcnQgRGVidWcgZnJvbSAnLi9kZWJ1Zyc7XG5pbXBvcnQgTWVzc2FnZSBmcm9tICcuL21lc3NhZ2UnO1xuaW1wb3J0IHsgUGFja2V0LCBIRUFERVJfTEVOR1RIIH0gZnJvbSAnLi9wYWNrZXQnO1xuXG5jbGFzcyBPdXRnb2luZ01lc3NhZ2VTdHJlYW0gZXh0ZW5kcyBEdXBsZXgge1xuICBkZWNsYXJlIHBhY2tldFNpemU6IG51bWJlcjtcbiAgZGVjbGFyZSBkZWJ1ZzogRGVidWc7XG4gIGRlY2xhcmUgYmw6IGFueTtcblxuICBkZWNsYXJlIGN1cnJlbnRNZXNzYWdlOiBNZXNzYWdlIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKGRlYnVnOiBEZWJ1ZywgeyBwYWNrZXRTaXplIH06IHsgcGFja2V0U2l6ZTogbnVtYmVyIH0pIHtcbiAgICBzdXBlcih7IHdyaXRhYmxlT2JqZWN0TW9kZTogdHJ1ZSB9KTtcblxuICAgIHRoaXMucGFja2V0U2l6ZSA9IHBhY2tldFNpemU7XG4gICAgdGhpcy5kZWJ1ZyA9IGRlYnVnO1xuICAgIHRoaXMuYmwgPSBuZXcgQnVmZmVyTGlzdCgpO1xuXG4gICAgLy8gV2hlbiB0aGUgd3JpdGFibGUgc2lkZSBpcyBlbmRlZCwgcHVzaCBgbnVsbGBcbiAgICAvLyB0byBhbHNvIGVuZCB0aGUgcmVhZGFibGUgc2lkZS5cbiAgICB0aGlzLm9uKCdmaW5pc2gnLCAoKSA9PiB7XG4gICAgICB0aGlzLnB1c2gobnVsbCk7XG4gICAgfSk7XG4gIH1cblxuICBfd3JpdGUobWVzc2FnZTogTWVzc2FnZSwgX2VuY29kaW5nOiBzdHJpbmcsIGNhbGxiYWNrOiAoZXJyPzogRXJyb3IgfCBudWxsKSA9PiB2b2lkKSB7XG4gICAgY29uc3QgbGVuZ3RoID0gdGhpcy5wYWNrZXRTaXplIC0gSEVBREVSX0xFTkdUSDtcbiAgICBsZXQgcGFja2V0TnVtYmVyID0gMDtcblxuICAgIHRoaXMuY3VycmVudE1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgIHRoaXMuY3VycmVudE1lc3NhZ2Uub24oJ2RhdGEnLCAoZGF0YTogQnVmZmVyKSA9PiB7XG4gICAgICBpZiAobWVzc2FnZS5pZ25vcmUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmJsLmFwcGVuZChkYXRhKTtcblxuICAgICAgd2hpbGUgKHRoaXMuYmwubGVuZ3RoID4gbGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJsLnNsaWNlKDAsIGxlbmd0aCk7XG4gICAgICAgIHRoaXMuYmwuY29uc3VtZShsZW5ndGgpO1xuXG4gICAgICAgIC8vIFRPRE86IEdldCByaWQgb2YgY3JlYXRpbmcgYFBhY2tldGAgaW5zdGFuY2VzIGhlcmUuXG4gICAgICAgIGNvbnN0IHBhY2tldCA9IG5ldyBQYWNrZXQobWVzc2FnZS50eXBlKTtcbiAgICAgICAgcGFja2V0LnBhY2tldElkKHBhY2tldE51bWJlciArPSAxKTtcbiAgICAgICAgcGFja2V0LnJlc2V0Q29ubmVjdGlvbihtZXNzYWdlLnJlc2V0Q29ubmVjdGlvbik7XG4gICAgICAgIHBhY2tldC5hZGREYXRhKGRhdGEpO1xuXG4gICAgICAgIHRoaXMuZGVidWcucGFja2V0KCdTZW50JywgcGFja2V0KTtcbiAgICAgICAgdGhpcy5kZWJ1Zy5kYXRhKHBhY2tldCk7XG5cbiAgICAgICAgaWYgKHRoaXMucHVzaChwYWNrZXQuYnVmZmVyKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBtZXNzYWdlLnBhdXNlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuY3VycmVudE1lc3NhZ2Uub24oJ2VuZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJsLnNsaWNlKCk7XG4gICAgICB0aGlzLmJsLmNvbnN1bWUoZGF0YS5sZW5ndGgpO1xuXG4gICAgICAvLyBUT0RPOiBHZXQgcmlkIG9mIGNyZWF0aW5nIGBQYWNrZXRgIGluc3RhbmNlcyBoZXJlLlxuICAgICAgY29uc3QgcGFja2V0ID0gbmV3IFBhY2tldChtZXNzYWdlLnR5cGUpO1xuICAgICAgcGFja2V0LnBhY2tldElkKHBhY2tldE51bWJlciArPSAxKTtcbiAgICAgIHBhY2tldC5yZXNldENvbm5lY3Rpb24obWVzc2FnZS5yZXNldENvbm5lY3Rpb24pO1xuICAgICAgcGFja2V0Lmxhc3QodHJ1ZSk7XG4gICAgICBwYWNrZXQuaWdub3JlKG1lc3NhZ2UuaWdub3JlKTtcbiAgICAgIHBhY2tldC5hZGREYXRhKGRhdGEpO1xuXG4gICAgICB0aGlzLmRlYnVnLnBhY2tldCgnU2VudCcsIHBhY2tldCk7XG4gICAgICB0aGlzLmRlYnVnLmRhdGEocGFja2V0KTtcblxuICAgICAgdGhpcy5wdXNoKHBhY2tldC5idWZmZXIpO1xuXG4gICAgICB0aGlzLmN1cnJlbnRNZXNzYWdlID0gdW5kZWZpbmVkO1xuXG4gICAgICBjYWxsYmFjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgX3JlYWQoX3NpemU6IG51bWJlcikge1xuICAgIC8vIElmIHdlIGRvIGhhdmUgYSBtZXNzYWdlLCByZXN1bWUgaXQgYW5kIGdldCBkYXRhIGZsb3dpbmcuXG4gICAgLy8gT3RoZXJ3aXNlLCB0aGVyZSBpcyBub3RoaW5nIHRvIGRvLlxuICAgIGlmICh0aGlzLmN1cnJlbnRNZXNzYWdlKSB7XG4gICAgICB0aGlzLmN1cnJlbnRNZXNzYWdlLnJlc3VtZSgpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBPdXRnb2luZ01lc3NhZ2VTdHJlYW07XG5tb2R1bGUuZXhwb3J0cyA9IE91dGdvaW5nTWVzc2FnZVN0cmVhbTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsR0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRCxPQUFBO0FBSUEsSUFBQUUsT0FBQSxHQUFBRixPQUFBO0FBQWlELFNBQUFELHVCQUFBSSxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUsT0FBQSxFQUFBRixHQUFBO0FBRWpELE1BQU1HLHFCQUFxQixTQUFTQyxjQUFNLENBQUM7RUFPekNDLFdBQVdBLENBQUNDLEtBQVksRUFBRTtJQUFFQztFQUFtQyxDQUFDLEVBQUU7SUFDaEUsS0FBSyxDQUFDO01BQUVDLGtCQUFrQixFQUFFO0lBQUssQ0FBQyxDQUFDO0lBRW5DLElBQUksQ0FBQ0QsVUFBVSxHQUFHQSxVQUFVO0lBQzVCLElBQUksQ0FBQ0QsS0FBSyxHQUFHQSxLQUFLO0lBQ2xCLElBQUksQ0FBQ0csRUFBRSxHQUFHLElBQUlDLFdBQVUsQ0FBQyxD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