{"_id":"uint-buffer","_rev":"3-a8e2c2f39d62e8f3e8334b31ab9fb0a7","name":"uint-buffer","dist-tags":{"latest":"1.0.0"},"versions":{"0.0.1":{"name":"uint-buffer","version":"0.0.1","description":"Encode and decode unsigned integers to and from byte buffers.","homepage":"https://github.com/rochars/uint-buffer","author":{"name":"Rafael da Silva Rocha","email":"rocha.rafaelsilva@gmail.com"},"license":"MIT","module":"./uint-buffer.js","types":"./uint-buffer.d.ts","main":"./uint-buffer.umd.js","engines":{"node":">=8"},"keywords":["byte","buffer","binary","parser","number","8-bit","16-bit","32-bit","pack","unpack","encode","decode","serialize","deserialize"],"repository":{"type":"git","url":"git://github.com/rochars/uint-buffer.git"},"bugs":{"url":"https://github.com/rochars/uint-buffer/issues"},"directories":{"externs":"externs"},"files":["externs","uint-buffer.js","uint-buffer.d.ts","uint-buffer.umd.js","LICENSE","CHANGELOG.md","README.md"],"scripts":{"lint":"jshint uint-buffer.js externs test/src","test":"nyc ./node_modules/mocha/bin/_mocha test/src --recursive -R dot","test-umd":"node ./node_modules/mocha/bin/_mocha test/src --umd --recursive -R dot","test-tsc":"tsc ./test/dist/TypeScript/main.ts && node -r esm ./test/dist/TypeScript/main.js","test-dist":"npm run test-umd && npm run test-tsc","pack":"npm run test && rollup -c && npm run test-dist","doc":"jsdoc uint-buffer.js -d docs -r README.md -t node_modules/docdash","build":"npm run lint && npm run pack && npm run doc","coverage":"nyc report --reporter=lcov > coverage.lcov && codecov"},"devDependencies":{"codecov":"^3.0.2","docdash":"^0.4.0","esm":"^3.0.51","google-closure-compiler":"^20180610.0.2","jsdoc":"^3.5.5","jshint":"^2.9.5","mocha":"^5.2.0","mocha-lcov-reporter":"^1.3.0","nyc":"^12.0.2","rollup":"^0.61.2","rollup-plugin-closure-compiler-js":"^1.0.6","typescript":"^2.9.2"},"gitHead":"83dad7e0c9ab0910b54b3d8d427d2e98875c3b43","_id":"uint-buffer@0.0.1","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"rochars","email":"rocha.rafaelsilva@gmail.com"},"dist":{"integrity":"sha512-ptrwxbb2G11ZB/VW20zxNACs4ASljuXJsitWcWAyyZiXfBZAk+Js6ofc2QDLzEYpz1juq5NJQUhRoQbxpEWnrA==","shasum":"d27a48acd4b2347ff69e7a1a14b6215dceaa9477","tarball":"https://registry.npmjs.org/uint-buffer/-/uint-buffer-0.0.1.tgz","fileCount":8,"unpackedSize":16567,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbXqKxCRA9TVsSAnZWagAAGB4P/RNk2FU2P6ZEP7aXMtNm\nWGrjSAZchhtkSLh2A4KpnQyvDTflInwumEk4B7d0J8rO5i3b0Wfh2jz7kV/6\nY8Mdai69cpcs/2Xi9XXvusb75MXMPlM/CDw325jrI9ygUoO7AXvYi3li974z\nZRdceeTnIeo+jYxiu3M6fxF2qckoiEmVDfuxVTcuCdxpopg1r9T/730tn81s\nU29KVSZipb90B9E+rvrWPDs5aqqVb9lJSZHxcXmMiTlHjhuVIf8cbgWANYNp\nDxwsuzE6S8x0w9iQcUwflFGH0svKtZKZqeXtaYJqI2NqxGsNjA3mBiCQPWD5\n29ZRhgKTuJKDy7f95nyfxR22ZxxIGbvsYrzRngSBI1Z4B4G0BISSB3kT7vsa\nj9xliJDM6XXVZU3ajomiSc8T0xix1qfzNaAoMX0zKc1k/9wdGefdmpakAjqf\nYWz0BaNLxyW/SyEz+/ddQyHYFwr1o97/yM5gE7SswgzziP7Y+uqFAkIRvcAF\nZ6xcSssGjhe2n1sQTxRjqDYnjgK1mQ/c+GpppjeqJ98m1HBFEV7RhXrODql2\nYcq7Y++swQDgfs1sZluFU+u1LuSUxl9Gtg73zQ7mNvG+mRMtgEiJlpiQPPIq\nH6RraUA1uZEiYEbFeprvTn6+8rwDE4AtlJGGKJFs8lvjIS+o3iQhPUZxGEtE\n0Ktt\r\n=zqnQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGI8oHPTRBsdGuUUFCRIkDY5/Lh2aIr1ifGCPz46Vfh6AiAnxQo/6wuHiofS7ZgRbIaXtFKKDNE7wkuy46Lnkj1QJA=="}]},"maintainers":[{"name":"rochars","email":"rocha.rafaelsilva@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uint-buffer_0.0.1_1532928689656_0.4579391024654056"},"_hasShrinkwrap":false},"0.1.0":{"name":"uint-buffer","version":"0.1.0","description":"Encode and decode unsigned integers to and from byte buffers.","homepage":"https://github.com/rochars/uint-buffer","author":{"name":"Rafael da Silva Rocha","email":"rocha.rafaelsilva@gmail.com"},"license":"MIT","module":"./uint-buffer.js","types":"./uint-buffer.d.ts","main":"./uint-buffer.umd.js","engines":{"node":">=8"},"keywords":["byte","buffer","binary","parser","number","8-bit","16-bit","32-bit","pack","unpack","encode","decode","serialize","deserialize"],"repository":{"type":"git","url":"git://github.com/rochars/uint-buffer.git"},"bugs":{"url":"https://github.com/rochars/uint-buffer/issues"},"directories":{"externs":"externs"},"files":["externs","uint-buffer.js","uint-buffer.d.ts","uint-buffer.umd.js","LICENSE","CHANGELOG.md","README.md"],"scripts":{"lint":"jshint uint-buffer.js externs test/src","test":"nyc ./node_modules/mocha/bin/_mocha test/src --recursive -R dot","test-umd":"node ./node_modules/mocha/bin/_mocha test/src --umd --recursive -R dot","test-tsc":"tsc ./test/dist/TypeScript/main.ts && node -r esm ./test/dist/TypeScript/main.js","test-dist":"npm run test-umd && npm run test-tsc","pack":"npm run test && rollup -c && npm run test-dist","doc":"jsdoc uint-buffer.js -d docs -r README.md -t node_modules/docdash","build":"npm run lint && npm run pack && npm run doc","coverage":"nyc report --reporter=lcov > coverage.lcov && codecov"},"devDependencies":{"codecov":"^3.0.2","docdash":"^0.4.0","esm":"^3.0.51","google-closure-compiler":"^20180610.0.2","jsdoc":"^3.5.5","jshint":"^2.9.5","mocha":"^5.2.0","mocha-lcov-reporter":"^1.3.0","nyc":"^12.0.2","rollup":"^0.61.2","rollup-plugin-closure-compiler-js":"^1.0.6","typescript":"^2.9.2"},"gitHead":"005d01b6e83fa608c14c7f58a9d9f7cb776ce2c9","_id":"uint-buffer@0.1.0","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"rochars","email":"rocha.rafaelsilva@gmail.com"},"dist":{"integrity":"sha512-7xjpjCTijFIXAMxN7OMRfykpCMVfbCrlAmAt2RIlihvkHgvkNV5DBFzyc8OpIQeVpRXJkgXBwmKos4hD8DrX1g==","shasum":"35f2f59fa253d338affcdb6f377750642bd1cf59","tarball":"https://registry.npmjs.org/uint-buffer/-/uint-buffer-0.1.0.tgz","fileCount":8,"unpackedSize":17919,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbXqweCRA9TVsSAnZWagAAaVUQAILGl6rSOoXMHo2SjgNi\nCTzWKNG5TYtFst2nzS5uQQGBFU1gnOsck2t/qToiCGZhkWz4CDhjB2jnGBNM\neTm/Y26IxqXaUceGxpF+W2pVASLMgW7p0Anbcn4+lM+r5Q7i7ljtmfoMlokd\nNsbOFyV13R50/aDkdLuytyvazffbAEeD2jHGFo/rg7CO9UrfFPS4n/rWl1u0\nAXwjxzDo4fw/84eUSE5e+ACQcaIIz3AiaKhOjQoBOxb/GESK0SL6CsVxGmQ6\nfoBeqXGCOsjtwGV2CZI7MqVQYRdoIF3cD9/kk/L34IkXMnBYycRmLjEiQRqm\nYNY0se+j1R3ZSzEEdIQKCl3SekTCsxX4QgTpJRBswE/Jjcu4quzgk8DZ4GH1\nR6E0wf5rSdJulC7W1NbcZ+LygBw2fyQ01tA4OiYN6uMUV+0MIRZ2VEggbfvP\nnkUgEpvVjZW228q6bX0RRxz1ehpgnga/X2ZuNaeMXLi83ek4YCeMeDi2tSYs\nWxiC92GQfbLAuPYry4J6XyOImQJMJLXHi3HnOCe7yh9xbGs2BwaQ0y/3/nEc\nK8XkYAjkg1WYQQe7IF59nwValNUAhCNrMSO+7dudgDbS5bW6Zgy/JqyJbu78\nMDW5tT+V/ixw4woJ4n9Ycvjzob7ghMNwijMW9C8s+/A22RjDfzhVi3h2vtVC\n6CAV\r\n=9R2z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHLNS0Fa+M0mlVHV3QEX0hQg86kJDEX2A+VvZ97J5n4TAiB0zaNfbBgQLNObhlcThTYAkCZWjGkH9ighJSOb3yb3Ng=="}]},"maintainers":[{"name":"rochars","email":"rocha.rafaelsilva@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uint-buffer_0.1.0_1532931102538_0.7597358970394641"},"_hasShrinkwrap":false},"1.0.0":{"name":"uint-buffer","version":"1.0.0","description":"Encode and decode unsigned integers to and from byte buffers.","homepage":"https://github.com/rochars/uint-buffer","author":{"name":"Rafael da Silva Rocha","email":"rocha.rafaelsilva@gmail.com"},"license":"MIT","main":"./dist/uint-buffer.js","module":"./index.js","types":"./index.d.ts","engines":{"node":">=8"},"keywords":["byte","buffer","binary","parser","number","8-bit","16-bit","32-bit","pack","unpack","encode","decode","serialize","deserialize"],"repository":{"type":"git","url":"git://github.com/rochars/uint-buffer.git"},"bugs":{"url":"https://github.com/rochars/uint-buffer/issues"},"directories":{"dist":"dist","externs":"externs"},"scripts":{"lint":"jshint index.js externs","test":"nyc ./node_modules/mocha/bin/_mocha test/src --recursive -R dot","test-umd":"node ./node_modules/mocha/bin/_mocha test/src --umd --recursive -R dot","test-tsc":"tsc ./test/dist/TypeScript/main.ts && node -r esm ./test/dist/TypeScript/main.js","test-dist":"npm run test-umd && npm run test-tsc","pack":"npm run test && rollup -c && npm run test-dist","doc":"jsdoc -c .jsdocrc index.js -d docs -r README.md -t node_modules/docdash","build":"npm run lint && npm run pack && npm run doc","coverage":"nyc report --reporter=lcov > coverage.lcov && codecov"},"devDependencies":{"@ampproject/rollup-plugin-closure-compiler":"^0.13.0","codecov":"^3.6.1","docdash":"^1.1.1","esm":"^3.2.25","jsdoc":"^3.6.3","jshint":"^2.10.3","mocha":"^6.2.2","mocha-lcov-reporter":"^1.3.0","nyc":"^14.1.1","rollup":"^1.27.14","typescript":"^3.7.4"},"dependencies":{},"gitHead":"4459ec68dbefe0d6f3aadda23f8e96124a85503c","_id":"uint-buffer@1.0.0","_npmVersion":"5.6.0","_nodeVersion":"8.9.4","_npmUser":{"name":"rochars","email":"rocha.rafaelsilva@gmail.com"},"dist":{"integrity":"sha512-dNYMKxiWh8xpH5NKNoU7MHd4xm/+gZt/Eaf/QqYDTXiFhvvprqxu+sj92HX7rwdw3zgDFtpUNIfuRpLa5W51tA==","shasum":"0ded386908f43c4ca4333ab07bb2ceaa6b1a13f5","tarball":"https://registry.npmjs.org/uint-buffer/-/uint-buffer-1.0.0.tgz","fileCount":8,"unpackedSize":22659,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeCnytCRA9TVsSAnZWagAAV5YP/0y3pOvEm6mBX1EMChwV\nLRZJ6bpiIGcRr63vViF2GkCH6DiL4JCm9fkL/xlJTlA61kv0mxHHg/QlmsXI\nI6giiSoG6QhxBaalNPc5CU6KShlzkjUv1E3QHfkyuCevrMJkWA8dF4Kh3CQE\nlZjen6mk8QjUTTyQXWL4uqK5Iqr0iynbNuNaxagdi2dnBxYwiMVOCIcW6hNB\nTLd8+ptxh0MPFiYc07VgDAlkwKA8/KM2AK/y6bea0ey3Q/x4jbUFaJvE38mT\nU6WM9J79gltFeh32oYBQggttJJIFjraqadu2wwLgqd0JRwYlFlVh5PNiPAYe\nwWfMYDyECh+IJ6G1W+Z9sVDMwsAgXwxnU2AHNbIyD2z6pQlRBgi67bOUwK+4\nJDlsNSIXRjSP5OUbmTUNyBfIYs7/d2xZOfNjpR3K10eduHRdRs5H7LbJPT86\n/ZuLkpjX5hOHVGX+VuKBNYU4VJesQFMvvqgtmYVGsBsQkcm6J3wTbwTmnpn4\nxMfi7hwmJJCdSOnup+J/eSn9g/wUVGKpGlCxVuPZh7dDxdJqu8WElPwR0F42\nHqZaehAeXlOL8u+22gtaVnsd4Llf//N/xu7mT9rjdsjEiTC5+4hyMG80STPU\nFPA6iP1+UFVsCNLYCVTvCAHgviM/UmGQ0gpboXzSq20x2LIuglgPB+292AdE\nz2Ij\r\n=67UF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAqtkBrWtfRK78EQJdV6cHwA7a9iJP4vQnna+SRPfumsAiEAvskZxOFs4dM04nklwKZpeQk/aRmz4Xu+Up42Go1hyW4="}]},"maintainers":[{"name":"rochars","email":"rocha.rafaelsilva@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/uint-buffer_1.0.0_1577745581241_0.04683574929433898"},"_hasShrinkwrap":false}},"time":{"created":"2018-07-30T05:31:29.656Z","0.0.1":"2018-07-30T05:31:29.744Z","modified":"2022-05-22T16:45:07.048Z","0.1.0":"2018-07-30T06:11:42.620Z","1.0.0":"2019-12-30T22:39:41.387Z"},"maintainers":[{"name":"rochars","email":"rocha.rafaelsilva@gmail.com"}],"description":"Encode and decode unsigned integers to and from byte buffers.","homepage":"https://github.com/rochars/uint-buffer","keywords":["byte","buffer","binary","parser","number","8-bit","16-bit","32-bit","pack","unpack","encode","decode","serialize","deserialize"],"repository":{"type":"git","url":"git://github.com/rochars/uint-buffer.git"},"author":{"name":"Rafael da Silva Rocha","email":"rocha.rafaelsilva@gmail.com"},"bugs":{"url":"https://github.com/rochars/uint-buffer/issues"},"license":"MIT","readme":"# uint-buffer\r\nCopyright (c) 2018-2019 Rafael da Silva Rocha.  \r\nhttps://github.com/rochars/uint-buffer\r\n\r\n[![NPM version](https://img.shields.io/npm/v/uint-buffer.svg?style=for-the-badge)](https://www.npmjs.com/package/uint-buffer) [![Docs](https://img.shields.io/badge/docs-online-blue.svg?style=for-the-badge)](https://rochars.github.io/uint-buffer/docs/index.html) [![Tests](https://img.shields.io/badge/tests-online-blue.svg?style=for-the-badge)](https://rochars.github.io/uint-buffer/test/dist/browser.html)  \r\n[![Codecov](https://img.shields.io/codecov/c/github/rochars/uint-buffer.svg?style=flat-square)](https://codecov.io/gh/rochars/uint-buffer) [![Unix Build](https://img.shields.io/travis/rochars/uint-buffer.svg?style=flat-square)](https://travis-ci.org/rochars/uint-buffer) [![Windows Build](https://img.shields.io/appveyor/ci/rochars/uint-buffer.svg?style=flat-square&logo=appveyor)](https://ci.appveyor.com/project/rochars/uint-buffer) [![Scrutinizer](https://img.shields.io/scrutinizer/g/rochars/uint-buffer.svg?style=flat-square&logo=scrutinizer)](https://scrutinizer-ci.com/g/rochars/uint-buffer/)\r\n\r\n**uint-buffer** is a module to encode and decode unsigned integers to and from byte buffers.\r\n\r\n- **MIT licensed**\r\n- **Can be used where typed arrays can't**\r\n\r\n## Install\r\n```\r\nnpm install uint-buffer\r\n```\r\n\r\n## Use\r\n\r\n### Browser\r\nUse the **uint-buffer.js** file in the **dist** folder:\r\n```html\r\n<script src=\"uint-buffer.js\"></script>\r\n<script>\r\n  // A byte buffer, array and Uint8Array can be used\r\n  var buffer = [];\r\n\r\n  // Create a UintBuffer to handle 16-bit numbers\r\n  var uintBufer = new UintBuffer.UintBuffer(16);\r\n\r\n  // Pack a value\r\n  uintBufer.pack(buffer, 767);\r\n\r\n  // Check the buffer\r\n  console.log(buffer);\r\n</script>\r\n```\r\n\r\nOr load it from the [jsDelivr](https://cdn.jsdelivr.net/npm/uint-buffer) CDN:\r\n```html\r\n<script src=\"https://cdn.jsdelivr.net/npm/uint-buffer\"></script>\r\n```\r\n\r\nOr load it from [unpkg](https://unpkg.com/uint-buffer):\r\n```html\r\n<script src=\"https://unpkg.com/uint-buffer\"></script>\r\n```\r\n\r\n### Node.js\r\n```javascript\r\nconst UintBuffer = require('uint-buffer').UintBuffer;\r\n\r\n// A byte buffer, array and Uint8Array can be used\r\nlet buffer = [];\r\n\r\n// Create a UintBuffer to handle 32-bit numbers\r\nlet uintBufer = new UintBuffer(32);\r\n\r\n// Pack a value\r\nuintBufer.pack(buffer, 2045);\r\n\r\n// Check the buffer\r\nconsole.log(buffer);\r\n```\r\n\r\n## API\r\n```javascript\r\n/**\r\n * A class to write and read unsigned ints to and from byte buffers.\r\n */\r\nexport class UintBuffer {\r\n  \r\n  /**\r\n   * @param {number} bits The number of bits used by the integer.\r\n   */\r\n  constructor(bits) {\r\n    /**\r\n     * The number of bits used by one number.\r\n     * @type {number}\r\n     */\r\n    this.bits;\r\n    /**\r\n     * The number of bytes used by one number.\r\n     * @type {number}\r\n     */\r\n    this.bytes;\r\n  }\r\n\r\n  /**\r\n   * Write one unsigned integer to a byte buffer.\r\n   * @param {!Uint8Array|!Array<number>} buffer An array of bytes.\r\n   * @param {number} num The number.\r\n   * @param {number=} index The index being written in the byte buffer.\r\n   * @return {number} The next index to write on the byte buffer.\r\n   * @throws {TypeError} If num is not a number.\r\n   * @throws {RangeError} On overflow.\r\n   */\r\n  pack(buffer, num, index=0) {}\r\n  \r\n  /**\r\n   * Unpack one unsigned integer from a byte buffer.\r\n   * @param {!Uint8Array|!Array<number>} buffer An array of bytes.\r\n   * @param {number=} index The index to read.\r\n   * @return {number} The number.\r\n   * @throws {RangeError} On overflow.\r\n   */\r\n  unpack(buffer, index=0) {}\r\n\r\n  /**\r\n   * Write one unsigned integer to a byte buffer.\r\n   * This method assumes the input has already been validated\r\n   * and should be used only if you know what you are doing.\r\n   * @param {!Uint8Array|!Array<number>} buffer An array of bytes.\r\n   * @param {number} num The number.\r\n   * @param {number=} index The index being written in the byte buffer.\r\n   * @return {number} The next index to write on the byte buffer.\r\n   */\r\n  packUnsafe(buffer, num, index=0) {}\r\n\r\n  /**\r\n   * Read one unsigned integer from a byte buffer.\r\n   * Does not check for overflows.\r\n   * @param {!Uint8Array|!Array<number>} buffer An array of bytes.\r\n   * @param {number=} index The index to read.\r\n   * @return {number}\r\n   */\r\n  unpackUnsafe(buffer, index=0) {\r\n    /** @type {number} */\r\n    let num = 0;\r\n    for(let x = 0; x < this.bytes; x++) {\r\n      num += buffer[index + x] * Math.pow(256, x);\r\n    }\r\n    return num;\r\n  }\r\n}\r\n```\r\n\r\n## Contributing\r\n**uint-buffer** welcomes all contributions from anyone willing to work in good faith with other contributors and the community. No contribution is too small and all contributions are valued.\r\n\r\nSee [CONTRIBUTING.md](https://github.com/rochars/uint-buffer/blob/master/CONTRIBUTING.md) for details.\r\n\r\n### Style guide\r\n**uint-buffer** code should follow the Google JavaScript Style Guide:  \r\nhttps://google.github.io/styleguide/jsguide.html\r\n\r\n### Code of conduct\r\nThis project is bound by a code of conduct: The [Contributor Covenant, version 1.4](https://github.com/rochars/uint-buffer/blob/master/CODE_OF_CONDUCT.md), also available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html\r\n\r\n## LICENSE\r\nCopyright (c) 2018-2019 Rafael da Silva Rocha.  \r\n\r\nPermission is hereby granted, free of charge, to any person obtaining\r\na copy of this software and associated documentation files (the\r\n\"Software\"), to deal in the Software without restriction, including\r\nwithout limitation the rights to use, copy, modify, merge, publish,\r\ndistribute, sublicense, and/or sell copies of the Software, and to\r\npermit persons to whom the Software is furnished to do so, subject to\r\nthe following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be\r\nincluded in all copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n","readmeFilename":"README.md"}