{"mappings":"ACEA,uBACG,IAAI,GACJ,SAAS,GACT,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,WAAW,GACX,IAAI,GACJ,KAAK,CAAC,QAAQ,CAAC,GACf;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAA;CAAE,GAC3B,CAAC;IAAE,iBAAiB,EAAE,MAAM,CAAA;CAAE,GAAG,eAAe,CAAC,CAAC;AACrD,yBACG,IAAI,GACJ,SAAS,GACT,MAAM,GACN,MAAM,GACN,OAAO,GACP,WAAW,GACX,KAAK,CAAC,UAAU,CAAC,GACjB;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAA;CAAE,CAAC;AAEjC,uBAAuB,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,WAAW,KAG7D;AAED,qBAAqB,IAAI,EAAE,QAAQ,0DAOlC;AAkQD;IAIC,SAAS;SAIJ,KAAK,EAAE,QAAQ;IA0DpB,QAAQ,CAAC,IAAI,EAAE,UAAU;IAiBzB,WAAW,CAAC,GAAG,EAAE,MAAM;IAkBvB,UAAU,CAAC,GAAG,EAAE,QAAQ,EAAE;IA2B1B,YAAY,CAAC,GAAG,EAAE,MAAM;IAgCxB,WAAW,CAAC,GAAG,EAAE,MAAM;IAkBvB,WAAW,CAAC,GAAG,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAA;KAAE;IAiC5C,UAAU,CAAC,GAAG,EAAE,MAAM;IAItB,WAAW,CAAC,GAAG,EAAE,MAAM;IAKvB,WAAW,CAAC,GAAG,EAAE,MAAM;IAQvB,WAAW,CAAC,GAAG,EAAE,MAAM;IAavB,SAAS,CAAC,GAAG,EAAE,MAAM;IAIrB,UAAU,CAAC,GAAG,EAAE,MAAM;IAKtB,UAAU,CAAC,GAAG,EAAE,MAAM;IAOtB,UAAU,CAAC,GAAG,EAAE,MAAM;CAYtB","sources":["lib/lib/bufferbuilder.ts","lib/lib/binarypack.ts","lib/binarypack.ts"],"sourcesContent":[null,null,"import { BufferBuilder } from \"./bufferbuilder\";\n\nexport type Packable =\n\t| null\n\t| undefined\n\t| string\n\t| number\n\t| boolean\n\t| Date\n\t| ArrayBuffer\n\t| Blob\n\t| Array<Packable>\n\t| { [key: string]: Packable }\n\t| ({ BYTES_PER_ELEMENT: number } & ArrayBufferView);\nexport type Unpackable =\n\t| null\n\t| undefined\n\t| string\n\t| number\n\t| boolean\n\t| ArrayBuffer\n\t| Array<Unpackable>\n\t| { [key: string]: Unpackable };\n\nexport function unpack<T extends Unpackable>(data: ArrayBuffer) {\n\tconst unpacker = new Unpacker(data);\n\treturn unpacker.unpack() as T;\n}\n\nexport function pack(data: Packable) {\n\tconst packer = new Packer();\n\tconst res = packer.pack(data);\n\tif (res instanceof Promise) {\n\t\treturn res.then(() => packer.getBuffer());\n\t}\n\treturn packer.getBuffer();\n}\n\nclass Unpacker {\n\tprivate index: number;\n\tprivate readonly dataBuffer: ArrayBuffer;\n\tprivate readonly dataView: Uint8Array;\n\tprivate readonly length: number;\n\n\tconstructor(data: ArrayBuffer) {\n\t\tthis.index = 0;\n\t\tthis.dataBuffer = data;\n\t\tthis.dataView = new Uint8Array(this.dataBuffer);\n\t\tthis.length = this.dataBuffer.byteLength;\n\t}\n\n\tunpack(): Unpackable {\n\t\tconst type = this.unpack_uint8();\n\t\tif (type < 0x80) {\n\t\t\treturn type;\n\t\t} else if ((type ^ 0xe0) < 0x20) {\n\t\t\treturn (type ^ 0xe0) - 0x20;\n\t\t}\n\n\t\tlet size;\n\t\tif ((size = type ^ 0xa0) <= 0x0f) {\n\t\t\treturn this.unpack_raw(size);\n\t\t} else if ((size = type ^ 0xb0) <= 0x0f) {\n\t\t\treturn this.unpack_string(size);\n\t\t} else if ((size = type ^ 0x90) <= 0x0f) {\n\t\t\treturn this.unpack_array(size);\n\t\t} else if ((size = type ^ 0x80) <= 0x0f) {\n\t\t\treturn this.unpack_map(size);\n\t\t}\n\n\t\tswitch (type) {\n\t\t\tcase 0xc0:\n\t\t\t\treturn null;\n\t\t\tcase 0xc1:\n\t\t\t\treturn undefined;\n\t\t\tcase 0xc2:\n\t\t\t\treturn false;\n\t\t\tcase 0xc3:\n\t\t\t\treturn true;\n\t\t\tcase 0xca:\n\t\t\t\treturn this.unpack_float();\n\t\t\tcase 0xcb:\n\t\t\t\treturn this.unpack_double();\n\t\t\tcase 0xcc:\n\t\t\t\treturn this.unpack_uint8();\n\t\t\tcase 0xcd:\n\t\t\t\treturn this.unpack_uint16();\n\t\t\tcase 0xce:\n\t\t\t\treturn this.unpack_uint32();\n\t\t\tcase 0xcf:\n\t\t\t\treturn this.unpack_uint64();\n\t\t\tcase 0xd0:\n\t\t\t\treturn this.unpack_int8();\n\t\t\tcase 0xd1:\n\t\t\t\treturn this.unpack_int16();\n\t\t\tcase 0xd2:\n\t\t\t\treturn this.unpack_int32();\n\t\t\tcase 0xd3:\n\t\t\t\treturn this.unpack_int64();\n\t\t\tcase 0xd4:\n\t\t\t\treturn undefined;\n\t\t\tcase 0xd5:\n\t\t\t\treturn undefined;\n\t\t\tcase 0xd6:\n\t\t\t\treturn undefined;\n\t\t\tcase 0xd7:\n\t\t\t\treturn undefined;\n\t\t\tcase 0xd8:\n\t\t\t\tsize = this.unpack_uint16();\n\t\t\t\treturn this.unpack_string(size);\n\t\t\tcase 0xd9:\n\t\t\t\tsize = this.unpack_uint32();\n\t\t\t\treturn this.unpack_string(size);\n\t\t\tcase 0xda:\n\t\t\t\tsize = this.unpack_uint16();\n\t\t\t\treturn this.unpack_raw(size);\n\t\t\tcase 0xdb:\n\t\t\t\tsize = this.unpack_uint32();\n\t\t\t\treturn this.unpack_raw(size);\n\t\t\tcase 0xdc:\n\t\t\t\tsize = this.unpack_uint16();\n\t\t\t\treturn this.unpack_array(size);\n\t\t\tcase 0xdd:\n\t\t\t\tsize = this.unpack_uint32();\n\t\t\t\treturn this.unpack_array(size);\n\t\t\tcase 0xde:\n\t\t\t\tsize = this.unpack_uint16();\n\t\t\t\treturn this.unpack_map(size);\n\t\t\tcase 0xdf:\n\t\t\t\tsize = this.unpack_uint32();\n\t\t\t\treturn this.unpack_map(size);\n\t\t}\n\t}\n\n\tunpack_uint8() {\n\t\tconst byte = this.dataView[this.index] & 0xff;\n\t\tthis.index++;\n\t\treturn byte;\n\t}\n\n\tunpack_uint16() {\n\t\tconst bytes = this.read(2);\n\t\tconst uint16 = (bytes[0] & 0xff) * 256 + (bytes[1] & 0xff);\n\t\tthis.index += 2;\n\t\treturn uint16;\n\t}\n\n\tunpack_uint32() {\n\t\tconst bytes = this.read(4);\n\t\tconst uint32 =\n\t\t\t((bytes[0] * 256 + bytes[1]) * 256 + bytes[2]) * 256 + bytes[3];\n\t\tthis.index += 4;\n\t\treturn uint32;\n\t}\n\n\tunpack_uint64() {\n\t\tconst bytes = this.read(8);\n\t\tconst uint64 =\n\t\t\t((((((bytes[0] * 256 + bytes[1]) * 256 + bytes[2]) * 256 + bytes[3]) *\n\t\t\t\t256 +\n\t\t\t\tbytes[4]) *\n\t\t\t\t256 +\n\t\t\t\tbytes[5]) *\n\t\t\t\t256 +\n\t\t\t\tbytes[6]) *\n\t\t\t\t256 +\n\t\t\tbytes[7];\n\t\tthis.index += 8;\n\t\treturn uint64;\n\t}\n\n\tunpack_int8() {\n\t\tconst uint8 = this.unpack_uint8();\n\t\treturn uint8 < 0x80 ? uint8 : uint8 - (1 << 8);\n\t}\n\n\tunpack_int16() {\n\t\tconst uint16 = this.unpack_uint16();\n\t\treturn uint16 < 0x8000 ? uint16 : uint16 - (1 << 16);\n\t}\n\n\tunpack_int32() {\n\t\tconst uint32 = this.unpack_uint32();\n\t\treturn uint32 < 2 ** 31 ? uint32 : uint32 - 2 ** 32;\n\t}\n\n\tunpack_int64() {\n\t\tconst uint64 = this.unpack_uint64();\n\t\treturn uint64 < 2 ** 63 ? uint64 : uint64 - 2 ** 64;\n\t}\n\n\tunpack_raw(size: number) {\n\t\tif (this.length < this.index + size) {\n\t\t\tthrow new Error(\n\t\t\t\t`BinaryPackFailure: index is out of range ${this.index} ${size} ${this.length}`,\n\t\t\t);\n\t\t}\n\t\tconst buf = this.dataBuffer.slice(this.index, this.index + size);\n\t\tthis.index += size;\n\n\t\treturn buf;\n\t}\n\n\tunpack_string(size: number) {\n\t\tconst bytes = this.read(size);\n\t\tlet i = 0;\n\t\tlet str = \"\";\n\t\tlet c;\n\t\tlet code;\n\n\t\twhile (i < size) {\n\t\t\tc = bytes[i];\n\t\t\t// The length of a UTF-8 sequence is specified in the first byte:\n\t\t\t// 0xxxxxxx means length 1,\n\t\t\t// 110xxxxx means length 2,\n\t\t\t// 1110xxxx means length 3,\n\t\t\t// 11110xxx means length 4.\n\t\t\t// 10xxxxxx is for non-initial bytes.\n\t\t\tif (c < 0xa0) {\n\t\t\t\t// One-byte sequence: bits 0xxxxxxx\n\t\t\t\tcode = c;\n\t\t\t\ti++;\n\t\t\t} else if ((c ^ 0xc0) < 0x20) {\n\t\t\t\t// Two-byte sequence: bits 110xxxxx 10xxxxxx\n\t\t\t\tcode = ((c & 0x1f) << 6) | (bytes[i + 1] & 0x3f);\n\t\t\t\ti += 2;\n\t\t\t} else if ((c ^ 0xe0) < 0x10) {\n\t\t\t\t// Three-byte sequence: bits 1110xxxx 10xxxxxx 10xxxxxx\n\t\t\t\tcode =\n\t\t\t\t\t((c & 0x0f) << 12) |\n\t\t\t\t\t((bytes[i + 1] & 0x3f) << 6) |\n\t\t\t\t\t(bytes[i + 2] & 0x3f);\n\t\t\t\ti += 3;\n\t\t\t} else {\n\t\t\t\t// Four-byte sequence: bits 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n\t\t\t\tcode =\n\t\t\t\t\t((c & 0x07) << 18) |\n\t\t\t\t\t((bytes[i + 1] & 0x3f) << 12) |\n\t\t\t\t\t((bytes[i + 2] & 0x3f) << 6) |\n\t\t\t\t\t(bytes[i + 3] & 0x3f);\n\t\t\t\ti += 4;\n\t\t\t}\n\t\t\tstr += String.fromCodePoint(code);\n\t\t}\n\n\t\tthis.index += size;\n\t\treturn str;\n\t}\n\n\tunpack_array(size: number) {\n\t\tconst objects = new Array<Unpackable>(size);\n\t\tfor (let i = 0; i < size; i++) {\n\t\t\tobjects[i] = this.unpack();\n\t\t}\n\t\treturn objects;\n\t}\n\n\tunpack_map(size: number) {\n\t\tconst map: { [key: string]: Unpackable } = {};\n\t\tfor (let i = 0; i < size; i++) {\n\t\t\tconst key = this.unpack() as string;\n\t\t\tmap[key] = this.unpack();\n\t\t}\n\t\treturn map;\n\t}\n\n\tunpack_float() {\n\t\tconst uint32 = this.unpack_uint32();\n\t\tconst sign = uint32 >> 31;\n\t\tconst exp = ((uint32 >> 23) & 0xff) - 127;\n\t\tconst fraction = (uint32 & 0x7fffff) | 0x800000;\n\t\treturn (sign === 0 ? 1 : -1) * fraction * 2 ** (exp - 23);\n\t}\n\n\tunpack_double() {\n\t\tconst h32 = this.unpack_uint32();\n\t\tconst l32 = this.unpack_uint32();\n\t\tconst sign = h32 >> 31;\n\t\tconst exp = ((h32 >> 20) & 0x7ff) - 1023;\n\t\tconst hfrac = (h32 & 0xfffff) | 0x100000;\n\t\tconst frac = hfrac * 2 ** (exp - 20) + l32 * 2 ** (exp - 52);\n\t\treturn (sign === 0 ? 1 : -1) * frac;\n\t}\n\n\tread(length: number) {\n\t\tconst j = this.index;\n\t\tif (j + length <= this.length) {\n\t\t\treturn this.dataView.subarray(j, j + length);\n\t\t} else {\n\t\t\tthrow new Error(\"BinaryPackFailure: read index out of range\");\n\t\t}\n\t}\n}\n\nexport class Packer {\n\tprivate _bufferBuilder = new BufferBuilder();\n\tprivate _textEncoder = new TextEncoder();\n\n\tgetBuffer() {\n\t\treturn this._bufferBuilder.toArrayBuffer();\n\t}\n\n\tpack(value: Packable) {\n\t\tif (typeof value === \"string\") {\n\t\t\tthis.pack_string(value);\n\t\t} else if (typeof value === \"number\") {\n\t\t\tif (Math.floor(value) === value) {\n\t\t\t\tthis.pack_integer(value);\n\t\t\t} else {\n\t\t\t\tthis.pack_double(value);\n\t\t\t}\n\t\t} else if (typeof value === \"boolean\") {\n\t\t\tif (value === true) {\n\t\t\t\tthis._bufferBuilder.append(0xc3);\n\t\t\t} else if (value === false) {\n\t\t\t\tthis._bufferBuilder.append(0xc2);\n\t\t\t}\n\t\t} else if (value === undefined) {\n\t\t\tthis._bufferBuilder.append(0xc0);\n\t\t} else if (typeof value === \"object\") {\n\t\t\tif (value === null) {\n\t\t\t\tthis._bufferBuilder.append(0xc0);\n\t\t\t} else {\n\t\t\t\tconst constructor = value.constructor;\n\t\t\t\tif (value instanceof Array) {\n\t\t\t\t\tconst res = this.pack_array(value);\n\t\t\t\t\tif (res instanceof Promise) {\n\t\t\t\t\t\treturn res.then(() => this._bufferBuilder.flush());\n\t\t\t\t\t}\n\t\t\t\t} else if (value instanceof ArrayBuffer) {\n\t\t\t\t\tthis.pack_bin(new Uint8Array(value));\n\t\t\t\t} else if (\"BYTES_PER_ELEMENT\" in value) {\n\t\t\t\t\tconst v = value as unknown as DataView;\n\t\t\t\t\tthis.pack_bin(new Uint8Array(v.buffer, v.byteOffset, v.byteLength));\n\t\t\t\t} else if (value instanceof Date) {\n\t\t\t\t\tthis.pack_string(value.toString());\n\t\t\t\t} else if (value instanceof Blob) {\n\t\t\t\t\treturn value.arrayBuffer().then((buffer) => {\n\t\t\t\t\t\tthis.pack_bin(new Uint8Array(buffer));\n\t\t\t\t\t\tthis._bufferBuilder.flush();\n\t\t\t\t\t});\n\t\t\t\t\t// this.pack_bin(new Uint8Array(await value.arrayBuffer()));\n\t\t\t\t} else if (\n\t\t\t\t\tconstructor == Object ||\n\t\t\t\t\tconstructor.toString().startsWith(\"class\")\n\t\t\t\t) {\n\t\t\t\t\tconst res = this.pack_object(value);\n\t\t\t\t\tif (res instanceof Promise) {\n\t\t\t\t\t\treturn res.then(() => this._bufferBuilder.flush());\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(`Type \"${constructor.toString()}\" not yet supported`);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new Error(`Type \"${typeof value}\" not yet supported`);\n\t\t}\n\t\tthis._bufferBuilder.flush();\n\t}\n\n\tpack_bin(blob: Uint8Array) {\n\t\tconst length = blob.length;\n\n\t\tif (length <= 0x0f) {\n\t\t\tthis.pack_uint8(0xa0 + length);\n\t\t} else if (length <= 0xffff) {\n\t\t\tthis._bufferBuilder.append(0xda);\n\t\t\tthis.pack_uint16(length);\n\t\t} else if (length <= 0xffffffff) {\n\t\t\tthis._bufferBuilder.append(0xdb);\n\t\t\tthis.pack_uint32(length);\n\t\t} else {\n\t\t\tthrow new Error(\"Invalid length\");\n\t\t}\n\t\tthis._bufferBuilder.append_buffer(blob);\n\t}\n\n\tpack_string(str: string) {\n\t\tconst encoded = this._textEncoder.encode(str);\n\t\tconst length = encoded.length;\n\n\t\tif (length <= 0x0f) {\n\t\t\tthis.pack_uint8(0xb0 + length);\n\t\t} else if (length <= 0xffff) {\n\t\t\tthis._bufferBuilder.append(0xd8);\n\t\t\tthis.pack_uint16(length);\n\t\t} else if (length <= 0xffffffff) {\n\t\t\tthis._bufferBuilder.append(0xd9);\n\t\t\tthis.pack_uint32(length);\n\t\t} else {\n\t\t\tthrow new Error(\"Invalid length\");\n\t\t}\n\t\tthis._bufferBuilder.append_buffer(encoded);\n\t}\n\n\tpack_array(ary: Packable[]) {\n\t\tconst length = ary.length;\n\t\tif (length <= 0x0f) {\n\t\t\tthis.pack_uint8(0x90 + length);\n\t\t} else if (length <= 0xffff) {\n\t\t\tthis._bufferBuilder.append(0xdc);\n\t\t\tthis.pack_uint16(length);\n\t\t} else if (length <= 0xffffffff) {\n\t\t\tthis._bufferBuilder.append(0xdd);\n\t\t\tthis.pack_uint32(length);\n\t\t} else {\n\t\t\tthrow new Error(\"Invalid length\");\n\t\t}\n\n\t\tconst packNext = (index: number): Promise<void> | void => {\n\t\t\tif (index < length) {\n\t\t\t\tconst res = this.pack(ary[index]);\n\t\t\t\tif (res instanceof Promise) {\n\t\t\t\t\treturn res.then(() => packNext(index + 1));\n\t\t\t\t}\n\t\t\t\treturn packNext(index + 1);\n\t\t\t}\n\t\t};\n\n\t\treturn packNext(0);\n\t}\n\n\tpack_integer(num: number) {\n\t\tif (num >= -0x20 && num <= 0x7f) {\n\t\t\tthis._bufferBuilder.append(num & 0xff);\n\t\t} else if (num >= 0x00 && num <= 0xff) {\n\t\t\tthis._bufferBuilder.append(0xcc);\n\t\t\tthis.pack_uint8(num);\n\t\t} else if (num >= -0x80 && num <= 0x7f) {\n\t\t\tthis._bufferBuilder.append(0xd0);\n\t\t\tthis.pack_int8(num);\n\t\t} else if (num >= 0x0000 && num <= 0xffff) {\n\t\t\tthis._bufferBuilder.append(0xcd);\n\t\t\tthis.pack_uint16(num);\n\t\t} else if (num >= -0x8000 && num <= 0x7fff) {\n\t\t\tthis._bufferBuilder.append(0xd1);\n\t\t\tthis.pack_int16(num);\n\t\t} else if (num >= 0x00000000 && num <= 0xffffffff) {\n\t\t\tthis._bufferBuilder.append(0xce);\n\t\t\tthis.pack_uint32(num);\n\t\t} else if (num >= -0x80000000 && num <= 0x7fffffff) {\n\t\t\tthis._bufferBuilder.append(0xd2);\n\t\t\tthis.pack_int32(num);\n\t\t} else if (num >= -0x8000000000000000 && num <= 0x7fffffffffffffff) {\n\t\t\tthis._bufferBuilder.append(0xd3);\n\t\t\tthis.pack_int64(num);\n\t\t} else if (num >= 0x0000000000000000 && num <= 0xffffffffffffffff) {\n\t\t\tthis._bufferBuilder.append(0xcf);\n\t\t\tthis.pack_uint64(num);\n\t\t} else {\n\t\t\tthrow new Error(\"Invalid integer\");\n\t\t}\n\t}\n\n\tpack_double(num: number) {\n\t\tlet sign = 0;\n\t\tif (num < 0) {\n\t\t\tsign = 1;\n\t\t\tnum = -num;\n\t\t}\n\t\tconst exp = Math.floor(Math.log(num) / Math.LN2);\n\t\tconst frac0 = num / 2 ** exp - 1;\n\t\tconst frac1 = Math.floor(frac0 * 2 ** 52);\n\t\tconst b32 = 2 ** 32;\n\t\tconst h32 =\n\t\t\t(sign << 31) | ((exp + 1023) << 20) | ((frac1 / b32) & 0x0fffff);\n\t\tconst l32 = frac1 % b32;\n\t\tthis._bufferBuilder.append(0xcb);\n\t\tthis.pack_int32(h32);\n\t\tthis.pack_int32(l32);\n\t}\n\n\tpack_object(obj: { [key: string]: Packable }) {\n\t\tconst keys = Object.keys(obj);\n\t\tconst length = keys.length;\n\t\tif (length <= 0x0f) {\n\t\t\tthis.pack_uint8(0x80 + length);\n\t\t} else if (length <= 0xffff) {\n\t\t\tthis._bufferBuilder.append(0xde);\n\t\t\tthis.pack_uint16(length);\n\t\t} else if (length <= 0xffffffff) {\n\t\t\tthis._bufferBuilder.append(0xdf);\n\t\t\tthis.pack_uint32(length);\n\t\t} else {\n\t\t\tthrow new Error(\"Invalid length\");\n\t\t}\n\n\t\tconst packNext = (index: number): Promise<void> | void => {\n\t\t\tif (index < keys.length) {\n\t\t\t\tconst prop = keys[index];\n\t\t\t\t// eslint-disable-next-line no-prototype-builtins\n\t\t\t\tif (obj.hasOwnProperty(prop)) {\n\t\t\t\t\tthis.pack(prop);\n\t\t\t\t\tconst res = this.pack(obj[prop]);\n\t\t\t\t\tif (res instanceof Promise) {\n\t\t\t\t\t\treturn res.then(() => packNext(index + 1));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn packNext(index + 1);\n\t\t\t}\n\t\t};\n\n\t\treturn packNext(0);\n\t}\n\n\tpack_uint8(num: number) {\n\t\tthis._bufferBuilder.append(num);\n\t}\n\n\tpack_uint16(num: number) {\n\t\tthis._bufferBuilder.append(num >> 8);\n\t\tthis._bufferBuilder.append(num & 0xff);\n\t}\n\n\tpack_uint32(num: number) {\n\t\tconst n = num & 0xffffffff;\n\t\tthis._bufferBuilder.append((n & 0xff000000) >>> 24);\n\t\tthis._bufferBuilder.append((n & 0x00ff0000) >>> 16);\n\t\tthis._bufferBuilder.append((n & 0x0000ff00) >>> 8);\n\t\tthis._bufferBuilder.append(n & 0x000000ff);\n\t}\n\n\tpack_uint64(num: number) {\n\t\tconst high = num / 2 ** 32;\n\t\tconst low = num % 2 ** 32;\n\t\tthis._bufferBuilder.append((high & 0xff000000) >>> 24);\n\t\tthis._bufferBuilder.append((high & 0x00ff0000) >>> 16);\n\t\tthis._bufferBuilder.append((high & 0x0000ff00) >>> 8);\n\t\tthis._bufferBuilder.append(high & 0x000000ff);\n\t\tthis._bufferBuilder.append((low & 0xff000000) >>> 24);\n\t\tthis._bufferBuilder.append((low & 0x00ff0000) >>> 16);\n\t\tthis._bufferBuilder.append((low & 0x0000ff00) >>> 8);\n\t\tthis._bufferBuilder.append(low & 0x000000ff);\n\t}\n\n\tpack_int8(num: number) {\n\t\tthis._bufferBuilder.append(num & 0xff);\n\t}\n\n\tpack_int16(num: number) {\n\t\tthis._bufferBuilder.append((num & 0xff00) >> 8);\n\t\tthis._bufferBuilder.append(num & 0xff);\n\t}\n\n\tpack_int32(num: number) {\n\t\tthis._bufferBuilder.append((num >>> 24) & 0xff);\n\t\tthis._bufferBuilder.append((num & 0x00ff0000) >>> 16);\n\t\tthis._bufferBuilder.append((num & 0x0000ff00) >>> 8);\n\t\tthis._bufferBuilder.append(num & 0x000000ff);\n\t}\n\n\tpack_int64(num: number) {\n\t\tconst high = Math.floor(num / 2 ** 32);\n\t\tconst low = num % 2 ** 32;\n\t\tthis._bufferBuilder.append((high & 0xff000000) >>> 24);\n\t\tthis._bufferBuilder.append((high & 0x00ff0000) >>> 16);\n\t\tthis._bufferBuilder.append((high & 0x0000ff00) >>> 8);\n\t\tthis._bufferBuilder.append(high & 0x000000ff);\n\t\tthis._bufferBuilder.append((low & 0xff000000) >>> 24);\n\t\tthis._bufferBuilder.append((low & 0x00ff0000) >>> 16);\n\t\tthis._bufferBuilder.append((low & 0x0000ff00) >>> 8);\n\t\tthis._bufferBuilder.append(low & 0x000000ff);\n\t}\n}\n"],"names":[],"version":3,"file":"binarypack.d.ts.map","sourceRoot":"../"}