diff --git a/project starter code/.DS_Store b/.DS_Store
similarity index 100%
rename from project starter code/.DS_Store
rename to .DS_Store
diff --git a/.github/workflows/manual.yml b/.github/workflows/manual.yml
index 7e5c2878..25a4e4cf 100644
--- a/.github/workflows/manual.yml
+++ b/.github/workflows/manual.yml
@@ -17,10 +17,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
- uses: actions/checkout@master
+ uses: actions/checkout@v2
- name: Login
- uses: atlassian/gajira-login@master
+ uses: atlassian/gajira-login@v2
env:
JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }}
JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }}
@@ -38,7 +38,7 @@ jobs:
Repo link: https://github.com/${{ github.repository }}
PR no. ${{ github.event.pull_request.number }}
PR title: ${{ github.event.pull_request.title }}
- PR description: ${{ github.event.pull_request.description }}
+ PR description: ${{ github.event.pull_request.body }}
In addition, please resolve other issues, if any.
fields: '{"components": [{"name":"Github PR"}], "customfield_16449":"https://classroom.udacity.com/", "customfield_16450":"Resolve the PR", "priority":{"id": "4"}}'
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..bca646a7
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+
+# Elastic Beanstalk Files
+.elasticbeanstalk/*
+!.elasticbeanstalk/*.cfg.yml
+!.elasticbeanstalk/*.global.yml
diff --git a/AWS BS.png b/AWS BS.png
new file mode 100644
index 00000000..e091d4d1
Binary files /dev/null and b/AWS BS.png differ
diff --git a/project starter code/node_modules/.bin/mime b/node_modules/.bin/mime
similarity index 100%
rename from project starter code/node_modules/.bin/mime
rename to node_modules/.bin/mime
diff --git a/project starter code/node_modules/.bin/mime.cmd b/node_modules/.bin/mime.cmd
similarity index 100%
rename from project starter code/node_modules/.bin/mime.cmd
rename to node_modules/.bin/mime.cmd
diff --git a/project starter code/node_modules/.bin/mime.ps1 b/node_modules/.bin/mime.ps1
similarity index 100%
rename from project starter code/node_modules/.bin/mime.ps1
rename to node_modules/.bin/mime.ps1
diff --git a/project starter code/node_modules/.bin/mkdirp b/node_modules/.bin/mkdirp
similarity index 100%
rename from project starter code/node_modules/.bin/mkdirp
rename to node_modules/.bin/mkdirp
diff --git a/project starter code/node_modules/.bin/mkdirp.cmd b/node_modules/.bin/mkdirp.cmd
similarity index 100%
rename from project starter code/node_modules/.bin/mkdirp.cmd
rename to node_modules/.bin/mkdirp.cmd
diff --git a/project starter code/node_modules/.bin/mkdirp.ps1 b/node_modules/.bin/mkdirp.ps1
similarity index 100%
rename from project starter code/node_modules/.bin/mkdirp.ps1
rename to node_modules/.bin/mkdirp.ps1
diff --git a/project starter code/node_modules/.bin/pixelmatch b/node_modules/.bin/pixelmatch
similarity index 100%
rename from project starter code/node_modules/.bin/pixelmatch
rename to node_modules/.bin/pixelmatch
diff --git a/project starter code/node_modules/.bin/pixelmatch.cmd b/node_modules/.bin/pixelmatch.cmd
similarity index 100%
rename from project starter code/node_modules/.bin/pixelmatch.cmd
rename to node_modules/.bin/pixelmatch.cmd
diff --git a/project starter code/node_modules/.bin/pixelmatch.ps1 b/node_modules/.bin/pixelmatch.ps1
similarity index 100%
rename from project starter code/node_modules/.bin/pixelmatch.ps1
rename to node_modules/.bin/pixelmatch.ps1
diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json
new file mode 100644
index 00000000..0f09b92c
--- /dev/null
+++ b/node_modules/.package-lock.json
@@ -0,0 +1,1521 @@
+{
+ "name": "api",
+ "version": "1.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "node_modules/@babel/runtime": {
+ "version": "7.24.6",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.6.tgz",
+ "integrity": "sha512-Ja18XcETdEl5mzzACGd+DKgaGJzPTCow7EglgwTmHdwokzDFYh/MHua6lU6DV/hjF2IaOJ4oX2nqnjG7RElKOw==",
+ "dependencies": {
+ "regenerator-runtime": "^0.14.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/runtime/node_modules/regenerator-runtime": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
+ },
+ "node_modules/@jimp/bmp": {
+ "version": "0.16.13",
+ "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.13.tgz",
+ "integrity": "sha512-9edAxu7N2FX7vzkdl5Jo1BbACfycUtBQX+XBMcHA2bk62P8R0otgkHg798frgAk/WxQIzwxqOH6wMiCwrlAzdQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13",
+ "bmp-js": "^0.1.0"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/core": {
+ "version": "0.16.13",
+ "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.16.13.tgz",
+ "integrity": "sha512-qXpA1tzTnlkTku9yqtuRtS/wVntvE6f3m3GNxdTdtmc+O+Wcg9Xo2ABPMh7Nc0AHbMKzwvwgB2JnjZmlmJEObg==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13",
+ "any-base": "^1.1.0",
+ "buffer": "^5.2.0",
+ "exif-parser": "^0.1.12",
+ "file-type": "^16.5.4",
+ "load-bmfont": "^1.3.1",
+ "mkdirp": "^0.5.1",
+ "phin": "^2.9.1",
+ "pixelmatch": "^4.0.2",
+ "tinycolor2": "^1.4.1"
+ }
+ },
+ "node_modules/@jimp/custom": {
+ "version": "0.16.13",
+ "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.13.tgz",
+ "integrity": "sha512-LTATglVUPGkPf15zX1wTMlZ0+AU7cGEGF6ekVF1crA8eHUWsGjrYTB+Ht4E3HTrCok8weQG+K01rJndCp/l4XA==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/core": "^0.16.13"
+ }
+ },
+ "node_modules/@jimp/gif": {
+ "version": "0.16.13",
+ "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.16.13.tgz",
+ "integrity": "sha512-yFAMZGv3o+YcjXilMWWwS/bv1iSqykFahFMSO169uVMtfQVfa90kt4/kDwrXNR6Q9i6VHpFiGZMlF2UnHClBvg==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13",
+ "gifwrap": "^0.9.2",
+ "omggif": "^1.0.9"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/jpeg": {
+ "version": "0.16.13",
+ "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.16.13.tgz",
+ "integrity": "sha512-BJHlDxzTlCqP2ThqP8J0eDrbBfod7npWCbJAcfkKqdQuFk0zBPaZ6KKaQKyKxmWJ87Z6ohANZoMKEbtvrwz1AA==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13",
+ "jpeg-js": "^0.4.2"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-blit": {
+ "version": "0.16.13",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.16.13.tgz",
+ "integrity": "sha512-8Z1k96ZFxlhK2bgrY1JNWNwvaBeI/bciLM0yDOni2+aZwfIIiC7Y6PeWHTAvjHNjphz+XCt01WQmOYWCn0ML6g==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-blur": {
+ "version": "0.16.13",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.16.13.tgz",
+ "integrity": "sha512-PvLrfa8vkej3qinlebyhLpksJgCF5aiysDMSVhOZqwH5nQLLtDE9WYbnsofGw4r0VVpyw3H/ANCIzYTyCtP9Cg==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-circle": {
+ "version": "0.16.13",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.16.13.tgz",
+ "integrity": "sha512-RNave7EFgZrb5V5EpdvJGAEHMnDAJuwv05hKscNfIYxf0kR3KhViBTDy+MoTnMlIvaKFULfwIgaZWzyhuINMzA==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-color": {
+ "version": "0.16.13",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.16.13.tgz",
+ "integrity": "sha512-xW+9BtEvoIkkH/Wde9ql4nAFbYLkVINhpgAE7VcBUsuuB34WUbcBl/taOuUYQrPEFQJ4jfXiAJZ2H/rvKjCVnQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13",
+ "tinycolor2": "^1.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-contain": {
+ "version": "0.16.13",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.16.13.tgz",
+ "integrity": "sha512-QayTXw4tXMwU6q6acNTQrTTFTXpNRBe+MgTGMDU0lk+23PjlFCO/9sacflelG8lsp7vNHhAxFeHptDMAksEYzg==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5",
+ "@jimp/plugin-blit": ">=0.3.5",
+ "@jimp/plugin-resize": ">=0.3.5",
+ "@jimp/plugin-scale": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-cover": {
+ "version": "0.16.13",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.16.13.tgz",
+ "integrity": "sha512-BSsP71GTNaqWRcvkbWuIVH+zK7b3TSNebbhDkFK0fVaUTzHuKMS/mgY4hDZIEVt7Rf5FjadAYtsujHN9w0iSYA==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5",
+ "@jimp/plugin-crop": ">=0.3.5",
+ "@jimp/plugin-resize": ">=0.3.5",
+ "@jimp/plugin-scale": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-crop": {
+ "version": "0.16.13",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.16.13.tgz",
+ "integrity": "sha512-WEl2tPVYwzYL8OKme6Go2xqiWgKsgxlMwyHabdAU4tXaRwOCnOI7v4021gCcBb9zn/oWwguHuKHmK30Fw2Z/PA==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-displace": {
+ "version": "0.16.13",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.16.13.tgz",
+ "integrity": "sha512-qt9WKq8vWrcjySa9DyQ0x/RBMHQeiVjdVSY1SJsMjssPUf0pS74qorcuAkGi89biN3YoGUgPkpqECnAWnYwgGA==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-dither": {
+ "version": "0.16.13",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.16.13.tgz",
+ "integrity": "sha512-5/N3yJggbWQTlGZHQYJPmQXEwR52qaXjEzkp1yRBbtdaekXE3BG/suo0fqeoV/csf8ooI78sJzYmIrxNoWVtgQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-fisheye": {
+ "version": "0.16.13",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.13.tgz",
+ "integrity": "sha512-2rZmTdFbT/cF9lEZIkXCYO0TsT114Q27AX5IAo0Sju6jVQbvIk1dFUTnwLDadTo8wkJlFzGqMQ24Cs8cHWOliA==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-flip": {
+ "version": "0.16.13",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.16.13.tgz",
+ "integrity": "sha512-EmcgAA74FTc5u7Z+hUO/sRjWwfPPLuOQP5O64x5g4j0T12Bd29IgsYZxoutZo/rb3579+JNa/3wsSEmyVv1EpA==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5",
+ "@jimp/plugin-rotate": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-gaussian": {
+ "version": "0.16.13",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.13.tgz",
+ "integrity": "sha512-A1XKfGQD0iDdIiKqFYi8nZMv4dDVYdxbrmgR7y/CzUHhSYdcmoljLIIsZZM3Iks/Wa353W3vtvkWLuDbQbch1w==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-invert": {
+ "version": "0.16.13",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.16.13.tgz",
+ "integrity": "sha512-xFMrIn7czEZbdbMzZWuaZFnlLGJDVJ82y5vlsKsXRTG2kcxRsMPXvZRWHV57nSs1YFsNqXSbrC8B98n0E32njQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-mask": {
+ "version": "0.16.13",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.16.13.tgz",
+ "integrity": "sha512-wLRYKVBXql2GAYgt6FkTnCfE+q5NomM7Dlh0oIPGAoMBWDyTx0eYutRK6PlUrRK2yMHuroAJCglICTbxqGzowQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-normalize": {
+ "version": "0.16.13",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.16.13.tgz",
+ "integrity": "sha512-3tfad0n9soRna4IfW9NzQdQ2Z3ijkmo21DREHbE6CGcMIxOSvfRdSvf1qQPApxjTSo8LTU4MCi/fidx/NZ0GqQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-print": {
+ "version": "0.16.13",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.16.13.tgz",
+ "integrity": "sha512-0m6i3p01PGRkGAK9r53hDYrkyMq+tlhLOIbsSTmZyh6HLshUKlTB7eXskF5OpVd5ZUHoltlNc6R+ggvKIzxRFw==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13",
+ "load-bmfont": "^1.4.0"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5",
+ "@jimp/plugin-blit": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-resize": {
+ "version": "0.16.13",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.16.13.tgz",
+ "integrity": "sha512-qoqtN8LDknm3fJm9nuPygJv30O3vGhSBD2TxrsCnhtOsxKAqVPJtFVdGd/qVuZ8nqQANQmTlfqTiK9mVWQ7MiQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-rotate": {
+ "version": "0.16.13",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.16.13.tgz",
+ "integrity": "sha512-Ev+Jjmj1nHYw897z9C3R9dYsPv7S2/nxdgfFb/h8hOwK0Ovd1k/+yYS46A0uj/JCKK0pQk8wOslYBkPwdnLorw==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5",
+ "@jimp/plugin-blit": ">=0.3.5",
+ "@jimp/plugin-crop": ">=0.3.5",
+ "@jimp/plugin-resize": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-scale": {
+ "version": "0.16.13",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.16.13.tgz",
+ "integrity": "sha512-05POQaEJVucjTiSGMoH68ZiELc7QqpIpuQlZ2JBbhCV+WCbPFUBcGSmE7w4Jd0E2GvCho/NoMODLwgcVGQA97A==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5",
+ "@jimp/plugin-resize": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-shadow": {
+ "version": "0.16.13",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.16.13.tgz",
+ "integrity": "sha512-nmu5VSZ9hsB1JchTKhnnCY+paRBnwzSyK5fhkhtQHHoFD5ArBQ/5wU8y6tCr7k/GQhhGq1OrixsECeMjPoc8Zw==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5",
+ "@jimp/plugin-blur": ">=0.3.5",
+ "@jimp/plugin-resize": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/plugin-threshold": {
+ "version": "0.16.13",
+ "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.16.13.tgz",
+ "integrity": "sha512-+3zArBH0OE3Rhjm4HyAokMsZlIq5gpQec33CncyoSwxtRBM2WAhUVmCUKuBo+Lr/2/4ISoY4BWpHKhMLDix6cA==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5",
+ "@jimp/plugin-color": ">=0.8.0",
+ "@jimp/plugin-resize": ">=0.8.0"
+ }
+ },
+ "node_modules/@jimp/plugins": {
+ "version": "0.16.13",
+ "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.16.13.tgz",
+ "integrity": "sha512-CJLdqODEhEVs4MgWCxpWL5l95sCBlkuSLz65cxEm56X5akIsn4LOlwnKoSEZioYcZUBvHhCheH67AyPTudfnQQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/plugin-blit": "^0.16.13",
+ "@jimp/plugin-blur": "^0.16.13",
+ "@jimp/plugin-circle": "^0.16.13",
+ "@jimp/plugin-color": "^0.16.13",
+ "@jimp/plugin-contain": "^0.16.13",
+ "@jimp/plugin-cover": "^0.16.13",
+ "@jimp/plugin-crop": "^0.16.13",
+ "@jimp/plugin-displace": "^0.16.13",
+ "@jimp/plugin-dither": "^0.16.13",
+ "@jimp/plugin-fisheye": "^0.16.13",
+ "@jimp/plugin-flip": "^0.16.13",
+ "@jimp/plugin-gaussian": "^0.16.13",
+ "@jimp/plugin-invert": "^0.16.13",
+ "@jimp/plugin-mask": "^0.16.13",
+ "@jimp/plugin-normalize": "^0.16.13",
+ "@jimp/plugin-print": "^0.16.13",
+ "@jimp/plugin-resize": "^0.16.13",
+ "@jimp/plugin-rotate": "^0.16.13",
+ "@jimp/plugin-scale": "^0.16.13",
+ "@jimp/plugin-shadow": "^0.16.13",
+ "@jimp/plugin-threshold": "^0.16.13",
+ "timm": "^1.6.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/png": {
+ "version": "0.16.13",
+ "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.16.13.tgz",
+ "integrity": "sha512-8cGqINvbWJf1G0Her9zbq9I80roEX0A+U45xFby3tDWfzn+Zz8XKDF1Nv9VUwVx0N3zpcG1RPs9hfheG4Cq2kg==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13",
+ "pngjs": "^3.3.3"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/tiff": {
+ "version": "0.16.13",
+ "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.16.13.tgz",
+ "integrity": "sha512-oJY8d9u95SwW00VPHuCNxPap6Q1+E/xM5QThb9Hu+P6EGuu6lIeLaNBMmFZyblwFbwrH+WBOZlvIzDhi4Dm/6Q==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "utif": "^2.0.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/types": {
+ "version": "0.16.13",
+ "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.16.13.tgz",
+ "integrity": "sha512-mC0yVNUobFDjoYLg4hoUwzMKgNlxynzwt3cDXzumGvRJ7Kb8qQGOWJQjQFo5OxmGExqzPphkirdbBF88RVLBCg==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/bmp": "^0.16.13",
+ "@jimp/gif": "^0.16.13",
+ "@jimp/jpeg": "^0.16.13",
+ "@jimp/png": "^0.16.13",
+ "@jimp/tiff": "^0.16.13",
+ "timm": "^1.6.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
+ "node_modules/@jimp/utils": {
+ "version": "0.16.13",
+ "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.16.13.tgz",
+ "integrity": "sha512-VyCpkZzFTHXtKgVO35iKN0sYR10psGpV6SkcSeV4oF7eSYlR8Bl6aQLCzVeFjvESF7mxTmIiI3/XrMobVrtxDA==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "regenerator-runtime": "^0.13.3"
+ }
+ },
+ "node_modules/@tokenizer/token": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz",
+ "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A=="
+ },
+ "node_modules/@types/node": {
+ "version": "16.9.1",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz",
+ "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g=="
+ },
+ "node_modules/accepts": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+ "dependencies": {
+ "mime-types": "~2.1.34",
+ "negotiator": "0.6.3"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/any-base": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz",
+ "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg=="
+ },
+ "node_modules/array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
+ },
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+ },
+ "node_modules/axios": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz",
+ "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==",
+ "dependencies": {
+ "follow-redirects": "^1.15.6",
+ "form-data": "^4.0.0",
+ "proxy-from-env": "^1.1.0"
+ }
+ },
+ "node_modules/base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/bmp-js": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz",
+ "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw=="
+ },
+ "node_modules/body-parser": {
+ "version": "1.20.2",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
+ "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "content-type": "~1.0.5",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "on-finished": "2.4.1",
+ "qs": "6.11.0",
+ "raw-body": "2.5.2",
+ "type-is": "~1.6.18",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/buffer": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
+ }
+ },
+ "node_modules/buffer-equal": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz",
+ "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/content-disposition": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+ "dependencies": {
+ "safe-buffer": "5.2.1"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/content-type": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cookie": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
+ "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
+ },
+ "node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/destroy": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/dom-walk": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz",
+ "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w=="
+ },
+ "node_modules/ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
+ },
+ "node_modules/encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
+ },
+ "node_modules/etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/exif-parser": {
+ "version": "0.1.12",
+ "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz",
+ "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw=="
+ },
+ "node_modules/express": {
+ "version": "4.19.2",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz",
+ "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==",
+ "dependencies": {
+ "accepts": "~1.3.8",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.20.2",
+ "content-disposition": "0.5.4",
+ "content-type": "~1.0.4",
+ "cookie": "0.6.0",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "finalhandler": "1.2.0",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "merge-descriptors": "1.0.1",
+ "methods": "~1.1.2",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "path-to-regexp": "0.1.7",
+ "proxy-addr": "~2.0.7",
+ "qs": "6.11.0",
+ "range-parser": "~1.2.1",
+ "safe-buffer": "5.2.1",
+ "send": "0.18.0",
+ "serve-static": "1.15.0",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "type-is": "~1.6.18",
+ "utils-merge": "1.0.1",
+ "vary": "~1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/file-type": {
+ "version": "16.5.4",
+ "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz",
+ "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==",
+ "dependencies": {
+ "readable-web-to-node-stream": "^3.0.0",
+ "strtok3": "^6.2.4",
+ "token-types": "^4.1.1"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/file-type?sponsor=1"
+ }
+ },
+ "node_modules/finalhandler": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
+ "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
+ "dependencies": {
+ "debug": "2.6.9",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "statuses": "2.0.1",
+ "unpipe": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/follow-redirects": {
+ "version": "1.15.6",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
+ "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/RubenVerborgh"
+ }
+ ],
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/form-data": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+ "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/forwarded": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
+ "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==",
+ "dependencies": {
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/gifwrap": {
+ "version": "0.9.4",
+ "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz",
+ "integrity": "sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==",
+ "dependencies": {
+ "image-q": "^4.0.0",
+ "omggif": "^1.0.10"
+ }
+ },
+ "node_modules/global": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz",
+ "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==",
+ "dependencies": {
+ "min-document": "^2.19.0",
+ "process": "^0.11.10"
+ }
+ },
+ "node_modules/has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dependencies": {
+ "function-bind": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/http-errors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "dependencies": {
+ "depd": "2.0.0",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "toidentifier": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/image-q": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/image-q/-/image-q-4.0.0.tgz",
+ "integrity": "sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==",
+ "dependencies": {
+ "@types/node": "16.9.1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ },
+ "node_modules/ipaddr.js": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/is-function": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz",
+ "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ=="
+ },
+ "node_modules/jimp": {
+ "version": "0.16.13",
+ "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.16.13.tgz",
+ "integrity": "sha512-Bxz8q7V4rnCky9A0ktTNGA9SkNFVWRHodddI/DaAWZJzF7sVUlFYKQ60y9JGqrKpi48ECA/TnfMzzc5C70VByA==",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/custom": "^0.16.13",
+ "@jimp/plugins": "^0.16.13",
+ "@jimp/types": "^0.16.13",
+ "regenerator-runtime": "^0.13.3"
+ }
+ },
+ "node_modules/jpeg-js": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz",
+ "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg=="
+ },
+ "node_modules/load-bmfont": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz",
+ "integrity": "sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==",
+ "dependencies": {
+ "buffer-equal": "0.0.1",
+ "mime": "^1.3.4",
+ "parse-bmfont-ascii": "^1.0.3",
+ "parse-bmfont-binary": "^1.0.5",
+ "parse-bmfont-xml": "^1.1.4",
+ "phin": "^2.9.1",
+ "xhr": "^2.0.1",
+ "xtend": "^4.0.0"
+ }
+ },
+ "node_modules/media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/merge-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+ "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
+ },
+ "node_modules/methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/min-document": {
+ "version": "2.19.0",
+ "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz",
+ "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==",
+ "dependencies": {
+ "dom-walk": "^0.1.0"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/mkdirp": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+ "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+ "dependencies": {
+ "minimist": "^1.2.6"
+ },
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "node_modules/negotiator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
+ "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/omggif": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz",
+ "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw=="
+ },
+ "node_modules/on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/pako": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
+ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
+ },
+ "node_modules/parse-bmfont-ascii": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz",
+ "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA=="
+ },
+ "node_modules/parse-bmfont-binary": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz",
+ "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA=="
+ },
+ "node_modules/parse-bmfont-xml": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.6.tgz",
+ "integrity": "sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA==",
+ "dependencies": {
+ "xml-parse-from-string": "^1.0.0",
+ "xml2js": "^0.5.0"
+ }
+ },
+ "node_modules/parse-headers": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz",
+ "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA=="
+ },
+ "node_modules/parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/path-to-regexp": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
+ },
+ "node_modules/peek-readable": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz",
+ "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Borewit"
+ }
+ },
+ "node_modules/phin": {
+ "version": "2.9.3",
+ "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz",
+ "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==",
+ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."
+ },
+ "node_modules/pixelmatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz",
+ "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==",
+ "dependencies": {
+ "pngjs": "^3.0.0"
+ },
+ "bin": {
+ "pixelmatch": "bin/pixelmatch"
+ }
+ },
+ "node_modules/pngjs": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz",
+ "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==",
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
+ "node_modules/proxy-addr": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+ "dependencies": {
+ "forwarded": "0.2.0",
+ "ipaddr.js": "1.9.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
+ },
+ "node_modules/qs": {
+ "version": "6.11.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
+ "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
+ "dependencies": {
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/raw-body": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
+ "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/readable-web-to-node-stream": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz",
+ "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==",
+ "dependencies": {
+ "readable-stream": "^3.6.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Borewit"
+ }
+ },
+ "node_modules/regenerator-runtime": {
+ "version": "0.13.11",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
+ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ },
+ "node_modules/sax": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz",
+ "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg=="
+ },
+ "node_modules/send": {
+ "version": "0.18.0",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
+ "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
+ "dependencies": {
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "mime": "1.6.0",
+ "ms": "2.1.3",
+ "on-finished": "2.4.1",
+ "range-parser": "~1.2.1",
+ "statuses": "2.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/send/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+ },
+ "node_modules/serve-static": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
+ "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
+ "dependencies": {
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "0.18.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
+ },
+ "node_modules/side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "dependencies": {
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/string_decoder": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
+ "node_modules/strtok3": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz",
+ "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==",
+ "dependencies": {
+ "@tokenizer/token": "^0.3.0",
+ "peek-readable": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Borewit"
+ }
+ },
+ "node_modules/timm": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz",
+ "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw=="
+ },
+ "node_modules/tinycolor2": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz",
+ "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw=="
+ },
+ "node_modules/toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/token-types": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz",
+ "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==",
+ "dependencies": {
+ "@tokenizer/token": "^0.3.0",
+ "ieee754": "^1.2.1"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/Borewit"
+ }
+ },
+ "node_modules/type-is": {
+ "version": "1.6.18",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "dependencies": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.24"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/utif": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz",
+ "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==",
+ "dependencies": {
+ "pako": "^1.0.5"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
+ },
+ "node_modules/utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/xhr": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz",
+ "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==",
+ "dependencies": {
+ "global": "~4.4.0",
+ "is-function": "^1.0.1",
+ "parse-headers": "^2.0.0",
+ "xtend": "^4.0.0"
+ }
+ },
+ "node_modules/xml-parse-from-string": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz",
+ "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g=="
+ },
+ "node_modules/xml2js": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz",
+ "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==",
+ "dependencies": {
+ "sax": ">=0.6.0",
+ "xmlbuilder": "~11.0.0"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/xmlbuilder": {
+ "version": "11.0.1",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
+ "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "engines": {
+ "node": ">=0.4"
+ }
+ }
+ }
+}
diff --git a/project starter code/node_modules/@babel/runtime/LICENSE b/node_modules/@babel/runtime/LICENSE
similarity index 100%
rename from project starter code/node_modules/@babel/runtime/LICENSE
rename to node_modules/@babel/runtime/LICENSE
diff --git a/node_modules/@babel/runtime/README.md b/node_modules/@babel/runtime/README.md
new file mode 100644
index 00000000..2f3368ef
--- /dev/null
+++ b/node_modules/@babel/runtime/README.md
@@ -0,0 +1,19 @@
+# @babel/runtime
+
+> babel's modular runtime helpers
+
+See our website [@babel/runtime](https://babeljs.io/docs/babel-runtime) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save @babel/runtime
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/runtime
+```
diff --git a/node_modules/@babel/runtime/helpers/AsyncGenerator.js b/node_modules/@babel/runtime/helpers/AsyncGenerator.js
new file mode 100644
index 00000000..9dca1ed0
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/AsyncGenerator.js
@@ -0,0 +1,64 @@
+var OverloadYield = require("./OverloadYield.js");
+function AsyncGenerator(e) {
+ var r, t;
+ function resume(r, t) {
+ try {
+ var n = e[r](t),
+ o = n.value,
+ u = o instanceof OverloadYield;
+ Promise.resolve(u ? o.v : o).then(function (t) {
+ if (u) {
+ var i = "return" === r ? "return" : "next";
+ if (!o.k || t.done) return resume(i, t);
+ t = e[i](t).value;
+ }
+ settle(n.done ? "return" : "normal", t);
+ }, function (e) {
+ resume("throw", e);
+ });
+ } catch (e) {
+ settle("throw", e);
+ }
+ }
+ function settle(e, n) {
+ switch (e) {
+ case "return":
+ r.resolve({
+ value: n,
+ done: !0
+ });
+ break;
+ case "throw":
+ r.reject(n);
+ break;
+ default:
+ r.resolve({
+ value: n,
+ done: !1
+ });
+ }
+ (r = r.next) ? resume(r.key, r.arg) : t = null;
+ }
+ this._invoke = function (e, n) {
+ return new Promise(function (o, u) {
+ var i = {
+ key: e,
+ arg: n,
+ resolve: o,
+ reject: u,
+ next: null
+ };
+ t ? t = t.next = i : (r = t = i, resume(e, n));
+ });
+ }, "function" != typeof e["return"] && (this["return"] = void 0);
+}
+AsyncGenerator.prototype["function" == typeof Symbol && Symbol.asyncIterator || "@@asyncIterator"] = function () {
+ return this;
+}, AsyncGenerator.prototype.next = function (e) {
+ return this._invoke("next", e);
+}, AsyncGenerator.prototype["throw"] = function (e) {
+ return this._invoke("throw", e);
+}, AsyncGenerator.prototype["return"] = function (e) {
+ return this._invoke("return", e);
+};
+module.exports = AsyncGenerator, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/AwaitValue.js b/node_modules/@babel/runtime/helpers/AwaitValue.js
new file mode 100644
index 00000000..52a7e69a
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/AwaitValue.js
@@ -0,0 +1,4 @@
+function _AwaitValue(t) {
+ this.wrapped = t;
+}
+module.exports = _AwaitValue, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/OverloadYield.js b/node_modules/@babel/runtime/helpers/OverloadYield.js
new file mode 100644
index 00000000..0eca88c7
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/OverloadYield.js
@@ -0,0 +1,4 @@
+function _OverloadYield(e, d) {
+ this.v = e, this.k = d;
+}
+module.exports = _OverloadYield, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js b/node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js
new file mode 100644
index 00000000..29348d5f
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/applyDecoratedDescriptor.js
@@ -0,0 +1,9 @@
+function _applyDecoratedDescriptor(i, e, r, n, l) {
+ var a = {};
+ return Object.keys(n).forEach(function (i) {
+ a[i] = n[i];
+ }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, ("value" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) {
+ return n(i, e, r) || r;
+ }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer && (Object.defineProperty(i, e, a), a = null), a;
+}
+module.exports = _applyDecoratedDescriptor, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/applyDecs.js b/node_modules/@babel/runtime/helpers/applyDecs.js
new file mode 100644
index 00000000..3770c5ae
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/applyDecs.js
@@ -0,0 +1,236 @@
+var _typeof = require("./typeof.js")["default"];
+var setFunctionName = require("./setFunctionName.js");
+var toPropertyKey = require("./toPropertyKey.js");
+function old_createMetadataMethodsForProperty(e, t, a, r) {
+ return {
+ getMetadata: function getMetadata(o) {
+ old_assertNotFinished(r, "getMetadata"), old_assertMetadataKey(o);
+ var i = e[o];
+ if (void 0 !== i) if (1 === t) {
+ var n = i["public"];
+ if (void 0 !== n) return n[a];
+ } else if (2 === t) {
+ var l = i["private"];
+ if (void 0 !== l) return l.get(a);
+ } else if (Object.hasOwnProperty.call(i, "constructor")) return i.constructor;
+ },
+ setMetadata: function setMetadata(o, i) {
+ old_assertNotFinished(r, "setMetadata"), old_assertMetadataKey(o);
+ var n = e[o];
+ if (void 0 === n && (n = e[o] = {}), 1 === t) {
+ var l = n["public"];
+ void 0 === l && (l = n["public"] = {}), l[a] = i;
+ } else if (2 === t) {
+ var s = n.priv;
+ void 0 === s && (s = n["private"] = new Map()), s.set(a, i);
+ } else n.constructor = i;
+ }
+ };
+}
+function old_convertMetadataMapToFinal(e, t) {
+ var a = e[Symbol.metadata || Symbol["for"]("Symbol.metadata")],
+ r = Object.getOwnPropertySymbols(t);
+ if (0 !== r.length) {
+ for (var o = 0; o < r.length; o++) {
+ var i = r[o],
+ n = t[i],
+ l = a ? a[i] : null,
+ s = n["public"],
+ c = l ? l["public"] : null;
+ s && c && Object.setPrototypeOf(s, c);
+ var d = n["private"];
+ if (d) {
+ var u = Array.from(d.values()),
+ f = l ? l["private"] : null;
+ f && (u = u.concat(f)), n["private"] = u;
+ }
+ l && Object.setPrototypeOf(n, l);
+ }
+ a && Object.setPrototypeOf(t, a), e[Symbol.metadata || Symbol["for"]("Symbol.metadata")] = t;
+ }
+}
+function old_createAddInitializerMethod(e, t) {
+ return function (a) {
+ old_assertNotFinished(t, "addInitializer"), old_assertCallable(a, "An initializer"), e.push(a);
+ };
+}
+function old_memberDec(e, t, a, r, o, i, n, l, s) {
+ var c;
+ switch (i) {
+ case 1:
+ c = "accessor";
+ break;
+ case 2:
+ c = "method";
+ break;
+ case 3:
+ c = "getter";
+ break;
+ case 4:
+ c = "setter";
+ break;
+ default:
+ c = "field";
+ }
+ var d,
+ u,
+ f = {
+ kind: c,
+ name: l ? "#" + t : toPropertyKey(t),
+ isStatic: n,
+ isPrivate: l
+ },
+ p = {
+ v: !1
+ };
+ if (0 !== i && (f.addInitializer = old_createAddInitializerMethod(o, p)), l) {
+ d = 2, u = Symbol(t);
+ var v = {};
+ 0 === i ? (v.get = a.get, v.set = a.set) : 2 === i ? v.get = function () {
+ return a.value;
+ } : (1 !== i && 3 !== i || (v.get = function () {
+ return a.get.call(this);
+ }), 1 !== i && 4 !== i || (v.set = function (e) {
+ a.set.call(this, e);
+ })), f.access = v;
+ } else d = 1, u = t;
+ try {
+ return e(s, Object.assign(f, old_createMetadataMethodsForProperty(r, d, u, p)));
+ } finally {
+ p.v = !0;
+ }
+}
+function old_assertNotFinished(e, t) {
+ if (e.v) throw Error("attempted to call " + t + " after decoration was finished");
+}
+function old_assertMetadataKey(e) {
+ if ("symbol" != _typeof(e)) throw new TypeError("Metadata keys must be symbols, received: " + e);
+}
+function old_assertCallable(e, t) {
+ if ("function" != typeof e) throw new TypeError(t + " must be a function");
+}
+function old_assertValidReturnValue(e, t) {
+ var a = _typeof(t);
+ if (1 === e) {
+ if ("object" !== a || null === t) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");
+ void 0 !== t.get && old_assertCallable(t.get, "accessor.get"), void 0 !== t.set && old_assertCallable(t.set, "accessor.set"), void 0 !== t.init && old_assertCallable(t.init, "accessor.init"), void 0 !== t.initializer && old_assertCallable(t.initializer, "accessor.initializer");
+ } else if ("function" !== a) throw new TypeError((0 === e ? "field" : 10 === e ? "class" : "method") + " decorators must return a function or void 0");
+}
+function old_getInit(e) {
+ var t;
+ return null == (t = e.init) && (t = e.initializer) && void 0 !== console && console.warn(".initializer has been renamed to .init as of March 2022"), t;
+}
+function old_applyMemberDec(e, t, a, r, o, i, n, l, s) {
+ var c,
+ d,
+ u,
+ f,
+ p,
+ v,
+ y,
+ h = a[0];
+ if (n ? (0 === o || 1 === o ? (c = {
+ get: a[3],
+ set: a[4]
+ }, u = "get") : 3 === o ? (c = {
+ get: a[3]
+ }, u = "get") : 4 === o ? (c = {
+ set: a[3]
+ }, u = "set") : c = {
+ value: a[3]
+ }, 0 !== o && (1 === o && setFunctionName(a[4], "#" + r, "set"), setFunctionName(a[3], "#" + r, u))) : 0 !== o && (c = Object.getOwnPropertyDescriptor(t, r)), 1 === o ? f = {
+ get: c.get,
+ set: c.set
+ } : 2 === o ? f = c.value : 3 === o ? f = c.get : 4 === o && (f = c.set), "function" == typeof h) void 0 !== (p = old_memberDec(h, r, c, l, s, o, i, n, f)) && (old_assertValidReturnValue(o, p), 0 === o ? d = p : 1 === o ? (d = old_getInit(p), v = p.get || f.get, y = p.set || f.set, f = {
+ get: v,
+ set: y
+ }) : f = p);else for (var m = h.length - 1; m >= 0; m--) {
+ var b;
+ void 0 !== (p = old_memberDec(h[m], r, c, l, s, o, i, n, f)) && (old_assertValidReturnValue(o, p), 0 === o ? b = p : 1 === o ? (b = old_getInit(p), v = p.get || f.get, y = p.set || f.set, f = {
+ get: v,
+ set: y
+ }) : f = p, void 0 !== b && (void 0 === d ? d = b : "function" == typeof d ? d = [d, b] : d.push(b)));
+ }
+ if (0 === o || 1 === o) {
+ if (void 0 === d) d = function d(e, t) {
+ return t;
+ };else if ("function" != typeof d) {
+ var g = d;
+ d = function d(e, t) {
+ for (var a = t, r = 0; r < g.length; r++) a = g[r].call(e, a);
+ return a;
+ };
+ } else {
+ var _ = d;
+ d = function d(e, t) {
+ return _.call(e, t);
+ };
+ }
+ e.push(d);
+ }
+ 0 !== o && (1 === o ? (c.get = f.get, c.set = f.set) : 2 === o ? c.value = f : 3 === o ? c.get = f : 4 === o && (c.set = f), n ? 1 === o ? (e.push(function (e, t) {
+ return f.get.call(e, t);
+ }), e.push(function (e, t) {
+ return f.set.call(e, t);
+ })) : 2 === o ? e.push(f) : e.push(function (e, t) {
+ return f.call(e, t);
+ }) : Object.defineProperty(t, r, c));
+}
+function old_applyMemberDecs(e, t, a, r, o) {
+ for (var i, n, l = new Map(), s = new Map(), c = 0; c < o.length; c++) {
+ var d = o[c];
+ if (Array.isArray(d)) {
+ var u,
+ f,
+ p,
+ v = d[1],
+ y = d[2],
+ h = d.length > 3,
+ m = v >= 5;
+ if (m ? (u = t, f = r, 0 != (v -= 5) && (p = n = n || [])) : (u = t.prototype, f = a, 0 !== v && (p = i = i || [])), 0 !== v && !h) {
+ var b = m ? s : l,
+ g = b.get(y) || 0;
+ if (!0 === g || 3 === g && 4 !== v || 4 === g && 3 !== v) throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + y);
+ !g && v > 2 ? b.set(y, v) : b.set(y, !0);
+ }
+ old_applyMemberDec(e, u, d, y, v, m, h, f, p);
+ }
+ }
+ old_pushInitializers(e, i), old_pushInitializers(e, n);
+}
+function old_pushInitializers(e, t) {
+ t && e.push(function (e) {
+ for (var a = 0; a < t.length; a++) t[a].call(e);
+ return e;
+ });
+}
+function old_applyClassDecs(e, t, a, r) {
+ if (r.length > 0) {
+ for (var o = [], i = t, n = t.name, l = r.length - 1; l >= 0; l--) {
+ var s = {
+ v: !1
+ };
+ try {
+ var c = Object.assign({
+ kind: "class",
+ name: n,
+ addInitializer: old_createAddInitializerMethod(o, s)
+ }, old_createMetadataMethodsForProperty(a, 0, n, s)),
+ d = r[l](i, c);
+ } finally {
+ s.v = !0;
+ }
+ void 0 !== d && (old_assertValidReturnValue(10, d), i = d);
+ }
+ e.push(i, function () {
+ for (var e = 0; e < o.length; e++) o[e].call(i);
+ });
+ }
+}
+function applyDecs(e, t, a) {
+ var r = [],
+ o = {},
+ i = {};
+ return old_applyMemberDecs(r, e, i, o, t), old_convertMetadataMapToFinal(e.prototype, i), old_applyClassDecs(r, e, o, a), old_convertMetadataMapToFinal(e, o), r;
+}
+module.exports = applyDecs, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/applyDecs2203.js b/node_modules/@babel/runtime/helpers/applyDecs2203.js
new file mode 100644
index 00000000..d3da3338
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/applyDecs2203.js
@@ -0,0 +1,184 @@
+var _typeof = require("./typeof.js")["default"];
+function applyDecs2203Factory() {
+ function createAddInitializerMethod(e, t) {
+ return function (r) {
+ !function (e, t) {
+ if (e.v) throw Error("attempted to call addInitializer after decoration was finished");
+ }(t), assertCallable(r, "An initializer"), e.push(r);
+ };
+ }
+ function memberDec(e, t, r, a, n, i, s, o) {
+ var c;
+ switch (n) {
+ case 1:
+ c = "accessor";
+ break;
+ case 2:
+ c = "method";
+ break;
+ case 3:
+ c = "getter";
+ break;
+ case 4:
+ c = "setter";
+ break;
+ default:
+ c = "field";
+ }
+ var l,
+ u,
+ f = {
+ kind: c,
+ name: s ? "#" + t : t,
+ "static": i,
+ "private": s
+ },
+ p = {
+ v: !1
+ };
+ 0 !== n && (f.addInitializer = createAddInitializerMethod(a, p)), 0 === n ? s ? (l = r.get, u = r.set) : (l = function l() {
+ return this[t];
+ }, u = function u(e) {
+ this[t] = e;
+ }) : 2 === n ? l = function l() {
+ return r.value;
+ } : (1 !== n && 3 !== n || (l = function l() {
+ return r.get.call(this);
+ }), 1 !== n && 4 !== n || (u = function u(e) {
+ r.set.call(this, e);
+ })), f.access = l && u ? {
+ get: l,
+ set: u
+ } : l ? {
+ get: l
+ } : {
+ set: u
+ };
+ try {
+ return e(o, f);
+ } finally {
+ p.v = !0;
+ }
+ }
+ function assertCallable(e, t) {
+ if ("function" != typeof e) throw new TypeError(t + " must be a function");
+ }
+ function assertValidReturnValue(e, t) {
+ var r = _typeof(t);
+ if (1 === e) {
+ if ("object" !== r || null === t) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");
+ void 0 !== t.get && assertCallable(t.get, "accessor.get"), void 0 !== t.set && assertCallable(t.set, "accessor.set"), void 0 !== t.init && assertCallable(t.init, "accessor.init");
+ } else if ("function" !== r) throw new TypeError((0 === e ? "field" : 10 === e ? "class" : "method") + " decorators must return a function or void 0");
+ }
+ function applyMemberDec(e, t, r, a, n, i, s, o) {
+ var c,
+ l,
+ u,
+ f,
+ p,
+ d,
+ h = r[0];
+ if (s ? c = 0 === n || 1 === n ? {
+ get: r[3],
+ set: r[4]
+ } : 3 === n ? {
+ get: r[3]
+ } : 4 === n ? {
+ set: r[3]
+ } : {
+ value: r[3]
+ } : 0 !== n && (c = Object.getOwnPropertyDescriptor(t, a)), 1 === n ? u = {
+ get: c.get,
+ set: c.set
+ } : 2 === n ? u = c.value : 3 === n ? u = c.get : 4 === n && (u = c.set), "function" == typeof h) void 0 !== (f = memberDec(h, a, c, o, n, i, s, u)) && (assertValidReturnValue(n, f), 0 === n ? l = f : 1 === n ? (l = f.init, p = f.get || u.get, d = f.set || u.set, u = {
+ get: p,
+ set: d
+ }) : u = f);else for (var v = h.length - 1; v >= 0; v--) {
+ var g;
+ void 0 !== (f = memberDec(h[v], a, c, o, n, i, s, u)) && (assertValidReturnValue(n, f), 0 === n ? g = f : 1 === n ? (g = f.init, p = f.get || u.get, d = f.set || u.set, u = {
+ get: p,
+ set: d
+ }) : u = f, void 0 !== g && (void 0 === l ? l = g : "function" == typeof l ? l = [l, g] : l.push(g)));
+ }
+ if (0 === n || 1 === n) {
+ if (void 0 === l) l = function l(e, t) {
+ return t;
+ };else if ("function" != typeof l) {
+ var y = l;
+ l = function l(e, t) {
+ for (var r = t, a = 0; a < y.length; a++) r = y[a].call(e, r);
+ return r;
+ };
+ } else {
+ var m = l;
+ l = function l(e, t) {
+ return m.call(e, t);
+ };
+ }
+ e.push(l);
+ }
+ 0 !== n && (1 === n ? (c.get = u.get, c.set = u.set) : 2 === n ? c.value = u : 3 === n ? c.get = u : 4 === n && (c.set = u), s ? 1 === n ? (e.push(function (e, t) {
+ return u.get.call(e, t);
+ }), e.push(function (e, t) {
+ return u.set.call(e, t);
+ })) : 2 === n ? e.push(u) : e.push(function (e, t) {
+ return u.call(e, t);
+ }) : Object.defineProperty(t, a, c));
+ }
+ function pushInitializers(e, t) {
+ t && e.push(function (e) {
+ for (var r = 0; r < t.length; r++) t[r].call(e);
+ return e;
+ });
+ }
+ return function (e, t, r) {
+ var a = [];
+ return function (e, t, r) {
+ for (var a, n, i = new Map(), s = new Map(), o = 0; o < r.length; o++) {
+ var c = r[o];
+ if (Array.isArray(c)) {
+ var l,
+ u,
+ f = c[1],
+ p = c[2],
+ d = c.length > 3,
+ h = f >= 5;
+ if (h ? (l = t, 0 != (f -= 5) && (u = n = n || [])) : (l = t.prototype, 0 !== f && (u = a = a || [])), 0 !== f && !d) {
+ var v = h ? s : i,
+ g = v.get(p) || 0;
+ if (!0 === g || 3 === g && 4 !== f || 4 === g && 3 !== f) throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + p);
+ !g && f > 2 ? v.set(p, f) : v.set(p, !0);
+ }
+ applyMemberDec(e, l, c, p, f, h, d, u);
+ }
+ }
+ pushInitializers(e, a), pushInitializers(e, n);
+ }(a, e, t), function (e, t, r) {
+ if (r.length > 0) {
+ for (var a = [], n = t, i = t.name, s = r.length - 1; s >= 0; s--) {
+ var o = {
+ v: !1
+ };
+ try {
+ var c = r[s](n, {
+ kind: "class",
+ name: i,
+ addInitializer: createAddInitializerMethod(a, o)
+ });
+ } finally {
+ o.v = !0;
+ }
+ void 0 !== c && (assertValidReturnValue(10, c), n = c);
+ }
+ e.push(n, function () {
+ for (var e = 0; e < a.length; e++) a[e].call(n);
+ });
+ }
+ }(a, e, r), a;
+ };
+}
+var applyDecs2203Impl;
+function applyDecs2203(e, t, r) {
+ return (applyDecs2203Impl = applyDecs2203Impl || applyDecs2203Factory())(e, t, r);
+}
+module.exports = applyDecs2203, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/applyDecs2203R.js b/node_modules/@babel/runtime/helpers/applyDecs2203R.js
new file mode 100644
index 00000000..725419b5
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/applyDecs2203R.js
@@ -0,0 +1,191 @@
+var _typeof = require("./typeof.js")["default"];
+var setFunctionName = require("./setFunctionName.js");
+var toPropertyKey = require("./toPropertyKey.js");
+function applyDecs2203RFactory() {
+ function createAddInitializerMethod(e, t) {
+ return function (r) {
+ !function (e, t) {
+ if (e.v) throw Error("attempted to call addInitializer after decoration was finished");
+ }(t), assertCallable(r, "An initializer"), e.push(r);
+ };
+ }
+ function memberDec(e, t, r, n, a, i, o, s) {
+ var c;
+ switch (a) {
+ case 1:
+ c = "accessor";
+ break;
+ case 2:
+ c = "method";
+ break;
+ case 3:
+ c = "getter";
+ break;
+ case 4:
+ c = "setter";
+ break;
+ default:
+ c = "field";
+ }
+ var l,
+ u,
+ f = {
+ kind: c,
+ name: o ? "#" + t : toPropertyKey(t),
+ "static": i,
+ "private": o
+ },
+ p = {
+ v: !1
+ };
+ 0 !== a && (f.addInitializer = createAddInitializerMethod(n, p)), 0 === a ? o ? (l = r.get, u = r.set) : (l = function l() {
+ return this[t];
+ }, u = function u(e) {
+ this[t] = e;
+ }) : 2 === a ? l = function l() {
+ return r.value;
+ } : (1 !== a && 3 !== a || (l = function l() {
+ return r.get.call(this);
+ }), 1 !== a && 4 !== a || (u = function u(e) {
+ r.set.call(this, e);
+ })), f.access = l && u ? {
+ get: l,
+ set: u
+ } : l ? {
+ get: l
+ } : {
+ set: u
+ };
+ try {
+ return e(s, f);
+ } finally {
+ p.v = !0;
+ }
+ }
+ function assertCallable(e, t) {
+ if ("function" != typeof e) throw new TypeError(t + " must be a function");
+ }
+ function assertValidReturnValue(e, t) {
+ var r = _typeof(t);
+ if (1 === e) {
+ if ("object" !== r || null === t) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");
+ void 0 !== t.get && assertCallable(t.get, "accessor.get"), void 0 !== t.set && assertCallable(t.set, "accessor.set"), void 0 !== t.init && assertCallable(t.init, "accessor.init");
+ } else if ("function" !== r) throw new TypeError((0 === e ? "field" : 10 === e ? "class" : "method") + " decorators must return a function or void 0");
+ }
+ function applyMemberDec(e, t, r, n, a, i, o, s) {
+ var c,
+ l,
+ u,
+ f,
+ p,
+ d,
+ h,
+ v = r[0];
+ if (o ? (0 === a || 1 === a ? (c = {
+ get: r[3],
+ set: r[4]
+ }, u = "get") : 3 === a ? (c = {
+ get: r[3]
+ }, u = "get") : 4 === a ? (c = {
+ set: r[3]
+ }, u = "set") : c = {
+ value: r[3]
+ }, 0 !== a && (1 === a && setFunctionName(r[4], "#" + n, "set"), setFunctionName(r[3], "#" + n, u))) : 0 !== a && (c = Object.getOwnPropertyDescriptor(t, n)), 1 === a ? f = {
+ get: c.get,
+ set: c.set
+ } : 2 === a ? f = c.value : 3 === a ? f = c.get : 4 === a && (f = c.set), "function" == typeof v) void 0 !== (p = memberDec(v, n, c, s, a, i, o, f)) && (assertValidReturnValue(a, p), 0 === a ? l = p : 1 === a ? (l = p.init, d = p.get || f.get, h = p.set || f.set, f = {
+ get: d,
+ set: h
+ }) : f = p);else for (var g = v.length - 1; g >= 0; g--) {
+ var y;
+ void 0 !== (p = memberDec(v[g], n, c, s, a, i, o, f)) && (assertValidReturnValue(a, p), 0 === a ? y = p : 1 === a ? (y = p.init, d = p.get || f.get, h = p.set || f.set, f = {
+ get: d,
+ set: h
+ }) : f = p, void 0 !== y && (void 0 === l ? l = y : "function" == typeof l ? l = [l, y] : l.push(y)));
+ }
+ if (0 === a || 1 === a) {
+ if (void 0 === l) l = function l(e, t) {
+ return t;
+ };else if ("function" != typeof l) {
+ var m = l;
+ l = function l(e, t) {
+ for (var r = t, n = 0; n < m.length; n++) r = m[n].call(e, r);
+ return r;
+ };
+ } else {
+ var b = l;
+ l = function l(e, t) {
+ return b.call(e, t);
+ };
+ }
+ e.push(l);
+ }
+ 0 !== a && (1 === a ? (c.get = f.get, c.set = f.set) : 2 === a ? c.value = f : 3 === a ? c.get = f : 4 === a && (c.set = f), o ? 1 === a ? (e.push(function (e, t) {
+ return f.get.call(e, t);
+ }), e.push(function (e, t) {
+ return f.set.call(e, t);
+ })) : 2 === a ? e.push(f) : e.push(function (e, t) {
+ return f.call(e, t);
+ }) : Object.defineProperty(t, n, c));
+ }
+ function applyMemberDecs(e, t) {
+ for (var r, n, a = [], i = new Map(), o = new Map(), s = 0; s < t.length; s++) {
+ var c = t[s];
+ if (Array.isArray(c)) {
+ var l,
+ u,
+ f = c[1],
+ p = c[2],
+ d = c.length > 3,
+ h = f >= 5;
+ if (h ? (l = e, 0 != (f -= 5) && (u = n = n || [])) : (l = e.prototype, 0 !== f && (u = r = r || [])), 0 !== f && !d) {
+ var v = h ? o : i,
+ g = v.get(p) || 0;
+ if (!0 === g || 3 === g && 4 !== f || 4 === g && 3 !== f) throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + p);
+ !g && f > 2 ? v.set(p, f) : v.set(p, !0);
+ }
+ applyMemberDec(a, l, c, p, f, h, d, u);
+ }
+ }
+ return pushInitializers(a, r), pushInitializers(a, n), a;
+ }
+ function pushInitializers(e, t) {
+ t && e.push(function (e) {
+ for (var r = 0; r < t.length; r++) t[r].call(e);
+ return e;
+ });
+ }
+ return function (e, t, r) {
+ return {
+ e: applyMemberDecs(e, t),
+ get c() {
+ return function (e, t) {
+ if (t.length > 0) {
+ for (var r = [], n = e, a = e.name, i = t.length - 1; i >= 0; i--) {
+ var o = {
+ v: !1
+ };
+ try {
+ var s = t[i](n, {
+ kind: "class",
+ name: a,
+ addInitializer: createAddInitializerMethod(r, o)
+ });
+ } finally {
+ o.v = !0;
+ }
+ void 0 !== s && (assertValidReturnValue(10, s), n = s);
+ }
+ return [n, function () {
+ for (var e = 0; e < r.length; e++) r[e].call(n);
+ }];
+ }
+ }(e, r);
+ }
+ };
+ };
+}
+function applyDecs2203R(e, t, r) {
+ return (module.exports = applyDecs2203R = applyDecs2203RFactory(), module.exports.__esModule = true, module.exports["default"] = module.exports)(e, t, r);
+}
+module.exports = applyDecs2203R, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/applyDecs2301.js b/node_modules/@babel/runtime/helpers/applyDecs2301.js
new file mode 100644
index 00000000..fc2c1307
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/applyDecs2301.js
@@ -0,0 +1,222 @@
+var _typeof = require("./typeof.js")["default"];
+var checkInRHS = require("./checkInRHS.js");
+var setFunctionName = require("./setFunctionName.js");
+var toPropertyKey = require("./toPropertyKey.js");
+function applyDecs2301Factory() {
+ function createAddInitializerMethod(e, t) {
+ return function (r) {
+ !function (e, t) {
+ if (e.v) throw Error("attempted to call addInitializer after decoration was finished");
+ }(t), assertCallable(r, "An initializer"), e.push(r);
+ };
+ }
+ function assertInstanceIfPrivate(e, t) {
+ if (!e(t)) throw new TypeError("Attempted to access private element on non-instance");
+ }
+ function memberDec(e, t, r, n, a, i, s, o, c) {
+ var u;
+ switch (a) {
+ case 1:
+ u = "accessor";
+ break;
+ case 2:
+ u = "method";
+ break;
+ case 3:
+ u = "getter";
+ break;
+ case 4:
+ u = "setter";
+ break;
+ default:
+ u = "field";
+ }
+ var l,
+ f,
+ p = {
+ kind: u,
+ name: s ? "#" + t : toPropertyKey(t),
+ "static": i,
+ "private": s
+ },
+ d = {
+ v: !1
+ };
+ if (0 !== a && (p.addInitializer = createAddInitializerMethod(n, d)), s || 0 !== a && 2 !== a) {
+ if (2 === a) l = function l(e) {
+ return assertInstanceIfPrivate(c, e), r.value;
+ };else {
+ var h = 0 === a || 1 === a;
+ (h || 3 === a) && (l = s ? function (e) {
+ return assertInstanceIfPrivate(c, e), r.get.call(e);
+ } : function (e) {
+ return r.get.call(e);
+ }), (h || 4 === a) && (f = s ? function (e, t) {
+ assertInstanceIfPrivate(c, e), r.set.call(e, t);
+ } : function (e, t) {
+ r.set.call(e, t);
+ });
+ }
+ } else l = function l(e) {
+ return e[t];
+ }, 0 === a && (f = function f(e, r) {
+ e[t] = r;
+ });
+ var v = s ? c.bind() : function (e) {
+ return t in e;
+ };
+ p.access = l && f ? {
+ get: l,
+ set: f,
+ has: v
+ } : l ? {
+ get: l,
+ has: v
+ } : {
+ set: f,
+ has: v
+ };
+ try {
+ return e(o, p);
+ } finally {
+ d.v = !0;
+ }
+ }
+ function assertCallable(e, t) {
+ if ("function" != typeof e) throw new TypeError(t + " must be a function");
+ }
+ function assertValidReturnValue(e, t) {
+ var r = _typeof(t);
+ if (1 === e) {
+ if ("object" !== r || null === t) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");
+ void 0 !== t.get && assertCallable(t.get, "accessor.get"), void 0 !== t.set && assertCallable(t.set, "accessor.set"), void 0 !== t.init && assertCallable(t.init, "accessor.init");
+ } else if ("function" !== r) throw new TypeError((0 === e ? "field" : 10 === e ? "class" : "method") + " decorators must return a function or void 0");
+ }
+ function curryThis2(e) {
+ return function (t) {
+ e(this, t);
+ };
+ }
+ function applyMemberDec(e, t, r, n, a, i, s, o, c) {
+ var u,
+ l,
+ f,
+ p,
+ d,
+ h,
+ v,
+ y,
+ g = r[0];
+ if (s ? (0 === a || 1 === a ? (u = {
+ get: (d = r[3], function () {
+ return d(this);
+ }),
+ set: curryThis2(r[4])
+ }, f = "get") : 3 === a ? (u = {
+ get: r[3]
+ }, f = "get") : 4 === a ? (u = {
+ set: r[3]
+ }, f = "set") : u = {
+ value: r[3]
+ }, 0 !== a && (1 === a && setFunctionName(u.set, "#" + n, "set"), setFunctionName(u[f || "value"], "#" + n, f))) : 0 !== a && (u = Object.getOwnPropertyDescriptor(t, n)), 1 === a ? p = {
+ get: u.get,
+ set: u.set
+ } : 2 === a ? p = u.value : 3 === a ? p = u.get : 4 === a && (p = u.set), "function" == typeof g) void 0 !== (h = memberDec(g, n, u, o, a, i, s, p, c)) && (assertValidReturnValue(a, h), 0 === a ? l = h : 1 === a ? (l = h.init, v = h.get || p.get, y = h.set || p.set, p = {
+ get: v,
+ set: y
+ }) : p = h);else for (var m = g.length - 1; m >= 0; m--) {
+ var b;
+ void 0 !== (h = memberDec(g[m], n, u, o, a, i, s, p, c)) && (assertValidReturnValue(a, h), 0 === a ? b = h : 1 === a ? (b = h.init, v = h.get || p.get, y = h.set || p.set, p = {
+ get: v,
+ set: y
+ }) : p = h, void 0 !== b && (void 0 === l ? l = b : "function" == typeof l ? l = [l, b] : l.push(b)));
+ }
+ if (0 === a || 1 === a) {
+ if (void 0 === l) l = function l(e, t) {
+ return t;
+ };else if ("function" != typeof l) {
+ var I = l;
+ l = function l(e, t) {
+ for (var r = t, n = 0; n < I.length; n++) r = I[n].call(e, r);
+ return r;
+ };
+ } else {
+ var w = l;
+ l = function l(e, t) {
+ return w.call(e, t);
+ };
+ }
+ e.push(l);
+ }
+ 0 !== a && (1 === a ? (u.get = p.get, u.set = p.set) : 2 === a ? u.value = p : 3 === a ? u.get = p : 4 === a && (u.set = p), s ? 1 === a ? (e.push(function (e, t) {
+ return p.get.call(e, t);
+ }), e.push(function (e, t) {
+ return p.set.call(e, t);
+ })) : 2 === a ? e.push(p) : e.push(function (e, t) {
+ return p.call(e, t);
+ }) : Object.defineProperty(t, n, u));
+ }
+ function applyMemberDecs(e, t, r) {
+ for (var n, a, i, s = [], o = new Map(), c = new Map(), u = 0; u < t.length; u++) {
+ var l = t[u];
+ if (Array.isArray(l)) {
+ var f,
+ p,
+ d = l[1],
+ h = l[2],
+ v = l.length > 3,
+ y = d >= 5,
+ g = r;
+ if (y ? (f = e, 0 != (d -= 5) && (p = a = a || []), v && !i && (i = function i(t) {
+ return checkInRHS(t) === e;
+ }), g = i) : (f = e.prototype, 0 !== d && (p = n = n || [])), 0 !== d && !v) {
+ var m = y ? c : o,
+ b = m.get(h) || 0;
+ if (!0 === b || 3 === b && 4 !== d || 4 === b && 3 !== d) throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + h);
+ !b && d > 2 ? m.set(h, d) : m.set(h, !0);
+ }
+ applyMemberDec(s, f, l, h, d, y, v, p, g);
+ }
+ }
+ return pushInitializers(s, n), pushInitializers(s, a), s;
+ }
+ function pushInitializers(e, t) {
+ t && e.push(function (e) {
+ for (var r = 0; r < t.length; r++) t[r].call(e);
+ return e;
+ });
+ }
+ return function (e, t, r, n) {
+ return {
+ e: applyMemberDecs(e, t, n),
+ get c() {
+ return function (e, t) {
+ if (t.length > 0) {
+ for (var r = [], n = e, a = e.name, i = t.length - 1; i >= 0; i--) {
+ var s = {
+ v: !1
+ };
+ try {
+ var o = t[i](n, {
+ kind: "class",
+ name: a,
+ addInitializer: createAddInitializerMethod(r, s)
+ });
+ } finally {
+ s.v = !0;
+ }
+ void 0 !== o && (assertValidReturnValue(10, o), n = o);
+ }
+ return [n, function () {
+ for (var e = 0; e < r.length; e++) r[e].call(n);
+ }];
+ }
+ }(e, r);
+ }
+ };
+ };
+}
+function applyDecs2301(e, t, r, n) {
+ return (module.exports = applyDecs2301 = applyDecs2301Factory(), module.exports.__esModule = true, module.exports["default"] = module.exports)(e, t, r, n);
+}
+module.exports = applyDecs2301, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/applyDecs2305.js b/node_modules/@babel/runtime/helpers/applyDecs2305.js
new file mode 100644
index 00000000..744c3521
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/applyDecs2305.js
@@ -0,0 +1,133 @@
+var _typeof = require("./typeof.js")["default"];
+var checkInRHS = require("./checkInRHS.js");
+var setFunctionName = require("./setFunctionName.js");
+var toPropertyKey = require("./toPropertyKey.js");
+function applyDecs2305(e, t, r, n, o, a) {
+ function i(e, t, r) {
+ return function (n, o) {
+ return r && r(n), e[t].call(n, o);
+ };
+ }
+ function c(e, t) {
+ for (var r = 0; r < e.length; r++) e[r].call(t);
+ return t;
+ }
+ function s(e, t, r, n) {
+ if ("function" != typeof e && (n || void 0 !== e)) throw new TypeError(t + " must " + (r || "be") + " a function" + (n ? "" : " or undefined"));
+ return e;
+ }
+ function applyDec(e, t, r, n, o, a, c, u, l, f, p, d, h) {
+ function m(e) {
+ if (!h(e)) throw new TypeError("Attempted to access private element on non-instance");
+ }
+ var y,
+ v = t[0],
+ g = t[3],
+ b = !u;
+ if (!b) {
+ r || Array.isArray(v) || (v = [v]);
+ var w = {},
+ S = [],
+ A = 3 === o ? "get" : 4 === o || d ? "set" : "value";
+ f ? (p || d ? w = {
+ get: setFunctionName(function () {
+ return g(this);
+ }, n, "get"),
+ set: function set(e) {
+ t[4](this, e);
+ }
+ } : w[A] = g, p || setFunctionName(w[A], n, 2 === o ? "" : A)) : p || (w = Object.getOwnPropertyDescriptor(e, n));
+ }
+ for (var P = e, j = v.length - 1; j >= 0; j -= r ? 2 : 1) {
+ var D = v[j],
+ E = r ? v[j - 1] : void 0,
+ I = {},
+ O = {
+ kind: ["field", "accessor", "method", "getter", "setter", "class"][o],
+ name: n,
+ metadata: a,
+ addInitializer: function (e, t) {
+ if (e.v) throw Error("attempted to call addInitializer after decoration was finished");
+ s(t, "An initializer", "be", !0), c.push(t);
+ }.bind(null, I)
+ };
+ try {
+ if (b) (y = s(D.call(E, P, O), "class decorators", "return")) && (P = y);else {
+ var k, F;
+ O["static"] = l, O["private"] = f, f ? 2 === o ? k = function k(e) {
+ return m(e), w.value;
+ } : (o < 4 && (k = i(w, "get", m)), 3 !== o && (F = i(w, "set", m))) : (k = function k(e) {
+ return e[n];
+ }, (o < 2 || 4 === o) && (F = function F(e, t) {
+ e[n] = t;
+ }));
+ var N = O.access = {
+ has: f ? h.bind() : function (e) {
+ return n in e;
+ }
+ };
+ if (k && (N.get = k), F && (N.set = F), P = D.call(E, d ? {
+ get: w.get,
+ set: w.set
+ } : w[A], O), d) {
+ if ("object" == _typeof(P) && P) (y = s(P.get, "accessor.get")) && (w.get = y), (y = s(P.set, "accessor.set")) && (w.set = y), (y = s(P.init, "accessor.init")) && S.push(y);else if (void 0 !== P) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");
+ } else s(P, (p ? "field" : "method") + " decorators", "return") && (p ? S.push(P) : w[A] = P);
+ }
+ } finally {
+ I.v = !0;
+ }
+ }
+ return (p || d) && u.push(function (e, t) {
+ for (var r = S.length - 1; r >= 0; r--) t = S[r].call(e, t);
+ return t;
+ }), p || b || (f ? d ? u.push(i(w, "get"), i(w, "set")) : u.push(2 === o ? w[A] : i.call.bind(w[A])) : Object.defineProperty(e, n, w)), P;
+ }
+ function u(e, t) {
+ return Object.defineProperty(e, Symbol.metadata || Symbol["for"]("Symbol.metadata"), {
+ configurable: !0,
+ enumerable: !0,
+ value: t
+ });
+ }
+ if (arguments.length >= 6) var l = a[Symbol.metadata || Symbol["for"]("Symbol.metadata")];
+ var f = Object.create(null == l ? null : l),
+ p = function (e, t, r, n) {
+ var o,
+ a,
+ i = [],
+ s = function s(t) {
+ return checkInRHS(t) === e;
+ },
+ u = new Map();
+ function l(e) {
+ e && i.push(c.bind(null, e));
+ }
+ for (var f = 0; f < t.length; f++) {
+ var p = t[f];
+ if (Array.isArray(p)) {
+ var d = p[1],
+ h = p[2],
+ m = p.length > 3,
+ y = 16 & d,
+ v = !!(8 & d),
+ g = 0 == (d &= 7),
+ b = h + "/" + v;
+ if (!g && !m) {
+ var w = u.get(b);
+ if (!0 === w || 3 === w && 4 !== d || 4 === w && 3 !== d) throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + h);
+ u.set(b, !(d > 2) || d);
+ }
+ applyDec(v ? e : e.prototype, p, y, m ? "#" + h : toPropertyKey(h), d, n, v ? a = a || [] : o = o || [], i, v, m, g, 1 === d, v && m ? s : r);
+ }
+ }
+ return l(o), l(a), i;
+ }(e, t, o, f);
+ return r.length || u(e, f), {
+ e: p,
+ get c() {
+ var t = [];
+ return r.length && [u(applyDec(e, [r], n, e.name, 5, f, t), f), c.bind(null, t, e)];
+ }
+ };
+}
+module.exports = applyDecs2305, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/applyDecs2311.js b/node_modules/@babel/runtime/helpers/applyDecs2311.js
new file mode 100644
index 00000000..5f00a311
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/applyDecs2311.js
@@ -0,0 +1,124 @@
+var _typeof = require("./typeof.js")["default"];
+var checkInRHS = require("./checkInRHS.js");
+var setFunctionName = require("./setFunctionName.js");
+var toPropertyKey = require("./toPropertyKey.js");
+function applyDecs2311(e, t, n, r, o, i) {
+ var a,
+ c,
+ u,
+ s,
+ f,
+ l,
+ p,
+ d = Symbol.metadata || Symbol["for"]("Symbol.metadata"),
+ m = Object.defineProperty,
+ h = Object.create,
+ y = [h(null), h(null)],
+ v = t.length;
+ function g(t, n, r) {
+ return function (o, i) {
+ n && (i = o, o = e);
+ for (var a = 0; a < t.length; a++) i = t[a].apply(o, r ? [i] : []);
+ return r ? i : o;
+ };
+ }
+ function b(e, t, n, r) {
+ if ("function" != typeof e && (r || void 0 !== e)) throw new TypeError(t + " must " + (n || "be") + " a function" + (r ? "" : " or undefined"));
+ return e;
+ }
+ function applyDec(e, t, n, r, o, i, u, s, f, l, p) {
+ function d(e) {
+ if (!p(e)) throw new TypeError("Attempted to access private element on non-instance");
+ }
+ var h = [].concat(t[0]),
+ v = t[3],
+ w = !u,
+ D = 1 === o,
+ S = 3 === o,
+ j = 4 === o,
+ E = 2 === o;
+ function I(t, n, r) {
+ return function (o, i) {
+ return n && (i = o, o = e), r && r(o), P[t].call(o, i);
+ };
+ }
+ if (!w) {
+ var P = {},
+ k = [],
+ F = S ? "get" : j || D ? "set" : "value";
+ if (f ? (l || D ? P = {
+ get: setFunctionName(function () {
+ return v(this);
+ }, r, "get"),
+ set: function set(e) {
+ t[4](this, e);
+ }
+ } : P[F] = v, l || setFunctionName(P[F], r, E ? "" : F)) : l || (P = Object.getOwnPropertyDescriptor(e, r)), !l && !f) {
+ if ((c = y[+s][r]) && 7 != (c ^ o)) throw Error("Decorating two elements with the same name (" + P[F].name + ") is not supported yet");
+ y[+s][r] = o < 3 ? 1 : o;
+ }
+ }
+ for (var N = e, O = h.length - 1; O >= 0; O -= n ? 2 : 1) {
+ var T = b(h[O], "A decorator", "be", !0),
+ z = n ? h[O - 1] : void 0,
+ A = {},
+ H = {
+ kind: ["field", "accessor", "method", "getter", "setter", "class"][o],
+ name: r,
+ metadata: a,
+ addInitializer: function (e, t) {
+ if (e.v) throw new TypeError("attempted to call addInitializer after decoration was finished");
+ b(t, "An initializer", "be", !0), i.push(t);
+ }.bind(null, A)
+ };
+ if (w) c = T.call(z, N, H), A.v = 1, b(c, "class decorators", "return") && (N = c);else if (H["static"] = s, H["private"] = f, c = H.access = {
+ has: f ? p.bind() : function (e) {
+ return r in e;
+ }
+ }, j || (c.get = f ? E ? function (e) {
+ return d(e), P.value;
+ } : I("get", 0, d) : function (e) {
+ return e[r];
+ }), E || S || (c.set = f ? I("set", 0, d) : function (e, t) {
+ e[r] = t;
+ }), N = T.call(z, D ? {
+ get: P.get,
+ set: P.set
+ } : P[F], H), A.v = 1, D) {
+ if ("object" == _typeof(N) && N) (c = b(N.get, "accessor.get")) && (P.get = c), (c = b(N.set, "accessor.set")) && (P.set = c), (c = b(N.init, "accessor.init")) && k.unshift(c);else if (void 0 !== N) throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined");
+ } else b(N, (l ? "field" : "method") + " decorators", "return") && (l ? k.unshift(N) : P[F] = N);
+ }
+ return o < 2 && u.push(g(k, s, 1), g(i, s, 0)), l || w || (f ? D ? u.splice(-1, 0, I("get", s), I("set", s)) : u.push(E ? P[F] : b.call.bind(P[F])) : m(e, r, P)), N;
+ }
+ function w(e) {
+ return m(e, d, {
+ configurable: !0,
+ enumerable: !0,
+ value: a
+ });
+ }
+ return void 0 !== i && (a = i[d]), a = h(null == a ? null : a), f = [], l = function l(e) {
+ e && f.push(g(e));
+ }, p = function p(t, r) {
+ for (var i = 0; i < n.length; i++) {
+ var a = n[i],
+ c = a[1],
+ l = 7 & c;
+ if ((8 & c) == t && !l == r) {
+ var p = a[2],
+ d = !!a[3],
+ m = 16 & c;
+ applyDec(t ? e : e.prototype, a, m, d ? "#" + p : toPropertyKey(p), l, l < 2 ? [] : t ? s = s || [] : u = u || [], f, !!t, d, r, t && d ? function (t) {
+ return checkInRHS(t) === e;
+ } : o);
+ }
+ }
+ }, p(8, 0), p(0, 0), p(8, 1), p(0, 1), l(u), l(s), c = f, v || w(e), {
+ e: c,
+ get c() {
+ var n = [];
+ return v && [w(e = applyDec(e, [t], r, e.name, 5, n)), g(n, 1)];
+ }
+ };
+}
+module.exports = applyDecs2311, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/arrayLikeToArray.js b/node_modules/@babel/runtime/helpers/arrayLikeToArray.js
new file mode 100644
index 00000000..19787e31
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/arrayLikeToArray.js
@@ -0,0 +1,6 @@
+function _arrayLikeToArray(r, a) {
+ (null == a || a > r.length) && (a = r.length);
+ for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
+ return n;
+}
+module.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/arrayWithHoles.js b/node_modules/@babel/runtime/helpers/arrayWithHoles.js
new file mode 100644
index 00000000..78bdd931
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/arrayWithHoles.js
@@ -0,0 +1,4 @@
+function _arrayWithHoles(r) {
+ if (Array.isArray(r)) return r;
+}
+module.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js b/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js
new file mode 100644
index 00000000..42218f54
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js
@@ -0,0 +1,5 @@
+var arrayLikeToArray = require("./arrayLikeToArray.js");
+function _arrayWithoutHoles(r) {
+ if (Array.isArray(r)) return arrayLikeToArray(r);
+}
+module.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/assertClassBrand.js b/node_modules/@babel/runtime/helpers/assertClassBrand.js
new file mode 100644
index 00000000..e63ed8f4
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/assertClassBrand.js
@@ -0,0 +1,5 @@
+function _assertClassBrand(e, t, n) {
+ if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n;
+ throw new TypeError("Private element is not present on this object");
+}
+module.exports = _assertClassBrand, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/assertThisInitialized.js b/node_modules/@babel/runtime/helpers/assertThisInitialized.js
new file mode 100644
index 00000000..02594fbe
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/assertThisInitialized.js
@@ -0,0 +1,5 @@
+function _assertThisInitialized(e) {
+ if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+ return e;
+}
+module.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/asyncGeneratorDelegate.js b/node_modules/@babel/runtime/helpers/asyncGeneratorDelegate.js
new file mode 100644
index 00000000..023568e0
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/asyncGeneratorDelegate.js
@@ -0,0 +1,24 @@
+var OverloadYield = require("./OverloadYield.js");
+function _asyncGeneratorDelegate(t) {
+ var e = {},
+ n = !1;
+ function pump(e, r) {
+ return n = !0, r = new Promise(function (n) {
+ n(t[e](r));
+ }), {
+ done: !1,
+ value: new OverloadYield(r, 1)
+ };
+ }
+ return e["undefined" != typeof Symbol && Symbol.iterator || "@@iterator"] = function () {
+ return this;
+ }, e.next = function (t) {
+ return n ? (n = !1, t) : pump("next", t);
+ }, "function" == typeof t["throw"] && (e["throw"] = function (t) {
+ if (n) throw n = !1, t;
+ return pump("throw", t);
+ }), "function" == typeof t["return"] && (e["return"] = function (t) {
+ return n ? (n = !1, t) : pump("return", t);
+ }), e;
+}
+module.exports = _asyncGeneratorDelegate, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/asyncIterator.js b/node_modules/@babel/runtime/helpers/asyncIterator.js
new file mode 100644
index 00000000..9c0c95cf
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/asyncIterator.js
@@ -0,0 +1,45 @@
+function _asyncIterator(r) {
+ var n,
+ t,
+ o,
+ e = 2;
+ for ("undefined" != typeof Symbol && (t = Symbol.asyncIterator, o = Symbol.iterator); e--;) {
+ if (t && null != (n = r[t])) return n.call(r);
+ if (o && null != (n = r[o])) return new AsyncFromSyncIterator(n.call(r));
+ t = "@@asyncIterator", o = "@@iterator";
+ }
+ throw new TypeError("Object is not async iterable");
+}
+function AsyncFromSyncIterator(r) {
+ function AsyncFromSyncIteratorContinuation(r) {
+ if (Object(r) !== r) return Promise.reject(new TypeError(r + " is not an object."));
+ var n = r.done;
+ return Promise.resolve(r.value).then(function (r) {
+ return {
+ value: r,
+ done: n
+ };
+ });
+ }
+ return AsyncFromSyncIterator = function AsyncFromSyncIterator(r) {
+ this.s = r, this.n = r.next;
+ }, AsyncFromSyncIterator.prototype = {
+ s: null,
+ n: null,
+ next: function next() {
+ return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments));
+ },
+ "return": function _return(r) {
+ var n = this.s["return"];
+ return void 0 === n ? Promise.resolve({
+ value: r,
+ done: !0
+ }) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments));
+ },
+ "throw": function _throw(r) {
+ var n = this.s["return"];
+ return void 0 === n ? Promise.reject(r) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments));
+ }
+ }, new AsyncFromSyncIterator(r);
+}
+module.exports = _asyncIterator, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/asyncToGenerator.js b/node_modules/@babel/runtime/helpers/asyncToGenerator.js
new file mode 100644
index 00000000..a080339b
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/asyncToGenerator.js
@@ -0,0 +1,26 @@
+function asyncGeneratorStep(n, t, e, r, o, a, c) {
+ try {
+ var i = n[a](c),
+ u = i.value;
+ } catch (n) {
+ return void e(n);
+ }
+ i.done ? t(u) : Promise.resolve(u).then(r, o);
+}
+function _asyncToGenerator(n) {
+ return function () {
+ var t = this,
+ e = arguments;
+ return new Promise(function (r, o) {
+ var a = n.apply(t, e);
+ function _next(n) {
+ asyncGeneratorStep(a, r, o, _next, _throw, "next", n);
+ }
+ function _throw(n) {
+ asyncGeneratorStep(a, r, o, _next, _throw, "throw", n);
+ }
+ _next(void 0);
+ });
+ };
+}
+module.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/awaitAsyncGenerator.js b/node_modules/@babel/runtime/helpers/awaitAsyncGenerator.js
new file mode 100644
index 00000000..2d6fab91
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/awaitAsyncGenerator.js
@@ -0,0 +1,5 @@
+var OverloadYield = require("./OverloadYield.js");
+function _awaitAsyncGenerator(e) {
+ return new OverloadYield(e, 0);
+}
+module.exports = _awaitAsyncGenerator, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/callSuper.js b/node_modules/@babel/runtime/helpers/callSuper.js
new file mode 100644
index 00000000..38eaf7f8
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/callSuper.js
@@ -0,0 +1,7 @@
+var getPrototypeOf = require("./getPrototypeOf.js");
+var isNativeReflectConstruct = require("./isNativeReflectConstruct.js");
+var possibleConstructorReturn = require("./possibleConstructorReturn.js");
+function _callSuper(t, o, e) {
+ return o = getPrototypeOf(o), possibleConstructorReturn(t, isNativeReflectConstruct() ? Reflect.construct(o, e || [], getPrototypeOf(t).constructor) : o.apply(t, e));
+}
+module.exports = _callSuper, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/checkInRHS.js b/node_modules/@babel/runtime/helpers/checkInRHS.js
new file mode 100644
index 00000000..4eea13d9
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/checkInRHS.js
@@ -0,0 +1,6 @@
+var _typeof = require("./typeof.js")["default"];
+function _checkInRHS(e) {
+ if (Object(e) !== e) throw TypeError("right-hand side of 'in' should be an object, got " + (null !== e ? _typeof(e) : "null"));
+ return e;
+}
+module.exports = _checkInRHS, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/checkPrivateRedeclaration.js b/node_modules/@babel/runtime/helpers/checkPrivateRedeclaration.js
new file mode 100644
index 00000000..33ad54c9
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/checkPrivateRedeclaration.js
@@ -0,0 +1,4 @@
+function _checkPrivateRedeclaration(e, t) {
+ if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object");
+}
+module.exports = _checkPrivateRedeclaration, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classApplyDescriptorDestructureSet.js b/node_modules/@babel/runtime/helpers/classApplyDescriptorDestructureSet.js
new file mode 100644
index 00000000..9998b835
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classApplyDescriptorDestructureSet.js
@@ -0,0 +1,10 @@
+function _classApplyDescriptorDestructureSet(e, t) {
+ if (t.set) return "__destrObj" in t || (t.__destrObj = {
+ set value(r) {
+ t.set.call(e, r);
+ }
+ }), t.__destrObj;
+ if (!t.writable) throw new TypeError("attempted to set read only private field");
+ return t;
+}
+module.exports = _classApplyDescriptorDestructureSet, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classApplyDescriptorGet.js b/node_modules/@babel/runtime/helpers/classApplyDescriptorGet.js
new file mode 100644
index 00000000..ab627245
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classApplyDescriptorGet.js
@@ -0,0 +1,4 @@
+function _classApplyDescriptorGet(e, t) {
+ return t.get ? t.get.call(e) : t.value;
+}
+module.exports = _classApplyDescriptorGet, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classApplyDescriptorSet.js b/node_modules/@babel/runtime/helpers/classApplyDescriptorSet.js
new file mode 100644
index 00000000..0975f95f
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classApplyDescriptorSet.js
@@ -0,0 +1,7 @@
+function _classApplyDescriptorSet(e, t, l) {
+ if (t.set) t.set.call(e, l);else {
+ if (!t.writable) throw new TypeError("attempted to set read only private field");
+ t.value = l;
+ }
+}
+module.exports = _classApplyDescriptorSet, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classCallCheck.js b/node_modules/@babel/runtime/helpers/classCallCheck.js
new file mode 100644
index 00000000..21b8390f
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classCallCheck.js
@@ -0,0 +1,4 @@
+function _classCallCheck(a, n) {
+ if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function");
+}
+module.exports = _classCallCheck, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classCheckPrivateStaticAccess.js b/node_modules/@babel/runtime/helpers/classCheckPrivateStaticAccess.js
new file mode 100644
index 00000000..7520f74d
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classCheckPrivateStaticAccess.js
@@ -0,0 +1,5 @@
+var assertClassBrand = require("./assertClassBrand.js");
+function _classCheckPrivateStaticAccess(s, a, r) {
+ return assertClassBrand(a, s, r);
+}
+module.exports = _classCheckPrivateStaticAccess, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classCheckPrivateStaticFieldDescriptor.js b/node_modules/@babel/runtime/helpers/classCheckPrivateStaticFieldDescriptor.js
new file mode 100644
index 00000000..7f70395e
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classCheckPrivateStaticFieldDescriptor.js
@@ -0,0 +1,4 @@
+function _classCheckPrivateStaticFieldDescriptor(t, e) {
+ if (void 0 === t) throw new TypeError("attempted to " + e + " private static field before its declaration");
+}
+module.exports = _classCheckPrivateStaticFieldDescriptor, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classExtractFieldDescriptor.js b/node_modules/@babel/runtime/helpers/classExtractFieldDescriptor.js
new file mode 100644
index 00000000..be855be9
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classExtractFieldDescriptor.js
@@ -0,0 +1,5 @@
+var classPrivateFieldGet2 = require("./classPrivateFieldGet2.js");
+function _classExtractFieldDescriptor(e, t) {
+ return classPrivateFieldGet2(t, e);
+}
+module.exports = _classExtractFieldDescriptor, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classNameTDZError.js b/node_modules/@babel/runtime/helpers/classNameTDZError.js
new file mode 100644
index 00000000..8141ff89
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classNameTDZError.js
@@ -0,0 +1,4 @@
+function _classNameTDZError(e) {
+ throw new ReferenceError('Class "' + e + '" cannot be referenced in computed property keys.');
+}
+module.exports = _classNameTDZError, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classPrivateFieldDestructureSet.js b/node_modules/@babel/runtime/helpers/classPrivateFieldDestructureSet.js
new file mode 100644
index 00000000..97c764d0
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classPrivateFieldDestructureSet.js
@@ -0,0 +1,7 @@
+var classApplyDescriptorDestructureSet = require("./classApplyDescriptorDestructureSet.js");
+var classPrivateFieldGet2 = require("./classPrivateFieldGet2.js");
+function _classPrivateFieldDestructureSet(e, t) {
+ var r = classPrivateFieldGet2(t, e);
+ return classApplyDescriptorDestructureSet(e, r);
+}
+module.exports = _classPrivateFieldDestructureSet, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classPrivateFieldGet.js b/node_modules/@babel/runtime/helpers/classPrivateFieldGet.js
new file mode 100644
index 00000000..bbee142a
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classPrivateFieldGet.js
@@ -0,0 +1,7 @@
+var classApplyDescriptorGet = require("./classApplyDescriptorGet.js");
+var classPrivateFieldGet2 = require("./classPrivateFieldGet2.js");
+function _classPrivateFieldGet(e, t) {
+ var r = classPrivateFieldGet2(t, e);
+ return classApplyDescriptorGet(e, r);
+}
+module.exports = _classPrivateFieldGet, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classPrivateFieldGet2.js b/node_modules/@babel/runtime/helpers/classPrivateFieldGet2.js
new file mode 100644
index 00000000..d4c271c7
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classPrivateFieldGet2.js
@@ -0,0 +1,5 @@
+var assertClassBrand = require("./assertClassBrand.js");
+function _classPrivateFieldGet2(s, a) {
+ return s.get(assertClassBrand(s, a));
+}
+module.exports = _classPrivateFieldGet2, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classPrivateFieldInitSpec.js b/node_modules/@babel/runtime/helpers/classPrivateFieldInitSpec.js
new file mode 100644
index 00000000..a290c19a
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classPrivateFieldInitSpec.js
@@ -0,0 +1,5 @@
+var checkPrivateRedeclaration = require("./checkPrivateRedeclaration.js");
+function _classPrivateFieldInitSpec(e, t, a) {
+ checkPrivateRedeclaration(e, t), t.set(e, a);
+}
+module.exports = _classPrivateFieldInitSpec, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classPrivateFieldLooseBase.js b/node_modules/@babel/runtime/helpers/classPrivateFieldLooseBase.js
new file mode 100644
index 00000000..f9e46f26
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classPrivateFieldLooseBase.js
@@ -0,0 +1,5 @@
+function _classPrivateFieldBase(e, t) {
+ if (!{}.hasOwnProperty.call(e, t)) throw new TypeError("attempted to use private field on non-instance");
+ return e;
+}
+module.exports = _classPrivateFieldBase, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classPrivateFieldLooseKey.js b/node_modules/@babel/runtime/helpers/classPrivateFieldLooseKey.js
new file mode 100644
index 00000000..5dc687fe
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classPrivateFieldLooseKey.js
@@ -0,0 +1,5 @@
+var id = 0;
+function _classPrivateFieldKey(e) {
+ return "__private_" + id++ + "_" + e;
+}
+module.exports = _classPrivateFieldKey, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classPrivateFieldSet.js b/node_modules/@babel/runtime/helpers/classPrivateFieldSet.js
new file mode 100644
index 00000000..f3746e74
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classPrivateFieldSet.js
@@ -0,0 +1,7 @@
+var classApplyDescriptorSet = require("./classApplyDescriptorSet.js");
+var classPrivateFieldGet2 = require("./classPrivateFieldGet2.js");
+function _classPrivateFieldSet(e, t, r) {
+ var s = classPrivateFieldGet2(t, e);
+ return classApplyDescriptorSet(e, s, r), r;
+}
+module.exports = _classPrivateFieldSet, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classPrivateFieldSet2.js b/node_modules/@babel/runtime/helpers/classPrivateFieldSet2.js
new file mode 100644
index 00000000..25c60caa
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classPrivateFieldSet2.js
@@ -0,0 +1,5 @@
+var assertClassBrand = require("./assertClassBrand.js");
+function _classPrivateFieldSet2(s, a, r) {
+ return s.set(assertClassBrand(s, a), r), r;
+}
+module.exports = _classPrivateFieldSet2, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classPrivateGetter.js b/node_modules/@babel/runtime/helpers/classPrivateGetter.js
new file mode 100644
index 00000000..1b3cf30a
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classPrivateGetter.js
@@ -0,0 +1,5 @@
+var assertClassBrand = require("./assertClassBrand.js");
+function _classPrivateGetter(s, r, a) {
+ return a(assertClassBrand(s, r));
+}
+module.exports = _classPrivateGetter, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classPrivateMethodGet.js b/node_modules/@babel/runtime/helpers/classPrivateMethodGet.js
new file mode 100644
index 00000000..e4af3878
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classPrivateMethodGet.js
@@ -0,0 +1,5 @@
+var assertClassBrand = require("./assertClassBrand.js");
+function _classPrivateMethodGet(s, a, r) {
+ return assertClassBrand(a, s), r;
+}
+module.exports = _classPrivateMethodGet, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classPrivateMethodInitSpec.js b/node_modules/@babel/runtime/helpers/classPrivateMethodInitSpec.js
new file mode 100644
index 00000000..821c8ed0
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classPrivateMethodInitSpec.js
@@ -0,0 +1,5 @@
+var checkPrivateRedeclaration = require("./checkPrivateRedeclaration.js");
+function _classPrivateMethodInitSpec(e, a) {
+ checkPrivateRedeclaration(e, a), a.add(e);
+}
+module.exports = _classPrivateMethodInitSpec, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/project starter code/node_modules/@babel/runtime/helpers/classPrivateMethodSet.js b/node_modules/@babel/runtime/helpers/classPrivateMethodSet.js
similarity index 100%
rename from project starter code/node_modules/@babel/runtime/helpers/classPrivateMethodSet.js
rename to node_modules/@babel/runtime/helpers/classPrivateMethodSet.js
diff --git a/node_modules/@babel/runtime/helpers/classPrivateSetter.js b/node_modules/@babel/runtime/helpers/classPrivateSetter.js
new file mode 100644
index 00000000..494f81f0
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classPrivateSetter.js
@@ -0,0 +1,5 @@
+var assertClassBrand = require("./assertClassBrand.js");
+function _classPrivateSetter(s, r, a, t) {
+ return r(assertClassBrand(s, a), t), t;
+}
+module.exports = _classPrivateSetter, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classStaticPrivateFieldDestructureSet.js b/node_modules/@babel/runtime/helpers/classStaticPrivateFieldDestructureSet.js
new file mode 100644
index 00000000..2bb6e8b1
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classStaticPrivateFieldDestructureSet.js
@@ -0,0 +1,7 @@
+var classApplyDescriptorDestructureSet = require("./classApplyDescriptorDestructureSet.js");
+var assertClassBrand = require("./assertClassBrand.js");
+var classCheckPrivateStaticFieldDescriptor = require("./classCheckPrivateStaticFieldDescriptor.js");
+function _classStaticPrivateFieldDestructureSet(t, r, s) {
+ return assertClassBrand(r, t), classCheckPrivateStaticFieldDescriptor(s, "set"), classApplyDescriptorDestructureSet(t, s);
+}
+module.exports = _classStaticPrivateFieldDestructureSet, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecGet.js b/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecGet.js
new file mode 100644
index 00000000..eb2365f3
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecGet.js
@@ -0,0 +1,7 @@
+var classApplyDescriptorGet = require("./classApplyDescriptorGet.js");
+var assertClassBrand = require("./assertClassBrand.js");
+var classCheckPrivateStaticFieldDescriptor = require("./classCheckPrivateStaticFieldDescriptor.js");
+function _classStaticPrivateFieldSpecGet(t, s, r) {
+ return assertClassBrand(s, t), classCheckPrivateStaticFieldDescriptor(r, "get"), classApplyDescriptorGet(t, r);
+}
+module.exports = _classStaticPrivateFieldSpecGet, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecSet.js b/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecSet.js
new file mode 100644
index 00000000..7783cd8d
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classStaticPrivateFieldSpecSet.js
@@ -0,0 +1,7 @@
+var classApplyDescriptorSet = require("./classApplyDescriptorSet.js");
+var assertClassBrand = require("./assertClassBrand.js");
+var classCheckPrivateStaticFieldDescriptor = require("./classCheckPrivateStaticFieldDescriptor.js");
+function _classStaticPrivateFieldSpecSet(s, t, r, e) {
+ return assertClassBrand(t, s), classCheckPrivateStaticFieldDescriptor(r, "set"), classApplyDescriptorSet(s, r, e), e;
+}
+module.exports = _classStaticPrivateFieldSpecSet, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/classStaticPrivateMethodGet.js b/node_modules/@babel/runtime/helpers/classStaticPrivateMethodGet.js
new file mode 100644
index 00000000..c895be5c
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/classStaticPrivateMethodGet.js
@@ -0,0 +1,5 @@
+var assertClassBrand = require("./assertClassBrand.js");
+function _classStaticPrivateMethodGet(s, a, t) {
+ return assertClassBrand(a, s), t;
+}
+module.exports = _classStaticPrivateMethodGet, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/project starter code/node_modules/@babel/runtime/helpers/classStaticPrivateMethodSet.js b/node_modules/@babel/runtime/helpers/classStaticPrivateMethodSet.js
similarity index 100%
rename from project starter code/node_modules/@babel/runtime/helpers/classStaticPrivateMethodSet.js
rename to node_modules/@babel/runtime/helpers/classStaticPrivateMethodSet.js
diff --git a/node_modules/@babel/runtime/helpers/construct.js b/node_modules/@babel/runtime/helpers/construct.js
new file mode 100644
index 00000000..aee8e704
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/construct.js
@@ -0,0 +1,10 @@
+var isNativeReflectConstruct = require("./isNativeReflectConstruct.js");
+var setPrototypeOf = require("./setPrototypeOf.js");
+function _construct(t, e, r) {
+ if (isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);
+ var o = [null];
+ o.push.apply(o, e);
+ var p = new (t.bind.apply(t, o))();
+ return r && setPrototypeOf(p, r.prototype), p;
+}
+module.exports = _construct, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/createClass.js b/node_modules/@babel/runtime/helpers/createClass.js
new file mode 100644
index 00000000..8757f9ee
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/createClass.js
@@ -0,0 +1,13 @@
+var toPropertyKey = require("./toPropertyKey.js");
+function _defineProperties(e, r) {
+ for (var t = 0; t < r.length; t++) {
+ var o = r[t];
+ o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);
+ }
+}
+function _createClass(e, r, t) {
+ return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", {
+ writable: !1
+ }), e;
+}
+module.exports = _createClass, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js b/node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js
new file mode 100644
index 00000000..27783079
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js
@@ -0,0 +1,50 @@
+var unsupportedIterableToArray = require("./unsupportedIterableToArray.js");
+function _createForOfIteratorHelper(r, e) {
+ var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
+ if (!t) {
+ if (Array.isArray(r) || (t = unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) {
+ t && (r = t);
+ var _n = 0,
+ F = function F() {};
+ return {
+ s: F,
+ n: function n() {
+ return _n >= r.length ? {
+ done: !0
+ } : {
+ done: !1,
+ value: r[_n++]
+ };
+ },
+ e: function e(r) {
+ throw r;
+ },
+ f: F
+ };
+ }
+ throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+ }
+ var o,
+ a = !0,
+ u = !1;
+ return {
+ s: function s() {
+ t = t.call(r);
+ },
+ n: function n() {
+ var r = t.next();
+ return a = r.done, r;
+ },
+ e: function e(r) {
+ u = !0, o = r;
+ },
+ f: function f() {
+ try {
+ a || null == t["return"] || t["return"]();
+ } finally {
+ if (u) throw o;
+ }
+ }
+ };
+}
+module.exports = _createForOfIteratorHelper, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/createForOfIteratorHelperLoose.js b/node_modules/@babel/runtime/helpers/createForOfIteratorHelperLoose.js
new file mode 100644
index 00000000..bc81b1cd
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/createForOfIteratorHelperLoose.js
@@ -0,0 +1,19 @@
+var unsupportedIterableToArray = require("./unsupportedIterableToArray.js");
+function _createForOfIteratorHelperLoose(r, e) {
+ var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
+ if (t) return (t = t.call(r)).next.bind(t);
+ if (Array.isArray(r) || (t = unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) {
+ t && (r = t);
+ var o = 0;
+ return function () {
+ return o >= r.length ? {
+ done: !0
+ } : {
+ done: !1,
+ value: r[o++]
+ };
+ };
+ }
+ throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+}
+module.exports = _createForOfIteratorHelperLoose, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/createSuper.js b/node_modules/@babel/runtime/helpers/createSuper.js
new file mode 100644
index 00000000..b1869e61
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/createSuper.js
@@ -0,0 +1,16 @@
+var getPrototypeOf = require("./getPrototypeOf.js");
+var isNativeReflectConstruct = require("./isNativeReflectConstruct.js");
+var possibleConstructorReturn = require("./possibleConstructorReturn.js");
+function _createSuper(t) {
+ var r = isNativeReflectConstruct();
+ return function () {
+ var e,
+ o = getPrototypeOf(t);
+ if (r) {
+ var s = getPrototypeOf(this).constructor;
+ e = Reflect.construct(o, arguments, s);
+ } else e = o.apply(this, arguments);
+ return possibleConstructorReturn(this, e);
+ };
+}
+module.exports = _createSuper, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/decorate.js b/node_modules/@babel/runtime/helpers/decorate.js
new file mode 100644
index 00000000..bc22acf4
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/decorate.js
@@ -0,0 +1,250 @@
+var toArray = require("./toArray.js");
+var toPropertyKey = require("./toPropertyKey.js");
+function _decorate(e, r, t, i) {
+ var o = _getDecoratorsApi();
+ if (i) for (var n = 0; n < i.length; n++) o = i[n](o);
+ var s = r(function (e) {
+ o.initializeInstanceElements(e, a.elements);
+ }, t),
+ a = o.decorateClass(_coalesceClassElements(s.d.map(_createElementDescriptor)), e);
+ return o.initializeClassElements(s.F, a.elements), o.runClassFinishers(s.F, a.finishers);
+}
+function _getDecoratorsApi() {
+ _getDecoratorsApi = function _getDecoratorsApi() {
+ return e;
+ };
+ var e = {
+ elementsDefinitionOrder: [["method"], ["field"]],
+ initializeInstanceElements: function initializeInstanceElements(e, r) {
+ ["method", "field"].forEach(function (t) {
+ r.forEach(function (r) {
+ r.kind === t && "own" === r.placement && this.defineClassElement(e, r);
+ }, this);
+ }, this);
+ },
+ initializeClassElements: function initializeClassElements(e, r) {
+ var t = e.prototype;
+ ["method", "field"].forEach(function (i) {
+ r.forEach(function (r) {
+ var o = r.placement;
+ if (r.kind === i && ("static" === o || "prototype" === o)) {
+ var n = "static" === o ? e : t;
+ this.defineClassElement(n, r);
+ }
+ }, this);
+ }, this);
+ },
+ defineClassElement: function defineClassElement(e, r) {
+ var t = r.descriptor;
+ if ("field" === r.kind) {
+ var i = r.initializer;
+ t = {
+ enumerable: t.enumerable,
+ writable: t.writable,
+ configurable: t.configurable,
+ value: void 0 === i ? void 0 : i.call(e)
+ };
+ }
+ Object.defineProperty(e, r.key, t);
+ },
+ decorateClass: function decorateClass(e, r) {
+ var t = [],
+ i = [],
+ o = {
+ "static": [],
+ prototype: [],
+ own: []
+ };
+ if (e.forEach(function (e) {
+ this.addElementPlacement(e, o);
+ }, this), e.forEach(function (e) {
+ if (!_hasDecorators(e)) return t.push(e);
+ var r = this.decorateElement(e, o);
+ t.push(r.element), t.push.apply(t, r.extras), i.push.apply(i, r.finishers);
+ }, this), !r) return {
+ elements: t,
+ finishers: i
+ };
+ var n = this.decorateConstructor(t, r);
+ return i.push.apply(i, n.finishers), n.finishers = i, n;
+ },
+ addElementPlacement: function addElementPlacement(e, r, t) {
+ var i = r[e.placement];
+ if (!t && -1 !== i.indexOf(e.key)) throw new TypeError("Duplicated element (" + e.key + ")");
+ i.push(e.key);
+ },
+ decorateElement: function decorateElement(e, r) {
+ for (var t = [], i = [], o = e.decorators, n = o.length - 1; n >= 0; n--) {
+ var s = r[e.placement];
+ s.splice(s.indexOf(e.key), 1);
+ var a = this.fromElementDescriptor(e),
+ l = this.toElementFinisherExtras((0, o[n])(a) || a);
+ e = l.element, this.addElementPlacement(e, r), l.finisher && i.push(l.finisher);
+ var c = l.extras;
+ if (c) {
+ for (var p = 0; p < c.length; p++) this.addElementPlacement(c[p], r);
+ t.push.apply(t, c);
+ }
+ }
+ return {
+ element: e,
+ finishers: i,
+ extras: t
+ };
+ },
+ decorateConstructor: function decorateConstructor(e, r) {
+ for (var t = [], i = r.length - 1; i >= 0; i--) {
+ var o = this.fromClassDescriptor(e),
+ n = this.toClassDescriptor((0, r[i])(o) || o);
+ if (void 0 !== n.finisher && t.push(n.finisher), void 0 !== n.elements) {
+ e = n.elements;
+ for (var s = 0; s < e.length - 1; s++) for (var a = s + 1; a < e.length; a++) if (e[s].key === e[a].key && e[s].placement === e[a].placement) throw new TypeError("Duplicated element (" + e[s].key + ")");
+ }
+ }
+ return {
+ elements: e,
+ finishers: t
+ };
+ },
+ fromElementDescriptor: function fromElementDescriptor(e) {
+ var r = {
+ kind: e.kind,
+ key: e.key,
+ placement: e.placement,
+ descriptor: e.descriptor
+ };
+ return Object.defineProperty(r, Symbol.toStringTag, {
+ value: "Descriptor",
+ configurable: !0
+ }), "field" === e.kind && (r.initializer = e.initializer), r;
+ },
+ toElementDescriptors: function toElementDescriptors(e) {
+ if (void 0 !== e) return toArray(e).map(function (e) {
+ var r = this.toElementDescriptor(e);
+ return this.disallowProperty(e, "finisher", "An element descriptor"), this.disallowProperty(e, "extras", "An element descriptor"), r;
+ }, this);
+ },
+ toElementDescriptor: function toElementDescriptor(e) {
+ var r = e.kind + "";
+ if ("method" !== r && "field" !== r) throw new TypeError('An element descriptor\'s .kind property must be either "method" or "field", but a decorator created an element descriptor with .kind "' + r + '"');
+ var t = toPropertyKey(e.key),
+ i = e.placement + "";
+ if ("static" !== i && "prototype" !== i && "own" !== i) throw new TypeError('An element descriptor\'s .placement property must be one of "static", "prototype" or "own", but a decorator created an element descriptor with .placement "' + i + '"');
+ var o = e.descriptor;
+ this.disallowProperty(e, "elements", "An element descriptor");
+ var n = {
+ kind: r,
+ key: t,
+ placement: i,
+ descriptor: Object.assign({}, o)
+ };
+ return "field" !== r ? this.disallowProperty(e, "initializer", "A method descriptor") : (this.disallowProperty(o, "get", "The property descriptor of a field descriptor"), this.disallowProperty(o, "set", "The property descriptor of a field descriptor"), this.disallowProperty(o, "value", "The property descriptor of a field descriptor"), n.initializer = e.initializer), n;
+ },
+ toElementFinisherExtras: function toElementFinisherExtras(e) {
+ return {
+ element: this.toElementDescriptor(e),
+ finisher: _optionalCallableProperty(e, "finisher"),
+ extras: this.toElementDescriptors(e.extras)
+ };
+ },
+ fromClassDescriptor: function fromClassDescriptor(e) {
+ var r = {
+ kind: "class",
+ elements: e.map(this.fromElementDescriptor, this)
+ };
+ return Object.defineProperty(r, Symbol.toStringTag, {
+ value: "Descriptor",
+ configurable: !0
+ }), r;
+ },
+ toClassDescriptor: function toClassDescriptor(e) {
+ var r = e.kind + "";
+ if ("class" !== r) throw new TypeError('A class descriptor\'s .kind property must be "class", but a decorator created a class descriptor with .kind "' + r + '"');
+ this.disallowProperty(e, "key", "A class descriptor"), this.disallowProperty(e, "placement", "A class descriptor"), this.disallowProperty(e, "descriptor", "A class descriptor"), this.disallowProperty(e, "initializer", "A class descriptor"), this.disallowProperty(e, "extras", "A class descriptor");
+ var t = _optionalCallableProperty(e, "finisher");
+ return {
+ elements: this.toElementDescriptors(e.elements),
+ finisher: t
+ };
+ },
+ runClassFinishers: function runClassFinishers(e, r) {
+ for (var t = 0; t < r.length; t++) {
+ var i = (0, r[t])(e);
+ if (void 0 !== i) {
+ if ("function" != typeof i) throw new TypeError("Finishers must return a constructor.");
+ e = i;
+ }
+ }
+ return e;
+ },
+ disallowProperty: function disallowProperty(e, r, t) {
+ if (void 0 !== e[r]) throw new TypeError(t + " can't have a ." + r + " property.");
+ }
+ };
+ return e;
+}
+function _createElementDescriptor(e) {
+ var r,
+ t = toPropertyKey(e.key);
+ "method" === e.kind ? r = {
+ value: e.value,
+ writable: !0,
+ configurable: !0,
+ enumerable: !1
+ } : "get" === e.kind ? r = {
+ get: e.value,
+ configurable: !0,
+ enumerable: !1
+ } : "set" === e.kind ? r = {
+ set: e.value,
+ configurable: !0,
+ enumerable: !1
+ } : "field" === e.kind && (r = {
+ configurable: !0,
+ writable: !0,
+ enumerable: !0
+ });
+ var i = {
+ kind: "field" === e.kind ? "field" : "method",
+ key: t,
+ placement: e["static"] ? "static" : "field" === e.kind ? "own" : "prototype",
+ descriptor: r
+ };
+ return e.decorators && (i.decorators = e.decorators), "field" === e.kind && (i.initializer = e.value), i;
+}
+function _coalesceGetterSetter(e, r) {
+ void 0 !== e.descriptor.get ? r.descriptor.get = e.descriptor.get : r.descriptor.set = e.descriptor.set;
+}
+function _coalesceClassElements(e) {
+ for (var r = [], isSameElement = function isSameElement(e) {
+ return "method" === e.kind && e.key === o.key && e.placement === o.placement;
+ }, t = 0; t < e.length; t++) {
+ var i,
+ o = e[t];
+ if ("method" === o.kind && (i = r.find(isSameElement))) {
+ if (_isDataDescriptor(o.descriptor) || _isDataDescriptor(i.descriptor)) {
+ if (_hasDecorators(o) || _hasDecorators(i)) throw new ReferenceError("Duplicated methods (" + o.key + ") can't be decorated.");
+ i.descriptor = o.descriptor;
+ } else {
+ if (_hasDecorators(o)) {
+ if (_hasDecorators(i)) throw new ReferenceError("Decorators can't be placed on different accessors with for the same property (" + o.key + ").");
+ i.decorators = o.decorators;
+ }
+ _coalesceGetterSetter(o, i);
+ }
+ } else r.push(o);
+ }
+ return r;
+}
+function _hasDecorators(e) {
+ return e.decorators && e.decorators.length;
+}
+function _isDataDescriptor(e) {
+ return void 0 !== e && !(void 0 === e.value && void 0 === e.writable);
+}
+function _optionalCallableProperty(e, r) {
+ var t = e[r];
+ if (void 0 !== t && "function" != typeof t) throw new TypeError("Expected '" + r + "' to be a function");
+ return t;
+}
+module.exports = _decorate, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/defaults.js b/node_modules/@babel/runtime/helpers/defaults.js
new file mode 100644
index 00000000..dfdbbb03
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/defaults.js
@@ -0,0 +1,9 @@
+function _defaults(e, r) {
+ for (var t = Object.getOwnPropertyNames(r), o = 0; o < t.length; o++) {
+ var n = t[o],
+ a = Object.getOwnPropertyDescriptor(r, n);
+ a && a.configurable && void 0 === e[n] && Object.defineProperty(e, n, a);
+ }
+ return e;
+}
+module.exports = _defaults, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/defineAccessor.js b/node_modules/@babel/runtime/helpers/defineAccessor.js
new file mode 100644
index 00000000..dc065f01
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/defineAccessor.js
@@ -0,0 +1,8 @@
+function _defineAccessor(e, r, n, t) {
+ var c = {
+ configurable: !0,
+ enumerable: !0
+ };
+ return c[e] = t, Object.defineProperty(r, n, c);
+}
+module.exports = _defineAccessor, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/defineEnumerableProperties.js b/node_modules/@babel/runtime/helpers/defineEnumerableProperties.js
new file mode 100644
index 00000000..ab9f43c1
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/defineEnumerableProperties.js
@@ -0,0 +1,12 @@
+function _defineEnumerableProperties(e, r) {
+ for (var t in r) {
+ var n = r[t];
+ n.configurable = n.enumerable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, t, n);
+ }
+ if (Object.getOwnPropertySymbols) for (var a = Object.getOwnPropertySymbols(r), b = 0; b < a.length; b++) {
+ var i = a[b];
+ (n = r[i]).configurable = n.enumerable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, i, n);
+ }
+ return e;
+}
+module.exports = _defineEnumerableProperties, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/defineProperty.js b/node_modules/@babel/runtime/helpers/defineProperty.js
new file mode 100644
index 00000000..2c2ff1e9
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/defineProperty.js
@@ -0,0 +1,10 @@
+var toPropertyKey = require("./toPropertyKey.js");
+function _defineProperty(e, r, t) {
+ return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
+ value: t,
+ enumerable: !0,
+ configurable: !0,
+ writable: !0
+ }) : e[r] = t, e;
+}
+module.exports = _defineProperty, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/dispose.js b/node_modules/@babel/runtime/helpers/dispose.js
new file mode 100644
index 00000000..c20193ca
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/dispose.js
@@ -0,0 +1,28 @@
+function dispose_SuppressedError(r, e) {
+ return "undefined" != typeof SuppressedError ? dispose_SuppressedError = SuppressedError : (dispose_SuppressedError = function dispose_SuppressedError(r, e) {
+ this.suppressed = e, this.error = r, this.stack = Error().stack;
+ }, dispose_SuppressedError.prototype = Object.create(Error.prototype, {
+ constructor: {
+ value: dispose_SuppressedError,
+ writable: !0,
+ configurable: !0
+ }
+ })), new dispose_SuppressedError(r, e);
+}
+function _dispose(r, e, s) {
+ function next() {
+ for (; r.length > 0;) try {
+ var o = r.pop(),
+ p = o.d.call(o.v);
+ if (o.a) return Promise.resolve(p).then(next, err);
+ } catch (r) {
+ return err(r);
+ }
+ if (s) throw e;
+ }
+ function err(r) {
+ return e = s ? new dispose_SuppressedError(e, r) : r, s = !0, next();
+ }
+ return next();
+}
+module.exports = _dispose, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/AsyncGenerator.js b/node_modules/@babel/runtime/helpers/esm/AsyncGenerator.js
new file mode 100644
index 00000000..4086a7db
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/AsyncGenerator.js
@@ -0,0 +1,64 @@
+import OverloadYield from "./OverloadYield.js";
+function AsyncGenerator(e) {
+ var r, t;
+ function resume(r, t) {
+ try {
+ var n = e[r](t),
+ o = n.value,
+ u = o instanceof OverloadYield;
+ Promise.resolve(u ? o.v : o).then(function (t) {
+ if (u) {
+ var i = "return" === r ? "return" : "next";
+ if (!o.k || t.done) return resume(i, t);
+ t = e[i](t).value;
+ }
+ settle(n.done ? "return" : "normal", t);
+ }, function (e) {
+ resume("throw", e);
+ });
+ } catch (e) {
+ settle("throw", e);
+ }
+ }
+ function settle(e, n) {
+ switch (e) {
+ case "return":
+ r.resolve({
+ value: n,
+ done: !0
+ });
+ break;
+ case "throw":
+ r.reject(n);
+ break;
+ default:
+ r.resolve({
+ value: n,
+ done: !1
+ });
+ }
+ (r = r.next) ? resume(r.key, r.arg) : t = null;
+ }
+ this._invoke = function (e, n) {
+ return new Promise(function (o, u) {
+ var i = {
+ key: e,
+ arg: n,
+ resolve: o,
+ reject: u,
+ next: null
+ };
+ t ? t = t.next = i : (r = t = i, resume(e, n));
+ });
+ }, "function" != typeof e["return"] && (this["return"] = void 0);
+}
+AsyncGenerator.prototype["function" == typeof Symbol && Symbol.asyncIterator || "@@asyncIterator"] = function () {
+ return this;
+}, AsyncGenerator.prototype.next = function (e) {
+ return this._invoke("next", e);
+}, AsyncGenerator.prototype["throw"] = function (e) {
+ return this._invoke("throw", e);
+}, AsyncGenerator.prototype["return"] = function (e) {
+ return this._invoke("return", e);
+};
+export { AsyncGenerator as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/AwaitValue.js b/node_modules/@babel/runtime/helpers/esm/AwaitValue.js
new file mode 100644
index 00000000..6f210c9c
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/AwaitValue.js
@@ -0,0 +1,4 @@
+function _AwaitValue(t) {
+ this.wrapped = t;
+}
+export { _AwaitValue as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/OverloadYield.js b/node_modules/@babel/runtime/helpers/esm/OverloadYield.js
new file mode 100644
index 00000000..d7753a66
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/OverloadYield.js
@@ -0,0 +1,4 @@
+function _OverloadYield(e, d) {
+ this.v = e, this.k = d;
+}
+export { _OverloadYield as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/applyDecoratedDescriptor.js b/node_modules/@babel/runtime/helpers/esm/applyDecoratedDescriptor.js
new file mode 100644
index 00000000..8ceb3c9e
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/applyDecoratedDescriptor.js
@@ -0,0 +1,9 @@
+function _applyDecoratedDescriptor(i, e, r, n, l) {
+ var a = {};
+ return Object.keys(n).forEach(function (i) {
+ a[i] = n[i];
+ }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, ("value" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) {
+ return n(i, e, r) || r;
+ }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer && (Object.defineProperty(i, e, a), a = null), a;
+}
+export { _applyDecoratedDescriptor as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/applyDecs.js b/node_modules/@babel/runtime/helpers/esm/applyDecs.js
new file mode 100644
index 00000000..2b75dfd7
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/applyDecs.js
@@ -0,0 +1,236 @@
+import _typeof from "./typeof.js";
+import setFunctionName from "./setFunctionName.js";
+import toPropertyKey from "./toPropertyKey.js";
+function old_createMetadataMethodsForProperty(e, t, a, r) {
+ return {
+ getMetadata: function getMetadata(o) {
+ old_assertNotFinished(r, "getMetadata"), old_assertMetadataKey(o);
+ var i = e[o];
+ if (void 0 !== i) if (1 === t) {
+ var n = i["public"];
+ if (void 0 !== n) return n[a];
+ } else if (2 === t) {
+ var l = i["private"];
+ if (void 0 !== l) return l.get(a);
+ } else if (Object.hasOwnProperty.call(i, "constructor")) return i.constructor;
+ },
+ setMetadata: function setMetadata(o, i) {
+ old_assertNotFinished(r, "setMetadata"), old_assertMetadataKey(o);
+ var n = e[o];
+ if (void 0 === n && (n = e[o] = {}), 1 === t) {
+ var l = n["public"];
+ void 0 === l && (l = n["public"] = {}), l[a] = i;
+ } else if (2 === t) {
+ var s = n.priv;
+ void 0 === s && (s = n["private"] = new Map()), s.set(a, i);
+ } else n.constructor = i;
+ }
+ };
+}
+function old_convertMetadataMapToFinal(e, t) {
+ var a = e[Symbol.metadata || Symbol["for"]("Symbol.metadata")],
+ r = Object.getOwnPropertySymbols(t);
+ if (0 !== r.length) {
+ for (var o = 0; o < r.length; o++) {
+ var i = r[o],
+ n = t[i],
+ l = a ? a[i] : null,
+ s = n["public"],
+ c = l ? l["public"] : null;
+ s && c && Object.setPrototypeOf(s, c);
+ var d = n["private"];
+ if (d) {
+ var u = Array.from(d.values()),
+ f = l ? l["private"] : null;
+ f && (u = u.concat(f)), n["private"] = u;
+ }
+ l && Object.setPrototypeOf(n, l);
+ }
+ a && Object.setPrototypeOf(t, a), e[Symbol.metadata || Symbol["for"]("Symbol.metadata")] = t;
+ }
+}
+function old_createAddInitializerMethod(e, t) {
+ return function (a) {
+ old_assertNotFinished(t, "addInitializer"), old_assertCallable(a, "An initializer"), e.push(a);
+ };
+}
+function old_memberDec(e, t, a, r, o, i, n, l, s) {
+ var c;
+ switch (i) {
+ case 1:
+ c = "accessor";
+ break;
+ case 2:
+ c = "method";
+ break;
+ case 3:
+ c = "getter";
+ break;
+ case 4:
+ c = "setter";
+ break;
+ default:
+ c = "field";
+ }
+ var d,
+ u,
+ f = {
+ kind: c,
+ name: l ? "#" + t : toPropertyKey(t),
+ isStatic: n,
+ isPrivate: l
+ },
+ p = {
+ v: !1
+ };
+ if (0 !== i && (f.addInitializer = old_createAddInitializerMethod(o, p)), l) {
+ d = 2, u = Symbol(t);
+ var v = {};
+ 0 === i ? (v.get = a.get, v.set = a.set) : 2 === i ? v.get = function () {
+ return a.value;
+ } : (1 !== i && 3 !== i || (v.get = function () {
+ return a.get.call(this);
+ }), 1 !== i && 4 !== i || (v.set = function (e) {
+ a.set.call(this, e);
+ })), f.access = v;
+ } else d = 1, u = t;
+ try {
+ return e(s, Object.assign(f, old_createMetadataMethodsForProperty(r, d, u, p)));
+ } finally {
+ p.v = !0;
+ }
+}
+function old_assertNotFinished(e, t) {
+ if (e.v) throw Error("attempted to call " + t + " after decoration was finished");
+}
+function old_assertMetadataKey(e) {
+ if ("symbol" != _typeof(e)) throw new TypeError("Metadata keys must be symbols, received: " + e);
+}
+function old_assertCallable(e, t) {
+ if ("function" != typeof e) throw new TypeError(t + " must be a function");
+}
+function old_assertValidReturnValue(e, t) {
+ var a = _typeof(t);
+ if (1 === e) {
+ if ("object" !== a || null === t) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");
+ void 0 !== t.get && old_assertCallable(t.get, "accessor.get"), void 0 !== t.set && old_assertCallable(t.set, "accessor.set"), void 0 !== t.init && old_assertCallable(t.init, "accessor.init"), void 0 !== t.initializer && old_assertCallable(t.initializer, "accessor.initializer");
+ } else if ("function" !== a) throw new TypeError((0 === e ? "field" : 10 === e ? "class" : "method") + " decorators must return a function or void 0");
+}
+function old_getInit(e) {
+ var t;
+ return null == (t = e.init) && (t = e.initializer) && void 0 !== console && console.warn(".initializer has been renamed to .init as of March 2022"), t;
+}
+function old_applyMemberDec(e, t, a, r, o, i, n, l, s) {
+ var c,
+ d,
+ u,
+ f,
+ p,
+ v,
+ y,
+ h = a[0];
+ if (n ? (0 === o || 1 === o ? (c = {
+ get: a[3],
+ set: a[4]
+ }, u = "get") : 3 === o ? (c = {
+ get: a[3]
+ }, u = "get") : 4 === o ? (c = {
+ set: a[3]
+ }, u = "set") : c = {
+ value: a[3]
+ }, 0 !== o && (1 === o && setFunctionName(a[4], "#" + r, "set"), setFunctionName(a[3], "#" + r, u))) : 0 !== o && (c = Object.getOwnPropertyDescriptor(t, r)), 1 === o ? f = {
+ get: c.get,
+ set: c.set
+ } : 2 === o ? f = c.value : 3 === o ? f = c.get : 4 === o && (f = c.set), "function" == typeof h) void 0 !== (p = old_memberDec(h, r, c, l, s, o, i, n, f)) && (old_assertValidReturnValue(o, p), 0 === o ? d = p : 1 === o ? (d = old_getInit(p), v = p.get || f.get, y = p.set || f.set, f = {
+ get: v,
+ set: y
+ }) : f = p);else for (var m = h.length - 1; m >= 0; m--) {
+ var b;
+ void 0 !== (p = old_memberDec(h[m], r, c, l, s, o, i, n, f)) && (old_assertValidReturnValue(o, p), 0 === o ? b = p : 1 === o ? (b = old_getInit(p), v = p.get || f.get, y = p.set || f.set, f = {
+ get: v,
+ set: y
+ }) : f = p, void 0 !== b && (void 0 === d ? d = b : "function" == typeof d ? d = [d, b] : d.push(b)));
+ }
+ if (0 === o || 1 === o) {
+ if (void 0 === d) d = function d(e, t) {
+ return t;
+ };else if ("function" != typeof d) {
+ var g = d;
+ d = function d(e, t) {
+ for (var a = t, r = 0; r < g.length; r++) a = g[r].call(e, a);
+ return a;
+ };
+ } else {
+ var _ = d;
+ d = function d(e, t) {
+ return _.call(e, t);
+ };
+ }
+ e.push(d);
+ }
+ 0 !== o && (1 === o ? (c.get = f.get, c.set = f.set) : 2 === o ? c.value = f : 3 === o ? c.get = f : 4 === o && (c.set = f), n ? 1 === o ? (e.push(function (e, t) {
+ return f.get.call(e, t);
+ }), e.push(function (e, t) {
+ return f.set.call(e, t);
+ })) : 2 === o ? e.push(f) : e.push(function (e, t) {
+ return f.call(e, t);
+ }) : Object.defineProperty(t, r, c));
+}
+function old_applyMemberDecs(e, t, a, r, o) {
+ for (var i, n, l = new Map(), s = new Map(), c = 0; c < o.length; c++) {
+ var d = o[c];
+ if (Array.isArray(d)) {
+ var u,
+ f,
+ p,
+ v = d[1],
+ y = d[2],
+ h = d.length > 3,
+ m = v >= 5;
+ if (m ? (u = t, f = r, 0 != (v -= 5) && (p = n = n || [])) : (u = t.prototype, f = a, 0 !== v && (p = i = i || [])), 0 !== v && !h) {
+ var b = m ? s : l,
+ g = b.get(y) || 0;
+ if (!0 === g || 3 === g && 4 !== v || 4 === g && 3 !== v) throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + y);
+ !g && v > 2 ? b.set(y, v) : b.set(y, !0);
+ }
+ old_applyMemberDec(e, u, d, y, v, m, h, f, p);
+ }
+ }
+ old_pushInitializers(e, i), old_pushInitializers(e, n);
+}
+function old_pushInitializers(e, t) {
+ t && e.push(function (e) {
+ for (var a = 0; a < t.length; a++) t[a].call(e);
+ return e;
+ });
+}
+function old_applyClassDecs(e, t, a, r) {
+ if (r.length > 0) {
+ for (var o = [], i = t, n = t.name, l = r.length - 1; l >= 0; l--) {
+ var s = {
+ v: !1
+ };
+ try {
+ var c = Object.assign({
+ kind: "class",
+ name: n,
+ addInitializer: old_createAddInitializerMethod(o, s)
+ }, old_createMetadataMethodsForProperty(a, 0, n, s)),
+ d = r[l](i, c);
+ } finally {
+ s.v = !0;
+ }
+ void 0 !== d && (old_assertValidReturnValue(10, d), i = d);
+ }
+ e.push(i, function () {
+ for (var e = 0; e < o.length; e++) o[e].call(i);
+ });
+ }
+}
+function applyDecs(e, t, a) {
+ var r = [],
+ o = {},
+ i = {};
+ return old_applyMemberDecs(r, e, i, o, t), old_convertMetadataMapToFinal(e.prototype, i), old_applyClassDecs(r, e, o, a), old_convertMetadataMapToFinal(e, o), r;
+}
+export { applyDecs as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/applyDecs2203.js b/node_modules/@babel/runtime/helpers/esm/applyDecs2203.js
new file mode 100644
index 00000000..bddb51d0
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/applyDecs2203.js
@@ -0,0 +1,184 @@
+import _typeof from "./typeof.js";
+function applyDecs2203Factory() {
+ function createAddInitializerMethod(e, t) {
+ return function (r) {
+ !function (e, t) {
+ if (e.v) throw Error("attempted to call addInitializer after decoration was finished");
+ }(t), assertCallable(r, "An initializer"), e.push(r);
+ };
+ }
+ function memberDec(e, t, r, a, n, i, s, o) {
+ var c;
+ switch (n) {
+ case 1:
+ c = "accessor";
+ break;
+ case 2:
+ c = "method";
+ break;
+ case 3:
+ c = "getter";
+ break;
+ case 4:
+ c = "setter";
+ break;
+ default:
+ c = "field";
+ }
+ var l,
+ u,
+ f = {
+ kind: c,
+ name: s ? "#" + t : t,
+ "static": i,
+ "private": s
+ },
+ p = {
+ v: !1
+ };
+ 0 !== n && (f.addInitializer = createAddInitializerMethod(a, p)), 0 === n ? s ? (l = r.get, u = r.set) : (l = function l() {
+ return this[t];
+ }, u = function u(e) {
+ this[t] = e;
+ }) : 2 === n ? l = function l() {
+ return r.value;
+ } : (1 !== n && 3 !== n || (l = function l() {
+ return r.get.call(this);
+ }), 1 !== n && 4 !== n || (u = function u(e) {
+ r.set.call(this, e);
+ })), f.access = l && u ? {
+ get: l,
+ set: u
+ } : l ? {
+ get: l
+ } : {
+ set: u
+ };
+ try {
+ return e(o, f);
+ } finally {
+ p.v = !0;
+ }
+ }
+ function assertCallable(e, t) {
+ if ("function" != typeof e) throw new TypeError(t + " must be a function");
+ }
+ function assertValidReturnValue(e, t) {
+ var r = _typeof(t);
+ if (1 === e) {
+ if ("object" !== r || null === t) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");
+ void 0 !== t.get && assertCallable(t.get, "accessor.get"), void 0 !== t.set && assertCallable(t.set, "accessor.set"), void 0 !== t.init && assertCallable(t.init, "accessor.init");
+ } else if ("function" !== r) throw new TypeError((0 === e ? "field" : 10 === e ? "class" : "method") + " decorators must return a function or void 0");
+ }
+ function applyMemberDec(e, t, r, a, n, i, s, o) {
+ var c,
+ l,
+ u,
+ f,
+ p,
+ d,
+ h = r[0];
+ if (s ? c = 0 === n || 1 === n ? {
+ get: r[3],
+ set: r[4]
+ } : 3 === n ? {
+ get: r[3]
+ } : 4 === n ? {
+ set: r[3]
+ } : {
+ value: r[3]
+ } : 0 !== n && (c = Object.getOwnPropertyDescriptor(t, a)), 1 === n ? u = {
+ get: c.get,
+ set: c.set
+ } : 2 === n ? u = c.value : 3 === n ? u = c.get : 4 === n && (u = c.set), "function" == typeof h) void 0 !== (f = memberDec(h, a, c, o, n, i, s, u)) && (assertValidReturnValue(n, f), 0 === n ? l = f : 1 === n ? (l = f.init, p = f.get || u.get, d = f.set || u.set, u = {
+ get: p,
+ set: d
+ }) : u = f);else for (var v = h.length - 1; v >= 0; v--) {
+ var g;
+ void 0 !== (f = memberDec(h[v], a, c, o, n, i, s, u)) && (assertValidReturnValue(n, f), 0 === n ? g = f : 1 === n ? (g = f.init, p = f.get || u.get, d = f.set || u.set, u = {
+ get: p,
+ set: d
+ }) : u = f, void 0 !== g && (void 0 === l ? l = g : "function" == typeof l ? l = [l, g] : l.push(g)));
+ }
+ if (0 === n || 1 === n) {
+ if (void 0 === l) l = function l(e, t) {
+ return t;
+ };else if ("function" != typeof l) {
+ var y = l;
+ l = function l(e, t) {
+ for (var r = t, a = 0; a < y.length; a++) r = y[a].call(e, r);
+ return r;
+ };
+ } else {
+ var m = l;
+ l = function l(e, t) {
+ return m.call(e, t);
+ };
+ }
+ e.push(l);
+ }
+ 0 !== n && (1 === n ? (c.get = u.get, c.set = u.set) : 2 === n ? c.value = u : 3 === n ? c.get = u : 4 === n && (c.set = u), s ? 1 === n ? (e.push(function (e, t) {
+ return u.get.call(e, t);
+ }), e.push(function (e, t) {
+ return u.set.call(e, t);
+ })) : 2 === n ? e.push(u) : e.push(function (e, t) {
+ return u.call(e, t);
+ }) : Object.defineProperty(t, a, c));
+ }
+ function pushInitializers(e, t) {
+ t && e.push(function (e) {
+ for (var r = 0; r < t.length; r++) t[r].call(e);
+ return e;
+ });
+ }
+ return function (e, t, r) {
+ var a = [];
+ return function (e, t, r) {
+ for (var a, n, i = new Map(), s = new Map(), o = 0; o < r.length; o++) {
+ var c = r[o];
+ if (Array.isArray(c)) {
+ var l,
+ u,
+ f = c[1],
+ p = c[2],
+ d = c.length > 3,
+ h = f >= 5;
+ if (h ? (l = t, 0 != (f -= 5) && (u = n = n || [])) : (l = t.prototype, 0 !== f && (u = a = a || [])), 0 !== f && !d) {
+ var v = h ? s : i,
+ g = v.get(p) || 0;
+ if (!0 === g || 3 === g && 4 !== f || 4 === g && 3 !== f) throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + p);
+ !g && f > 2 ? v.set(p, f) : v.set(p, !0);
+ }
+ applyMemberDec(e, l, c, p, f, h, d, u);
+ }
+ }
+ pushInitializers(e, a), pushInitializers(e, n);
+ }(a, e, t), function (e, t, r) {
+ if (r.length > 0) {
+ for (var a = [], n = t, i = t.name, s = r.length - 1; s >= 0; s--) {
+ var o = {
+ v: !1
+ };
+ try {
+ var c = r[s](n, {
+ kind: "class",
+ name: i,
+ addInitializer: createAddInitializerMethod(a, o)
+ });
+ } finally {
+ o.v = !0;
+ }
+ void 0 !== c && (assertValidReturnValue(10, c), n = c);
+ }
+ e.push(n, function () {
+ for (var e = 0; e < a.length; e++) a[e].call(n);
+ });
+ }
+ }(a, e, r), a;
+ };
+}
+var applyDecs2203Impl;
+function applyDecs2203(e, t, r) {
+ return (applyDecs2203Impl = applyDecs2203Impl || applyDecs2203Factory())(e, t, r);
+}
+export { applyDecs2203 as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/applyDecs2203R.js b/node_modules/@babel/runtime/helpers/esm/applyDecs2203R.js
new file mode 100644
index 00000000..3944bf42
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/applyDecs2203R.js
@@ -0,0 +1,191 @@
+import _typeof from "./typeof.js";
+import setFunctionName from "./setFunctionName.js";
+import toPropertyKey from "./toPropertyKey.js";
+function applyDecs2203RFactory() {
+ function createAddInitializerMethod(e, t) {
+ return function (r) {
+ !function (e, t) {
+ if (e.v) throw Error("attempted to call addInitializer after decoration was finished");
+ }(t), assertCallable(r, "An initializer"), e.push(r);
+ };
+ }
+ function memberDec(e, t, r, n, a, i, o, s) {
+ var c;
+ switch (a) {
+ case 1:
+ c = "accessor";
+ break;
+ case 2:
+ c = "method";
+ break;
+ case 3:
+ c = "getter";
+ break;
+ case 4:
+ c = "setter";
+ break;
+ default:
+ c = "field";
+ }
+ var l,
+ u,
+ f = {
+ kind: c,
+ name: o ? "#" + t : toPropertyKey(t),
+ "static": i,
+ "private": o
+ },
+ p = {
+ v: !1
+ };
+ 0 !== a && (f.addInitializer = createAddInitializerMethod(n, p)), 0 === a ? o ? (l = r.get, u = r.set) : (l = function l() {
+ return this[t];
+ }, u = function u(e) {
+ this[t] = e;
+ }) : 2 === a ? l = function l() {
+ return r.value;
+ } : (1 !== a && 3 !== a || (l = function l() {
+ return r.get.call(this);
+ }), 1 !== a && 4 !== a || (u = function u(e) {
+ r.set.call(this, e);
+ })), f.access = l && u ? {
+ get: l,
+ set: u
+ } : l ? {
+ get: l
+ } : {
+ set: u
+ };
+ try {
+ return e(s, f);
+ } finally {
+ p.v = !0;
+ }
+ }
+ function assertCallable(e, t) {
+ if ("function" != typeof e) throw new TypeError(t + " must be a function");
+ }
+ function assertValidReturnValue(e, t) {
+ var r = _typeof(t);
+ if (1 === e) {
+ if ("object" !== r || null === t) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");
+ void 0 !== t.get && assertCallable(t.get, "accessor.get"), void 0 !== t.set && assertCallable(t.set, "accessor.set"), void 0 !== t.init && assertCallable(t.init, "accessor.init");
+ } else if ("function" !== r) throw new TypeError((0 === e ? "field" : 10 === e ? "class" : "method") + " decorators must return a function or void 0");
+ }
+ function applyMemberDec(e, t, r, n, a, i, o, s) {
+ var c,
+ l,
+ u,
+ f,
+ p,
+ d,
+ h,
+ v = r[0];
+ if (o ? (0 === a || 1 === a ? (c = {
+ get: r[3],
+ set: r[4]
+ }, u = "get") : 3 === a ? (c = {
+ get: r[3]
+ }, u = "get") : 4 === a ? (c = {
+ set: r[3]
+ }, u = "set") : c = {
+ value: r[3]
+ }, 0 !== a && (1 === a && setFunctionName(r[4], "#" + n, "set"), setFunctionName(r[3], "#" + n, u))) : 0 !== a && (c = Object.getOwnPropertyDescriptor(t, n)), 1 === a ? f = {
+ get: c.get,
+ set: c.set
+ } : 2 === a ? f = c.value : 3 === a ? f = c.get : 4 === a && (f = c.set), "function" == typeof v) void 0 !== (p = memberDec(v, n, c, s, a, i, o, f)) && (assertValidReturnValue(a, p), 0 === a ? l = p : 1 === a ? (l = p.init, d = p.get || f.get, h = p.set || f.set, f = {
+ get: d,
+ set: h
+ }) : f = p);else for (var g = v.length - 1; g >= 0; g--) {
+ var y;
+ void 0 !== (p = memberDec(v[g], n, c, s, a, i, o, f)) && (assertValidReturnValue(a, p), 0 === a ? y = p : 1 === a ? (y = p.init, d = p.get || f.get, h = p.set || f.set, f = {
+ get: d,
+ set: h
+ }) : f = p, void 0 !== y && (void 0 === l ? l = y : "function" == typeof l ? l = [l, y] : l.push(y)));
+ }
+ if (0 === a || 1 === a) {
+ if (void 0 === l) l = function l(e, t) {
+ return t;
+ };else if ("function" != typeof l) {
+ var m = l;
+ l = function l(e, t) {
+ for (var r = t, n = 0; n < m.length; n++) r = m[n].call(e, r);
+ return r;
+ };
+ } else {
+ var b = l;
+ l = function l(e, t) {
+ return b.call(e, t);
+ };
+ }
+ e.push(l);
+ }
+ 0 !== a && (1 === a ? (c.get = f.get, c.set = f.set) : 2 === a ? c.value = f : 3 === a ? c.get = f : 4 === a && (c.set = f), o ? 1 === a ? (e.push(function (e, t) {
+ return f.get.call(e, t);
+ }), e.push(function (e, t) {
+ return f.set.call(e, t);
+ })) : 2 === a ? e.push(f) : e.push(function (e, t) {
+ return f.call(e, t);
+ }) : Object.defineProperty(t, n, c));
+ }
+ function applyMemberDecs(e, t) {
+ for (var r, n, a = [], i = new Map(), o = new Map(), s = 0; s < t.length; s++) {
+ var c = t[s];
+ if (Array.isArray(c)) {
+ var l,
+ u,
+ f = c[1],
+ p = c[2],
+ d = c.length > 3,
+ h = f >= 5;
+ if (h ? (l = e, 0 != (f -= 5) && (u = n = n || [])) : (l = e.prototype, 0 !== f && (u = r = r || [])), 0 !== f && !d) {
+ var v = h ? o : i,
+ g = v.get(p) || 0;
+ if (!0 === g || 3 === g && 4 !== f || 4 === g && 3 !== f) throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + p);
+ !g && f > 2 ? v.set(p, f) : v.set(p, !0);
+ }
+ applyMemberDec(a, l, c, p, f, h, d, u);
+ }
+ }
+ return pushInitializers(a, r), pushInitializers(a, n), a;
+ }
+ function pushInitializers(e, t) {
+ t && e.push(function (e) {
+ for (var r = 0; r < t.length; r++) t[r].call(e);
+ return e;
+ });
+ }
+ return function (e, t, r) {
+ return {
+ e: applyMemberDecs(e, t),
+ get c() {
+ return function (e, t) {
+ if (t.length > 0) {
+ for (var r = [], n = e, a = e.name, i = t.length - 1; i >= 0; i--) {
+ var o = {
+ v: !1
+ };
+ try {
+ var s = t[i](n, {
+ kind: "class",
+ name: a,
+ addInitializer: createAddInitializerMethod(r, o)
+ });
+ } finally {
+ o.v = !0;
+ }
+ void 0 !== s && (assertValidReturnValue(10, s), n = s);
+ }
+ return [n, function () {
+ for (var e = 0; e < r.length; e++) r[e].call(n);
+ }];
+ }
+ }(e, r);
+ }
+ };
+ };
+}
+function applyDecs2203R(e, t, r) {
+ return (applyDecs2203R = applyDecs2203RFactory())(e, t, r);
+}
+export { applyDecs2203R as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/applyDecs2301.js b/node_modules/@babel/runtime/helpers/esm/applyDecs2301.js
new file mode 100644
index 00000000..bb4fbe6a
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/applyDecs2301.js
@@ -0,0 +1,222 @@
+import _typeof from "./typeof.js";
+import checkInRHS from "./checkInRHS.js";
+import setFunctionName from "./setFunctionName.js";
+import toPropertyKey from "./toPropertyKey.js";
+function applyDecs2301Factory() {
+ function createAddInitializerMethod(e, t) {
+ return function (r) {
+ !function (e, t) {
+ if (e.v) throw Error("attempted to call addInitializer after decoration was finished");
+ }(t), assertCallable(r, "An initializer"), e.push(r);
+ };
+ }
+ function assertInstanceIfPrivate(e, t) {
+ if (!e(t)) throw new TypeError("Attempted to access private element on non-instance");
+ }
+ function memberDec(e, t, r, n, a, i, s, o, c) {
+ var u;
+ switch (a) {
+ case 1:
+ u = "accessor";
+ break;
+ case 2:
+ u = "method";
+ break;
+ case 3:
+ u = "getter";
+ break;
+ case 4:
+ u = "setter";
+ break;
+ default:
+ u = "field";
+ }
+ var l,
+ f,
+ p = {
+ kind: u,
+ name: s ? "#" + t : toPropertyKey(t),
+ "static": i,
+ "private": s
+ },
+ d = {
+ v: !1
+ };
+ if (0 !== a && (p.addInitializer = createAddInitializerMethod(n, d)), s || 0 !== a && 2 !== a) {
+ if (2 === a) l = function l(e) {
+ return assertInstanceIfPrivate(c, e), r.value;
+ };else {
+ var h = 0 === a || 1 === a;
+ (h || 3 === a) && (l = s ? function (e) {
+ return assertInstanceIfPrivate(c, e), r.get.call(e);
+ } : function (e) {
+ return r.get.call(e);
+ }), (h || 4 === a) && (f = s ? function (e, t) {
+ assertInstanceIfPrivate(c, e), r.set.call(e, t);
+ } : function (e, t) {
+ r.set.call(e, t);
+ });
+ }
+ } else l = function l(e) {
+ return e[t];
+ }, 0 === a && (f = function f(e, r) {
+ e[t] = r;
+ });
+ var v = s ? c.bind() : function (e) {
+ return t in e;
+ };
+ p.access = l && f ? {
+ get: l,
+ set: f,
+ has: v
+ } : l ? {
+ get: l,
+ has: v
+ } : {
+ set: f,
+ has: v
+ };
+ try {
+ return e(o, p);
+ } finally {
+ d.v = !0;
+ }
+ }
+ function assertCallable(e, t) {
+ if ("function" != typeof e) throw new TypeError(t + " must be a function");
+ }
+ function assertValidReturnValue(e, t) {
+ var r = _typeof(t);
+ if (1 === e) {
+ if ("object" !== r || null === t) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");
+ void 0 !== t.get && assertCallable(t.get, "accessor.get"), void 0 !== t.set && assertCallable(t.set, "accessor.set"), void 0 !== t.init && assertCallable(t.init, "accessor.init");
+ } else if ("function" !== r) throw new TypeError((0 === e ? "field" : 10 === e ? "class" : "method") + " decorators must return a function or void 0");
+ }
+ function curryThis2(e) {
+ return function (t) {
+ e(this, t);
+ };
+ }
+ function applyMemberDec(e, t, r, n, a, i, s, o, c) {
+ var u,
+ l,
+ f,
+ p,
+ d,
+ h,
+ v,
+ y,
+ g = r[0];
+ if (s ? (0 === a || 1 === a ? (u = {
+ get: (d = r[3], function () {
+ return d(this);
+ }),
+ set: curryThis2(r[4])
+ }, f = "get") : 3 === a ? (u = {
+ get: r[3]
+ }, f = "get") : 4 === a ? (u = {
+ set: r[3]
+ }, f = "set") : u = {
+ value: r[3]
+ }, 0 !== a && (1 === a && setFunctionName(u.set, "#" + n, "set"), setFunctionName(u[f || "value"], "#" + n, f))) : 0 !== a && (u = Object.getOwnPropertyDescriptor(t, n)), 1 === a ? p = {
+ get: u.get,
+ set: u.set
+ } : 2 === a ? p = u.value : 3 === a ? p = u.get : 4 === a && (p = u.set), "function" == typeof g) void 0 !== (h = memberDec(g, n, u, o, a, i, s, p, c)) && (assertValidReturnValue(a, h), 0 === a ? l = h : 1 === a ? (l = h.init, v = h.get || p.get, y = h.set || p.set, p = {
+ get: v,
+ set: y
+ }) : p = h);else for (var m = g.length - 1; m >= 0; m--) {
+ var b;
+ void 0 !== (h = memberDec(g[m], n, u, o, a, i, s, p, c)) && (assertValidReturnValue(a, h), 0 === a ? b = h : 1 === a ? (b = h.init, v = h.get || p.get, y = h.set || p.set, p = {
+ get: v,
+ set: y
+ }) : p = h, void 0 !== b && (void 0 === l ? l = b : "function" == typeof l ? l = [l, b] : l.push(b)));
+ }
+ if (0 === a || 1 === a) {
+ if (void 0 === l) l = function l(e, t) {
+ return t;
+ };else if ("function" != typeof l) {
+ var I = l;
+ l = function l(e, t) {
+ for (var r = t, n = 0; n < I.length; n++) r = I[n].call(e, r);
+ return r;
+ };
+ } else {
+ var w = l;
+ l = function l(e, t) {
+ return w.call(e, t);
+ };
+ }
+ e.push(l);
+ }
+ 0 !== a && (1 === a ? (u.get = p.get, u.set = p.set) : 2 === a ? u.value = p : 3 === a ? u.get = p : 4 === a && (u.set = p), s ? 1 === a ? (e.push(function (e, t) {
+ return p.get.call(e, t);
+ }), e.push(function (e, t) {
+ return p.set.call(e, t);
+ })) : 2 === a ? e.push(p) : e.push(function (e, t) {
+ return p.call(e, t);
+ }) : Object.defineProperty(t, n, u));
+ }
+ function applyMemberDecs(e, t, r) {
+ for (var n, a, i, s = [], o = new Map(), c = new Map(), u = 0; u < t.length; u++) {
+ var l = t[u];
+ if (Array.isArray(l)) {
+ var f,
+ p,
+ d = l[1],
+ h = l[2],
+ v = l.length > 3,
+ y = d >= 5,
+ g = r;
+ if (y ? (f = e, 0 != (d -= 5) && (p = a = a || []), v && !i && (i = function i(t) {
+ return checkInRHS(t) === e;
+ }), g = i) : (f = e.prototype, 0 !== d && (p = n = n || [])), 0 !== d && !v) {
+ var m = y ? c : o,
+ b = m.get(h) || 0;
+ if (!0 === b || 3 === b && 4 !== d || 4 === b && 3 !== d) throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + h);
+ !b && d > 2 ? m.set(h, d) : m.set(h, !0);
+ }
+ applyMemberDec(s, f, l, h, d, y, v, p, g);
+ }
+ }
+ return pushInitializers(s, n), pushInitializers(s, a), s;
+ }
+ function pushInitializers(e, t) {
+ t && e.push(function (e) {
+ for (var r = 0; r < t.length; r++) t[r].call(e);
+ return e;
+ });
+ }
+ return function (e, t, r, n) {
+ return {
+ e: applyMemberDecs(e, t, n),
+ get c() {
+ return function (e, t) {
+ if (t.length > 0) {
+ for (var r = [], n = e, a = e.name, i = t.length - 1; i >= 0; i--) {
+ var s = {
+ v: !1
+ };
+ try {
+ var o = t[i](n, {
+ kind: "class",
+ name: a,
+ addInitializer: createAddInitializerMethod(r, s)
+ });
+ } finally {
+ s.v = !0;
+ }
+ void 0 !== o && (assertValidReturnValue(10, o), n = o);
+ }
+ return [n, function () {
+ for (var e = 0; e < r.length; e++) r[e].call(n);
+ }];
+ }
+ }(e, r);
+ }
+ };
+ };
+}
+function applyDecs2301(e, t, r, n) {
+ return (applyDecs2301 = applyDecs2301Factory())(e, t, r, n);
+}
+export { applyDecs2301 as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/applyDecs2305.js b/node_modules/@babel/runtime/helpers/esm/applyDecs2305.js
new file mode 100644
index 00000000..a11b2b90
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/applyDecs2305.js
@@ -0,0 +1,133 @@
+import _typeof from "./typeof.js";
+import checkInRHS from "./checkInRHS.js";
+import setFunctionName from "./setFunctionName.js";
+import toPropertyKey from "./toPropertyKey.js";
+function applyDecs2305(e, t, r, n, o, a) {
+ function i(e, t, r) {
+ return function (n, o) {
+ return r && r(n), e[t].call(n, o);
+ };
+ }
+ function c(e, t) {
+ for (var r = 0; r < e.length; r++) e[r].call(t);
+ return t;
+ }
+ function s(e, t, r, n) {
+ if ("function" != typeof e && (n || void 0 !== e)) throw new TypeError(t + " must " + (r || "be") + " a function" + (n ? "" : " or undefined"));
+ return e;
+ }
+ function applyDec(e, t, r, n, o, a, c, u, l, f, p, d, h) {
+ function m(e) {
+ if (!h(e)) throw new TypeError("Attempted to access private element on non-instance");
+ }
+ var y,
+ v = t[0],
+ g = t[3],
+ b = !u;
+ if (!b) {
+ r || Array.isArray(v) || (v = [v]);
+ var w = {},
+ S = [],
+ A = 3 === o ? "get" : 4 === o || d ? "set" : "value";
+ f ? (p || d ? w = {
+ get: setFunctionName(function () {
+ return g(this);
+ }, n, "get"),
+ set: function set(e) {
+ t[4](this, e);
+ }
+ } : w[A] = g, p || setFunctionName(w[A], n, 2 === o ? "" : A)) : p || (w = Object.getOwnPropertyDescriptor(e, n));
+ }
+ for (var P = e, j = v.length - 1; j >= 0; j -= r ? 2 : 1) {
+ var D = v[j],
+ E = r ? v[j - 1] : void 0,
+ I = {},
+ O = {
+ kind: ["field", "accessor", "method", "getter", "setter", "class"][o],
+ name: n,
+ metadata: a,
+ addInitializer: function (e, t) {
+ if (e.v) throw Error("attempted to call addInitializer after decoration was finished");
+ s(t, "An initializer", "be", !0), c.push(t);
+ }.bind(null, I)
+ };
+ try {
+ if (b) (y = s(D.call(E, P, O), "class decorators", "return")) && (P = y);else {
+ var k, F;
+ O["static"] = l, O["private"] = f, f ? 2 === o ? k = function k(e) {
+ return m(e), w.value;
+ } : (o < 4 && (k = i(w, "get", m)), 3 !== o && (F = i(w, "set", m))) : (k = function k(e) {
+ return e[n];
+ }, (o < 2 || 4 === o) && (F = function F(e, t) {
+ e[n] = t;
+ }));
+ var N = O.access = {
+ has: f ? h.bind() : function (e) {
+ return n in e;
+ }
+ };
+ if (k && (N.get = k), F && (N.set = F), P = D.call(E, d ? {
+ get: w.get,
+ set: w.set
+ } : w[A], O), d) {
+ if ("object" == _typeof(P) && P) (y = s(P.get, "accessor.get")) && (w.get = y), (y = s(P.set, "accessor.set")) && (w.set = y), (y = s(P.init, "accessor.init")) && S.push(y);else if (void 0 !== P) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");
+ } else s(P, (p ? "field" : "method") + " decorators", "return") && (p ? S.push(P) : w[A] = P);
+ }
+ } finally {
+ I.v = !0;
+ }
+ }
+ return (p || d) && u.push(function (e, t) {
+ for (var r = S.length - 1; r >= 0; r--) t = S[r].call(e, t);
+ return t;
+ }), p || b || (f ? d ? u.push(i(w, "get"), i(w, "set")) : u.push(2 === o ? w[A] : i.call.bind(w[A])) : Object.defineProperty(e, n, w)), P;
+ }
+ function u(e, t) {
+ return Object.defineProperty(e, Symbol.metadata || Symbol["for"]("Symbol.metadata"), {
+ configurable: !0,
+ enumerable: !0,
+ value: t
+ });
+ }
+ if (arguments.length >= 6) var l = a[Symbol.metadata || Symbol["for"]("Symbol.metadata")];
+ var f = Object.create(null == l ? null : l),
+ p = function (e, t, r, n) {
+ var o,
+ a,
+ i = [],
+ s = function s(t) {
+ return checkInRHS(t) === e;
+ },
+ u = new Map();
+ function l(e) {
+ e && i.push(c.bind(null, e));
+ }
+ for (var f = 0; f < t.length; f++) {
+ var p = t[f];
+ if (Array.isArray(p)) {
+ var d = p[1],
+ h = p[2],
+ m = p.length > 3,
+ y = 16 & d,
+ v = !!(8 & d),
+ g = 0 == (d &= 7),
+ b = h + "/" + v;
+ if (!g && !m) {
+ var w = u.get(b);
+ if (!0 === w || 3 === w && 4 !== d || 4 === w && 3 !== d) throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + h);
+ u.set(b, !(d > 2) || d);
+ }
+ applyDec(v ? e : e.prototype, p, y, m ? "#" + h : toPropertyKey(h), d, n, v ? a = a || [] : o = o || [], i, v, m, g, 1 === d, v && m ? s : r);
+ }
+ }
+ return l(o), l(a), i;
+ }(e, t, o, f);
+ return r.length || u(e, f), {
+ e: p,
+ get c() {
+ var t = [];
+ return r.length && [u(applyDec(e, [r], n, e.name, 5, f, t), f), c.bind(null, t, e)];
+ }
+ };
+}
+export { applyDecs2305 as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/applyDecs2311.js b/node_modules/@babel/runtime/helpers/esm/applyDecs2311.js
new file mode 100644
index 00000000..41b2c484
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/applyDecs2311.js
@@ -0,0 +1,124 @@
+import _typeof from "./typeof.js";
+import checkInRHS from "./checkInRHS.js";
+import setFunctionName from "./setFunctionName.js";
+import toPropertyKey from "./toPropertyKey.js";
+function applyDecs2311(e, t, n, r, o, i) {
+ var a,
+ c,
+ u,
+ s,
+ f,
+ l,
+ p,
+ d = Symbol.metadata || Symbol["for"]("Symbol.metadata"),
+ m = Object.defineProperty,
+ h = Object.create,
+ y = [h(null), h(null)],
+ v = t.length;
+ function g(t, n, r) {
+ return function (o, i) {
+ n && (i = o, o = e);
+ for (var a = 0; a < t.length; a++) i = t[a].apply(o, r ? [i] : []);
+ return r ? i : o;
+ };
+ }
+ function b(e, t, n, r) {
+ if ("function" != typeof e && (r || void 0 !== e)) throw new TypeError(t + " must " + (n || "be") + " a function" + (r ? "" : " or undefined"));
+ return e;
+ }
+ function applyDec(e, t, n, r, o, i, u, s, f, l, p) {
+ function d(e) {
+ if (!p(e)) throw new TypeError("Attempted to access private element on non-instance");
+ }
+ var h = [].concat(t[0]),
+ v = t[3],
+ w = !u,
+ D = 1 === o,
+ S = 3 === o,
+ j = 4 === o,
+ E = 2 === o;
+ function I(t, n, r) {
+ return function (o, i) {
+ return n && (i = o, o = e), r && r(o), P[t].call(o, i);
+ };
+ }
+ if (!w) {
+ var P = {},
+ k = [],
+ F = S ? "get" : j || D ? "set" : "value";
+ if (f ? (l || D ? P = {
+ get: setFunctionName(function () {
+ return v(this);
+ }, r, "get"),
+ set: function set(e) {
+ t[4](this, e);
+ }
+ } : P[F] = v, l || setFunctionName(P[F], r, E ? "" : F)) : l || (P = Object.getOwnPropertyDescriptor(e, r)), !l && !f) {
+ if ((c = y[+s][r]) && 7 != (c ^ o)) throw Error("Decorating two elements with the same name (" + P[F].name + ") is not supported yet");
+ y[+s][r] = o < 3 ? 1 : o;
+ }
+ }
+ for (var N = e, O = h.length - 1; O >= 0; O -= n ? 2 : 1) {
+ var T = b(h[O], "A decorator", "be", !0),
+ z = n ? h[O - 1] : void 0,
+ A = {},
+ H = {
+ kind: ["field", "accessor", "method", "getter", "setter", "class"][o],
+ name: r,
+ metadata: a,
+ addInitializer: function (e, t) {
+ if (e.v) throw new TypeError("attempted to call addInitializer after decoration was finished");
+ b(t, "An initializer", "be", !0), i.push(t);
+ }.bind(null, A)
+ };
+ if (w) c = T.call(z, N, H), A.v = 1, b(c, "class decorators", "return") && (N = c);else if (H["static"] = s, H["private"] = f, c = H.access = {
+ has: f ? p.bind() : function (e) {
+ return r in e;
+ }
+ }, j || (c.get = f ? E ? function (e) {
+ return d(e), P.value;
+ } : I("get", 0, d) : function (e) {
+ return e[r];
+ }), E || S || (c.set = f ? I("set", 0, d) : function (e, t) {
+ e[r] = t;
+ }), N = T.call(z, D ? {
+ get: P.get,
+ set: P.set
+ } : P[F], H), A.v = 1, D) {
+ if ("object" == _typeof(N) && N) (c = b(N.get, "accessor.get")) && (P.get = c), (c = b(N.set, "accessor.set")) && (P.set = c), (c = b(N.init, "accessor.init")) && k.unshift(c);else if (void 0 !== N) throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined");
+ } else b(N, (l ? "field" : "method") + " decorators", "return") && (l ? k.unshift(N) : P[F] = N);
+ }
+ return o < 2 && u.push(g(k, s, 1), g(i, s, 0)), l || w || (f ? D ? u.splice(-1, 0, I("get", s), I("set", s)) : u.push(E ? P[F] : b.call.bind(P[F])) : m(e, r, P)), N;
+ }
+ function w(e) {
+ return m(e, d, {
+ configurable: !0,
+ enumerable: !0,
+ value: a
+ });
+ }
+ return void 0 !== i && (a = i[d]), a = h(null == a ? null : a), f = [], l = function l(e) {
+ e && f.push(g(e));
+ }, p = function p(t, r) {
+ for (var i = 0; i < n.length; i++) {
+ var a = n[i],
+ c = a[1],
+ l = 7 & c;
+ if ((8 & c) == t && !l == r) {
+ var p = a[2],
+ d = !!a[3],
+ m = 16 & c;
+ applyDec(t ? e : e.prototype, a, m, d ? "#" + p : toPropertyKey(p), l, l < 2 ? [] : t ? s = s || [] : u = u || [], f, !!t, d, r, t && d ? function (t) {
+ return checkInRHS(t) === e;
+ } : o);
+ }
+ }
+ }, p(8, 0), p(0, 0), p(8, 1), p(0, 1), l(u), l(s), c = f, v || w(e), {
+ e: c,
+ get c() {
+ var n = [];
+ return v && [w(e = applyDec(e, [t], r, e.name, 5, n)), g(n, 1)];
+ }
+ };
+}
+export { applyDecs2311 as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js b/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js
new file mode 100644
index 00000000..9ace7724
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js
@@ -0,0 +1,6 @@
+function _arrayLikeToArray(r, a) {
+ (null == a || a > r.length) && (a = r.length);
+ for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
+ return n;
+}
+export { _arrayLikeToArray as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js b/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js
new file mode 100644
index 00000000..99fa7154
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js
@@ -0,0 +1,4 @@
+function _arrayWithHoles(r) {
+ if (Array.isArray(r)) return r;
+}
+export { _arrayWithHoles as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js b/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js
new file mode 100644
index 00000000..1ce6f214
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js
@@ -0,0 +1,5 @@
+import arrayLikeToArray from "./arrayLikeToArray.js";
+function _arrayWithoutHoles(r) {
+ if (Array.isArray(r)) return arrayLikeToArray(r);
+}
+export { _arrayWithoutHoles as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/assertClassBrand.js b/node_modules/@babel/runtime/helpers/esm/assertClassBrand.js
new file mode 100644
index 00000000..ae7b7126
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/assertClassBrand.js
@@ -0,0 +1,5 @@
+function _assertClassBrand(e, t, n) {
+ if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n;
+ throw new TypeError("Private element is not present on this object");
+}
+export { _assertClassBrand as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js b/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js
new file mode 100644
index 00000000..4a41bde6
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js
@@ -0,0 +1,5 @@
+function _assertThisInitialized(e) {
+ if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+ return e;
+}
+export { _assertThisInitialized as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/asyncGeneratorDelegate.js b/node_modules/@babel/runtime/helpers/esm/asyncGeneratorDelegate.js
new file mode 100644
index 00000000..e0266897
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/asyncGeneratorDelegate.js
@@ -0,0 +1,24 @@
+import OverloadYield from "./OverloadYield.js";
+function _asyncGeneratorDelegate(t) {
+ var e = {},
+ n = !1;
+ function pump(e, r) {
+ return n = !0, r = new Promise(function (n) {
+ n(t[e](r));
+ }), {
+ done: !1,
+ value: new OverloadYield(r, 1)
+ };
+ }
+ return e["undefined" != typeof Symbol && Symbol.iterator || "@@iterator"] = function () {
+ return this;
+ }, e.next = function (t) {
+ return n ? (n = !1, t) : pump("next", t);
+ }, "function" == typeof t["throw"] && (e["throw"] = function (t) {
+ if (n) throw n = !1, t;
+ return pump("throw", t);
+ }), "function" == typeof t["return"] && (e["return"] = function (t) {
+ return n ? (n = !1, t) : pump("return", t);
+ }), e;
+}
+export { _asyncGeneratorDelegate as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/asyncIterator.js b/node_modules/@babel/runtime/helpers/esm/asyncIterator.js
new file mode 100644
index 00000000..2ed00b79
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/asyncIterator.js
@@ -0,0 +1,45 @@
+function _asyncIterator(r) {
+ var n,
+ t,
+ o,
+ e = 2;
+ for ("undefined" != typeof Symbol && (t = Symbol.asyncIterator, o = Symbol.iterator); e--;) {
+ if (t && null != (n = r[t])) return n.call(r);
+ if (o && null != (n = r[o])) return new AsyncFromSyncIterator(n.call(r));
+ t = "@@asyncIterator", o = "@@iterator";
+ }
+ throw new TypeError("Object is not async iterable");
+}
+function AsyncFromSyncIterator(r) {
+ function AsyncFromSyncIteratorContinuation(r) {
+ if (Object(r) !== r) return Promise.reject(new TypeError(r + " is not an object."));
+ var n = r.done;
+ return Promise.resolve(r.value).then(function (r) {
+ return {
+ value: r,
+ done: n
+ };
+ });
+ }
+ return AsyncFromSyncIterator = function AsyncFromSyncIterator(r) {
+ this.s = r, this.n = r.next;
+ }, AsyncFromSyncIterator.prototype = {
+ s: null,
+ n: null,
+ next: function next() {
+ return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments));
+ },
+ "return": function _return(r) {
+ var n = this.s["return"];
+ return void 0 === n ? Promise.resolve({
+ value: r,
+ done: !0
+ }) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments));
+ },
+ "throw": function _throw(r) {
+ var n = this.s["return"];
+ return void 0 === n ? Promise.reject(r) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments));
+ }
+ }, new AsyncFromSyncIterator(r);
+}
+export { _asyncIterator as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js b/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js
new file mode 100644
index 00000000..00f29b1f
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js
@@ -0,0 +1,26 @@
+function asyncGeneratorStep(n, t, e, r, o, a, c) {
+ try {
+ var i = n[a](c),
+ u = i.value;
+ } catch (n) {
+ return void e(n);
+ }
+ i.done ? t(u) : Promise.resolve(u).then(r, o);
+}
+function _asyncToGenerator(n) {
+ return function () {
+ var t = this,
+ e = arguments;
+ return new Promise(function (r, o) {
+ var a = n.apply(t, e);
+ function _next(n) {
+ asyncGeneratorStep(a, r, o, _next, _throw, "next", n);
+ }
+ function _throw(n) {
+ asyncGeneratorStep(a, r, o, _next, _throw, "throw", n);
+ }
+ _next(void 0);
+ });
+ };
+}
+export { _asyncToGenerator as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/awaitAsyncGenerator.js b/node_modules/@babel/runtime/helpers/esm/awaitAsyncGenerator.js
new file mode 100644
index 00000000..097c88c9
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/awaitAsyncGenerator.js
@@ -0,0 +1,5 @@
+import OverloadYield from "./OverloadYield.js";
+function _awaitAsyncGenerator(e) {
+ return new OverloadYield(e, 0);
+}
+export { _awaitAsyncGenerator as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/callSuper.js b/node_modules/@babel/runtime/helpers/esm/callSuper.js
new file mode 100644
index 00000000..6d17a4ee
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/callSuper.js
@@ -0,0 +1,7 @@
+import getPrototypeOf from "./getPrototypeOf.js";
+import isNativeReflectConstruct from "./isNativeReflectConstruct.js";
+import possibleConstructorReturn from "./possibleConstructorReturn.js";
+function _callSuper(t, o, e) {
+ return o = getPrototypeOf(o), possibleConstructorReturn(t, isNativeReflectConstruct() ? Reflect.construct(o, e || [], getPrototypeOf(t).constructor) : o.apply(t, e));
+}
+export { _callSuper as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/checkInRHS.js b/node_modules/@babel/runtime/helpers/esm/checkInRHS.js
new file mode 100644
index 00000000..12f59b4c
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/checkInRHS.js
@@ -0,0 +1,6 @@
+import _typeof from "./typeof.js";
+function _checkInRHS(e) {
+ if (Object(e) !== e) throw TypeError("right-hand side of 'in' should be an object, got " + (null !== e ? _typeof(e) : "null"));
+ return e;
+}
+export { _checkInRHS as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/checkPrivateRedeclaration.js b/node_modules/@babel/runtime/helpers/esm/checkPrivateRedeclaration.js
new file mode 100644
index 00000000..e9e6b3b4
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/checkPrivateRedeclaration.js
@@ -0,0 +1,4 @@
+function _checkPrivateRedeclaration(e, t) {
+ if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object");
+}
+export { _checkPrivateRedeclaration as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorDestructureSet.js b/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorDestructureSet.js
new file mode 100644
index 00000000..56234195
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorDestructureSet.js
@@ -0,0 +1,10 @@
+function _classApplyDescriptorDestructureSet(e, t) {
+ if (t.set) return "__destrObj" in t || (t.__destrObj = {
+ set value(r) {
+ t.set.call(e, r);
+ }
+ }), t.__destrObj;
+ if (!t.writable) throw new TypeError("attempted to set read only private field");
+ return t;
+}
+export { _classApplyDescriptorDestructureSet as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorGet.js b/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorGet.js
new file mode 100644
index 00000000..b9259d3e
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorGet.js
@@ -0,0 +1,4 @@
+function _classApplyDescriptorGet(e, t) {
+ return t.get ? t.get.call(e) : t.value;
+}
+export { _classApplyDescriptorGet as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorSet.js b/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorSet.js
new file mode 100644
index 00000000..d9c4fbd2
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorSet.js
@@ -0,0 +1,7 @@
+function _classApplyDescriptorSet(e, t, l) {
+ if (t.set) t.set.call(e, l);else {
+ if (!t.writable) throw new TypeError("attempted to set read only private field");
+ t.value = l;
+ }
+}
+export { _classApplyDescriptorSet as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classCallCheck.js b/node_modules/@babel/runtime/helpers/esm/classCallCheck.js
new file mode 100644
index 00000000..bf972193
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classCallCheck.js
@@ -0,0 +1,4 @@
+function _classCallCheck(a, n) {
+ if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function");
+}
+export { _classCallCheck as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticAccess.js b/node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticAccess.js
new file mode 100644
index 00000000..366ed05e
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticAccess.js
@@ -0,0 +1,5 @@
+import assertClassBrand from "./assertClassBrand.js";
+function _classCheckPrivateStaticAccess(s, a, r) {
+ return assertClassBrand(a, s, r);
+}
+export { _classCheckPrivateStaticAccess as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticFieldDescriptor.js b/node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticFieldDescriptor.js
new file mode 100644
index 00000000..844be91a
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classCheckPrivateStaticFieldDescriptor.js
@@ -0,0 +1,4 @@
+function _classCheckPrivateStaticFieldDescriptor(t, e) {
+ if (void 0 === t) throw new TypeError("attempted to " + e + " private static field before its declaration");
+}
+export { _classCheckPrivateStaticFieldDescriptor as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classExtractFieldDescriptor.js b/node_modules/@babel/runtime/helpers/esm/classExtractFieldDescriptor.js
new file mode 100644
index 00000000..652689d1
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classExtractFieldDescriptor.js
@@ -0,0 +1,5 @@
+import classPrivateFieldGet2 from "./classPrivateFieldGet2.js";
+function _classExtractFieldDescriptor(e, t) {
+ return classPrivateFieldGet2(t, e);
+}
+export { _classExtractFieldDescriptor as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classNameTDZError.js b/node_modules/@babel/runtime/helpers/esm/classNameTDZError.js
new file mode 100644
index 00000000..68e76ff7
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classNameTDZError.js
@@ -0,0 +1,4 @@
+function _classNameTDZError(e) {
+ throw new ReferenceError('Class "' + e + '" cannot be referenced in computed property keys.');
+}
+export { _classNameTDZError as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateFieldDestructureSet.js b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldDestructureSet.js
new file mode 100644
index 00000000..93033663
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldDestructureSet.js
@@ -0,0 +1,7 @@
+import classApplyDescriptorDestructureSet from "./classApplyDescriptorDestructureSet.js";
+import classPrivateFieldGet2 from "./classPrivateFieldGet2.js";
+function _classPrivateFieldDestructureSet(e, t) {
+ var r = classPrivateFieldGet2(t, e);
+ return classApplyDescriptorDestructureSet(e, r);
+}
+export { _classPrivateFieldDestructureSet as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet.js b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet.js
new file mode 100644
index 00000000..ce7ebcb7
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet.js
@@ -0,0 +1,7 @@
+import classApplyDescriptorGet from "./classApplyDescriptorGet.js";
+import classPrivateFieldGet2 from "./classPrivateFieldGet2.js";
+function _classPrivateFieldGet(e, t) {
+ var r = classPrivateFieldGet2(t, e);
+ return classApplyDescriptorGet(e, r);
+}
+export { _classPrivateFieldGet as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet2.js b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet2.js
new file mode 100644
index 00000000..4aa3da6b
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet2.js
@@ -0,0 +1,5 @@
+import assertClassBrand from "./assertClassBrand.js";
+function _classPrivateFieldGet2(s, a) {
+ return s.get(assertClassBrand(s, a));
+}
+export { _classPrivateFieldGet2 as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateFieldInitSpec.js b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldInitSpec.js
new file mode 100644
index 00000000..5dcdbe04
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldInitSpec.js
@@ -0,0 +1,5 @@
+import checkPrivateRedeclaration from "./checkPrivateRedeclaration.js";
+function _classPrivateFieldInitSpec(e, t, a) {
+ checkPrivateRedeclaration(e, t), t.set(e, a);
+}
+export { _classPrivateFieldInitSpec as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseBase.js b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseBase.js
new file mode 100644
index 00000000..4bd662ca
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseBase.js
@@ -0,0 +1,5 @@
+function _classPrivateFieldBase(e, t) {
+ if (!{}.hasOwnProperty.call(e, t)) throw new TypeError("attempted to use private field on non-instance");
+ return e;
+}
+export { _classPrivateFieldBase as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseKey.js b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseKey.js
new file mode 100644
index 00000000..90d21937
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseKey.js
@@ -0,0 +1,5 @@
+var id = 0;
+function _classPrivateFieldKey(e) {
+ return "__private_" + id++ + "_" + e;
+}
+export { _classPrivateFieldKey as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet.js b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet.js
new file mode 100644
index 00000000..b5161bdb
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet.js
@@ -0,0 +1,7 @@
+import classApplyDescriptorSet from "./classApplyDescriptorSet.js";
+import classPrivateFieldGet2 from "./classPrivateFieldGet2.js";
+function _classPrivateFieldSet(e, t, r) {
+ var s = classPrivateFieldGet2(t, e);
+ return classApplyDescriptorSet(e, s, r), r;
+}
+export { _classPrivateFieldSet as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet2.js b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet2.js
new file mode 100644
index 00000000..337b01a4
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet2.js
@@ -0,0 +1,5 @@
+import assertClassBrand from "./assertClassBrand.js";
+function _classPrivateFieldSet2(s, a, r) {
+ return s.set(assertClassBrand(s, a), r), r;
+}
+export { _classPrivateFieldSet2 as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateGetter.js b/node_modules/@babel/runtime/helpers/esm/classPrivateGetter.js
new file mode 100644
index 00000000..ff3e9851
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classPrivateGetter.js
@@ -0,0 +1,5 @@
+import assertClassBrand from "./assertClassBrand.js";
+function _classPrivateGetter(s, r, a) {
+ return a(assertClassBrand(s, r));
+}
+export { _classPrivateGetter as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateMethodGet.js b/node_modules/@babel/runtime/helpers/esm/classPrivateMethodGet.js
new file mode 100644
index 00000000..4832fc6f
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classPrivateMethodGet.js
@@ -0,0 +1,5 @@
+import assertClassBrand from "./assertClassBrand.js";
+function _classPrivateMethodGet(s, a, r) {
+ return assertClassBrand(a, s), r;
+}
+export { _classPrivateMethodGet as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateMethodInitSpec.js b/node_modules/@babel/runtime/helpers/esm/classPrivateMethodInitSpec.js
new file mode 100644
index 00000000..61e23e26
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classPrivateMethodInitSpec.js
@@ -0,0 +1,5 @@
+import checkPrivateRedeclaration from "./checkPrivateRedeclaration.js";
+function _classPrivateMethodInitSpec(e, a) {
+ checkPrivateRedeclaration(e, a), a.add(e);
+}
+export { _classPrivateMethodInitSpec as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateMethodSet.js b/node_modules/@babel/runtime/helpers/esm/classPrivateMethodSet.js
new file mode 100644
index 00000000..d181b513
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classPrivateMethodSet.js
@@ -0,0 +1,4 @@
+function _classPrivateMethodSet() {
+ throw new TypeError("attempted to reassign private method");
+}
+export { _classPrivateMethodSet as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classPrivateSetter.js b/node_modules/@babel/runtime/helpers/esm/classPrivateSetter.js
new file mode 100644
index 00000000..9a80d59b
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classPrivateSetter.js
@@ -0,0 +1,5 @@
+import assertClassBrand from "./assertClassBrand.js";
+function _classPrivateSetter(s, r, a, t) {
+ return r(assertClassBrand(s, a), t), t;
+}
+export { _classPrivateSetter as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldDestructureSet.js b/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldDestructureSet.js
new file mode 100644
index 00000000..747e639d
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldDestructureSet.js
@@ -0,0 +1,7 @@
+import classApplyDescriptorDestructureSet from "./classApplyDescriptorDestructureSet.js";
+import assertClassBrand from "./assertClassBrand.js";
+import classCheckPrivateStaticFieldDescriptor from "./classCheckPrivateStaticFieldDescriptor.js";
+function _classStaticPrivateFieldDestructureSet(t, r, s) {
+ return assertClassBrand(r, t), classCheckPrivateStaticFieldDescriptor(s, "set"), classApplyDescriptorDestructureSet(t, s);
+}
+export { _classStaticPrivateFieldDestructureSet as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecGet.js b/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecGet.js
new file mode 100644
index 00000000..23684b74
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecGet.js
@@ -0,0 +1,7 @@
+import classApplyDescriptorGet from "./classApplyDescriptorGet.js";
+import assertClassBrand from "./assertClassBrand.js";
+import classCheckPrivateStaticFieldDescriptor from "./classCheckPrivateStaticFieldDescriptor.js";
+function _classStaticPrivateFieldSpecGet(t, s, r) {
+ return assertClassBrand(s, t), classCheckPrivateStaticFieldDescriptor(r, "get"), classApplyDescriptorGet(t, r);
+}
+export { _classStaticPrivateFieldSpecGet as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecSet.js b/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecSet.js
new file mode 100644
index 00000000..3a314682
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classStaticPrivateFieldSpecSet.js
@@ -0,0 +1,7 @@
+import classApplyDescriptorSet from "./classApplyDescriptorSet.js";
+import assertClassBrand from "./assertClassBrand.js";
+import classCheckPrivateStaticFieldDescriptor from "./classCheckPrivateStaticFieldDescriptor.js";
+function _classStaticPrivateFieldSpecSet(s, t, r, e) {
+ return assertClassBrand(t, s), classCheckPrivateStaticFieldDescriptor(r, "set"), classApplyDescriptorSet(s, r, e), e;
+}
+export { _classStaticPrivateFieldSpecSet as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodGet.js b/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodGet.js
new file mode 100644
index 00000000..047b177b
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodGet.js
@@ -0,0 +1,5 @@
+import assertClassBrand from "./assertClassBrand.js";
+function _classStaticPrivateMethodGet(s, a, t) {
+ return assertClassBrand(a, s), t;
+}
+export { _classStaticPrivateMethodGet as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodSet.js b/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodSet.js
new file mode 100644
index 00000000..a61ae63e
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/classStaticPrivateMethodSet.js
@@ -0,0 +1,4 @@
+function _classStaticPrivateMethodSet() {
+ throw new TypeError("attempted to set read only static private field");
+}
+export { _classStaticPrivateMethodSet as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/construct.js b/node_modules/@babel/runtime/helpers/esm/construct.js
new file mode 100644
index 00000000..91609ff7
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/construct.js
@@ -0,0 +1,10 @@
+import isNativeReflectConstruct from "./isNativeReflectConstruct.js";
+import setPrototypeOf from "./setPrototypeOf.js";
+function _construct(t, e, r) {
+ if (isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);
+ var o = [null];
+ o.push.apply(o, e);
+ var p = new (t.bind.apply(t, o))();
+ return r && setPrototypeOf(p, r.prototype), p;
+}
+export { _construct as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/createClass.js b/node_modules/@babel/runtime/helpers/esm/createClass.js
new file mode 100644
index 00000000..9b178515
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/createClass.js
@@ -0,0 +1,13 @@
+import toPropertyKey from "./toPropertyKey.js";
+function _defineProperties(e, r) {
+ for (var t = 0; t < r.length; t++) {
+ var o = r[t];
+ o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);
+ }
+}
+function _createClass(e, r, t) {
+ return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", {
+ writable: !1
+ }), e;
+}
+export { _createClass as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js b/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js
new file mode 100644
index 00000000..93b97f91
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js
@@ -0,0 +1,50 @@
+import unsupportedIterableToArray from "./unsupportedIterableToArray.js";
+function _createForOfIteratorHelper(r, e) {
+ var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
+ if (!t) {
+ if (Array.isArray(r) || (t = unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) {
+ t && (r = t);
+ var _n = 0,
+ F = function F() {};
+ return {
+ s: F,
+ n: function n() {
+ return _n >= r.length ? {
+ done: !0
+ } : {
+ done: !1,
+ value: r[_n++]
+ };
+ },
+ e: function e(r) {
+ throw r;
+ },
+ f: F
+ };
+ }
+ throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+ }
+ var o,
+ a = !0,
+ u = !1;
+ return {
+ s: function s() {
+ t = t.call(r);
+ },
+ n: function n() {
+ var r = t.next();
+ return a = r.done, r;
+ },
+ e: function e(r) {
+ u = !0, o = r;
+ },
+ f: function f() {
+ try {
+ a || null == t["return"] || t["return"]();
+ } finally {
+ if (u) throw o;
+ }
+ }
+ };
+}
+export { _createForOfIteratorHelper as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelperLoose.js b/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelperLoose.js
new file mode 100644
index 00000000..3deaae44
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelperLoose.js
@@ -0,0 +1,19 @@
+import unsupportedIterableToArray from "./unsupportedIterableToArray.js";
+function _createForOfIteratorHelperLoose(r, e) {
+ var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
+ if (t) return (t = t.call(r)).next.bind(t);
+ if (Array.isArray(r) || (t = unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) {
+ t && (r = t);
+ var o = 0;
+ return function () {
+ return o >= r.length ? {
+ done: !0
+ } : {
+ done: !1,
+ value: r[o++]
+ };
+ };
+ }
+ throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+}
+export { _createForOfIteratorHelperLoose as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/createSuper.js b/node_modules/@babel/runtime/helpers/esm/createSuper.js
new file mode 100644
index 00000000..dfabf711
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/createSuper.js
@@ -0,0 +1,16 @@
+import getPrototypeOf from "./getPrototypeOf.js";
+import isNativeReflectConstruct from "./isNativeReflectConstruct.js";
+import possibleConstructorReturn from "./possibleConstructorReturn.js";
+function _createSuper(t) {
+ var r = isNativeReflectConstruct();
+ return function () {
+ var e,
+ o = getPrototypeOf(t);
+ if (r) {
+ var s = getPrototypeOf(this).constructor;
+ e = Reflect.construct(o, arguments, s);
+ } else e = o.apply(this, arguments);
+ return possibleConstructorReturn(this, e);
+ };
+}
+export { _createSuper as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/decorate.js b/node_modules/@babel/runtime/helpers/esm/decorate.js
new file mode 100644
index 00000000..f76b6a6a
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/decorate.js
@@ -0,0 +1,250 @@
+import toArray from "./toArray.js";
+import toPropertyKey from "./toPropertyKey.js";
+function _decorate(e, r, t, i) {
+ var o = _getDecoratorsApi();
+ if (i) for (var n = 0; n < i.length; n++) o = i[n](o);
+ var s = r(function (e) {
+ o.initializeInstanceElements(e, a.elements);
+ }, t),
+ a = o.decorateClass(_coalesceClassElements(s.d.map(_createElementDescriptor)), e);
+ return o.initializeClassElements(s.F, a.elements), o.runClassFinishers(s.F, a.finishers);
+}
+function _getDecoratorsApi() {
+ _getDecoratorsApi = function _getDecoratorsApi() {
+ return e;
+ };
+ var e = {
+ elementsDefinitionOrder: [["method"], ["field"]],
+ initializeInstanceElements: function initializeInstanceElements(e, r) {
+ ["method", "field"].forEach(function (t) {
+ r.forEach(function (r) {
+ r.kind === t && "own" === r.placement && this.defineClassElement(e, r);
+ }, this);
+ }, this);
+ },
+ initializeClassElements: function initializeClassElements(e, r) {
+ var t = e.prototype;
+ ["method", "field"].forEach(function (i) {
+ r.forEach(function (r) {
+ var o = r.placement;
+ if (r.kind === i && ("static" === o || "prototype" === o)) {
+ var n = "static" === o ? e : t;
+ this.defineClassElement(n, r);
+ }
+ }, this);
+ }, this);
+ },
+ defineClassElement: function defineClassElement(e, r) {
+ var t = r.descriptor;
+ if ("field" === r.kind) {
+ var i = r.initializer;
+ t = {
+ enumerable: t.enumerable,
+ writable: t.writable,
+ configurable: t.configurable,
+ value: void 0 === i ? void 0 : i.call(e)
+ };
+ }
+ Object.defineProperty(e, r.key, t);
+ },
+ decorateClass: function decorateClass(e, r) {
+ var t = [],
+ i = [],
+ o = {
+ "static": [],
+ prototype: [],
+ own: []
+ };
+ if (e.forEach(function (e) {
+ this.addElementPlacement(e, o);
+ }, this), e.forEach(function (e) {
+ if (!_hasDecorators(e)) return t.push(e);
+ var r = this.decorateElement(e, o);
+ t.push(r.element), t.push.apply(t, r.extras), i.push.apply(i, r.finishers);
+ }, this), !r) return {
+ elements: t,
+ finishers: i
+ };
+ var n = this.decorateConstructor(t, r);
+ return i.push.apply(i, n.finishers), n.finishers = i, n;
+ },
+ addElementPlacement: function addElementPlacement(e, r, t) {
+ var i = r[e.placement];
+ if (!t && -1 !== i.indexOf(e.key)) throw new TypeError("Duplicated element (" + e.key + ")");
+ i.push(e.key);
+ },
+ decorateElement: function decorateElement(e, r) {
+ for (var t = [], i = [], o = e.decorators, n = o.length - 1; n >= 0; n--) {
+ var s = r[e.placement];
+ s.splice(s.indexOf(e.key), 1);
+ var a = this.fromElementDescriptor(e),
+ l = this.toElementFinisherExtras((0, o[n])(a) || a);
+ e = l.element, this.addElementPlacement(e, r), l.finisher && i.push(l.finisher);
+ var c = l.extras;
+ if (c) {
+ for (var p = 0; p < c.length; p++) this.addElementPlacement(c[p], r);
+ t.push.apply(t, c);
+ }
+ }
+ return {
+ element: e,
+ finishers: i,
+ extras: t
+ };
+ },
+ decorateConstructor: function decorateConstructor(e, r) {
+ for (var t = [], i = r.length - 1; i >= 0; i--) {
+ var o = this.fromClassDescriptor(e),
+ n = this.toClassDescriptor((0, r[i])(o) || o);
+ if (void 0 !== n.finisher && t.push(n.finisher), void 0 !== n.elements) {
+ e = n.elements;
+ for (var s = 0; s < e.length - 1; s++) for (var a = s + 1; a < e.length; a++) if (e[s].key === e[a].key && e[s].placement === e[a].placement) throw new TypeError("Duplicated element (" + e[s].key + ")");
+ }
+ }
+ return {
+ elements: e,
+ finishers: t
+ };
+ },
+ fromElementDescriptor: function fromElementDescriptor(e) {
+ var r = {
+ kind: e.kind,
+ key: e.key,
+ placement: e.placement,
+ descriptor: e.descriptor
+ };
+ return Object.defineProperty(r, Symbol.toStringTag, {
+ value: "Descriptor",
+ configurable: !0
+ }), "field" === e.kind && (r.initializer = e.initializer), r;
+ },
+ toElementDescriptors: function toElementDescriptors(e) {
+ if (void 0 !== e) return toArray(e).map(function (e) {
+ var r = this.toElementDescriptor(e);
+ return this.disallowProperty(e, "finisher", "An element descriptor"), this.disallowProperty(e, "extras", "An element descriptor"), r;
+ }, this);
+ },
+ toElementDescriptor: function toElementDescriptor(e) {
+ var r = e.kind + "";
+ if ("method" !== r && "field" !== r) throw new TypeError('An element descriptor\'s .kind property must be either "method" or "field", but a decorator created an element descriptor with .kind "' + r + '"');
+ var t = toPropertyKey(e.key),
+ i = e.placement + "";
+ if ("static" !== i && "prototype" !== i && "own" !== i) throw new TypeError('An element descriptor\'s .placement property must be one of "static", "prototype" or "own", but a decorator created an element descriptor with .placement "' + i + '"');
+ var o = e.descriptor;
+ this.disallowProperty(e, "elements", "An element descriptor");
+ var n = {
+ kind: r,
+ key: t,
+ placement: i,
+ descriptor: Object.assign({}, o)
+ };
+ return "field" !== r ? this.disallowProperty(e, "initializer", "A method descriptor") : (this.disallowProperty(o, "get", "The property descriptor of a field descriptor"), this.disallowProperty(o, "set", "The property descriptor of a field descriptor"), this.disallowProperty(o, "value", "The property descriptor of a field descriptor"), n.initializer = e.initializer), n;
+ },
+ toElementFinisherExtras: function toElementFinisherExtras(e) {
+ return {
+ element: this.toElementDescriptor(e),
+ finisher: _optionalCallableProperty(e, "finisher"),
+ extras: this.toElementDescriptors(e.extras)
+ };
+ },
+ fromClassDescriptor: function fromClassDescriptor(e) {
+ var r = {
+ kind: "class",
+ elements: e.map(this.fromElementDescriptor, this)
+ };
+ return Object.defineProperty(r, Symbol.toStringTag, {
+ value: "Descriptor",
+ configurable: !0
+ }), r;
+ },
+ toClassDescriptor: function toClassDescriptor(e) {
+ var r = e.kind + "";
+ if ("class" !== r) throw new TypeError('A class descriptor\'s .kind property must be "class", but a decorator created a class descriptor with .kind "' + r + '"');
+ this.disallowProperty(e, "key", "A class descriptor"), this.disallowProperty(e, "placement", "A class descriptor"), this.disallowProperty(e, "descriptor", "A class descriptor"), this.disallowProperty(e, "initializer", "A class descriptor"), this.disallowProperty(e, "extras", "A class descriptor");
+ var t = _optionalCallableProperty(e, "finisher");
+ return {
+ elements: this.toElementDescriptors(e.elements),
+ finisher: t
+ };
+ },
+ runClassFinishers: function runClassFinishers(e, r) {
+ for (var t = 0; t < r.length; t++) {
+ var i = (0, r[t])(e);
+ if (void 0 !== i) {
+ if ("function" != typeof i) throw new TypeError("Finishers must return a constructor.");
+ e = i;
+ }
+ }
+ return e;
+ },
+ disallowProperty: function disallowProperty(e, r, t) {
+ if (void 0 !== e[r]) throw new TypeError(t + " can't have a ." + r + " property.");
+ }
+ };
+ return e;
+}
+function _createElementDescriptor(e) {
+ var r,
+ t = toPropertyKey(e.key);
+ "method" === e.kind ? r = {
+ value: e.value,
+ writable: !0,
+ configurable: !0,
+ enumerable: !1
+ } : "get" === e.kind ? r = {
+ get: e.value,
+ configurable: !0,
+ enumerable: !1
+ } : "set" === e.kind ? r = {
+ set: e.value,
+ configurable: !0,
+ enumerable: !1
+ } : "field" === e.kind && (r = {
+ configurable: !0,
+ writable: !0,
+ enumerable: !0
+ });
+ var i = {
+ kind: "field" === e.kind ? "field" : "method",
+ key: t,
+ placement: e["static"] ? "static" : "field" === e.kind ? "own" : "prototype",
+ descriptor: r
+ };
+ return e.decorators && (i.decorators = e.decorators), "field" === e.kind && (i.initializer = e.value), i;
+}
+function _coalesceGetterSetter(e, r) {
+ void 0 !== e.descriptor.get ? r.descriptor.get = e.descriptor.get : r.descriptor.set = e.descriptor.set;
+}
+function _coalesceClassElements(e) {
+ for (var r = [], isSameElement = function isSameElement(e) {
+ return "method" === e.kind && e.key === o.key && e.placement === o.placement;
+ }, t = 0; t < e.length; t++) {
+ var i,
+ o = e[t];
+ if ("method" === o.kind && (i = r.find(isSameElement))) {
+ if (_isDataDescriptor(o.descriptor) || _isDataDescriptor(i.descriptor)) {
+ if (_hasDecorators(o) || _hasDecorators(i)) throw new ReferenceError("Duplicated methods (" + o.key + ") can't be decorated.");
+ i.descriptor = o.descriptor;
+ } else {
+ if (_hasDecorators(o)) {
+ if (_hasDecorators(i)) throw new ReferenceError("Decorators can't be placed on different accessors with for the same property (" + o.key + ").");
+ i.decorators = o.decorators;
+ }
+ _coalesceGetterSetter(o, i);
+ }
+ } else r.push(o);
+ }
+ return r;
+}
+function _hasDecorators(e) {
+ return e.decorators && e.decorators.length;
+}
+function _isDataDescriptor(e) {
+ return void 0 !== e && !(void 0 === e.value && void 0 === e.writable);
+}
+function _optionalCallableProperty(e, r) {
+ var t = e[r];
+ if (void 0 !== t && "function" != typeof t) throw new TypeError("Expected '" + r + "' to be a function");
+ return t;
+}
+export { _decorate as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/defaults.js b/node_modules/@babel/runtime/helpers/esm/defaults.js
new file mode 100644
index 00000000..d3041a3d
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/defaults.js
@@ -0,0 +1,9 @@
+function _defaults(e, r) {
+ for (var t = Object.getOwnPropertyNames(r), o = 0; o < t.length; o++) {
+ var n = t[o],
+ a = Object.getOwnPropertyDescriptor(r, n);
+ a && a.configurable && void 0 === e[n] && Object.defineProperty(e, n, a);
+ }
+ return e;
+}
+export { _defaults as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/defineAccessor.js b/node_modules/@babel/runtime/helpers/esm/defineAccessor.js
new file mode 100644
index 00000000..a8292dea
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/defineAccessor.js
@@ -0,0 +1,8 @@
+function _defineAccessor(e, r, n, t) {
+ var c = {
+ configurable: !0,
+ enumerable: !0
+ };
+ return c[e] = t, Object.defineProperty(r, n, c);
+}
+export { _defineAccessor as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/defineEnumerableProperties.js b/node_modules/@babel/runtime/helpers/esm/defineEnumerableProperties.js
new file mode 100644
index 00000000..3d31d980
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/defineEnumerableProperties.js
@@ -0,0 +1,12 @@
+function _defineEnumerableProperties(e, r) {
+ for (var t in r) {
+ var n = r[t];
+ n.configurable = n.enumerable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, t, n);
+ }
+ if (Object.getOwnPropertySymbols) for (var a = Object.getOwnPropertySymbols(r), b = 0; b < a.length; b++) {
+ var i = a[b];
+ (n = r[i]).configurable = n.enumerable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, i, n);
+ }
+ return e;
+}
+export { _defineEnumerableProperties as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/defineProperty.js b/node_modules/@babel/runtime/helpers/esm/defineProperty.js
new file mode 100644
index 00000000..05ec32b7
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/defineProperty.js
@@ -0,0 +1,10 @@
+import toPropertyKey from "./toPropertyKey.js";
+function _defineProperty(e, r, t) {
+ return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
+ value: t,
+ enumerable: !0,
+ configurable: !0,
+ writable: !0
+ }) : e[r] = t, e;
+}
+export { _defineProperty as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/dispose.js b/node_modules/@babel/runtime/helpers/esm/dispose.js
new file mode 100644
index 00000000..a87ab202
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/dispose.js
@@ -0,0 +1,28 @@
+function dispose_SuppressedError(r, e) {
+ return "undefined" != typeof SuppressedError ? dispose_SuppressedError = SuppressedError : (dispose_SuppressedError = function dispose_SuppressedError(r, e) {
+ this.suppressed = e, this.error = r, this.stack = Error().stack;
+ }, dispose_SuppressedError.prototype = Object.create(Error.prototype, {
+ constructor: {
+ value: dispose_SuppressedError,
+ writable: !0,
+ configurable: !0
+ }
+ })), new dispose_SuppressedError(r, e);
+}
+function _dispose(r, e, s) {
+ function next() {
+ for (; r.length > 0;) try {
+ var o = r.pop(),
+ p = o.d.call(o.v);
+ if (o.a) return Promise.resolve(p).then(next, err);
+ } catch (r) {
+ return err(r);
+ }
+ if (s) throw e;
+ }
+ function err(r) {
+ return e = s ? new dispose_SuppressedError(e, r) : r, s = !0, next();
+ }
+ return next();
+}
+export { _dispose as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/extends.js b/node_modules/@babel/runtime/helpers/esm/extends.js
new file mode 100644
index 00000000..53f118ca
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/extends.js
@@ -0,0 +1,10 @@
+function _extends() {
+ return _extends = Object.assign ? Object.assign.bind() : function (n) {
+ for (var e = 1; e < arguments.length; e++) {
+ var t = arguments[e];
+ for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
+ }
+ return n;
+ }, _extends.apply(null, arguments);
+}
+export { _extends as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/get.js b/node_modules/@babel/runtime/helpers/esm/get.js
new file mode 100644
index 00000000..8124bc02
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/get.js
@@ -0,0 +1,11 @@
+import superPropBase from "./superPropBase.js";
+function _get() {
+ return _get = "undefined" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) {
+ var p = superPropBase(e, t);
+ if (p) {
+ var n = Object.getOwnPropertyDescriptor(p, t);
+ return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value;
+ }
+ }, _get.apply(null, arguments);
+}
+export { _get as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js b/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js
new file mode 100644
index 00000000..9073c456
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js
@@ -0,0 +1,6 @@
+function _getPrototypeOf(t) {
+ return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {
+ return t.__proto__ || Object.getPrototypeOf(t);
+ }, _getPrototypeOf(t);
+}
+export { _getPrototypeOf as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/identity.js b/node_modules/@babel/runtime/helpers/esm/identity.js
new file mode 100644
index 00000000..6b564ac5
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/identity.js
@@ -0,0 +1,4 @@
+function _identity(t) {
+ return t;
+}
+export { _identity as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/importDeferProxy.js b/node_modules/@babel/runtime/helpers/esm/importDeferProxy.js
new file mode 100644
index 00000000..6d35b526
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/importDeferProxy.js
@@ -0,0 +1,27 @@
+function _importDeferProxy(e) {
+ var t = null,
+ constValue = function constValue(e) {
+ return function () {
+ return e;
+ };
+ },
+ proxy = function proxy(r) {
+ return function (n, o, f) {
+ return null === t && (t = e()), r(t, o, f);
+ };
+ };
+ return new Proxy({}, {
+ defineProperty: constValue(!1),
+ deleteProperty: constValue(!1),
+ get: proxy(Reflect.get),
+ getOwnPropertyDescriptor: proxy(Reflect.getOwnPropertyDescriptor),
+ getPrototypeOf: constValue(null),
+ isExtensible: constValue(!1),
+ has: proxy(Reflect.has),
+ ownKeys: proxy(Reflect.ownKeys),
+ preventExtensions: constValue(!0),
+ set: constValue(!1),
+ setPrototypeOf: constValue(!1)
+ });
+}
+export { _importDeferProxy as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/inherits.js b/node_modules/@babel/runtime/helpers/esm/inherits.js
new file mode 100644
index 00000000..78f6e4e3
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/inherits.js
@@ -0,0 +1,14 @@
+import setPrototypeOf from "./setPrototypeOf.js";
+function _inherits(t, e) {
+ if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
+ t.prototype = Object.create(e && e.prototype, {
+ constructor: {
+ value: t,
+ writable: !0,
+ configurable: !0
+ }
+ }), Object.defineProperty(t, "prototype", {
+ writable: !1
+ }), e && setPrototypeOf(t, e);
+}
+export { _inherits as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js b/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js
new file mode 100644
index 00000000..0bd13306
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js
@@ -0,0 +1,5 @@
+import setPrototypeOf from "./setPrototypeOf.js";
+function _inheritsLoose(t, o) {
+ t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);
+}
+export { _inheritsLoose as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/initializerDefineProperty.js b/node_modules/@babel/runtime/helpers/esm/initializerDefineProperty.js
new file mode 100644
index 00000000..68bcc2cd
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/initializerDefineProperty.js
@@ -0,0 +1,9 @@
+function _initializerDefineProperty(e, i, r, l) {
+ r && Object.defineProperty(e, i, {
+ enumerable: r.enumerable,
+ configurable: r.configurable,
+ writable: r.writable,
+ value: r.initializer ? r.initializer.call(l) : void 0
+ });
+}
+export { _initializerDefineProperty as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/initializerWarningHelper.js b/node_modules/@babel/runtime/helpers/esm/initializerWarningHelper.js
new file mode 100644
index 00000000..0a658e39
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/initializerWarningHelper.js
@@ -0,0 +1,4 @@
+function _initializerWarningHelper(r, e) {
+ throw Error("Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.");
+}
+export { _initializerWarningHelper as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/instanceof.js b/node_modules/@babel/runtime/helpers/esm/instanceof.js
new file mode 100644
index 00000000..316539ee
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/instanceof.js
@@ -0,0 +1,4 @@
+function _instanceof(n, e) {
+ return null != e && "undefined" != typeof Symbol && e[Symbol.hasInstance] ? !!e[Symbol.hasInstance](n) : n instanceof e;
+}
+export { _instanceof as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/interopRequireDefault.js b/node_modules/@babel/runtime/helpers/esm/interopRequireDefault.js
new file mode 100644
index 00000000..365d2481
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/interopRequireDefault.js
@@ -0,0 +1,6 @@
+function _interopRequireDefault(e) {
+ return e && e.__esModule ? e : {
+ "default": e
+ };
+}
+export { _interopRequireDefault as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/interopRequireWildcard.js b/node_modules/@babel/runtime/helpers/esm/interopRequireWildcard.js
new file mode 100644
index 00000000..e190f1e2
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/interopRequireWildcard.js
@@ -0,0 +1,27 @@
+import _typeof from "./typeof.js";
+function _getRequireWildcardCache(e) {
+ if ("function" != typeof WeakMap) return null;
+ var r = new WeakMap(),
+ t = new WeakMap();
+ return (_getRequireWildcardCache = function _getRequireWildcardCache(e) {
+ return e ? t : r;
+ })(e);
+}
+function _interopRequireWildcard(e, r) {
+ if (!r && e && e.__esModule) return e;
+ if (null === e || "object" != _typeof(e) && "function" != typeof e) return {
+ "default": e
+ };
+ var t = _getRequireWildcardCache(r);
+ if (t && t.has(e)) return t.get(e);
+ var n = {
+ __proto__: null
+ },
+ a = Object.defineProperty && Object.getOwnPropertyDescriptor;
+ for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
+ var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
+ i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];
+ }
+ return n["default"] = e, t && t.set(e, n), n;
+}
+export { _interopRequireWildcard as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js b/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js
new file mode 100644
index 00000000..0cfe276f
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js
@@ -0,0 +1,8 @@
+function _isNativeFunction(t) {
+ try {
+ return -1 !== Function.toString.call(t).indexOf("[native code]");
+ } catch (n) {
+ return "function" == typeof t;
+ }
+}
+export { _isNativeFunction as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js b/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js
new file mode 100644
index 00000000..0eb5e395
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js
@@ -0,0 +1,9 @@
+function _isNativeReflectConstruct() {
+ try {
+ var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
+ } catch (t) {}
+ return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {
+ return !!t;
+ })();
+}
+export { _isNativeReflectConstruct as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/iterableToArray.js b/node_modules/@babel/runtime/helpers/esm/iterableToArray.js
new file mode 100644
index 00000000..b7de3396
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/iterableToArray.js
@@ -0,0 +1,4 @@
+function _iterableToArray(r) {
+ if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r);
+}
+export { _iterableToArray as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js b/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js
new file mode 100644
index 00000000..473f0678
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js
@@ -0,0 +1,28 @@
+function _iterableToArrayLimit(r, l) {
+ var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
+ if (null != t) {
+ var e,
+ n,
+ i,
+ u,
+ a = [],
+ f = !0,
+ o = !1;
+ try {
+ if (i = (t = t.call(r)).next, 0 === l) {
+ if (Object(t) !== t) return;
+ f = !1;
+ } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
+ } catch (r) {
+ o = !0, n = r;
+ } finally {
+ try {
+ if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
+ } finally {
+ if (o) throw n;
+ }
+ }
+ return a;
+ }
+}
+export { _iterableToArrayLimit as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimitLoose.js b/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimitLoose.js
new file mode 100644
index 00000000..2afdb5ce
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimitLoose.js
@@ -0,0 +1,10 @@
+function _iterableToArrayLimitLoose(e, r) {
+ var t = e && ("undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"]);
+ if (null != t) {
+ var o,
+ l = [];
+ for (t = t.call(e); e.length < r && !(o = t.next()).done;) l.push(o.value);
+ return l;
+ }
+}
+export { _iterableToArrayLimitLoose as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/jsx.js b/node_modules/@babel/runtime/helpers/esm/jsx.js
new file mode 100644
index 00000000..a120e5b6
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/jsx.js
@@ -0,0 +1,22 @@
+var REACT_ELEMENT_TYPE;
+function _createRawReactElement(e, r, E, l) {
+ REACT_ELEMENT_TYPE || (REACT_ELEMENT_TYPE = "function" == typeof Symbol && Symbol["for"] && Symbol["for"]("react.element") || 60103);
+ var o = e && e.defaultProps,
+ n = arguments.length - 3;
+ if (r || 0 === n || (r = {
+ children: void 0
+ }), 1 === n) r.children = l;else if (n > 1) {
+ for (var t = Array(n), f = 0; f < n; f++) t[f] = arguments[f + 3];
+ r.children = t;
+ }
+ if (r && o) for (var i in o) void 0 === r[i] && (r[i] = o[i]);else r || (r = o || {});
+ return {
+ $$typeof: REACT_ELEMENT_TYPE,
+ type: e,
+ key: void 0 === E ? null : "" + E,
+ ref: null,
+ props: r,
+ _owner: null
+ };
+}
+export { _createRawReactElement as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/maybeArrayLike.js b/node_modules/@babel/runtime/helpers/esm/maybeArrayLike.js
new file mode 100644
index 00000000..527c682b
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/maybeArrayLike.js
@@ -0,0 +1,9 @@
+import arrayLikeToArray from "./arrayLikeToArray.js";
+function _maybeArrayLike(r, a, e) {
+ if (a && !Array.isArray(a) && "number" == typeof a.length) {
+ var y = a.length;
+ return arrayLikeToArray(a, void 0 !== e && e < y ? e : y);
+ }
+ return r(a, e);
+}
+export { _maybeArrayLike as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/newArrowCheck.js b/node_modules/@babel/runtime/helpers/esm/newArrowCheck.js
new file mode 100644
index 00000000..5f70e0d7
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/newArrowCheck.js
@@ -0,0 +1,4 @@
+function _newArrowCheck(n, r) {
+ if (n !== r) throw new TypeError("Cannot instantiate an arrow function");
+}
+export { _newArrowCheck as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js b/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js
new file mode 100644
index 00000000..9050250b
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js
@@ -0,0 +1,4 @@
+function _nonIterableRest() {
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+}
+export { _nonIterableRest as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js b/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js
new file mode 100644
index 00000000..fb03235a
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js
@@ -0,0 +1,4 @@
+function _nonIterableSpread() {
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+}
+export { _nonIterableSpread as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/nullishReceiverError.js b/node_modules/@babel/runtime/helpers/esm/nullishReceiverError.js
new file mode 100644
index 00000000..d8c30604
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/nullishReceiverError.js
@@ -0,0 +1,4 @@
+function _nullishReceiverError(r) {
+ throw new TypeError("Cannot set property of null or undefined.");
+}
+export { _nullishReceiverError as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js b/node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js
new file mode 100644
index 00000000..a92eac8f
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js
@@ -0,0 +1,4 @@
+function _objectDestructuringEmpty(t) {
+ if (null == t) throw new TypeError("Cannot destructure " + t);
+}
+export { _objectDestructuringEmpty as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/objectSpread.js b/node_modules/@babel/runtime/helpers/esm/objectSpread.js
new file mode 100644
index 00000000..0f82f069
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/objectSpread.js
@@ -0,0 +1,14 @@
+import defineProperty from "./defineProperty.js";
+function _objectSpread(e) {
+ for (var r = 1; r < arguments.length; r++) {
+ var t = null != arguments[r] ? Object(arguments[r]) : {},
+ o = Object.keys(t);
+ "function" == typeof Object.getOwnPropertySymbols && o.push.apply(o, Object.getOwnPropertySymbols(t).filter(function (e) {
+ return Object.getOwnPropertyDescriptor(t, e).enumerable;
+ })), o.forEach(function (r) {
+ defineProperty(e, r, t[r]);
+ });
+ }
+ return e;
+}
+export { _objectSpread as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/objectSpread2.js b/node_modules/@babel/runtime/helpers/esm/objectSpread2.js
new file mode 100644
index 00000000..0035bc76
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/objectSpread2.js
@@ -0,0 +1,23 @@
+import defineProperty from "./defineProperty.js";
+function ownKeys(e, r) {
+ var t = Object.keys(e);
+ if (Object.getOwnPropertySymbols) {
+ var o = Object.getOwnPropertySymbols(e);
+ r && (o = o.filter(function (r) {
+ return Object.getOwnPropertyDescriptor(e, r).enumerable;
+ })), t.push.apply(t, o);
+ }
+ return t;
+}
+function _objectSpread2(e) {
+ for (var r = 1; r < arguments.length; r++) {
+ var t = null != arguments[r] ? arguments[r] : {};
+ r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {
+ defineProperty(e, r, t[r]);
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
+ Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
+ });
+ }
+ return e;
+}
+export { _objectSpread2 as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js b/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js
new file mode 100644
index 00000000..8e8e4753
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js
@@ -0,0 +1,13 @@
+import objectWithoutPropertiesLoose from "./objectWithoutPropertiesLoose.js";
+function _objectWithoutProperties(e, t) {
+ if (null == e) return {};
+ var o,
+ r,
+ i = objectWithoutPropertiesLoose(e, t);
+ if (Object.getOwnPropertySymbols) {
+ var n = Object.getOwnPropertySymbols(e);
+ for (r = 0; r < n.length; r++) o = n[r], t.indexOf(o) >= 0 || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);
+ }
+ return i;
+}
+export { _objectWithoutProperties as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js b/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js
new file mode 100644
index 00000000..09a8ef69
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js
@@ -0,0 +1,10 @@
+function _objectWithoutPropertiesLoose(r, e) {
+ if (null == r) return {};
+ var t = {};
+ for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
+ if (e.indexOf(n) >= 0) continue;
+ t[n] = r[n];
+ }
+ return t;
+}
+export { _objectWithoutPropertiesLoose as default };
\ No newline at end of file
diff --git a/project starter code/node_modules/@babel/runtime/helpers/esm/package.json b/node_modules/@babel/runtime/helpers/esm/package.json
similarity index 100%
rename from project starter code/node_modules/@babel/runtime/helpers/esm/package.json
rename to node_modules/@babel/runtime/helpers/esm/package.json
diff --git a/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js b/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js
new file mode 100644
index 00000000..d84e1e6f
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js
@@ -0,0 +1,8 @@
+import _typeof from "./typeof.js";
+import assertThisInitialized from "./assertThisInitialized.js";
+function _possibleConstructorReturn(t, e) {
+ if (e && ("object" == _typeof(e) || "function" == typeof e)) return e;
+ if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined");
+ return assertThisInitialized(t);
+}
+export { _possibleConstructorReturn as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/readOnlyError.js b/node_modules/@babel/runtime/helpers/esm/readOnlyError.js
new file mode 100644
index 00000000..fcc3e339
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/readOnlyError.js
@@ -0,0 +1,4 @@
+function _readOnlyError(r) {
+ throw new TypeError('"' + r + '" is read-only');
+}
+export { _readOnlyError as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js b/node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js
new file mode 100644
index 00000000..19c78cde
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js
@@ -0,0 +1,304 @@
+import _typeof from "./typeof.js";
+function _regeneratorRuntime() {
+ "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
+ _regeneratorRuntime = function _regeneratorRuntime() {
+ return e;
+ };
+ var t,
+ e = {},
+ r = Object.prototype,
+ n = r.hasOwnProperty,
+ o = Object.defineProperty || function (t, e, r) {
+ t[e] = r.value;
+ },
+ i = "function" == typeof Symbol ? Symbol : {},
+ a = i.iterator || "@@iterator",
+ c = i.asyncIterator || "@@asyncIterator",
+ u = i.toStringTag || "@@toStringTag";
+ function define(t, e, r) {
+ return Object.defineProperty(t, e, {
+ value: r,
+ enumerable: !0,
+ configurable: !0,
+ writable: !0
+ }), t[e];
+ }
+ try {
+ define({}, "");
+ } catch (t) {
+ define = function define(t, e, r) {
+ return t[e] = r;
+ };
+ }
+ function wrap(t, e, r, n) {
+ var i = e && e.prototype instanceof Generator ? e : Generator,
+ a = Object.create(i.prototype),
+ c = new Context(n || []);
+ return o(a, "_invoke", {
+ value: makeInvokeMethod(t, r, c)
+ }), a;
+ }
+ function tryCatch(t, e, r) {
+ try {
+ return {
+ type: "normal",
+ arg: t.call(e, r)
+ };
+ } catch (t) {
+ return {
+ type: "throw",
+ arg: t
+ };
+ }
+ }
+ e.wrap = wrap;
+ var h = "suspendedStart",
+ l = "suspendedYield",
+ f = "executing",
+ s = "completed",
+ y = {};
+ function Generator() {}
+ function GeneratorFunction() {}
+ function GeneratorFunctionPrototype() {}
+ var p = {};
+ define(p, a, function () {
+ return this;
+ });
+ var d = Object.getPrototypeOf,
+ v = d && d(d(values([])));
+ v && v !== r && n.call(v, a) && (p = v);
+ var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);
+ function defineIteratorMethods(t) {
+ ["next", "throw", "return"].forEach(function (e) {
+ define(t, e, function (t) {
+ return this._invoke(e, t);
+ });
+ });
+ }
+ function AsyncIterator(t, e) {
+ function invoke(r, o, i, a) {
+ var c = tryCatch(t[r], t, o);
+ if ("throw" !== c.type) {
+ var u = c.arg,
+ h = u.value;
+ return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) {
+ invoke("next", t, i, a);
+ }, function (t) {
+ invoke("throw", t, i, a);
+ }) : e.resolve(h).then(function (t) {
+ u.value = t, i(u);
+ }, function (t) {
+ return invoke("throw", t, i, a);
+ });
+ }
+ a(c.arg);
+ }
+ var r;
+ o(this, "_invoke", {
+ value: function value(t, n) {
+ function callInvokeWithMethodAndArg() {
+ return new e(function (e, r) {
+ invoke(t, n, e, r);
+ });
+ }
+ return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
+ }
+ });
+ }
+ function makeInvokeMethod(e, r, n) {
+ var o = h;
+ return function (i, a) {
+ if (o === f) throw Error("Generator is already running");
+ if (o === s) {
+ if ("throw" === i) throw a;
+ return {
+ value: t,
+ done: !0
+ };
+ }
+ for (n.method = i, n.arg = a;;) {
+ var c = n.delegate;
+ if (c) {
+ var u = maybeInvokeDelegate(c, n);
+ if (u) {
+ if (u === y) continue;
+ return u;
+ }
+ }
+ if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) {
+ if (o === h) throw o = s, n.arg;
+ n.dispatchException(n.arg);
+ } else "return" === n.method && n.abrupt("return", n.arg);
+ o = f;
+ var p = tryCatch(e, r, n);
+ if ("normal" === p.type) {
+ if (o = n.done ? s : l, p.arg === y) continue;
+ return {
+ value: p.arg,
+ done: n.done
+ };
+ }
+ "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg);
+ }
+ };
+ }
+ function maybeInvokeDelegate(e, r) {
+ var n = r.method,
+ o = e.iterator[n];
+ if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y;
+ var i = tryCatch(o, e.iterator, r.arg);
+ if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y;
+ var a = i.arg;
+ return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y);
+ }
+ function pushTryEntry(t) {
+ var e = {
+ tryLoc: t[0]
+ };
+ 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);
+ }
+ function resetTryEntry(t) {
+ var e = t.completion || {};
+ e.type = "normal", delete e.arg, t.completion = e;
+ }
+ function Context(t) {
+ this.tryEntries = [{
+ tryLoc: "root"
+ }], t.forEach(pushTryEntry, this), this.reset(!0);
+ }
+ function values(e) {
+ if (e || "" === e) {
+ var r = e[a];
+ if (r) return r.call(e);
+ if ("function" == typeof e.next) return e;
+ if (!isNaN(e.length)) {
+ var o = -1,
+ i = function next() {
+ for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;
+ return next.value = t, next.done = !0, next;
+ };
+ return i.next = i;
+ }
+ }
+ throw new TypeError(_typeof(e) + " is not iterable");
+ }
+ return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", {
+ value: GeneratorFunctionPrototype,
+ configurable: !0
+ }), o(GeneratorFunctionPrototype, "constructor", {
+ value: GeneratorFunction,
+ configurable: !0
+ }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) {
+ var e = "function" == typeof t && t.constructor;
+ return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name));
+ }, e.mark = function (t) {
+ return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t;
+ }, e.awrap = function (t) {
+ return {
+ __await: t
+ };
+ }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {
+ return this;
+ }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {
+ void 0 === i && (i = Promise);
+ var a = new AsyncIterator(wrap(t, r, n, o), i);
+ return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {
+ return t.done ? t.value : a.next();
+ });
+ }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () {
+ return this;
+ }), define(g, "toString", function () {
+ return "[object Generator]";
+ }), e.keys = function (t) {
+ var e = Object(t),
+ r = [];
+ for (var n in e) r.push(n);
+ return r.reverse(), function next() {
+ for (; r.length;) {
+ var t = r.pop();
+ if (t in e) return next.value = t, next.done = !1, next;
+ }
+ return next.done = !0, next;
+ };
+ }, e.values = values, Context.prototype = {
+ constructor: Context,
+ reset: function reset(e) {
+ if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);
+ },
+ stop: function stop() {
+ this.done = !0;
+ var t = this.tryEntries[0].completion;
+ if ("throw" === t.type) throw t.arg;
+ return this.rval;
+ },
+ dispatchException: function dispatchException(e) {
+ if (this.done) throw e;
+ var r = this;
+ function handle(n, o) {
+ return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o;
+ }
+ for (var o = this.tryEntries.length - 1; o >= 0; --o) {
+ var i = this.tryEntries[o],
+ a = i.completion;
+ if ("root" === i.tryLoc) return handle("end");
+ if (i.tryLoc <= this.prev) {
+ var c = n.call(i, "catchLoc"),
+ u = n.call(i, "finallyLoc");
+ if (c && u) {
+ if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);
+ if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
+ } else if (c) {
+ if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);
+ } else {
+ if (!u) throw Error("try statement without catch or finally");
+ if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
+ }
+ }
+ }
+ },
+ abrupt: function abrupt(t, e) {
+ for (var r = this.tryEntries.length - 1; r >= 0; --r) {
+ var o = this.tryEntries[r];
+ if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) {
+ var i = o;
+ break;
+ }
+ }
+ i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);
+ var a = i ? i.completion : {};
+ return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a);
+ },
+ complete: function complete(t, e) {
+ if ("throw" === t.type) throw t.arg;
+ return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y;
+ },
+ finish: function finish(t) {
+ for (var e = this.tryEntries.length - 1; e >= 0; --e) {
+ var r = this.tryEntries[e];
+ if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;
+ }
+ },
+ "catch": function _catch(t) {
+ for (var e = this.tryEntries.length - 1; e >= 0; --e) {
+ var r = this.tryEntries[e];
+ if (r.tryLoc === t) {
+ var n = r.completion;
+ if ("throw" === n.type) {
+ var o = n.arg;
+ resetTryEntry(r);
+ }
+ return o;
+ }
+ }
+ throw Error("illegal catch attempt");
+ },
+ delegateYield: function delegateYield(e, r, n) {
+ return this.delegate = {
+ iterator: values(e),
+ resultName: r,
+ nextLoc: n
+ }, "next" === this.method && (this.arg = t), y;
+ }
+ }, e;
+}
+export { _regeneratorRuntime as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/set.js b/node_modules/@babel/runtime/helpers/esm/set.js
new file mode 100644
index 00000000..ed0a8039
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/set.js
@@ -0,0 +1,22 @@
+import superPropBase from "./superPropBase.js";
+import defineProperty from "./defineProperty.js";
+function set(e, r, t, o) {
+ return set = "undefined" != typeof Reflect && Reflect.set ? Reflect.set : function (e, r, t, o) {
+ var f,
+ i = superPropBase(e, r);
+ if (i) {
+ if ((f = Object.getOwnPropertyDescriptor(i, r)).set) return f.set.call(o, t), !0;
+ if (!f.writable) return !1;
+ }
+ if (f = Object.getOwnPropertyDescriptor(o, r)) {
+ if (!f.writable) return !1;
+ f.value = t, Object.defineProperty(o, r, f);
+ } else defineProperty(o, r, t);
+ return !0;
+ }, set(e, r, t, o);
+}
+function _set(e, r, t, o, f) {
+ if (!set(e, r, t, o || e) && f) throw new TypeError("failed to set property");
+ return t;
+}
+export { _set as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/setFunctionName.js b/node_modules/@babel/runtime/helpers/esm/setFunctionName.js
new file mode 100644
index 00000000..82213cea
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/setFunctionName.js
@@ -0,0 +1,12 @@
+import _typeof from "./typeof.js";
+function setFunctionName(e, t, n) {
+ "symbol" == _typeof(t) && (t = (t = t.description) ? "[" + t + "]" : "");
+ try {
+ Object.defineProperty(e, "name", {
+ configurable: !0,
+ value: n ? n + " " + t : t
+ });
+ } catch (e) {}
+ return e;
+}
+export { setFunctionName as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js b/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js
new file mode 100644
index 00000000..c30983c9
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js
@@ -0,0 +1,6 @@
+function _setPrototypeOf(t, e) {
+ return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {
+ return t.__proto__ = e, t;
+ }, _setPrototypeOf(t, e);
+}
+export { _setPrototypeOf as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/skipFirstGeneratorNext.js b/node_modules/@babel/runtime/helpers/esm/skipFirstGeneratorNext.js
new file mode 100644
index 00000000..41d5738c
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/skipFirstGeneratorNext.js
@@ -0,0 +1,7 @@
+function _skipFirstGeneratorNext(t) {
+ return function () {
+ var r = t.apply(this, arguments);
+ return r.next(), r;
+ };
+}
+export { _skipFirstGeneratorNext as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/slicedToArray.js b/node_modules/@babel/runtime/helpers/esm/slicedToArray.js
new file mode 100644
index 00000000..c044c2a6
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/slicedToArray.js
@@ -0,0 +1,8 @@
+import arrayWithHoles from "./arrayWithHoles.js";
+import iterableToArrayLimit from "./iterableToArrayLimit.js";
+import unsupportedIterableToArray from "./unsupportedIterableToArray.js";
+import nonIterableRest from "./nonIterableRest.js";
+function _slicedToArray(r, e) {
+ return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();
+}
+export { _slicedToArray as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/slicedToArrayLoose.js b/node_modules/@babel/runtime/helpers/esm/slicedToArrayLoose.js
new file mode 100644
index 00000000..3ab0d3fe
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/slicedToArrayLoose.js
@@ -0,0 +1,8 @@
+import arrayWithHoles from "./arrayWithHoles.js";
+import iterableToArrayLimitLoose from "./iterableToArrayLimitLoose.js";
+import unsupportedIterableToArray from "./unsupportedIterableToArray.js";
+import nonIterableRest from "./nonIterableRest.js";
+function _slicedToArrayLoose(r, e) {
+ return arrayWithHoles(r) || iterableToArrayLimitLoose(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();
+}
+export { _slicedToArrayLoose as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/superPropBase.js b/node_modules/@babel/runtime/helpers/esm/superPropBase.js
new file mode 100644
index 00000000..a5fa3861
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/superPropBase.js
@@ -0,0 +1,6 @@
+import getPrototypeOf from "./getPrototypeOf.js";
+function _superPropBase(t, o) {
+ for (; !{}.hasOwnProperty.call(t, o) && null !== (t = getPrototypeOf(t)););
+ return t;
+}
+export { _superPropBase as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js b/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js
new file mode 100644
index 00000000..3d842cda
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js
@@ -0,0 +1,8 @@
+function _taggedTemplateLiteral(e, t) {
+ return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, {
+ raw: {
+ value: Object.freeze(t)
+ }
+ }));
+}
+export { _taggedTemplateLiteral as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteralLoose.js b/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteralLoose.js
new file mode 100644
index 00000000..741aeb85
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteralLoose.js
@@ -0,0 +1,4 @@
+function _taggedTemplateLiteralLoose(e, t) {
+ return t || (t = e.slice(0)), e.raw = t, e;
+}
+export { _taggedTemplateLiteralLoose as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/tdz.js b/node_modules/@babel/runtime/helpers/esm/tdz.js
new file mode 100644
index 00000000..58df493f
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/tdz.js
@@ -0,0 +1,4 @@
+function _tdzError(e) {
+ throw new ReferenceError(e + " is not defined - temporal dead zone");
+}
+export { _tdzError as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/temporalRef.js b/node_modules/@babel/runtime/helpers/esm/temporalRef.js
new file mode 100644
index 00000000..8dbf014d
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/temporalRef.js
@@ -0,0 +1,6 @@
+import temporalUndefined from "./temporalUndefined.js";
+import tdz from "./tdz.js";
+function _temporalRef(r, e) {
+ return r === temporalUndefined ? tdz(e) : r;
+}
+export { _temporalRef as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/temporalUndefined.js b/node_modules/@babel/runtime/helpers/esm/temporalUndefined.js
new file mode 100644
index 00000000..2ec0b0da
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/temporalUndefined.js
@@ -0,0 +1,2 @@
+function _temporalUndefined() {}
+export { _temporalUndefined as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/toArray.js b/node_modules/@babel/runtime/helpers/esm/toArray.js
new file mode 100644
index 00000000..e5f0f52a
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/toArray.js
@@ -0,0 +1,8 @@
+import arrayWithHoles from "./arrayWithHoles.js";
+import iterableToArray from "./iterableToArray.js";
+import unsupportedIterableToArray from "./unsupportedIterableToArray.js";
+import nonIterableRest from "./nonIterableRest.js";
+function _toArray(r) {
+ return arrayWithHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableRest();
+}
+export { _toArray as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js b/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js
new file mode 100644
index 00000000..f7338e4d
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js
@@ -0,0 +1,8 @@
+import arrayWithoutHoles from "./arrayWithoutHoles.js";
+import iterableToArray from "./iterableToArray.js";
+import unsupportedIterableToArray from "./unsupportedIterableToArray.js";
+import nonIterableSpread from "./nonIterableSpread.js";
+function _toConsumableArray(r) {
+ return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();
+}
+export { _toConsumableArray as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/toPrimitive.js b/node_modules/@babel/runtime/helpers/esm/toPrimitive.js
new file mode 100644
index 00000000..9a3de46b
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/toPrimitive.js
@@ -0,0 +1,12 @@
+import _typeof from "./typeof.js";
+function toPrimitive(t, r) {
+ if ("object" != _typeof(t) || !t) return t;
+ var e = t[Symbol.toPrimitive];
+ if (void 0 !== e) {
+ var i = e.call(t, r || "default");
+ if ("object" != _typeof(i)) return i;
+ throw new TypeError("@@toPrimitive must return a primitive value.");
+ }
+ return ("string" === r ? String : Number)(t);
+}
+export { toPrimitive as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js b/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js
new file mode 100644
index 00000000..b3274d87
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js
@@ -0,0 +1,7 @@
+import _typeof from "./typeof.js";
+import toPrimitive from "./toPrimitive.js";
+function toPropertyKey(t) {
+ var i = toPrimitive(t, "string");
+ return "symbol" == _typeof(i) ? i : i + "";
+}
+export { toPropertyKey as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/toSetter.js b/node_modules/@babel/runtime/helpers/esm/toSetter.js
new file mode 100644
index 00000000..b1dbf7ae
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/toSetter.js
@@ -0,0 +1,10 @@
+function _toSetter(t, e, n) {
+ e || (e = []);
+ var r = e.length++;
+ return Object.defineProperty({}, "_", {
+ set: function set(o) {
+ e[r] = o, t.apply(n, e);
+ }
+ });
+}
+export { _toSetter as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/typeof.js b/node_modules/@babel/runtime/helpers/esm/typeof.js
new file mode 100644
index 00000000..5b0bc9b0
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/typeof.js
@@ -0,0 +1,10 @@
+function _typeof(o) {
+ "@babel/helpers - typeof";
+
+ return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
+ return typeof o;
+ } : function (o) {
+ return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
+ }, _typeof(o);
+}
+export { _typeof as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js b/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js
new file mode 100644
index 00000000..33adc493
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js
@@ -0,0 +1,9 @@
+import arrayLikeToArray from "./arrayLikeToArray.js";
+function _unsupportedIterableToArray(r, a) {
+ if (r) {
+ if ("string" == typeof r) return arrayLikeToArray(r, a);
+ var t = {}.toString.call(r).slice(8, -1);
+ return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;
+ }
+}
+export { _unsupportedIterableToArray as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/using.js b/node_modules/@babel/runtime/helpers/esm/using.js
new file mode 100644
index 00000000..9bda17b5
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/using.js
@@ -0,0 +1,12 @@
+function _using(o, n, e) {
+ if (null == n) return n;
+ if (Object(n) !== n) throw new TypeError("using declarations can only be used with objects, functions, null, or undefined.");
+ if (e) var r = n[Symbol.asyncDispose || Symbol["for"]("Symbol.asyncDispose")];
+ if (null == r && (r = n[Symbol.dispose || Symbol["for"]("Symbol.dispose")]), "function" != typeof r) throw new TypeError("Property [Symbol.dispose] is not a function.");
+ return o.push({
+ v: n,
+ d: r,
+ a: e
+ }), n;
+}
+export { _using as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/usingCtx.js b/node_modules/@babel/runtime/helpers/esm/usingCtx.js
new file mode 100644
index 00000000..b180e3a8
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/usingCtx.js
@@ -0,0 +1,47 @@
+function _usingCtx() {
+ var r = "function" == typeof SuppressedError ? SuppressedError : function (r, n) {
+ var e = Error();
+ return e.name = "SuppressedError", e.error = r, e.suppressed = n, e;
+ },
+ n = {},
+ e = [];
+ function using(r, n) {
+ if (null != n) {
+ if (Object(n) !== n) throw new TypeError("using declarations can only be used with objects, functions, null, or undefined.");
+ if (r) var o = n[Symbol.asyncDispose || Symbol["for"]("Symbol.asyncDispose")];
+ if (null == o && (o = n[Symbol.dispose || Symbol["for"]("Symbol.dispose")]), "function" != typeof o) throw new TypeError("Property [Symbol.dispose] is not a function.");
+ e.push({
+ v: n,
+ d: o,
+ a: r
+ });
+ } else r && e.push({
+ d: n,
+ a: r
+ });
+ return n;
+ }
+ return {
+ e: n,
+ u: using.bind(null, !1),
+ a: using.bind(null, !0),
+ d: function d() {
+ var o = this.e;
+ function next() {
+ for (; r = e.pop();) try {
+ var r,
+ t = r.d && r.d.call(r.v);
+ if (r.a) return Promise.resolve(t).then(next, err);
+ } catch (r) {
+ return err(r);
+ }
+ if (o !== n) throw o;
+ }
+ function err(e) {
+ return o = o !== n ? new r(e, o) : e, next();
+ }
+ return next();
+ }
+ };
+}
+export { _usingCtx as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/wrapAsyncGenerator.js b/node_modules/@babel/runtime/helpers/esm/wrapAsyncGenerator.js
new file mode 100644
index 00000000..3fe052cb
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/wrapAsyncGenerator.js
@@ -0,0 +1,7 @@
+import AsyncGenerator from "./AsyncGenerator.js";
+function _wrapAsyncGenerator(r) {
+ return function () {
+ return new AsyncGenerator(r.apply(this, arguments));
+ };
+}
+export { _wrapAsyncGenerator as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js b/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js
new file mode 100644
index 00000000..15bf78f5
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js
@@ -0,0 +1,27 @@
+import getPrototypeOf from "./getPrototypeOf.js";
+import setPrototypeOf from "./setPrototypeOf.js";
+import isNativeFunction from "./isNativeFunction.js";
+import construct from "./construct.js";
+function _wrapNativeSuper(t) {
+ var r = "function" == typeof Map ? new Map() : void 0;
+ return _wrapNativeSuper = function _wrapNativeSuper(t) {
+ if (null === t || !isNativeFunction(t)) return t;
+ if ("function" != typeof t) throw new TypeError("Super expression must either be null or a function");
+ if (void 0 !== r) {
+ if (r.has(t)) return r.get(t);
+ r.set(t, Wrapper);
+ }
+ function Wrapper() {
+ return construct(t, arguments, getPrototypeOf(this).constructor);
+ }
+ return Wrapper.prototype = Object.create(t.prototype, {
+ constructor: {
+ value: Wrapper,
+ enumerable: !1,
+ writable: !0,
+ configurable: !0
+ }
+ }), setPrototypeOf(Wrapper, t);
+ }, _wrapNativeSuper(t);
+}
+export { _wrapNativeSuper as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/wrapRegExp.js b/node_modules/@babel/runtime/helpers/esm/wrapRegExp.js
new file mode 100644
index 00000000..ecf821e7
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/wrapRegExp.js
@@ -0,0 +1,51 @@
+import _typeof from "./typeof.js";
+import setPrototypeOf from "./setPrototypeOf.js";
+import inherits from "./inherits.js";
+function _wrapRegExp() {
+ _wrapRegExp = function _wrapRegExp(e, r) {
+ return new BabelRegExp(e, void 0, r);
+ };
+ var e = RegExp.prototype,
+ r = new WeakMap();
+ function BabelRegExp(e, t, p) {
+ var o = RegExp(e, t);
+ return r.set(o, p || r.get(e)), setPrototypeOf(o, BabelRegExp.prototype);
+ }
+ function buildGroups(e, t) {
+ var p = r.get(t);
+ return Object.keys(p).reduce(function (r, t) {
+ var o = p[t];
+ if ("number" == typeof o) r[t] = e[o];else {
+ for (var i = 0; void 0 === e[o[i]] && i + 1 < o.length;) i++;
+ r[t] = e[o[i]];
+ }
+ return r;
+ }, Object.create(null));
+ }
+ return inherits(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function (r) {
+ var t = e.exec.call(this, r);
+ if (t) {
+ t.groups = buildGroups(t, this);
+ var p = t.indices;
+ p && (p.groups = buildGroups(p, this));
+ }
+ return t;
+ }, BabelRegExp.prototype[Symbol.replace] = function (t, p) {
+ if ("string" == typeof p) {
+ var o = r.get(this);
+ return e[Symbol.replace].call(this, t, p.replace(/\$<([^>]+)>/g, function (e, r) {
+ var t = o[r];
+ return "$" + (Array.isArray(t) ? t.join("$") : t);
+ }));
+ }
+ if ("function" == typeof p) {
+ var i = this;
+ return e[Symbol.replace].call(this, t, function () {
+ var e = arguments;
+ return "object" != _typeof(e[e.length - 1]) && (e = [].slice.call(e)).push(buildGroups(e, i)), p.apply(this, e);
+ });
+ }
+ return e[Symbol.replace].call(this, t, p);
+ }, _wrapRegExp.apply(this, arguments);
+}
+export { _wrapRegExp as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/esm/writeOnlyError.js b/node_modules/@babel/runtime/helpers/esm/writeOnlyError.js
new file mode 100644
index 00000000..250c2869
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/esm/writeOnlyError.js
@@ -0,0 +1,4 @@
+function _writeOnlyError(r) {
+ throw new TypeError('"' + r + '" is write-only');
+}
+export { _writeOnlyError as default };
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/extends.js b/node_modules/@babel/runtime/helpers/extends.js
new file mode 100644
index 00000000..9c0885c5
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/extends.js
@@ -0,0 +1,10 @@
+function _extends() {
+ return (module.exports = _extends = Object.assign ? Object.assign.bind() : function (n) {
+ for (var e = 1; e < arguments.length; e++) {
+ var t = arguments[e];
+ for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
+ }
+ return n;
+ }, module.exports.__esModule = true, module.exports["default"] = module.exports), _extends.apply(null, arguments);
+}
+module.exports = _extends, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/get.js b/node_modules/@babel/runtime/helpers/get.js
new file mode 100644
index 00000000..662eba3a
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/get.js
@@ -0,0 +1,11 @@
+var superPropBase = require("./superPropBase.js");
+function _get() {
+ return (module.exports = _get = "undefined" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) {
+ var p = superPropBase(e, t);
+ if (p) {
+ var n = Object.getOwnPropertyDescriptor(p, t);
+ return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value;
+ }
+ }, module.exports.__esModule = true, module.exports["default"] = module.exports), _get.apply(null, arguments);
+}
+module.exports = _get, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/getPrototypeOf.js b/node_modules/@babel/runtime/helpers/getPrototypeOf.js
new file mode 100644
index 00000000..aa09634b
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/getPrototypeOf.js
@@ -0,0 +1,6 @@
+function _getPrototypeOf(t) {
+ return (module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {
+ return t.__proto__ || Object.getPrototypeOf(t);
+ }, module.exports.__esModule = true, module.exports["default"] = module.exports), _getPrototypeOf(t);
+}
+module.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/identity.js b/node_modules/@babel/runtime/helpers/identity.js
new file mode 100644
index 00000000..54de5b5b
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/identity.js
@@ -0,0 +1,4 @@
+function _identity(t) {
+ return t;
+}
+module.exports = _identity, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/importDeferProxy.js b/node_modules/@babel/runtime/helpers/importDeferProxy.js
new file mode 100644
index 00000000..cffaae65
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/importDeferProxy.js
@@ -0,0 +1,27 @@
+function _importDeferProxy(e) {
+ var t = null,
+ constValue = function constValue(e) {
+ return function () {
+ return e;
+ };
+ },
+ proxy = function proxy(r) {
+ return function (n, o, f) {
+ return null === t && (t = e()), r(t, o, f);
+ };
+ };
+ return new Proxy({}, {
+ defineProperty: constValue(!1),
+ deleteProperty: constValue(!1),
+ get: proxy(Reflect.get),
+ getOwnPropertyDescriptor: proxy(Reflect.getOwnPropertyDescriptor),
+ getPrototypeOf: constValue(null),
+ isExtensible: constValue(!1),
+ has: proxy(Reflect.has),
+ ownKeys: proxy(Reflect.ownKeys),
+ preventExtensions: constValue(!0),
+ set: constValue(!1),
+ setPrototypeOf: constValue(!1)
+ });
+}
+module.exports = _importDeferProxy, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/inherits.js b/node_modules/@babel/runtime/helpers/inherits.js
new file mode 100644
index 00000000..715a78ef
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/inherits.js
@@ -0,0 +1,14 @@
+var setPrototypeOf = require("./setPrototypeOf.js");
+function _inherits(t, e) {
+ if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
+ t.prototype = Object.create(e && e.prototype, {
+ constructor: {
+ value: t,
+ writable: !0,
+ configurable: !0
+ }
+ }), Object.defineProperty(t, "prototype", {
+ writable: !1
+ }), e && setPrototypeOf(t, e);
+}
+module.exports = _inherits, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/inheritsLoose.js b/node_modules/@babel/runtime/helpers/inheritsLoose.js
new file mode 100644
index 00000000..a27baf01
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/inheritsLoose.js
@@ -0,0 +1,5 @@
+var setPrototypeOf = require("./setPrototypeOf.js");
+function _inheritsLoose(t, o) {
+ t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);
+}
+module.exports = _inheritsLoose, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/initializerDefineProperty.js b/node_modules/@babel/runtime/helpers/initializerDefineProperty.js
new file mode 100644
index 00000000..f9fa3173
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/initializerDefineProperty.js
@@ -0,0 +1,9 @@
+function _initializerDefineProperty(e, i, r, l) {
+ r && Object.defineProperty(e, i, {
+ enumerable: r.enumerable,
+ configurable: r.configurable,
+ writable: r.writable,
+ value: r.initializer ? r.initializer.call(l) : void 0
+ });
+}
+module.exports = _initializerDefineProperty, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/initializerWarningHelper.js b/node_modules/@babel/runtime/helpers/initializerWarningHelper.js
new file mode 100644
index 00000000..e14ce59a
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/initializerWarningHelper.js
@@ -0,0 +1,4 @@
+function _initializerWarningHelper(r, e) {
+ throw Error("Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.");
+}
+module.exports = _initializerWarningHelper, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/instanceof.js b/node_modules/@babel/runtime/helpers/instanceof.js
new file mode 100644
index 00000000..9952301d
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/instanceof.js
@@ -0,0 +1,4 @@
+function _instanceof(n, e) {
+ return null != e && "undefined" != typeof Symbol && e[Symbol.hasInstance] ? !!e[Symbol.hasInstance](n) : n instanceof e;
+}
+module.exports = _instanceof, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/interopRequireDefault.js b/node_modules/@babel/runtime/helpers/interopRequireDefault.js
new file mode 100644
index 00000000..69447158
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/interopRequireDefault.js
@@ -0,0 +1,6 @@
+function _interopRequireDefault(e) {
+ return e && e.__esModule ? e : {
+ "default": e
+ };
+}
+module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/interopRequireWildcard.js b/node_modules/@babel/runtime/helpers/interopRequireWildcard.js
new file mode 100644
index 00000000..41411cc3
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/interopRequireWildcard.js
@@ -0,0 +1,27 @@
+var _typeof = require("./typeof.js")["default"];
+function _getRequireWildcardCache(e) {
+ if ("function" != typeof WeakMap) return null;
+ var r = new WeakMap(),
+ t = new WeakMap();
+ return (_getRequireWildcardCache = function _getRequireWildcardCache(e) {
+ return e ? t : r;
+ })(e);
+}
+function _interopRequireWildcard(e, r) {
+ if (!r && e && e.__esModule) return e;
+ if (null === e || "object" != _typeof(e) && "function" != typeof e) return {
+ "default": e
+ };
+ var t = _getRequireWildcardCache(r);
+ if (t && t.has(e)) return t.get(e);
+ var n = {
+ __proto__: null
+ },
+ a = Object.defineProperty && Object.getOwnPropertyDescriptor;
+ for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
+ var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
+ i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];
+ }
+ return n["default"] = e, t && t.set(e, n), n;
+}
+module.exports = _interopRequireWildcard, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/isNativeFunction.js b/node_modules/@babel/runtime/helpers/isNativeFunction.js
new file mode 100644
index 00000000..f0eb49e3
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/isNativeFunction.js
@@ -0,0 +1,8 @@
+function _isNativeFunction(t) {
+ try {
+ return -1 !== Function.toString.call(t).indexOf("[native code]");
+ } catch (n) {
+ return "function" == typeof t;
+ }
+}
+module.exports = _isNativeFunction, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js b/node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js
new file mode 100644
index 00000000..b677e107
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js
@@ -0,0 +1,9 @@
+function _isNativeReflectConstruct() {
+ try {
+ var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
+ } catch (t) {}
+ return (module.exports = _isNativeReflectConstruct = function _isNativeReflectConstruct() {
+ return !!t;
+ }, module.exports.__esModule = true, module.exports["default"] = module.exports)();
+}
+module.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/iterableToArray.js b/node_modules/@babel/runtime/helpers/iterableToArray.js
new file mode 100644
index 00000000..c839a321
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/iterableToArray.js
@@ -0,0 +1,4 @@
+function _iterableToArray(r) {
+ if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r);
+}
+module.exports = _iterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js b/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js
new file mode 100644
index 00000000..2671778b
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js
@@ -0,0 +1,28 @@
+function _iterableToArrayLimit(r, l) {
+ var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
+ if (null != t) {
+ var e,
+ n,
+ i,
+ u,
+ a = [],
+ f = !0,
+ o = !1;
+ try {
+ if (i = (t = t.call(r)).next, 0 === l) {
+ if (Object(t) !== t) return;
+ f = !1;
+ } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
+ } catch (r) {
+ o = !0, n = r;
+ } finally {
+ try {
+ if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
+ } finally {
+ if (o) throw n;
+ }
+ }
+ return a;
+ }
+}
+module.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/iterableToArrayLimitLoose.js b/node_modules/@babel/runtime/helpers/iterableToArrayLimitLoose.js
new file mode 100644
index 00000000..718a5b15
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/iterableToArrayLimitLoose.js
@@ -0,0 +1,10 @@
+function _iterableToArrayLimitLoose(e, r) {
+ var t = e && ("undefined" != typeof Symbol && e[Symbol.iterator] || e["@@iterator"]);
+ if (null != t) {
+ var o,
+ l = [];
+ for (t = t.call(e); e.length < r && !(o = t.next()).done;) l.push(o.value);
+ return l;
+ }
+}
+module.exports = _iterableToArrayLimitLoose, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/jsx.js b/node_modules/@babel/runtime/helpers/jsx.js
new file mode 100644
index 00000000..3415eead
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/jsx.js
@@ -0,0 +1,22 @@
+var REACT_ELEMENT_TYPE;
+function _createRawReactElement(e, r, E, l) {
+ REACT_ELEMENT_TYPE || (REACT_ELEMENT_TYPE = "function" == typeof Symbol && Symbol["for"] && Symbol["for"]("react.element") || 60103);
+ var o = e && e.defaultProps,
+ n = arguments.length - 3;
+ if (r || 0 === n || (r = {
+ children: void 0
+ }), 1 === n) r.children = l;else if (n > 1) {
+ for (var t = Array(n), f = 0; f < n; f++) t[f] = arguments[f + 3];
+ r.children = t;
+ }
+ if (r && o) for (var i in o) void 0 === r[i] && (r[i] = o[i]);else r || (r = o || {});
+ return {
+ $$typeof: REACT_ELEMENT_TYPE,
+ type: e,
+ key: void 0 === E ? null : "" + E,
+ ref: null,
+ props: r,
+ _owner: null
+ };
+}
+module.exports = _createRawReactElement, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/maybeArrayLike.js b/node_modules/@babel/runtime/helpers/maybeArrayLike.js
new file mode 100644
index 00000000..9873cc76
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/maybeArrayLike.js
@@ -0,0 +1,9 @@
+var arrayLikeToArray = require("./arrayLikeToArray.js");
+function _maybeArrayLike(r, a, e) {
+ if (a && !Array.isArray(a) && "number" == typeof a.length) {
+ var y = a.length;
+ return arrayLikeToArray(a, void 0 !== e && e < y ? e : y);
+ }
+ return r(a, e);
+}
+module.exports = _maybeArrayLike, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/newArrowCheck.js b/node_modules/@babel/runtime/helpers/newArrowCheck.js
new file mode 100644
index 00000000..8e74d991
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/newArrowCheck.js
@@ -0,0 +1,4 @@
+function _newArrowCheck(n, r) {
+ if (n !== r) throw new TypeError("Cannot instantiate an arrow function");
+}
+module.exports = _newArrowCheck, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/project starter code/node_modules/@babel/runtime/helpers/nonIterableRest.js b/node_modules/@babel/runtime/helpers/nonIterableRest.js
similarity index 100%
rename from project starter code/node_modules/@babel/runtime/helpers/nonIterableRest.js
rename to node_modules/@babel/runtime/helpers/nonIterableRest.js
diff --git a/project starter code/node_modules/@babel/runtime/helpers/nonIterableSpread.js b/node_modules/@babel/runtime/helpers/nonIterableSpread.js
similarity index 100%
rename from project starter code/node_modules/@babel/runtime/helpers/nonIterableSpread.js
rename to node_modules/@babel/runtime/helpers/nonIterableSpread.js
diff --git a/node_modules/@babel/runtime/helpers/nullishReceiverError.js b/node_modules/@babel/runtime/helpers/nullishReceiverError.js
new file mode 100644
index 00000000..970e0231
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/nullishReceiverError.js
@@ -0,0 +1,4 @@
+function _nullishReceiverError(r) {
+ throw new TypeError("Cannot set property of null or undefined.");
+}
+module.exports = _nullishReceiverError, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/objectDestructuringEmpty.js b/node_modules/@babel/runtime/helpers/objectDestructuringEmpty.js
new file mode 100644
index 00000000..9f62a1b0
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/objectDestructuringEmpty.js
@@ -0,0 +1,4 @@
+function _objectDestructuringEmpty(t) {
+ if (null == t) throw new TypeError("Cannot destructure " + t);
+}
+module.exports = _objectDestructuringEmpty, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/objectSpread.js b/node_modules/@babel/runtime/helpers/objectSpread.js
new file mode 100644
index 00000000..a3676438
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/objectSpread.js
@@ -0,0 +1,14 @@
+var defineProperty = require("./defineProperty.js");
+function _objectSpread(e) {
+ for (var r = 1; r < arguments.length; r++) {
+ var t = null != arguments[r] ? Object(arguments[r]) : {},
+ o = Object.keys(t);
+ "function" == typeof Object.getOwnPropertySymbols && o.push.apply(o, Object.getOwnPropertySymbols(t).filter(function (e) {
+ return Object.getOwnPropertyDescriptor(t, e).enumerable;
+ })), o.forEach(function (r) {
+ defineProperty(e, r, t[r]);
+ });
+ }
+ return e;
+}
+module.exports = _objectSpread, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/objectSpread2.js b/node_modules/@babel/runtime/helpers/objectSpread2.js
new file mode 100644
index 00000000..4f3b9fa0
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/objectSpread2.js
@@ -0,0 +1,23 @@
+var defineProperty = require("./defineProperty.js");
+function ownKeys(e, r) {
+ var t = Object.keys(e);
+ if (Object.getOwnPropertySymbols) {
+ var o = Object.getOwnPropertySymbols(e);
+ r && (o = o.filter(function (r) {
+ return Object.getOwnPropertyDescriptor(e, r).enumerable;
+ })), t.push.apply(t, o);
+ }
+ return t;
+}
+function _objectSpread2(e) {
+ for (var r = 1; r < arguments.length; r++) {
+ var t = null != arguments[r] ? arguments[r] : {};
+ r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {
+ defineProperty(e, r, t[r]);
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
+ Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
+ });
+ }
+ return e;
+}
+module.exports = _objectSpread2, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/objectWithoutProperties.js b/node_modules/@babel/runtime/helpers/objectWithoutProperties.js
new file mode 100644
index 00000000..4330d4bf
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/objectWithoutProperties.js
@@ -0,0 +1,13 @@
+var objectWithoutPropertiesLoose = require("./objectWithoutPropertiesLoose.js");
+function _objectWithoutProperties(e, t) {
+ if (null == e) return {};
+ var o,
+ r,
+ i = objectWithoutPropertiesLoose(e, t);
+ if (Object.getOwnPropertySymbols) {
+ var n = Object.getOwnPropertySymbols(e);
+ for (r = 0; r < n.length; r++) o = n[r], t.indexOf(o) >= 0 || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);
+ }
+ return i;
+}
+module.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js b/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js
new file mode 100644
index 00000000..21ca98cb
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js
@@ -0,0 +1,10 @@
+function _objectWithoutPropertiesLoose(r, e) {
+ if (null == r) return {};
+ var t = {};
+ for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
+ if (e.indexOf(n) >= 0) continue;
+ t[n] = r[n];
+ }
+ return t;
+}
+module.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js b/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js
new file mode 100644
index 00000000..06e6e6d8
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js
@@ -0,0 +1,8 @@
+var _typeof = require("./typeof.js")["default"];
+var assertThisInitialized = require("./assertThisInitialized.js");
+function _possibleConstructorReturn(t, e) {
+ if (e && ("object" == _typeof(e) || "function" == typeof e)) return e;
+ if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined");
+ return assertThisInitialized(t);
+}
+module.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/readOnlyError.js b/node_modules/@babel/runtime/helpers/readOnlyError.js
new file mode 100644
index 00000000..1bf3e092
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/readOnlyError.js
@@ -0,0 +1,4 @@
+function _readOnlyError(r) {
+ throw new TypeError('"' + r + '" is read-only');
+}
+module.exports = _readOnlyError, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/regeneratorRuntime.js b/node_modules/@babel/runtime/helpers/regeneratorRuntime.js
new file mode 100644
index 00000000..f33e4945
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/regeneratorRuntime.js
@@ -0,0 +1,304 @@
+var _typeof = require("./typeof.js")["default"];
+function _regeneratorRuntime() {
+ "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
+ module.exports = _regeneratorRuntime = function _regeneratorRuntime() {
+ return e;
+ }, module.exports.__esModule = true, module.exports["default"] = module.exports;
+ var t,
+ e = {},
+ r = Object.prototype,
+ n = r.hasOwnProperty,
+ o = Object.defineProperty || function (t, e, r) {
+ t[e] = r.value;
+ },
+ i = "function" == typeof Symbol ? Symbol : {},
+ a = i.iterator || "@@iterator",
+ c = i.asyncIterator || "@@asyncIterator",
+ u = i.toStringTag || "@@toStringTag";
+ function define(t, e, r) {
+ return Object.defineProperty(t, e, {
+ value: r,
+ enumerable: !0,
+ configurable: !0,
+ writable: !0
+ }), t[e];
+ }
+ try {
+ define({}, "");
+ } catch (t) {
+ define = function define(t, e, r) {
+ return t[e] = r;
+ };
+ }
+ function wrap(t, e, r, n) {
+ var i = e && e.prototype instanceof Generator ? e : Generator,
+ a = Object.create(i.prototype),
+ c = new Context(n || []);
+ return o(a, "_invoke", {
+ value: makeInvokeMethod(t, r, c)
+ }), a;
+ }
+ function tryCatch(t, e, r) {
+ try {
+ return {
+ type: "normal",
+ arg: t.call(e, r)
+ };
+ } catch (t) {
+ return {
+ type: "throw",
+ arg: t
+ };
+ }
+ }
+ e.wrap = wrap;
+ var h = "suspendedStart",
+ l = "suspendedYield",
+ f = "executing",
+ s = "completed",
+ y = {};
+ function Generator() {}
+ function GeneratorFunction() {}
+ function GeneratorFunctionPrototype() {}
+ var p = {};
+ define(p, a, function () {
+ return this;
+ });
+ var d = Object.getPrototypeOf,
+ v = d && d(d(values([])));
+ v && v !== r && n.call(v, a) && (p = v);
+ var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);
+ function defineIteratorMethods(t) {
+ ["next", "throw", "return"].forEach(function (e) {
+ define(t, e, function (t) {
+ return this._invoke(e, t);
+ });
+ });
+ }
+ function AsyncIterator(t, e) {
+ function invoke(r, o, i, a) {
+ var c = tryCatch(t[r], t, o);
+ if ("throw" !== c.type) {
+ var u = c.arg,
+ h = u.value;
+ return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) {
+ invoke("next", t, i, a);
+ }, function (t) {
+ invoke("throw", t, i, a);
+ }) : e.resolve(h).then(function (t) {
+ u.value = t, i(u);
+ }, function (t) {
+ return invoke("throw", t, i, a);
+ });
+ }
+ a(c.arg);
+ }
+ var r;
+ o(this, "_invoke", {
+ value: function value(t, n) {
+ function callInvokeWithMethodAndArg() {
+ return new e(function (e, r) {
+ invoke(t, n, e, r);
+ });
+ }
+ return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
+ }
+ });
+ }
+ function makeInvokeMethod(e, r, n) {
+ var o = h;
+ return function (i, a) {
+ if (o === f) throw Error("Generator is already running");
+ if (o === s) {
+ if ("throw" === i) throw a;
+ return {
+ value: t,
+ done: !0
+ };
+ }
+ for (n.method = i, n.arg = a;;) {
+ var c = n.delegate;
+ if (c) {
+ var u = maybeInvokeDelegate(c, n);
+ if (u) {
+ if (u === y) continue;
+ return u;
+ }
+ }
+ if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) {
+ if (o === h) throw o = s, n.arg;
+ n.dispatchException(n.arg);
+ } else "return" === n.method && n.abrupt("return", n.arg);
+ o = f;
+ var p = tryCatch(e, r, n);
+ if ("normal" === p.type) {
+ if (o = n.done ? s : l, p.arg === y) continue;
+ return {
+ value: p.arg,
+ done: n.done
+ };
+ }
+ "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg);
+ }
+ };
+ }
+ function maybeInvokeDelegate(e, r) {
+ var n = r.method,
+ o = e.iterator[n];
+ if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y;
+ var i = tryCatch(o, e.iterator, r.arg);
+ if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y;
+ var a = i.arg;
+ return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y);
+ }
+ function pushTryEntry(t) {
+ var e = {
+ tryLoc: t[0]
+ };
+ 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);
+ }
+ function resetTryEntry(t) {
+ var e = t.completion || {};
+ e.type = "normal", delete e.arg, t.completion = e;
+ }
+ function Context(t) {
+ this.tryEntries = [{
+ tryLoc: "root"
+ }], t.forEach(pushTryEntry, this), this.reset(!0);
+ }
+ function values(e) {
+ if (e || "" === e) {
+ var r = e[a];
+ if (r) return r.call(e);
+ if ("function" == typeof e.next) return e;
+ if (!isNaN(e.length)) {
+ var o = -1,
+ i = function next() {
+ for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;
+ return next.value = t, next.done = !0, next;
+ };
+ return i.next = i;
+ }
+ }
+ throw new TypeError(_typeof(e) + " is not iterable");
+ }
+ return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", {
+ value: GeneratorFunctionPrototype,
+ configurable: !0
+ }), o(GeneratorFunctionPrototype, "constructor", {
+ value: GeneratorFunction,
+ configurable: !0
+ }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) {
+ var e = "function" == typeof t && t.constructor;
+ return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name));
+ }, e.mark = function (t) {
+ return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t;
+ }, e.awrap = function (t) {
+ return {
+ __await: t
+ };
+ }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {
+ return this;
+ }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {
+ void 0 === i && (i = Promise);
+ var a = new AsyncIterator(wrap(t, r, n, o), i);
+ return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {
+ return t.done ? t.value : a.next();
+ });
+ }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () {
+ return this;
+ }), define(g, "toString", function () {
+ return "[object Generator]";
+ }), e.keys = function (t) {
+ var e = Object(t),
+ r = [];
+ for (var n in e) r.push(n);
+ return r.reverse(), function next() {
+ for (; r.length;) {
+ var t = r.pop();
+ if (t in e) return next.value = t, next.done = !1, next;
+ }
+ return next.done = !0, next;
+ };
+ }, e.values = values, Context.prototype = {
+ constructor: Context,
+ reset: function reset(e) {
+ if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);
+ },
+ stop: function stop() {
+ this.done = !0;
+ var t = this.tryEntries[0].completion;
+ if ("throw" === t.type) throw t.arg;
+ return this.rval;
+ },
+ dispatchException: function dispatchException(e) {
+ if (this.done) throw e;
+ var r = this;
+ function handle(n, o) {
+ return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o;
+ }
+ for (var o = this.tryEntries.length - 1; o >= 0; --o) {
+ var i = this.tryEntries[o],
+ a = i.completion;
+ if ("root" === i.tryLoc) return handle("end");
+ if (i.tryLoc <= this.prev) {
+ var c = n.call(i, "catchLoc"),
+ u = n.call(i, "finallyLoc");
+ if (c && u) {
+ if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);
+ if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
+ } else if (c) {
+ if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);
+ } else {
+ if (!u) throw Error("try statement without catch or finally");
+ if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
+ }
+ }
+ }
+ },
+ abrupt: function abrupt(t, e) {
+ for (var r = this.tryEntries.length - 1; r >= 0; --r) {
+ var o = this.tryEntries[r];
+ if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) {
+ var i = o;
+ break;
+ }
+ }
+ i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);
+ var a = i ? i.completion : {};
+ return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a);
+ },
+ complete: function complete(t, e) {
+ if ("throw" === t.type) throw t.arg;
+ return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y;
+ },
+ finish: function finish(t) {
+ for (var e = this.tryEntries.length - 1; e >= 0; --e) {
+ var r = this.tryEntries[e];
+ if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;
+ }
+ },
+ "catch": function _catch(t) {
+ for (var e = this.tryEntries.length - 1; e >= 0; --e) {
+ var r = this.tryEntries[e];
+ if (r.tryLoc === t) {
+ var n = r.completion;
+ if ("throw" === n.type) {
+ var o = n.arg;
+ resetTryEntry(r);
+ }
+ return o;
+ }
+ }
+ throw Error("illegal catch attempt");
+ },
+ delegateYield: function delegateYield(e, r, n) {
+ return this.delegate = {
+ iterator: values(e),
+ resultName: r,
+ nextLoc: n
+ }, "next" === this.method && (this.arg = t), y;
+ }
+ }, e;
+}
+module.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/set.js b/node_modules/@babel/runtime/helpers/set.js
new file mode 100644
index 00000000..6421470a
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/set.js
@@ -0,0 +1,22 @@
+var superPropBase = require("./superPropBase.js");
+var defineProperty = require("./defineProperty.js");
+function set(e, r, t, o) {
+ return set = "undefined" != typeof Reflect && Reflect.set ? Reflect.set : function (e, r, t, o) {
+ var f,
+ i = superPropBase(e, r);
+ if (i) {
+ if ((f = Object.getOwnPropertyDescriptor(i, r)).set) return f.set.call(o, t), !0;
+ if (!f.writable) return !1;
+ }
+ if (f = Object.getOwnPropertyDescriptor(o, r)) {
+ if (!f.writable) return !1;
+ f.value = t, Object.defineProperty(o, r, f);
+ } else defineProperty(o, r, t);
+ return !0;
+ }, set(e, r, t, o);
+}
+function _set(e, r, t, o, f) {
+ if (!set(e, r, t, o || e) && f) throw new TypeError("failed to set property");
+ return t;
+}
+module.exports = _set, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/setFunctionName.js b/node_modules/@babel/runtime/helpers/setFunctionName.js
new file mode 100644
index 00000000..9664076a
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/setFunctionName.js
@@ -0,0 +1,12 @@
+var _typeof = require("./typeof.js")["default"];
+function setFunctionName(e, t, n) {
+ "symbol" == _typeof(t) && (t = (t = t.description) ? "[" + t + "]" : "");
+ try {
+ Object.defineProperty(e, "name", {
+ configurable: !0,
+ value: n ? n + " " + t : t
+ });
+ } catch (e) {}
+ return e;
+}
+module.exports = setFunctionName, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/setPrototypeOf.js b/node_modules/@babel/runtime/helpers/setPrototypeOf.js
new file mode 100644
index 00000000..260377f3
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/setPrototypeOf.js
@@ -0,0 +1,6 @@
+function _setPrototypeOf(t, e) {
+ return (module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {
+ return t.__proto__ = e, t;
+ }, module.exports.__esModule = true, module.exports["default"] = module.exports), _setPrototypeOf(t, e);
+}
+module.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/skipFirstGeneratorNext.js b/node_modules/@babel/runtime/helpers/skipFirstGeneratorNext.js
new file mode 100644
index 00000000..2aed548e
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/skipFirstGeneratorNext.js
@@ -0,0 +1,7 @@
+function _skipFirstGeneratorNext(t) {
+ return function () {
+ var r = t.apply(this, arguments);
+ return r.next(), r;
+ };
+}
+module.exports = _skipFirstGeneratorNext, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/slicedToArray.js b/node_modules/@babel/runtime/helpers/slicedToArray.js
new file mode 100644
index 00000000..3d752c42
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/slicedToArray.js
@@ -0,0 +1,8 @@
+var arrayWithHoles = require("./arrayWithHoles.js");
+var iterableToArrayLimit = require("./iterableToArrayLimit.js");
+var unsupportedIterableToArray = require("./unsupportedIterableToArray.js");
+var nonIterableRest = require("./nonIterableRest.js");
+function _slicedToArray(r, e) {
+ return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();
+}
+module.exports = _slicedToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/slicedToArrayLoose.js b/node_modules/@babel/runtime/helpers/slicedToArrayLoose.js
new file mode 100644
index 00000000..6fb3879c
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/slicedToArrayLoose.js
@@ -0,0 +1,8 @@
+var arrayWithHoles = require("./arrayWithHoles.js");
+var iterableToArrayLimitLoose = require("./iterableToArrayLimitLoose.js");
+var unsupportedIterableToArray = require("./unsupportedIterableToArray.js");
+var nonIterableRest = require("./nonIterableRest.js");
+function _slicedToArrayLoose(r, e) {
+ return arrayWithHoles(r) || iterableToArrayLimitLoose(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();
+}
+module.exports = _slicedToArrayLoose, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/superPropBase.js b/node_modules/@babel/runtime/helpers/superPropBase.js
new file mode 100644
index 00000000..5cad4595
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/superPropBase.js
@@ -0,0 +1,6 @@
+var getPrototypeOf = require("./getPrototypeOf.js");
+function _superPropBase(t, o) {
+ for (; !{}.hasOwnProperty.call(t, o) && null !== (t = getPrototypeOf(t)););
+ return t;
+}
+module.exports = _superPropBase, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js b/node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js
new file mode 100644
index 00000000..38d6065a
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js
@@ -0,0 +1,8 @@
+function _taggedTemplateLiteral(e, t) {
+ return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, {
+ raw: {
+ value: Object.freeze(t)
+ }
+ }));
+}
+module.exports = _taggedTemplateLiteral, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/taggedTemplateLiteralLoose.js b/node_modules/@babel/runtime/helpers/taggedTemplateLiteralLoose.js
new file mode 100644
index 00000000..2f8c146a
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/taggedTemplateLiteralLoose.js
@@ -0,0 +1,4 @@
+function _taggedTemplateLiteralLoose(e, t) {
+ return t || (t = e.slice(0)), e.raw = t, e;
+}
+module.exports = _taggedTemplateLiteralLoose, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/tdz.js b/node_modules/@babel/runtime/helpers/tdz.js
new file mode 100644
index 00000000..c66f476c
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/tdz.js
@@ -0,0 +1,4 @@
+function _tdzError(e) {
+ throw new ReferenceError(e + " is not defined - temporal dead zone");
+}
+module.exports = _tdzError, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/temporalRef.js b/node_modules/@babel/runtime/helpers/temporalRef.js
new file mode 100644
index 00000000..54c9190c
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/temporalRef.js
@@ -0,0 +1,6 @@
+var temporalUndefined = require("./temporalUndefined.js");
+var tdz = require("./tdz.js");
+function _temporalRef(r, e) {
+ return r === temporalUndefined ? tdz(e) : r;
+}
+module.exports = _temporalRef, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/project starter code/node_modules/@babel/runtime/helpers/temporalUndefined.js b/node_modules/@babel/runtime/helpers/temporalUndefined.js
similarity index 100%
rename from project starter code/node_modules/@babel/runtime/helpers/temporalUndefined.js
rename to node_modules/@babel/runtime/helpers/temporalUndefined.js
diff --git a/node_modules/@babel/runtime/helpers/toArray.js b/node_modules/@babel/runtime/helpers/toArray.js
new file mode 100644
index 00000000..2be1d2bd
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/toArray.js
@@ -0,0 +1,8 @@
+var arrayWithHoles = require("./arrayWithHoles.js");
+var iterableToArray = require("./iterableToArray.js");
+var unsupportedIterableToArray = require("./unsupportedIterableToArray.js");
+var nonIterableRest = require("./nonIterableRest.js");
+function _toArray(r) {
+ return arrayWithHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableRest();
+}
+module.exports = _toArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/toConsumableArray.js b/node_modules/@babel/runtime/helpers/toConsumableArray.js
new file mode 100644
index 00000000..698f9c69
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/toConsumableArray.js
@@ -0,0 +1,8 @@
+var arrayWithoutHoles = require("./arrayWithoutHoles.js");
+var iterableToArray = require("./iterableToArray.js");
+var unsupportedIterableToArray = require("./unsupportedIterableToArray.js");
+var nonIterableSpread = require("./nonIterableSpread.js");
+function _toConsumableArray(r) {
+ return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();
+}
+module.exports = _toConsumableArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/toPrimitive.js b/node_modules/@babel/runtime/helpers/toPrimitive.js
new file mode 100644
index 00000000..ef9d249b
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/toPrimitive.js
@@ -0,0 +1,12 @@
+var _typeof = require("./typeof.js")["default"];
+function toPrimitive(t, r) {
+ if ("object" != _typeof(t) || !t) return t;
+ var e = t[Symbol.toPrimitive];
+ if (void 0 !== e) {
+ var i = e.call(t, r || "default");
+ if ("object" != _typeof(i)) return i;
+ throw new TypeError("@@toPrimitive must return a primitive value.");
+ }
+ return ("string" === r ? String : Number)(t);
+}
+module.exports = toPrimitive, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/toPropertyKey.js b/node_modules/@babel/runtime/helpers/toPropertyKey.js
new file mode 100644
index 00000000..3ca3d4fc
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/toPropertyKey.js
@@ -0,0 +1,7 @@
+var _typeof = require("./typeof.js")["default"];
+var toPrimitive = require("./toPrimitive.js");
+function toPropertyKey(t) {
+ var i = toPrimitive(t, "string");
+ return "symbol" == _typeof(i) ? i : i + "";
+}
+module.exports = toPropertyKey, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/toSetter.js b/node_modules/@babel/runtime/helpers/toSetter.js
new file mode 100644
index 00000000..e0012a8f
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/toSetter.js
@@ -0,0 +1,10 @@
+function _toSetter(t, e, n) {
+ e || (e = []);
+ var r = e.length++;
+ return Object.defineProperty({}, "_", {
+ set: function set(o) {
+ e[r] = o, t.apply(n, e);
+ }
+ });
+}
+module.exports = _toSetter, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/typeof.js b/node_modules/@babel/runtime/helpers/typeof.js
new file mode 100644
index 00000000..64a8ecf7
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/typeof.js
@@ -0,0 +1,10 @@
+function _typeof(o) {
+ "@babel/helpers - typeof";
+
+ return (module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
+ return typeof o;
+ } : function (o) {
+ return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
+ }, module.exports.__esModule = true, module.exports["default"] = module.exports), _typeof(o);
+}
+module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js b/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js
new file mode 100644
index 00000000..8fb1a71d
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js
@@ -0,0 +1,9 @@
+var arrayLikeToArray = require("./arrayLikeToArray.js");
+function _unsupportedIterableToArray(r, a) {
+ if (r) {
+ if ("string" == typeof r) return arrayLikeToArray(r, a);
+ var t = {}.toString.call(r).slice(8, -1);
+ return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;
+ }
+}
+module.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/using.js b/node_modules/@babel/runtime/helpers/using.js
new file mode 100644
index 00000000..37c79e2c
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/using.js
@@ -0,0 +1,12 @@
+function _using(o, n, e) {
+ if (null == n) return n;
+ if (Object(n) !== n) throw new TypeError("using declarations can only be used with objects, functions, null, or undefined.");
+ if (e) var r = n[Symbol.asyncDispose || Symbol["for"]("Symbol.asyncDispose")];
+ if (null == r && (r = n[Symbol.dispose || Symbol["for"]("Symbol.dispose")]), "function" != typeof r) throw new TypeError("Property [Symbol.dispose] is not a function.");
+ return o.push({
+ v: n,
+ d: r,
+ a: e
+ }), n;
+}
+module.exports = _using, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/usingCtx.js b/node_modules/@babel/runtime/helpers/usingCtx.js
new file mode 100644
index 00000000..b2443821
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/usingCtx.js
@@ -0,0 +1,47 @@
+function _usingCtx() {
+ var r = "function" == typeof SuppressedError ? SuppressedError : function (r, n) {
+ var e = Error();
+ return e.name = "SuppressedError", e.error = r, e.suppressed = n, e;
+ },
+ n = {},
+ e = [];
+ function using(r, n) {
+ if (null != n) {
+ if (Object(n) !== n) throw new TypeError("using declarations can only be used with objects, functions, null, or undefined.");
+ if (r) var o = n[Symbol.asyncDispose || Symbol["for"]("Symbol.asyncDispose")];
+ if (null == o && (o = n[Symbol.dispose || Symbol["for"]("Symbol.dispose")]), "function" != typeof o) throw new TypeError("Property [Symbol.dispose] is not a function.");
+ e.push({
+ v: n,
+ d: o,
+ a: r
+ });
+ } else r && e.push({
+ d: n,
+ a: r
+ });
+ return n;
+ }
+ return {
+ e: n,
+ u: using.bind(null, !1),
+ a: using.bind(null, !0),
+ d: function d() {
+ var o = this.e;
+ function next() {
+ for (; r = e.pop();) try {
+ var r,
+ t = r.d && r.d.call(r.v);
+ if (r.a) return Promise.resolve(t).then(next, err);
+ } catch (r) {
+ return err(r);
+ }
+ if (o !== n) throw o;
+ }
+ function err(e) {
+ return o = o !== n ? new r(e, o) : e, next();
+ }
+ return next();
+ }
+ };
+}
+module.exports = _usingCtx, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/wrapAsyncGenerator.js b/node_modules/@babel/runtime/helpers/wrapAsyncGenerator.js
new file mode 100644
index 00000000..34f9099e
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/wrapAsyncGenerator.js
@@ -0,0 +1,7 @@
+var AsyncGenerator = require("./AsyncGenerator.js");
+function _wrapAsyncGenerator(r) {
+ return function () {
+ return new AsyncGenerator(r.apply(this, arguments));
+ };
+}
+module.exports = _wrapAsyncGenerator, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/wrapNativeSuper.js b/node_modules/@babel/runtime/helpers/wrapNativeSuper.js
new file mode 100644
index 00000000..8a3f172b
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/wrapNativeSuper.js
@@ -0,0 +1,27 @@
+var getPrototypeOf = require("./getPrototypeOf.js");
+var setPrototypeOf = require("./setPrototypeOf.js");
+var isNativeFunction = require("./isNativeFunction.js");
+var construct = require("./construct.js");
+function _wrapNativeSuper(t) {
+ var r = "function" == typeof Map ? new Map() : void 0;
+ return (module.exports = _wrapNativeSuper = function _wrapNativeSuper(t) {
+ if (null === t || !isNativeFunction(t)) return t;
+ if ("function" != typeof t) throw new TypeError("Super expression must either be null or a function");
+ if (void 0 !== r) {
+ if (r.has(t)) return r.get(t);
+ r.set(t, Wrapper);
+ }
+ function Wrapper() {
+ return construct(t, arguments, getPrototypeOf(this).constructor);
+ }
+ return Wrapper.prototype = Object.create(t.prototype, {
+ constructor: {
+ value: Wrapper,
+ enumerable: !1,
+ writable: !0,
+ configurable: !0
+ }
+ }), setPrototypeOf(Wrapper, t);
+ }, module.exports.__esModule = true, module.exports["default"] = module.exports), _wrapNativeSuper(t);
+}
+module.exports = _wrapNativeSuper, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/wrapRegExp.js b/node_modules/@babel/runtime/helpers/wrapRegExp.js
new file mode 100644
index 00000000..c5271688
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/wrapRegExp.js
@@ -0,0 +1,51 @@
+var _typeof = require("./typeof.js")["default"];
+var setPrototypeOf = require("./setPrototypeOf.js");
+var inherits = require("./inherits.js");
+function _wrapRegExp() {
+ module.exports = _wrapRegExp = function _wrapRegExp(e, r) {
+ return new BabelRegExp(e, void 0, r);
+ }, module.exports.__esModule = true, module.exports["default"] = module.exports;
+ var e = RegExp.prototype,
+ r = new WeakMap();
+ function BabelRegExp(e, t, p) {
+ var o = RegExp(e, t);
+ return r.set(o, p || r.get(e)), setPrototypeOf(o, BabelRegExp.prototype);
+ }
+ function buildGroups(e, t) {
+ var p = r.get(t);
+ return Object.keys(p).reduce(function (r, t) {
+ var o = p[t];
+ if ("number" == typeof o) r[t] = e[o];else {
+ for (var i = 0; void 0 === e[o[i]] && i + 1 < o.length;) i++;
+ r[t] = e[o[i]];
+ }
+ return r;
+ }, Object.create(null));
+ }
+ return inherits(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function (r) {
+ var t = e.exec.call(this, r);
+ if (t) {
+ t.groups = buildGroups(t, this);
+ var p = t.indices;
+ p && (p.groups = buildGroups(p, this));
+ }
+ return t;
+ }, BabelRegExp.prototype[Symbol.replace] = function (t, p) {
+ if ("string" == typeof p) {
+ var o = r.get(this);
+ return e[Symbol.replace].call(this, t, p.replace(/\$<([^>]+)>/g, function (e, r) {
+ var t = o[r];
+ return "$" + (Array.isArray(t) ? t.join("$") : t);
+ }));
+ }
+ if ("function" == typeof p) {
+ var i = this;
+ return e[Symbol.replace].call(this, t, function () {
+ var e = arguments;
+ return "object" != _typeof(e[e.length - 1]) && (e = [].slice.call(e)).push(buildGroups(e, i)), p.apply(this, e);
+ });
+ }
+ return e[Symbol.replace].call(this, t, p);
+ }, _wrapRegExp.apply(this, arguments);
+}
+module.exports = _wrapRegExp, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/node_modules/@babel/runtime/helpers/writeOnlyError.js b/node_modules/@babel/runtime/helpers/writeOnlyError.js
new file mode 100644
index 00000000..c98ee825
--- /dev/null
+++ b/node_modules/@babel/runtime/helpers/writeOnlyError.js
@@ -0,0 +1,4 @@
+function _writeOnlyError(r) {
+ throw new TypeError('"' + r + '" is write-only');
+}
+module.exports = _writeOnlyError, module.exports.__esModule = true, module.exports["default"] = module.exports;
\ No newline at end of file
diff --git a/project starter code/node_modules/regenerator-runtime/LICENSE b/node_modules/@babel/runtime/node_modules/regenerator-runtime/LICENSE
similarity index 100%
rename from project starter code/node_modules/regenerator-runtime/LICENSE
rename to node_modules/@babel/runtime/node_modules/regenerator-runtime/LICENSE
diff --git a/project starter code/node_modules/regenerator-runtime/README.md b/node_modules/@babel/runtime/node_modules/regenerator-runtime/README.md
similarity index 100%
rename from project starter code/node_modules/regenerator-runtime/README.md
rename to node_modules/@babel/runtime/node_modules/regenerator-runtime/README.md
diff --git a/node_modules/@babel/runtime/node_modules/regenerator-runtime/package.json b/node_modules/@babel/runtime/node_modules/regenerator-runtime/package.json
new file mode 100644
index 00000000..503086f8
--- /dev/null
+++ b/node_modules/@babel/runtime/node_modules/regenerator-runtime/package.json
@@ -0,0 +1,19 @@
+{
+ "name": "regenerator-runtime",
+ "author": "Ben Newman ",
+ "description": "Runtime for Regenerator-compiled generator and async functions.",
+ "version": "0.14.1",
+ "main": "runtime.js",
+ "keywords": [
+ "regenerator",
+ "runtime",
+ "generator",
+ "async"
+ ],
+ "sideEffects": true,
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/facebook/regenerator/tree/main/packages/runtime"
+ },
+ "license": "MIT"
+}
diff --git a/project starter code/node_modules/regenerator-runtime/path.js b/node_modules/@babel/runtime/node_modules/regenerator-runtime/path.js
similarity index 100%
rename from project starter code/node_modules/regenerator-runtime/path.js
rename to node_modules/@babel/runtime/node_modules/regenerator-runtime/path.js
diff --git a/node_modules/@babel/runtime/node_modules/regenerator-runtime/runtime.js b/node_modules/@babel/runtime/node_modules/regenerator-runtime/runtime.js
new file mode 100644
index 00000000..5593ca59
--- /dev/null
+++ b/node_modules/@babel/runtime/node_modules/regenerator-runtime/runtime.js
@@ -0,0 +1,761 @@
+/**
+ * Copyright (c) 2014-present, Facebook, Inc.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+var runtime = (function (exports) {
+ "use strict";
+
+ var Op = Object.prototype;
+ var hasOwn = Op.hasOwnProperty;
+ var defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; };
+ var undefined; // More compressible than void 0.
+ var $Symbol = typeof Symbol === "function" ? Symbol : {};
+ var iteratorSymbol = $Symbol.iterator || "@@iterator";
+ var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";
+ var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
+
+ function define(obj, key, value) {
+ Object.defineProperty(obj, key, {
+ value: value,
+ enumerable: true,
+ configurable: true,
+ writable: true
+ });
+ return obj[key];
+ }
+ try {
+ // IE 8 has a broken Object.defineProperty that only works on DOM objects.
+ define({}, "");
+ } catch (err) {
+ define = function(obj, key, value) {
+ return obj[key] = value;
+ };
+ }
+
+ function wrap(innerFn, outerFn, self, tryLocsList) {
+ // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.
+ var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;
+ var generator = Object.create(protoGenerator.prototype);
+ var context = new Context(tryLocsList || []);
+
+ // The ._invoke method unifies the implementations of the .next,
+ // .throw, and .return methods.
+ defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) });
+
+ return generator;
+ }
+ exports.wrap = wrap;
+
+ // Try/catch helper to minimize deoptimizations. Returns a completion
+ // record like context.tryEntries[i].completion. This interface could
+ // have been (and was previously) designed to take a closure to be
+ // invoked without arguments, but in all the cases we care about we
+ // already have an existing method we want to call, so there's no need
+ // to create a new function object. We can even get away with assuming
+ // the method takes exactly one argument, since that happens to be true
+ // in every case, so we don't have to touch the arguments object. The
+ // only additional allocation required is the completion record, which
+ // has a stable shape and so hopefully should be cheap to allocate.
+ function tryCatch(fn, obj, arg) {
+ try {
+ return { type: "normal", arg: fn.call(obj, arg) };
+ } catch (err) {
+ return { type: "throw", arg: err };
+ }
+ }
+
+ var GenStateSuspendedStart = "suspendedStart";
+ var GenStateSuspendedYield = "suspendedYield";
+ var GenStateExecuting = "executing";
+ var GenStateCompleted = "completed";
+
+ // Returning this object from the innerFn has the same effect as
+ // breaking out of the dispatch switch statement.
+ var ContinueSentinel = {};
+
+ // Dummy constructor functions that we use as the .constructor and
+ // .constructor.prototype properties for functions that return Generator
+ // objects. For full spec compliance, you may wish to configure your
+ // minifier not to mangle the names of these two functions.
+ function Generator() {}
+ function GeneratorFunction() {}
+ function GeneratorFunctionPrototype() {}
+
+ // This is a polyfill for %IteratorPrototype% for environments that
+ // don't natively support it.
+ var IteratorPrototype = {};
+ define(IteratorPrototype, iteratorSymbol, function () {
+ return this;
+ });
+
+ var getProto = Object.getPrototypeOf;
+ var NativeIteratorPrototype = getProto && getProto(getProto(values([])));
+ if (NativeIteratorPrototype &&
+ NativeIteratorPrototype !== Op &&
+ hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {
+ // This environment has a native %IteratorPrototype%; use it instead
+ // of the polyfill.
+ IteratorPrototype = NativeIteratorPrototype;
+ }
+
+ var Gp = GeneratorFunctionPrototype.prototype =
+ Generator.prototype = Object.create(IteratorPrototype);
+ GeneratorFunction.prototype = GeneratorFunctionPrototype;
+ defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: true });
+ defineProperty(
+ GeneratorFunctionPrototype,
+ "constructor",
+ { value: GeneratorFunction, configurable: true }
+ );
+ GeneratorFunction.displayName = define(
+ GeneratorFunctionPrototype,
+ toStringTagSymbol,
+ "GeneratorFunction"
+ );
+
+ // Helper for defining the .next, .throw, and .return methods of the
+ // Iterator interface in terms of a single ._invoke method.
+ function defineIteratorMethods(prototype) {
+ ["next", "throw", "return"].forEach(function(method) {
+ define(prototype, method, function(arg) {
+ return this._invoke(method, arg);
+ });
+ });
+ }
+
+ exports.isGeneratorFunction = function(genFun) {
+ var ctor = typeof genFun === "function" && genFun.constructor;
+ return ctor
+ ? ctor === GeneratorFunction ||
+ // For the native GeneratorFunction constructor, the best we can
+ // do is to check its .name property.
+ (ctor.displayName || ctor.name) === "GeneratorFunction"
+ : false;
+ };
+
+ exports.mark = function(genFun) {
+ if (Object.setPrototypeOf) {
+ Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);
+ } else {
+ genFun.__proto__ = GeneratorFunctionPrototype;
+ define(genFun, toStringTagSymbol, "GeneratorFunction");
+ }
+ genFun.prototype = Object.create(Gp);
+ return genFun;
+ };
+
+ // Within the body of any async function, `await x` is transformed to
+ // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test
+ // `hasOwn.call(value, "__await")` to determine if the yielded value is
+ // meant to be awaited.
+ exports.awrap = function(arg) {
+ return { __await: arg };
+ };
+
+ function AsyncIterator(generator, PromiseImpl) {
+ function invoke(method, arg, resolve, reject) {
+ var record = tryCatch(generator[method], generator, arg);
+ if (record.type === "throw") {
+ reject(record.arg);
+ } else {
+ var result = record.arg;
+ var value = result.value;
+ if (value &&
+ typeof value === "object" &&
+ hasOwn.call(value, "__await")) {
+ return PromiseImpl.resolve(value.__await).then(function(value) {
+ invoke("next", value, resolve, reject);
+ }, function(err) {
+ invoke("throw", err, resolve, reject);
+ });
+ }
+
+ return PromiseImpl.resolve(value).then(function(unwrapped) {
+ // When a yielded Promise is resolved, its final value becomes
+ // the .value of the Promise<{value,done}> result for the
+ // current iteration.
+ result.value = unwrapped;
+ resolve(result);
+ }, function(error) {
+ // If a rejected Promise was yielded, throw the rejection back
+ // into the async generator function so it can be handled there.
+ return invoke("throw", error, resolve, reject);
+ });
+ }
+ }
+
+ var previousPromise;
+
+ function enqueue(method, arg) {
+ function callInvokeWithMethodAndArg() {
+ return new PromiseImpl(function(resolve, reject) {
+ invoke(method, arg, resolve, reject);
+ });
+ }
+
+ return previousPromise =
+ // If enqueue has been called before, then we want to wait until
+ // all previous Promises have been resolved before calling invoke,
+ // so that results are always delivered in the correct order. If
+ // enqueue has not been called before, then it is important to
+ // call invoke immediately, without waiting on a callback to fire,
+ // so that the async generator function has the opportunity to do
+ // any necessary setup in a predictable way. This predictability
+ // is why the Promise constructor synchronously invokes its
+ // executor callback, and why async functions synchronously
+ // execute code before the first await. Since we implement simple
+ // async functions in terms of async generators, it is especially
+ // important to get this right, even though it requires care.
+ previousPromise ? previousPromise.then(
+ callInvokeWithMethodAndArg,
+ // Avoid propagating failures to Promises returned by later
+ // invocations of the iterator.
+ callInvokeWithMethodAndArg
+ ) : callInvokeWithMethodAndArg();
+ }
+
+ // Define the unified helper method that is used to implement .next,
+ // .throw, and .return (see defineIteratorMethods).
+ defineProperty(this, "_invoke", { value: enqueue });
+ }
+
+ defineIteratorMethods(AsyncIterator.prototype);
+ define(AsyncIterator.prototype, asyncIteratorSymbol, function () {
+ return this;
+ });
+ exports.AsyncIterator = AsyncIterator;
+
+ // Note that simple async functions are implemented on top of
+ // AsyncIterator objects; they just return a Promise for the value of
+ // the final result produced by the iterator.
+ exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {
+ if (PromiseImpl === void 0) PromiseImpl = Promise;
+
+ var iter = new AsyncIterator(
+ wrap(innerFn, outerFn, self, tryLocsList),
+ PromiseImpl
+ );
+
+ return exports.isGeneratorFunction(outerFn)
+ ? iter // If outerFn is a generator, return the full iterator.
+ : iter.next().then(function(result) {
+ return result.done ? result.value : iter.next();
+ });
+ };
+
+ function makeInvokeMethod(innerFn, self, context) {
+ var state = GenStateSuspendedStart;
+
+ return function invoke(method, arg) {
+ if (state === GenStateExecuting) {
+ throw new Error("Generator is already running");
+ }
+
+ if (state === GenStateCompleted) {
+ if (method === "throw") {
+ throw arg;
+ }
+
+ // Be forgiving, per GeneratorResume behavior specified since ES2015:
+ // ES2015 spec, step 3: https://262.ecma-international.org/6.0/#sec-generatorresume
+ // Latest spec, step 2: https://tc39.es/ecma262/#sec-generatorresume
+ return doneResult();
+ }
+
+ context.method = method;
+ context.arg = arg;
+
+ while (true) {
+ var delegate = context.delegate;
+ if (delegate) {
+ var delegateResult = maybeInvokeDelegate(delegate, context);
+ if (delegateResult) {
+ if (delegateResult === ContinueSentinel) continue;
+ return delegateResult;
+ }
+ }
+
+ if (context.method === "next") {
+ // Setting context._sent for legacy support of Babel's
+ // function.sent implementation.
+ context.sent = context._sent = context.arg;
+
+ } else if (context.method === "throw") {
+ if (state === GenStateSuspendedStart) {
+ state = GenStateCompleted;
+ throw context.arg;
+ }
+
+ context.dispatchException(context.arg);
+
+ } else if (context.method === "return") {
+ context.abrupt("return", context.arg);
+ }
+
+ state = GenStateExecuting;
+
+ var record = tryCatch(innerFn, self, context);
+ if (record.type === "normal") {
+ // If an exception is thrown from innerFn, we leave state ===
+ // GenStateExecuting and loop back for another invocation.
+ state = context.done
+ ? GenStateCompleted
+ : GenStateSuspendedYield;
+
+ if (record.arg === ContinueSentinel) {
+ continue;
+ }
+
+ return {
+ value: record.arg,
+ done: context.done
+ };
+
+ } else if (record.type === "throw") {
+ state = GenStateCompleted;
+ // Dispatch the exception by looping back around to the
+ // context.dispatchException(context.arg) call above.
+ context.method = "throw";
+ context.arg = record.arg;
+ }
+ }
+ };
+ }
+
+ // Call delegate.iterator[context.method](context.arg) and handle the
+ // result, either by returning a { value, done } result from the
+ // delegate iterator, or by modifying context.method and context.arg,
+ // setting context.delegate to null, and returning the ContinueSentinel.
+ function maybeInvokeDelegate(delegate, context) {
+ var methodName = context.method;
+ var method = delegate.iterator[methodName];
+ if (method === undefined) {
+ // A .throw or .return when the delegate iterator has no .throw
+ // method, or a missing .next method, always terminate the
+ // yield* loop.
+ context.delegate = null;
+
+ // Note: ["return"] must be used for ES3 parsing compatibility.
+ if (methodName === "throw" && delegate.iterator["return"]) {
+ // If the delegate iterator has a return method, give it a
+ // chance to clean up.
+ context.method = "return";
+ context.arg = undefined;
+ maybeInvokeDelegate(delegate, context);
+
+ if (context.method === "throw") {
+ // If maybeInvokeDelegate(context) changed context.method from
+ // "return" to "throw", let that override the TypeError below.
+ return ContinueSentinel;
+ }
+ }
+ if (methodName !== "return") {
+ context.method = "throw";
+ context.arg = new TypeError(
+ "The iterator does not provide a '" + methodName + "' method");
+ }
+
+ return ContinueSentinel;
+ }
+
+ var record = tryCatch(method, delegate.iterator, context.arg);
+
+ if (record.type === "throw") {
+ context.method = "throw";
+ context.arg = record.arg;
+ context.delegate = null;
+ return ContinueSentinel;
+ }
+
+ var info = record.arg;
+
+ if (! info) {
+ context.method = "throw";
+ context.arg = new TypeError("iterator result is not an object");
+ context.delegate = null;
+ return ContinueSentinel;
+ }
+
+ if (info.done) {
+ // Assign the result of the finished delegate to the temporary
+ // variable specified by delegate.resultName (see delegateYield).
+ context[delegate.resultName] = info.value;
+
+ // Resume execution at the desired location (see delegateYield).
+ context.next = delegate.nextLoc;
+
+ // If context.method was "throw" but the delegate handled the
+ // exception, let the outer generator proceed normally. If
+ // context.method was "next", forget context.arg since it has been
+ // "consumed" by the delegate iterator. If context.method was
+ // "return", allow the original .return call to continue in the
+ // outer generator.
+ if (context.method !== "return") {
+ context.method = "next";
+ context.arg = undefined;
+ }
+
+ } else {
+ // Re-yield the result returned by the delegate method.
+ return info;
+ }
+
+ // The delegate iterator is finished, so forget it and continue with
+ // the outer generator.
+ context.delegate = null;
+ return ContinueSentinel;
+ }
+
+ // Define Generator.prototype.{next,throw,return} in terms of the
+ // unified ._invoke helper method.
+ defineIteratorMethods(Gp);
+
+ define(Gp, toStringTagSymbol, "Generator");
+
+ // A Generator should always return itself as the iterator object when the
+ // @@iterator function is called on it. Some browsers' implementations of the
+ // iterator prototype chain incorrectly implement this, causing the Generator
+ // object to not be returned from this call. This ensures that doesn't happen.
+ // See https://github.com/facebook/regenerator/issues/274 for more details.
+ define(Gp, iteratorSymbol, function() {
+ return this;
+ });
+
+ define(Gp, "toString", function() {
+ return "[object Generator]";
+ });
+
+ function pushTryEntry(locs) {
+ var entry = { tryLoc: locs[0] };
+
+ if (1 in locs) {
+ entry.catchLoc = locs[1];
+ }
+
+ if (2 in locs) {
+ entry.finallyLoc = locs[2];
+ entry.afterLoc = locs[3];
+ }
+
+ this.tryEntries.push(entry);
+ }
+
+ function resetTryEntry(entry) {
+ var record = entry.completion || {};
+ record.type = "normal";
+ delete record.arg;
+ entry.completion = record;
+ }
+
+ function Context(tryLocsList) {
+ // The root entry object (effectively a try statement without a catch
+ // or a finally block) gives us a place to store values thrown from
+ // locations where there is no enclosing try statement.
+ this.tryEntries = [{ tryLoc: "root" }];
+ tryLocsList.forEach(pushTryEntry, this);
+ this.reset(true);
+ }
+
+ exports.keys = function(val) {
+ var object = Object(val);
+ var keys = [];
+ for (var key in object) {
+ keys.push(key);
+ }
+ keys.reverse();
+
+ // Rather than returning an object with a next method, we keep
+ // things simple and return the next function itself.
+ return function next() {
+ while (keys.length) {
+ var key = keys.pop();
+ if (key in object) {
+ next.value = key;
+ next.done = false;
+ return next;
+ }
+ }
+
+ // To avoid creating an additional object, we just hang the .value
+ // and .done properties off the next function object itself. This
+ // also ensures that the minifier will not anonymize the function.
+ next.done = true;
+ return next;
+ };
+ };
+
+ function values(iterable) {
+ if (iterable != null) {
+ var iteratorMethod = iterable[iteratorSymbol];
+ if (iteratorMethod) {
+ return iteratorMethod.call(iterable);
+ }
+
+ if (typeof iterable.next === "function") {
+ return iterable;
+ }
+
+ if (!isNaN(iterable.length)) {
+ var i = -1, next = function next() {
+ while (++i < iterable.length) {
+ if (hasOwn.call(iterable, i)) {
+ next.value = iterable[i];
+ next.done = false;
+ return next;
+ }
+ }
+
+ next.value = undefined;
+ next.done = true;
+
+ return next;
+ };
+
+ return next.next = next;
+ }
+ }
+
+ throw new TypeError(typeof iterable + " is not iterable");
+ }
+ exports.values = values;
+
+ function doneResult() {
+ return { value: undefined, done: true };
+ }
+
+ Context.prototype = {
+ constructor: Context,
+
+ reset: function(skipTempReset) {
+ this.prev = 0;
+ this.next = 0;
+ // Resetting context._sent for legacy support of Babel's
+ // function.sent implementation.
+ this.sent = this._sent = undefined;
+ this.done = false;
+ this.delegate = null;
+
+ this.method = "next";
+ this.arg = undefined;
+
+ this.tryEntries.forEach(resetTryEntry);
+
+ if (!skipTempReset) {
+ for (var name in this) {
+ // Not sure about the optimal order of these conditions:
+ if (name.charAt(0) === "t" &&
+ hasOwn.call(this, name) &&
+ !isNaN(+name.slice(1))) {
+ this[name] = undefined;
+ }
+ }
+ }
+ },
+
+ stop: function() {
+ this.done = true;
+
+ var rootEntry = this.tryEntries[0];
+ var rootRecord = rootEntry.completion;
+ if (rootRecord.type === "throw") {
+ throw rootRecord.arg;
+ }
+
+ return this.rval;
+ },
+
+ dispatchException: function(exception) {
+ if (this.done) {
+ throw exception;
+ }
+
+ var context = this;
+ function handle(loc, caught) {
+ record.type = "throw";
+ record.arg = exception;
+ context.next = loc;
+
+ if (caught) {
+ // If the dispatched exception was caught by a catch block,
+ // then let that catch block handle the exception normally.
+ context.method = "next";
+ context.arg = undefined;
+ }
+
+ return !! caught;
+ }
+
+ for (var i = this.tryEntries.length - 1; i >= 0; --i) {
+ var entry = this.tryEntries[i];
+ var record = entry.completion;
+
+ if (entry.tryLoc === "root") {
+ // Exception thrown outside of any try block that could handle
+ // it, so set the completion value of the entire function to
+ // throw the exception.
+ return handle("end");
+ }
+
+ if (entry.tryLoc <= this.prev) {
+ var hasCatch = hasOwn.call(entry, "catchLoc");
+ var hasFinally = hasOwn.call(entry, "finallyLoc");
+
+ if (hasCatch && hasFinally) {
+ if (this.prev < entry.catchLoc) {
+ return handle(entry.catchLoc, true);
+ } else if (this.prev < entry.finallyLoc) {
+ return handle(entry.finallyLoc);
+ }
+
+ } else if (hasCatch) {
+ if (this.prev < entry.catchLoc) {
+ return handle(entry.catchLoc, true);
+ }
+
+ } else if (hasFinally) {
+ if (this.prev < entry.finallyLoc) {
+ return handle(entry.finallyLoc);
+ }
+
+ } else {
+ throw new Error("try statement without catch or finally");
+ }
+ }
+ }
+ },
+
+ abrupt: function(type, arg) {
+ for (var i = this.tryEntries.length - 1; i >= 0; --i) {
+ var entry = this.tryEntries[i];
+ if (entry.tryLoc <= this.prev &&
+ hasOwn.call(entry, "finallyLoc") &&
+ this.prev < entry.finallyLoc) {
+ var finallyEntry = entry;
+ break;
+ }
+ }
+
+ if (finallyEntry &&
+ (type === "break" ||
+ type === "continue") &&
+ finallyEntry.tryLoc <= arg &&
+ arg <= finallyEntry.finallyLoc) {
+ // Ignore the finally entry if control is not jumping to a
+ // location outside the try/catch block.
+ finallyEntry = null;
+ }
+
+ var record = finallyEntry ? finallyEntry.completion : {};
+ record.type = type;
+ record.arg = arg;
+
+ if (finallyEntry) {
+ this.method = "next";
+ this.next = finallyEntry.finallyLoc;
+ return ContinueSentinel;
+ }
+
+ return this.complete(record);
+ },
+
+ complete: function(record, afterLoc) {
+ if (record.type === "throw") {
+ throw record.arg;
+ }
+
+ if (record.type === "break" ||
+ record.type === "continue") {
+ this.next = record.arg;
+ } else if (record.type === "return") {
+ this.rval = this.arg = record.arg;
+ this.method = "return";
+ this.next = "end";
+ } else if (record.type === "normal" && afterLoc) {
+ this.next = afterLoc;
+ }
+
+ return ContinueSentinel;
+ },
+
+ finish: function(finallyLoc) {
+ for (var i = this.tryEntries.length - 1; i >= 0; --i) {
+ var entry = this.tryEntries[i];
+ if (entry.finallyLoc === finallyLoc) {
+ this.complete(entry.completion, entry.afterLoc);
+ resetTryEntry(entry);
+ return ContinueSentinel;
+ }
+ }
+ },
+
+ "catch": function(tryLoc) {
+ for (var i = this.tryEntries.length - 1; i >= 0; --i) {
+ var entry = this.tryEntries[i];
+ if (entry.tryLoc === tryLoc) {
+ var record = entry.completion;
+ if (record.type === "throw") {
+ var thrown = record.arg;
+ resetTryEntry(entry);
+ }
+ return thrown;
+ }
+ }
+
+ // The context.catch method must only be called with a location
+ // argument that corresponds to a known catch block.
+ throw new Error("illegal catch attempt");
+ },
+
+ delegateYield: function(iterable, resultName, nextLoc) {
+ this.delegate = {
+ iterator: values(iterable),
+ resultName: resultName,
+ nextLoc: nextLoc
+ };
+
+ if (this.method === "next") {
+ // Deliberately forget the last sent value so that we don't
+ // accidentally pass it on to the delegate.
+ this.arg = undefined;
+ }
+
+ return ContinueSentinel;
+ }
+ };
+
+ // Regardless of whether this script is executing as a CommonJS module
+ // or not, return the runtime object so that we can declare the variable
+ // regeneratorRuntime in the outer scope, which allows this module to be
+ // injected easily by `bin/regenerator --include-runtime script.js`.
+ return exports;
+
+}(
+ // If this script is executing as a CommonJS module, use module.exports
+ // as the regeneratorRuntime namespace. Otherwise create a new empty
+ // object. Either way, the resulting object will be used to initialize
+ // the regeneratorRuntime variable at the top of this file.
+ typeof module === "object" ? module.exports : {}
+));
+
+try {
+ regeneratorRuntime = runtime;
+} catch (accidentalStrictMode) {
+ // This module should not be running in strict mode, so the above
+ // assignment should always work unless something is misconfigured. Just
+ // in case runtime.js accidentally runs in strict mode, in modern engines
+ // we can explicitly access globalThis. In older engines we can escape
+ // strict mode using a global Function call. This could conceivably fail
+ // if a Content Security Policy forbids using Function, but in that case
+ // the proper solution is to fix the accidental strict mode problem. If
+ // you've misconfigured your bundler to force strict mode and applied a
+ // CSP to forbid Function, and you're not willing to fix either of those
+ // problems, please detail your unique predicament in a GitHub issue.
+ if (typeof globalThis === "object") {
+ globalThis.regeneratorRuntime = runtime;
+ } else {
+ Function("r", "regeneratorRuntime = r")(runtime);
+ }
+}
diff --git a/node_modules/@babel/runtime/package.json b/node_modules/@babel/runtime/package.json
new file mode 100644
index 00000000..1ad54a5f
--- /dev/null
+++ b/node_modules/@babel/runtime/package.json
@@ -0,0 +1,1065 @@
+{
+ "name": "@babel/runtime",
+ "version": "7.24.6",
+ "description": "babel's modular runtime helpers",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-runtime"
+ },
+ "homepage": "https://babel.dev/docs/en/next/babel-runtime",
+ "author": "The Babel Team (https://babel.dev/team)",
+ "dependencies": {
+ "regenerator-runtime": "^0.14.0"
+ },
+ "exports": {
+ "./helpers/AsyncGenerator": [
+ {
+ "node": "./helpers/AsyncGenerator.js",
+ "import": "./helpers/esm/AsyncGenerator.js",
+ "default": "./helpers/AsyncGenerator.js"
+ },
+ "./helpers/AsyncGenerator.js"
+ ],
+ "./helpers/esm/AsyncGenerator": "./helpers/esm/AsyncGenerator.js",
+ "./helpers/OverloadYield": [
+ {
+ "node": "./helpers/OverloadYield.js",
+ "import": "./helpers/esm/OverloadYield.js",
+ "default": "./helpers/OverloadYield.js"
+ },
+ "./helpers/OverloadYield.js"
+ ],
+ "./helpers/esm/OverloadYield": "./helpers/esm/OverloadYield.js",
+ "./helpers/applyDecoratedDescriptor": [
+ {
+ "node": "./helpers/applyDecoratedDescriptor.js",
+ "import": "./helpers/esm/applyDecoratedDescriptor.js",
+ "default": "./helpers/applyDecoratedDescriptor.js"
+ },
+ "./helpers/applyDecoratedDescriptor.js"
+ ],
+ "./helpers/esm/applyDecoratedDescriptor": "./helpers/esm/applyDecoratedDescriptor.js",
+ "./helpers/applyDecs2311": [
+ {
+ "node": "./helpers/applyDecs2311.js",
+ "import": "./helpers/esm/applyDecs2311.js",
+ "default": "./helpers/applyDecs2311.js"
+ },
+ "./helpers/applyDecs2311.js"
+ ],
+ "./helpers/esm/applyDecs2311": "./helpers/esm/applyDecs2311.js",
+ "./helpers/arrayLikeToArray": [
+ {
+ "node": "./helpers/arrayLikeToArray.js",
+ "import": "./helpers/esm/arrayLikeToArray.js",
+ "default": "./helpers/arrayLikeToArray.js"
+ },
+ "./helpers/arrayLikeToArray.js"
+ ],
+ "./helpers/esm/arrayLikeToArray": "./helpers/esm/arrayLikeToArray.js",
+ "./helpers/arrayWithHoles": [
+ {
+ "node": "./helpers/arrayWithHoles.js",
+ "import": "./helpers/esm/arrayWithHoles.js",
+ "default": "./helpers/arrayWithHoles.js"
+ },
+ "./helpers/arrayWithHoles.js"
+ ],
+ "./helpers/esm/arrayWithHoles": "./helpers/esm/arrayWithHoles.js",
+ "./helpers/arrayWithoutHoles": [
+ {
+ "node": "./helpers/arrayWithoutHoles.js",
+ "import": "./helpers/esm/arrayWithoutHoles.js",
+ "default": "./helpers/arrayWithoutHoles.js"
+ },
+ "./helpers/arrayWithoutHoles.js"
+ ],
+ "./helpers/esm/arrayWithoutHoles": "./helpers/esm/arrayWithoutHoles.js",
+ "./helpers/assertClassBrand": [
+ {
+ "node": "./helpers/assertClassBrand.js",
+ "import": "./helpers/esm/assertClassBrand.js",
+ "default": "./helpers/assertClassBrand.js"
+ },
+ "./helpers/assertClassBrand.js"
+ ],
+ "./helpers/esm/assertClassBrand": "./helpers/esm/assertClassBrand.js",
+ "./helpers/assertThisInitialized": [
+ {
+ "node": "./helpers/assertThisInitialized.js",
+ "import": "./helpers/esm/assertThisInitialized.js",
+ "default": "./helpers/assertThisInitialized.js"
+ },
+ "./helpers/assertThisInitialized.js"
+ ],
+ "./helpers/esm/assertThisInitialized": "./helpers/esm/assertThisInitialized.js",
+ "./helpers/asyncGeneratorDelegate": [
+ {
+ "node": "./helpers/asyncGeneratorDelegate.js",
+ "import": "./helpers/esm/asyncGeneratorDelegate.js",
+ "default": "./helpers/asyncGeneratorDelegate.js"
+ },
+ "./helpers/asyncGeneratorDelegate.js"
+ ],
+ "./helpers/esm/asyncGeneratorDelegate": "./helpers/esm/asyncGeneratorDelegate.js",
+ "./helpers/asyncIterator": [
+ {
+ "node": "./helpers/asyncIterator.js",
+ "import": "./helpers/esm/asyncIterator.js",
+ "default": "./helpers/asyncIterator.js"
+ },
+ "./helpers/asyncIterator.js"
+ ],
+ "./helpers/esm/asyncIterator": "./helpers/esm/asyncIterator.js",
+ "./helpers/asyncToGenerator": [
+ {
+ "node": "./helpers/asyncToGenerator.js",
+ "import": "./helpers/esm/asyncToGenerator.js",
+ "default": "./helpers/asyncToGenerator.js"
+ },
+ "./helpers/asyncToGenerator.js"
+ ],
+ "./helpers/esm/asyncToGenerator": "./helpers/esm/asyncToGenerator.js",
+ "./helpers/awaitAsyncGenerator": [
+ {
+ "node": "./helpers/awaitAsyncGenerator.js",
+ "import": "./helpers/esm/awaitAsyncGenerator.js",
+ "default": "./helpers/awaitAsyncGenerator.js"
+ },
+ "./helpers/awaitAsyncGenerator.js"
+ ],
+ "./helpers/esm/awaitAsyncGenerator": "./helpers/esm/awaitAsyncGenerator.js",
+ "./helpers/callSuper": [
+ {
+ "node": "./helpers/callSuper.js",
+ "import": "./helpers/esm/callSuper.js",
+ "default": "./helpers/callSuper.js"
+ },
+ "./helpers/callSuper.js"
+ ],
+ "./helpers/esm/callSuper": "./helpers/esm/callSuper.js",
+ "./helpers/checkInRHS": [
+ {
+ "node": "./helpers/checkInRHS.js",
+ "import": "./helpers/esm/checkInRHS.js",
+ "default": "./helpers/checkInRHS.js"
+ },
+ "./helpers/checkInRHS.js"
+ ],
+ "./helpers/esm/checkInRHS": "./helpers/esm/checkInRHS.js",
+ "./helpers/checkPrivateRedeclaration": [
+ {
+ "node": "./helpers/checkPrivateRedeclaration.js",
+ "import": "./helpers/esm/checkPrivateRedeclaration.js",
+ "default": "./helpers/checkPrivateRedeclaration.js"
+ },
+ "./helpers/checkPrivateRedeclaration.js"
+ ],
+ "./helpers/esm/checkPrivateRedeclaration": "./helpers/esm/checkPrivateRedeclaration.js",
+ "./helpers/classCallCheck": [
+ {
+ "node": "./helpers/classCallCheck.js",
+ "import": "./helpers/esm/classCallCheck.js",
+ "default": "./helpers/classCallCheck.js"
+ },
+ "./helpers/classCallCheck.js"
+ ],
+ "./helpers/esm/classCallCheck": "./helpers/esm/classCallCheck.js",
+ "./helpers/classNameTDZError": [
+ {
+ "node": "./helpers/classNameTDZError.js",
+ "import": "./helpers/esm/classNameTDZError.js",
+ "default": "./helpers/classNameTDZError.js"
+ },
+ "./helpers/classNameTDZError.js"
+ ],
+ "./helpers/esm/classNameTDZError": "./helpers/esm/classNameTDZError.js",
+ "./helpers/classPrivateFieldGet2": [
+ {
+ "node": "./helpers/classPrivateFieldGet2.js",
+ "import": "./helpers/esm/classPrivateFieldGet2.js",
+ "default": "./helpers/classPrivateFieldGet2.js"
+ },
+ "./helpers/classPrivateFieldGet2.js"
+ ],
+ "./helpers/esm/classPrivateFieldGet2": "./helpers/esm/classPrivateFieldGet2.js",
+ "./helpers/classPrivateFieldInitSpec": [
+ {
+ "node": "./helpers/classPrivateFieldInitSpec.js",
+ "import": "./helpers/esm/classPrivateFieldInitSpec.js",
+ "default": "./helpers/classPrivateFieldInitSpec.js"
+ },
+ "./helpers/classPrivateFieldInitSpec.js"
+ ],
+ "./helpers/esm/classPrivateFieldInitSpec": "./helpers/esm/classPrivateFieldInitSpec.js",
+ "./helpers/classPrivateFieldLooseBase": [
+ {
+ "node": "./helpers/classPrivateFieldLooseBase.js",
+ "import": "./helpers/esm/classPrivateFieldLooseBase.js",
+ "default": "./helpers/classPrivateFieldLooseBase.js"
+ },
+ "./helpers/classPrivateFieldLooseBase.js"
+ ],
+ "./helpers/esm/classPrivateFieldLooseBase": "./helpers/esm/classPrivateFieldLooseBase.js",
+ "./helpers/classPrivateFieldLooseKey": [
+ {
+ "node": "./helpers/classPrivateFieldLooseKey.js",
+ "import": "./helpers/esm/classPrivateFieldLooseKey.js",
+ "default": "./helpers/classPrivateFieldLooseKey.js"
+ },
+ "./helpers/classPrivateFieldLooseKey.js"
+ ],
+ "./helpers/esm/classPrivateFieldLooseKey": "./helpers/esm/classPrivateFieldLooseKey.js",
+ "./helpers/classPrivateFieldSet2": [
+ {
+ "node": "./helpers/classPrivateFieldSet2.js",
+ "import": "./helpers/esm/classPrivateFieldSet2.js",
+ "default": "./helpers/classPrivateFieldSet2.js"
+ },
+ "./helpers/classPrivateFieldSet2.js"
+ ],
+ "./helpers/esm/classPrivateFieldSet2": "./helpers/esm/classPrivateFieldSet2.js",
+ "./helpers/classPrivateGetter": [
+ {
+ "node": "./helpers/classPrivateGetter.js",
+ "import": "./helpers/esm/classPrivateGetter.js",
+ "default": "./helpers/classPrivateGetter.js"
+ },
+ "./helpers/classPrivateGetter.js"
+ ],
+ "./helpers/esm/classPrivateGetter": "./helpers/esm/classPrivateGetter.js",
+ "./helpers/classPrivateMethodInitSpec": [
+ {
+ "node": "./helpers/classPrivateMethodInitSpec.js",
+ "import": "./helpers/esm/classPrivateMethodInitSpec.js",
+ "default": "./helpers/classPrivateMethodInitSpec.js"
+ },
+ "./helpers/classPrivateMethodInitSpec.js"
+ ],
+ "./helpers/esm/classPrivateMethodInitSpec": "./helpers/esm/classPrivateMethodInitSpec.js",
+ "./helpers/classPrivateSetter": [
+ {
+ "node": "./helpers/classPrivateSetter.js",
+ "import": "./helpers/esm/classPrivateSetter.js",
+ "default": "./helpers/classPrivateSetter.js"
+ },
+ "./helpers/classPrivateSetter.js"
+ ],
+ "./helpers/esm/classPrivateSetter": "./helpers/esm/classPrivateSetter.js",
+ "./helpers/classStaticPrivateMethodGet": [
+ {
+ "node": "./helpers/classStaticPrivateMethodGet.js",
+ "import": "./helpers/esm/classStaticPrivateMethodGet.js",
+ "default": "./helpers/classStaticPrivateMethodGet.js"
+ },
+ "./helpers/classStaticPrivateMethodGet.js"
+ ],
+ "./helpers/esm/classStaticPrivateMethodGet": "./helpers/esm/classStaticPrivateMethodGet.js",
+ "./helpers/construct": [
+ {
+ "node": "./helpers/construct.js",
+ "import": "./helpers/esm/construct.js",
+ "default": "./helpers/construct.js"
+ },
+ "./helpers/construct.js"
+ ],
+ "./helpers/esm/construct": "./helpers/esm/construct.js",
+ "./helpers/createClass": [
+ {
+ "node": "./helpers/createClass.js",
+ "import": "./helpers/esm/createClass.js",
+ "default": "./helpers/createClass.js"
+ },
+ "./helpers/createClass.js"
+ ],
+ "./helpers/esm/createClass": "./helpers/esm/createClass.js",
+ "./helpers/createForOfIteratorHelper": [
+ {
+ "node": "./helpers/createForOfIteratorHelper.js",
+ "import": "./helpers/esm/createForOfIteratorHelper.js",
+ "default": "./helpers/createForOfIteratorHelper.js"
+ },
+ "./helpers/createForOfIteratorHelper.js"
+ ],
+ "./helpers/esm/createForOfIteratorHelper": "./helpers/esm/createForOfIteratorHelper.js",
+ "./helpers/createForOfIteratorHelperLoose": [
+ {
+ "node": "./helpers/createForOfIteratorHelperLoose.js",
+ "import": "./helpers/esm/createForOfIteratorHelperLoose.js",
+ "default": "./helpers/createForOfIteratorHelperLoose.js"
+ },
+ "./helpers/createForOfIteratorHelperLoose.js"
+ ],
+ "./helpers/esm/createForOfIteratorHelperLoose": "./helpers/esm/createForOfIteratorHelperLoose.js",
+ "./helpers/createSuper": [
+ {
+ "node": "./helpers/createSuper.js",
+ "import": "./helpers/esm/createSuper.js",
+ "default": "./helpers/createSuper.js"
+ },
+ "./helpers/createSuper.js"
+ ],
+ "./helpers/esm/createSuper": "./helpers/esm/createSuper.js",
+ "./helpers/decorate": [
+ {
+ "node": "./helpers/decorate.js",
+ "import": "./helpers/esm/decorate.js",
+ "default": "./helpers/decorate.js"
+ },
+ "./helpers/decorate.js"
+ ],
+ "./helpers/esm/decorate": "./helpers/esm/decorate.js",
+ "./helpers/defaults": [
+ {
+ "node": "./helpers/defaults.js",
+ "import": "./helpers/esm/defaults.js",
+ "default": "./helpers/defaults.js"
+ },
+ "./helpers/defaults.js"
+ ],
+ "./helpers/esm/defaults": "./helpers/esm/defaults.js",
+ "./helpers/defineAccessor": [
+ {
+ "node": "./helpers/defineAccessor.js",
+ "import": "./helpers/esm/defineAccessor.js",
+ "default": "./helpers/defineAccessor.js"
+ },
+ "./helpers/defineAccessor.js"
+ ],
+ "./helpers/esm/defineAccessor": "./helpers/esm/defineAccessor.js",
+ "./helpers/defineProperty": [
+ {
+ "node": "./helpers/defineProperty.js",
+ "import": "./helpers/esm/defineProperty.js",
+ "default": "./helpers/defineProperty.js"
+ },
+ "./helpers/defineProperty.js"
+ ],
+ "./helpers/esm/defineProperty": "./helpers/esm/defineProperty.js",
+ "./helpers/extends": [
+ {
+ "node": "./helpers/extends.js",
+ "import": "./helpers/esm/extends.js",
+ "default": "./helpers/extends.js"
+ },
+ "./helpers/extends.js"
+ ],
+ "./helpers/esm/extends": "./helpers/esm/extends.js",
+ "./helpers/get": [
+ {
+ "node": "./helpers/get.js",
+ "import": "./helpers/esm/get.js",
+ "default": "./helpers/get.js"
+ },
+ "./helpers/get.js"
+ ],
+ "./helpers/esm/get": "./helpers/esm/get.js",
+ "./helpers/getPrototypeOf": [
+ {
+ "node": "./helpers/getPrototypeOf.js",
+ "import": "./helpers/esm/getPrototypeOf.js",
+ "default": "./helpers/getPrototypeOf.js"
+ },
+ "./helpers/getPrototypeOf.js"
+ ],
+ "./helpers/esm/getPrototypeOf": "./helpers/esm/getPrototypeOf.js",
+ "./helpers/identity": [
+ {
+ "node": "./helpers/identity.js",
+ "import": "./helpers/esm/identity.js",
+ "default": "./helpers/identity.js"
+ },
+ "./helpers/identity.js"
+ ],
+ "./helpers/esm/identity": "./helpers/esm/identity.js",
+ "./helpers/importDeferProxy": [
+ {
+ "node": "./helpers/importDeferProxy.js",
+ "import": "./helpers/esm/importDeferProxy.js",
+ "default": "./helpers/importDeferProxy.js"
+ },
+ "./helpers/importDeferProxy.js"
+ ],
+ "./helpers/esm/importDeferProxy": "./helpers/esm/importDeferProxy.js",
+ "./helpers/inherits": [
+ {
+ "node": "./helpers/inherits.js",
+ "import": "./helpers/esm/inherits.js",
+ "default": "./helpers/inherits.js"
+ },
+ "./helpers/inherits.js"
+ ],
+ "./helpers/esm/inherits": "./helpers/esm/inherits.js",
+ "./helpers/inheritsLoose": [
+ {
+ "node": "./helpers/inheritsLoose.js",
+ "import": "./helpers/esm/inheritsLoose.js",
+ "default": "./helpers/inheritsLoose.js"
+ },
+ "./helpers/inheritsLoose.js"
+ ],
+ "./helpers/esm/inheritsLoose": "./helpers/esm/inheritsLoose.js",
+ "./helpers/initializerDefineProperty": [
+ {
+ "node": "./helpers/initializerDefineProperty.js",
+ "import": "./helpers/esm/initializerDefineProperty.js",
+ "default": "./helpers/initializerDefineProperty.js"
+ },
+ "./helpers/initializerDefineProperty.js"
+ ],
+ "./helpers/esm/initializerDefineProperty": "./helpers/esm/initializerDefineProperty.js",
+ "./helpers/initializerWarningHelper": [
+ {
+ "node": "./helpers/initializerWarningHelper.js",
+ "import": "./helpers/esm/initializerWarningHelper.js",
+ "default": "./helpers/initializerWarningHelper.js"
+ },
+ "./helpers/initializerWarningHelper.js"
+ ],
+ "./helpers/esm/initializerWarningHelper": "./helpers/esm/initializerWarningHelper.js",
+ "./helpers/instanceof": [
+ {
+ "node": "./helpers/instanceof.js",
+ "import": "./helpers/esm/instanceof.js",
+ "default": "./helpers/instanceof.js"
+ },
+ "./helpers/instanceof.js"
+ ],
+ "./helpers/esm/instanceof": "./helpers/esm/instanceof.js",
+ "./helpers/interopRequireDefault": [
+ {
+ "node": "./helpers/interopRequireDefault.js",
+ "import": "./helpers/esm/interopRequireDefault.js",
+ "default": "./helpers/interopRequireDefault.js"
+ },
+ "./helpers/interopRequireDefault.js"
+ ],
+ "./helpers/esm/interopRequireDefault": "./helpers/esm/interopRequireDefault.js",
+ "./helpers/interopRequireWildcard": [
+ {
+ "node": "./helpers/interopRequireWildcard.js",
+ "import": "./helpers/esm/interopRequireWildcard.js",
+ "default": "./helpers/interopRequireWildcard.js"
+ },
+ "./helpers/interopRequireWildcard.js"
+ ],
+ "./helpers/esm/interopRequireWildcard": "./helpers/esm/interopRequireWildcard.js",
+ "./helpers/isNativeFunction": [
+ {
+ "node": "./helpers/isNativeFunction.js",
+ "import": "./helpers/esm/isNativeFunction.js",
+ "default": "./helpers/isNativeFunction.js"
+ },
+ "./helpers/isNativeFunction.js"
+ ],
+ "./helpers/esm/isNativeFunction": "./helpers/esm/isNativeFunction.js",
+ "./helpers/isNativeReflectConstruct": [
+ {
+ "node": "./helpers/isNativeReflectConstruct.js",
+ "import": "./helpers/esm/isNativeReflectConstruct.js",
+ "default": "./helpers/isNativeReflectConstruct.js"
+ },
+ "./helpers/isNativeReflectConstruct.js"
+ ],
+ "./helpers/esm/isNativeReflectConstruct": "./helpers/esm/isNativeReflectConstruct.js",
+ "./helpers/iterableToArray": [
+ {
+ "node": "./helpers/iterableToArray.js",
+ "import": "./helpers/esm/iterableToArray.js",
+ "default": "./helpers/iterableToArray.js"
+ },
+ "./helpers/iterableToArray.js"
+ ],
+ "./helpers/esm/iterableToArray": "./helpers/esm/iterableToArray.js",
+ "./helpers/iterableToArrayLimit": [
+ {
+ "node": "./helpers/iterableToArrayLimit.js",
+ "import": "./helpers/esm/iterableToArrayLimit.js",
+ "default": "./helpers/iterableToArrayLimit.js"
+ },
+ "./helpers/iterableToArrayLimit.js"
+ ],
+ "./helpers/esm/iterableToArrayLimit": "./helpers/esm/iterableToArrayLimit.js",
+ "./helpers/iterableToArrayLimitLoose": [
+ {
+ "node": "./helpers/iterableToArrayLimitLoose.js",
+ "import": "./helpers/esm/iterableToArrayLimitLoose.js",
+ "default": "./helpers/iterableToArrayLimitLoose.js"
+ },
+ "./helpers/iterableToArrayLimitLoose.js"
+ ],
+ "./helpers/esm/iterableToArrayLimitLoose": "./helpers/esm/iterableToArrayLimitLoose.js",
+ "./helpers/jsx": [
+ {
+ "node": "./helpers/jsx.js",
+ "import": "./helpers/esm/jsx.js",
+ "default": "./helpers/jsx.js"
+ },
+ "./helpers/jsx.js"
+ ],
+ "./helpers/esm/jsx": "./helpers/esm/jsx.js",
+ "./helpers/maybeArrayLike": [
+ {
+ "node": "./helpers/maybeArrayLike.js",
+ "import": "./helpers/esm/maybeArrayLike.js",
+ "default": "./helpers/maybeArrayLike.js"
+ },
+ "./helpers/maybeArrayLike.js"
+ ],
+ "./helpers/esm/maybeArrayLike": "./helpers/esm/maybeArrayLike.js",
+ "./helpers/newArrowCheck": [
+ {
+ "node": "./helpers/newArrowCheck.js",
+ "import": "./helpers/esm/newArrowCheck.js",
+ "default": "./helpers/newArrowCheck.js"
+ },
+ "./helpers/newArrowCheck.js"
+ ],
+ "./helpers/esm/newArrowCheck": "./helpers/esm/newArrowCheck.js",
+ "./helpers/nonIterableRest": [
+ {
+ "node": "./helpers/nonIterableRest.js",
+ "import": "./helpers/esm/nonIterableRest.js",
+ "default": "./helpers/nonIterableRest.js"
+ },
+ "./helpers/nonIterableRest.js"
+ ],
+ "./helpers/esm/nonIterableRest": "./helpers/esm/nonIterableRest.js",
+ "./helpers/nonIterableSpread": [
+ {
+ "node": "./helpers/nonIterableSpread.js",
+ "import": "./helpers/esm/nonIterableSpread.js",
+ "default": "./helpers/nonIterableSpread.js"
+ },
+ "./helpers/nonIterableSpread.js"
+ ],
+ "./helpers/esm/nonIterableSpread": "./helpers/esm/nonIterableSpread.js",
+ "./helpers/nullishReceiverError": [
+ {
+ "node": "./helpers/nullishReceiverError.js",
+ "import": "./helpers/esm/nullishReceiverError.js",
+ "default": "./helpers/nullishReceiverError.js"
+ },
+ "./helpers/nullishReceiverError.js"
+ ],
+ "./helpers/esm/nullishReceiverError": "./helpers/esm/nullishReceiverError.js",
+ "./helpers/objectDestructuringEmpty": [
+ {
+ "node": "./helpers/objectDestructuringEmpty.js",
+ "import": "./helpers/esm/objectDestructuringEmpty.js",
+ "default": "./helpers/objectDestructuringEmpty.js"
+ },
+ "./helpers/objectDestructuringEmpty.js"
+ ],
+ "./helpers/esm/objectDestructuringEmpty": "./helpers/esm/objectDestructuringEmpty.js",
+ "./helpers/objectSpread2": [
+ {
+ "node": "./helpers/objectSpread2.js",
+ "import": "./helpers/esm/objectSpread2.js",
+ "default": "./helpers/objectSpread2.js"
+ },
+ "./helpers/objectSpread2.js"
+ ],
+ "./helpers/esm/objectSpread2": "./helpers/esm/objectSpread2.js",
+ "./helpers/objectWithoutProperties": [
+ {
+ "node": "./helpers/objectWithoutProperties.js",
+ "import": "./helpers/esm/objectWithoutProperties.js",
+ "default": "./helpers/objectWithoutProperties.js"
+ },
+ "./helpers/objectWithoutProperties.js"
+ ],
+ "./helpers/esm/objectWithoutProperties": "./helpers/esm/objectWithoutProperties.js",
+ "./helpers/objectWithoutPropertiesLoose": [
+ {
+ "node": "./helpers/objectWithoutPropertiesLoose.js",
+ "import": "./helpers/esm/objectWithoutPropertiesLoose.js",
+ "default": "./helpers/objectWithoutPropertiesLoose.js"
+ },
+ "./helpers/objectWithoutPropertiesLoose.js"
+ ],
+ "./helpers/esm/objectWithoutPropertiesLoose": "./helpers/esm/objectWithoutPropertiesLoose.js",
+ "./helpers/possibleConstructorReturn": [
+ {
+ "node": "./helpers/possibleConstructorReturn.js",
+ "import": "./helpers/esm/possibleConstructorReturn.js",
+ "default": "./helpers/possibleConstructorReturn.js"
+ },
+ "./helpers/possibleConstructorReturn.js"
+ ],
+ "./helpers/esm/possibleConstructorReturn": "./helpers/esm/possibleConstructorReturn.js",
+ "./helpers/readOnlyError": [
+ {
+ "node": "./helpers/readOnlyError.js",
+ "import": "./helpers/esm/readOnlyError.js",
+ "default": "./helpers/readOnlyError.js"
+ },
+ "./helpers/readOnlyError.js"
+ ],
+ "./helpers/esm/readOnlyError": "./helpers/esm/readOnlyError.js",
+ "./helpers/regeneratorRuntime": [
+ {
+ "node": "./helpers/regeneratorRuntime.js",
+ "import": "./helpers/esm/regeneratorRuntime.js",
+ "default": "./helpers/regeneratorRuntime.js"
+ },
+ "./helpers/regeneratorRuntime.js"
+ ],
+ "./helpers/esm/regeneratorRuntime": "./helpers/esm/regeneratorRuntime.js",
+ "./helpers/set": [
+ {
+ "node": "./helpers/set.js",
+ "import": "./helpers/esm/set.js",
+ "default": "./helpers/set.js"
+ },
+ "./helpers/set.js"
+ ],
+ "./helpers/esm/set": "./helpers/esm/set.js",
+ "./helpers/setFunctionName": [
+ {
+ "node": "./helpers/setFunctionName.js",
+ "import": "./helpers/esm/setFunctionName.js",
+ "default": "./helpers/setFunctionName.js"
+ },
+ "./helpers/setFunctionName.js"
+ ],
+ "./helpers/esm/setFunctionName": "./helpers/esm/setFunctionName.js",
+ "./helpers/setPrototypeOf": [
+ {
+ "node": "./helpers/setPrototypeOf.js",
+ "import": "./helpers/esm/setPrototypeOf.js",
+ "default": "./helpers/setPrototypeOf.js"
+ },
+ "./helpers/setPrototypeOf.js"
+ ],
+ "./helpers/esm/setPrototypeOf": "./helpers/esm/setPrototypeOf.js",
+ "./helpers/skipFirstGeneratorNext": [
+ {
+ "node": "./helpers/skipFirstGeneratorNext.js",
+ "import": "./helpers/esm/skipFirstGeneratorNext.js",
+ "default": "./helpers/skipFirstGeneratorNext.js"
+ },
+ "./helpers/skipFirstGeneratorNext.js"
+ ],
+ "./helpers/esm/skipFirstGeneratorNext": "./helpers/esm/skipFirstGeneratorNext.js",
+ "./helpers/slicedToArray": [
+ {
+ "node": "./helpers/slicedToArray.js",
+ "import": "./helpers/esm/slicedToArray.js",
+ "default": "./helpers/slicedToArray.js"
+ },
+ "./helpers/slicedToArray.js"
+ ],
+ "./helpers/esm/slicedToArray": "./helpers/esm/slicedToArray.js",
+ "./helpers/slicedToArrayLoose": [
+ {
+ "node": "./helpers/slicedToArrayLoose.js",
+ "import": "./helpers/esm/slicedToArrayLoose.js",
+ "default": "./helpers/slicedToArrayLoose.js"
+ },
+ "./helpers/slicedToArrayLoose.js"
+ ],
+ "./helpers/esm/slicedToArrayLoose": "./helpers/esm/slicedToArrayLoose.js",
+ "./helpers/superPropBase": [
+ {
+ "node": "./helpers/superPropBase.js",
+ "import": "./helpers/esm/superPropBase.js",
+ "default": "./helpers/superPropBase.js"
+ },
+ "./helpers/superPropBase.js"
+ ],
+ "./helpers/esm/superPropBase": "./helpers/esm/superPropBase.js",
+ "./helpers/taggedTemplateLiteral": [
+ {
+ "node": "./helpers/taggedTemplateLiteral.js",
+ "import": "./helpers/esm/taggedTemplateLiteral.js",
+ "default": "./helpers/taggedTemplateLiteral.js"
+ },
+ "./helpers/taggedTemplateLiteral.js"
+ ],
+ "./helpers/esm/taggedTemplateLiteral": "./helpers/esm/taggedTemplateLiteral.js",
+ "./helpers/taggedTemplateLiteralLoose": [
+ {
+ "node": "./helpers/taggedTemplateLiteralLoose.js",
+ "import": "./helpers/esm/taggedTemplateLiteralLoose.js",
+ "default": "./helpers/taggedTemplateLiteralLoose.js"
+ },
+ "./helpers/taggedTemplateLiteralLoose.js"
+ ],
+ "./helpers/esm/taggedTemplateLiteralLoose": "./helpers/esm/taggedTemplateLiteralLoose.js",
+ "./helpers/tdz": [
+ {
+ "node": "./helpers/tdz.js",
+ "import": "./helpers/esm/tdz.js",
+ "default": "./helpers/tdz.js"
+ },
+ "./helpers/tdz.js"
+ ],
+ "./helpers/esm/tdz": "./helpers/esm/tdz.js",
+ "./helpers/temporalRef": [
+ {
+ "node": "./helpers/temporalRef.js",
+ "import": "./helpers/esm/temporalRef.js",
+ "default": "./helpers/temporalRef.js"
+ },
+ "./helpers/temporalRef.js"
+ ],
+ "./helpers/esm/temporalRef": "./helpers/esm/temporalRef.js",
+ "./helpers/temporalUndefined": [
+ {
+ "node": "./helpers/temporalUndefined.js",
+ "import": "./helpers/esm/temporalUndefined.js",
+ "default": "./helpers/temporalUndefined.js"
+ },
+ "./helpers/temporalUndefined.js"
+ ],
+ "./helpers/esm/temporalUndefined": "./helpers/esm/temporalUndefined.js",
+ "./helpers/toArray": [
+ {
+ "node": "./helpers/toArray.js",
+ "import": "./helpers/esm/toArray.js",
+ "default": "./helpers/toArray.js"
+ },
+ "./helpers/toArray.js"
+ ],
+ "./helpers/esm/toArray": "./helpers/esm/toArray.js",
+ "./helpers/toConsumableArray": [
+ {
+ "node": "./helpers/toConsumableArray.js",
+ "import": "./helpers/esm/toConsumableArray.js",
+ "default": "./helpers/toConsumableArray.js"
+ },
+ "./helpers/toConsumableArray.js"
+ ],
+ "./helpers/esm/toConsumableArray": "./helpers/esm/toConsumableArray.js",
+ "./helpers/toPrimitive": [
+ {
+ "node": "./helpers/toPrimitive.js",
+ "import": "./helpers/esm/toPrimitive.js",
+ "default": "./helpers/toPrimitive.js"
+ },
+ "./helpers/toPrimitive.js"
+ ],
+ "./helpers/esm/toPrimitive": "./helpers/esm/toPrimitive.js",
+ "./helpers/toPropertyKey": [
+ {
+ "node": "./helpers/toPropertyKey.js",
+ "import": "./helpers/esm/toPropertyKey.js",
+ "default": "./helpers/toPropertyKey.js"
+ },
+ "./helpers/toPropertyKey.js"
+ ],
+ "./helpers/esm/toPropertyKey": "./helpers/esm/toPropertyKey.js",
+ "./helpers/toSetter": [
+ {
+ "node": "./helpers/toSetter.js",
+ "import": "./helpers/esm/toSetter.js",
+ "default": "./helpers/toSetter.js"
+ },
+ "./helpers/toSetter.js"
+ ],
+ "./helpers/esm/toSetter": "./helpers/esm/toSetter.js",
+ "./helpers/typeof": [
+ {
+ "node": "./helpers/typeof.js",
+ "import": "./helpers/esm/typeof.js",
+ "default": "./helpers/typeof.js"
+ },
+ "./helpers/typeof.js"
+ ],
+ "./helpers/esm/typeof": "./helpers/esm/typeof.js",
+ "./helpers/unsupportedIterableToArray": [
+ {
+ "node": "./helpers/unsupportedIterableToArray.js",
+ "import": "./helpers/esm/unsupportedIterableToArray.js",
+ "default": "./helpers/unsupportedIterableToArray.js"
+ },
+ "./helpers/unsupportedIterableToArray.js"
+ ],
+ "./helpers/esm/unsupportedIterableToArray": "./helpers/esm/unsupportedIterableToArray.js",
+ "./helpers/usingCtx": [
+ {
+ "node": "./helpers/usingCtx.js",
+ "import": "./helpers/esm/usingCtx.js",
+ "default": "./helpers/usingCtx.js"
+ },
+ "./helpers/usingCtx.js"
+ ],
+ "./helpers/esm/usingCtx": "./helpers/esm/usingCtx.js",
+ "./helpers/wrapAsyncGenerator": [
+ {
+ "node": "./helpers/wrapAsyncGenerator.js",
+ "import": "./helpers/esm/wrapAsyncGenerator.js",
+ "default": "./helpers/wrapAsyncGenerator.js"
+ },
+ "./helpers/wrapAsyncGenerator.js"
+ ],
+ "./helpers/esm/wrapAsyncGenerator": "./helpers/esm/wrapAsyncGenerator.js",
+ "./helpers/wrapNativeSuper": [
+ {
+ "node": "./helpers/wrapNativeSuper.js",
+ "import": "./helpers/esm/wrapNativeSuper.js",
+ "default": "./helpers/wrapNativeSuper.js"
+ },
+ "./helpers/wrapNativeSuper.js"
+ ],
+ "./helpers/esm/wrapNativeSuper": "./helpers/esm/wrapNativeSuper.js",
+ "./helpers/wrapRegExp": [
+ {
+ "node": "./helpers/wrapRegExp.js",
+ "import": "./helpers/esm/wrapRegExp.js",
+ "default": "./helpers/wrapRegExp.js"
+ },
+ "./helpers/wrapRegExp.js"
+ ],
+ "./helpers/esm/wrapRegExp": "./helpers/esm/wrapRegExp.js",
+ "./helpers/writeOnlyError": [
+ {
+ "node": "./helpers/writeOnlyError.js",
+ "import": "./helpers/esm/writeOnlyError.js",
+ "default": "./helpers/writeOnlyError.js"
+ },
+ "./helpers/writeOnlyError.js"
+ ],
+ "./helpers/esm/writeOnlyError": "./helpers/esm/writeOnlyError.js",
+ "./helpers/AwaitValue": [
+ {
+ "node": "./helpers/AwaitValue.js",
+ "import": "./helpers/esm/AwaitValue.js",
+ "default": "./helpers/AwaitValue.js"
+ },
+ "./helpers/AwaitValue.js"
+ ],
+ "./helpers/esm/AwaitValue": "./helpers/esm/AwaitValue.js",
+ "./helpers/applyDecs": [
+ {
+ "node": "./helpers/applyDecs.js",
+ "import": "./helpers/esm/applyDecs.js",
+ "default": "./helpers/applyDecs.js"
+ },
+ "./helpers/applyDecs.js"
+ ],
+ "./helpers/esm/applyDecs": "./helpers/esm/applyDecs.js",
+ "./helpers/applyDecs2203": [
+ {
+ "node": "./helpers/applyDecs2203.js",
+ "import": "./helpers/esm/applyDecs2203.js",
+ "default": "./helpers/applyDecs2203.js"
+ },
+ "./helpers/applyDecs2203.js"
+ ],
+ "./helpers/esm/applyDecs2203": "./helpers/esm/applyDecs2203.js",
+ "./helpers/applyDecs2203R": [
+ {
+ "node": "./helpers/applyDecs2203R.js",
+ "import": "./helpers/esm/applyDecs2203R.js",
+ "default": "./helpers/applyDecs2203R.js"
+ },
+ "./helpers/applyDecs2203R.js"
+ ],
+ "./helpers/esm/applyDecs2203R": "./helpers/esm/applyDecs2203R.js",
+ "./helpers/applyDecs2301": [
+ {
+ "node": "./helpers/applyDecs2301.js",
+ "import": "./helpers/esm/applyDecs2301.js",
+ "default": "./helpers/applyDecs2301.js"
+ },
+ "./helpers/applyDecs2301.js"
+ ],
+ "./helpers/esm/applyDecs2301": "./helpers/esm/applyDecs2301.js",
+ "./helpers/applyDecs2305": [
+ {
+ "node": "./helpers/applyDecs2305.js",
+ "import": "./helpers/esm/applyDecs2305.js",
+ "default": "./helpers/applyDecs2305.js"
+ },
+ "./helpers/applyDecs2305.js"
+ ],
+ "./helpers/esm/applyDecs2305": "./helpers/esm/applyDecs2305.js",
+ "./helpers/classApplyDescriptorDestructureSet": [
+ {
+ "node": "./helpers/classApplyDescriptorDestructureSet.js",
+ "import": "./helpers/esm/classApplyDescriptorDestructureSet.js",
+ "default": "./helpers/classApplyDescriptorDestructureSet.js"
+ },
+ "./helpers/classApplyDescriptorDestructureSet.js"
+ ],
+ "./helpers/esm/classApplyDescriptorDestructureSet": "./helpers/esm/classApplyDescriptorDestructureSet.js",
+ "./helpers/classApplyDescriptorGet": [
+ {
+ "node": "./helpers/classApplyDescriptorGet.js",
+ "import": "./helpers/esm/classApplyDescriptorGet.js",
+ "default": "./helpers/classApplyDescriptorGet.js"
+ },
+ "./helpers/classApplyDescriptorGet.js"
+ ],
+ "./helpers/esm/classApplyDescriptorGet": "./helpers/esm/classApplyDescriptorGet.js",
+ "./helpers/classApplyDescriptorSet": [
+ {
+ "node": "./helpers/classApplyDescriptorSet.js",
+ "import": "./helpers/esm/classApplyDescriptorSet.js",
+ "default": "./helpers/classApplyDescriptorSet.js"
+ },
+ "./helpers/classApplyDescriptorSet.js"
+ ],
+ "./helpers/esm/classApplyDescriptorSet": "./helpers/esm/classApplyDescriptorSet.js",
+ "./helpers/classCheckPrivateStaticAccess": [
+ {
+ "node": "./helpers/classCheckPrivateStaticAccess.js",
+ "import": "./helpers/esm/classCheckPrivateStaticAccess.js",
+ "default": "./helpers/classCheckPrivateStaticAccess.js"
+ },
+ "./helpers/classCheckPrivateStaticAccess.js"
+ ],
+ "./helpers/esm/classCheckPrivateStaticAccess": "./helpers/esm/classCheckPrivateStaticAccess.js",
+ "./helpers/classCheckPrivateStaticFieldDescriptor": [
+ {
+ "node": "./helpers/classCheckPrivateStaticFieldDescriptor.js",
+ "import": "./helpers/esm/classCheckPrivateStaticFieldDescriptor.js",
+ "default": "./helpers/classCheckPrivateStaticFieldDescriptor.js"
+ },
+ "./helpers/classCheckPrivateStaticFieldDescriptor.js"
+ ],
+ "./helpers/esm/classCheckPrivateStaticFieldDescriptor": "./helpers/esm/classCheckPrivateStaticFieldDescriptor.js",
+ "./helpers/classExtractFieldDescriptor": [
+ {
+ "node": "./helpers/classExtractFieldDescriptor.js",
+ "import": "./helpers/esm/classExtractFieldDescriptor.js",
+ "default": "./helpers/classExtractFieldDescriptor.js"
+ },
+ "./helpers/classExtractFieldDescriptor.js"
+ ],
+ "./helpers/esm/classExtractFieldDescriptor": "./helpers/esm/classExtractFieldDescriptor.js",
+ "./helpers/classPrivateFieldDestructureSet": [
+ {
+ "node": "./helpers/classPrivateFieldDestructureSet.js",
+ "import": "./helpers/esm/classPrivateFieldDestructureSet.js",
+ "default": "./helpers/classPrivateFieldDestructureSet.js"
+ },
+ "./helpers/classPrivateFieldDestructureSet.js"
+ ],
+ "./helpers/esm/classPrivateFieldDestructureSet": "./helpers/esm/classPrivateFieldDestructureSet.js",
+ "./helpers/classPrivateFieldGet": [
+ {
+ "node": "./helpers/classPrivateFieldGet.js",
+ "import": "./helpers/esm/classPrivateFieldGet.js",
+ "default": "./helpers/classPrivateFieldGet.js"
+ },
+ "./helpers/classPrivateFieldGet.js"
+ ],
+ "./helpers/esm/classPrivateFieldGet": "./helpers/esm/classPrivateFieldGet.js",
+ "./helpers/classPrivateFieldSet": [
+ {
+ "node": "./helpers/classPrivateFieldSet.js",
+ "import": "./helpers/esm/classPrivateFieldSet.js",
+ "default": "./helpers/classPrivateFieldSet.js"
+ },
+ "./helpers/classPrivateFieldSet.js"
+ ],
+ "./helpers/esm/classPrivateFieldSet": "./helpers/esm/classPrivateFieldSet.js",
+ "./helpers/classPrivateMethodGet": [
+ {
+ "node": "./helpers/classPrivateMethodGet.js",
+ "import": "./helpers/esm/classPrivateMethodGet.js",
+ "default": "./helpers/classPrivateMethodGet.js"
+ },
+ "./helpers/classPrivateMethodGet.js"
+ ],
+ "./helpers/esm/classPrivateMethodGet": "./helpers/esm/classPrivateMethodGet.js",
+ "./helpers/classPrivateMethodSet": [
+ {
+ "node": "./helpers/classPrivateMethodSet.js",
+ "import": "./helpers/esm/classPrivateMethodSet.js",
+ "default": "./helpers/classPrivateMethodSet.js"
+ },
+ "./helpers/classPrivateMethodSet.js"
+ ],
+ "./helpers/esm/classPrivateMethodSet": "./helpers/esm/classPrivateMethodSet.js",
+ "./helpers/classStaticPrivateFieldDestructureSet": [
+ {
+ "node": "./helpers/classStaticPrivateFieldDestructureSet.js",
+ "import": "./helpers/esm/classStaticPrivateFieldDestructureSet.js",
+ "default": "./helpers/classStaticPrivateFieldDestructureSet.js"
+ },
+ "./helpers/classStaticPrivateFieldDestructureSet.js"
+ ],
+ "./helpers/esm/classStaticPrivateFieldDestructureSet": "./helpers/esm/classStaticPrivateFieldDestructureSet.js",
+ "./helpers/classStaticPrivateFieldSpecGet": [
+ {
+ "node": "./helpers/classStaticPrivateFieldSpecGet.js",
+ "import": "./helpers/esm/classStaticPrivateFieldSpecGet.js",
+ "default": "./helpers/classStaticPrivateFieldSpecGet.js"
+ },
+ "./helpers/classStaticPrivateFieldSpecGet.js"
+ ],
+ "./helpers/esm/classStaticPrivateFieldSpecGet": "./helpers/esm/classStaticPrivateFieldSpecGet.js",
+ "./helpers/classStaticPrivateFieldSpecSet": [
+ {
+ "node": "./helpers/classStaticPrivateFieldSpecSet.js",
+ "import": "./helpers/esm/classStaticPrivateFieldSpecSet.js",
+ "default": "./helpers/classStaticPrivateFieldSpecSet.js"
+ },
+ "./helpers/classStaticPrivateFieldSpecSet.js"
+ ],
+ "./helpers/esm/classStaticPrivateFieldSpecSet": "./helpers/esm/classStaticPrivateFieldSpecSet.js",
+ "./helpers/classStaticPrivateMethodSet": [
+ {
+ "node": "./helpers/classStaticPrivateMethodSet.js",
+ "import": "./helpers/esm/classStaticPrivateMethodSet.js",
+ "default": "./helpers/classStaticPrivateMethodSet.js"
+ },
+ "./helpers/classStaticPrivateMethodSet.js"
+ ],
+ "./helpers/esm/classStaticPrivateMethodSet": "./helpers/esm/classStaticPrivateMethodSet.js",
+ "./helpers/defineEnumerableProperties": [
+ {
+ "node": "./helpers/defineEnumerableProperties.js",
+ "import": "./helpers/esm/defineEnumerableProperties.js",
+ "default": "./helpers/defineEnumerableProperties.js"
+ },
+ "./helpers/defineEnumerableProperties.js"
+ ],
+ "./helpers/esm/defineEnumerableProperties": "./helpers/esm/defineEnumerableProperties.js",
+ "./helpers/dispose": [
+ {
+ "node": "./helpers/dispose.js",
+ "import": "./helpers/esm/dispose.js",
+ "default": "./helpers/dispose.js"
+ },
+ "./helpers/dispose.js"
+ ],
+ "./helpers/esm/dispose": "./helpers/esm/dispose.js",
+ "./helpers/objectSpread": [
+ {
+ "node": "./helpers/objectSpread.js",
+ "import": "./helpers/esm/objectSpread.js",
+ "default": "./helpers/objectSpread.js"
+ },
+ "./helpers/objectSpread.js"
+ ],
+ "./helpers/esm/objectSpread": "./helpers/esm/objectSpread.js",
+ "./helpers/using": [
+ {
+ "node": "./helpers/using.js",
+ "import": "./helpers/esm/using.js",
+ "default": "./helpers/using.js"
+ },
+ "./helpers/using.js"
+ ],
+ "./helpers/esm/using": "./helpers/esm/using.js",
+ "./package": "./package.json",
+ "./package.json": "./package.json",
+ "./regenerator": "./regenerator/index.js",
+ "./regenerator/*.js": "./regenerator/*.js",
+ "./regenerator/": "./regenerator/"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "type": "commonjs"
+}
\ No newline at end of file
diff --git a/project starter code/node_modules/@babel/runtime/regenerator/index.js b/node_modules/@babel/runtime/regenerator/index.js
similarity index 100%
rename from project starter code/node_modules/@babel/runtime/regenerator/index.js
rename to node_modules/@babel/runtime/regenerator/index.js
diff --git a/node_modules/@jimp/bmp/CHANGELOG.md b/node_modules/@jimp/bmp/CHANGELOG.md
new file mode 100644
index 00000000..4eb3193f
--- /dev/null
+++ b/node_modules/@jimp/bmp/CHANGELOG.md
@@ -0,0 +1,35 @@
+# v0.16.3 (Sat Feb 04 2023)
+
+#### ⚠️ Pushed to `master`
+
+- upgrade prettier ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 1
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+---
+
+# v0.11.0 (Fri May 15 2020)
+
+#### 🚀 Enhancement
+
+- Removed Core-JS as a dependency. [#882](https://github.com/oliver-moran/jimp/pull/882) ([@EricRabil](https://github.com/EricRabil))
+
+#### Authors: 1
+
+- Eric Rabil ([@EricRabil](https://github.com/EricRabil))
+
+---
+
+# v0.9.3 (Tue Nov 26 2019)
+
+#### 🐛 Bug Fix
+
+- `@jimp/cli`, `@jimp/core`, `@jimp/custom`, `jimp`, `@jimp/plugin-blit`, `@jimp/plugin-blur`, `@jimp/plugin-circle`, `@jimp/plugin-color`, `@jimp/plugin-contain`, `@jimp/plugin-cover`, `@jimp/plugin-crop`, `@jimp/plugin-displace`, `@jimp/plugin-dither`, `@jimp/plugin-fisheye`, `@jimp/plugin-flip`, `@jimp/plugin-gaussian`, `@jimp/plugin-invert`, `@jimp/plugin-mask`, `@jimp/plugin-normalize`, `@jimp/plugin-print`, `@jimp/plugin-resize`, `@jimp/plugin-rotate`, `@jimp/plugin-scale`, `@jimp/plugin-shadow`, `@jimp/plugin-threshold`, `@jimp/plugins`, `@jimp/test-utils`, `@jimp/bmp`, `@jimp/gif`, `@jimp/jpeg`, `@jimp/png`, `@jimp/tiff`, `@jimp/types`, `@jimp/utils`
+ - Fix regeneratorRuntime errors [#815](https://github.com/oliver-moran/jimp/pull/815) ([@crutchcorn](https://github.com/crutchcorn) [@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 2
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+- Corbin Crutchley ([@crutchcorn](https://github.com/crutchcorn))
diff --git a/project starter code/node_modules/@jimp/bmp/LICENSE b/node_modules/@jimp/bmp/LICENSE
similarity index 100%
rename from project starter code/node_modules/@jimp/bmp/LICENSE
rename to node_modules/@jimp/bmp/LICENSE
diff --git a/project starter code/node_modules/@jimp/bmp/README.md b/node_modules/@jimp/bmp/README.md
similarity index 100%
rename from project starter code/node_modules/@jimp/bmp/README.md
rename to node_modules/@jimp/bmp/README.md
diff --git a/node_modules/@jimp/bmp/dist/index.js b/node_modules/@jimp/bmp/dist/index.js
new file mode 100644
index 00000000..21e16f37
--- /dev/null
+++ b/node_modules/@jimp/bmp/dist/index.js
@@ -0,0 +1,71 @@
+"use strict";
+
+var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports["default"] = void 0;
+
+var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
+
+var _bmpJs = _interopRequireDefault(require("bmp-js"));
+
+var _utils = require("@jimp/utils");
+
+var MIME_TYPE = "image/bmp";
+var MIME_TYPE_SECOND = "image/x-ms-bmp";
+
+function toAGBR(image) {
+ return (0, _utils.scan)(image, 0, 0, image.bitmap.width, image.bitmap.height, function (x, y, index) {
+ var red = this.bitmap.data[index + 0];
+ var green = this.bitmap.data[index + 1];
+ var blue = this.bitmap.data[index + 2];
+ var alpha = this.bitmap.data[index + 3];
+ this.bitmap.data[index + 0] = alpha;
+ this.bitmap.data[index + 1] = blue;
+ this.bitmap.data[index + 2] = green;
+ this.bitmap.data[index + 3] = red;
+ }).bitmap;
+}
+
+function fromAGBR(bitmap) {
+ return (0, _utils.scan)({
+ bitmap: bitmap
+ }, 0, 0, bitmap.width, bitmap.height, function (x, y, index) {
+ var alpha = this.bitmap.data[index + 0];
+ var blue = this.bitmap.data[index + 1];
+ var green = this.bitmap.data[index + 2];
+ var red = this.bitmap.data[index + 3];
+ this.bitmap.data[index + 0] = red;
+ this.bitmap.data[index + 1] = green;
+ this.bitmap.data[index + 2] = blue;
+ this.bitmap.data[index + 3] = bitmap.is_with_alpha ? alpha : 0xff;
+ }).bitmap;
+}
+
+var decode = function decode(data) {
+ return fromAGBR(_bmpJs["default"].decode(data));
+};
+
+var encode = function encode(image) {
+ return _bmpJs["default"].encode(toAGBR(image)).data;
+};
+
+var _default = function _default() {
+ var _decoders, _encoders;
+
+ return {
+ mime: (0, _defineProperty2["default"])({}, MIME_TYPE, ["bmp"]),
+ constants: {
+ MIME_BMP: MIME_TYPE,
+ MIME_X_MS_BMP: MIME_TYPE_SECOND
+ },
+ decoders: (_decoders = {}, (0, _defineProperty2["default"])(_decoders, MIME_TYPE, decode), (0, _defineProperty2["default"])(_decoders, MIME_TYPE_SECOND, decode), _decoders),
+ encoders: (_encoders = {}, (0, _defineProperty2["default"])(_encoders, MIME_TYPE, encode), (0, _defineProperty2["default"])(_encoders, MIME_TYPE_SECOND, encode), _encoders)
+ };
+};
+
+exports["default"] = _default;
+module.exports = exports.default;
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@jimp/bmp/dist/index.js.map b/node_modules/@jimp/bmp/dist/index.js.map
new file mode 100644
index 00000000..efd390ba
--- /dev/null
+++ b/node_modules/@jimp/bmp/dist/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/index.js"],"names":["MIME_TYPE","MIME_TYPE_SECOND","toAGBR","image","bitmap","width","height","x","y","index","red","data","green","blue","alpha","fromAGBR","is_with_alpha","decode","BMP","encode","mime","constants","MIME_BMP","MIME_X_MS_BMP","decoders","encoders"],"mappings":"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","sourcesContent":["import BMP from \"bmp-js\";\nimport { scan } from \"@jimp/utils\";\n\nconst MIME_TYPE = \"image/bmp\";\nconst MIME_TYPE_SECOND = \"image/x-ms-bmp\";\n\nfunction toAGBR(image) {\n return scan(\n image,\n 0,\n 0,\n image.bitmap.width,\n image.bitmap.height,\n function (x, y, index) {\n const red = this.bitmap.data[index + 0];\n const green = this.bitmap.data[index + 1];\n const blue = this.bitmap.data[index + 2];\n const alpha = this.bitmap.data[index + 3];\n\n this.bitmap.data[index + 0] = alpha;\n this.bitmap.data[index + 1] = blue;\n this.bitmap.data[index + 2] = green;\n this.bitmap.data[index + 3] = red;\n }\n ).bitmap;\n}\n\nfunction fromAGBR(bitmap) {\n return scan(\n { bitmap },\n 0,\n 0,\n bitmap.width,\n bitmap.height,\n function (x, y, index) {\n const alpha = this.bitmap.data[index + 0];\n const blue = this.bitmap.data[index + 1];\n const green = this.bitmap.data[index + 2];\n const red = this.bitmap.data[index + 3];\n\n this.bitmap.data[index + 0] = red;\n this.bitmap.data[index + 1] = green;\n this.bitmap.data[index + 2] = blue;\n this.bitmap.data[index + 3] = bitmap.is_with_alpha ? alpha : 0xff;\n }\n ).bitmap;\n}\n\nconst decode = (data) => fromAGBR(BMP.decode(data));\nconst encode = (image) => BMP.encode(toAGBR(image)).data;\n\nexport default () => ({\n mime: { [MIME_TYPE]: [\"bmp\"] },\n\n constants: {\n MIME_BMP: MIME_TYPE,\n MIME_X_MS_BMP: MIME_TYPE_SECOND,\n },\n\n decoders: {\n [MIME_TYPE]: decode,\n [MIME_TYPE_SECOND]: decode,\n },\n\n encoders: {\n [MIME_TYPE]: encode,\n [MIME_TYPE_SECOND]: encode,\n },\n});\n"],"file":"index.js"}
\ No newline at end of file
diff --git a/node_modules/@jimp/bmp/index.d.ts b/node_modules/@jimp/bmp/index.d.ts
new file mode 100644
index 00000000..0a9b9a51
--- /dev/null
+++ b/node_modules/@jimp/bmp/index.d.ts
@@ -0,0 +1,24 @@
+import { DecoderFn, EncoderFn } from "@jimp/core";
+
+interface Bmp {
+ constants: {
+ MIME_BMP: "image/bmp";
+ MIME_X_MS_BMP: "image/x-ms-bmp";
+ };
+
+ mime: {
+ "image/bmp": string[];
+ };
+
+ decoders: {
+ "image/bmp": DecoderFn;
+ "image/x-ms-bmp": DecoderFn;
+ };
+
+ encoders: {
+ "image/bmp": EncoderFn;
+ "image/x-ms-bmp": EncoderFn;
+ };
+}
+
+export default function (): Bmp;
diff --git a/node_modules/@jimp/bmp/package.json b/node_modules/@jimp/bmp/package.json
new file mode 100644
index 00000000..d2881dc8
--- /dev/null
+++ b/node_modules/@jimp/bmp/package.json
@@ -0,0 +1,38 @@
+{
+ "name": "@jimp/bmp",
+ "version": "0.16.13",
+ "description": "Default Jimp bmp encoder/decoder.",
+ "main": "dist/index.js",
+ "module": "es/index.js",
+ "types": "index.d.ts",
+ "scripts": {
+ "test": "cross-env BABEL_ENV=test mocha --require @babel/register",
+ "test:watch": "npm run test -- --reporter min --watch",
+ "test:coverage": "nyc npm run test",
+ "build": "npm run build:node:production && npm run build:module",
+ "build:watch": "npm run build:node:debug -- -- --watch --verbose",
+ "build:debug": "npm run build:node:debug",
+ "build:module": "cross-env BABEL_ENV=module babel src -d es --source-maps --config-file ../../babel.config.js",
+ "build:node": "babel src -d dist --source-maps --config-file ../../babel.config.js",
+ "build:node:debug": "cross-env BABEL_ENV=development npm run build:node",
+ "build:node:production": "cross-env BABEL_ENV=production npm run build:node"
+ },
+ "author": "",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13",
+ "bmp-js": "^0.1.0"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ },
+ "devDependencies": {
+ "@jimp/custom": "^0.16.13",
+ "@jimp/test-utils": "^0.16.13"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "gitHead": "9eec86086634329a072901dca3a800b850548572"
+}
diff --git a/node_modules/@jimp/bmp/src/index.js b/node_modules/@jimp/bmp/src/index.js
new file mode 100644
index 00000000..12fe2c79
--- /dev/null
+++ b/node_modules/@jimp/bmp/src/index.js
@@ -0,0 +1,69 @@
+import BMP from "bmp-js";
+import { scan } from "@jimp/utils";
+
+const MIME_TYPE = "image/bmp";
+const MIME_TYPE_SECOND = "image/x-ms-bmp";
+
+function toAGBR(image) {
+ return scan(
+ image,
+ 0,
+ 0,
+ image.bitmap.width,
+ image.bitmap.height,
+ function (x, y, index) {
+ const red = this.bitmap.data[index + 0];
+ const green = this.bitmap.data[index + 1];
+ const blue = this.bitmap.data[index + 2];
+ const alpha = this.bitmap.data[index + 3];
+
+ this.bitmap.data[index + 0] = alpha;
+ this.bitmap.data[index + 1] = blue;
+ this.bitmap.data[index + 2] = green;
+ this.bitmap.data[index + 3] = red;
+ }
+ ).bitmap;
+}
+
+function fromAGBR(bitmap) {
+ return scan(
+ { bitmap },
+ 0,
+ 0,
+ bitmap.width,
+ bitmap.height,
+ function (x, y, index) {
+ const alpha = this.bitmap.data[index + 0];
+ const blue = this.bitmap.data[index + 1];
+ const green = this.bitmap.data[index + 2];
+ const red = this.bitmap.data[index + 3];
+
+ this.bitmap.data[index + 0] = red;
+ this.bitmap.data[index + 1] = green;
+ this.bitmap.data[index + 2] = blue;
+ this.bitmap.data[index + 3] = bitmap.is_with_alpha ? alpha : 0xff;
+ }
+ ).bitmap;
+}
+
+const decode = (data) => fromAGBR(BMP.decode(data));
+const encode = (image) => BMP.encode(toAGBR(image)).data;
+
+export default () => ({
+ mime: { [MIME_TYPE]: ["bmp"] },
+
+ constants: {
+ MIME_BMP: MIME_TYPE,
+ MIME_X_MS_BMP: MIME_TYPE_SECOND,
+ },
+
+ decoders: {
+ [MIME_TYPE]: decode,
+ [MIME_TYPE_SECOND]: decode,
+ },
+
+ encoders: {
+ [MIME_TYPE]: encode,
+ [MIME_TYPE_SECOND]: encode,
+ },
+});
diff --git a/node_modules/@jimp/bmp/test/bmp.test.js b/node_modules/@jimp/bmp/test/bmp.test.js
new file mode 100644
index 00000000..c72536ee
--- /dev/null
+++ b/node_modules/@jimp/bmp/test/bmp.test.js
@@ -0,0 +1,47 @@
+/* eslint-disable no-control-regex */
+
+import { Jimp, getTestDir } from "@jimp/test-utils";
+import configure from "@jimp/custom";
+
+import bmp from "../src";
+
+const jimp = configure({ types: [bmp] }, Jimp);
+
+describe("BMP", () => {
+ const imagesDir = getTestDir(__dirname) + "/images";
+
+ it("load BMP", async () => {
+ const image = await jimp.read(imagesDir + "/windows95.bmp");
+
+ image.getPixelColor(10, 10).should.be.equal(0xeff7f7ff);
+ image.getPixelColor(150, 80).should.be.equal(0x73add6ff);
+ image.getPixelColor(190, 200).should.be.equal(0xf7c300ff);
+ });
+
+ it("export BMP", async () => {
+ const image = await jimp.read({
+ width: 3,
+ height: 3,
+ data: [
+ 0xff0000ff, 0xff0080ff, 0xff00ffff, 0xff0080ff, 0xff00ffff, 0x8000ffff,
+ 0xff00ffff, 0x8000ffff, 0x0000ffff,
+ ],
+ });
+ const buffer = await image.getBufferAsync("image/bmp");
+
+ buffer.toString().should.match(/^BMZ\u0000/);
+ });
+
+ it("uses correct colors for BMP", async function () {
+ this.timeout(4000);
+
+ const expectedImg = await jimp.read(
+ getTestDir(__dirname) + "/images/windows95.png"
+ );
+ const image = await jimp.read(
+ getTestDir(__dirname) + "/images/windows95.bmp"
+ );
+
+ image.bitmap.data.should.be.deepEqual(expectedImg.bitmap.data);
+ });
+});
diff --git a/project starter code/node_modules/@jimp/bmp/test/images/windows95.bmp b/node_modules/@jimp/bmp/test/images/windows95.bmp
similarity index 100%
rename from project starter code/node_modules/@jimp/bmp/test/images/windows95.bmp
rename to node_modules/@jimp/bmp/test/images/windows95.bmp
diff --git a/project starter code/node_modules/@jimp/bmp/test/images/windows95.png b/node_modules/@jimp/bmp/test/images/windows95.png
similarity index 100%
rename from project starter code/node_modules/@jimp/bmp/test/images/windows95.png
rename to node_modules/@jimp/bmp/test/images/windows95.png
diff --git a/node_modules/@jimp/core/CHANGELOG.md b/node_modules/@jimp/core/CHANGELOG.md
new file mode 100644
index 00000000..d709b828
--- /dev/null
+++ b/node_modules/@jimp/core/CHANGELOG.md
@@ -0,0 +1,104 @@
+# v0.16.3 (Sat Feb 04 2023)
+
+#### 🐛 Bug Fix
+
+- Fix edgeHandling types [#1080](https://github.com/jimp-dev/jimp/pull/1080) ([@domdomegg](https://github.com/domdomegg))
+- upgrade file-type [#1108](https://github.com/jimp-dev/jimp/pull/1108) ([@krudos](https://github.com/krudos))
+
+#### ⚠️ Pushed to `master`
+
+- try this ([@hipstersmoothie](https://github.com/hipstersmoothie))
+- update linting ([@hipstersmoothie](https://github.com/hipstersmoothie))
+- upgrade prettier ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 3
+
+- [@krudos](https://github.com/krudos)
+- Adam Jones ([@domdomegg](https://github.com/domdomegg))
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+---
+
+# v0.14.0 (Mon Jun 29 2020)
+
+#### 🚀 Enhancement
+
+- include Addition (Add) blending mode + Officially drop support for Node 8 [#904](https://github.com/oliver-moran/jimp/pull/904) ([@GlitchyPSIX](https://github.com/GlitchyPSIX))
+
+#### Authors: 1
+
+- GlitchyPSI ([@GlitchyPSIX](https://github.com/GlitchyPSIX))
+
+---
+
+# v0.11.0 (Fri May 15 2020)
+
+#### 🚀 Enhancement
+
+- Removed Core-JS as a dependency. [#882](https://github.com/oliver-moran/jimp/pull/882) ([@EricRabil](https://github.com/EricRabil))
+
+#### 🐛 Bug Fix
+
+- Make callback optional for Jimp.rgbaToInt [#889](https://github.com/oliver-moran/jimp/pull/889) ([@HanKruiger](https://github.com/HanKruiger))
+
+#### Authors: 2
+
+- Eric Rabil ([@EricRabil](https://github.com/EricRabil))
+- Han Kruiger ([@HanKruiger](https://github.com/HanKruiger))
+
+---
+
+# v0.10.2 (Tue Apr 14 2020)
+
+#### 🐛 Bug Fix
+
+- Rewrite handling EXIF orientation — add tests, make it plugin-independent [#875](https://github.com/oliver-moran/jimp/pull/875) ([@skalee](https://github.com/skalee))
+
+#### Authors: 1
+
+- Sebastian Skałacki ([@skalee](https://github.com/skalee))
+
+---
+
+# v0.10.0 (Mon Mar 30 2020)
+
+#### 🚀 Enhancement
+
+- Properly split constructor and instance types [#867](https://github.com/oliver-moran/jimp/pull/867) ([@forivall](https://github.com/forivall))
+
+#### Authors: 1
+
+- Emily Marigold Klassen ([@forivall](https://github.com/forivall))
+
+---
+
+# v0.9.6 (Wed Mar 18 2020)
+
+#### 🐛 Bug Fix
+
+- Relax mkdirp dependency to allow newer minimist [#857](https://github.com/oliver-moran/jimp/pull/857) ([@Den-dp](https://github.com/Den-dp))
+
+#### 🏠 Internal
+
+- Fix TypeScript error on 'next' [#858](https://github.com/oliver-moran/jimp/pull/858) ([@crutchcorn](https://github.com/crutchcorn))
+
+#### Authors: 2
+
+- Corbin Crutchley ([@crutchcorn](https://github.com/crutchcorn))
+- Denis Bendrikov ([@Den-dp](https://github.com/Den-dp))
+
+---
+
+# v0.9.3 (Tue Nov 26 2019)
+
+#### 🐛 Bug Fix
+
+- `@jimp/cli`, `@jimp/core`, `@jimp/custom`, `jimp`, `@jimp/plugin-blit`, `@jimp/plugin-blur`, `@jimp/plugin-circle`, `@jimp/plugin-color`, `@jimp/plugin-contain`, `@jimp/plugin-cover`, `@jimp/plugin-crop`, `@jimp/plugin-displace`, `@jimp/plugin-dither`, `@jimp/plugin-fisheye`, `@jimp/plugin-flip`, `@jimp/plugin-gaussian`, `@jimp/plugin-invert`, `@jimp/plugin-mask`, `@jimp/plugin-normalize`, `@jimp/plugin-print`, `@jimp/plugin-resize`, `@jimp/plugin-rotate`, `@jimp/plugin-scale`, `@jimp/plugin-shadow`, `@jimp/plugin-threshold`, `@jimp/plugins`, `@jimp/test-utils`, `@jimp/bmp`, `@jimp/gif`, `@jimp/jpeg`, `@jimp/png`, `@jimp/tiff`, `@jimp/types`, `@jimp/utils`
+ - Fix regeneratorRuntime errors [#815](https://github.com/oliver-moran/jimp/pull/815) ([@crutchcorn](https://github.com/crutchcorn) [@hipstersmoothie](https://github.com/hipstersmoothie))
+- `@jimp/core`
+ - Follow redirects [#789](https://github.com/oliver-moran/jimp/pull/789) ([@SaWey](https://github.com/SaWey) sander@solora.be)
+
+#### Authors: 2
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+- Corbin Crutchley ([@crutchcorn](https://github.com/crutchcorn))
diff --git a/project starter code/node_modules/@jimp/core/LICENSE b/node_modules/@jimp/core/LICENSE
similarity index 100%
rename from project starter code/node_modules/@jimp/core/LICENSE
rename to node_modules/@jimp/core/LICENSE
diff --git a/node_modules/@jimp/core/README.md b/node_modules/@jimp/core/README.md
new file mode 100644
index 00000000..4ca355ff
--- /dev/null
+++ b/node_modules/@jimp/core/README.md
@@ -0,0 +1,52 @@
+
+
+
@jimp/core
+
+
+The main Jimp class. This class can be extended with types and bitmap manipulation functions. Out of the box it does not support any image type.
+
+## Available Methods
+
+### Jimp
+
+The Jimp class constructor.
+
+### addConstants
+
+Add constant or static methods to the Jimp constructor.
+
+```js
+addConstants({
+ MIME_SPECIAL: "image/special",
+});
+```
+
+### addJimpMethods
+
+Add a bitmap manipulation method to Jimp constructor. These method should return this so that the function can be chain-able.
+
+```js
+addJimpMethods({
+ cropCrazy: function() {
+ // Your custom image manipulation method
+
+ return this;
+ }
+})
+
+const image = await Jimp.read(...);
+
+image.resize(10, Jimp.AUTO),
+ .cropCrazy();
+
+await image.writeAsync('test.png');
+```
+
+### addType
+
+Add a image mime type to Jimp constructor. First argument is a mime type and the second is an array of file extension for that type.
+
+```js
+addType("image/special", ["spec", "special"]);
+```
diff --git a/project starter code/node_modules/@jimp/core/dist/composite/composite-modes.js b/node_modules/@jimp/core/dist/composite/composite-modes.js
similarity index 100%
rename from project starter code/node_modules/@jimp/core/dist/composite/composite-modes.js
rename to node_modules/@jimp/core/dist/composite/composite-modes.js
diff --git a/project starter code/node_modules/@jimp/core/dist/composite/composite-modes.js.map b/node_modules/@jimp/core/dist/composite/composite-modes.js.map
similarity index 100%
rename from project starter code/node_modules/@jimp/core/dist/composite/composite-modes.js.map
rename to node_modules/@jimp/core/dist/composite/composite-modes.js.map
diff --git a/node_modules/@jimp/core/dist/composite/index.js b/node_modules/@jimp/core/dist/composite/index.js
new file mode 100644
index 00000000..a308d8de
--- /dev/null
+++ b/node_modules/@jimp/core/dist/composite/index.js
@@ -0,0 +1,97 @@
+"use strict";
+
+var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports["default"] = composite;
+
+var _utils = require("@jimp/utils");
+
+var constants = _interopRequireWildcard(require("../constants"));
+
+var compositeModes = _interopRequireWildcard(require("./composite-modes"));
+
+/**
+ * Composites a source image over to this image respecting alpha channels
+ * @param {Jimp} src the source Jimp instance
+ * @param {number} x the x position to blit the image
+ * @param {number} y the y position to blit the image
+ * @param {object} options determine what mode to use
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+function composite(src, x, y) {
+ var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
+ var cb = arguments.length > 4 ? arguments[4] : undefined;
+
+ if (typeof options === "function") {
+ cb = options;
+ options = {};
+ }
+
+ if (!(src instanceof this.constructor)) {
+ return _utils.throwError.call(this, "The source must be a Jimp image", cb);
+ }
+
+ if (typeof x !== "number" || typeof y !== "number") {
+ return _utils.throwError.call(this, "x and y must be numbers", cb);
+ }
+
+ var _options = options,
+ mode = _options.mode,
+ opacitySource = _options.opacitySource,
+ opacityDest = _options.opacityDest;
+
+ if (!mode) {
+ mode = constants.BLEND_SOURCE_OVER;
+ }
+
+ if (typeof opacitySource !== "number" || opacitySource < 0 || opacitySource > 1) {
+ opacitySource = 1.0;
+ }
+
+ if (typeof opacityDest !== "number" || opacityDest < 0 || opacityDest > 1) {
+ opacityDest = 1.0;
+ } // eslint-disable-next-line import/namespace
+
+
+ var blendmode = compositeModes[mode]; // round input
+
+ x = Math.round(x);
+ y = Math.round(y);
+ var baseImage = this;
+
+ if (opacityDest !== 1.0) {
+ baseImage.opacity(opacityDest);
+ }
+
+ src.scanQuiet(0, 0, src.bitmap.width, src.bitmap.height, function (sx, sy, idx) {
+ var dstIdx = baseImage.getPixelIndex(x + sx, y + sy, constants.EDGE_CROP);
+ var blended = blendmode({
+ r: this.bitmap.data[idx + 0] / 255,
+ g: this.bitmap.data[idx + 1] / 255,
+ b: this.bitmap.data[idx + 2] / 255,
+ a: this.bitmap.data[idx + 3] / 255
+ }, {
+ r: baseImage.bitmap.data[dstIdx + 0] / 255,
+ g: baseImage.bitmap.data[dstIdx + 1] / 255,
+ b: baseImage.bitmap.data[dstIdx + 2] / 255,
+ a: baseImage.bitmap.data[dstIdx + 3] / 255
+ }, opacitySource);
+ baseImage.bitmap.data[dstIdx + 0] = this.constructor.limit255(blended.r * 255);
+ baseImage.bitmap.data[dstIdx + 1] = this.constructor.limit255(blended.g * 255);
+ baseImage.bitmap.data[dstIdx + 2] = this.constructor.limit255(blended.b * 255);
+ baseImage.bitmap.data[dstIdx + 3] = this.constructor.limit255(blended.a * 255);
+ });
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+}
+
+module.exports = exports.default;
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@jimp/core/dist/composite/index.js.map b/node_modules/@jimp/core/dist/composite/index.js.map
new file mode 100644
index 00000000..f55a3748
--- /dev/null
+++ b/node_modules/@jimp/core/dist/composite/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../src/composite/index.js"],"names":["composite","src","x","y","options","cb","constructor","throwError","call","mode","opacitySource","opacityDest","constants","BLEND_SOURCE_OVER","blendmode","compositeModes","Math","round","baseImage","opacity","scanQuiet","bitmap","width","height","sx","sy","idx","dstIdx","getPixelIndex","EDGE_CROP","blended","r","data","g","b","a","limit255"],"mappings":"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","sourcesContent":["import { isNodePattern, throwError } from \"@jimp/utils\";\nimport * as constants from \"../constants\";\n\nimport * as compositeModes from \"./composite-modes\";\n\n/**\n * Composites a source image over to this image respecting alpha channels\n * @param {Jimp} src the source Jimp instance\n * @param {number} x the x position to blit the image\n * @param {number} y the y position to blit the image\n * @param {object} options determine what mode to use\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp} this for chaining of methods\n */\nexport default function composite(src, x, y, options = {}, cb) {\n if (typeof options === \"function\") {\n cb = options;\n options = {};\n }\n\n if (!(src instanceof this.constructor)) {\n return throwError.call(this, \"The source must be a Jimp image\", cb);\n }\n\n if (typeof x !== \"number\" || typeof y !== \"number\") {\n return throwError.call(this, \"x and y must be numbers\", cb);\n }\n\n let { mode, opacitySource, opacityDest } = options;\n\n if (!mode) {\n mode = constants.BLEND_SOURCE_OVER;\n }\n\n if (\n typeof opacitySource !== \"number\" ||\n opacitySource < 0 ||\n opacitySource > 1\n ) {\n opacitySource = 1.0;\n }\n\n if (typeof opacityDest !== \"number\" || opacityDest < 0 || opacityDest > 1) {\n opacityDest = 1.0;\n }\n\n // eslint-disable-next-line import/namespace\n const blendmode = compositeModes[mode];\n\n // round input\n x = Math.round(x);\n y = Math.round(y);\n\n const baseImage = this;\n\n if (opacityDest !== 1.0) {\n baseImage.opacity(opacityDest);\n }\n\n src.scanQuiet(\n 0,\n 0,\n src.bitmap.width,\n src.bitmap.height,\n function (sx, sy, idx) {\n const dstIdx = baseImage.getPixelIndex(\n x + sx,\n y + sy,\n constants.EDGE_CROP\n );\n const blended = blendmode(\n {\n r: this.bitmap.data[idx + 0] / 255,\n g: this.bitmap.data[idx + 1] / 255,\n b: this.bitmap.data[idx + 2] / 255,\n a: this.bitmap.data[idx + 3] / 255,\n },\n {\n r: baseImage.bitmap.data[dstIdx + 0] / 255,\n g: baseImage.bitmap.data[dstIdx + 1] / 255,\n b: baseImage.bitmap.data[dstIdx + 2] / 255,\n a: baseImage.bitmap.data[dstIdx + 3] / 255,\n },\n opacitySource\n );\n\n baseImage.bitmap.data[dstIdx + 0] = this.constructor.limit255(\n blended.r * 255\n );\n baseImage.bitmap.data[dstIdx + 1] = this.constructor.limit255(\n blended.g * 255\n );\n baseImage.bitmap.data[dstIdx + 2] = this.constructor.limit255(\n blended.b * 255\n );\n baseImage.bitmap.data[dstIdx + 3] = this.constructor.limit255(\n blended.a * 255\n );\n }\n );\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n}\n"],"file":"index.js"}
\ No newline at end of file
diff --git a/node_modules/@jimp/core/dist/constants.js b/node_modules/@jimp/core/dist/constants.js
new file mode 100644
index 00000000..0c0c8522
--- /dev/null
+++ b/node_modules/@jimp/core/dist/constants.js
@@ -0,0 +1,53 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.EDGE_CROP = exports.EDGE_WRAP = exports.EDGE_EXTEND = exports.BLEND_EXCLUSION = exports.BLEND_DIFFERENCE = exports.BLEND_HARDLIGHT = exports.BLEND_LIGHTEN = exports.BLEND_DARKEN = exports.BLEND_OVERLAY = exports.BLEND_SCREEN = exports.BLEND_ADD = exports.BLEND_MULTIPLY = exports.BLEND_DESTINATION_OVER = exports.BLEND_SOURCE_OVER = exports.VERTICAL_ALIGN_BOTTOM = exports.VERTICAL_ALIGN_MIDDLE = exports.VERTICAL_ALIGN_TOP = exports.HORIZONTAL_ALIGN_RIGHT = exports.HORIZONTAL_ALIGN_CENTER = exports.HORIZONTAL_ALIGN_LEFT = exports.AUTO = void 0;
+// used to auto resizing etc.
+var AUTO = -1; // Align modes for cover, contain, bit masks
+
+exports.AUTO = AUTO;
+var HORIZONTAL_ALIGN_LEFT = 1;
+exports.HORIZONTAL_ALIGN_LEFT = HORIZONTAL_ALIGN_LEFT;
+var HORIZONTAL_ALIGN_CENTER = 2;
+exports.HORIZONTAL_ALIGN_CENTER = HORIZONTAL_ALIGN_CENTER;
+var HORIZONTAL_ALIGN_RIGHT = 4;
+exports.HORIZONTAL_ALIGN_RIGHT = HORIZONTAL_ALIGN_RIGHT;
+var VERTICAL_ALIGN_TOP = 8;
+exports.VERTICAL_ALIGN_TOP = VERTICAL_ALIGN_TOP;
+var VERTICAL_ALIGN_MIDDLE = 16;
+exports.VERTICAL_ALIGN_MIDDLE = VERTICAL_ALIGN_MIDDLE;
+var VERTICAL_ALIGN_BOTTOM = 32; // blend modes
+
+exports.VERTICAL_ALIGN_BOTTOM = VERTICAL_ALIGN_BOTTOM;
+var BLEND_SOURCE_OVER = "srcOver";
+exports.BLEND_SOURCE_OVER = BLEND_SOURCE_OVER;
+var BLEND_DESTINATION_OVER = "dstOver";
+exports.BLEND_DESTINATION_OVER = BLEND_DESTINATION_OVER;
+var BLEND_MULTIPLY = "multiply";
+exports.BLEND_MULTIPLY = BLEND_MULTIPLY;
+var BLEND_ADD = "add";
+exports.BLEND_ADD = BLEND_ADD;
+var BLEND_SCREEN = "screen";
+exports.BLEND_SCREEN = BLEND_SCREEN;
+var BLEND_OVERLAY = "overlay";
+exports.BLEND_OVERLAY = BLEND_OVERLAY;
+var BLEND_DARKEN = "darken";
+exports.BLEND_DARKEN = BLEND_DARKEN;
+var BLEND_LIGHTEN = "lighten";
+exports.BLEND_LIGHTEN = BLEND_LIGHTEN;
+var BLEND_HARDLIGHT = "hardLight";
+exports.BLEND_HARDLIGHT = BLEND_HARDLIGHT;
+var BLEND_DIFFERENCE = "difference";
+exports.BLEND_DIFFERENCE = BLEND_DIFFERENCE;
+var BLEND_EXCLUSION = "exclusion"; // Edge Handling
+
+exports.BLEND_EXCLUSION = BLEND_EXCLUSION;
+var EDGE_EXTEND = 1;
+exports.EDGE_EXTEND = EDGE_EXTEND;
+var EDGE_WRAP = 2;
+exports.EDGE_WRAP = EDGE_WRAP;
+var EDGE_CROP = 3;
+exports.EDGE_CROP = EDGE_CROP;
+//# sourceMappingURL=constants.js.map
\ No newline at end of file
diff --git a/node_modules/@jimp/core/dist/constants.js.map b/node_modules/@jimp/core/dist/constants.js.map
new file mode 100644
index 00000000..b9b18e6d
--- /dev/null
+++ b/node_modules/@jimp/core/dist/constants.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/constants.js"],"names":["AUTO","HORIZONTAL_ALIGN_LEFT","HORIZONTAL_ALIGN_CENTER","HORIZONTAL_ALIGN_RIGHT","VERTICAL_ALIGN_TOP","VERTICAL_ALIGN_MIDDLE","VERTICAL_ALIGN_BOTTOM","BLEND_SOURCE_OVER","BLEND_DESTINATION_OVER","BLEND_MULTIPLY","BLEND_ADD","BLEND_SCREEN","BLEND_OVERLAY","BLEND_DARKEN","BLEND_LIGHTEN","BLEND_HARDLIGHT","BLEND_DIFFERENCE","BLEND_EXCLUSION","EDGE_EXTEND","EDGE_WRAP","EDGE_CROP"],"mappings":";;;;;;AAAA;AACO,IAAMA,IAAI,GAAG,CAAC,CAAd,C,CAEP;;;AACO,IAAMC,qBAAqB,GAAG,CAA9B;;AACA,IAAMC,uBAAuB,GAAG,CAAhC;;AACA,IAAMC,sBAAsB,GAAG,CAA/B;;AAEA,IAAMC,kBAAkB,GAAG,CAA3B;;AACA,IAAMC,qBAAqB,GAAG,EAA9B;;AACA,IAAMC,qBAAqB,GAAG,EAA9B,C,CAEP;;;AACO,IAAMC,iBAAiB,GAAG,SAA1B;;AACA,IAAMC,sBAAsB,GAAG,SAA/B;;AACA,IAAMC,cAAc,GAAG,UAAvB;;AACA,IAAMC,SAAS,GAAG,KAAlB;;AACA,IAAMC,YAAY,GAAG,QAArB;;AACA,IAAMC,aAAa,GAAG,SAAtB;;AACA,IAAMC,YAAY,GAAG,QAArB;;AACA,IAAMC,aAAa,GAAG,SAAtB;;AACA,IAAMC,eAAe,GAAG,WAAxB;;AACA,IAAMC,gBAAgB,GAAG,YAAzB;;AACA,IAAMC,eAAe,GAAG,WAAxB,C,CAEP;;;AACO,IAAMC,WAAW,GAAG,CAApB;;AACA,IAAMC,SAAS,GAAG,CAAlB;;AACA,IAAMC,SAAS,GAAG,CAAlB","sourcesContent":["// used to auto resizing etc.\nexport const AUTO = -1;\n\n// Align modes for cover, contain, bit masks\nexport const HORIZONTAL_ALIGN_LEFT = 1;\nexport const HORIZONTAL_ALIGN_CENTER = 2;\nexport const HORIZONTAL_ALIGN_RIGHT = 4;\n\nexport const VERTICAL_ALIGN_TOP = 8;\nexport const VERTICAL_ALIGN_MIDDLE = 16;\nexport const VERTICAL_ALIGN_BOTTOM = 32;\n\n// blend modes\nexport const BLEND_SOURCE_OVER = \"srcOver\";\nexport const BLEND_DESTINATION_OVER = \"dstOver\";\nexport const BLEND_MULTIPLY = \"multiply\";\nexport const BLEND_ADD = \"add\";\nexport const BLEND_SCREEN = \"screen\";\nexport const BLEND_OVERLAY = \"overlay\";\nexport const BLEND_DARKEN = \"darken\";\nexport const BLEND_LIGHTEN = \"lighten\";\nexport const BLEND_HARDLIGHT = \"hardLight\";\nexport const BLEND_DIFFERENCE = \"difference\";\nexport const BLEND_EXCLUSION = \"exclusion\";\n\n// Edge Handling\nexport const EDGE_EXTEND = 1;\nexport const EDGE_WRAP = 2;\nexport const EDGE_CROP = 3;\n"],"file":"constants.js"}
\ No newline at end of file
diff --git a/node_modules/@jimp/core/dist/index.js b/node_modules/@jimp/core/dist/index.js
new file mode 100644
index 00000000..34f87fdd
--- /dev/null
+++ b/node_modules/@jimp/core/dist/index.js
@@ -0,0 +1,1292 @@
+"use strict";
+
+var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
+
+var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.addConstants = addConstants;
+exports.addJimpMethods = addJimpMethods;
+exports.jimpEvMethod = jimpEvMethod;
+exports.jimpEvChange = jimpEvChange;
+Object.defineProperty(exports, "addType", {
+ enumerable: true,
+ get: function get() {
+ return MIME.addType;
+ }
+});
+exports["default"] = void 0;
+
+var _construct2 = _interopRequireDefault(require("@babel/runtime/helpers/construct"));
+
+var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
+
+var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
+
+var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
+
+var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
+
+var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
+
+var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
+
+var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
+
+var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
+
+var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
+
+var _fs = _interopRequireDefault(require("fs"));
+
+var _path = _interopRequireDefault(require("path"));
+
+var _events = _interopRequireDefault(require("events"));
+
+var _utils = require("@jimp/utils");
+
+var _anyBase = _interopRequireDefault(require("any-base"));
+
+var _mkdirp = _interopRequireDefault(require("mkdirp"));
+
+var _pixelmatch = _interopRequireDefault(require("pixelmatch"));
+
+var _tinycolor = _interopRequireDefault(require("tinycolor2"));
+
+var _phash = _interopRequireDefault(require("./modules/phash"));
+
+var _request = _interopRequireDefault(require("./request"));
+
+var _composite = _interopRequireDefault(require("./composite"));
+
+var _promisify = _interopRequireDefault(require("./utils/promisify"));
+
+var MIME = _interopRequireWildcard(require("./utils/mime"));
+
+var _imageBitmap = require("./utils/image-bitmap");
+
+var constants = _interopRequireWildcard(require("./constants"));
+
+var alphabet = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_"; // an array storing the maximum string length of hashes at various bases
+// 0 and 1 do not exist as possible hash lengths
+
+var maxHashLength = [NaN, NaN];
+
+for (var i = 2; i < 65; i++) {
+ var maxHash = (0, _anyBase["default"])(_anyBase["default"].BIN, alphabet.slice(0, i))(new Array(64 + 1).join("1"));
+ maxHashLength.push(maxHash.length);
+} // no operation
+
+
+function noop() {} // error checking methods
+
+
+function isArrayBuffer(test) {
+ return Object.prototype.toString.call(test).toLowerCase().indexOf("arraybuffer") > -1;
+} // Prepare a Buffer object from the arrayBuffer. Necessary in the browser > node conversion,
+// But this function is not useful when running in node directly
+
+
+function bufferFromArrayBuffer(arrayBuffer) {
+ var buffer = Buffer.alloc(arrayBuffer.byteLength);
+ var view = new Uint8Array(arrayBuffer);
+
+ for (var _i = 0; _i < buffer.length; ++_i) {
+ buffer[_i] = view[_i];
+ }
+
+ return buffer;
+}
+
+function loadFromURL(options, cb) {
+ (0, _request["default"])(options, function (err, response, data) {
+ if (err) {
+ return cb(err);
+ }
+
+ if ("headers" in response && "location" in response.headers) {
+ options.url = response.headers.location;
+ return loadFromURL(options, cb);
+ }
+
+ if ((0, _typeof2["default"])(data) === "object" && Buffer.isBuffer(data)) {
+ return cb(null, data);
+ }
+
+ var msg = "Could not load Buffer from <" + options.url + "> " + "(HTTP: " + response.statusCode + ")";
+ return new Error(msg);
+ });
+}
+
+function loadBufferFromPath(src, cb) {
+ if (_fs["default"] && typeof _fs["default"].readFile === "function" && !src.match(/^(http|ftp)s?:\/\/./)) {
+ _fs["default"].readFile(src, cb);
+ } else {
+ loadFromURL({
+ url: src
+ }, cb);
+ }
+}
+
+function isRawRGBAData(obj) {
+ return obj && (0, _typeof2["default"])(obj) === "object" && typeof obj.width === "number" && typeof obj.height === "number" && (Buffer.isBuffer(obj.data) || obj.data instanceof Uint8Array || typeof Uint8ClampedArray === "function" && obj.data instanceof Uint8ClampedArray) && (obj.data.length === obj.width * obj.height * 4 || obj.data.length === obj.width * obj.height * 3);
+}
+
+function makeRGBABufferFromRGB(buffer) {
+ if (buffer.length % 3 !== 0) {
+ throw new Error("Buffer length is incorrect");
+ }
+
+ var rgbaBuffer = Buffer.allocUnsafe(buffer.length / 3 * 4);
+ var j = 0;
+
+ for (var _i2 = 0; _i2 < buffer.length; _i2++) {
+ rgbaBuffer[j] = buffer[_i2];
+
+ if ((_i2 + 1) % 3 === 0) {
+ rgbaBuffer[++j] = 255;
+ }
+
+ j++;
+ }
+
+ return rgbaBuffer;
+}
+
+var emptyBitmap = {
+ data: null,
+ width: null,
+ height: null
+};
+/**
+ * Jimp constructor (from a file)
+ * @param path a path to the image
+ * @param {function(Error, Jimp)} cb (optional) a function to call when the image is parsed to a bitmap
+ */
+
+/**
+ * Jimp constructor (from a url with options)
+ * @param options { url, otherOptions}
+ * @param {function(Error, Jimp)} cb (optional) a function to call when the image is parsed to a bitmap
+ */
+
+/**
+ * Jimp constructor (from another Jimp image or raw image data)
+ * @param image a Jimp image to clone
+ * @param {function(Error, Jimp)} cb a function to call when the image is parsed to a bitmap
+ */
+
+/**
+ * Jimp constructor (from a Buffer)
+ * @param data a Buffer containing the image data
+ * @param {function(Error, Jimp)} cb a function to call when the image is parsed to a bitmap
+ */
+
+/**
+ * Jimp constructor (to generate a new image)
+ * @param w the width of the image
+ * @param h the height of the image
+ * @param {function(Error, Jimp)} cb (optional) a function to call when the image is parsed to a bitmap
+ */
+
+/**
+ * Jimp constructor (to generate a new image)
+ * @param w the width of the image
+ * @param h the height of the image
+ * @param background color to fill the image with
+ * @param {function(Error, Jimp)} cb (optional) a function to call when the image is parsed to a bitmap
+ */
+
+var Jimp =
+/*#__PURE__*/
+function (_EventEmitter) {
+ (0, _inherits2["default"])(Jimp, _EventEmitter);
+
+ // An object representing a bitmap in memory, comprising:
+ // - data: a buffer of the bitmap data
+ // - width: the width of the image in pixels
+ // - height: the height of the image in pixels
+ // Default colour to use for new pixels
+ // Default MIME is PNG
+ // Exif data for the image
+ // Whether Transparency supporting formats will be exported as RGB or RGBA
+ function Jimp() {
+ var _this;
+
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+
+ (0, _classCallCheck2["default"])(this, Jimp);
+ _this = (0, _possibleConstructorReturn2["default"])(this, (0, _getPrototypeOf2["default"])(Jimp).call(this));
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "bitmap", emptyBitmap);
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_background", 0x00000000);
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_originalMime", Jimp.MIME_PNG);
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_exif", null);
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_rgba", true);
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "writeAsync", function (path) {
+ return (0, _promisify["default"])(_this.write, (0, _assertThisInitialized2["default"])(_this), path);
+ });
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getBase64Async", function (mime) {
+ return (0, _promisify["default"])(_this.getBase64, (0, _assertThisInitialized2["default"])(_this), mime);
+ });
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getBuffer", _imageBitmap.getBuffer);
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getBufferAsync", _imageBitmap.getBufferAsync);
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getPixelColour", _this.getPixelColor);
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "setPixelColour", _this.setPixelColor);
+ var jimpInstance = (0, _assertThisInitialized2["default"])(_this);
+ var cb = noop;
+
+ if (isArrayBuffer(args[0])) {
+ args[0] = bufferFromArrayBuffer(args[0]);
+ }
+
+ function finish() {
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
+ args[_key2] = arguments[_key2];
+ }
+
+ var err = args[0];
+ var evData = err || {};
+ evData.methodName = "constructor";
+ setTimeout(function () {
+ var _cb;
+
+ // run on next tick.
+ if (err && cb === noop) {
+ jimpInstance.emitError("constructor", err);
+ } else if (!err) {
+ jimpInstance.emitMulti("constructor", "initialized");
+ }
+
+ (_cb = cb).call.apply(_cb, [jimpInstance].concat(args));
+ }, 1);
+ }
+
+ if (typeof args[0] === "number" && typeof args[1] === "number" || parseInt(args[0], 10) && parseInt(args[1], 10)) {
+ // create a new image
+ var w = parseInt(args[0], 10);
+ var h = parseInt(args[1], 10);
+ cb = args[2]; // with a hex color
+
+ if (typeof args[2] === "number") {
+ _this._background = args[2];
+ cb = args[3];
+ } // with a css color
+
+
+ if (typeof args[2] === "string") {
+ _this._background = Jimp.cssColorToHex(args[2]);
+ cb = args[3];
+ }
+
+ if (typeof cb === "undefined") {
+ cb = noop;
+ }
+
+ if (typeof cb !== "function") {
+ return (0, _possibleConstructorReturn2["default"])(_this, _utils.throwError.call((0, _assertThisInitialized2["default"])(_this), "cb must be a function", finish));
+ }
+
+ _this.bitmap = {
+ data: Buffer.alloc(w * h * 4),
+ width: w,
+ height: h
+ };
+
+ for (var _i3 = 0; _i3 < _this.bitmap.data.length; _i3 += 4) {
+ _this.bitmap.data.writeUInt32BE(_this._background, _i3);
+ }
+
+ finish(null, (0, _assertThisInitialized2["default"])(_this));
+ } else if ((0, _typeof2["default"])(args[0]) === "object" && args[0].url) {
+ cb = args[1] || noop;
+
+ if (typeof cb !== "function") {
+ return (0, _possibleConstructorReturn2["default"])(_this, _utils.throwError.call((0, _assertThisInitialized2["default"])(_this), "cb must be a function", finish));
+ }
+
+ loadFromURL(args[0], function (err, data) {
+ if (err) {
+ return _utils.throwError.call((0, _assertThisInitialized2["default"])(_this), err, finish);
+ }
+
+ _this.parseBitmap(data, args[0].url, finish);
+ });
+ } else if (args[0] instanceof Jimp) {
+ // clone an existing Jimp
+ var original = args[0];
+ cb = args[1];
+
+ if (typeof cb === "undefined") {
+ cb = noop;
+ }
+
+ if (typeof cb !== "function") {
+ return (0, _possibleConstructorReturn2["default"])(_this, _utils.throwError.call((0, _assertThisInitialized2["default"])(_this), "cb must be a function", finish));
+ }
+
+ _this.bitmap = {
+ data: Buffer.from(original.bitmap.data),
+ width: original.bitmap.width,
+ height: original.bitmap.height
+ };
+ _this._quality = original._quality;
+ _this._deflateLevel = original._deflateLevel;
+ _this._deflateStrategy = original._deflateStrategy;
+ _this._filterType = original._filterType;
+ _this._rgba = original._rgba;
+ _this._background = original._background;
+ _this._originalMime = original._originalMime;
+ finish(null, (0, _assertThisInitialized2["default"])(_this));
+ } else if (isRawRGBAData(args[0])) {
+ var imageData = args[0];
+ cb = args[1] || noop;
+ var isRGBA = imageData.width * imageData.height * 4 === imageData.data.length;
+ var buffer = isRGBA ? Buffer.from(imageData.data) : makeRGBABufferFromRGB(imageData.data);
+ _this.bitmap = {
+ data: buffer,
+ width: imageData.width,
+ height: imageData.height
+ };
+ finish(null, (0, _assertThisInitialized2["default"])(_this));
+ } else if (typeof args[0] === "string") {
+ // read from a path
+ var path = args[0];
+ cb = args[1];
+
+ if (typeof cb === "undefined") {
+ cb = noop;
+ }
+
+ if (typeof cb !== "function") {
+ return (0, _possibleConstructorReturn2["default"])(_this, _utils.throwError.call((0, _assertThisInitialized2["default"])(_this), "cb must be a function", finish));
+ }
+
+ loadBufferFromPath(path, function (err, data) {
+ if (err) {
+ return _utils.throwError.call((0, _assertThisInitialized2["default"])(_this), err, finish);
+ }
+
+ _this.parseBitmap(data, path, finish);
+ });
+ } else if ((0, _typeof2["default"])(args[0]) === "object" && Buffer.isBuffer(args[0])) {
+ // read from a buffer
+ var data = args[0];
+ cb = args[1];
+
+ if (typeof cb !== "function") {
+ return (0, _possibleConstructorReturn2["default"])(_this, _utils.throwError.call((0, _assertThisInitialized2["default"])(_this), "cb must be a function", finish));
+ }
+
+ _this.parseBitmap(data, null, finish);
+ } else {
+ // Allow client libs to add new ways to build a Jimp object.
+ // Extra constructors must be added by `Jimp.appendConstructorOption()`
+ cb = args[args.length - 1];
+
+ if (typeof cb !== "function") {
+ // TODO: try to solve the args after cb problem.
+ cb = args[args.length - 2];
+
+ if (typeof cb !== "function") {
+ cb = noop;
+ }
+ }
+
+ var extraConstructor = Jimp.__extraConstructors.find(function (c) {
+ return c.test.apply(c, args);
+ });
+
+ if (extraConstructor) {
+ new Promise(function (resolve, reject) {
+ var _extraConstructor$run;
+
+ (_extraConstructor$run = extraConstructor.run).call.apply(_extraConstructor$run, [(0, _assertThisInitialized2["default"])(_this), resolve, reject].concat(args));
+ }).then(function () {
+ return finish(null, (0, _assertThisInitialized2["default"])(_this));
+ })["catch"](finish);
+ } else {
+ return (0, _possibleConstructorReturn2["default"])(_this, _utils.throwError.call((0, _assertThisInitialized2["default"])(_this), "No matching constructor overloading was found. " + "Please see the docs for how to call the Jimp constructor.", finish));
+ }
+ }
+
+ return _this;
+ }
+ /**
+ * Parse a bitmap with the loaded image types.
+ *
+ * @param {Buffer} data raw image data
+ * @param {string} path optional path to file
+ * @param {function(Error, Jimp)} finish (optional) a callback for when complete
+ * @memberof Jimp
+ */
+
+
+ (0, _createClass2["default"])(Jimp, [{
+ key: "parseBitmap",
+ value: function parseBitmap(data, path, finish) {
+ _imageBitmap.parseBitmap.call(this, data, null, finish);
+ }
+ /**
+ * Sets the type of the image (RGB or RGBA) when saving in a format that supports transparency (default is RGBA)
+ * @param {boolean} bool A Boolean, true to use RGBA or false to use RGB
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+
+ }, {
+ key: "rgba",
+ value: function rgba(bool, cb) {
+ if (typeof bool !== "boolean") {
+ return _utils.throwError.call(this, "bool must be a boolean, true for RGBA or false for RGB", cb);
+ }
+
+ this._rgba = bool;
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ }
+ /**
+ * Emit for multiple listeners
+ * @param {string} methodName name of the method to emit an error for
+ * @param {string} eventName name of the eventName to emit an error for
+ * @param {object} data to emit
+ */
+
+ }, {
+ key: "emitMulti",
+ value: function emitMulti(methodName, eventName) {
+ var data = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+ data = Object.assign(data, {
+ methodName: methodName,
+ eventName: eventName
+ });
+ this.emit("any", data);
+
+ if (methodName) {
+ this.emit(methodName, data);
+ }
+
+ this.emit(eventName, data);
+ }
+ }, {
+ key: "emitError",
+ value: function emitError(methodName, err) {
+ this.emitMulti(methodName, "error", err);
+ }
+ /**
+ * Get the current height of the image
+ * @return {number} height of the image
+ */
+
+ }, {
+ key: "getHeight",
+ value: function getHeight() {
+ return this.bitmap.height;
+ }
+ /**
+ * Get the current width of the image
+ * @return {number} width of the image
+ */
+
+ }, {
+ key: "getWidth",
+ value: function getWidth() {
+ return this.bitmap.width;
+ }
+ /**
+ * Nicely format Jimp object when sent to the console e.g. console.log(image)
+ * @returns {string} pretty printed
+ */
+
+ }, {
+ key: "inspect",
+ value: function inspect() {
+ return "";
+ }
+ /**
+ * Nicely format Jimp object when converted to a string
+ * @returns {string} pretty printed
+ */
+
+ }, {
+ key: "toString",
+ value: function toString() {
+ return "[object Jimp]";
+ }
+ /**
+ * Returns the original MIME of the image (default: "image/png")
+ * @returns {string} the MIME
+ */
+
+ }, {
+ key: "getMIME",
+ value: function getMIME() {
+ var mime = this._originalMime || Jimp.MIME_PNG;
+ return mime;
+ }
+ /**
+ * Returns the appropriate file extension for the original MIME of the image (default: "png")
+ * @returns {string} the file extension
+ */
+
+ }, {
+ key: "getExtension",
+ value: function getExtension() {
+ var mime = this.getMIME();
+ return MIME.getExtension(mime);
+ }
+ /**
+ * Writes the image to a file
+ * @param {string} path a path to the destination file
+ * @param {function(Error, Jimp)} cb (optional) a function to call when the image is saved to disk
+ * @returns {Jimp} this for chaining of methods
+ */
+
+ }, {
+ key: "write",
+ value: function write(path, cb) {
+ var _this2 = this;
+
+ if (!_fs["default"] || !_fs["default"].createWriteStream) {
+ throw new Error("Cant access the filesystem. You can use the getBase64 method.");
+ }
+
+ if (typeof path !== "string") {
+ return _utils.throwError.call(this, "path must be a string", cb);
+ }
+
+ if (typeof cb === "undefined") {
+ cb = noop;
+ }
+
+ if (typeof cb !== "function") {
+ return _utils.throwError.call(this, "cb must be a function", cb);
+ }
+
+ var mime = MIME.getType(path) || this.getMIME();
+
+ var pathObj = _path["default"].parse(path);
+
+ if (pathObj.dir) {
+ _mkdirp["default"].sync(pathObj.dir);
+ }
+
+ this.getBuffer(mime, function (err, buffer) {
+ if (err) {
+ return _utils.throwError.call(_this2, err, cb);
+ }
+
+ var stream = _fs["default"].createWriteStream(path);
+
+ stream.on("open", function () {
+ stream.write(buffer);
+ stream.end();
+ }).on("error", function (err) {
+ return _utils.throwError.call(_this2, err, cb);
+ });
+ stream.on("finish", function () {
+ cb.call(_this2, null, _this2);
+ });
+ });
+ return this;
+ }
+ }, {
+ key: "getBase64",
+
+ /**
+ * Converts the image to a base 64 string
+ * @param {string} mime the mime type of the image data to be created
+ * @param {function(Error, Jimp)} cb a Node-style function to call with the buffer as the second argument
+ * @returns {Jimp} this for chaining of methods
+ */
+ value: function getBase64(mime, cb) {
+ if (mime === Jimp.AUTO) {
+ // allow auto MIME detection
+ mime = this.getMIME();
+ }
+
+ if (typeof mime !== "string") {
+ return _utils.throwError.call(this, "mime must be a string", cb);
+ }
+
+ if (typeof cb !== "function") {
+ return _utils.throwError.call(this, "cb must be a function", cb);
+ }
+
+ this.getBuffer(mime, function (err, data) {
+ if (err) {
+ return _utils.throwError.call(this, err, cb);
+ }
+
+ var src = "data:" + mime + ";base64," + data.toString("base64");
+ cb.call(this, null, src);
+ });
+ return this;
+ }
+ }, {
+ key: "hash",
+
+ /**
+ * Generates a perceptual hash of the image . And pads the string. Can configure base.
+ * @param {number} base (optional) a number between 2 and 64 representing the base for the hash (e.g. 2 is binary, 10 is decimal, 16 is hex, 64 is base 64). Defaults to 64.
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {string} a string representing the hash
+ */
+ value: function hash(base, cb) {
+ base = base || 64;
+
+ if (typeof base === "function") {
+ cb = base;
+ base = 64;
+ }
+
+ if (typeof base !== "number") {
+ return _utils.throwError.call(this, "base must be a number", cb);
+ }
+
+ if (base < 2 || base > 64) {
+ return _utils.throwError.call(this, "base must be a number between 2 and 64", cb);
+ }
+
+ var hash = this.pHash();
+ hash = (0, _anyBase["default"])(_anyBase["default"].BIN, alphabet.slice(0, base))(hash);
+
+ while (hash.length < maxHashLength[base]) {
+ hash = "0" + hash; // pad out with leading zeros
+ }
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, hash);
+ }
+
+ return hash;
+ }
+ /**
+ * Calculates the perceptual hash
+ * @returns {number} the perceptual hash
+ */
+
+ }, {
+ key: "pHash",
+ value: function pHash() {
+ var pHash = new _phash["default"]();
+ return pHash.getHash(this);
+ }
+ /**
+ * Calculates the hamming distance of the current image and a hash based on their perceptual hash
+ * @param {hash} compareHash hash to compare to
+ * @returns {number} a number ranging from 0 to 1, 0 means they are believed to be identical
+ */
+
+ }, {
+ key: "distanceFromHash",
+ value: function distanceFromHash(compareHash) {
+ var pHash = new _phash["default"]();
+ var currentHash = pHash.getHash(this);
+ return pHash.distance(currentHash, compareHash);
+ }
+ /**
+ * Converts the image to a buffer
+ * @param {string} mime the mime type of the image buffer to be created
+ * @param {function(Error, Jimp)} cb a Node-style function to call with the buffer as the second argument
+ * @returns {Jimp} this for chaining of methods
+ */
+
+ }, {
+ key: "getPixelIndex",
+
+ /**
+ * Returns the offset of a pixel in the bitmap buffer
+ * @param {number} x the x coordinate
+ * @param {number} y the y coordinate
+ * @param {number} edgeHandling (optional) define how to sum pixels from outside the border
+ * @param {number} cb (optional) a callback for when complete
+ * @returns {number} the index of the pixel or -1 if not found
+ */
+ value: function getPixelIndex(x, y, edgeHandling, cb) {
+ var xi;
+ var yi;
+
+ if (typeof edgeHandling === "function" && typeof cb === "undefined") {
+ cb = edgeHandling;
+ edgeHandling = null;
+ }
+
+ if (!edgeHandling) {
+ edgeHandling = Jimp.EDGE_EXTEND;
+ }
+
+ if (typeof x !== "number" || typeof y !== "number") {
+ return _utils.throwError.call(this, "x and y must be numbers", cb);
+ } // round input
+
+
+ x = Math.round(x);
+ y = Math.round(y);
+ xi = x;
+ yi = y;
+
+ if (edgeHandling === Jimp.EDGE_EXTEND) {
+ if (x < 0) xi = 0;
+ if (x >= this.bitmap.width) xi = this.bitmap.width - 1;
+ if (y < 0) yi = 0;
+ if (y >= this.bitmap.height) yi = this.bitmap.height - 1;
+ }
+
+ if (edgeHandling === Jimp.EDGE_WRAP) {
+ if (x < 0) {
+ xi = this.bitmap.width + x;
+ }
+
+ if (x >= this.bitmap.width) {
+ xi = x % this.bitmap.width;
+ }
+
+ if (y < 0) {
+ xi = this.bitmap.height + y;
+ }
+
+ if (y >= this.bitmap.height) {
+ yi = y % this.bitmap.height;
+ }
+ }
+
+ var i = this.bitmap.width * yi + xi << 2; // if out of bounds index is -1
+
+ if (xi < 0 || xi >= this.bitmap.width) {
+ i = -1;
+ }
+
+ if (yi < 0 || yi >= this.bitmap.height) {
+ i = -1;
+ }
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, i);
+ }
+
+ return i;
+ }
+ /**
+ * Returns the hex colour value of a pixel
+ * @param {number} x the x coordinate
+ * @param {number} y the y coordinate
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {number} the color of the pixel
+ */
+
+ }, {
+ key: "getPixelColor",
+ value: function getPixelColor(x, y, cb) {
+ if (typeof x !== "number" || typeof y !== "number") return _utils.throwError.call(this, "x and y must be numbers", cb); // round input
+
+ x = Math.round(x);
+ y = Math.round(y);
+ var idx = this.getPixelIndex(x, y);
+ var hex = this.bitmap.data.readUInt32BE(idx);
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, hex);
+ }
+
+ return hex;
+ }
+ }, {
+ key: "setPixelColor",
+
+ /**
+ * Returns the hex colour value of a pixel
+ * @param {number} hex color to set
+ * @param {number} x the x coordinate
+ * @param {number} y the y coordinate
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {number} the index of the pixel or -1 if not found
+ */
+ value: function setPixelColor(hex, x, y, cb) {
+ if (typeof hex !== "number" || typeof x !== "number" || typeof y !== "number") return _utils.throwError.call(this, "hex, x and y must be numbers", cb); // round input
+
+ x = Math.round(x);
+ y = Math.round(y);
+ var idx = this.getPixelIndex(x, y);
+ this.bitmap.data.writeUInt32BE(hex, idx);
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ }
+ }, {
+ key: "hasAlpha",
+
+ /**
+ * Determine if the image contains opaque pixels.
+ * @return {boolean} hasAlpha whether the image contains opaque pixels
+ */
+ value: function hasAlpha() {
+ for (var yIndex = 0; yIndex < this.bitmap.height; yIndex++) {
+ for (var xIndex = 0; xIndex < this.bitmap.width; xIndex++) {
+ var idx = this.bitmap.width * yIndex + xIndex << 2;
+ var alpha = this.bitmap.data[idx + 3];
+
+ if (alpha !== 0xff) {
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+ /**
+ * Iterate scan through a region of the bitmap
+ * @param {number} x the x coordinate to begin the scan at
+ * @param {number} y the y coordinate to begin the scan at
+ * @param w the width of the scan region
+ * @param h the height of the scan region
+ * @returns {IterableIterator<{x: number, y: number, idx: number, image: Jimp}>}
+ */
+
+ }, {
+ key: "scanIterator",
+ value: function scanIterator(x, y, w, h) {
+ if (typeof x !== "number" || typeof y !== "number") {
+ return _utils.throwError.call(this, "x and y must be numbers");
+ }
+
+ if (typeof w !== "number" || typeof h !== "number") {
+ return _utils.throwError.call(this, "w and h must be numbers");
+ }
+
+ return (0, _utils.scanIterator)(this, x, y, w, h);
+ }
+ }]);
+ return Jimp;
+}(_events["default"]);
+
+function addConstants(constants) {
+ var jimpInstance = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Jimp;
+ Object.entries(constants).forEach(function (_ref) {
+ var _ref2 = (0, _slicedToArray2["default"])(_ref, 2),
+ name = _ref2[0],
+ value = _ref2[1];
+
+ jimpInstance[name] = value;
+ });
+}
+
+function addJimpMethods(methods) {
+ var jimpInstance = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Jimp;
+ Object.entries(methods).forEach(function (_ref3) {
+ var _ref4 = (0, _slicedToArray2["default"])(_ref3, 2),
+ name = _ref4[0],
+ value = _ref4[1];
+
+ jimpInstance.prototype[name] = value;
+ });
+}
+
+addConstants(constants);
+addJimpMethods({
+ composite: _composite["default"]
+});
+Jimp.__extraConstructors = [];
+/**
+ * Allow client libs to add new ways to build a Jimp object.
+ * @param {string} name identify the extra constructor.
+ * @param {function} test a function that returns true when it accepts the arguments passed to the main constructor.
+ * @param {function} run where the magic happens.
+ */
+
+Jimp.appendConstructorOption = function (name, test, run) {
+ Jimp.__extraConstructors.push({
+ name: name,
+ test: test,
+ run: run
+ });
+};
+/**
+ * Read an image from a file or a Buffer. Takes the same args as the constructor
+ * @returns {Promise} a promise
+ */
+
+
+Jimp.read = function () {
+ for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
+ args[_key3] = arguments[_key3];
+ }
+
+ return new Promise(function (resolve, reject) {
+ // eslint-disable-next-line no-new
+ (0, _construct2["default"])(Jimp, args.concat([function (err, image) {
+ if (err) reject(err);else resolve(image);
+ }]));
+ });
+};
+
+Jimp.create = Jimp.read;
+/**
+ * A static helper method that converts RGBA values to a single integer value
+ * @param {number} r the red value (0-255)
+ * @param {number} g the green value (0-255)
+ * @param {number} b the blue value (0-255)
+ * @param {number} a the alpha value (0-255)
+ * @param {function(Error, Jimp)} cb (optional) A callback for when complete
+ * @returns {number} an single integer colour value
+ */
+
+Jimp.rgbaToInt = function (r, g, b, a, cb) {
+ if (typeof r !== "number" || typeof g !== "number" || typeof b !== "number" || typeof a !== "number") {
+ return _utils.throwError.call(this, "r, g, b and a must be numbers", cb);
+ }
+
+ if (r < 0 || r > 255) {
+ return _utils.throwError.call(this, "r must be between 0 and 255", cb);
+ }
+
+ if (g < 0 || g > 255) {
+ _utils.throwError.call(this, "g must be between 0 and 255", cb);
+ }
+
+ if (b < 0 || b > 255) {
+ return _utils.throwError.call(this, "b must be between 0 and 255", cb);
+ }
+
+ if (a < 0 || a > 255) {
+ return _utils.throwError.call(this, "a must be between 0 and 255", cb);
+ }
+
+ r = Math.round(r);
+ b = Math.round(b);
+ g = Math.round(g);
+ a = Math.round(a);
+ var i = r * Math.pow(256, 3) + g * Math.pow(256, 2) + b * Math.pow(256, 1) + a * Math.pow(256, 0);
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, i);
+ }
+
+ return i;
+};
+/**
+ * A static helper method that converts RGBA values to a single integer value
+ * @param {number} i a single integer value representing an RGBA colour (e.g. 0xFF0000FF for red)
+ * @param {function(Error, Jimp)} cb (optional) A callback for when complete
+ * @returns {object} an object with the properties r, g, b and a representing RGBA values
+ */
+
+
+Jimp.intToRGBA = function (i, cb) {
+ if (typeof i !== "number") {
+ return _utils.throwError.call(this, "i must be a number", cb);
+ }
+
+ var rgba = {};
+ rgba.r = Math.floor(i / Math.pow(256, 3));
+ rgba.g = Math.floor((i - rgba.r * Math.pow(256, 3)) / Math.pow(256, 2));
+ rgba.b = Math.floor((i - rgba.r * Math.pow(256, 3) - rgba.g * Math.pow(256, 2)) / Math.pow(256, 1));
+ rgba.a = Math.floor((i - rgba.r * Math.pow(256, 3) - rgba.g * Math.pow(256, 2) - rgba.b * Math.pow(256, 1)) / Math.pow(256, 0));
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, rgba);
+ }
+
+ return rgba;
+};
+/**
+ * Converts a css color (Hex, 8-digit (RGBA) Hex, RGB, RGBA, HSL, HSLA, HSV, HSVA, Named) to a hex number
+ * @param {string} cssColor a number
+ * @returns {number} a hex number representing a color
+ */
+
+
+Jimp.cssColorToHex = function (cssColor) {
+ cssColor = cssColor || 0; // 0, null, undefined, NaN
+
+ if (typeof cssColor === "number") return Number(cssColor);
+ return parseInt((0, _tinycolor["default"])(cssColor).toHex8(), 16);
+};
+/**
+ * Limits a number to between 0 or 255
+ * @param {number} n a number
+ * @returns {number} the number limited to between 0 or 255
+ */
+
+
+Jimp.limit255 = function (n) {
+ n = Math.max(n, 0);
+ n = Math.min(n, 255);
+ return n;
+};
+/**
+ * Diffs two images and returns
+ * @param {Jimp} img1 a Jimp image to compare
+ * @param {Jimp} img2 a Jimp image to compare
+ * @param {number} threshold (optional) a number, 0 to 1, the smaller the value the more sensitive the comparison (default: 0.1)
+ * @returns {object} an object { percent: percent similar, diff: a Jimp image highlighting differences }
+ */
+
+
+Jimp.diff = function (img1, img2) {
+ var threshold = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0.1;
+ if (!(img1 instanceof Jimp) || !(img2 instanceof Jimp)) return _utils.throwError.call(this, "img1 and img2 must be an Jimp images");
+ var bmp1 = img1.bitmap;
+ var bmp2 = img2.bitmap;
+
+ if (bmp1.width !== bmp2.width || bmp1.height !== bmp2.height) {
+ if (bmp1.width * bmp1.height > bmp2.width * bmp2.height) {
+ // img1 is bigger
+ img1 = img1.cloneQuiet().resize(bmp2.width, bmp2.height);
+ } else {
+ // img2 is bigger (or they are the same in area)
+ img2 = img2.cloneQuiet().resize(bmp1.width, bmp1.height);
+ }
+ }
+
+ if (typeof threshold !== "number" || threshold < 0 || threshold > 1) {
+ return _utils.throwError.call(this, "threshold must be a number between 0 and 1");
+ }
+
+ var diff = new Jimp(bmp1.width, bmp1.height, 0xffffffff);
+ var numDiffPixels = (0, _pixelmatch["default"])(bmp1.data, bmp2.data, diff.bitmap.data, diff.bitmap.width, diff.bitmap.height, {
+ threshold: threshold
+ });
+ return {
+ percent: numDiffPixels / (diff.bitmap.width * diff.bitmap.height),
+ image: diff
+ };
+};
+/**
+ * Calculates the hamming distance of two images based on their perceptual hash
+ * @param {Jimp} img1 a Jimp image to compare
+ * @param {Jimp} img2 a Jimp image to compare
+ * @returns {number} a number ranging from 0 to 1, 0 means they are believed to be identical
+ */
+
+
+Jimp.distance = function (img1, img2) {
+ var phash = new _phash["default"]();
+ var hash1 = phash.getHash(img1);
+ var hash2 = phash.getHash(img2);
+ return phash.distance(hash1, hash2);
+};
+/**
+ * Calculates the hamming distance of two images based on their perceptual hash
+ * @param {hash} hash1 a pHash
+ * @param {hash} hash2 a pHash
+ * @returns {number} a number ranging from 0 to 1, 0 means they are believed to be identical
+ */
+
+
+Jimp.compareHashes = function (hash1, hash2) {
+ var phash = new _phash["default"]();
+ return phash.distance(hash1, hash2);
+};
+/**
+ * Compute color difference
+ * 0 means no difference, 1 means maximum difference.
+ * @param {number} rgba1: first color to compare.
+ * @param {number} rgba2: second color to compare.
+ * Both parameters must be an color object {r:val, g:val, b:val, a:val}
+ * Where `a` is optional and `val` is an integer between 0 and 255.
+ * @returns {number} float between 0 and 1.
+ */
+
+
+Jimp.colorDiff = function (rgba1, rgba2) {
+ var pow = function pow(n) {
+ return Math.pow(n, 2);
+ };
+
+ var max = Math.max;
+ var maxVal = 255 * 255 * 3;
+
+ if (rgba1.a !== 0 && !rgba1.a) {
+ rgba1.a = 255;
+ }
+
+ if (rgba2.a !== 0 && !rgba2.a) {
+ rgba2.a = 255;
+ }
+
+ return (max(pow(rgba1.r - rgba2.r), pow(rgba1.r - rgba2.r - rgba1.a + rgba2.a)) + max(pow(rgba1.g - rgba2.g), pow(rgba1.g - rgba2.g - rgba1.a + rgba2.a)) + max(pow(rgba1.b - rgba2.b), pow(rgba1.b - rgba2.b - rgba1.a + rgba2.a))) / maxVal;
+};
+/**
+ * Helper to create Jimp methods that emit events before and after its execution.
+ * @param {string} methodName The name to be appended to Jimp prototype.
+ * @param {string} evName The event name to be called.
+ * It will be prefixed by `before-` and emitted when on method call.
+ * It will be appended by `ed` and emitted after the method run.
+ * @param {function} method A function implementing the method itself.
+ * It will also create a quiet version that will not emit events, to not
+ * mess the user code with many `changed` event calls. You can call with
+ * `methodName + "Quiet"`.
+ *
+ * The emitted event comes with a object parameter to the listener with the
+ * `methodName` as one attribute.
+ */
+
+
+function jimpEvMethod(methodName, evName, method) {
+ var evNameBefore = "before-" + evName;
+ var evNameAfter = evName.replace(/e$/, "") + "ed";
+
+ Jimp.prototype[methodName] = function () {
+ var wrappedCb;
+
+ for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
+ args[_key4] = arguments[_key4];
+ }
+
+ var cb = args[method.length - 1];
+ var jimpInstance = this;
+
+ if (typeof cb === "function") {
+ wrappedCb = function wrappedCb() {
+ for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
+ args[_key5] = arguments[_key5];
+ }
+
+ var err = args[0],
+ data = args[1];
+
+ if (err) {
+ jimpInstance.emitError(methodName, err);
+ } else {
+ jimpInstance.emitMulti(methodName, evNameAfter, (0, _defineProperty2["default"])({}, methodName, data));
+ }
+
+ cb.apply(this, args);
+ };
+
+ args[args.length - 1] = wrappedCb;
+ } else {
+ wrappedCb = false;
+ }
+
+ this.emitMulti(methodName, evNameBefore);
+ var result;
+
+ try {
+ result = method.apply(this, args);
+
+ if (!wrappedCb) {
+ this.emitMulti(methodName, evNameAfter, (0, _defineProperty2["default"])({}, methodName, result));
+ }
+ } catch (error) {
+ error.methodName = methodName;
+ this.emitError(methodName, error);
+ }
+
+ return result;
+ };
+
+ Jimp.prototype[methodName + "Quiet"] = method;
+}
+/**
+ * Creates a new image that is a clone of this one.
+ * @param {function(Error, Jimp)} cb (optional) A callback for when complete
+ * @returns the new image
+ */
+
+
+jimpEvMethod("clone", "clone", function (cb) {
+ var clone = new Jimp(this);
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(clone, null, clone);
+ }
+
+ return clone;
+});
+/**
+ * Simplify jimpEvMethod call for the common `change` evName.
+ * @param {string} methodName name of the method
+ * @param {function} method to watch changes for
+ */
+
+function jimpEvChange(methodName, method) {
+ jimpEvMethod(methodName, "change", method);
+}
+/**
+ * Sets the type of the image (RGB or RGBA) when saving as PNG format (default is RGBA)
+ * @param b A Boolean, true to use RGBA or false to use RGB
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+
+
+jimpEvChange("background", function (hex, cb) {
+ if (typeof hex !== "number") {
+ return _utils.throwError.call(this, "hex must be a hexadecimal rgba value", cb);
+ }
+
+ this._background = hex;
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+});
+/**
+ * Scans through a region of the bitmap, calling a function for each pixel.
+ * @param {number} x the x coordinate to begin the scan at
+ * @param {number} y the y coordinate to begin the scan at
+ * @param w the width of the scan region
+ * @param h the height of the scan region
+ * @param f a function to call on even pixel; the (x, y) position of the pixel
+ * and the index of the pixel in the bitmap buffer are passed to the function
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+
+jimpEvChange("scan", function (x, y, w, h, f, cb) {
+ if (typeof x !== "number" || typeof y !== "number") {
+ return _utils.throwError.call(this, "x and y must be numbers", cb);
+ }
+
+ if (typeof w !== "number" || typeof h !== "number") {
+ return _utils.throwError.call(this, "w and h must be numbers", cb);
+ }
+
+ if (typeof f !== "function") {
+ return _utils.throwError.call(this, "f must be a function", cb);
+ }
+
+ var result = (0, _utils.scan)(this, x, y, w, h, f);
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, result);
+ }
+
+ return result;
+});
+
+if (process.env.ENVIRONMENT === "BROWSER") {
+ // For use in a web browser or web worker
+
+ /* global self */
+ var gl;
+
+ if (typeof window !== "undefined" && (typeof window === "undefined" ? "undefined" : (0, _typeof2["default"])(window)) === "object") {
+ gl = window;
+ }
+
+ if (typeof self !== "undefined" && (typeof self === "undefined" ? "undefined" : (0, _typeof2["default"])(self)) === "object") {
+ gl = self;
+ }
+
+ gl.Jimp = Jimp;
+ gl.Buffer = Buffer;
+}
+
+var _default = Jimp;
+exports["default"] = _default;
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@jimp/core/dist/index.js.map b/node_modules/@jimp/core/dist/index.js.map
new file mode 100644
index 00000000..3f39a86b
--- /dev/null
+++ b/node_modules/@jimp/core/dist/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/index.js"],"names":["alphabet","maxHashLength","NaN","i","maxHash","anyBase","BIN","slice","Array","join","push","length","noop","isArrayBuffer","test","Object","prototype","toString","call","toLowerCase","indexOf","bufferFromArrayBuffer","arrayBuffer","buffer","Buffer","alloc","byteLength","view","Uint8Array","loadFromURL","options","cb","err","response","data","headers","url","location","isBuffer","msg","statusCode","Error","loadBufferFromPath","src","fs","readFile","match","isRawRGBAData","obj","width","height","Uint8ClampedArray","makeRGBABufferFromRGB","rgbaBuffer","allocUnsafe","j","emptyBitmap","Jimp","args","MIME_PNG","path","write","mime","getBase64","getBuffer","getBufferAsync","getPixelColor","setPixelColor","jimpInstance","finish","evData","methodName","setTimeout","emitError","emitMulti","parseInt","w","h","_background","cssColorToHex","throwError","bitmap","writeUInt32BE","parseBitmap","original","from","_quality","_deflateLevel","_deflateStrategy","_filterType","_rgba","_originalMime","imageData","isRGBA","extraConstructor","__extraConstructors","find","c","Promise","resolve","reject","run","then","bool","eventName","assign","emit","getMIME","MIME","getExtension","createWriteStream","getType","pathObj","Path","parse","dir","mkdirp","sync","stream","on","end","AUTO","base","hash","pHash","ImagePHash","getHash","compareHash","currentHash","distance","x","y","edgeHandling","xi","yi","EDGE_EXTEND","Math","round","EDGE_WRAP","idx","getPixelIndex","hex","readUInt32BE","yIndex","xIndex","alpha","EventEmitter","addConstants","constants","entries","forEach","name","value","addJimpMethods","methods","composite","appendConstructorOption","read","image","create","rgbaToInt","r","g","b","a","pow","intToRGBA","rgba","floor","cssColor","Number","toHex8","limit255","n","max","min","diff","img1","img2","threshold","bmp1","bmp2","cloneQuiet","resize","numDiffPixels","percent","phash","hash1","hash2","compareHashes","colorDiff","rgba1","rgba2","maxVal","jimpEvMethod","evName","method","evNameBefore","evNameAfter","replace","wrappedCb","apply","result","error","clone","jimpEvChange","f","process","env","ENVIRONMENT","gl","window","self"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AAEA,IAAMA,QAAQ,GACZ,kEADF,C,CAGA;AACA;;AACA,IAAMC,aAAa,GAAG,CAACC,GAAD,EAAMA,GAAN,CAAtB;;AAEA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,EAApB,EAAwBA,CAAC,EAAzB,EAA6B;AAC3B,MAAMC,OAAO,GAAG,yBACdC,oBAAQC,GADM,EAEdN,QAAQ,CAACO,KAAT,CAAe,CAAf,EAAkBJ,CAAlB,CAFc,EAGd,IAAIK,KAAJ,CAAU,KAAK,CAAf,EAAkBC,IAAlB,CAAuB,GAAvB,CAHc,CAAhB;AAIAR,EAAAA,aAAa,CAACS,IAAd,CAAmBN,OAAO,CAACO,MAA3B;AACD,C,CAED;;;AACA,SAASC,IAAT,GAAgB,CAAE,C,CAElB;;;AAEA,SAASC,aAAT,CAAuBC,IAAvB,EAA6B;AAC3B,SACEC,MAAM,CAACC,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+BJ,IAA/B,EAAqCK,WAArC,GAAmDC,OAAnD,CAA2D,aAA3D,IACA,CAAC,CAFH;AAID,C,CAED;AACA;;;AACA,SAASC,qBAAT,CAA+BC,WAA/B,EAA4C;AAC1C,MAAMC,MAAM,GAAGC,MAAM,CAACC,KAAP,CAAaH,WAAW,CAACI,UAAzB,CAAf;AACA,MAAMC,IAAI,GAAG,IAAIC,UAAJ,CAAeN,WAAf,CAAb;;AAEA,OAAK,IAAInB,EAAC,GAAG,CAAb,EAAgBA,EAAC,GAAGoB,MAAM,CAACZ,MAA3B,EAAmC,EAAER,EAArC,EAAwC;AACtCoB,IAAAA,MAAM,CAACpB,EAAD,CAAN,GAAYwB,IAAI,CAACxB,EAAD,CAAhB;AACD;;AAED,SAAOoB,MAAP;AACD;;AAED,SAASM,WAAT,CAAqBC,OAArB,EAA8BC,EAA9B,EAAkC;AAChC,2BAAQD,OAAR,EAAiB,UAACE,GAAD,EAAMC,QAAN,EAAgBC,IAAhB,EAAyB;AACxC,QAAIF,GAAJ,EAAS;AACP,aAAOD,EAAE,CAACC,GAAD,CAAT;AACD;;AAED,QAAI,aAAaC,QAAb,IAAyB,cAAcA,QAAQ,CAACE,OAApD,EAA6D;AAC3DL,MAAAA,OAAO,CAACM,GAAR,GAAcH,QAAQ,CAACE,OAAT,CAAiBE,QAA/B;AACA,aAAOR,WAAW,CAACC,OAAD,EAAUC,EAAV,CAAlB;AACD;;AAED,QAAI,yBAAOG,IAAP,MAAgB,QAAhB,IAA4BV,MAAM,CAACc,QAAP,CAAgBJ,IAAhB,CAAhC,EAAuD;AACrD,aAAOH,EAAE,CAAC,IAAD,EAAOG,IAAP,CAAT;AACD;;AAED,QAAMK,GAAG,GACP,iCACAT,OAAO,CAACM,GADR,GAEA,IAFA,GAGA,SAHA,GAIAH,QAAQ,CAACO,UAJT,GAKA,GANF;AAQA,WAAO,IAAIC,KAAJ,CAAUF,GAAV,CAAP;AACD,GAvBD;AAwBD;;AAED,SAASG,kBAAT,CAA4BC,GAA5B,EAAiCZ,EAAjC,EAAqC;AACnC,MACEa,kBACA,OAAOA,eAAGC,QAAV,KAAuB,UADvB,IAEA,CAACF,GAAG,CAACG,KAAJ,CAAU,qBAAV,CAHH,EAIE;AACAF,mBAAGC,QAAH,CAAYF,GAAZ,EAAiBZ,EAAjB;AACD,GAND,MAMO;AACLF,IAAAA,WAAW,CAAC;AAAEO,MAAAA,GAAG,EAAEO;AAAP,KAAD,EAAeZ,EAAf,CAAX;AACD;AACF;;AAED,SAASgB,aAAT,CAAuBC,GAAvB,EAA4B;AAC1B,SACEA,GAAG,IACH,yBAAOA,GAAP,MAAe,QADf,IAEA,OAAOA,GAAG,CAACC,KAAX,KAAqB,QAFrB,IAGA,OAAOD,GAAG,CAACE,MAAX,KAAsB,QAHtB,KAIC1B,MAAM,CAACc,QAAP,CAAgBU,GAAG,CAACd,IAApB,KACCc,GAAG,CAACd,IAAJ,YAAoBN,UADrB,IAEE,OAAOuB,iBAAP,KAA6B,UAA7B,IACCH,GAAG,CAACd,IAAJ,YAAoBiB,iBAPxB,MAQCH,GAAG,CAACd,IAAJ,CAASvB,MAAT,KAAoBqC,GAAG,CAACC,KAAJ,GAAYD,GAAG,CAACE,MAAhB,GAAyB,CAA7C,IACCF,GAAG,CAACd,IAAJ,CAASvB,MAAT,KAAoBqC,GAAG,CAACC,KAAJ,GAAYD,GAAG,CAACE,MAAhB,GAAyB,CAT/C,CADF;AAYD;;AAED,SAASE,qBAAT,CAA+B7B,MAA/B,EAAuC;AACrC,MAAIA,MAAM,CAACZ,MAAP,GAAgB,CAAhB,KAAsB,CAA1B,EAA6B;AAC3B,UAAM,IAAI8B,KAAJ,CAAU,4BAAV,CAAN;AACD;;AAED,MAAMY,UAAU,GAAG7B,MAAM,CAAC8B,WAAP,CAAoB/B,MAAM,CAACZ,MAAP,GAAgB,CAAjB,GAAsB,CAAzC,CAAnB;AACA,MAAI4C,CAAC,GAAG,CAAR;;AAEA,OAAK,IAAIpD,GAAC,GAAG,CAAb,EAAgBA,GAAC,GAAGoB,MAAM,CAACZ,MAA3B,EAAmCR,GAAC,EAApC,EAAwC;AACtCkD,IAAAA,UAAU,CAACE,CAAD,CAAV,GAAgBhC,MAAM,CAACpB,GAAD,CAAtB;;AAEA,QAAI,CAACA,GAAC,GAAG,CAAL,IAAU,CAAV,KAAgB,CAApB,EAAuB;AACrBkD,MAAAA,UAAU,CAAC,EAAEE,CAAH,CAAV,GAAkB,GAAlB;AACD;;AAEDA,IAAAA,CAAC;AACF;;AAED,SAAOF,UAAP;AACD;;AAED,IAAMG,WAAW,GAAG;AAClBtB,EAAAA,IAAI,EAAE,IADY;AAElBe,EAAAA,KAAK,EAAE,IAFW;AAGlBC,EAAAA,MAAM,EAAE;AAHU,CAApB;AAMA;;;;;;AAMA;;;;;;AAMA;;;;;;AAMA;;;;;;AAMA;;;;;;;AAOA;;;;;;;;IAQMO,I;;;;;AACJ;AACA;AACA;AACA;AAGA;AAGA;AAGA;AAGA;AAGA,kBAAqB;AAAA;;AAAA,sCAANC,IAAM;AAANA,MAAAA,IAAM;AAAA;;AAAA;AACnB;AADmB,+FAdZF,WAcY;AAAA,oGAXP,UAWO;AAAA,sGARLC,IAAI,CAACE,QAQA;AAAA,8FALb,IAKa;AAAA,8FAFb,IAEa;AAAA,mGAyWR,UAACC,IAAD;AAAA,aAAU,2BAAU,MAAKC,KAAf,kDAA4BD,IAA5B,CAAV;AAAA,KAzWQ;AAAA,uGA2YJ,UAACE,IAAD;AAAA,aAAU,2BAAU,MAAKC,SAAf,kDAAgCD,IAAhC,CAAV;AAAA,KA3YI;AAAA,kGAgdTE,sBAhdS;AAAA,uGAkdJC,2BAldI;AAAA,uGAujBJ,MAAKC,aAvjBD;AAAA,uGAulBJ,MAAKC,aAvlBD;AAGnB,QAAMC,YAAY,iDAAlB;AACA,QAAIrC,EAAE,GAAGnB,IAAT;;AAEA,QAAIC,aAAa,CAAC6C,IAAI,CAAC,CAAD,CAAL,CAAjB,EAA4B;AAC1BA,MAAAA,IAAI,CAAC,CAAD,CAAJ,GAAUrC,qBAAqB,CAACqC,IAAI,CAAC,CAAD,CAAL,CAA/B;AACD;;AAED,aAASW,MAAT,GAAyB;AAAA,yCAANX,IAAM;AAANA,QAAAA,IAAM;AAAA;;AAAA,UAChB1B,GADgB,GACT0B,IADS;AAEvB,UAAMY,MAAM,GAAGtC,GAAG,IAAI,EAAtB;AACAsC,MAAAA,MAAM,CAACC,UAAP,GAAoB,aAApB;AAEAC,MAAAA,UAAU,CAAC,YAAM;AAAA;;AACf;AACA,YAAIxC,GAAG,IAAID,EAAE,KAAKnB,IAAlB,EAAwB;AACtBwD,UAAAA,YAAY,CAACK,SAAb,CAAuB,aAAvB,EAAsCzC,GAAtC;AACD,SAFD,MAEO,IAAI,CAACA,GAAL,EAAU;AACfoC,UAAAA,YAAY,CAACM,SAAb,CAAuB,aAAvB,EAAsC,aAAtC;AACD;;AAED,eAAA3C,EAAE,EAACb,IAAH,aAAQkD,YAAR,SAAyBV,IAAzB;AACD,OATS,EASP,CATO,CAAV;AAUD;;AAED,QACG,OAAOA,IAAI,CAAC,CAAD,CAAX,KAAmB,QAAnB,IAA+B,OAAOA,IAAI,CAAC,CAAD,CAAX,KAAmB,QAAnD,IACCiB,QAAQ,CAACjB,IAAI,CAAC,CAAD,CAAL,EAAU,EAAV,CAAR,IAAyBiB,QAAQ,CAACjB,IAAI,CAAC,CAAD,CAAL,EAAU,EAAV,CAFpC,EAGE;AACA;AACA,UAAMkB,CAAC,GAAGD,QAAQ,CAACjB,IAAI,CAAC,CAAD,CAAL,EAAU,EAAV,CAAlB;AACA,UAAMmB,CAAC,GAAGF,QAAQ,CAACjB,IAAI,CAAC,CAAD,CAAL,EAAU,EAAV,CAAlB;AACA3B,MAAAA,EAAE,GAAG2B,IAAI,CAAC,CAAD,CAAT,CAJA,CAMA;;AACA,UAAI,OAAOA,IAAI,CAAC,CAAD,CAAX,KAAmB,QAAvB,EAAiC;AAC/B,cAAKoB,WAAL,GAAmBpB,IAAI,CAAC,CAAD,CAAvB;AACA3B,QAAAA,EAAE,GAAG2B,IAAI,CAAC,CAAD,CAAT;AACD,OAVD,CAYA;;;AACA,UAAI,OAAOA,IAAI,CAAC,CAAD,CAAX,KAAmB,QAAvB,EAAiC;AAC/B,cAAKoB,WAAL,GAAmBrB,IAAI,CAACsB,aAAL,CAAmBrB,IAAI,CAAC,CAAD,CAAvB,CAAnB;AACA3B,QAAAA,EAAE,GAAG2B,IAAI,CAAC,CAAD,CAAT;AACD;;AAED,UAAI,OAAO3B,EAAP,KAAc,WAAlB,EAA+B;AAC7BA,QAAAA,EAAE,GAAGnB,IAAL;AACD;;AAED,UAAI,OAAOmB,EAAP,KAAc,UAAlB,EAA8B;AAC5B,kEAAOiD,kBAAW9D,IAAX,iDAAsB,uBAAtB,EAA+CmD,MAA/C,CAAP;AACD;;AAED,YAAKY,MAAL,GAAc;AACZ/C,QAAAA,IAAI,EAAEV,MAAM,CAACC,KAAP,CAAamD,CAAC,GAAGC,CAAJ,GAAQ,CAArB,CADM;AAEZ5B,QAAAA,KAAK,EAAE2B,CAFK;AAGZ1B,QAAAA,MAAM,EAAE2B;AAHI,OAAd;;AAMA,WAAK,IAAI1E,GAAC,GAAG,CAAb,EAAgBA,GAAC,GAAG,MAAK8E,MAAL,CAAY/C,IAAZ,CAAiBvB,MAArC,EAA6CR,GAAC,IAAI,CAAlD,EAAqD;AACnD,cAAK8E,MAAL,CAAY/C,IAAZ,CAAiBgD,aAAjB,CAA+B,MAAKJ,WAApC,EAAiD3E,GAAjD;AACD;;AAEDkE,MAAAA,MAAM,CAAC,IAAD,iDAAN;AACD,KAxCD,MAwCO,IAAI,yBAAOX,IAAI,CAAC,CAAD,CAAX,MAAmB,QAAnB,IAA+BA,IAAI,CAAC,CAAD,CAAJ,CAAQtB,GAA3C,EAAgD;AACrDL,MAAAA,EAAE,GAAG2B,IAAI,CAAC,CAAD,CAAJ,IAAW9C,IAAhB;;AAEA,UAAI,OAAOmB,EAAP,KAAc,UAAlB,EAA8B;AAC5B,kEAAOiD,kBAAW9D,IAAX,iDAAsB,uBAAtB,EAA+CmD,MAA/C,CAAP;AACD;;AAEDxC,MAAAA,WAAW,CAAC6B,IAAI,CAAC,CAAD,CAAL,EAAU,UAAC1B,GAAD,EAAME,IAAN,EAAe;AAClC,YAAIF,GAAJ,EAAS;AACP,iBAAOgD,kBAAW9D,IAAX,iDAAsBc,GAAtB,EAA2BqC,MAA3B,CAAP;AACD;;AAED,cAAKc,WAAL,CAAiBjD,IAAjB,EAAuBwB,IAAI,CAAC,CAAD,CAAJ,CAAQtB,GAA/B,EAAoCiC,MAApC;AACD,OANU,CAAX;AAOD,KAdM,MAcA,IAAIX,IAAI,CAAC,CAAD,CAAJ,YAAmBD,IAAvB,EAA6B;AAClC;AADkC,UAE3B2B,QAF2B,GAEf1B,IAFe;AAGlC3B,MAAAA,EAAE,GAAG2B,IAAI,CAAC,CAAD,CAAT;;AAEA,UAAI,OAAO3B,EAAP,KAAc,WAAlB,EAA+B;AAC7BA,QAAAA,EAAE,GAAGnB,IAAL;AACD;;AAED,UAAI,OAAOmB,EAAP,KAAc,UAAlB,EAA8B;AAC5B,kEAAOiD,kBAAW9D,IAAX,iDAAsB,uBAAtB,EAA+CmD,MAA/C,CAAP;AACD;;AAED,YAAKY,MAAL,GAAc;AACZ/C,QAAAA,IAAI,EAAEV,MAAM,CAAC6D,IAAP,CAAYD,QAAQ,CAACH,MAAT,CAAgB/C,IAA5B,CADM;AAEZe,QAAAA,KAAK,EAAEmC,QAAQ,CAACH,MAAT,CAAgBhC,KAFX;AAGZC,QAAAA,MAAM,EAAEkC,QAAQ,CAACH,MAAT,CAAgB/B;AAHZ,OAAd;AAMA,YAAKoC,QAAL,GAAgBF,QAAQ,CAACE,QAAzB;AACA,YAAKC,aAAL,GAAqBH,QAAQ,CAACG,aAA9B;AACA,YAAKC,gBAAL,GAAwBJ,QAAQ,CAACI,gBAAjC;AACA,YAAKC,WAAL,GAAmBL,QAAQ,CAACK,WAA5B;AACA,YAAKC,KAAL,GAAaN,QAAQ,CAACM,KAAtB;AACA,YAAKZ,WAAL,GAAmBM,QAAQ,CAACN,WAA5B;AACA,YAAKa,aAAL,GAAqBP,QAAQ,CAACO,aAA9B;AAEAtB,MAAAA,MAAM,CAAC,IAAD,iDAAN;AACD,KA5BM,MA4BA,IAAItB,aAAa,CAACW,IAAI,CAAC,CAAD,CAAL,CAAjB,EAA4B;AAAA,UAC1BkC,SAD0B,GACblC,IADa;AAEjC3B,MAAAA,EAAE,GAAG2B,IAAI,CAAC,CAAD,CAAJ,IAAW9C,IAAhB;AAEA,UAAMiF,MAAM,GACVD,SAAS,CAAC3C,KAAV,GAAkB2C,SAAS,CAAC1C,MAA5B,GAAqC,CAArC,KAA2C0C,SAAS,CAAC1D,IAAV,CAAevB,MAD5D;AAEA,UAAMY,MAAM,GAAGsE,MAAM,GACjBrE,MAAM,CAAC6D,IAAP,CAAYO,SAAS,CAAC1D,IAAtB,CADiB,GAEjBkB,qBAAqB,CAACwC,SAAS,CAAC1D,IAAX,CAFzB;AAIA,YAAK+C,MAAL,GAAc;AACZ/C,QAAAA,IAAI,EAAEX,MADM;AAEZ0B,QAAAA,KAAK,EAAE2C,SAAS,CAAC3C,KAFL;AAGZC,QAAAA,MAAM,EAAE0C,SAAS,CAAC1C;AAHN,OAAd;AAMAmB,MAAAA,MAAM,CAAC,IAAD,iDAAN;AACD,KAjBM,MAiBA,IAAI,OAAOX,IAAI,CAAC,CAAD,CAAX,KAAmB,QAAvB,EAAiC;AACtC;AACA,UAAME,IAAI,GAAGF,IAAI,CAAC,CAAD,CAAjB;AACA3B,MAAAA,EAAE,GAAG2B,IAAI,CAAC,CAAD,CAAT;;AAEA,UAAI,OAAO3B,EAAP,KAAc,WAAlB,EAA+B;AAC7BA,QAAAA,EAAE,GAAGnB,IAAL;AACD;;AAED,UAAI,OAAOmB,EAAP,KAAc,UAAlB,EAA8B;AAC5B,kEAAOiD,kBAAW9D,IAAX,iDAAsB,uBAAtB,EAA+CmD,MAA/C,CAAP;AACD;;AAED3B,MAAAA,kBAAkB,CAACkB,IAAD,EAAO,UAAC5B,GAAD,EAAME,IAAN,EAAe;AACtC,YAAIF,GAAJ,EAAS;AACP,iBAAOgD,kBAAW9D,IAAX,iDAAsBc,GAAtB,EAA2BqC,MAA3B,CAAP;AACD;;AAED,cAAKc,WAAL,CAAiBjD,IAAjB,EAAuB0B,IAAvB,EAA6BS,MAA7B;AACD,OANiB,CAAlB;AAOD,KApBM,MAoBA,IAAI,yBAAOX,IAAI,CAAC,CAAD,CAAX,MAAmB,QAAnB,IAA+BlC,MAAM,CAACc,QAAP,CAAgBoB,IAAI,CAAC,CAAD,CAApB,CAAnC,EAA6D;AAClE;AACA,UAAMxB,IAAI,GAAGwB,IAAI,CAAC,CAAD,CAAjB;AACA3B,MAAAA,EAAE,GAAG2B,IAAI,CAAC,CAAD,CAAT;;AAEA,UAAI,OAAO3B,EAAP,KAAc,UAAlB,EAA8B;AAC5B,kEAAOiD,kBAAW9D,IAAX,iDAAsB,uBAAtB,EAA+CmD,MAA/C,CAAP;AACD;;AAED,YAAKc,WAAL,CAAiBjD,IAAjB,EAAuB,IAAvB,EAA6BmC,MAA7B;AACD,KAVM,MAUA;AACL;AACA;AACAtC,MAAAA,EAAE,GAAG2B,IAAI,CAACA,IAAI,CAAC/C,MAAL,GAAc,CAAf,CAAT;;AAEA,UAAI,OAAOoB,EAAP,KAAc,UAAlB,EAA8B;AAC5B;AACAA,QAAAA,EAAE,GAAG2B,IAAI,CAACA,IAAI,CAAC/C,MAAL,GAAc,CAAf,CAAT;;AAEA,YAAI,OAAOoB,EAAP,KAAc,UAAlB,EAA8B;AAC5BA,UAAAA,EAAE,GAAGnB,IAAL;AACD;AACF;;AAED,UAAMkF,gBAAgB,GAAGrC,IAAI,CAACsC,mBAAL,CAAyBC,IAAzB,CAA8B,UAACC,CAAD;AAAA,eACrDA,CAAC,CAACnF,IAAF,OAAAmF,CAAC,EAASvC,IAAT,CADoD;AAAA,OAA9B,CAAzB;;AAIA,UAAIoC,gBAAJ,EAAsB;AACpB,YAAII,OAAJ,CAAY,UAACC,OAAD,EAAUC,MAAV,EAAqB;AAAA;;AAC/B,mCAAAN,gBAAgB,CAACO,GAAjB,EAAqBnF,IAArB,+EAAgCiF,OAAhC,EAAyCC,MAAzC,SAAoD1C,IAApD;AACD,SAFD,EAGG4C,IAHH,CAGQ;AAAA,iBAAMjC,MAAM,CAAC,IAAD,iDAAZ;AAAA,SAHR,WAISA,MAJT;AAKD,OAND,MAMO;AACL,kEAAOW,kBAAW9D,IAAX,iDAEL,oDACE,2DAHG,EAILmD,MAJK,CAAP;AAMD;AACF;;AA5LkB;AA6LpB;AAED;;;;;;;;;;;;gCAQYnC,I,EAAM0B,I,EAAMS,M,EAAQ;AAC9Bc,+BAAYjE,IAAZ,CAAiB,IAAjB,EAAuBgB,IAAvB,EAA6B,IAA7B,EAAmCmC,MAAnC;AACD;AAED;;;;;;;;;yBAMKkC,I,EAAMxE,E,EAAI;AACb,UAAI,OAAOwE,IAAP,KAAgB,SAApB,EAA+B;AAC7B,eAAOvB,kBAAW9D,IAAX,CACL,IADK,EAEL,wDAFK,EAGLa,EAHK,CAAP;AAKD;;AAED,WAAK2D,KAAL,GAAaa,IAAb;;AAEA,UAAI,0BAAcxE,EAAd,CAAJ,EAAuB;AACrBA,QAAAA,EAAE,CAACb,IAAH,CAAQ,IAAR,EAAc,IAAd,EAAoB,IAApB;AACD;;AAED,aAAO,IAAP;AACD;AAED;;;;;;;;;8BAMUqD,U,EAAYiC,S,EAAsB;AAAA,UAAXtE,IAAW,uEAAJ,EAAI;AAC1CA,MAAAA,IAAI,GAAGnB,MAAM,CAAC0F,MAAP,CAAcvE,IAAd,EAAoB;AAAEqC,QAAAA,UAAU,EAAVA,UAAF;AAAciC,QAAAA,SAAS,EAATA;AAAd,OAApB,CAAP;AACA,WAAKE,IAAL,CAAU,KAAV,EAAiBxE,IAAjB;;AAEA,UAAIqC,UAAJ,EAAgB;AACd,aAAKmC,IAAL,CAAUnC,UAAV,EAAsBrC,IAAtB;AACD;;AAED,WAAKwE,IAAL,CAAUF,SAAV,EAAqBtE,IAArB;AACD;;;8BAESqC,U,EAAYvC,G,EAAK;AACzB,WAAK0C,SAAL,CAAeH,UAAf,EAA2B,OAA3B,EAAoCvC,GAApC;AACD;AAED;;;;;;;gCAIY;AACV,aAAO,KAAKiD,MAAL,CAAY/B,MAAnB;AACD;AAED;;;;;;;+BAIW;AACT,aAAO,KAAK+B,MAAL,CAAYhC,KAAnB;AACD;AAED;;;;;;;8BAIU;AACR,aACE,YACC,KAAKgC,MAAL,KAAgBzB,WAAhB,GACG,YADH,GAEG,KAAKyB,MAAL,CAAYhC,KAAZ,GAAoB,GAApB,GAA0B,KAAKgC,MAAL,CAAY/B,MAH1C,IAIA,GALF;AAOD;AAED;;;;;;;+BAIW;AACT,aAAO,eAAP;AACD;AAED;;;;;;;8BAIU;AACR,UAAMY,IAAI,GAAG,KAAK6B,aAAL,IAAsBlC,IAAI,CAACE,QAAxC;AAEA,aAAOG,IAAP;AACD;AAED;;;;;;;mCAIe;AACb,UAAMA,IAAI,GAAG,KAAK6C,OAAL,EAAb;AAEA,aAAOC,IAAI,CAACC,YAAL,CAAkB/C,IAAlB,CAAP;AACD;AAED;;;;;;;;;0BAMMF,I,EAAM7B,E,EAAI;AAAA;;AACd,UAAI,CAACa,cAAD,IAAO,CAACA,eAAGkE,iBAAf,EAAkC;AAChC,cAAM,IAAIrE,KAAJ,CACJ,+DADI,CAAN;AAGD;;AAED,UAAI,OAAOmB,IAAP,KAAgB,QAApB,EAA8B;AAC5B,eAAOoB,kBAAW9D,IAAX,CAAgB,IAAhB,EAAsB,uBAAtB,EAA+Ca,EAA/C,CAAP;AACD;;AAED,UAAI,OAAOA,EAAP,KAAc,WAAlB,EAA+B;AAC7BA,QAAAA,EAAE,GAAGnB,IAAL;AACD;;AAED,UAAI,OAAOmB,EAAP,KAAc,UAAlB,EAA8B;AAC5B,eAAOiD,kBAAW9D,IAAX,CAAgB,IAAhB,EAAsB,uBAAtB,EAA+Ca,EAA/C,CAAP;AACD;;AAED,UAAM+B,IAAI,GAAG8C,IAAI,CAACG,OAAL,CAAanD,IAAb,KAAsB,KAAK+C,OAAL,EAAnC;;AACA,UAAMK,OAAO,GAAGC,iBAAKC,KAAL,CAAWtD,IAAX,CAAhB;;AAEA,UAAIoD,OAAO,CAACG,GAAZ,EAAiB;AACfC,2BAAOC,IAAP,CAAYL,OAAO,CAACG,GAApB;AACD;;AAED,WAAKnD,SAAL,CAAeF,IAAf,EAAqB,UAAC9B,GAAD,EAAMT,MAAN,EAAiB;AACpC,YAAIS,GAAJ,EAAS;AACP,iBAAOgD,kBAAW9D,IAAX,CAAgB,MAAhB,EAAsBc,GAAtB,EAA2BD,EAA3B,CAAP;AACD;;AAED,YAAMuF,MAAM,GAAG1E,eAAGkE,iBAAH,CAAqBlD,IAArB,CAAf;;AAEA0D,QAAAA,MAAM,CACHC,EADH,CACM,MADN,EACc,YAAM;AAChBD,UAAAA,MAAM,CAACzD,KAAP,CAAatC,MAAb;AACA+F,UAAAA,MAAM,CAACE,GAAP;AACD,SAJH,EAKGD,EALH,CAKM,OALN,EAKe,UAACvF,GAAD,EAAS;AACpB,iBAAOgD,kBAAW9D,IAAX,CAAgB,MAAhB,EAAsBc,GAAtB,EAA2BD,EAA3B,CAAP;AACD,SAPH;AAQAuF,QAAAA,MAAM,CAACC,EAAP,CAAU,QAAV,EAAoB,YAAM;AACxBxF,UAAAA,EAAE,CAACb,IAAH,CAAQ,MAAR,EAAc,IAAd,EAAoB,MAApB;AACD,SAFD;AAGD,OAlBD;AAoBA,aAAO,IAAP;AACD;;;;AAID;;;;;;8BAMU4C,I,EAAM/B,E,EAAI;AAClB,UAAI+B,IAAI,KAAKL,IAAI,CAACgE,IAAlB,EAAwB;AACtB;AACA3D,QAAAA,IAAI,GAAG,KAAK6C,OAAL,EAAP;AACD;;AAED,UAAI,OAAO7C,IAAP,KAAgB,QAApB,EAA8B;AAC5B,eAAOkB,kBAAW9D,IAAX,CAAgB,IAAhB,EAAsB,uBAAtB,EAA+Ca,EAA/C,CAAP;AACD;;AAED,UAAI,OAAOA,EAAP,KAAc,UAAlB,EAA8B;AAC5B,eAAOiD,kBAAW9D,IAAX,CAAgB,IAAhB,EAAsB,uBAAtB,EAA+Ca,EAA/C,CAAP;AACD;;AAED,WAAKiC,SAAL,CAAeF,IAAf,EAAqB,UAAU9B,GAAV,EAAeE,IAAf,EAAqB;AACxC,YAAIF,GAAJ,EAAS;AACP,iBAAOgD,kBAAW9D,IAAX,CAAgB,IAAhB,EAAsBc,GAAtB,EAA2BD,EAA3B,CAAP;AACD;;AAED,YAAMY,GAAG,GAAG,UAAUmB,IAAV,GAAiB,UAAjB,GAA8B5B,IAAI,CAACjB,QAAL,CAAc,QAAd,CAA1C;AACAc,QAAAA,EAAE,CAACb,IAAH,CAAQ,IAAR,EAAc,IAAd,EAAoByB,GAApB;AACD,OAPD;AASA,aAAO,IAAP;AACD;;;;AAID;;;;;;yBAMK+E,I,EAAM3F,E,EAAI;AACb2F,MAAAA,IAAI,GAAGA,IAAI,IAAI,EAAf;;AAEA,UAAI,OAAOA,IAAP,KAAgB,UAApB,EAAgC;AAC9B3F,QAAAA,EAAE,GAAG2F,IAAL;AACAA,QAAAA,IAAI,GAAG,EAAP;AACD;;AAED,UAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;AAC5B,eAAO1C,kBAAW9D,IAAX,CAAgB,IAAhB,EAAsB,uBAAtB,EAA+Ca,EAA/C,CAAP;AACD;;AAED,UAAI2F,IAAI,GAAG,CAAP,IAAYA,IAAI,GAAG,EAAvB,EAA2B;AACzB,eAAO1C,kBAAW9D,IAAX,CACL,IADK,EAEL,wCAFK,EAGLa,EAHK,CAAP;AAKD;;AAED,UAAI4F,IAAI,GAAG,KAAKC,KAAL,EAAX;AACAD,MAAAA,IAAI,GAAG,yBAAQtH,oBAAQC,GAAhB,EAAqBN,QAAQ,CAACO,KAAT,CAAe,CAAf,EAAkBmH,IAAlB,CAArB,EAA8CC,IAA9C,CAAP;;AAEA,aAAOA,IAAI,CAAChH,MAAL,GAAcV,aAAa,CAACyH,IAAD,CAAlC,EAA0C;AACxCC,QAAAA,IAAI,GAAG,MAAMA,IAAb,CADwC,CACrB;AACpB;;AAED,UAAI,0BAAc5F,EAAd,CAAJ,EAAuB;AACrBA,QAAAA,EAAE,CAACb,IAAH,CAAQ,IAAR,EAAc,IAAd,EAAoByG,IAApB;AACD;;AAED,aAAOA,IAAP;AACD;AAED;;;;;;;4BAIQ;AACN,UAAMC,KAAK,GAAG,IAAIC,iBAAJ,EAAd;AACA,aAAOD,KAAK,CAACE,OAAN,CAAc,IAAd,CAAP;AACD;AAED;;;;;;;;qCAKiBC,W,EAAa;AAC5B,UAAMH,KAAK,GAAG,IAAIC,iBAAJ,EAAd;AACA,UAAMG,WAAW,GAAGJ,KAAK,CAACE,OAAN,CAAc,IAAd,CAApB;AAEA,aAAOF,KAAK,CAACK,QAAN,CAAeD,WAAf,EAA4BD,WAA5B,CAAP;AACD;AAED;;;;;;;;;;AAUA;;;;;;;;kCAQcG,C,EAAGC,C,EAAGC,Y,EAAcrG,E,EAAI;AACpC,UAAIsG,EAAJ;AACA,UAAIC,EAAJ;;AAEA,UAAI,OAAOF,YAAP,KAAwB,UAAxB,IAAsC,OAAOrG,EAAP,KAAc,WAAxD,EAAqE;AACnEA,QAAAA,EAAE,GAAGqG,YAAL;AACAA,QAAAA,YAAY,GAAG,IAAf;AACD;;AAED,UAAI,CAACA,YAAL,EAAmB;AACjBA,QAAAA,YAAY,GAAG3E,IAAI,CAAC8E,WAApB;AACD;;AAED,UAAI,OAAOL,CAAP,KAAa,QAAb,IAAyB,OAAOC,CAAP,KAAa,QAA1C,EAAoD;AAClD,eAAOnD,kBAAW9D,IAAX,CAAgB,IAAhB,EAAsB,yBAAtB,EAAiDa,EAAjD,CAAP;AACD,OAfmC,CAiBpC;;;AACAmG,MAAAA,CAAC,GAAGM,IAAI,CAACC,KAAL,CAAWP,CAAX,CAAJ;AACAC,MAAAA,CAAC,GAAGK,IAAI,CAACC,KAAL,CAAWN,CAAX,CAAJ;AACAE,MAAAA,EAAE,GAAGH,CAAL;AACAI,MAAAA,EAAE,GAAGH,CAAL;;AAEA,UAAIC,YAAY,KAAK3E,IAAI,CAAC8E,WAA1B,EAAuC;AACrC,YAAIL,CAAC,GAAG,CAAR,EAAWG,EAAE,GAAG,CAAL;AACX,YAAIH,CAAC,IAAI,KAAKjD,MAAL,CAAYhC,KAArB,EAA4BoF,EAAE,GAAG,KAAKpD,MAAL,CAAYhC,KAAZ,GAAoB,CAAzB;AAC5B,YAAIkF,CAAC,GAAG,CAAR,EAAWG,EAAE,GAAG,CAAL;AACX,YAAIH,CAAC,IAAI,KAAKlD,MAAL,CAAY/B,MAArB,EAA6BoF,EAAE,GAAG,KAAKrD,MAAL,CAAY/B,MAAZ,GAAqB,CAA1B;AAC9B;;AAED,UAAIkF,YAAY,KAAK3E,IAAI,CAACiF,SAA1B,EAAqC;AACnC,YAAIR,CAAC,GAAG,CAAR,EAAW;AACTG,UAAAA,EAAE,GAAG,KAAKpD,MAAL,CAAYhC,KAAZ,GAAoBiF,CAAzB;AACD;;AAED,YAAIA,CAAC,IAAI,KAAKjD,MAAL,CAAYhC,KAArB,EAA4B;AAC1BoF,UAAAA,EAAE,GAAGH,CAAC,GAAG,KAAKjD,MAAL,CAAYhC,KAArB;AACD;;AAED,YAAIkF,CAAC,GAAG,CAAR,EAAW;AACTE,UAAAA,EAAE,GAAG,KAAKpD,MAAL,CAAY/B,MAAZ,GAAqBiF,CAA1B;AACD;;AAED,YAAIA,CAAC,IAAI,KAAKlD,MAAL,CAAY/B,MAArB,EAA6B;AAC3BoF,UAAAA,EAAE,GAAGH,CAAC,GAAG,KAAKlD,MAAL,CAAY/B,MAArB;AACD;AACF;;AAED,UAAI/C,CAAC,GAAI,KAAK8E,MAAL,CAAYhC,KAAZ,GAAoBqF,EAApB,GAAyBD,EAA1B,IAAiC,CAAzC,CAhDoC,CAkDpC;;AACA,UAAIA,EAAE,GAAG,CAAL,IAAUA,EAAE,IAAI,KAAKpD,MAAL,CAAYhC,KAAhC,EAAuC;AACrC9C,QAAAA,CAAC,GAAG,CAAC,CAAL;AACD;;AAED,UAAImI,EAAE,GAAG,CAAL,IAAUA,EAAE,IAAI,KAAKrD,MAAL,CAAY/B,MAAhC,EAAwC;AACtC/C,QAAAA,CAAC,GAAG,CAAC,CAAL;AACD;;AAED,UAAI,0BAAc4B,EAAd,CAAJ,EAAuB;AACrBA,QAAAA,EAAE,CAACb,IAAH,CAAQ,IAAR,EAAc,IAAd,EAAoBf,CAApB;AACD;;AAED,aAAOA,CAAP;AACD;AAED;;;;;;;;;;kCAOc+H,C,EAAGC,C,EAAGpG,E,EAAI;AACtB,UAAI,OAAOmG,CAAP,KAAa,QAAb,IAAyB,OAAOC,CAAP,KAAa,QAA1C,EACE,OAAOnD,kBAAW9D,IAAX,CAAgB,IAAhB,EAAsB,yBAAtB,EAAiDa,EAAjD,CAAP,CAFoB,CAItB;;AACAmG,MAAAA,CAAC,GAAGM,IAAI,CAACC,KAAL,CAAWP,CAAX,CAAJ;AACAC,MAAAA,CAAC,GAAGK,IAAI,CAACC,KAAL,CAAWN,CAAX,CAAJ;AAEA,UAAMQ,GAAG,GAAG,KAAKC,aAAL,CAAmBV,CAAnB,EAAsBC,CAAtB,CAAZ;AACA,UAAMU,GAAG,GAAG,KAAK5D,MAAL,CAAY/C,IAAZ,CAAiB4G,YAAjB,CAA8BH,GAA9B,CAAZ;;AAEA,UAAI,0BAAc5G,EAAd,CAAJ,EAAuB;AACrBA,QAAAA,EAAE,CAACb,IAAH,CAAQ,IAAR,EAAc,IAAd,EAAoB2H,GAApB;AACD;;AAED,aAAOA,GAAP;AACD;;;;AAID;;;;;;;;kCAQcA,G,EAAKX,C,EAAGC,C,EAAGpG,E,EAAI;AAC3B,UACE,OAAO8G,GAAP,KAAe,QAAf,IACA,OAAOX,CAAP,KAAa,QADb,IAEA,OAAOC,CAAP,KAAa,QAHf,EAKE,OAAOnD,kBAAW9D,IAAX,CAAgB,IAAhB,EAAsB,8BAAtB,EAAsDa,EAAtD,CAAP,CANyB,CAQ3B;;AACAmG,MAAAA,CAAC,GAAGM,IAAI,CAACC,KAAL,CAAWP,CAAX,CAAJ;AACAC,MAAAA,CAAC,GAAGK,IAAI,CAACC,KAAL,CAAWN,CAAX,CAAJ;AAEA,UAAMQ,GAAG,GAAG,KAAKC,aAAL,CAAmBV,CAAnB,EAAsBC,CAAtB,CAAZ;AACA,WAAKlD,MAAL,CAAY/C,IAAZ,CAAiBgD,aAAjB,CAA+B2D,GAA/B,EAAoCF,GAApC;;AAEA,UAAI,0BAAc5G,EAAd,CAAJ,EAAuB;AACrBA,QAAAA,EAAE,CAACb,IAAH,CAAQ,IAAR,EAAc,IAAd,EAAoB,IAApB;AACD;;AAED,aAAO,IAAP;AACD;;;;AAID;;;;+BAIW;AACT,WAAK,IAAI6H,MAAM,GAAG,CAAlB,EAAqBA,MAAM,GAAG,KAAK9D,MAAL,CAAY/B,MAA1C,EAAkD6F,MAAM,EAAxD,EAA4D;AAC1D,aAAK,IAAIC,MAAM,GAAG,CAAlB,EAAqBA,MAAM,GAAG,KAAK/D,MAAL,CAAYhC,KAA1C,EAAiD+F,MAAM,EAAvD,EAA2D;AACzD,cAAML,GAAG,GAAI,KAAK1D,MAAL,CAAYhC,KAAZ,GAAoB8F,MAApB,GAA6BC,MAA9B,IAAyC,CAArD;AACA,cAAMC,KAAK,GAAG,KAAKhE,MAAL,CAAY/C,IAAZ,CAAiByG,GAAG,GAAG,CAAvB,CAAd;;AAEA,cAAIM,KAAK,KAAK,IAAd,EAAoB;AAClB,mBAAO,IAAP;AACD;AACF;AACF;;AAED,aAAO,KAAP;AACD;AAED;;;;;;;;;;;iCAQaf,C,EAAGC,C,EAAGvD,C,EAAGC,C,EAAG;AACvB,UAAI,OAAOqD,CAAP,KAAa,QAAb,IAAyB,OAAOC,CAAP,KAAa,QAA1C,EAAoD;AAClD,eAAOnD,kBAAW9D,IAAX,CAAgB,IAAhB,EAAsB,yBAAtB,CAAP;AACD;;AAED,UAAI,OAAO0D,CAAP,KAAa,QAAb,IAAyB,OAAOC,CAAP,KAAa,QAA1C,EAAoD;AAClD,eAAOG,kBAAW9D,IAAX,CAAgB,IAAhB,EAAsB,yBAAtB,CAAP;AACD;;AAED,aAAO,yBAAa,IAAb,EAAmBgH,CAAnB,EAAsBC,CAAtB,EAAyBvD,CAAzB,EAA4BC,CAA5B,CAAP;AACD;;;EAjpBgBqE,kB;;AAopBZ,SAASC,YAAT,CAAsBC,SAAtB,EAAsD;AAAA,MAArBhF,YAAqB,uEAANX,IAAM;AAC3D1C,EAAAA,MAAM,CAACsI,OAAP,CAAeD,SAAf,EAA0BE,OAA1B,CAAkC,gBAAmB;AAAA;AAAA,QAAjBC,IAAiB;AAAA,QAAXC,KAAW;;AACnDpF,IAAAA,YAAY,CAACmF,IAAD,CAAZ,GAAqBC,KAArB;AACD,GAFD;AAGD;;AAEM,SAASC,cAAT,CAAwBC,OAAxB,EAAsD;AAAA,MAArBtF,YAAqB,uEAANX,IAAM;AAC3D1C,EAAAA,MAAM,CAACsI,OAAP,CAAeK,OAAf,EAAwBJ,OAAxB,CAAgC,iBAAmB;AAAA;AAAA,QAAjBC,IAAiB;AAAA,QAAXC,KAAW;;AACjDpF,IAAAA,YAAY,CAACpD,SAAb,CAAuBuI,IAAvB,IAA+BC,KAA/B;AACD,GAFD;AAGD;;AAEDL,YAAY,CAACC,SAAD,CAAZ;AACAK,cAAc,CAAC;AAAEE,EAAAA,SAAS,EAATA;AAAF,CAAD,CAAd;AAEAlG,IAAI,CAACsC,mBAAL,GAA2B,EAA3B;AAEA;;;;;;;AAMAtC,IAAI,CAACmG,uBAAL,GAA+B,UAAUL,IAAV,EAAgBzI,IAAhB,EAAsBuF,GAAtB,EAA2B;AACxD5C,EAAAA,IAAI,CAACsC,mBAAL,CAAyBrF,IAAzB,CAA8B;AAAE6I,IAAAA,IAAI,EAAJA,IAAF;AAAQzI,IAAAA,IAAI,EAAJA,IAAR;AAAcuF,IAAAA,GAAG,EAAHA;AAAd,GAA9B;AACD,CAFD;AAIA;;;;;;AAIA5C,IAAI,CAACoG,IAAL,GAAY,YAAmB;AAAA,qCAANnG,IAAM;AAANA,IAAAA,IAAM;AAAA;;AAC7B,SAAO,IAAIwC,OAAJ,CAAY,UAACC,OAAD,EAAUC,MAAV,EAAqB;AACtC;AACA,gCAAI3C,IAAJ,EAAYC,IAAZ,SAAkB,UAAC1B,GAAD,EAAM8H,KAAN,EAAgB;AAChC,UAAI9H,GAAJ,EAASoE,MAAM,CAACpE,GAAD,CAAN,CAAT,KACKmE,OAAO,CAAC2D,KAAD,CAAP;AACN,KAHD;AAID,GANM,CAAP;AAOD,CARD;;AAUArG,IAAI,CAACsG,MAAL,GAActG,IAAI,CAACoG,IAAnB;AAEA;;;;;;;;;;AASApG,IAAI,CAACuG,SAAL,GAAiB,UAAUC,CAAV,EAAaC,CAAb,EAAgBC,CAAhB,EAAmBC,CAAnB,EAAsBrI,EAAtB,EAA0B;AACzC,MACE,OAAOkI,CAAP,KAAa,QAAb,IACA,OAAOC,CAAP,KAAa,QADb,IAEA,OAAOC,CAAP,KAAa,QAFb,IAGA,OAAOC,CAAP,KAAa,QAJf,EAKE;AACA,WAAOpF,kBAAW9D,IAAX,CAAgB,IAAhB,EAAsB,+BAAtB,EAAuDa,EAAvD,CAAP;AACD;;AAED,MAAIkI,CAAC,GAAG,CAAJ,IAASA,CAAC,GAAG,GAAjB,EAAsB;AACpB,WAAOjF,kBAAW9D,IAAX,CAAgB,IAAhB,EAAsB,6BAAtB,EAAqDa,EAArD,CAAP;AACD;;AAED,MAAImI,CAAC,GAAG,CAAJ,IAASA,CAAC,GAAG,GAAjB,EAAsB;AACpBlF,sBAAW9D,IAAX,CAAgB,IAAhB,EAAsB,6BAAtB,EAAqDa,EAArD;AACD;;AAED,MAAIoI,CAAC,GAAG,CAAJ,IAASA,CAAC,GAAG,GAAjB,EAAsB;AACpB,WAAOnF,kBAAW9D,IAAX,CAAgB,IAAhB,EAAsB,6BAAtB,EAAqDa,EAArD,CAAP;AACD;;AAED,MAAIqI,CAAC,GAAG,CAAJ,IAASA,CAAC,GAAG,GAAjB,EAAsB;AACpB,WAAOpF,kBAAW9D,IAAX,CAAgB,IAAhB,EAAsB,6BAAtB,EAAqDa,EAArD,CAAP;AACD;;AAEDkI,EAAAA,CAAC,GAAGzB,IAAI,CAACC,KAAL,CAAWwB,CAAX,CAAJ;AACAE,EAAAA,CAAC,GAAG3B,IAAI,CAACC,KAAL,CAAW0B,CAAX,CAAJ;AACAD,EAAAA,CAAC,GAAG1B,IAAI,CAACC,KAAL,CAAWyB,CAAX,CAAJ;AACAE,EAAAA,CAAC,GAAG5B,IAAI,CAACC,KAAL,CAAW2B,CAAX,CAAJ;AAEA,MAAMjK,CAAC,GACL8J,CAAC,GAAGzB,IAAI,CAAC6B,GAAL,CAAS,GAAT,EAAc,CAAd,CAAJ,GACAH,CAAC,GAAG1B,IAAI,CAAC6B,GAAL,CAAS,GAAT,EAAc,CAAd,CADJ,GAEAF,CAAC,GAAG3B,IAAI,CAAC6B,GAAL,CAAS,GAAT,EAAc,CAAd,CAFJ,GAGAD,CAAC,GAAG5B,IAAI,CAAC6B,GAAL,CAAS,GAAT,EAAc,CAAd,CAJN;;AAMA,MAAI,0BAActI,EAAd,CAAJ,EAAuB;AACrBA,IAAAA,EAAE,CAACb,IAAH,CAAQ,IAAR,EAAc,IAAd,EAAoBf,CAApB;AACD;;AAED,SAAOA,CAAP;AACD,CA1CD;AA4CA;;;;;;;;AAMAsD,IAAI,CAAC6G,SAAL,GAAiB,UAAUnK,CAAV,EAAa4B,EAAb,EAAiB;AAChC,MAAI,OAAO5B,CAAP,KAAa,QAAjB,EAA2B;AACzB,WAAO6E,kBAAW9D,IAAX,CAAgB,IAAhB,EAAsB,oBAAtB,EAA4Ca,EAA5C,CAAP;AACD;;AAED,MAAMwI,IAAI,GAAG,EAAb;AAEAA,EAAAA,IAAI,CAACN,CAAL,GAASzB,IAAI,CAACgC,KAAL,CAAWrK,CAAC,GAAGqI,IAAI,CAAC6B,GAAL,CAAS,GAAT,EAAc,CAAd,CAAf,CAAT;AACAE,EAAAA,IAAI,CAACL,CAAL,GAAS1B,IAAI,CAACgC,KAAL,CAAW,CAACrK,CAAC,GAAGoK,IAAI,CAACN,CAAL,GAASzB,IAAI,CAAC6B,GAAL,CAAS,GAAT,EAAc,CAAd,CAAd,IAAkC7B,IAAI,CAAC6B,GAAL,CAAS,GAAT,EAAc,CAAd,CAA7C,CAAT;AACAE,EAAAA,IAAI,CAACJ,CAAL,GAAS3B,IAAI,CAACgC,KAAL,CACP,CAACrK,CAAC,GAAGoK,IAAI,CAACN,CAAL,GAASzB,IAAI,CAAC6B,GAAL,CAAS,GAAT,EAAc,CAAd,CAAb,GAAgCE,IAAI,CAACL,CAAL,GAAS1B,IAAI,CAAC6B,GAAL,CAAS,GAAT,EAAc,CAAd,CAA1C,IACE7B,IAAI,CAAC6B,GAAL,CAAS,GAAT,EAAc,CAAd,CAFK,CAAT;AAIAE,EAAAA,IAAI,CAACH,CAAL,GAAS5B,IAAI,CAACgC,KAAL,CACP,CAACrK,CAAC,GACAoK,IAAI,CAACN,CAAL,GAASzB,IAAI,CAAC6B,GAAL,CAAS,GAAT,EAAc,CAAd,CADV,GAECE,IAAI,CAACL,CAAL,GAAS1B,IAAI,CAAC6B,GAAL,CAAS,GAAT,EAAc,CAAd,CAFV,GAGCE,IAAI,CAACJ,CAAL,GAAS3B,IAAI,CAAC6B,GAAL,CAAS,GAAT,EAAc,CAAd,CAHX,IAIE7B,IAAI,CAAC6B,GAAL,CAAS,GAAT,EAAc,CAAd,CALK,CAAT;;AAQA,MAAI,0BAActI,EAAd,CAAJ,EAAuB;AACrBA,IAAAA,EAAE,CAACb,IAAH,CAAQ,IAAR,EAAc,IAAd,EAAoBqJ,IAApB;AACD;;AAED,SAAOA,IAAP;AACD,CA1BD;AA4BA;;;;;;;AAKA9G,IAAI,CAACsB,aAAL,GAAqB,UAAU0F,QAAV,EAAoB;AACvCA,EAAAA,QAAQ,GAAGA,QAAQ,IAAI,CAAvB,CADuC,CACb;;AAE1B,MAAI,OAAOA,QAAP,KAAoB,QAAxB,EAAkC,OAAOC,MAAM,CAACD,QAAD,CAAb;AAElC,SAAO9F,QAAQ,CAAC,2BAAU8F,QAAV,EAAoBE,MAApB,EAAD,EAA+B,EAA/B,CAAf;AACD,CAND;AAQA;;;;;;;AAKAlH,IAAI,CAACmH,QAAL,GAAgB,UAAUC,CAAV,EAAa;AAC3BA,EAAAA,CAAC,GAAGrC,IAAI,CAACsC,GAAL,CAASD,CAAT,EAAY,CAAZ,CAAJ;AACAA,EAAAA,CAAC,GAAGrC,IAAI,CAACuC,GAAL,CAASF,CAAT,EAAY,GAAZ,CAAJ;AAEA,SAAOA,CAAP;AACD,CALD;AAOA;;;;;;;;;AAOApH,IAAI,CAACuH,IAAL,GAAY,UAAUC,IAAV,EAAgBC,IAAhB,EAAuC;AAAA,MAAjBC,SAAiB,uEAAL,GAAK;AACjD,MAAI,EAAEF,IAAI,YAAYxH,IAAlB,KAA2B,EAAEyH,IAAI,YAAYzH,IAAlB,CAA/B,EACE,OAAOuB,kBAAW9D,IAAX,CAAgB,IAAhB,EAAsB,sCAAtB,CAAP;AAEF,MAAMkK,IAAI,GAAGH,IAAI,CAAChG,MAAlB;AACA,MAAMoG,IAAI,GAAGH,IAAI,CAACjG,MAAlB;;AAEA,MAAImG,IAAI,CAACnI,KAAL,KAAeoI,IAAI,CAACpI,KAApB,IAA6BmI,IAAI,CAAClI,MAAL,KAAgBmI,IAAI,CAACnI,MAAtD,EAA8D;AAC5D,QAAIkI,IAAI,CAACnI,KAAL,GAAamI,IAAI,CAAClI,MAAlB,GAA2BmI,IAAI,CAACpI,KAAL,GAAaoI,IAAI,CAACnI,MAAjD,EAAyD;AACvD;AACA+H,MAAAA,IAAI,GAAGA,IAAI,CAACK,UAAL,GAAkBC,MAAlB,CAAyBF,IAAI,CAACpI,KAA9B,EAAqCoI,IAAI,CAACnI,MAA1C,CAAP;AACD,KAHD,MAGO;AACL;AACAgI,MAAAA,IAAI,GAAGA,IAAI,CAACI,UAAL,GAAkBC,MAAlB,CAAyBH,IAAI,CAACnI,KAA9B,EAAqCmI,IAAI,CAAClI,MAA1C,CAAP;AACD;AACF;;AAED,MAAI,OAAOiI,SAAP,KAAqB,QAArB,IAAiCA,SAAS,GAAG,CAA7C,IAAkDA,SAAS,GAAG,CAAlE,EAAqE;AACnE,WAAOnG,kBAAW9D,IAAX,CAAgB,IAAhB,EAAsB,4CAAtB,CAAP;AACD;;AAED,MAAM8J,IAAI,GAAG,IAAIvH,IAAJ,CAAS2H,IAAI,CAACnI,KAAd,EAAqBmI,IAAI,CAAClI,MAA1B,EAAkC,UAAlC,CAAb;AAEA,MAAMsI,aAAa,GAAG,4BACpBJ,IAAI,CAAClJ,IADe,EAEpBmJ,IAAI,CAACnJ,IAFe,EAGpB8I,IAAI,CAAC/F,MAAL,CAAY/C,IAHQ,EAIpB8I,IAAI,CAAC/F,MAAL,CAAYhC,KAJQ,EAKpB+H,IAAI,CAAC/F,MAAL,CAAY/B,MALQ,EAMpB;AAAEiI,IAAAA,SAAS,EAATA;AAAF,GANoB,CAAtB;AASA,SAAO;AACLM,IAAAA,OAAO,EAAED,aAAa,IAAIR,IAAI,CAAC/F,MAAL,CAAYhC,KAAZ,GAAoB+H,IAAI,CAAC/F,MAAL,CAAY/B,MAApC,CADjB;AAEL4G,IAAAA,KAAK,EAAEkB;AAFF,GAAP;AAID,CApCD;AAsCA;;;;;;;;AAMAvH,IAAI,CAACwE,QAAL,GAAgB,UAAUgD,IAAV,EAAgBC,IAAhB,EAAsB;AACpC,MAAMQ,KAAK,GAAG,IAAI7D,iBAAJ,EAAd;AACA,MAAM8D,KAAK,GAAGD,KAAK,CAAC5D,OAAN,CAAcmD,IAAd,CAAd;AACA,MAAMW,KAAK,GAAGF,KAAK,CAAC5D,OAAN,CAAcoD,IAAd,CAAd;AAEA,SAAOQ,KAAK,CAACzD,QAAN,CAAe0D,KAAf,EAAsBC,KAAtB,CAAP;AACD,CAND;AAQA;;;;;;;;AAMAnI,IAAI,CAACoI,aAAL,GAAqB,UAAUF,KAAV,EAAiBC,KAAjB,EAAwB;AAC3C,MAAMF,KAAK,GAAG,IAAI7D,iBAAJ,EAAd;AAEA,SAAO6D,KAAK,CAACzD,QAAN,CAAe0D,KAAf,EAAsBC,KAAtB,CAAP;AACD,CAJD;AAMA;;;;;;;;;;;AASAnI,IAAI,CAACqI,SAAL,GAAiB,UAAUC,KAAV,EAAiBC,KAAjB,EAAwB;AACvC,MAAM3B,GAAG,GAAG,SAANA,GAAM,CAACQ,CAAD;AAAA,WAAOrC,IAAI,CAAC6B,GAAL,CAASQ,CAAT,EAAY,CAAZ,CAAP;AAAA,GAAZ;;AADuC,MAE/BC,GAF+B,GAEvBtC,IAFuB,CAE/BsC,GAF+B;AAGvC,MAAMmB,MAAM,GAAG,MAAM,GAAN,GAAY,CAA3B;;AAEA,MAAIF,KAAK,CAAC3B,CAAN,KAAY,CAAZ,IAAiB,CAAC2B,KAAK,CAAC3B,CAA5B,EAA+B;AAC7B2B,IAAAA,KAAK,CAAC3B,CAAN,GAAU,GAAV;AACD;;AAED,MAAI4B,KAAK,CAAC5B,CAAN,KAAY,CAAZ,IAAiB,CAAC4B,KAAK,CAAC5B,CAA5B,EAA+B;AAC7B4B,IAAAA,KAAK,CAAC5B,CAAN,GAAU,GAAV;AACD;;AAED,SACE,CAACU,GAAG,CAACT,GAAG,CAAC0B,KAAK,CAAC9B,CAAN,GAAU+B,KAAK,CAAC/B,CAAjB,CAAJ,EAAyBI,GAAG,CAAC0B,KAAK,CAAC9B,CAAN,GAAU+B,KAAK,CAAC/B,CAAhB,GAAoB8B,KAAK,CAAC3B,CAA1B,GAA8B4B,KAAK,CAAC5B,CAArC,CAA5B,CAAH,GACCU,GAAG,CAACT,GAAG,CAAC0B,KAAK,CAAC7B,CAAN,GAAU8B,KAAK,CAAC9B,CAAjB,CAAJ,EAAyBG,GAAG,CAAC0B,KAAK,CAAC7B,CAAN,GAAU8B,KAAK,CAAC9B,CAAhB,GAAoB6B,KAAK,CAAC3B,CAA1B,GAA8B4B,KAAK,CAAC5B,CAArC,CAA5B,CADJ,GAECU,GAAG,CAACT,GAAG,CAAC0B,KAAK,CAAC5B,CAAN,GAAU6B,KAAK,CAAC7B,CAAjB,CAAJ,EAAyBE,GAAG,CAAC0B,KAAK,CAAC5B,CAAN,GAAU6B,KAAK,CAAC7B,CAAhB,GAAoB4B,KAAK,CAAC3B,CAA1B,GAA8B4B,KAAK,CAAC5B,CAArC,CAA5B,CAFL,IAGA6B,MAJF;AAMD,CAnBD;AAqBA;;;;;;;;;;;;;;;;AAcO,SAASC,YAAT,CAAsB3H,UAAtB,EAAkC4H,MAAlC,EAA0CC,MAA1C,EAAkD;AACvD,MAAMC,YAAY,GAAG,YAAYF,MAAjC;AACA,MAAMG,WAAW,GAAGH,MAAM,CAACI,OAAP,CAAe,IAAf,EAAqB,EAArB,IAA2B,IAA/C;;AAEA9I,EAAAA,IAAI,CAACzC,SAAL,CAAeuD,UAAf,IAA6B,YAAmB;AAC9C,QAAIiI,SAAJ;;AAD8C,uCAAN9I,IAAM;AAANA,MAAAA,IAAM;AAAA;;AAE9C,QAAM3B,EAAE,GAAG2B,IAAI,CAAC0I,MAAM,CAACzL,MAAP,GAAgB,CAAjB,CAAf;AACA,QAAMyD,YAAY,GAAG,IAArB;;AAEA,QAAI,OAAOrC,EAAP,KAAc,UAAlB,EAA8B;AAC5ByK,MAAAA,SAAS,GAAG,qBAAmB;AAAA,2CAAN9I,IAAM;AAANA,UAAAA,IAAM;AAAA;;AAAA,YACtB1B,GADsB,GACT0B,IADS;AAAA,YACjBxB,IADiB,GACTwB,IADS;;AAG7B,YAAI1B,GAAJ,EAAS;AACPoC,UAAAA,YAAY,CAACK,SAAb,CAAuBF,UAAvB,EAAmCvC,GAAnC;AACD,SAFD,MAEO;AACLoC,UAAAA,YAAY,CAACM,SAAb,CAAuBH,UAAvB,EAAmC+H,WAAnC,uCACG/H,UADH,EACgBrC,IADhB;AAGD;;AAEDH,QAAAA,EAAE,CAAC0K,KAAH,CAAS,IAAT,EAAe/I,IAAf;AACD,OAZD;;AAcAA,MAAAA,IAAI,CAACA,IAAI,CAAC/C,MAAL,GAAc,CAAf,CAAJ,GAAwB6L,SAAxB;AACD,KAhBD,MAgBO;AACLA,MAAAA,SAAS,GAAG,KAAZ;AACD;;AAED,SAAK9H,SAAL,CAAeH,UAAf,EAA2B8H,YAA3B;AAEA,QAAIK,MAAJ;;AAEA,QAAI;AACFA,MAAAA,MAAM,GAAGN,MAAM,CAACK,KAAP,CAAa,IAAb,EAAmB/I,IAAnB,CAAT;;AAEA,UAAI,CAAC8I,SAAL,EAAgB;AACd,aAAK9H,SAAL,CAAeH,UAAf,EAA2B+H,WAA3B,uCACG/H,UADH,EACgBmI,MADhB;AAGD;AACF,KARD,CAQE,OAAOC,KAAP,EAAc;AACdA,MAAAA,KAAK,CAACpI,UAAN,GAAmBA,UAAnB;AACA,WAAKE,SAAL,CAAeF,UAAf,EAA2BoI,KAA3B;AACD;;AAED,WAAOD,MAAP;AACD,GA3CD;;AA6CAjJ,EAAAA,IAAI,CAACzC,SAAL,CAAeuD,UAAU,GAAG,OAA5B,IAAuC6H,MAAvC;AACD;AAED;;;;;;;AAKAF,YAAY,CAAC,OAAD,EAAU,OAAV,EAAmB,UAAUnK,EAAV,EAAc;AAC3C,MAAM6K,KAAK,GAAG,IAAInJ,IAAJ,CAAS,IAAT,CAAd;;AAEA,MAAI,0BAAc1B,EAAd,CAAJ,EAAuB;AACrBA,IAAAA,EAAE,CAACb,IAAH,CAAQ0L,KAAR,EAAe,IAAf,EAAqBA,KAArB;AACD;;AAED,SAAOA,KAAP;AACD,CARW,CAAZ;AAUA;;;;;;AAKO,SAASC,YAAT,CAAsBtI,UAAtB,EAAkC6H,MAAlC,EAA0C;AAC/CF,EAAAA,YAAY,CAAC3H,UAAD,EAAa,QAAb,EAAuB6H,MAAvB,CAAZ;AACD;AAED;;;;;;;;AAMAS,YAAY,CAAC,YAAD,EAAe,UAAUhE,GAAV,EAAe9G,EAAf,EAAmB;AAC5C,MAAI,OAAO8G,GAAP,KAAe,QAAnB,EAA6B;AAC3B,WAAO7D,kBAAW9D,IAAX,CAAgB,IAAhB,EAAsB,sCAAtB,EAA8Da,EAA9D,CAAP;AACD;;AAED,OAAK+C,WAAL,GAAmB+D,GAAnB;;AAEA,MAAI,0BAAc9G,EAAd,CAAJ,EAAuB;AACrBA,IAAAA,EAAE,CAACb,IAAH,CAAQ,IAAR,EAAc,IAAd,EAAoB,IAApB;AACD;;AAED,SAAO,IAAP;AACD,CAZW,CAAZ;AAcA;;;;;;;;;;;;AAWA2L,YAAY,CAAC,MAAD,EAAS,UAAU3E,CAAV,EAAaC,CAAb,EAAgBvD,CAAhB,EAAmBC,CAAnB,EAAsBiI,CAAtB,EAAyB/K,EAAzB,EAA6B;AAChD,MAAI,OAAOmG,CAAP,KAAa,QAAb,IAAyB,OAAOC,CAAP,KAAa,QAA1C,EAAoD;AAClD,WAAOnD,kBAAW9D,IAAX,CAAgB,IAAhB,EAAsB,yBAAtB,EAAiDa,EAAjD,CAAP;AACD;;AAED,MAAI,OAAO6C,CAAP,KAAa,QAAb,IAAyB,OAAOC,CAAP,KAAa,QAA1C,EAAoD;AAClD,WAAOG,kBAAW9D,IAAX,CAAgB,IAAhB,EAAsB,yBAAtB,EAAiDa,EAAjD,CAAP;AACD;;AAED,MAAI,OAAO+K,CAAP,KAAa,UAAjB,EAA6B;AAC3B,WAAO9H,kBAAW9D,IAAX,CAAgB,IAAhB,EAAsB,sBAAtB,EAA8Ca,EAA9C,CAAP;AACD;;AAED,MAAM2K,MAAM,GAAG,iBAAK,IAAL,EAAWxE,CAAX,EAAcC,CAAd,EAAiBvD,CAAjB,EAAoBC,CAApB,EAAuBiI,CAAvB,CAAf;;AAEA,MAAI,0BAAc/K,EAAd,CAAJ,EAAuB;AACrBA,IAAAA,EAAE,CAACb,IAAH,CAAQ,IAAR,EAAc,IAAd,EAAoBwL,MAApB;AACD;;AAED,SAAOA,MAAP;AACD,CApBW,CAAZ;;AAsBA,IAAIK,OAAO,CAACC,GAAR,CAAYC,WAAZ,KAA4B,SAAhC,EAA2C;AACzC;;AACA;AACA,MAAIC,EAAJ;;AAEA,MAAI,OAAOC,MAAP,KAAkB,WAAlB,IAAiC,QAAOA,MAAP,0DAAOA,MAAP,OAAkB,QAAvD,EAAiE;AAC/DD,IAAAA,EAAE,GAAGC,MAAL;AACD;;AAED,MAAI,OAAOC,IAAP,KAAgB,WAAhB,IAA+B,QAAOA,IAAP,0DAAOA,IAAP,OAAgB,QAAnD,EAA6D;AAC3DF,IAAAA,EAAE,GAAGE,IAAL;AACD;;AAEDF,EAAAA,EAAE,CAACzJ,IAAH,GAAUA,IAAV;AACAyJ,EAAAA,EAAE,CAAC1L,MAAH,GAAYA,MAAZ;AACD;;eAIciC,I","sourcesContent":["import fs from \"fs\";\nimport Path from \"path\";\nimport EventEmitter from \"events\";\n\nimport { isNodePattern, throwError, scan, scanIterator } from \"@jimp/utils\";\nimport anyBase from \"any-base\";\nimport mkdirp from \"mkdirp\";\nimport pixelMatch from \"pixelmatch\";\nimport tinyColor from \"tinycolor2\";\n\nimport ImagePHash from \"./modules/phash\";\nimport request from \"./request\";\n\nimport composite from \"./composite\";\nimport promisify from \"./utils/promisify\";\nimport * as MIME from \"./utils/mime\";\nimport { parseBitmap, getBuffer, getBufferAsync } from \"./utils/image-bitmap\";\nimport * as constants from \"./constants\";\n\nconst alphabet =\n \"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_\";\n\n// an array storing the maximum string length of hashes at various bases\n// 0 and 1 do not exist as possible hash lengths\nconst maxHashLength = [NaN, NaN];\n\nfor (let i = 2; i < 65; i++) {\n const maxHash = anyBase(\n anyBase.BIN,\n alphabet.slice(0, i)\n )(new Array(64 + 1).join(\"1\"));\n maxHashLength.push(maxHash.length);\n}\n\n// no operation\nfunction noop() {}\n\n// error checking methods\n\nfunction isArrayBuffer(test) {\n return (\n Object.prototype.toString.call(test).toLowerCase().indexOf(\"arraybuffer\") >\n -1\n );\n}\n\n// Prepare a Buffer object from the arrayBuffer. Necessary in the browser > node conversion,\n// But this function is not useful when running in node directly\nfunction bufferFromArrayBuffer(arrayBuffer) {\n const buffer = Buffer.alloc(arrayBuffer.byteLength);\n const view = new Uint8Array(arrayBuffer);\n\n for (let i = 0; i < buffer.length; ++i) {\n buffer[i] = view[i];\n }\n\n return buffer;\n}\n\nfunction loadFromURL(options, cb) {\n request(options, (err, response, data) => {\n if (err) {\n return cb(err);\n }\n\n if (\"headers\" in response && \"location\" in response.headers) {\n options.url = response.headers.location;\n return loadFromURL(options, cb);\n }\n\n if (typeof data === \"object\" && Buffer.isBuffer(data)) {\n return cb(null, data);\n }\n\n const msg =\n \"Could not load Buffer from <\" +\n options.url +\n \"> \" +\n \"(HTTP: \" +\n response.statusCode +\n \")\";\n\n return new Error(msg);\n });\n}\n\nfunction loadBufferFromPath(src, cb) {\n if (\n fs &&\n typeof fs.readFile === \"function\" &&\n !src.match(/^(http|ftp)s?:\\/\\/./)\n ) {\n fs.readFile(src, cb);\n } else {\n loadFromURL({ url: src }, cb);\n }\n}\n\nfunction isRawRGBAData(obj) {\n return (\n obj &&\n typeof obj === \"object\" &&\n typeof obj.width === \"number\" &&\n typeof obj.height === \"number\" &&\n (Buffer.isBuffer(obj.data) ||\n obj.data instanceof Uint8Array ||\n (typeof Uint8ClampedArray === \"function\" &&\n obj.data instanceof Uint8ClampedArray)) &&\n (obj.data.length === obj.width * obj.height * 4 ||\n obj.data.length === obj.width * obj.height * 3)\n );\n}\n\nfunction makeRGBABufferFromRGB(buffer) {\n if (buffer.length % 3 !== 0) {\n throw new Error(\"Buffer length is incorrect\");\n }\n\n const rgbaBuffer = Buffer.allocUnsafe((buffer.length / 3) * 4);\n let j = 0;\n\n for (let i = 0; i < buffer.length; i++) {\n rgbaBuffer[j] = buffer[i];\n\n if ((i + 1) % 3 === 0) {\n rgbaBuffer[++j] = 255;\n }\n\n j++;\n }\n\n return rgbaBuffer;\n}\n\nconst emptyBitmap = {\n data: null,\n width: null,\n height: null,\n};\n\n/**\n * Jimp constructor (from a file)\n * @param path a path to the image\n * @param {function(Error, Jimp)} cb (optional) a function to call when the image is parsed to a bitmap\n */\n\n/**\n * Jimp constructor (from a url with options)\n * @param options { url, otherOptions}\n * @param {function(Error, Jimp)} cb (optional) a function to call when the image is parsed to a bitmap\n */\n\n/**\n * Jimp constructor (from another Jimp image or raw image data)\n * @param image a Jimp image to clone\n * @param {function(Error, Jimp)} cb a function to call when the image is parsed to a bitmap\n */\n\n/**\n * Jimp constructor (from a Buffer)\n * @param data a Buffer containing the image data\n * @param {function(Error, Jimp)} cb a function to call when the image is parsed to a bitmap\n */\n\n/**\n * Jimp constructor (to generate a new image)\n * @param w the width of the image\n * @param h the height of the image\n * @param {function(Error, Jimp)} cb (optional) a function to call when the image is parsed to a bitmap\n */\n\n/**\n * Jimp constructor (to generate a new image)\n * @param w the width of the image\n * @param h the height of the image\n * @param background color to fill the image with\n * @param {function(Error, Jimp)} cb (optional) a function to call when the image is parsed to a bitmap\n */\n\nclass Jimp extends EventEmitter {\n // An object representing a bitmap in memory, comprising:\n // - data: a buffer of the bitmap data\n // - width: the width of the image in pixels\n // - height: the height of the image in pixels\n bitmap = emptyBitmap;\n\n // Default colour to use for new pixels\n _background = 0x00000000;\n\n // Default MIME is PNG\n _originalMime = Jimp.MIME_PNG;\n\n // Exif data for the image\n _exif = null;\n\n // Whether Transparency supporting formats will be exported as RGB or RGBA\n _rgba = true;\n\n constructor(...args) {\n super();\n\n const jimpInstance = this;\n let cb = noop;\n\n if (isArrayBuffer(args[0])) {\n args[0] = bufferFromArrayBuffer(args[0]);\n }\n\n function finish(...args) {\n const [err] = args;\n const evData = err || {};\n evData.methodName = \"constructor\";\n\n setTimeout(() => {\n // run on next tick.\n if (err && cb === noop) {\n jimpInstance.emitError(\"constructor\", err);\n } else if (!err) {\n jimpInstance.emitMulti(\"constructor\", \"initialized\");\n }\n\n cb.call(jimpInstance, ...args);\n }, 1);\n }\n\n if (\n (typeof args[0] === \"number\" && typeof args[1] === \"number\") ||\n (parseInt(args[0], 10) && parseInt(args[1], 10))\n ) {\n // create a new image\n const w = parseInt(args[0], 10);\n const h = parseInt(args[1], 10);\n cb = args[2];\n\n // with a hex color\n if (typeof args[2] === \"number\") {\n this._background = args[2];\n cb = args[3];\n }\n\n // with a css color\n if (typeof args[2] === \"string\") {\n this._background = Jimp.cssColorToHex(args[2]);\n cb = args[3];\n }\n\n if (typeof cb === \"undefined\") {\n cb = noop;\n }\n\n if (typeof cb !== \"function\") {\n return throwError.call(this, \"cb must be a function\", finish);\n }\n\n this.bitmap = {\n data: Buffer.alloc(w * h * 4),\n width: w,\n height: h,\n };\n\n for (let i = 0; i < this.bitmap.data.length; i += 4) {\n this.bitmap.data.writeUInt32BE(this._background, i);\n }\n\n finish(null, this);\n } else if (typeof args[0] === \"object\" && args[0].url) {\n cb = args[1] || noop;\n\n if (typeof cb !== \"function\") {\n return throwError.call(this, \"cb must be a function\", finish);\n }\n\n loadFromURL(args[0], (err, data) => {\n if (err) {\n return throwError.call(this, err, finish);\n }\n\n this.parseBitmap(data, args[0].url, finish);\n });\n } else if (args[0] instanceof Jimp) {\n // clone an existing Jimp\n const [original] = args;\n cb = args[1];\n\n if (typeof cb === \"undefined\") {\n cb = noop;\n }\n\n if (typeof cb !== \"function\") {\n return throwError.call(this, \"cb must be a function\", finish);\n }\n\n this.bitmap = {\n data: Buffer.from(original.bitmap.data),\n width: original.bitmap.width,\n height: original.bitmap.height,\n };\n\n this._quality = original._quality;\n this._deflateLevel = original._deflateLevel;\n this._deflateStrategy = original._deflateStrategy;\n this._filterType = original._filterType;\n this._rgba = original._rgba;\n this._background = original._background;\n this._originalMime = original._originalMime;\n\n finish(null, this);\n } else if (isRawRGBAData(args[0])) {\n const [imageData] = args;\n cb = args[1] || noop;\n\n const isRGBA =\n imageData.width * imageData.height * 4 === imageData.data.length;\n const buffer = isRGBA\n ? Buffer.from(imageData.data)\n : makeRGBABufferFromRGB(imageData.data);\n\n this.bitmap = {\n data: buffer,\n width: imageData.width,\n height: imageData.height,\n };\n\n finish(null, this);\n } else if (typeof args[0] === \"string\") {\n // read from a path\n const path = args[0];\n cb = args[1];\n\n if (typeof cb === \"undefined\") {\n cb = noop;\n }\n\n if (typeof cb !== \"function\") {\n return throwError.call(this, \"cb must be a function\", finish);\n }\n\n loadBufferFromPath(path, (err, data) => {\n if (err) {\n return throwError.call(this, err, finish);\n }\n\n this.parseBitmap(data, path, finish);\n });\n } else if (typeof args[0] === \"object\" && Buffer.isBuffer(args[0])) {\n // read from a buffer\n const data = args[0];\n cb = args[1];\n\n if (typeof cb !== \"function\") {\n return throwError.call(this, \"cb must be a function\", finish);\n }\n\n this.parseBitmap(data, null, finish);\n } else {\n // Allow client libs to add new ways to build a Jimp object.\n // Extra constructors must be added by `Jimp.appendConstructorOption()`\n cb = args[args.length - 1];\n\n if (typeof cb !== \"function\") {\n // TODO: try to solve the args after cb problem.\n cb = args[args.length - 2];\n\n if (typeof cb !== \"function\") {\n cb = noop;\n }\n }\n\n const extraConstructor = Jimp.__extraConstructors.find((c) =>\n c.test(...args)\n );\n\n if (extraConstructor) {\n new Promise((resolve, reject) => {\n extraConstructor.run.call(this, resolve, reject, ...args);\n })\n .then(() => finish(null, this))\n .catch(finish);\n } else {\n return throwError.call(\n this,\n \"No matching constructor overloading was found. \" +\n \"Please see the docs for how to call the Jimp constructor.\",\n finish\n );\n }\n }\n }\n\n /**\n * Parse a bitmap with the loaded image types.\n *\n * @param {Buffer} data raw image data\n * @param {string} path optional path to file\n * @param {function(Error, Jimp)} finish (optional) a callback for when complete\n * @memberof Jimp\n */\n parseBitmap(data, path, finish) {\n parseBitmap.call(this, data, null, finish);\n }\n\n /**\n * Sets the type of the image (RGB or RGBA) when saving in a format that supports transparency (default is RGBA)\n * @param {boolean} bool A Boolean, true to use RGBA or false to use RGB\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp} this for chaining of methods\n */\n rgba(bool, cb) {\n if (typeof bool !== \"boolean\") {\n return throwError.call(\n this,\n \"bool must be a boolean, true for RGBA or false for RGB\",\n cb\n );\n }\n\n this._rgba = bool;\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n }\n\n /**\n * Emit for multiple listeners\n * @param {string} methodName name of the method to emit an error for\n * @param {string} eventName name of the eventName to emit an error for\n * @param {object} data to emit\n */\n emitMulti(methodName, eventName, data = {}) {\n data = Object.assign(data, { methodName, eventName });\n this.emit(\"any\", data);\n\n if (methodName) {\n this.emit(methodName, data);\n }\n\n this.emit(eventName, data);\n }\n\n emitError(methodName, err) {\n this.emitMulti(methodName, \"error\", err);\n }\n\n /**\n * Get the current height of the image\n * @return {number} height of the image\n */\n getHeight() {\n return this.bitmap.height;\n }\n\n /**\n * Get the current width of the image\n * @return {number} width of the image\n */\n getWidth() {\n return this.bitmap.width;\n }\n\n /**\n * Nicely format Jimp object when sent to the console e.g. console.log(image)\n * @returns {string} pretty printed\n */\n inspect() {\n return (\n \"\"\n );\n }\n\n /**\n * Nicely format Jimp object when converted to a string\n * @returns {string} pretty printed\n */\n toString() {\n return \"[object Jimp]\";\n }\n\n /**\n * Returns the original MIME of the image (default: \"image/png\")\n * @returns {string} the MIME\n */\n getMIME() {\n const mime = this._originalMime || Jimp.MIME_PNG;\n\n return mime;\n }\n\n /**\n * Returns the appropriate file extension for the original MIME of the image (default: \"png\")\n * @returns {string} the file extension\n */\n getExtension() {\n const mime = this.getMIME();\n\n return MIME.getExtension(mime);\n }\n\n /**\n * Writes the image to a file\n * @param {string} path a path to the destination file\n * @param {function(Error, Jimp)} cb (optional) a function to call when the image is saved to disk\n * @returns {Jimp} this for chaining of methods\n */\n write(path, cb) {\n if (!fs || !fs.createWriteStream) {\n throw new Error(\n \"Cant access the filesystem. You can use the getBase64 method.\"\n );\n }\n\n if (typeof path !== \"string\") {\n return throwError.call(this, \"path must be a string\", cb);\n }\n\n if (typeof cb === \"undefined\") {\n cb = noop;\n }\n\n if (typeof cb !== \"function\") {\n return throwError.call(this, \"cb must be a function\", cb);\n }\n\n const mime = MIME.getType(path) || this.getMIME();\n const pathObj = Path.parse(path);\n\n if (pathObj.dir) {\n mkdirp.sync(pathObj.dir);\n }\n\n this.getBuffer(mime, (err, buffer) => {\n if (err) {\n return throwError.call(this, err, cb);\n }\n\n const stream = fs.createWriteStream(path);\n\n stream\n .on(\"open\", () => {\n stream.write(buffer);\n stream.end();\n })\n .on(\"error\", (err) => {\n return throwError.call(this, err, cb);\n });\n stream.on(\"finish\", () => {\n cb.call(this, null, this);\n });\n });\n\n return this;\n }\n\n writeAsync = (path) => promisify(this.write, this, path);\n\n /**\n * Converts the image to a base 64 string\n * @param {string} mime the mime type of the image data to be created\n * @param {function(Error, Jimp)} cb a Node-style function to call with the buffer as the second argument\n * @returns {Jimp} this for chaining of methods\n */\n getBase64(mime, cb) {\n if (mime === Jimp.AUTO) {\n // allow auto MIME detection\n mime = this.getMIME();\n }\n\n if (typeof mime !== \"string\") {\n return throwError.call(this, \"mime must be a string\", cb);\n }\n\n if (typeof cb !== \"function\") {\n return throwError.call(this, \"cb must be a function\", cb);\n }\n\n this.getBuffer(mime, function (err, data) {\n if (err) {\n return throwError.call(this, err, cb);\n }\n\n const src = \"data:\" + mime + \";base64,\" + data.toString(\"base64\");\n cb.call(this, null, src);\n });\n\n return this;\n }\n\n getBase64Async = (mime) => promisify(this.getBase64, this, mime);\n\n /**\n * Generates a perceptual hash of the image . And pads the string. Can configure base.\n * @param {number} base (optional) a number between 2 and 64 representing the base for the hash (e.g. 2 is binary, 10 is decimal, 16 is hex, 64 is base 64). Defaults to 64.\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {string} a string representing the hash\n */\n hash(base, cb) {\n base = base || 64;\n\n if (typeof base === \"function\") {\n cb = base;\n base = 64;\n }\n\n if (typeof base !== \"number\") {\n return throwError.call(this, \"base must be a number\", cb);\n }\n\n if (base < 2 || base > 64) {\n return throwError.call(\n this,\n \"base must be a number between 2 and 64\",\n cb\n );\n }\n\n let hash = this.pHash();\n hash = anyBase(anyBase.BIN, alphabet.slice(0, base))(hash);\n\n while (hash.length < maxHashLength[base]) {\n hash = \"0\" + hash; // pad out with leading zeros\n }\n\n if (isNodePattern(cb)) {\n cb.call(this, null, hash);\n }\n\n return hash;\n }\n\n /**\n * Calculates the perceptual hash\n * @returns {number} the perceptual hash\n */\n pHash() {\n const pHash = new ImagePHash();\n return pHash.getHash(this);\n }\n\n /**\n * Calculates the hamming distance of the current image and a hash based on their perceptual hash\n * @param {hash} compareHash hash to compare to\n * @returns {number} a number ranging from 0 to 1, 0 means they are believed to be identical\n */\n distanceFromHash(compareHash) {\n const pHash = new ImagePHash();\n const currentHash = pHash.getHash(this);\n\n return pHash.distance(currentHash, compareHash);\n }\n\n /**\n * Converts the image to a buffer\n * @param {string} mime the mime type of the image buffer to be created\n * @param {function(Error, Jimp)} cb a Node-style function to call with the buffer as the second argument\n * @returns {Jimp} this for chaining of methods\n */\n getBuffer = getBuffer;\n\n getBufferAsync = getBufferAsync;\n\n /**\n * Returns the offset of a pixel in the bitmap buffer\n * @param {number} x the x coordinate\n * @param {number} y the y coordinate\n * @param {number} edgeHandling (optional) define how to sum pixels from outside the border\n * @param {number} cb (optional) a callback for when complete\n * @returns {number} the index of the pixel or -1 if not found\n */\n getPixelIndex(x, y, edgeHandling, cb) {\n let xi;\n let yi;\n\n if (typeof edgeHandling === \"function\" && typeof cb === \"undefined\") {\n cb = edgeHandling;\n edgeHandling = null;\n }\n\n if (!edgeHandling) {\n edgeHandling = Jimp.EDGE_EXTEND;\n }\n\n if (typeof x !== \"number\" || typeof y !== \"number\") {\n return throwError.call(this, \"x and y must be numbers\", cb);\n }\n\n // round input\n x = Math.round(x);\n y = Math.round(y);\n xi = x;\n yi = y;\n\n if (edgeHandling === Jimp.EDGE_EXTEND) {\n if (x < 0) xi = 0;\n if (x >= this.bitmap.width) xi = this.bitmap.width - 1;\n if (y < 0) yi = 0;\n if (y >= this.bitmap.height) yi = this.bitmap.height - 1;\n }\n\n if (edgeHandling === Jimp.EDGE_WRAP) {\n if (x < 0) {\n xi = this.bitmap.width + x;\n }\n\n if (x >= this.bitmap.width) {\n xi = x % this.bitmap.width;\n }\n\n if (y < 0) {\n xi = this.bitmap.height + y;\n }\n\n if (y >= this.bitmap.height) {\n yi = y % this.bitmap.height;\n }\n }\n\n let i = (this.bitmap.width * yi + xi) << 2;\n\n // if out of bounds index is -1\n if (xi < 0 || xi >= this.bitmap.width) {\n i = -1;\n }\n\n if (yi < 0 || yi >= this.bitmap.height) {\n i = -1;\n }\n\n if (isNodePattern(cb)) {\n cb.call(this, null, i);\n }\n\n return i;\n }\n\n /**\n * Returns the hex colour value of a pixel\n * @param {number} x the x coordinate\n * @param {number} y the y coordinate\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {number} the color of the pixel\n */\n getPixelColor(x, y, cb) {\n if (typeof x !== \"number\" || typeof y !== \"number\")\n return throwError.call(this, \"x and y must be numbers\", cb);\n\n // round input\n x = Math.round(x);\n y = Math.round(y);\n\n const idx = this.getPixelIndex(x, y);\n const hex = this.bitmap.data.readUInt32BE(idx);\n\n if (isNodePattern(cb)) {\n cb.call(this, null, hex);\n }\n\n return hex;\n }\n\n getPixelColour = this.getPixelColor;\n\n /**\n * Returns the hex colour value of a pixel\n * @param {number} hex color to set\n * @param {number} x the x coordinate\n * @param {number} y the y coordinate\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {number} the index of the pixel or -1 if not found\n */\n setPixelColor(hex, x, y, cb) {\n if (\n typeof hex !== \"number\" ||\n typeof x !== \"number\" ||\n typeof y !== \"number\"\n )\n return throwError.call(this, \"hex, x and y must be numbers\", cb);\n\n // round input\n x = Math.round(x);\n y = Math.round(y);\n\n const idx = this.getPixelIndex(x, y);\n this.bitmap.data.writeUInt32BE(hex, idx);\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n }\n\n setPixelColour = this.setPixelColor;\n\n /**\n * Determine if the image contains opaque pixels.\n * @return {boolean} hasAlpha whether the image contains opaque pixels\n */\n hasAlpha() {\n for (let yIndex = 0; yIndex < this.bitmap.height; yIndex++) {\n for (let xIndex = 0; xIndex < this.bitmap.width; xIndex++) {\n const idx = (this.bitmap.width * yIndex + xIndex) << 2;\n const alpha = this.bitmap.data[idx + 3];\n\n if (alpha !== 0xff) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n /**\n * Iterate scan through a region of the bitmap\n * @param {number} x the x coordinate to begin the scan at\n * @param {number} y the y coordinate to begin the scan at\n * @param w the width of the scan region\n * @param h the height of the scan region\n * @returns {IterableIterator<{x: number, y: number, idx: number, image: Jimp}>}\n */\n scanIterator(x, y, w, h) {\n if (typeof x !== \"number\" || typeof y !== \"number\") {\n return throwError.call(this, \"x and y must be numbers\");\n }\n\n if (typeof w !== \"number\" || typeof h !== \"number\") {\n return throwError.call(this, \"w and h must be numbers\");\n }\n\n return scanIterator(this, x, y, w, h);\n }\n}\n\nexport function addConstants(constants, jimpInstance = Jimp) {\n Object.entries(constants).forEach(([name, value]) => {\n jimpInstance[name] = value;\n });\n}\n\nexport function addJimpMethods(methods, jimpInstance = Jimp) {\n Object.entries(methods).forEach(([name, value]) => {\n jimpInstance.prototype[name] = value;\n });\n}\n\naddConstants(constants);\naddJimpMethods({ composite });\n\nJimp.__extraConstructors = [];\n\n/**\n * Allow client libs to add new ways to build a Jimp object.\n * @param {string} name identify the extra constructor.\n * @param {function} test a function that returns true when it accepts the arguments passed to the main constructor.\n * @param {function} run where the magic happens.\n */\nJimp.appendConstructorOption = function (name, test, run) {\n Jimp.__extraConstructors.push({ name, test, run });\n};\n\n/**\n * Read an image from a file or a Buffer. Takes the same args as the constructor\n * @returns {Promise} a promise\n */\nJimp.read = function (...args) {\n return new Promise((resolve, reject) => {\n // eslint-disable-next-line no-new\n new Jimp(...args, (err, image) => {\n if (err) reject(err);\n else resolve(image);\n });\n });\n};\n\nJimp.create = Jimp.read;\n\n/**\n * A static helper method that converts RGBA values to a single integer value\n * @param {number} r the red value (0-255)\n * @param {number} g the green value (0-255)\n * @param {number} b the blue value (0-255)\n * @param {number} a the alpha value (0-255)\n * @param {function(Error, Jimp)} cb (optional) A callback for when complete\n * @returns {number} an single integer colour value\n */\nJimp.rgbaToInt = function (r, g, b, a, cb) {\n if (\n typeof r !== \"number\" ||\n typeof g !== \"number\" ||\n typeof b !== \"number\" ||\n typeof a !== \"number\"\n ) {\n return throwError.call(this, \"r, g, b and a must be numbers\", cb);\n }\n\n if (r < 0 || r > 255) {\n return throwError.call(this, \"r must be between 0 and 255\", cb);\n }\n\n if (g < 0 || g > 255) {\n throwError.call(this, \"g must be between 0 and 255\", cb);\n }\n\n if (b < 0 || b > 255) {\n return throwError.call(this, \"b must be between 0 and 255\", cb);\n }\n\n if (a < 0 || a > 255) {\n return throwError.call(this, \"a must be between 0 and 255\", cb);\n }\n\n r = Math.round(r);\n b = Math.round(b);\n g = Math.round(g);\n a = Math.round(a);\n\n const i =\n r * Math.pow(256, 3) +\n g * Math.pow(256, 2) +\n b * Math.pow(256, 1) +\n a * Math.pow(256, 0);\n\n if (isNodePattern(cb)) {\n cb.call(this, null, i);\n }\n\n return i;\n};\n\n/**\n * A static helper method that converts RGBA values to a single integer value\n * @param {number} i a single integer value representing an RGBA colour (e.g. 0xFF0000FF for red)\n * @param {function(Error, Jimp)} cb (optional) A callback for when complete\n * @returns {object} an object with the properties r, g, b and a representing RGBA values\n */\nJimp.intToRGBA = function (i, cb) {\n if (typeof i !== \"number\") {\n return throwError.call(this, \"i must be a number\", cb);\n }\n\n const rgba = {};\n\n rgba.r = Math.floor(i / Math.pow(256, 3));\n rgba.g = Math.floor((i - rgba.r * Math.pow(256, 3)) / Math.pow(256, 2));\n rgba.b = Math.floor(\n (i - rgba.r * Math.pow(256, 3) - rgba.g * Math.pow(256, 2)) /\n Math.pow(256, 1)\n );\n rgba.a = Math.floor(\n (i -\n rgba.r * Math.pow(256, 3) -\n rgba.g * Math.pow(256, 2) -\n rgba.b * Math.pow(256, 1)) /\n Math.pow(256, 0)\n );\n\n if (isNodePattern(cb)) {\n cb.call(this, null, rgba);\n }\n\n return rgba;\n};\n\n/**\n * Converts a css color (Hex, 8-digit (RGBA) Hex, RGB, RGBA, HSL, HSLA, HSV, HSVA, Named) to a hex number\n * @param {string} cssColor a number\n * @returns {number} a hex number representing a color\n */\nJimp.cssColorToHex = function (cssColor) {\n cssColor = cssColor || 0; // 0, null, undefined, NaN\n\n if (typeof cssColor === \"number\") return Number(cssColor);\n\n return parseInt(tinyColor(cssColor).toHex8(), 16);\n};\n\n/**\n * Limits a number to between 0 or 255\n * @param {number} n a number\n * @returns {number} the number limited to between 0 or 255\n */\nJimp.limit255 = function (n) {\n n = Math.max(n, 0);\n n = Math.min(n, 255);\n\n return n;\n};\n\n/**\n * Diffs two images and returns\n * @param {Jimp} img1 a Jimp image to compare\n * @param {Jimp} img2 a Jimp image to compare\n * @param {number} threshold (optional) a number, 0 to 1, the smaller the value the more sensitive the comparison (default: 0.1)\n * @returns {object} an object { percent: percent similar, diff: a Jimp image highlighting differences }\n */\nJimp.diff = function (img1, img2, threshold = 0.1) {\n if (!(img1 instanceof Jimp) || !(img2 instanceof Jimp))\n return throwError.call(this, \"img1 and img2 must be an Jimp images\");\n\n const bmp1 = img1.bitmap;\n const bmp2 = img2.bitmap;\n\n if (bmp1.width !== bmp2.width || bmp1.height !== bmp2.height) {\n if (bmp1.width * bmp1.height > bmp2.width * bmp2.height) {\n // img1 is bigger\n img1 = img1.cloneQuiet().resize(bmp2.width, bmp2.height);\n } else {\n // img2 is bigger (or they are the same in area)\n img2 = img2.cloneQuiet().resize(bmp1.width, bmp1.height);\n }\n }\n\n if (typeof threshold !== \"number\" || threshold < 0 || threshold > 1) {\n return throwError.call(this, \"threshold must be a number between 0 and 1\");\n }\n\n const diff = new Jimp(bmp1.width, bmp1.height, 0xffffffff);\n\n const numDiffPixels = pixelMatch(\n bmp1.data,\n bmp2.data,\n diff.bitmap.data,\n diff.bitmap.width,\n diff.bitmap.height,\n { threshold }\n );\n\n return {\n percent: numDiffPixels / (diff.bitmap.width * diff.bitmap.height),\n image: diff,\n };\n};\n\n/**\n * Calculates the hamming distance of two images based on their perceptual hash\n * @param {Jimp} img1 a Jimp image to compare\n * @param {Jimp} img2 a Jimp image to compare\n * @returns {number} a number ranging from 0 to 1, 0 means they are believed to be identical\n */\nJimp.distance = function (img1, img2) {\n const phash = new ImagePHash();\n const hash1 = phash.getHash(img1);\n const hash2 = phash.getHash(img2);\n\n return phash.distance(hash1, hash2);\n};\n\n/**\n * Calculates the hamming distance of two images based on their perceptual hash\n * @param {hash} hash1 a pHash\n * @param {hash} hash2 a pHash\n * @returns {number} a number ranging from 0 to 1, 0 means they are believed to be identical\n */\nJimp.compareHashes = function (hash1, hash2) {\n const phash = new ImagePHash();\n\n return phash.distance(hash1, hash2);\n};\n\n/**\n * Compute color difference\n * 0 means no difference, 1 means maximum difference.\n * @param {number} rgba1: first color to compare.\n * @param {number} rgba2: second color to compare.\n * Both parameters must be an color object {r:val, g:val, b:val, a:val}\n * Where `a` is optional and `val` is an integer between 0 and 255.\n * @returns {number} float between 0 and 1.\n */\nJimp.colorDiff = function (rgba1, rgba2) {\n const pow = (n) => Math.pow(n, 2);\n const { max } = Math;\n const maxVal = 255 * 255 * 3;\n\n if (rgba1.a !== 0 && !rgba1.a) {\n rgba1.a = 255;\n }\n\n if (rgba2.a !== 0 && !rgba2.a) {\n rgba2.a = 255;\n }\n\n return (\n (max(pow(rgba1.r - rgba2.r), pow(rgba1.r - rgba2.r - rgba1.a + rgba2.a)) +\n max(pow(rgba1.g - rgba2.g), pow(rgba1.g - rgba2.g - rgba1.a + rgba2.a)) +\n max(pow(rgba1.b - rgba2.b), pow(rgba1.b - rgba2.b - rgba1.a + rgba2.a))) /\n maxVal\n );\n};\n\n/**\n * Helper to create Jimp methods that emit events before and after its execution.\n * @param {string} methodName The name to be appended to Jimp prototype.\n * @param {string} evName The event name to be called.\n * It will be prefixed by `before-` and emitted when on method call.\n * It will be appended by `ed` and emitted after the method run.\n * @param {function} method A function implementing the method itself.\n * It will also create a quiet version that will not emit events, to not\n * mess the user code with many `changed` event calls. You can call with\n * `methodName + \"Quiet\"`.\n *\n * The emitted event comes with a object parameter to the listener with the\n * `methodName` as one attribute.\n */\nexport function jimpEvMethod(methodName, evName, method) {\n const evNameBefore = \"before-\" + evName;\n const evNameAfter = evName.replace(/e$/, \"\") + \"ed\";\n\n Jimp.prototype[methodName] = function (...args) {\n let wrappedCb;\n const cb = args[method.length - 1];\n const jimpInstance = this;\n\n if (typeof cb === \"function\") {\n wrappedCb = function (...args) {\n const [err, data] = args;\n\n if (err) {\n jimpInstance.emitError(methodName, err);\n } else {\n jimpInstance.emitMulti(methodName, evNameAfter, {\n [methodName]: data,\n });\n }\n\n cb.apply(this, args);\n };\n\n args[args.length - 1] = wrappedCb;\n } else {\n wrappedCb = false;\n }\n\n this.emitMulti(methodName, evNameBefore);\n\n let result;\n\n try {\n result = method.apply(this, args);\n\n if (!wrappedCb) {\n this.emitMulti(methodName, evNameAfter, {\n [methodName]: result,\n });\n }\n } catch (error) {\n error.methodName = methodName;\n this.emitError(methodName, error);\n }\n\n return result;\n };\n\n Jimp.prototype[methodName + \"Quiet\"] = method;\n}\n\n/**\n * Creates a new image that is a clone of this one.\n * @param {function(Error, Jimp)} cb (optional) A callback for when complete\n * @returns the new image\n */\njimpEvMethod(\"clone\", \"clone\", function (cb) {\n const clone = new Jimp(this);\n\n if (isNodePattern(cb)) {\n cb.call(clone, null, clone);\n }\n\n return clone;\n});\n\n/**\n * Simplify jimpEvMethod call for the common `change` evName.\n * @param {string} methodName name of the method\n * @param {function} method to watch changes for\n */\nexport function jimpEvChange(methodName, method) {\n jimpEvMethod(methodName, \"change\", method);\n}\n\n/**\n * Sets the type of the image (RGB or RGBA) when saving as PNG format (default is RGBA)\n * @param b A Boolean, true to use RGBA or false to use RGB\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp} this for chaining of methods\n */\njimpEvChange(\"background\", function (hex, cb) {\n if (typeof hex !== \"number\") {\n return throwError.call(this, \"hex must be a hexadecimal rgba value\", cb);\n }\n\n this._background = hex;\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n});\n\n/**\n * Scans through a region of the bitmap, calling a function for each pixel.\n * @param {number} x the x coordinate to begin the scan at\n * @param {number} y the y coordinate to begin the scan at\n * @param w the width of the scan region\n * @param h the height of the scan region\n * @param f a function to call on even pixel; the (x, y) position of the pixel\n * and the index of the pixel in the bitmap buffer are passed to the function\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp} this for chaining of methods\n */\njimpEvChange(\"scan\", function (x, y, w, h, f, cb) {\n if (typeof x !== \"number\" || typeof y !== \"number\") {\n return throwError.call(this, \"x and y must be numbers\", cb);\n }\n\n if (typeof w !== \"number\" || typeof h !== \"number\") {\n return throwError.call(this, \"w and h must be numbers\", cb);\n }\n\n if (typeof f !== \"function\") {\n return throwError.call(this, \"f must be a function\", cb);\n }\n\n const result = scan(this, x, y, w, h, f);\n\n if (isNodePattern(cb)) {\n cb.call(this, null, result);\n }\n\n return result;\n});\n\nif (process.env.ENVIRONMENT === \"BROWSER\") {\n // For use in a web browser or web worker\n /* global self */\n let gl;\n\n if (typeof window !== \"undefined\" && typeof window === \"object\") {\n gl = window;\n }\n\n if (typeof self !== \"undefined\" && typeof self === \"object\") {\n gl = self;\n }\n\n gl.Jimp = Jimp;\n gl.Buffer = Buffer;\n}\n\nexport { addType } from \"./utils/mime\";\n\nexport default Jimp;\n"],"file":"index.js"}
\ No newline at end of file
diff --git a/node_modules/@jimp/core/dist/modules/phash.js b/node_modules/@jimp/core/dist/modules/phash.js
new file mode 100644
index 00000000..cc655658
--- /dev/null
+++ b/node_modules/@jimp/core/dist/modules/phash.js
@@ -0,0 +1,173 @@
+"use strict";
+
+/*
+Copyright (c) 2011 Elliot Shepherd
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+*/
+// https://code.google.com/p/ironchef-team21/source/browse/ironchef_team21/src/ImagePHash.java
+
+/*
+ * pHash-like image hash.
+ * Author: Elliot Shepherd (elliot@jarofworms.com
+ * Based On: http://www.hackerfactor.com/blog/index.php?/archives/432-Looks-Like-It.html
+ */
+function ImagePHash(size, smallerSize) {
+ this.size = this.size || size;
+ this.smallerSize = this.smallerSize || smallerSize;
+ initCoefficients(this.size);
+}
+
+ImagePHash.prototype.size = 32;
+ImagePHash.prototype.smallerSize = 8;
+
+ImagePHash.prototype.distance = function (s1, s2) {
+ var counter = 0;
+
+ for (var k = 0; k < s1.length; k++) {
+ if (s1[k] !== s2[k]) {
+ counter++;
+ }
+ }
+
+ return counter / s1.length;
+}; // Returns a 'binary string' (like. 001010111011100010) which is easy to do a hamming distance on.
+
+
+ImagePHash.prototype.getHash = function (img) {
+ /* 1. Reduce size.
+ * Like Average Hash, pHash starts with a small image.
+ * However, the image is larger than 8x8; 32x32 is a good size.
+ * This is really done to simplify the DCT computation and not
+ * because it is needed to reduce the high frequencies.
+ */
+ img = img.clone().resize(this.size, this.size);
+ /* 2. Reduce color.
+ * The image is reduced to a grayscale just to further simplify
+ * the number of computations.
+ */
+
+ img.grayscale();
+ var vals = [];
+
+ for (var x = 0; x < img.bitmap.width; x++) {
+ vals[x] = [];
+
+ for (var y = 0; y < img.bitmap.height; y++) {
+ vals[x][y] = intToRGBA(img.getPixelColor(x, y)).b;
+ }
+ }
+ /* 3. Compute the DCT.
+ * The DCT separates the image into a collection of frequencies
+ * and scalars. While JPEG uses an 8x8 DCT, this algorithm uses
+ * a 32x32 DCT.
+ */
+
+
+ var dctVals = applyDCT(vals, this.size);
+ /* 4. Reduce the DCT.
+ * This is the magic step. While the DCT is 32x32, just keep the
+ * top-left 8x8. Those represent the lowest frequencies in the
+ * picture.
+ */
+
+ /* 5. Compute the average value.
+ * Like the Average Hash, compute the mean DCT value (using only
+ * the 8x8 DCT low-frequency values and excluding the first term
+ * since the DC coefficient can be significantly different from
+ * the other values and will throw off the average).
+ */
+
+ var total = 0;
+
+ for (var _x = 0; _x < this.smallerSize; _x++) {
+ for (var _y = 0; _y < this.smallerSize; _y++) {
+ total += dctVals[_x][_y];
+ }
+ }
+
+ var avg = total / (this.smallerSize * this.smallerSize);
+ /* 6. Further reduce the DCT.
+ * This is the magic step. Set the 64 hash bits to 0 or 1
+ * depending on whether each of the 64 DCT values is above or
+ * below the average value. The result doesn't tell us the
+ * actual low frequencies; it just tells us the very-rough
+ * relative scale of the frequencies to the mean. The result
+ * will not vary as long as the overall structure of the image
+ * remains the same; this can survive gamma and color histogram
+ * adjustments without a problem.
+ */
+
+ var hash = "";
+
+ for (var _x2 = 0; _x2 < this.smallerSize; _x2++) {
+ for (var _y2 = 0; _y2 < this.smallerSize; _y2++) {
+ hash += dctVals[_x2][_y2] > avg ? "1" : "0";
+ }
+ }
+
+ return hash;
+}; // DCT function stolen from http://stackoverflow.com/questions/4240490/problems-with-dct-and-idct-algorithm-in-java
+
+
+function intToRGBA(i) {
+ var rgba = {};
+ rgba.r = Math.floor(i / Math.pow(256, 3));
+ rgba.g = Math.floor((i - rgba.r * Math.pow(256, 3)) / Math.pow(256, 2));
+ rgba.b = Math.floor((i - rgba.r * Math.pow(256, 3) - rgba.g * Math.pow(256, 2)) / Math.pow(256, 1));
+ rgba.a = Math.floor((i - rgba.r * Math.pow(256, 3) - rgba.g * Math.pow(256, 2) - rgba.b * Math.pow(256, 1)) / Math.pow(256, 0));
+ return rgba;
+}
+
+var c = [];
+
+function initCoefficients(size) {
+ for (var i = 1; i < size; i++) {
+ c[i] = 1;
+ }
+
+ c[0] = 1 / Math.sqrt(2.0);
+}
+
+function applyDCT(f, size) {
+ var N = size;
+ var F = [];
+
+ for (var u = 0; u < N; u++) {
+ F[u] = [];
+
+ for (var v = 0; v < N; v++) {
+ var sum = 0;
+
+ for (var i = 0; i < N; i++) {
+ for (var j = 0; j < N; j++) {
+ sum += Math.cos((2 * i + 1) / (2.0 * N) * u * Math.PI) * Math.cos((2 * j + 1) / (2.0 * N) * v * Math.PI) * f[i][j];
+ }
+ }
+
+ sum *= c[u] * c[v] / 4;
+ F[u][v] = sum;
+ }
+ }
+
+ return F;
+}
+
+module.exports = ImagePHash;
+//# sourceMappingURL=phash.js.map
\ No newline at end of file
diff --git a/node_modules/@jimp/core/dist/modules/phash.js.map b/node_modules/@jimp/core/dist/modules/phash.js.map
new file mode 100644
index 00000000..b7f5523f
--- /dev/null
+++ b/node_modules/@jimp/core/dist/modules/phash.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../src/modules/phash.js"],"names":["ImagePHash","size","smallerSize","initCoefficients","prototype","distance","s1","s2","counter","k","length","getHash","img","clone","resize","grayscale","vals","x","bitmap","width","y","height","intToRGBA","getPixelColor","b","dctVals","applyDCT","total","avg","hash","i","rgba","r","Math","floor","pow","g","a","c","sqrt","f","N","F","u","v","sum","j","cos","PI","module","exports"],"mappings":"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","sourcesContent":["/*\nCopyright (c) 2011 Elliot Shepherd\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n*/\n\n// https://code.google.com/p/ironchef-team21/source/browse/ironchef_team21/src/ImagePHash.java\n\n/*\n * pHash-like image hash.\n * Author: Elliot Shepherd (elliot@jarofworms.com\n * Based On: http://www.hackerfactor.com/blog/index.php?/archives/432-Looks-Like-It.html\n */\n\nfunction ImagePHash(size, smallerSize) {\n this.size = this.size || size;\n this.smallerSize = this.smallerSize || smallerSize;\n initCoefficients(this.size);\n}\n\nImagePHash.prototype.size = 32;\nImagePHash.prototype.smallerSize = 8;\n\nImagePHash.prototype.distance = function (s1, s2) {\n let counter = 0;\n\n for (let k = 0; k < s1.length; k++) {\n if (s1[k] !== s2[k]) {\n counter++;\n }\n }\n\n return counter / s1.length;\n};\n\n// Returns a 'binary string' (like. 001010111011100010) which is easy to do a hamming distance on.\nImagePHash.prototype.getHash = function (img) {\n /* 1. Reduce size.\n * Like Average Hash, pHash starts with a small image.\n * However, the image is larger than 8x8; 32x32 is a good size.\n * This is really done to simplify the DCT computation and not\n * because it is needed to reduce the high frequencies.\n */\n img = img.clone().resize(this.size, this.size);\n\n /* 2. Reduce color.\n * The image is reduced to a grayscale just to further simplify\n * the number of computations.\n */\n img.grayscale();\n\n const vals = [];\n\n for (let x = 0; x < img.bitmap.width; x++) {\n vals[x] = [];\n for (let y = 0; y < img.bitmap.height; y++) {\n vals[x][y] = intToRGBA(img.getPixelColor(x, y)).b;\n }\n }\n\n /* 3. Compute the DCT.\n * The DCT separates the image into a collection of frequencies\n * and scalars. While JPEG uses an 8x8 DCT, this algorithm uses\n * a 32x32 DCT.\n */\n const dctVals = applyDCT(vals, this.size);\n\n /* 4. Reduce the DCT.\n * This is the magic step. While the DCT is 32x32, just keep the\n * top-left 8x8. Those represent the lowest frequencies in the\n * picture.\n */\n /* 5. Compute the average value.\n * Like the Average Hash, compute the mean DCT value (using only\n * the 8x8 DCT low-frequency values and excluding the first term\n * since the DC coefficient can be significantly different from\n * the other values and will throw off the average).\n */\n let total = 0;\n\n for (let x = 0; x < this.smallerSize; x++) {\n for (let y = 0; y < this.smallerSize; y++) {\n total += dctVals[x][y];\n }\n }\n\n const avg = total / (this.smallerSize * this.smallerSize);\n\n /* 6. Further reduce the DCT.\n * This is the magic step. Set the 64 hash bits to 0 or 1\n * depending on whether each of the 64 DCT values is above or\n * below the average value. The result doesn't tell us the\n * actual low frequencies; it just tells us the very-rough\n * relative scale of the frequencies to the mean. The result\n * will not vary as long as the overall structure of the image\n * remains the same; this can survive gamma and color histogram\n * adjustments without a problem.\n */\n let hash = \"\";\n\n for (let x = 0; x < this.smallerSize; x++) {\n for (let y = 0; y < this.smallerSize; y++) {\n hash += dctVals[x][y] > avg ? \"1\" : \"0\";\n }\n }\n\n return hash;\n};\n\n// DCT function stolen from http://stackoverflow.com/questions/4240490/problems-with-dct-and-idct-algorithm-in-java\n\nfunction intToRGBA(i) {\n const rgba = {};\n\n rgba.r = Math.floor(i / Math.pow(256, 3));\n rgba.g = Math.floor((i - rgba.r * Math.pow(256, 3)) / Math.pow(256, 2));\n rgba.b = Math.floor(\n (i - rgba.r * Math.pow(256, 3) - rgba.g * Math.pow(256, 2)) /\n Math.pow(256, 1)\n );\n rgba.a = Math.floor(\n (i -\n rgba.r * Math.pow(256, 3) -\n rgba.g * Math.pow(256, 2) -\n rgba.b * Math.pow(256, 1)) /\n Math.pow(256, 0)\n );\n\n return rgba;\n}\n\nconst c = [];\nfunction initCoefficients(size) {\n for (let i = 1; i < size; i++) {\n c[i] = 1;\n }\n\n c[0] = 1 / Math.sqrt(2.0);\n}\n\nfunction applyDCT(f, size) {\n const N = size;\n const F = [];\n\n for (let u = 0; u < N; u++) {\n F[u] = [];\n for (let v = 0; v < N; v++) {\n let sum = 0;\n for (let i = 0; i < N; i++) {\n for (let j = 0; j < N; j++) {\n sum +=\n Math.cos(((2 * i + 1) / (2.0 * N)) * u * Math.PI) *\n Math.cos(((2 * j + 1) / (2.0 * N)) * v * Math.PI) *\n f[i][j];\n }\n }\n\n sum *= (c[u] * c[v]) / 4;\n F[u][v] = sum;\n }\n }\n\n return F;\n}\n\nmodule.exports = ImagePHash;\n"],"file":"phash.js"}
\ No newline at end of file
diff --git a/node_modules/@jimp/core/dist/request.js b/node_modules/@jimp/core/dist/request.js
new file mode 100644
index 00000000..074adb5d
--- /dev/null
+++ b/node_modules/@jimp/core/dist/request.js
@@ -0,0 +1,55 @@
+"use strict";
+
+var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
+
+var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
+
+var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
+
+function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
+
+function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
+
+/* global XMLHttpRequest */
+if (process.browser || process.env.ENVIRONMENT === "BROWSER" || typeof process.versions.electron !== "undefined" && process.type === "renderer" && typeof XMLHttpRequest === "function") {
+ // If we run into a browser or the electron renderer process,
+ // use XHR method instead of Request node module.
+ module.exports = function (options, cb) {
+ var xhr = new XMLHttpRequest();
+ xhr.open("GET", options.url, true);
+ xhr.responseType = "arraybuffer";
+ xhr.addEventListener("load", function () {
+ if (xhr.status < 400) {
+ try {
+ var data = Buffer.from(this.response);
+ cb(null, xhr, data);
+ } catch (error) {
+ return cb(new Error("Response is not a buffer for url " + options.url + ". Error: " + error.message));
+ }
+ } else {
+ cb(new Error("HTTP Status " + xhr.status + " for url " + options.url));
+ }
+ });
+ xhr.addEventListener("error", function (e) {
+ cb(e);
+ });
+ xhr.send();
+ };
+} else {
+ module.exports = function (_ref, cb) {
+ var options = (0, _extends2["default"])({}, _ref);
+
+ var p = require("phin");
+
+ p(_objectSpread({
+ compression: true
+ }, options), function (err, res) {
+ if (err === null) {
+ cb(null, res, res.body);
+ } else {
+ cb(err);
+ }
+ });
+ };
+}
+//# sourceMappingURL=request.js.map
\ No newline at end of file
diff --git a/node_modules/@jimp/core/dist/request.js.map b/node_modules/@jimp/core/dist/request.js.map
new file mode 100644
index 00000000..6ffeb7f1
--- /dev/null
+++ b/node_modules/@jimp/core/dist/request.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/request.js"],"names":["process","browser","env","ENVIRONMENT","versions","electron","type","XMLHttpRequest","module","exports","options","cb","xhr","open","url","responseType","addEventListener","status","data","Buffer","from","response","error","Error","message","e","send","p","require","compression","err","res","body"],"mappings":";;;;;;;;;;;;AAAA;AAEA,IACEA,OAAO,CAACC,OAAR,IACAD,OAAO,CAACE,GAAR,CAAYC,WAAZ,KAA4B,SAD5B,IAEC,OAAOH,OAAO,CAACI,QAAR,CAAiBC,QAAxB,KAAqC,WAArC,IACCL,OAAO,CAACM,IAAR,KAAiB,UADlB,IAEC,OAAOC,cAAP,KAA0B,UAL9B,EAME;AACA;AACA;AAEAC,EAAAA,MAAM,CAACC,OAAP,GAAiB,UAAUC,OAAV,EAAmBC,EAAnB,EAAuB;AACtC,QAAMC,GAAG,GAAG,IAAIL,cAAJ,EAAZ;AACAK,IAAAA,GAAG,CAACC,IAAJ,CAAS,KAAT,EAAgBH,OAAO,CAACI,GAAxB,EAA6B,IAA7B;AACAF,IAAAA,GAAG,CAACG,YAAJ,GAAmB,aAAnB;AACAH,IAAAA,GAAG,CAACI,gBAAJ,CAAqB,MAArB,EAA6B,YAAY;AACvC,UAAIJ,GAAG,CAACK,MAAJ,GAAa,GAAjB,EAAsB;AACpB,YAAI;AACF,cAAMC,IAAI,GAAGC,MAAM,CAACC,IAAP,CAAY,KAAKC,QAAjB,CAAb;AACAV,UAAAA,EAAE,CAAC,IAAD,EAAOC,GAAP,EAAYM,IAAZ,CAAF;AACD,SAHD,CAGE,OAAOI,KAAP,EAAc;AACd,iBAAOX,EAAE,CACP,IAAIY,KAAJ,CACE,sCACEb,OAAO,CAACI,GADV,GAEE,WAFF,GAGEQ,KAAK,CAACE,OAJV,CADO,CAAT;AAQD;AACF,OAdD,MAcO;AACLb,QAAAA,EAAE,CAAC,IAAIY,KAAJ,CAAU,iBAAiBX,GAAG,CAACK,MAArB,GAA8B,WAA9B,GAA4CP,OAAO,CAACI,GAA9D,CAAD,CAAF;AACD;AACF,KAlBD;AAmBAF,IAAAA,GAAG,CAACI,gBAAJ,CAAqB,OAArB,EAA8B,UAACS,CAAD,EAAO;AACnCd,MAAAA,EAAE,CAACc,CAAD,CAAF;AACD,KAFD;AAGAb,IAAAA,GAAG,CAACc,IAAJ;AACD,GA3BD;AA4BD,CAtCD,MAsCO;AACLlB,EAAAA,MAAM,CAACC,OAAP,GAAiB,gBAA0BE,EAA1B,EAA8B;AAAA,QAAfD,OAAe;;AAC7C,QAAMiB,CAAC,GAAGC,OAAO,CAAC,MAAD,CAAjB;;AAEAD,IAAAA,CAAC;AAAGE,MAAAA,WAAW,EAAE;AAAhB,OAAyBnB,OAAzB,GAAoC,UAACoB,GAAD,EAAMC,GAAN,EAAc;AACjD,UAAID,GAAG,KAAK,IAAZ,EAAkB;AAChBnB,QAAAA,EAAE,CAAC,IAAD,EAAOoB,GAAP,EAAYA,GAAG,CAACC,IAAhB,CAAF;AACD,OAFD,MAEO;AACLrB,QAAAA,EAAE,CAACmB,GAAD,CAAF;AACD;AACF,KANA,CAAD;AAOD,GAVD;AAWD","sourcesContent":["/* global XMLHttpRequest */\n\nif (\n process.browser ||\n process.env.ENVIRONMENT === \"BROWSER\" ||\n (typeof process.versions.electron !== \"undefined\" &&\n process.type === \"renderer\" &&\n typeof XMLHttpRequest === \"function\")\n) {\n // If we run into a browser or the electron renderer process,\n // use XHR method instead of Request node module.\n\n module.exports = function (options, cb) {\n const xhr = new XMLHttpRequest();\n xhr.open(\"GET\", options.url, true);\n xhr.responseType = \"arraybuffer\";\n xhr.addEventListener(\"load\", function () {\n if (xhr.status < 400) {\n try {\n const data = Buffer.from(this.response);\n cb(null, xhr, data);\n } catch (error) {\n return cb(\n new Error(\n \"Response is not a buffer for url \" +\n options.url +\n \". Error: \" +\n error.message\n )\n );\n }\n } else {\n cb(new Error(\"HTTP Status \" + xhr.status + \" for url \" + options.url));\n }\n });\n xhr.addEventListener(\"error\", (e) => {\n cb(e);\n });\n xhr.send();\n };\n} else {\n module.exports = function ({ ...options }, cb) {\n const p = require(\"phin\");\n\n p({ compression: true, ...options }, (err, res) => {\n if (err === null) {\n cb(null, res, res.body);\n } else {\n cb(err);\n }\n });\n };\n}\n"],"file":"request.js"}
\ No newline at end of file
diff --git a/node_modules/@jimp/core/dist/utils/image-bitmap.js b/node_modules/@jimp/core/dist/utils/image-bitmap.js
new file mode 100644
index 00000000..e7c3dc99
--- /dev/null
+++ b/node_modules/@jimp/core/dist/utils/image-bitmap.js
@@ -0,0 +1,319 @@
+"use strict";
+
+var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
+
+var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.parseBitmap = parseBitmap;
+exports.getBuffer = getBuffer;
+exports.getBufferAsync = getBufferAsync;
+
+var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
+
+var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
+
+var _fileType = _interopRequireDefault(require("file-type"));
+
+var _exifParser = _interopRequireDefault(require("exif-parser"));
+
+var _utils = require("@jimp/utils");
+
+var constants = _interopRequireWildcard(require("../constants"));
+
+var MIME = _interopRequireWildcard(require("./mime"));
+
+var _promisify = _interopRequireDefault(require("./promisify"));
+
+function getMIMEFromBuffer(buffer, path) {
+ var fileTypeFromBuffer;
+ return _regenerator["default"].async(function getMIMEFromBuffer$(_context) {
+ while (1) {
+ switch (_context.prev = _context.next) {
+ case 0:
+ _context.next = 2;
+ return _regenerator["default"].awrap(_fileType["default"].fromBuffer(buffer));
+
+ case 2:
+ fileTypeFromBuffer = _context.sent;
+
+ if (!fileTypeFromBuffer) {
+ _context.next = 5;
+ break;
+ }
+
+ return _context.abrupt("return", fileTypeFromBuffer.mime);
+
+ case 5:
+ if (!path) {
+ _context.next = 7;
+ break;
+ }
+
+ return _context.abrupt("return", MIME.getType(path));
+
+ case 7:
+ return _context.abrupt("return", null);
+
+ case 8:
+ case "end":
+ return _context.stop();
+ }
+ }
+ });
+}
+/*
+ * Obtains image orientation from EXIF metadata.
+ *
+ * @param img {Jimp} a Jimp image object
+ * @returns {number} a number 1-8 representing EXIF orientation,
+ * in particular 1 if orientation tag is missing
+ */
+
+
+function getExifOrientation(img) {
+ return img._exif && img._exif.tags && img._exif.tags.Orientation || 1;
+}
+/**
+ * Returns a function which translates EXIF-rotated coordinates into
+ * non-rotated ones.
+ *
+ * Transformation reference: http://sylvana.net/jpegcrop/exif_orientation.html.
+ *
+ * @param img {Jimp} a Jimp image object
+ * @returns {function} transformation function for transformBitmap().
+ */
+
+
+function getExifOrientationTransformation(img) {
+ var w = img.getWidth();
+ var h = img.getHeight();
+
+ switch (getExifOrientation(img)) {
+ case 1:
+ // Horizontal (normal)
+ // does not need to be supported here
+ return null;
+
+ case 2:
+ // Mirror horizontal
+ return function (x, y) {
+ return [w - x - 1, y];
+ };
+
+ case 3:
+ // Rotate 180
+ return function (x, y) {
+ return [w - x - 1, h - y - 1];
+ };
+
+ case 4:
+ // Mirror vertical
+ return function (x, y) {
+ return [x, h - y - 1];
+ };
+
+ case 5:
+ // Mirror horizontal and rotate 270 CW
+ return function (x, y) {
+ return [y, x];
+ };
+
+ case 6:
+ // Rotate 90 CW
+ return function (x, y) {
+ return [y, h - x - 1];
+ };
+
+ case 7:
+ // Mirror horizontal and rotate 90 CW
+ return function (x, y) {
+ return [w - y - 1, h - x - 1];
+ };
+
+ case 8:
+ // Rotate 270 CW
+ return function (x, y) {
+ return [w - y - 1, x];
+ };
+
+ default:
+ return null;
+ }
+}
+/*
+ * Transforms bitmap in place (moves pixels around) according to given
+ * transformation function.
+ *
+ * @param img {Jimp} a Jimp image object, which bitmap is supposed to
+ * be transformed
+ * @param width {number} bitmap width after the transformation
+ * @param height {number} bitmap height after the transformation
+ * @param transformation {function} transformation function which defines pixel
+ * mapping between new and source bitmap. It takes a pair of coordinates
+ * in the target, and returns a respective pair of coordinates in
+ * the source bitmap, i.e. has following form:
+ * `function(new_x, new_y) { return [src_x, src_y] }`.
+ */
+
+
+function transformBitmap(img, width, height, transformation) {
+ // Underscore-prefixed values are related to the source bitmap
+ // Their counterparts with no prefix are related to the target bitmap
+ var _data = img.bitmap.data;
+ var _width = img.bitmap.width;
+ var data = Buffer.alloc(_data.length);
+
+ for (var x = 0; x < width; x++) {
+ for (var y = 0; y < height; y++) {
+ var _transformation = transformation(x, y),
+ _transformation2 = (0, _slicedToArray2["default"])(_transformation, 2),
+ _x = _transformation2[0],
+ _y = _transformation2[1];
+
+ var idx = width * y + x << 2;
+
+ var _idx = _width * _y + _x << 2;
+
+ var pixel = _data.readUInt32BE(_idx);
+
+ data.writeUInt32BE(pixel, idx);
+ }
+ }
+
+ img.bitmap.data = data;
+ img.bitmap.width = width;
+ img.bitmap.height = height;
+}
+/*
+ * Automagically rotates an image based on its EXIF data (if present).
+ * @param img {Jimp} a Jimp image object
+ */
+
+
+function exifRotate(img) {
+ if (getExifOrientation(img) < 2) return;
+ var transformation = getExifOrientationTransformation(img);
+ var swapDimensions = getExifOrientation(img) > 4;
+ var newWidth = swapDimensions ? img.bitmap.height : img.bitmap.width;
+ var newHeight = swapDimensions ? img.bitmap.width : img.bitmap.height;
+ transformBitmap(img, newWidth, newHeight, transformation);
+} // parses a bitmap from the constructor to the JIMP bitmap property
+
+
+function parseBitmap(data, path, cb) {
+ var mime, _mime;
+
+ return _regenerator["default"].async(function parseBitmap$(_context2) {
+ while (1) {
+ switch (_context2.prev = _context2.next) {
+ case 0:
+ _context2.next = 2;
+ return _regenerator["default"].awrap(getMIMEFromBuffer(data, path));
+
+ case 2:
+ mime = _context2.sent;
+
+ if (!(typeof mime !== "string")) {
+ _context2.next = 5;
+ break;
+ }
+
+ return _context2.abrupt("return", cb(new Error("Could not find MIME for Buffer <" + path + ">")));
+
+ case 5:
+ this._originalMime = mime.toLowerCase();
+ _context2.prev = 6;
+ _mime = this.getMIME();
+
+ if (!this.constructor.decoders[_mime]) {
+ _context2.next = 12;
+ break;
+ }
+
+ this.bitmap = this.constructor.decoders[_mime](data);
+ _context2.next = 13;
+ break;
+
+ case 12:
+ return _context2.abrupt("return", _utils.throwError.call(this, "Unsupported MIME type: " + _mime, cb));
+
+ case 13:
+ _context2.next = 18;
+ break;
+
+ case 15:
+ _context2.prev = 15;
+ _context2.t0 = _context2["catch"](6);
+ return _context2.abrupt("return", cb.call(this, _context2.t0, this));
+
+ case 18:
+ try {
+ this._exif = _exifParser["default"].create(data).parse();
+ exifRotate(this); // EXIF data
+ } catch (error) {
+ /* meh */
+ }
+
+ cb.call(this, null, this);
+ return _context2.abrupt("return", this);
+
+ case 21:
+ case "end":
+ return _context2.stop();
+ }
+ }
+ }, null, this, [[6, 15]]);
+}
+
+function compositeBitmapOverBackground(Jimp, image) {
+ return new Jimp(image.bitmap.width, image.bitmap.height, image._background).composite(image, 0, 0).bitmap;
+}
+/**
+ * Converts the image to a buffer
+ * @param {string} mime the mime type of the image buffer to be created
+ * @param {function(Error, Jimp)} cb a Node-style function to call with the buffer as the second argument
+ * @returns {Jimp} this for chaining of methods
+ */
+
+
+function getBuffer(mime, cb) {
+ if (mime === constants.AUTO) {
+ // allow auto MIME detection
+ mime = this.getMIME();
+ }
+
+ if (typeof mime !== "string") {
+ return _utils.throwError.call(this, "mime must be a string", cb);
+ }
+
+ if (typeof cb !== "function") {
+ return _utils.throwError.call(this, "cb must be a function", cb);
+ }
+
+ mime = mime.toLowerCase();
+
+ if (this._rgba && this.constructor.hasAlpha[mime]) {
+ this.bitmap.data = Buffer.from(this.bitmap.data);
+ } else {
+ // when format doesn't support alpha
+ // composite onto a new image so that the background shows through alpha channels
+ this.bitmap.data = compositeBitmapOverBackground(this.constructor, this).data;
+ }
+
+ if (this.constructor.encoders[mime]) {
+ var buffer = this.constructor.encoders[mime](this);
+ cb.call(this, null, buffer);
+ } else {
+ cb.call(this, "Unsupported MIME type: " + mime);
+ }
+
+ return this;
+}
+
+function getBufferAsync(mime) {
+ return (0, _promisify["default"])(getBuffer, this, mime);
+}
+//# sourceMappingURL=image-bitmap.js.map
\ No newline at end of file
diff --git a/node_modules/@jimp/core/dist/utils/image-bitmap.js.map b/node_modules/@jimp/core/dist/utils/image-bitmap.js.map
new file mode 100644
index 00000000..dcc464e9
--- /dev/null
+++ b/node_modules/@jimp/core/dist/utils/image-bitmap.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../src/utils/image-bitmap.js"],"names":["getMIMEFromBuffer","buffer","path","FileType","fromBuffer","fileTypeFromBuffer","mime","MIME","getType","getExifOrientation","img","_exif","tags","Orientation","getExifOrientationTransformation","w","getWidth","h","getHeight","x","y","transformBitmap","width","height","transformation","_data","bitmap","data","_width","Buffer","alloc","length","_x","_y","idx","_idx","pixel","readUInt32BE","writeUInt32BE","exifRotate","swapDimensions","newWidth","newHeight","parseBitmap","cb","Error","_originalMime","toLowerCase","getMIME","constructor","decoders","throwError","call","EXIFParser","create","parse","error","compositeBitmapOverBackground","Jimp","image","_background","composite","getBuffer","constants","AUTO","_rgba","hasAlpha","from","encoders","getBufferAsync"],"mappings":"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","sourcesContent":["import FileType from \"file-type\";\n\nimport EXIFParser from \"exif-parser\";\nimport { throwError } from \"@jimp/utils\";\n\nimport * as constants from \"../constants\";\nimport * as MIME from \"./mime\";\nimport promisify from \"./promisify\";\n\nasync function getMIMEFromBuffer(buffer, path) {\n const fileTypeFromBuffer = await FileType.fromBuffer(buffer);\n\n if (fileTypeFromBuffer) {\n // If fileType returns something for buffer, then return the mime given\n return fileTypeFromBuffer.mime;\n }\n\n if (path) {\n // If a path is supplied, and fileType yields no results, then retry with MIME\n // Path can be either a file path or a url\n return MIME.getType(path);\n }\n\n return null;\n}\n\n/*\n * Obtains image orientation from EXIF metadata.\n *\n * @param img {Jimp} a Jimp image object\n * @returns {number} a number 1-8 representing EXIF orientation,\n * in particular 1 if orientation tag is missing\n */\nfunction getExifOrientation(img) {\n return (img._exif && img._exif.tags && img._exif.tags.Orientation) || 1;\n}\n\n/**\n * Returns a function which translates EXIF-rotated coordinates into\n * non-rotated ones.\n *\n * Transformation reference: http://sylvana.net/jpegcrop/exif_orientation.html.\n *\n * @param img {Jimp} a Jimp image object\n * @returns {function} transformation function for transformBitmap().\n */\nfunction getExifOrientationTransformation(img) {\n const w = img.getWidth();\n const h = img.getHeight();\n\n switch (getExifOrientation(img)) {\n case 1: // Horizontal (normal)\n // does not need to be supported here\n return null;\n\n case 2: // Mirror horizontal\n return function (x, y) {\n return [w - x - 1, y];\n };\n\n case 3: // Rotate 180\n return function (x, y) {\n return [w - x - 1, h - y - 1];\n };\n\n case 4: // Mirror vertical\n return function (x, y) {\n return [x, h - y - 1];\n };\n\n case 5: // Mirror horizontal and rotate 270 CW\n return function (x, y) {\n return [y, x];\n };\n\n case 6: // Rotate 90 CW\n return function (x, y) {\n return [y, h - x - 1];\n };\n\n case 7: // Mirror horizontal and rotate 90 CW\n return function (x, y) {\n return [w - y - 1, h - x - 1];\n };\n\n case 8: // Rotate 270 CW\n return function (x, y) {\n return [w - y - 1, x];\n };\n\n default:\n return null;\n }\n}\n\n/*\n * Transforms bitmap in place (moves pixels around) according to given\n * transformation function.\n *\n * @param img {Jimp} a Jimp image object, which bitmap is supposed to\n * be transformed\n * @param width {number} bitmap width after the transformation\n * @param height {number} bitmap height after the transformation\n * @param transformation {function} transformation function which defines pixel\n * mapping between new and source bitmap. It takes a pair of coordinates\n * in the target, and returns a respective pair of coordinates in\n * the source bitmap, i.e. has following form:\n * `function(new_x, new_y) { return [src_x, src_y] }`.\n */\nfunction transformBitmap(img, width, height, transformation) {\n // Underscore-prefixed values are related to the source bitmap\n // Their counterparts with no prefix are related to the target bitmap\n const _data = img.bitmap.data;\n const _width = img.bitmap.width;\n\n const data = Buffer.alloc(_data.length);\n\n for (let x = 0; x < width; x++) {\n for (let y = 0; y < height; y++) {\n const [_x, _y] = transformation(x, y);\n\n const idx = (width * y + x) << 2;\n const _idx = (_width * _y + _x) << 2;\n\n const pixel = _data.readUInt32BE(_idx);\n data.writeUInt32BE(pixel, idx);\n }\n }\n\n img.bitmap.data = data;\n img.bitmap.width = width;\n img.bitmap.height = height;\n}\n\n/*\n * Automagically rotates an image based on its EXIF data (if present).\n * @param img {Jimp} a Jimp image object\n */\nfunction exifRotate(img) {\n if (getExifOrientation(img) < 2) return;\n\n const transformation = getExifOrientationTransformation(img);\n const swapDimensions = getExifOrientation(img) > 4;\n\n const newWidth = swapDimensions ? img.bitmap.height : img.bitmap.width;\n const newHeight = swapDimensions ? img.bitmap.width : img.bitmap.height;\n\n transformBitmap(img, newWidth, newHeight, transformation);\n}\n\n// parses a bitmap from the constructor to the JIMP bitmap property\nexport async function parseBitmap(data, path, cb) {\n const mime = await getMIMEFromBuffer(data, path);\n\n if (typeof mime !== \"string\") {\n return cb(new Error(\"Could not find MIME for Buffer <\" + path + \">\"));\n }\n\n this._originalMime = mime.toLowerCase();\n\n try {\n const mime = this.getMIME();\n\n if (this.constructor.decoders[mime]) {\n this.bitmap = this.constructor.decoders[mime](data);\n } else {\n return throwError.call(this, \"Unsupported MIME type: \" + mime, cb);\n }\n } catch (error) {\n return cb.call(this, error, this);\n }\n\n try {\n this._exif = EXIFParser.create(data).parse();\n exifRotate(this); // EXIF data\n } catch (error) {\n /* meh */\n }\n\n cb.call(this, null, this);\n\n return this;\n}\n\nfunction compositeBitmapOverBackground(Jimp, image) {\n return new Jimp(\n image.bitmap.width,\n image.bitmap.height,\n image._background\n ).composite(image, 0, 0).bitmap;\n}\n\n/**\n * Converts the image to a buffer\n * @param {string} mime the mime type of the image buffer to be created\n * @param {function(Error, Jimp)} cb a Node-style function to call with the buffer as the second argument\n * @returns {Jimp} this for chaining of methods\n */\nexport function getBuffer(mime, cb) {\n if (mime === constants.AUTO) {\n // allow auto MIME detection\n mime = this.getMIME();\n }\n\n if (typeof mime !== \"string\") {\n return throwError.call(this, \"mime must be a string\", cb);\n }\n\n if (typeof cb !== \"function\") {\n return throwError.call(this, \"cb must be a function\", cb);\n }\n\n mime = mime.toLowerCase();\n\n if (this._rgba && this.constructor.hasAlpha[mime]) {\n this.bitmap.data = Buffer.from(this.bitmap.data);\n } else {\n // when format doesn't support alpha\n // composite onto a new image so that the background shows through alpha channels\n this.bitmap.data = compositeBitmapOverBackground(\n this.constructor,\n this\n ).data;\n }\n\n if (this.constructor.encoders[mime]) {\n const buffer = this.constructor.encoders[mime](this);\n cb.call(this, null, buffer);\n } else {\n cb.call(this, \"Unsupported MIME type: \" + mime);\n }\n\n return this;\n}\n\nexport function getBufferAsync(mime) {\n return promisify(getBuffer, this, mime);\n}\n"],"file":"image-bitmap.js"}
\ No newline at end of file
diff --git a/node_modules/@jimp/core/dist/utils/mime.js b/node_modules/@jimp/core/dist/utils/mime.js
new file mode 100644
index 00000000..6e94ba72
--- /dev/null
+++ b/node_modules/@jimp/core/dist/utils/mime.js
@@ -0,0 +1,47 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.getExtension = exports.getType = exports.addType = void 0;
+var mimeTypes = {};
+
+var findType = function findType(extension) {
+ return Object.entries(mimeTypes).find(function (type) {
+ return type[1].includes(extension);
+ }) || [];
+};
+
+var addType = function addType(mime, extensions) {
+ mimeTypes[mime] = extensions;
+};
+/**
+ * Lookup a mime type based on extension
+ * @param {string} path path to find extension for
+ * @returns {string} mime found mime type
+ */
+
+
+exports.addType = addType;
+
+var getType = function getType(path) {
+ var pathParts = path.split("/").slice(-1);
+ var extension = pathParts[pathParts.length - 1].split(".").pop();
+ var type = findType(extension);
+ return type[0];
+};
+/**
+ * Return file extension associated with a mime type
+ * @param {string} type mime type to look up
+ * @returns {string} extension file extension
+ */
+
+
+exports.getType = getType;
+
+var getExtension = function getExtension(type) {
+ return (mimeTypes[type.toLowerCase()] || [])[0];
+};
+
+exports.getExtension = getExtension;
+//# sourceMappingURL=mime.js.map
\ No newline at end of file
diff --git a/node_modules/@jimp/core/dist/utils/mime.js.map b/node_modules/@jimp/core/dist/utils/mime.js.map
new file mode 100644
index 00000000..0fbcd7e1
--- /dev/null
+++ b/node_modules/@jimp/core/dist/utils/mime.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../src/utils/mime.js"],"names":["mimeTypes","findType","extension","Object","entries","find","type","includes","addType","mime","extensions","getType","path","pathParts","split","slice","length","pop","getExtension","toLowerCase"],"mappings":";;;;;;AAAA,IAAMA,SAAS,GAAG,EAAlB;;AAEA,IAAMC,QAAQ,GAAG,SAAXA,QAAW,CAACC,SAAD;AAAA,SACfC,MAAM,CAACC,OAAP,CAAeJ,SAAf,EAA0BK,IAA1B,CAA+B,UAACC,IAAD;AAAA,WAAUA,IAAI,CAAC,CAAD,CAAJ,CAAQC,QAAR,CAAiBL,SAAjB,CAAV;AAAA,GAA/B,KAAyE,EAD1D;AAAA,CAAjB;;AAGO,IAAMM,OAAO,GAAG,SAAVA,OAAU,CAACC,IAAD,EAAOC,UAAP,EAAsB;AAC3CV,EAAAA,SAAS,CAACS,IAAD,CAAT,GAAkBC,UAAlB;AACD,CAFM;AAIP;;;;;;;;;AAKO,IAAMC,OAAO,GAAG,SAAVA,OAAU,CAACC,IAAD,EAAU;AAC/B,MAAMC,SAAS,GAAGD,IAAI,CAACE,KAAL,CAAW,GAAX,EAAgBC,KAAhB,CAAsB,CAAC,CAAvB,CAAlB;AACA,MAAMb,SAAS,GAAGW,SAAS,CAACA,SAAS,CAACG,MAAV,GAAmB,CAApB,CAAT,CAAgCF,KAAhC,CAAsC,GAAtC,EAA2CG,GAA3C,EAAlB;AACA,MAAMX,IAAI,GAAGL,QAAQ,CAACC,SAAD,CAArB;AAEA,SAAOI,IAAI,CAAC,CAAD,CAAX;AACD,CANM;AAQP;;;;;;;;;AAKO,IAAMY,YAAY,GAAG,SAAfA,YAAe,CAACZ,IAAD;AAAA,SAAU,CAACN,SAAS,CAACM,IAAI,CAACa,WAAL,EAAD,CAAT,IAAiC,EAAlC,EAAsC,CAAtC,CAAV;AAAA,CAArB","sourcesContent":["const mimeTypes = {};\n\nconst findType = (extension) =>\n Object.entries(mimeTypes).find((type) => type[1].includes(extension)) || [];\n\nexport const addType = (mime, extensions) => {\n mimeTypes[mime] = extensions;\n};\n\n/**\n * Lookup a mime type based on extension\n * @param {string} path path to find extension for\n * @returns {string} mime found mime type\n */\nexport const getType = (path) => {\n const pathParts = path.split(\"/\").slice(-1);\n const extension = pathParts[pathParts.length - 1].split(\".\").pop();\n const type = findType(extension);\n\n return type[0];\n};\n\n/**\n * Return file extension associated with a mime type\n * @param {string} type mime type to look up\n * @returns {string} extension file extension\n */\nexport const getExtension = (type) => (mimeTypes[type.toLowerCase()] || [])[0];\n"],"file":"mime.js"}
\ No newline at end of file
diff --git a/project starter code/node_modules/@jimp/core/dist/utils/promisify.js b/node_modules/@jimp/core/dist/utils/promisify.js
similarity index 100%
rename from project starter code/node_modules/@jimp/core/dist/utils/promisify.js
rename to node_modules/@jimp/core/dist/utils/promisify.js
diff --git a/project starter code/node_modules/@jimp/core/dist/utils/promisify.js.map b/node_modules/@jimp/core/dist/utils/promisify.js.map
similarity index 100%
rename from project starter code/node_modules/@jimp/core/dist/utils/promisify.js.map
rename to node_modules/@jimp/core/dist/utils/promisify.js.map
diff --git a/node_modules/@jimp/core/package.json b/node_modules/@jimp/core/package.json
new file mode 100644
index 00000000..65183a5d
--- /dev/null
+++ b/node_modules/@jimp/core/package.json
@@ -0,0 +1,50 @@
+{
+ "name": "@jimp/core",
+ "version": "0.16.13",
+ "description": "Jimp core",
+ "main": "dist/index.js",
+ "module": "es/index.js",
+ "types": "types/index.d.ts",
+ "files": [
+ "dist",
+ "es",
+ "index.d.ts",
+ "fonts",
+ "types"
+ ],
+ "repository": "jimp-dev/jimp",
+ "scripts": {
+ "test": "cross-env BABEL_ENV=test mocha --require @babel/register test/**/*.js",
+ "test:watch": "npm run test -- --reporter min --watch",
+ "test:coverage": "nyc npm run test",
+ "build": "npm run build:node:production && npm run build:module",
+ "build:watch": "npm run build:node:debug -- -- --watch --verbose",
+ "build:debug": "npm run build:node:debug",
+ "build:module": "cross-env BABEL_ENV=module babel src -d es --source-maps --config-file ../../babel.config.js",
+ "build:node": "babel src -d dist --source-maps --config-file ../../babel.config.js",
+ "build:node:debug": "cross-env BABEL_ENV=development npm run build:node",
+ "build:node:production": "cross-env BABEL_ENV=production npm run build:node"
+ },
+ "author": "Oliver Moran ",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13",
+ "any-base": "^1.1.0",
+ "buffer": "^5.2.0",
+ "exif-parser": "^0.1.12",
+ "file-type": "^16.5.4",
+ "load-bmfont": "^1.3.1",
+ "mkdirp": "^0.5.1",
+ "phin": "^2.9.1",
+ "pixelmatch": "^4.0.2",
+ "tinycolor2": "^1.4.1"
+ },
+ "devDependencies": {
+ "should": "^13.2.3"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "gitHead": "9eec86086634329a072901dca3a800b850548572"
+}
diff --git a/node_modules/@jimp/core/types/etc.d.ts b/node_modules/@jimp/core/types/etc.d.ts
new file mode 100644
index 00000000..e13192e6
--- /dev/null
+++ b/node_modules/@jimp/core/types/etc.d.ts
@@ -0,0 +1,93 @@
+import { Jimp } from "./jimp";
+
+export interface Image {
+ bitmap: Bitmap;
+}
+
+export type DecoderFn = (data: Buffer) => Bitmap;
+export type EncoderFn = (
+ image: ImageType
+) => Buffer;
+
+export type GenericCallback = (
+ this: TThis,
+ err: Error | null,
+ value: T
+) => U;
+
+/**
+ * `jimp` must be defined otherwise `this` will not apply properly
+ * for custom configurations where plugins and types are needed
+ */
+export type ImageCallback = (
+ this: jimp,
+ err: Error | null,
+ value: jimp,
+ coords: {
+ x: number;
+ y: number;
+ }
+) => any;
+
+type BlendMode = {
+ mode: string;
+ opacitySource: number;
+ opacityDest: number;
+};
+
+type ChangeName = "background" | "scan" | "crop";
+
+type ListenableName =
+ | "any"
+ | "initialized"
+ | "before-change"
+ | "changed"
+ | "before-clone"
+ | "cloned"
+ | ChangeName;
+
+type ListenerData = T extends "any"
+ ? any
+ : T extends ChangeName
+ ? {
+ eventName: "before-change" | "changed";
+ methodName: T;
+ [key: string]: any;
+ }
+ : {
+ eventName: T;
+ methodName: T extends "initialized"
+ ? "constructor"
+ : T extends "before-change" | "changed"
+ ? ChangeName
+ : T extends "before-clone" | "cloned"
+ ? "clone"
+ : any;
+ };
+
+type URLOptions = {
+ url: string;
+ compression?: boolean;
+ headers: {
+ [key: string]: any;
+ };
+};
+
+export interface Bitmap {
+ data: Buffer;
+ width: number;
+ height: number;
+}
+
+export interface RGB {
+ r: number;
+ g: number;
+ b: number;
+}
+
+export interface RGBA {
+ r: number;
+ g: number;
+ b: number;
+ a: number;
+}
diff --git a/project starter code/node_modules/@jimp/core/types/functions.d.ts b/node_modules/@jimp/core/types/functions.d.ts
similarity index 90%
rename from project starter code/node_modules/@jimp/core/types/functions.d.ts
rename to node_modules/@jimp/core/types/functions.d.ts
index d7366054..de74902e 100644
--- a/project starter code/node_modules/@jimp/core/types/functions.d.ts
+++ b/node_modules/@jimp/core/types/functions.d.ts
@@ -1,4 +1,4 @@
-import {Jimp} from '@jimp/core/types/jimp';
+import { Jimp } from "./jimp";
export function addConstants(
constants: [string, string | number],
diff --git a/node_modules/@jimp/core/types/index.d.ts b/node_modules/@jimp/core/types/index.d.ts
new file mode 100644
index 00000000..88bd53a7
--- /dev/null
+++ b/node_modules/@jimp/core/types/index.d.ts
@@ -0,0 +1,9 @@
+export * from "./etc";
+export * from "./functions";
+export * from "./plugins";
+export * from "./utils";
+import { Jimp, JimpConstructors } from "./jimp";
+
+export { Jimp, JimpConstructors };
+declare const defaultExp: Jimp;
+export default defaultExp;
diff --git a/node_modules/@jimp/core/types/jimp.d.ts b/node_modules/@jimp/core/types/jimp.d.ts
new file mode 100644
index 00000000..3b7d7a11
--- /dev/null
+++ b/node_modules/@jimp/core/types/jimp.d.ts
@@ -0,0 +1,246 @@
+import {
+ Bitmap,
+ ImageCallback,
+ URLOptions,
+ ListenableName,
+ ListenerData,
+ GenericCallback,
+ BlendMode,
+ RGBA,
+ RGB,
+} from "./etc";
+
+interface DiffReturn {
+ percent: number;
+ image: This;
+}
+
+interface ScanIteratorReturn {
+ x: number;
+ y: number;
+ idx: number;
+ image: This;
+}
+
+export interface JimpConstructors {
+ prototype: Jimp;
+ // Constants
+ AUTO: -1;
+ // blend modes
+ BLEND_SOURCE_OVER: string;
+ BLEND_DESTINATION_OVER: string;
+ BLEND_MULTIPLY: string;
+ BLEND_ADD: string;
+ BLEND_SCREEN: string;
+ BLEND_OVERLAY: string;
+ BLEND_DARKEN: string;
+ BLEND_LIGHTEN: string;
+ BLEND_HARDLIGHT: string;
+ BLEND_DIFFERENCE: string;
+ BLEND_EXCLUSION: string;
+ // Align modes for cover, contain, bit masks
+ HORIZONTAL_ALIGN_LEFT: 1;
+ HORIZONTAL_ALIGN_CENTER: 2;
+ HORIZONTAL_ALIGN_RIGHT: 4;
+ VERTICAL_ALIGN_TOP: 8;
+ VERTICAL_ALIGN_MIDDLE: 16;
+ VERTICAL_ALIGN_BOTTOM: 32;
+ // Edge Handling
+ EDGE_EXTEND: 1;
+ EDGE_WRAP: 2;
+ EDGE_CROP: 3;
+
+ // Constructors
+ new (path: string, cb?: ImageCallback): this["prototype"];
+ new (
+ urlOptions: URLOptions,
+ cb?: ImageCallback
+ ): this["prototype"];
+ new (image: Jimp, cb?: ImageCallback): this["prototype"];
+ new (data: Buffer, cb?: ImageCallback): this["prototype"];
+ new (data: Bitmap, cb?: ImageCallback): this["prototype"];
+ new (
+ w: number,
+ h: number,
+ cb?: ImageCallback
+ ): this["prototype"];
+ new (
+ w: number,
+ h: number,
+ background?: number | string,
+ cb?: ImageCallback
+ ): this["prototype"];
+ // For custom constructors when using Jimp.appendConstructorOption
+ new (...args: any[]): this["prototype"];
+
+ // Functions
+ /**
+ * I'd like to make `Args` generic and used in `run` and `test` but alas,
+ * it's not possible RN:
+ * https://github.com/microsoft/TypeScript/issues/26113
+ */
+ appendConstructorOption<
+ Args extends any[],
+ J extends Jimp = this["prototype"]
+ >(
+ name: string,
+ test: (...args: any[]) => boolean,
+ run: (
+ this: J,
+ resolve: (jimp?: J) => any,
+ reject: (reason: Error) => any,
+ ...args: any[]
+ ) => any
+ ): void;
+ read(
+ path: string,
+ cb?: ImageCallback
+ ): Promise;
+ read(
+ image: Jimp,
+ cb?: ImageCallback
+ ): Promise;
+ read(
+ data: Buffer,
+ cb?: ImageCallback
+ ): Promise;
+ read(
+ w: number,
+ h: number,
+ background?: number | string,
+ cb?: ImageCallback
+ ): Promise;
+ create(path: string): Promise;
+ create(image: Jimp): Promise;
+ create(data: Buffer): Promise;
+ create(
+ w: number,
+ h: number,
+ background?: number | string
+ ): Promise;
+ rgbaToInt(
+ r: number,
+ g: number,
+ b: number,
+ a: number,
+ cb?: GenericCallback
+ ): number;
+ intToRGBA(i: number, cb?: GenericCallback): RGBA;
+ cssColorToHex(cssColor: string): number;
+ limit255(n: number): number;
+ diff(
+ img1: Jimp,
+ img2: Jimp,
+ threshold?: number
+ ): DiffReturn;
+ distance(img1: Jimp, img2: Jimp): number;
+ compareHashes(hash1: string, hash2: string): number;
+ colorDiff(rgba1: RGB, rgba2: RGB): number;
+ colorDiff(rgba1: RGBA, rgba2: RGBA): number;
+}
+
+export interface Jimp {
+ // Properties
+ bitmap: Bitmap;
+ _rgba: boolean;
+ _background: number;
+ _originalMime: string;
+ // Methods
+ on(
+ event: T,
+ cb: (data: ListenerData) => any
+ ): any;
+ parseBitmap(
+ data: Buffer,
+ path: string | null | undefined,
+ cb?: ImageCallback
+ ): void;
+ hasAlpha(): boolean;
+ getHeight(): number;
+ getWidth(): number;
+ inspect(): string;
+ toString(): string;
+ getMIME(): string;
+ getExtension(): string;
+ distanceFromHash(hash: string): number;
+ write(path: string, cb?: ImageCallback): this;
+ writeAsync(path: string): Promise;
+ rgba(bool: boolean, cb?: ImageCallback): this;
+ getBase64(mime: string, cb: GenericCallback): this;
+ getBase64Async(mime: string): Promise;
+ hash(cb?: GenericCallback): string;
+ hash(
+ base: number | null | undefined,
+ cb?: GenericCallback
+ ): string;
+ getBuffer(mime: string, cb: GenericCallback): this;
+ getBufferAsync(mime: string): Promise;
+ getPixelIndex(
+ x: number,
+ y: number,
+ cb?: GenericCallback
+ ): number;
+ getPixelIndex(
+ x: number,
+ y: number,
+ edgeHandling: number,
+ cb?: GenericCallback
+ ): number;
+ getPixelColor(
+ x: number,
+ y: number,
+ cb?: GenericCallback
+ ): number;
+ getPixelColour(
+ x: number,
+ y: number,
+ cb?: GenericCallback
+ ): number;
+ setPixelColor(
+ hex: number,
+ x: number,
+ y: number,
+ cb?: ImageCallback
+ ): this;
+ setPixelColour(
+ hex: number,
+ x: number,
+ y: number,
+ cb?: ImageCallback
+ ): this;
+ clone(cb?: ImageCallback): this;
+ cloneQuiet(cb?: ImageCallback): this;
+ background(hex: number, cb?: ImageCallback): this;
+ backgroundQuiet(hex: number, cb?: ImageCallback): this;
+ scan(
+ x: number,
+ y: number,
+ w: number,
+ h: number,
+ f: (this: this, x: number, y: number, idx: number) => any,
+ cb?: ImageCallback
+ ): this;
+ scanQuiet(
+ x: number,
+ y: number,
+ w: number,
+ h: number,
+ f: (this: this, x: number, y: number, idx: number) => any,
+ cb?: ImageCallback
+ ): this;
+ scanIterator(
+ x: number,
+ y: number,
+ w: number,
+ h: number
+ ): IterableIterator>;
+
+ // Effect methods
+ composite(
+ src: Jimp,
+ x: number,
+ y: number,
+ options?: BlendMode,
+ cb?: ImageCallback
+ ): this;
+}
diff --git a/project starter code/node_modules/@jimp/core/types/plugins.d.ts b/node_modules/@jimp/core/types/plugins.d.ts
similarity index 76%
rename from project starter code/node_modules/@jimp/core/types/plugins.d.ts
rename to node_modules/@jimp/core/types/plugins.d.ts
index 26fe4dcd..62bf2ea9 100644
--- a/project starter code/node_modules/@jimp/core/types/plugins.d.ts
+++ b/node_modules/@jimp/core/types/plugins.d.ts
@@ -1,23 +1,17 @@
/**
* These files pertain to the typings of plugins or types
- *
+ *
* They're not meant as utils to decode types, but rather
* the type definitons themsleves for plugins and types of various kinds
*/
-import {
- Image,
- EncoderFn,
- DecoderFn
-} from '@jimp/core/types/etc';
+import { Image, EncoderFn, DecoderFn } from "./etc";
-import {
- Omit
-} from '@jimp/core/types/utils';
+import { Omit } from "./utils";
-export type IllformedPlugin = Omit & {
+export type IllformedPlugin = Omit & {
class?: never;
constants?: never;
-}
+};
export interface WellFormedPlugin {
mime?: {
@@ -43,13 +37,13 @@ export interface WellFormedPlugin {
type ClassOrConstantPlugin = WellFormedPlugin &
(
- | Required, 'class'>>
- | Required, 'constants'>>
+ | Required, "class">>
+ | Required, "constants">>
);
// A Jimp type requires mime, but not class
export type JimpType = WellFormedPlugin &
- Required, 'mime'>>;
+ Required, "mime">>;
// Jimp plugin either MUST have class OR constant or be illformed
export type JimpPlugin =
diff --git a/node_modules/@jimp/core/types/utils.d.ts b/node_modules/@jimp/core/types/utils.d.ts
new file mode 100644
index 00000000..463321b9
--- /dev/null
+++ b/node_modules/@jimp/core/types/utils.d.ts
@@ -0,0 +1,132 @@
+import { JimpType, JimpPlugin } from "./plugins";
+
+// This is required as providing type arrays gives a union of all the generic
+// types in the array rather than an intersection
+export type UnionToIntersection = (
+ U extends any ? (k: U) => void : never
+) extends (k: infer I) => void
+ ? I
+ : never;
+
+/**
+ * The values to be extracted from a WellFormedPlugin to put onto the Jimp instance
+ * Left loose as "any" in order to enable the GetPluginVal to work properly
+ */
+export type WellFormedValues = T extends { class: infer Class }
+ ? Class
+ : {};
+
+/**
+ * The constants to be extracted from a WellFormedPlugin to put onto the Jimp instance
+ * Left loose as "any" in order to enable the GetPluginConstants to work properly
+ */
+export type WellFormedConstants = T extends {
+ constants: infer Constants;
+}
+ ? Constants
+ : {};
+
+// Util type for the functions that deal with `@jimp/custom`
+// Must accept any or no props thanks to typing of the `plugins` intersected function
+export type FunctionRet = Array<(...props: any[] | never) => T>;
+
+/**
+ * This conditional cannot be flipped. TS assumes that Q is `WellFormed` even
+ * it does not have the `class` or `constant` props. As a result, it will end
+ * up `undefined`. Because we're always extending `IllformedPlugin` on the
+ * plugins, this should work fine
+ */
+export type GetPluginVal = Q extends
+ | Required<{ class: any }>
+ | Required<{ constants: any }>
+ ? WellFormedValues
+ : Q;
+
+export type GetPluginConst = Q extends
+ | Required<{ class: any }>
+ | Required<{ constants: any }>
+ ? WellFormedConstants
+ : {};
+
+export type GetPluginDecoders = Q extends
+ | Required<{ class: any }>
+ | Required<{ constants: any }>
+ ? Q extends { decoders: infer Decoders }
+ ? Decoders
+ : {}
+ : {};
+
+export type GetPluginEncoders = Q extends
+ | Required<{ class: any }>
+ | Required<{ constants: any }>
+ ? Q extends { encoders: infer Encoders }
+ ? Encoders
+ : {}
+ : {};
+
+type GetPluginFuncArrValues =
+ // Given an array of types infer `Q` (Q should be the type value)
+ PluginFuncArr extends ReadonlyArray
+ ? F extends () => infer Q
+ ? // Get the plugin value, may be ill-formed or well-formed
+ GetPluginVal
+ : // This should never be reached
+ undefined
+ : undefined;
+
+/**
+ * A helper type to get the values to be intersected with `Jimp` to give
+ * the proper typing given an array of functions for plugins and types
+ */
+export type GetIntersectionFromPlugins<
+ PluginFuncArr extends FunctionRet
+> = UnionToIntersection<
+ Exclude, undefined>
+>;
+
+type GetPluginFuncArrConsts =
+ // Given an array of types infer `Q` (Q should be the type value)
+ PluginFuncArr extends ReadonlyArray
+ ? F extends () => infer Q
+ ? // Get the plugin constants, may be ill-formed or well-formed
+ GetPluginConst
+ : // This should never be reached
+ undefined
+ : undefined;
+
+type GetPluginFuncArrEncoders =
+ // Given an array of types infer `Q` (Q should be the type value)
+ PluginFuncArr extends ReadonlyArray
+ ? F extends () => infer Q
+ ? // Get the plugin encoders, may be ill-formed or well-formed
+ GetPluginEncoders
+ : // This should never be reached
+ undefined
+ : undefined;
+
+type GetPluginFuncArrDecoders =
+ // Given an array of types infer `Q` (Q should be the type value)
+ PluginFuncArr extends ReadonlyArray
+ ? F extends () => infer Q
+ ? // Get the plugin decoders, may be ill-formed or well-formed
+ GetPluginDecoders
+ : // This should never be reached
+ undefined
+ : undefined;
+
+/**
+ * A helper type to get the statics to be intersected with `Jimp` to give
+ * the proper typing given an array of functions for plugins and types
+ */
+export type GetIntersectionFromPluginsStatics<
+ PluginFuncArr extends FunctionRet
+> = UnionToIntersection> & {
+ encoders: UnionToIntersection>;
+ decoders: UnionToIntersection>;
+};
+
+/**
+ * While this was added to TS 3.5, in order to support down to TS 2.8, we need
+ * to export this and use it in sub-packges that utilize it
+ */
+export type Omit = Pick>;
diff --git a/node_modules/@jimp/custom/CHANGELOG.md b/node_modules/@jimp/custom/CHANGELOG.md
new file mode 100644
index 00000000..7c14f300
--- /dev/null
+++ b/node_modules/@jimp/custom/CHANGELOG.md
@@ -0,0 +1,59 @@
+# v0.16.3 (Sat Feb 04 2023)
+
+#### ⚠️ Pushed to `master`
+
+- upgrade prettier ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 1
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+---
+
+# v0.11.0 (Fri May 15 2020)
+
+#### 🚀 Enhancement
+
+- Removed Core-JS as a dependency. [#882](https://github.com/oliver-moran/jimp/pull/882) ([@EricRabil](https://github.com/EricRabil))
+
+#### Authors: 1
+
+- Eric Rabil ([@EricRabil](https://github.com/EricRabil))
+
+---
+
+# v0.10.0 (Mon Mar 30 2020)
+
+#### 🚀 Enhancement
+
+- Properly split constructor and instance types [#867](https://github.com/oliver-moran/jimp/pull/867) ([@forivall](https://github.com/forivall))
+
+#### Authors: 1
+
+- Emily Marigold Klassen ([@forivall](https://github.com/forivall))
+
+---
+
+# v0.9.6 (Wed Mar 18 2020)
+
+#### 🏠 Internal
+
+- Fix TypeScript error on 'next' [#858](https://github.com/oliver-moran/jimp/pull/858) ([@crutchcorn](https://github.com/crutchcorn))
+
+#### Authors: 1
+
+- Corbin Crutchley ([@crutchcorn](https://github.com/crutchcorn))
+
+---
+
+# v0.9.3 (Tue Nov 26 2019)
+
+#### 🐛 Bug Fix
+
+- `@jimp/cli`, `@jimp/core`, `@jimp/custom`, `jimp`, `@jimp/plugin-blit`, `@jimp/plugin-blur`, `@jimp/plugin-circle`, `@jimp/plugin-color`, `@jimp/plugin-contain`, `@jimp/plugin-cover`, `@jimp/plugin-crop`, `@jimp/plugin-displace`, `@jimp/plugin-dither`, `@jimp/plugin-fisheye`, `@jimp/plugin-flip`, `@jimp/plugin-gaussian`, `@jimp/plugin-invert`, `@jimp/plugin-mask`, `@jimp/plugin-normalize`, `@jimp/plugin-print`, `@jimp/plugin-resize`, `@jimp/plugin-rotate`, `@jimp/plugin-scale`, `@jimp/plugin-shadow`, `@jimp/plugin-threshold`, `@jimp/plugins`, `@jimp/test-utils`, `@jimp/bmp`, `@jimp/gif`, `@jimp/jpeg`, `@jimp/png`, `@jimp/tiff`, `@jimp/types`, `@jimp/utils`
+ - Fix regeneratorRuntime errors [#815](https://github.com/oliver-moran/jimp/pull/815) ([@crutchcorn](https://github.com/crutchcorn) [@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 2
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+- Corbin Crutchley ([@crutchcorn](https://github.com/crutchcorn))
diff --git a/project starter code/node_modules/@jimp/custom/LICENSE b/node_modules/@jimp/custom/LICENSE
similarity index 100%
rename from project starter code/node_modules/@jimp/custom/LICENSE
rename to node_modules/@jimp/custom/LICENSE
diff --git a/node_modules/@jimp/custom/README.md b/node_modules/@jimp/custom/README.md
new file mode 100644
index 00000000..961d7333
--- /dev/null
+++ b/node_modules/@jimp/custom/README.md
@@ -0,0 +1,198 @@
+
+
+
@jimp/custom
+
Configure jimp with types and plugins.
+
+
+## Useful Defaults
+
+The following wil configure a `jimp` instance with the same functionality as the main `jimp` package.
+
+```js
+import configure from "@jimp/custom";
+// all of jimp's default types
+import types from "@jimp/types";
+// all of jimp's default types
+import plugins from "@jimp/plugins";
+
+configure({
+ types: [types],
+ plugins: [plugins],
+});
+```
+
+## Available Methods
+
+### configure
+
+Takes a Jimp configuration and applies it to `@jimp/core`.
+
+Sample Jimp configuration:
+
+```js
+import types from '@jimp/types';
+
+import bmp from '@jimp/bmp';
+import jpeg from '@jimp/types';
+...
+
+configure({
+ types: [types]
+})
+
+// or
+
+configure({
+ types: [bmp, jpeg, ...]
+})
+```
+
+#### Extending Jimp Further
+
+You can use configure to add more types and plugins to a jimp multiple times.
+
+```js
+let jimp = configure({
+ types: [bmp],
+});
+
+jimp = configure(
+ {
+ types: [jpeg],
+ },
+ jimp
+);
+```
+
+## Type Definition
+
+To define a new Jimp image type write a function the takes the current Jimp configuration. In this function you can extend Jimp's internal data structures.
+
+This function must return an object whose key is the mime type and value is an array of valid file extensions.
+
+```js
+const special = require('special-js');
+
+const MIME_TYPE = 'image/special';
+
+export default () => ({
+ mime: {[MIME_TYPE], ['spec', 'special']},
+
+ constants: {
+ MIME_SPECIAL: MIME_TYPE
+ },
+
+ decoders: {
+ [MIME_TYPE]: data => special.decode(data)
+ },
+
+ encoders: {
+ [MIME_TYPE]: image => special.encode(image.bitmap)
+ }
+});
+```
+
+### Constants
+
+A jimp image type can expose as many constants as it wants. Each jimp type is required to expose a mime type.
+
+```js
+constants: {
+ MIME_SPECIAL: MIME_TYPE
+},
+```
+
+### hasAlpha
+
+A image type can define whether it supports an alpha channel.
+
+```js
+hasAlpha: {
+ MIME_SPECIAL: true
+},
+```
+
+### Decoder
+
+A function that when supplied with a buffer should return a bitmap with height and width.
+
+```js
+decoders: {
+ [MIME_TYPE]: data => special.decode(data)
+},
+```
+
+### Encoder
+
+A function that when supplied with a Jimp image should return an encoded buffer.
+
+```js
+encoders: {
+ [MIME_TYPE]: image => special.encode(image.bitmap)
+}
+```
+
+### Class
+
+Add class properties and function to the Jimp constructor.
+
+```js
+class: {
+ _quality: 100,
+ quality: function(n, cb) {
+ if (typeof n !== 'number') {
+ return throwError.call(this, 'n must be a number', cb);
+ }
+
+ if (n < 0 || n > 100) {
+ return throwError.call(this, 'n must be a number 0 - 100', cb);
+ }
+
+ this._quality = Math.round(n);
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ }
+};
+```
+
+## Plugin Definition
+
+Defining a plugin has access to all the same things in the type definition. Mainly plugins use just the `constants` and `class` config options.
+
+Below is the `invert` plugin. If a plugin doesn return an object with `constants` and `class`, all keys are treated as class functions.
+
+```js
+import { isNodePattern } from "@jimp/utils";
+
+/**
+ * Inverts the image
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+export default () => ({
+ invert(cb) {
+ this.scanQuiet(
+ 0,
+ 0,
+ this.bitmap.width,
+ this.bitmap.height,
+ function (x, y, idx) {
+ this.bitmap.data[idx] = 255 - this.bitmap.data[idx];
+ this.bitmap.data[idx + 1] = 255 - this.bitmap.data[idx + 1];
+ this.bitmap.data[idx + 2] = 255 - this.bitmap.data[idx + 2];
+ }
+ );
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+});
+```
diff --git a/project starter code/node_modules/@jimp/custom/dist/index.js b/node_modules/@jimp/custom/dist/index.js
similarity index 100%
rename from project starter code/node_modules/@jimp/custom/dist/index.js
rename to node_modules/@jimp/custom/dist/index.js
diff --git a/node_modules/@jimp/custom/dist/index.js.map b/node_modules/@jimp/custom/dist/index.js.map
new file mode 100644
index 00000000..c10c1212
--- /dev/null
+++ b/node_modules/@jimp/custom/dist/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/index.js"],"names":["configure","configuration","jimpInstance","Jimp","jimpConfig","hasAlpha","encoders","decoders","constants","addToConfig","newConfig","Object","entries","forEach","key","value","addImageType","typeModule","type","Array","isArray","mime","addType","mimeType","addPlugin","pluginModule","plugin","jimpEvChange","types","plugins"],"mappings":";;;;;;;;;;;;;;;;;AAAA;;;;;;AAOe,SAASA,SAAT,CAAmBC,aAAnB,EAAuD;AAAA,MAArBC,YAAqB,uEAANC,gBAAM;AACpE,MAAMC,UAAU,GAAG;AACjBC,IAAAA,QAAQ,EAAE,EADO;AAEjBC,IAAAA,QAAQ,EAAE,EAFO;AAGjBC,IAAAA,QAAQ,EAAE,EAHO;AAIjB,aAAO,EAJU;AAKjBC,IAAAA,SAAS,EAAE;AALM,GAAnB;;AAQA,WAASC,WAAT,CAAqBC,SAArB,EAAgC;AAC9BC,IAAAA,MAAM,CAACC,OAAP,CAAeF,SAAf,EAA0BG,OAA1B,CAAkC,gBAAkB;AAAA;AAAA,UAAhBC,GAAgB;AAAA,UAAXC,KAAW;;AAClDX,MAAAA,UAAU,CAACU,GAAD,CAAV,qBACKV,UAAU,CAACU,GAAD,CADf,MAEKC,KAFL;AAID,KALD;AAMD;;AAED,WAASC,YAAT,CAAsBC,UAAtB,EAAkC;AAChC,QAAMC,IAAI,GAAGD,UAAU,EAAvB;;AAEA,QAAIE,KAAK,CAACC,OAAN,CAAcF,IAAI,CAACG,IAAnB,CAAJ,EAA8B;AAC5BC,sEAAWJ,IAAI,CAACG,IAAhB;AACD,KAFD,MAEO;AACLV,MAAAA,MAAM,CAACC,OAAP,CAAeM,IAAI,CAACG,IAApB,EAA0BR,OAA1B,CAAkC,UAACU,QAAD;AAAA,eAAcD,gEAAWC,QAAX,EAAd;AAAA,OAAlC;AACD;;AAED,WAAOL,IAAI,CAACG,IAAZ;AACAZ,IAAAA,WAAW,CAACS,IAAD,CAAX;AACD;;AAED,WAASM,SAAT,CAAmBC,YAAnB,EAAiC;AAC/B,QAAMC,MAAM,GAAGD,YAAY,CAACE,kBAAD,CAAZ,IAA8B,EAA7C;;AACA,QAAI,CAACD,MAAM,SAAP,IAAiB,CAACA,MAAM,CAAClB,SAA7B,EAAwC;AACtC;AACAC,MAAAA,WAAW,CAAC;AAAE,iBAAOiB;AAAT,OAAD,CAAX;AACD,KAHD,MAGO;AACLjB,MAAAA,WAAW,CAACiB,MAAD,CAAX;AACD;AACF;;AAED,MAAIzB,aAAa,CAAC2B,KAAlB,EAAyB;AACvB3B,IAAAA,aAAa,CAAC2B,KAAd,CAAoBf,OAApB,CAA4BG,YAA5B;AAEAd,IAAAA,YAAY,CAACK,QAAb,qBACKL,YAAY,CAACK,QADlB,MAEKH,UAAU,CAACG,QAFhB;AAIAL,IAAAA,YAAY,CAACI,QAAb,qBACKJ,YAAY,CAACI,QADlB,MAEKF,UAAU,CAACE,QAFhB;AAIAJ,IAAAA,YAAY,CAACG,QAAb,qBACKH,YAAY,CAACG,QADlB,MAEKD,UAAU,CAACC,QAFhB;AAID;;AAED,MAAIJ,aAAa,CAAC4B,OAAlB,EAA2B;AACzB5B,IAAAA,aAAa,CAAC4B,OAAd,CAAsBhB,OAAtB,CAA8BW,SAA9B;AACD;;AAED,4BAAepB,UAAU,SAAzB,EAAiCF,YAAjC;AACA,0BAAaE,UAAU,CAACI,SAAxB,EAAmCN,YAAnC;AAEA,SAAOC,gBAAP;AACD","sourcesContent":["import Jimp, {\n addType,\n addJimpMethods,\n addConstants,\n jimpEvChange,\n} from \"@jimp/core\";\n\nexport default function configure(configuration, jimpInstance = Jimp) {\n const jimpConfig = {\n hasAlpha: {},\n encoders: {},\n decoders: {},\n class: {},\n constants: {},\n };\n\n function addToConfig(newConfig) {\n Object.entries(newConfig).forEach(([key, value]) => {\n jimpConfig[key] = {\n ...jimpConfig[key],\n ...value,\n };\n });\n }\n\n function addImageType(typeModule) {\n const type = typeModule();\n\n if (Array.isArray(type.mime)) {\n addType(...type.mime);\n } else {\n Object.entries(type.mime).forEach((mimeType) => addType(...mimeType));\n }\n\n delete type.mime;\n addToConfig(type);\n }\n\n function addPlugin(pluginModule) {\n const plugin = pluginModule(jimpEvChange) || {};\n if (!plugin.class && !plugin.constants) {\n // Default to class function\n addToConfig({ class: plugin });\n } else {\n addToConfig(plugin);\n }\n }\n\n if (configuration.types) {\n configuration.types.forEach(addImageType);\n\n jimpInstance.decoders = {\n ...jimpInstance.decoders,\n ...jimpConfig.decoders,\n };\n jimpInstance.encoders = {\n ...jimpInstance.encoders,\n ...jimpConfig.encoders,\n };\n jimpInstance.hasAlpha = {\n ...jimpInstance.hasAlpha,\n ...jimpConfig.hasAlpha,\n };\n }\n\n if (configuration.plugins) {\n configuration.plugins.forEach(addPlugin);\n }\n\n addJimpMethods(jimpConfig.class, jimpInstance);\n addConstants(jimpConfig.constants, jimpInstance);\n\n return Jimp;\n}\n"],"file":"index.js"}
\ No newline at end of file
diff --git a/node_modules/@jimp/custom/package.json b/node_modules/@jimp/custom/package.json
new file mode 100644
index 00000000..61c55585
--- /dev/null
+++ b/node_modules/@jimp/custom/package.json
@@ -0,0 +1,27 @@
+{
+ "name": "@jimp/custom",
+ "version": "0.16.13",
+ "description": "Interface to customize jimp configuration",
+ "main": "dist/index.js",
+ "module": "es/index.js",
+ "types": "types/index.d.ts",
+ "scripts": {
+ "build": "npm run build:node:production && npm run build:module",
+ "build:watch": "npm run build:node:debug -- -- --watch --verbose",
+ "build:debug": "npm run build:node:debug",
+ "build:module": "cross-env BABEL_ENV=module babel src -d es --source-maps --config-file ../../babel.config.js",
+ "build:node": "babel src -d dist --source-maps --config-file ../../babel.config.js",
+ "build:node:debug": "cross-env BABEL_ENV=development npm run build:node",
+ "build:node:production": "cross-env BABEL_ENV=production npm run build:node"
+ },
+ "author": "",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/core": "^0.16.13"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "gitHead": "9eec86086634329a072901dca3a800b850548572"
+}
diff --git a/node_modules/@jimp/custom/src/index.js b/node_modules/@jimp/custom/src/index.js
new file mode 100644
index 00000000..dddc7d90
--- /dev/null
+++ b/node_modules/@jimp/custom/src/index.js
@@ -0,0 +1,74 @@
+import Jimp, {
+ addType,
+ addJimpMethods,
+ addConstants,
+ jimpEvChange,
+} from "@jimp/core";
+
+export default function configure(configuration, jimpInstance = Jimp) {
+ const jimpConfig = {
+ hasAlpha: {},
+ encoders: {},
+ decoders: {},
+ class: {},
+ constants: {},
+ };
+
+ function addToConfig(newConfig) {
+ Object.entries(newConfig).forEach(([key, value]) => {
+ jimpConfig[key] = {
+ ...jimpConfig[key],
+ ...value,
+ };
+ });
+ }
+
+ function addImageType(typeModule) {
+ const type = typeModule();
+
+ if (Array.isArray(type.mime)) {
+ addType(...type.mime);
+ } else {
+ Object.entries(type.mime).forEach((mimeType) => addType(...mimeType));
+ }
+
+ delete type.mime;
+ addToConfig(type);
+ }
+
+ function addPlugin(pluginModule) {
+ const plugin = pluginModule(jimpEvChange) || {};
+ if (!plugin.class && !plugin.constants) {
+ // Default to class function
+ addToConfig({ class: plugin });
+ } else {
+ addToConfig(plugin);
+ }
+ }
+
+ if (configuration.types) {
+ configuration.types.forEach(addImageType);
+
+ jimpInstance.decoders = {
+ ...jimpInstance.decoders,
+ ...jimpConfig.decoders,
+ };
+ jimpInstance.encoders = {
+ ...jimpInstance.encoders,
+ ...jimpConfig.encoders,
+ };
+ jimpInstance.hasAlpha = {
+ ...jimpInstance.hasAlpha,
+ ...jimpConfig.hasAlpha,
+ };
+ }
+
+ if (configuration.plugins) {
+ configuration.plugins.forEach(addPlugin);
+ }
+
+ addJimpMethods(jimpConfig.class, jimpInstance);
+ addConstants(jimpConfig.constants, jimpInstance);
+
+ return Jimp;
+}
diff --git a/node_modules/@jimp/custom/types/index.d.ts b/node_modules/@jimp/custom/types/index.d.ts
new file mode 100644
index 00000000..4bdca8d0
--- /dev/null
+++ b/node_modules/@jimp/custom/types/index.d.ts
@@ -0,0 +1,40 @@
+// TypeScript Version: 3.1
+// See the `jimp` package index.d.ts for why the version is not 2.8
+import {
+ FunctionRet,
+ Jimp,
+ JimpPlugin,
+ JimpType,
+ GetIntersectionFromPlugins,
+ GetIntersectionFromPluginsStatics,
+ JimpConstructors,
+} from "@jimp/core";
+
+type JimpInstance<
+ TypesFuncArr extends FunctionRet | undefined,
+ PluginFuncArr extends FunctionRet | undefined,
+ J extends JimpConstructors
+> = J &
+ GetIntersectionFromPluginsStatics<
+ Exclude
+ > & {
+ prototype: JimpType &
+ GetIntersectionFromPlugins<
+ Exclude
+ >;
+ };
+
+declare function configure<
+ TypesFuncArr extends FunctionRet | undefined = undefined,
+ PluginFuncArr extends FunctionRet | undefined = undefined,
+ J extends JimpConstructors = JimpConstructors
+>(
+ configuration: {
+ types?: TypesFuncArr;
+ plugins?: PluginFuncArr;
+ },
+ jimpInstance?: J
+ // Since JimpInstance is required, we want to use the default `Jimp` type
+): JimpInstance;
+
+export default configure;
diff --git a/node_modules/@jimp/custom/types/test.ts b/node_modules/@jimp/custom/types/test.ts
new file mode 100644
index 00000000..e0f77bb2
--- /dev/null
+++ b/node_modules/@jimp/custom/types/test.ts
@@ -0,0 +1,401 @@
+import configure from "@jimp/custom";
+import gif from "@jimp/gif";
+import png from "@jimp/png";
+import displace from "@jimp/plugin-displace";
+import resize from "@jimp/plugin-resize";
+import scale from "@jimp/plugin-scale";
+import types from "@jimp/types";
+import plugins from "@jimp/plugins";
+import * as Jimp from "jimp";
+
+// configure should return a valid Jimp type with addons
+const CustomJimp = configure({
+ types: [gif, png],
+ plugins: [displace, resize],
+});
+
+test("should function the same as the `jimp` types", () => {
+ const FullCustomJimp = configure({
+ types: [types],
+ plugins: [plugins],
+ });
+
+ const jimpInst = new FullCustomJimp("test");
+
+ // Main Jimp export should already have all of these already applied
+ // $ExpectError
+ jimpInst.read("Test");
+ jimpInst.displace(jimpInst, 2);
+ jimpInst.resize(40, 40);
+ jimpInst.displace(jimpInst, 2);
+ jimpInst.shadow((err, val, coords) => {});
+ jimpInst.fishEye({ r: 12 });
+ jimpInst.circle({ radius: 12, x: 12, y: 12 });
+ // $ExpectError
+ jimpInst.PNG_FILTER_NONE;
+
+ // $ExpectError
+ jimpInst.test;
+
+ // $ExpectError
+ jimpInst.func();
+
+ // Main Jimp export should already have all of these already applied
+ FullCustomJimp.read("Test");
+
+ // $ExpectType 0
+ FullCustomJimp.PNG_FILTER_NONE;
+
+ // $ExpectError
+ FullCustomJimp.test;
+
+ // $ExpectError
+ FullCustomJimp.func();
+
+ test("can clone properly", async () => {
+ const baseImage = await FullCustomJimp.read("filename");
+ const cloneBaseImage = baseImage.clone();
+
+ // $ExpectType number
+ cloneBaseImage._deflateLevel;
+
+ test("can handle `this` returns on the core type properly", () => {
+ // $ExpectType number
+ cloneBaseImage.posterize(3)._quality;
+ });
+
+ test("can handle `this` returns properly", () => {
+ cloneBaseImage
+ .resize(1, 1)
+ .crop(0, 0, 0, 0)
+ .mask(cloneBaseImage, 2, 2)
+ .print("a" as any, 2, 2, "a" as any)
+ .resize(1, 1)
+ .quality(1)
+ .deflateLevel(2)._filterType;
+ });
+
+ test("can handle imageCallbacks `this` properly", () => {
+ cloneBaseImage.rgba(false, (_, jimpCBIn) => {
+ // $ExpectError
+ jimpCBIn.read("Test");
+ jimpCBIn.displace(jimpInst, 2);
+ jimpCBIn.resize(40, 40);
+ // $ExpectType number
+ jimpCBIn._filterType;
+
+ // $ExpectError
+ jimpCBIn.test;
+
+ // $ExpectError
+ jimpCBIn.func();
+ });
+ });
+ });
+
+ test("Can handle callback with constructor", () => {
+ const myBmpBuffer: Buffer = {} as any;
+
+ Jimp.read(myBmpBuffer, (err, cbJimpInst) => {
+ // $ExpectError
+ cbJimpInst.read("Test");
+ cbJimpInst.displace(jimpInst, 2);
+ cbJimpInst.resize(40, 40);
+ // $ExpectType number
+ cbJimpInst._filterType;
+
+ // $ExpectError
+ cbJimpInst.test;
+
+ // $ExpectError
+ cbJimpInst.func();
+ });
+ });
+});
+
+test("can handle custom jimp", () => {
+ // Constants from types should be applied
+ // $ExpectType 0
+ CustomJimp.PNG_FILTER_NONE;
+
+ // Core functions should still work from Jimp
+ CustomJimp.read("Test");
+
+ // Constants should not(?) be applied from ill-formed plugins
+ // $ExpectError
+ CustomJimp.displace(CustomJimp, 2);
+
+ // Methods should be applied from well-formed plugins only to the instance
+ // $ExpectError
+ CustomJimp.resize(40, 40);
+
+ // Constants should be applied from well-formed plugins
+ CustomJimp.RESIZE_NEAREST_NEIGHBOR;
+
+ // $ExpectError
+ CustomJimp.test;
+
+ // $ExpectError
+ CustomJimp.func();
+
+ const Jiimp = new CustomJimp("test");
+ // Methods from types should be applied
+ Jiimp.deflateLevel(4);
+ // Constants from types should be applied to the static only
+ // $ExpectError
+ Jiimp.PNG_FILTER_NONE;
+
+ // Core functions should still work from Jimp
+ Jiimp.getPixelColor(1, 1);
+
+ // Constants should be applied from ill-formed plugins
+ Jiimp.displace(Jiimp, 2);
+
+ // Methods should be applied from well-formed plugins
+ Jiimp.resize(40, 40);
+
+ // Constants should not be applied to the object
+ // $ExpectError
+ Jiimp.RESIZE_NEAREST_NEIGHBOR;
+
+ // $ExpectError
+ Jiimp.test;
+
+ // $ExpectError
+ Jiimp.func();
+});
+
+test("can compose", () => {
+ const OtherCustomJimp = configure(
+ {
+ plugins: [scale],
+ },
+ CustomJimp
+ );
+ // Constants from types should be applied
+ // $ExpectType 0
+ OtherCustomJimp.PNG_FILTER_NONE;
+
+ // Core functions should still work from Jimp
+ OtherCustomJimp.read("Test");
+
+ // Constants should not be applied to the static instance from ill-formed plugins
+ // $ExpectError
+ OtherCustomJimp.displace(OtherCustomJimp, 2);
+
+ // Methods should not be applied to the static instance from well-formed plugins
+ // $ExpectError
+ OtherCustomJimp.resize(40, 40);
+
+ // Constants should be applied from well-formed plugins
+ OtherCustomJimp.RESIZE_NEAREST_NEIGHBOR;
+
+ // $ExpectError
+ OtherCustomJimp.test;
+
+ // $ExpectError
+ OtherCustomJimp.func();
+
+ const Jiimp = new OtherCustomJimp("test");
+ // Methods from types should be applied
+ Jiimp.deflateLevel(4);
+ // Constants from types should not be applied to objects
+ // $ExpectError
+ Jiimp.PNG_FILTER_NONE;
+
+ // Methods from new plugins should be applied
+ Jiimp.scale(3);
+
+ // Methods from types should be applied
+ Jiimp.filterType(4);
+
+ // Core functions should still work from Jimp
+ Jiimp.getPixelColor(1, 1);
+
+ // Constants should be applied from ill-formed plugins
+ Jiimp.displace(Jiimp, 2);
+
+ // Methods should be applied from well-formed plugins
+ Jiimp.resize(40, 40);
+
+ // Constants should not be applied from well-formed plugins to objects
+ // $ExpectError
+ Jiimp.RESIZE_NEAREST_NEIGHBOR;
+
+ // $ExpectError
+ Jiimp.test;
+
+ // $ExpectError
+ Jiimp.func();
+});
+
+test("can handle only plugins", () => {
+ const PluginsJimp = configure({
+ plugins: [plugins],
+ });
+
+ // Core functions should still work from Jimp
+ PluginsJimp.read("Test");
+
+ // Constants should not be applied from ill-formed plugins
+ // $ExpectError
+ PluginsJimp.displace(PluginsJimp, 2);
+
+ // Methods should be not be applied to from well-formed plugins to the top level
+ // $ExpectError
+ PluginsJimp.resize(40, 40);
+
+ // Constants should be applied from well-formed plugins
+ // $ExpectType "nearestNeighbor"
+ PluginsJimp.RESIZE_NEAREST_NEIGHBOR;
+
+ // $ExpectError
+ PluginsJimp.test;
+
+ // $ExpectError
+ PluginsJimp.func();
+
+ const Jiimp = new PluginsJimp("test");
+
+ // Core functions should still work from Jimp
+ Jiimp.getPixelColor(1, 1);
+
+ // Constants should be applied from ill-formed plugins
+ Jiimp.displace(Jiimp, 2);
+
+ // Methods should be applied from well-formed plugins
+ Jiimp.resize(40, 40);
+
+ // Constants should be not applied to objects from well-formed plugins
+ // $ExpectError
+ Jiimp.RESIZE_NEAREST_NEIGHBOR;
+
+ // $ExpectError
+ Jiimp.test;
+
+ // $ExpectError
+ Jiimp.func();
+});
+
+test("can handle only all types", () => {
+ const TypesJimp = configure({
+ types: [types],
+ });
+
+ // Methods from types should not be applied
+ // $ExpectError
+ TypesJimp.filterType(4);
+ // Constants from types should be applied
+ // $ExpectType 0
+ TypesJimp.PNG_FILTER_NONE;
+
+ // $ExpectError
+ TypesJimp.test;
+
+ // $ExpectError
+ TypesJimp.func();
+
+ const Jiimp = new TypesJimp("test");
+ // Methods from types should be applied
+ Jiimp.filterType(4);
+ // Constants from types should be not applied to objects
+ // $ExpectError
+ Jiimp.PNG_FILTER_NONE;
+
+ // $ExpectError
+ Jiimp.test;
+
+ // $ExpectError
+ Jiimp.func();
+});
+
+test("can handle only one type", () => {
+ const PngJimp = configure({
+ types: [png],
+ });
+
+ // Constants from other types should be not applied
+ // $ExpectError
+ PngJimp.MIME_TIFF;
+
+ // Constants from types should be applied
+ // $ExpectType 0
+ PngJimp.PNG_FILTER_NONE;
+
+ // $ExpectError
+ PngJimp.test;
+
+ // $ExpectError
+ PngJimp.func();
+
+ const Jiimp = new PngJimp("test");
+ // Constants from other types should be not applied
+ // $ExpectError
+ Jiimp.MIME_TIFF;
+
+ // Constants from types should not be applied to objects
+ // $ExpectError
+ Jiimp.PNG_FILTER_NONE;
+
+ // $ExpectError
+ Jiimp.test;
+
+ // $ExpectError
+ Jiimp.func();
+});
+
+test("can handle only one plugin", () => {
+ const ResizeJimp = configure({
+ plugins: [resize],
+ });
+
+ // Constants from other plugins should be not applied
+ // $ExpectError
+ ResizeJimp.FONT_SANS_8_BLACK;
+
+ // Constants from plugin should be applied
+ // $ExpectType "nearestNeighbor"
+ ResizeJimp.RESIZE_NEAREST_NEIGHBOR;
+
+ // $ExpectError
+ ResizeJimp.resize(2, 2);
+
+ // $ExpectError
+ ResizeJimp.test;
+
+ // $ExpectError
+ ResizeJimp.func();
+
+ const Jiimp: InstanceType = new ResizeJimp("test");
+ // Constants from other plugins should be not applied
+ // $ExpectError
+ Jiimp.FONT_SANS_8_BLACK;
+
+ // Constants from plugin should not be applied to the object
+ // $ExpectError
+ Jiimp.RESIZE_NEAREST_NEIGHBOR;
+
+ Jiimp.resize(2, 2);
+
+ // $ExpectError
+ Jiimp.test;
+
+ // $ExpectError
+ Jiimp.func();
+});
+
+test("Can handle appendConstructorOption", () => {
+ const AppendJimp = configure({});
+
+ AppendJimp.appendConstructorOption(
+ "Name of Option",
+ (args) => args.hasSomeCustomThing,
+ function (resolve, reject, args) {
+ // $ExpectError
+ this.bitmap = 3;
+ // $ExpectError
+ AppendJimp.resize(2, 2);
+ resolve();
+ }
+ );
+});
diff --git a/project starter code/node_modules/@jimp/custom/types/tsconfig.json b/node_modules/@jimp/custom/types/tsconfig.json
similarity index 100%
rename from project starter code/node_modules/@jimp/custom/types/tsconfig.json
rename to node_modules/@jimp/custom/types/tsconfig.json
diff --git a/node_modules/@jimp/gif/CHANGELOG.md b/node_modules/@jimp/gif/CHANGELOG.md
new file mode 100644
index 00000000..6a9f1c91
--- /dev/null
+++ b/node_modules/@jimp/gif/CHANGELOG.md
@@ -0,0 +1,48 @@
+# v0.16.3 (Sat Feb 04 2023)
+
+#### ⚠️ Pushed to `master`
+
+- upgrade prettier ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 1
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+---
+
+# v0.13.0 (Fri Jun 05 2020)
+
+#### 🚀 Enhancement
+
+- Add single frame encoder for type-gif [#899](https://github.com/oliver-moran/jimp/pull/899) ([@jeffbseeking](https://github.com/jeffbseeking) [@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 2
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+- Jeff Bonnes ([@jeffbseeking](https://github.com/jeffbseeking))
+
+---
+
+# v0.11.0 (Fri May 15 2020)
+
+#### 🚀 Enhancement
+
+- Removed Core-JS as a dependency. [#882](https://github.com/oliver-moran/jimp/pull/882) ([@EricRabil](https://github.com/EricRabil))
+
+#### Authors: 1
+
+- Eric Rabil ([@EricRabil](https://github.com/EricRabil))
+
+---
+
+# v0.9.3 (Tue Nov 26 2019)
+
+#### 🐛 Bug Fix
+
+- `@jimp/cli`, `@jimp/core`, `@jimp/custom`, `jimp`, `@jimp/plugin-blit`, `@jimp/plugin-blur`, `@jimp/plugin-circle`, `@jimp/plugin-color`, `@jimp/plugin-contain`, `@jimp/plugin-cover`, `@jimp/plugin-crop`, `@jimp/plugin-displace`, `@jimp/plugin-dither`, `@jimp/plugin-fisheye`, `@jimp/plugin-flip`, `@jimp/plugin-gaussian`, `@jimp/plugin-invert`, `@jimp/plugin-mask`, `@jimp/plugin-normalize`, `@jimp/plugin-print`, `@jimp/plugin-resize`, `@jimp/plugin-rotate`, `@jimp/plugin-scale`, `@jimp/plugin-shadow`, `@jimp/plugin-threshold`, `@jimp/plugins`, `@jimp/test-utils`, `@jimp/bmp`, `@jimp/gif`, `@jimp/jpeg`, `@jimp/png`, `@jimp/tiff`, `@jimp/types`, `@jimp/utils`
+ - Fix regeneratorRuntime errors [#815](https://github.com/oliver-moran/jimp/pull/815) ([@crutchcorn](https://github.com/crutchcorn) [@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 2
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+- Corbin Crutchley ([@crutchcorn](https://github.com/crutchcorn))
diff --git a/project starter code/node_modules/@jimp/gif/LICENSE b/node_modules/@jimp/gif/LICENSE
similarity index 100%
rename from project starter code/node_modules/@jimp/gif/LICENSE
rename to node_modules/@jimp/gif/LICENSE
diff --git a/project starter code/node_modules/@jimp/gif/README.md b/node_modules/@jimp/gif/README.md
similarity index 100%
rename from project starter code/node_modules/@jimp/gif/README.md
rename to node_modules/@jimp/gif/README.md
diff --git a/node_modules/@jimp/gif/dist/index.js b/node_modules/@jimp/gif/dist/index.js
new file mode 100644
index 00000000..5633a04f
--- /dev/null
+++ b/node_modules/@jimp/gif/dist/index.js
@@ -0,0 +1,50 @@
+"use strict";
+
+var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports["default"] = void 0;
+
+var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
+
+var _omggif = _interopRequireDefault(require("omggif"));
+
+var _gifwrap = require("gifwrap");
+
+var MIME_TYPE = "image/gif";
+
+var _default = function _default() {
+ return {
+ mime: (0, _defineProperty2["default"])({}, MIME_TYPE, ["gif"]),
+ constants: {
+ MIME_GIF: MIME_TYPE
+ },
+ decoders: (0, _defineProperty2["default"])({}, MIME_TYPE, function (data) {
+ var gifObj = new _omggif["default"].GifReader(data);
+ var gifData = Buffer.alloc(gifObj.width * gifObj.height * 4);
+ gifObj.decodeAndBlitFrameRGBA(0, gifData);
+ return {
+ data: gifData,
+ width: gifObj.width,
+ height: gifObj.height
+ };
+ }),
+ encoders: (0, _defineProperty2["default"])({}, MIME_TYPE, function (data) {
+ var bitmap = new _gifwrap.BitmapImage(data.bitmap);
+
+ _gifwrap.GifUtil.quantizeDekker(bitmap, 256);
+
+ var newFrame = new _gifwrap.GifFrame(bitmap);
+ var gifCodec = new _gifwrap.GifCodec();
+ return gifCodec.encodeGif([newFrame], {}).then(function (newGif) {
+ return newGif.buffer;
+ });
+ })
+ };
+};
+
+exports["default"] = _default;
+module.exports = exports.default;
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@jimp/gif/dist/index.js.map b/node_modules/@jimp/gif/dist/index.js.map
new file mode 100644
index 00000000..55d22e17
--- /dev/null
+++ b/node_modules/@jimp/gif/dist/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/index.js"],"names":["MIME_TYPE","mime","constants","MIME_GIF","decoders","data","gifObj","GIF","GifReader","gifData","Buffer","alloc","width","height","decodeAndBlitFrameRGBA","encoders","bitmap","BitmapImage","GifUtil","quantizeDekker","newFrame","GifFrame","gifCodec","GifCodec","encodeGif","then","newGif","buffer"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAEA,IAAMA,SAAS,GAAG,WAAlB;;eAEe;AAAA,SAAO;AACpBC,IAAAA,IAAI,uCAAKD,SAAL,EAAiB,CAAC,KAAD,CAAjB,CADgB;AAGpBE,IAAAA,SAAS,EAAE;AACTC,MAAAA,QAAQ,EAAEH;AADD,KAHS;AAOpBI,IAAAA,QAAQ,uCACLJ,SADK,EACO,UAACK,IAAD,EAAU;AACrB,UAAMC,MAAM,GAAG,IAAIC,mBAAIC,SAAR,CAAkBH,IAAlB,CAAf;AACA,UAAMI,OAAO,GAAGC,MAAM,CAACC,KAAP,CAAaL,MAAM,CAACM,KAAP,GAAeN,MAAM,CAACO,MAAtB,GAA+B,CAA5C,CAAhB;AAEAP,MAAAA,MAAM,CAACQ,sBAAP,CAA8B,CAA9B,EAAiCL,OAAjC;AAEA,aAAO;AACLJ,QAAAA,IAAI,EAAEI,OADD;AAELG,QAAAA,KAAK,EAAEN,MAAM,CAACM,KAFT;AAGLC,QAAAA,MAAM,EAAEP,MAAM,CAACO;AAHV,OAAP;AAKD,KAZK,CAPY;AAsBpBE,IAAAA,QAAQ,uCACLf,SADK,EACO,UAACK,IAAD,EAAU;AACrB,UAAMW,MAAM,GAAG,IAAIC,oBAAJ,CAAgBZ,IAAI,CAACW,MAArB,CAAf;;AACAE,uBAAQC,cAAR,CAAuBH,MAAvB,EAA+B,GAA/B;;AACA,UAAMI,QAAQ,GAAG,IAAIC,iBAAJ,CAAaL,MAAb,CAAjB;AACA,UAAMM,QAAQ,GAAG,IAAIC,iBAAJ,EAAjB;AACA,aAAOD,QAAQ,CAACE,SAAT,CAAmB,CAACJ,QAAD,CAAnB,EAA+B,EAA/B,EAAmCK,IAAnC,CAAwC,UAACC,MAAD,EAAY;AACzD,eAAOA,MAAM,CAACC,MAAd;AACD,OAFM,CAAP;AAGD,KATK;AAtBY,GAAP;AAAA,C","sourcesContent":["import GIF from \"omggif\";\nimport { GifUtil, GifFrame, BitmapImage, GifCodec } from \"gifwrap\";\n\nconst MIME_TYPE = \"image/gif\";\n\nexport default () => ({\n mime: { [MIME_TYPE]: [\"gif\"] },\n\n constants: {\n MIME_GIF: MIME_TYPE,\n },\n\n decoders: {\n [MIME_TYPE]: (data) => {\n const gifObj = new GIF.GifReader(data);\n const gifData = Buffer.alloc(gifObj.width * gifObj.height * 4);\n\n gifObj.decodeAndBlitFrameRGBA(0, gifData);\n\n return {\n data: gifData,\n width: gifObj.width,\n height: gifObj.height,\n };\n },\n },\n\n encoders: {\n [MIME_TYPE]: (data) => {\n const bitmap = new BitmapImage(data.bitmap);\n GifUtil.quantizeDekker(bitmap, 256);\n const newFrame = new GifFrame(bitmap);\n const gifCodec = new GifCodec();\n return gifCodec.encodeGif([newFrame], {}).then((newGif) => {\n return newGif.buffer;\n });\n },\n },\n});\n"],"file":"index.js"}
\ No newline at end of file
diff --git a/node_modules/@jimp/gif/index.d.ts b/node_modules/@jimp/gif/index.d.ts
new file mode 100644
index 00000000..d1b1c679
--- /dev/null
+++ b/node_modules/@jimp/gif/index.d.ts
@@ -0,0 +1,17 @@
+import { DecoderFn } from "@jimp/core";
+
+interface Gif {
+ mime: {
+ "image/gif": string[];
+ };
+
+ constants: {
+ MIME_GIF: "image/gif";
+ };
+
+ decoders: {
+ "image/gif": DecoderFn;
+ };
+}
+
+export default function (): Gif;
diff --git a/node_modules/@jimp/gif/package.json b/node_modules/@jimp/gif/package.json
new file mode 100644
index 00000000..023efdd8
--- /dev/null
+++ b/node_modules/@jimp/gif/package.json
@@ -0,0 +1,32 @@
+{
+ "name": "@jimp/gif",
+ "version": "0.16.13",
+ "description": "Default Jimp gif encoder/decoder.",
+ "main": "dist/index.js",
+ "module": "es/index.js",
+ "types": "index.d.ts",
+ "scripts": {
+ "build": "npm run build:node:production && npm run build:module",
+ "build:watch": "npm run build:node:debug -- -- --watch --verbose",
+ "build:debug": "npm run build:node:debug",
+ "build:module": "cross-env BABEL_ENV=module babel src -d es --source-maps --config-file ../../babel.config.js",
+ "build:node": "babel src -d dist --source-maps --config-file ../../babel.config.js",
+ "build:node:debug": "cross-env BABEL_ENV=development npm run build:node",
+ "build:node:production": "cross-env BABEL_ENV=production npm run build:node"
+ },
+ "author": "",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13",
+ "gifwrap": "^0.9.2",
+ "omggif": "^1.0.9"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "gitHead": "9eec86086634329a072901dca3a800b850548572"
+}
diff --git a/node_modules/@jimp/gif/src/index.js b/node_modules/@jimp/gif/src/index.js
new file mode 100644
index 00000000..7acf2ff9
--- /dev/null
+++ b/node_modules/@jimp/gif/src/index.js
@@ -0,0 +1,39 @@
+import GIF from "omggif";
+import { GifUtil, GifFrame, BitmapImage, GifCodec } from "gifwrap";
+
+const MIME_TYPE = "image/gif";
+
+export default () => ({
+ mime: { [MIME_TYPE]: ["gif"] },
+
+ constants: {
+ MIME_GIF: MIME_TYPE,
+ },
+
+ decoders: {
+ [MIME_TYPE]: (data) => {
+ const gifObj = new GIF.GifReader(data);
+ const gifData = Buffer.alloc(gifObj.width * gifObj.height * 4);
+
+ gifObj.decodeAndBlitFrameRGBA(0, gifData);
+
+ return {
+ data: gifData,
+ width: gifObj.width,
+ height: gifObj.height,
+ };
+ },
+ },
+
+ encoders: {
+ [MIME_TYPE]: (data) => {
+ const bitmap = new BitmapImage(data.bitmap);
+ GifUtil.quantizeDekker(bitmap, 256);
+ const newFrame = new GifFrame(bitmap);
+ const gifCodec = new GifCodec();
+ return gifCodec.encodeGif([newFrame], {}).then((newGif) => {
+ return newGif.buffer;
+ });
+ },
+ },
+});
diff --git a/node_modules/@jimp/gif/test/gif.test.js b/node_modules/@jimp/gif/test/gif.test.js
new file mode 100644
index 00000000..7b316887
--- /dev/null
+++ b/node_modules/@jimp/gif/test/gif.test.js
@@ -0,0 +1,26 @@
+import { Jimp, getTestDir } from "@jimp/test-utils";
+import configure from "@jimp/custom";
+
+import gif from "../src";
+
+const jimp = configure({ types: [gif] }, Jimp);
+
+describe("GIF", () => {
+ const imagesDir = getTestDir(__dirname) + "/images";
+
+ it("load GIF", async () => {
+ const image = await jimp.read(imagesDir + "/flower.gif");
+ image.getPixelColor(10, 10).should.be.equal(0xe5e6d9ff);
+ });
+
+ it("load animated GIF", async () => {
+ const image = await jimp.read(imagesDir + "/animated.gif");
+ image.getPixelColor(10, 10).should.be.equal(0xa1d2f1ff);
+ });
+
+ it("export GIF", async () => {
+ const jgd = await jimp.read(imagesDir + "/flower.gif");
+ const buffer = await jgd.getBufferAsync("image/gif");
+ buffer.toString().startsWith("GIF").should.be.equal(true);
+ });
+});
diff --git a/project starter code/node_modules/@jimp/gif/test/images/animated.gif b/node_modules/@jimp/gif/test/images/animated.gif
similarity index 100%
rename from project starter code/node_modules/@jimp/gif/test/images/animated.gif
rename to node_modules/@jimp/gif/test/images/animated.gif
diff --git a/project starter code/node_modules/@jimp/gif/test/images/flower.gif b/node_modules/@jimp/gif/test/images/flower.gif
similarity index 100%
rename from project starter code/node_modules/@jimp/gif/test/images/flower.gif
rename to node_modules/@jimp/gif/test/images/flower.gif
diff --git a/node_modules/@jimp/jpeg/CHANGELOG.md b/node_modules/@jimp/jpeg/CHANGELOG.md
new file mode 100644
index 00000000..e33a92ff
--- /dev/null
+++ b/node_modules/@jimp/jpeg/CHANGELOG.md
@@ -0,0 +1,84 @@
+# v0.16.3 (Sat Feb 04 2023)
+
+#### ⚠️ Pushed to `master`
+
+- upgrade prettier ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 1
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+---
+
+# v0.16.2 (Thu Sep 15 2022)
+
+#### 🐛 Bug Fix
+
+- Bump jpeg-js over 0.4.4 to avoid cve-2022-25851 [#1093](https://github.com/oliver-moran/jimp/pull/1093) ([@melhadad](https://github.com/melhadad))
+
+#### Authors: 1
+
+- Michael Elhadad ([@melhadad](https://github.com/melhadad))
+
+---
+
+# v0.16.1 (Fri Aug 28 2020)
+
+#### 🐛 Bug Fix
+
+- upgrade jpeg-js dependency [#933](https://github.com/oliver-moran/jimp/pull/933) (vincentdufrasnes@vincent-dufrasnes [@Chupsy](https://github.com/Chupsy))
+
+#### Authors: 2
+
+- Vincent Dufrasnes ([@Chupsy](https://github.com/Chupsy))
+- vincent dufrasnes (vincentdufrasnes@vincent-dufrasnes)
+
+---
+
+# v0.12.1 (Tue May 19 2020)
+
+#### 🐛 Bug Fix
+
+- update jpeg-js [#892](https://github.com/oliver-moran/jimp/pull/892) ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 1
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+---
+
+# v0.11.0 (Fri May 15 2020)
+
+#### 🚀 Enhancement
+
+- Removed Core-JS as a dependency. [#882](https://github.com/oliver-moran/jimp/pull/882) ([@EricRabil](https://github.com/EricRabil))
+
+#### Authors: 1
+
+- Eric Rabil ([@EricRabil](https://github.com/EricRabil))
+
+---
+
+# v0.10.0 (Mon Mar 30 2020)
+
+#### 🚀 Enhancement
+
+- Properly split constructor and instance types [#867](https://github.com/oliver-moran/jimp/pull/867) ([@forivall](https://github.com/forivall))
+
+#### Authors: 1
+
+- Emily Marigold Klassen ([@forivall](https://github.com/forivall))
+
+---
+
+# v0.9.3 (Tue Nov 26 2019)
+
+#### 🐛 Bug Fix
+
+- `@jimp/cli`, `@jimp/core`, `@jimp/custom`, `jimp`, `@jimp/plugin-blit`, `@jimp/plugin-blur`, `@jimp/plugin-circle`, `@jimp/plugin-color`, `@jimp/plugin-contain`, `@jimp/plugin-cover`, `@jimp/plugin-crop`, `@jimp/plugin-displace`, `@jimp/plugin-dither`, `@jimp/plugin-fisheye`, `@jimp/plugin-flip`, `@jimp/plugin-gaussian`, `@jimp/plugin-invert`, `@jimp/plugin-mask`, `@jimp/plugin-normalize`, `@jimp/plugin-print`, `@jimp/plugin-resize`, `@jimp/plugin-rotate`, `@jimp/plugin-scale`, `@jimp/plugin-shadow`, `@jimp/plugin-threshold`, `@jimp/plugins`, `@jimp/test-utils`, `@jimp/bmp`, `@jimp/gif`, `@jimp/jpeg`, `@jimp/png`, `@jimp/tiff`, `@jimp/types`, `@jimp/utils`
+ - Fix regeneratorRuntime errors [#815](https://github.com/oliver-moran/jimp/pull/815) ([@crutchcorn](https://github.com/crutchcorn) [@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 2
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+- Corbin Crutchley ([@crutchcorn](https://github.com/crutchcorn))
diff --git a/project starter code/node_modules/@jimp/jpeg/LICENSE b/node_modules/@jimp/jpeg/LICENSE
similarity index 100%
rename from project starter code/node_modules/@jimp/jpeg/LICENSE
rename to node_modules/@jimp/jpeg/LICENSE
diff --git a/project starter code/node_modules/@jimp/jpeg/README.md b/node_modules/@jimp/jpeg/README.md
similarity index 100%
rename from project starter code/node_modules/@jimp/jpeg/README.md
rename to node_modules/@jimp/jpeg/README.md
diff --git a/node_modules/@jimp/jpeg/dist/index.js b/node_modules/@jimp/jpeg/dist/index.js
new file mode 100644
index 00000000..835f10cd
--- /dev/null
+++ b/node_modules/@jimp/jpeg/dist/index.js
@@ -0,0 +1,61 @@
+"use strict";
+
+var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports["default"] = void 0;
+
+var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
+
+var _jpegJs = _interopRequireDefault(require("jpeg-js"));
+
+var _utils = require("@jimp/utils");
+
+var MIME_TYPE = "image/jpeg";
+
+var _default = function _default() {
+ return {
+ mime: (0, _defineProperty2["default"])({}, MIME_TYPE, ["jpeg", "jpg", "jpe"]),
+ constants: {
+ MIME_JPEG: MIME_TYPE
+ },
+ decoders: (0, _defineProperty2["default"])({}, MIME_TYPE, _jpegJs["default"].decode),
+ encoders: (0, _defineProperty2["default"])({}, MIME_TYPE, function (image) {
+ return _jpegJs["default"].encode(image.bitmap, image._quality).data;
+ }),
+ "class": {
+ // The quality to be used when saving JPEG images
+ _quality: 100,
+
+ /**
+ * Sets the quality of the image when saving as JPEG format (default is 100)
+ * @param {number} n The quality to use 0-100
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+ quality: function quality(n, cb) {
+ if (typeof n !== "number") {
+ return _utils.throwError.call(this, "n must be a number", cb);
+ }
+
+ if (n < 0 || n > 100) {
+ return _utils.throwError.call(this, "n must be a number 0 - 100", cb);
+ }
+
+ this._quality = Math.round(n);
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ }
+ }
+ };
+};
+
+exports["default"] = _default;
+module.exports = exports.default;
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@jimp/jpeg/dist/index.js.map b/node_modules/@jimp/jpeg/dist/index.js.map
new file mode 100644
index 00000000..11caf6f7
--- /dev/null
+++ b/node_modules/@jimp/jpeg/dist/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/index.js"],"names":["MIME_TYPE","mime","constants","MIME_JPEG","decoders","JPEG","decode","encoders","image","encode","bitmap","_quality","data","quality","n","cb","throwError","call","Math","round"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAEA,IAAMA,SAAS,GAAG,YAAlB;;eAEe;AAAA,SAAO;AACpBC,IAAAA,IAAI,uCAAKD,SAAL,EAAiB,CAAC,MAAD,EAAS,KAAT,EAAgB,KAAhB,CAAjB,CADgB;AAGpBE,IAAAA,SAAS,EAAE;AACTC,MAAAA,SAAS,EAAEH;AADF,KAHS;AAOpBI,IAAAA,QAAQ,uCACLJ,SADK,EACOK,mBAAKC,MADZ,CAPY;AAWpBC,IAAAA,QAAQ,uCACLP,SADK,EACO,UAACQ,KAAD;AAAA,aAAWH,mBAAKI,MAAL,CAAYD,KAAK,CAACE,MAAlB,EAA0BF,KAAK,CAACG,QAAhC,EAA0CC,IAArD;AAAA,KADP,CAXY;AAepB,aAAO;AACL;AACAD,MAAAA,QAAQ,EAAE,GAFL;;AAGL;;;;;;AAMAE,MAAAA,OATK,mBASGC,CATH,EASMC,EATN,EASU;AACb,YAAI,OAAOD,CAAP,KAAa,QAAjB,EAA2B;AACzB,iBAAOE,kBAAWC,IAAX,CAAgB,IAAhB,EAAsB,oBAAtB,EAA4CF,EAA5C,CAAP;AACD;;AAED,YAAID,CAAC,GAAG,CAAJ,IAASA,CAAC,GAAG,GAAjB,EAAsB;AACpB,iBAAOE,kBAAWC,IAAX,CAAgB,IAAhB,EAAsB,4BAAtB,EAAoDF,EAApD,CAAP;AACD;;AAED,aAAKJ,QAAL,GAAgBO,IAAI,CAACC,KAAL,CAAWL,CAAX,CAAhB;;AAEA,YAAI,0BAAcC,EAAd,CAAJ,EAAuB;AACrBA,UAAAA,EAAE,CAACE,IAAH,CAAQ,IAAR,EAAc,IAAd,EAAoB,IAApB;AACD;;AAED,eAAO,IAAP;AACD;AAzBI;AAfa,GAAP;AAAA,C","sourcesContent":["import JPEG from \"jpeg-js\";\nimport { throwError, isNodePattern } from \"@jimp/utils\";\n\nconst MIME_TYPE = \"image/jpeg\";\n\nexport default () => ({\n mime: { [MIME_TYPE]: [\"jpeg\", \"jpg\", \"jpe\"] },\n\n constants: {\n MIME_JPEG: MIME_TYPE,\n },\n\n decoders: {\n [MIME_TYPE]: JPEG.decode,\n },\n\n encoders: {\n [MIME_TYPE]: (image) => JPEG.encode(image.bitmap, image._quality).data,\n },\n\n class: {\n // The quality to be used when saving JPEG images\n _quality: 100,\n /**\n * Sets the quality of the image when saving as JPEG format (default is 100)\n * @param {number} n The quality to use 0-100\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp} this for chaining of methods\n */\n quality(n, cb) {\n if (typeof n !== \"number\") {\n return throwError.call(this, \"n must be a number\", cb);\n }\n\n if (n < 0 || n > 100) {\n return throwError.call(this, \"n must be a number 0 - 100\", cb);\n }\n\n this._quality = Math.round(n);\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n },\n },\n});\n"],"file":"index.js"}
\ No newline at end of file
diff --git a/node_modules/@jimp/jpeg/index.d.ts b/node_modules/@jimp/jpeg/index.d.ts
new file mode 100644
index 00000000..94b86ba2
--- /dev/null
+++ b/node_modules/@jimp/jpeg/index.d.ts
@@ -0,0 +1,26 @@
+import { DecoderFn, EncoderFn, ImageCallback } from "@jimp/core";
+
+interface JpegClass {
+ _quality: number;
+ quality: (n: number, cb?: ImageCallback) => this;
+}
+
+interface Jpeg {
+ mime: { "image/jpeg": string[] };
+
+ constants: {
+ MIME_JPEG: "image/jpeg";
+ };
+
+ encoders: {
+ "image/jpeg": EncoderFn;
+ };
+
+ decoders: {
+ "image/jpeg": DecoderFn;
+ };
+
+ class: JpegClass;
+}
+
+export default function (): Jpeg;
diff --git a/node_modules/@jimp/jpeg/package.json b/node_modules/@jimp/jpeg/package.json
new file mode 100644
index 00000000..6859cbdd
--- /dev/null
+++ b/node_modules/@jimp/jpeg/package.json
@@ -0,0 +1,38 @@
+{
+ "name": "@jimp/jpeg",
+ "version": "0.16.13",
+ "description": "Default Jimp jpeg encoder/decoder.",
+ "main": "dist/index.js",
+ "module": "es/index.js",
+ "types": "index.d.ts",
+ "scripts": {
+ "test": "cross-env BABEL_ENV=test mocha --require @babel/register",
+ "test:watch": "npm run test -- --reporter min --watch",
+ "test:coverage": "nyc npm run test",
+ "build": "npm run build:node:production && npm run build:module",
+ "build:watch": "npm run build:node:debug -- -- --watch --verbose",
+ "build:debug": "npm run build:node:debug",
+ "build:module": "cross-env BABEL_ENV=module babel src -d es --source-maps --config-file ../../babel.config.js",
+ "build:node": "babel src -d dist --source-maps --config-file ../../babel.config.js",
+ "build:node:debug": "cross-env BABEL_ENV=development npm run build:node",
+ "build:node:production": "cross-env BABEL_ENV=production npm run build:node"
+ },
+ "author": "",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13",
+ "jpeg-js": "^0.4.2"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ },
+ "devDependencies": {
+ "@jimp/custom": "^0.16.13",
+ "@jimp/test-utils": "^0.16.13"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "gitHead": "9eec86086634329a072901dca3a800b850548572"
+}
diff --git a/node_modules/@jimp/jpeg/src/index.js b/node_modules/@jimp/jpeg/src/index.js
new file mode 100644
index 00000000..489c8220
--- /dev/null
+++ b/node_modules/@jimp/jpeg/src/index.js
@@ -0,0 +1,48 @@
+import JPEG from "jpeg-js";
+import { throwError, isNodePattern } from "@jimp/utils";
+
+const MIME_TYPE = "image/jpeg";
+
+export default () => ({
+ mime: { [MIME_TYPE]: ["jpeg", "jpg", "jpe"] },
+
+ constants: {
+ MIME_JPEG: MIME_TYPE,
+ },
+
+ decoders: {
+ [MIME_TYPE]: JPEG.decode,
+ },
+
+ encoders: {
+ [MIME_TYPE]: (image) => JPEG.encode(image.bitmap, image._quality).data,
+ },
+
+ class: {
+ // The quality to be used when saving JPEG images
+ _quality: 100,
+ /**
+ * Sets the quality of the image when saving as JPEG format (default is 100)
+ * @param {number} n The quality to use 0-100
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+ quality(n, cb) {
+ if (typeof n !== "number") {
+ return throwError.call(this, "n must be a number", cb);
+ }
+
+ if (n < 0 || n > 100) {
+ return throwError.call(this, "n must be a number 0 - 100", cb);
+ }
+
+ this._quality = Math.round(n);
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+ },
+});
diff --git a/project starter code/node_modules/@jimp/jpeg/test/images/cops.jpg b/node_modules/@jimp/jpeg/test/images/cops.jpg
similarity index 100%
rename from project starter code/node_modules/@jimp/jpeg/test/images/cops.jpg
rename to node_modules/@jimp/jpeg/test/images/cops.jpg
diff --git a/project starter code/node_modules/@jimp/jpeg/test/images/fillbytes.jpg b/node_modules/@jimp/jpeg/test/images/fillbytes.jpg
similarity index 100%
rename from project starter code/node_modules/@jimp/jpeg/test/images/fillbytes.jpg
rename to node_modules/@jimp/jpeg/test/images/fillbytes.jpg
diff --git a/node_modules/@jimp/jpeg/test/jpeg.test.js b/node_modules/@jimp/jpeg/test/jpeg.test.js
new file mode 100644
index 00000000..6ee30b7c
--- /dev/null
+++ b/node_modules/@jimp/jpeg/test/jpeg.test.js
@@ -0,0 +1,41 @@
+import { Jimp, getTestDir } from "@jimp/test-utils";
+import configure from "@jimp/custom";
+
+import jpeg from "../src";
+
+const jimp = configure({ types: [jpeg] }, Jimp);
+
+describe("JPEG", () => {
+ const imagesDir = getTestDir(__dirname) + "/images";
+
+ it("load JPG", async () => {
+ const image = await jimp.read(imagesDir + "/cops.jpg");
+
+ image.getPixelColor(10, 10).should.be.equal(0x3f4a02ff);
+ image.getPixelColor(220, 190).should.be.equal(0x5d94b6ff);
+ image.getPixelColor(350, 130).should.be.equal(0xdf7944ff);
+ });
+
+ it("load JPG with fill bytes", async () => {
+ const image = await jimp.read(imagesDir + "/fillbytes.jpg");
+
+ image.getPixelColor(10, 10).should.be.equal(0xaeb8c3ff);
+ image.getPixelColor(220, 190).should.be.equal(0x262b21ff);
+ image.getPixelColor(350, 130).should.be.equal(0x4e5d30ff);
+ });
+
+ it("export JPG", async () => {
+ const image = await jimp.read({
+ width: 3,
+ height: 3,
+ data: [
+ 0xff0000ff, 0xff0080ff, 0xff00ffff, 0xff0080ff, 0xff00ffff, 0x8000ffff,
+ 0xff00ffff, 0x8000ffff, 0x0000ffff,
+ ],
+ });
+ image.quality(50);
+ const buffer = await image.getBufferAsync("image/jpeg");
+
+ buffer.toString().should.match(/^.{3,9}JFIF\u0000/);
+ });
+});
diff --git a/node_modules/@jimp/plugin-blit/CHANGELOG.md b/node_modules/@jimp/plugin-blit/CHANGELOG.md
new file mode 100644
index 00000000..cf26b5c3
--- /dev/null
+++ b/node_modules/@jimp/plugin-blit/CHANGELOG.md
@@ -0,0 +1,36 @@
+# v0.16.3 (Sat Feb 04 2023)
+
+#### ⚠️ Pushed to `master`
+
+- update linting ([@hipstersmoothie](https://github.com/hipstersmoothie))
+- upgrade prettier ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 1
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+---
+
+# v0.11.0 (Fri May 15 2020)
+
+#### 🚀 Enhancement
+
+- Removed Core-JS as a dependency. [#882](https://github.com/oliver-moran/jimp/pull/882) ([@EricRabil](https://github.com/EricRabil))
+
+#### Authors: 1
+
+- Eric Rabil ([@EricRabil](https://github.com/EricRabil))
+
+---
+
+# v0.9.3 (Tue Nov 26 2019)
+
+#### 🐛 Bug Fix
+
+- `@jimp/cli`, `@jimp/core`, `@jimp/custom`, `jimp`, `@jimp/plugin-blit`, `@jimp/plugin-blur`, `@jimp/plugin-circle`, `@jimp/plugin-color`, `@jimp/plugin-contain`, `@jimp/plugin-cover`, `@jimp/plugin-crop`, `@jimp/plugin-displace`, `@jimp/plugin-dither`, `@jimp/plugin-fisheye`, `@jimp/plugin-flip`, `@jimp/plugin-gaussian`, `@jimp/plugin-invert`, `@jimp/plugin-mask`, `@jimp/plugin-normalize`, `@jimp/plugin-print`, `@jimp/plugin-resize`, `@jimp/plugin-rotate`, `@jimp/plugin-scale`, `@jimp/plugin-shadow`, `@jimp/plugin-threshold`, `@jimp/plugins`, `@jimp/test-utils`, `@jimp/bmp`, `@jimp/gif`, `@jimp/jpeg`, `@jimp/png`, `@jimp/tiff`, `@jimp/types`, `@jimp/utils`
+ - Fix regeneratorRuntime errors [#815](https://github.com/oliver-moran/jimp/pull/815) ([@crutchcorn](https://github.com/crutchcorn) [@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 2
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+- Corbin Crutchley ([@crutchcorn](https://github.com/crutchcorn))
diff --git a/project starter code/node_modules/@jimp/plugin-blit/LICENSE b/node_modules/@jimp/plugin-blit/LICENSE
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-blit/LICENSE
rename to node_modules/@jimp/plugin-blit/LICENSE
diff --git a/node_modules/@jimp/plugin-blit/README.md b/node_modules/@jimp/plugin-blit/README.md
new file mode 100644
index 00000000..7ceb4815
--- /dev/null
+++ b/node_modules/@jimp/plugin-blit/README.md
@@ -0,0 +1,34 @@
+
+
+
@jimp/plugin-blit
+
Blit an image.
+
+
+> Blit - a data operation commonly used in computer graphics in which several bitmaps are combined into one using a boolean function.
+
+## Usage
+
+Blits a source image on to this image
+
+- @param {Jimp} src image to blit
+- @param {number} x the x position to blit the image
+- @param {number} y the y position to blit the image
+- @param {number} srcx (optional) the x position from which to crop the source image
+- @param {number} srcy (optional) the y position from which to crop the source image
+- @param {number} srcw (optional) the width to which to crop the source image
+- @param {number} srch (optional) the height to which to crop the source image
+- @param {function(Error, Jimp)} cb (optional) a callback for when complete
+
+```js
+import jimp from "jimp";
+
+async function main() {
+ const image = await jimp.read("test/image.png");
+ const parrot = await jimp.read("test/party-parrot.png");
+
+ image.blit(parrot, x, y);
+}
+
+main();
+```
diff --git a/node_modules/@jimp/plugin-blit/dist/index.js b/node_modules/@jimp/plugin-blit/dist/index.js
new file mode 100644
index 00000000..0e237b8a
--- /dev/null
+++ b/node_modules/@jimp/plugin-blit/dist/index.js
@@ -0,0 +1,99 @@
+"use strict";
+
+var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports["default"] = void 0;
+
+var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
+
+var _utils = require("@jimp/utils");
+
+var _default = function _default() {
+ return {
+ /**
+ * Blits a source image on to this image
+ * @param {Jimp} src the source Jimp instance
+ * @param {number} x the x position to blit the image
+ * @param {number} y the y position to blit the image
+ * @param {number} srcx (optional) the x position from which to crop the source image
+ * @param {number} srcy (optional) the y position from which to crop the source image
+ * @param {number} srcw (optional) the width to which to crop the source image
+ * @param {number} srch (optional) the height to which to crop the source image
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+ blit: function blit(src, x, y, srcx, srcy, srcw, srch, cb) {
+ if (!(src instanceof this.constructor)) {
+ return _utils.throwError.call(this, "The source must be a Jimp image", cb);
+ }
+
+ if (typeof x !== "number" || typeof y !== "number") {
+ return _utils.throwError.call(this, "x and y must be numbers", cb);
+ }
+
+ if (typeof srcx === "function") {
+ cb = srcx;
+ srcx = 0;
+ srcy = 0;
+ srcw = src.bitmap.width;
+ srch = src.bitmap.height;
+ } else if ((0, _typeof2["default"])(srcx) === (0, _typeof2["default"])(srcy) && (0, _typeof2["default"])(srcy) === (0, _typeof2["default"])(srcw) && (0, _typeof2["default"])(srcw) === (0, _typeof2["default"])(srch)) {
+ srcx = srcx || 0;
+ srcy = srcy || 0;
+ srcw = srcw || src.bitmap.width;
+ srch = srch || src.bitmap.height;
+ } else {
+ return _utils.throwError.call(this, "srcx, srcy, srcw, srch must be numbers", cb);
+ } // round input
+
+
+ x = Math.round(x);
+ y = Math.round(y); // round input
+
+ srcx = Math.round(srcx);
+ srcy = Math.round(srcy);
+ srcw = Math.round(srcw);
+ srch = Math.round(srch);
+ var maxWidth = this.bitmap.width;
+ var maxHeight = this.bitmap.height;
+ var baseImage = this;
+ src.scanQuiet(srcx, srcy, srcw, srch, function (sx, sy, idx) {
+ var xOffset = x + sx - srcx;
+ var yOffset = y + sy - srcy;
+
+ if (xOffset >= 0 && yOffset >= 0 && maxWidth - xOffset > 0 && maxHeight - yOffset > 0) {
+ var dstIdx = baseImage.getPixelIndex(xOffset, yOffset);
+ var _src = {
+ r: this.bitmap.data[idx],
+ g: this.bitmap.data[idx + 1],
+ b: this.bitmap.data[idx + 2],
+ a: this.bitmap.data[idx + 3]
+ };
+ var dst = {
+ r: baseImage.bitmap.data[dstIdx],
+ g: baseImage.bitmap.data[dstIdx + 1],
+ b: baseImage.bitmap.data[dstIdx + 2],
+ a: baseImage.bitmap.data[dstIdx + 3]
+ };
+ baseImage.bitmap.data[dstIdx] = (_src.a * (_src.r - dst.r) - dst.r + 255 >> 8) + dst.r;
+ baseImage.bitmap.data[dstIdx + 1] = (_src.a * (_src.g - dst.g) - dst.g + 255 >> 8) + dst.g;
+ baseImage.bitmap.data[dstIdx + 2] = (_src.a * (_src.b - dst.b) - dst.b + 255 >> 8) + dst.b;
+ baseImage.bitmap.data[dstIdx + 3] = this.constructor.limit255(dst.a + _src.a);
+ }
+ });
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ }
+ };
+};
+
+exports["default"] = _default;
+module.exports = exports.default;
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-blit/dist/index.js.map b/node_modules/@jimp/plugin-blit/dist/index.js.map
new file mode 100644
index 00000000..835bdb8e
--- /dev/null
+++ b/node_modules/@jimp/plugin-blit/dist/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/index.js"],"names":["blit","src","x","y","srcx","srcy","srcw","srch","cb","constructor","throwError","call","bitmap","width","height","Math","round","maxWidth","maxHeight","baseImage","scanQuiet","sx","sy","idx","xOffset","yOffset","dstIdx","getPixelIndex","r","data","g","b","a","dst","limit255"],"mappings":"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","sourcesContent":["import { throwError, isNodePattern } from \"@jimp/utils\";\n\nexport default () => ({\n /**\n * Blits a source image on to this image\n * @param {Jimp} src the source Jimp instance\n * @param {number} x the x position to blit the image\n * @param {number} y the y position to blit the image\n * @param {number} srcx (optional) the x position from which to crop the source image\n * @param {number} srcy (optional) the y position from which to crop the source image\n * @param {number} srcw (optional) the width to which to crop the source image\n * @param {number} srch (optional) the height to which to crop the source image\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp} this for chaining of methods\n */\n blit(src, x, y, srcx, srcy, srcw, srch, cb) {\n if (!(src instanceof this.constructor)) {\n return throwError.call(this, \"The source must be a Jimp image\", cb);\n }\n\n if (typeof x !== \"number\" || typeof y !== \"number\") {\n return throwError.call(this, \"x and y must be numbers\", cb);\n }\n\n if (typeof srcx === \"function\") {\n cb = srcx;\n srcx = 0;\n srcy = 0;\n srcw = src.bitmap.width;\n srch = src.bitmap.height;\n } else if (\n typeof srcx === typeof srcy &&\n typeof srcy === typeof srcw &&\n typeof srcw === typeof srch\n ) {\n srcx = srcx || 0;\n srcy = srcy || 0;\n srcw = srcw || src.bitmap.width;\n srch = srch || src.bitmap.height;\n } else {\n return throwError.call(\n this,\n \"srcx, srcy, srcw, srch must be numbers\",\n cb\n );\n }\n\n // round input\n x = Math.round(x);\n y = Math.round(y);\n\n // round input\n srcx = Math.round(srcx);\n srcy = Math.round(srcy);\n srcw = Math.round(srcw);\n srch = Math.round(srch);\n\n const maxWidth = this.bitmap.width;\n const maxHeight = this.bitmap.height;\n const baseImage = this;\n\n src.scanQuiet(srcx, srcy, srcw, srch, function (sx, sy, idx) {\n const xOffset = x + sx - srcx;\n const yOffset = y + sy - srcy;\n\n if (\n xOffset >= 0 &&\n yOffset >= 0 &&\n maxWidth - xOffset > 0 &&\n maxHeight - yOffset > 0\n ) {\n const dstIdx = baseImage.getPixelIndex(xOffset, yOffset);\n const src = {\n r: this.bitmap.data[idx],\n g: this.bitmap.data[idx + 1],\n b: this.bitmap.data[idx + 2],\n a: this.bitmap.data[idx + 3],\n };\n\n const dst = {\n r: baseImage.bitmap.data[dstIdx],\n g: baseImage.bitmap.data[dstIdx + 1],\n b: baseImage.bitmap.data[dstIdx + 2],\n a: baseImage.bitmap.data[dstIdx + 3],\n };\n\n baseImage.bitmap.data[dstIdx] =\n ((src.a * (src.r - dst.r) - dst.r + 255) >> 8) + dst.r;\n baseImage.bitmap.data[dstIdx + 1] =\n ((src.a * (src.g - dst.g) - dst.g + 255) >> 8) + dst.g;\n baseImage.bitmap.data[dstIdx + 2] =\n ((src.a * (src.b - dst.b) - dst.b + 255) >> 8) + dst.b;\n baseImage.bitmap.data[dstIdx + 3] = this.constructor.limit255(\n dst.a + src.a\n );\n }\n });\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n },\n});\n"],"file":"index.js"}
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-blit/index.d.ts b/node_modules/@jimp/plugin-blit/index.d.ts
new file mode 100644
index 00000000..0caad70e
--- /dev/null
+++ b/node_modules/@jimp/plugin-blit/index.d.ts
@@ -0,0 +1,17 @@
+import { Jimp, ImageCallback } from "@jimp/core";
+
+interface Blit {
+ blit(src: Jimp, x: number, y: number, cb?: ImageCallback): this;
+ blit(
+ src: Jimp,
+ x: number,
+ y: number,
+ srcx: number,
+ srcy: number,
+ srcw: number,
+ srch: number,
+ cb?: ImageCallback
+ ): this;
+}
+
+export default function (): Blit;
diff --git a/node_modules/@jimp/plugin-blit/package.json b/node_modules/@jimp/plugin-blit/package.json
new file mode 100644
index 00000000..76a9143d
--- /dev/null
+++ b/node_modules/@jimp/plugin-blit/package.json
@@ -0,0 +1,38 @@
+{
+ "name": "@jimp/plugin-blit",
+ "version": "0.16.13",
+ "description": "Blit an image.",
+ "main": "dist/index.js",
+ "module": "es/index.js",
+ "types": "index.d.ts",
+ "scripts": {
+ "test": "cross-env BABEL_ENV=test mocha --require @babel/register",
+ "test:watch": "npm run test -- --reporter min --watch",
+ "test:coverage": "nyc npm run test",
+ "build": "npm run build:node:production && npm run build:module",
+ "build:watch": "npm run build:node:debug -- -- --watch --verbose",
+ "build:debug": "npm run build:node:debug",
+ "build:module": "cross-env BABEL_ENV=module babel src -d es --source-maps --config-file ../../babel.config.js",
+ "build:node": "babel src -d dist --source-maps --config-file ../../babel.config.js",
+ "build:node:debug": "cross-env BABEL_ENV=development npm run build:node",
+ "build:node:production": "cross-env BABEL_ENV=production npm run build:node"
+ },
+ "author": "",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13"
+ },
+ "devDependencies": {
+ "@jimp/custom": "^0.16.13",
+ "@jimp/jpeg": "^0.16.13",
+ "@jimp/test-utils": "^0.16.13"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "gitHead": "9eec86086634329a072901dca3a800b850548572"
+}
diff --git a/node_modules/@jimp/plugin-blit/src/index.js b/node_modules/@jimp/plugin-blit/src/index.js
new file mode 100644
index 00000000..133a5374
--- /dev/null
+++ b/node_modules/@jimp/plugin-blit/src/index.js
@@ -0,0 +1,105 @@
+import { throwError, isNodePattern } from "@jimp/utils";
+
+export default () => ({
+ /**
+ * Blits a source image on to this image
+ * @param {Jimp} src the source Jimp instance
+ * @param {number} x the x position to blit the image
+ * @param {number} y the y position to blit the image
+ * @param {number} srcx (optional) the x position from which to crop the source image
+ * @param {number} srcy (optional) the y position from which to crop the source image
+ * @param {number} srcw (optional) the width to which to crop the source image
+ * @param {number} srch (optional) the height to which to crop the source image
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+ blit(src, x, y, srcx, srcy, srcw, srch, cb) {
+ if (!(src instanceof this.constructor)) {
+ return throwError.call(this, "The source must be a Jimp image", cb);
+ }
+
+ if (typeof x !== "number" || typeof y !== "number") {
+ return throwError.call(this, "x and y must be numbers", cb);
+ }
+
+ if (typeof srcx === "function") {
+ cb = srcx;
+ srcx = 0;
+ srcy = 0;
+ srcw = src.bitmap.width;
+ srch = src.bitmap.height;
+ } else if (
+ typeof srcx === typeof srcy &&
+ typeof srcy === typeof srcw &&
+ typeof srcw === typeof srch
+ ) {
+ srcx = srcx || 0;
+ srcy = srcy || 0;
+ srcw = srcw || src.bitmap.width;
+ srch = srch || src.bitmap.height;
+ } else {
+ return throwError.call(
+ this,
+ "srcx, srcy, srcw, srch must be numbers",
+ cb
+ );
+ }
+
+ // round input
+ x = Math.round(x);
+ y = Math.round(y);
+
+ // round input
+ srcx = Math.round(srcx);
+ srcy = Math.round(srcy);
+ srcw = Math.round(srcw);
+ srch = Math.round(srch);
+
+ const maxWidth = this.bitmap.width;
+ const maxHeight = this.bitmap.height;
+ const baseImage = this;
+
+ src.scanQuiet(srcx, srcy, srcw, srch, function (sx, sy, idx) {
+ const xOffset = x + sx - srcx;
+ const yOffset = y + sy - srcy;
+
+ if (
+ xOffset >= 0 &&
+ yOffset >= 0 &&
+ maxWidth - xOffset > 0 &&
+ maxHeight - yOffset > 0
+ ) {
+ const dstIdx = baseImage.getPixelIndex(xOffset, yOffset);
+ const src = {
+ r: this.bitmap.data[idx],
+ g: this.bitmap.data[idx + 1],
+ b: this.bitmap.data[idx + 2],
+ a: this.bitmap.data[idx + 3],
+ };
+
+ const dst = {
+ r: baseImage.bitmap.data[dstIdx],
+ g: baseImage.bitmap.data[dstIdx + 1],
+ b: baseImage.bitmap.data[dstIdx + 2],
+ a: baseImage.bitmap.data[dstIdx + 3],
+ };
+
+ baseImage.bitmap.data[dstIdx] =
+ ((src.a * (src.r - dst.r) - dst.r + 255) >> 8) + dst.r;
+ baseImage.bitmap.data[dstIdx + 1] =
+ ((src.a * (src.g - dst.g) - dst.g + 255) >> 8) + dst.g;
+ baseImage.bitmap.data[dstIdx + 2] =
+ ((src.a * (src.b - dst.b) - dst.b + 255) >> 8) + dst.b;
+ baseImage.bitmap.data[dstIdx + 3] = this.constructor.limit255(
+ dst.a + src.a
+ );
+ }
+ });
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+});
diff --git a/node_modules/@jimp/plugin-blit/test/blit.test.js b/node_modules/@jimp/plugin-blit/test/blit.test.js
new file mode 100644
index 00000000..d4e11a1a
--- /dev/null
+++ b/node_modules/@jimp/plugin-blit/test/blit.test.js
@@ -0,0 +1,235 @@
+import { Jimp, mkJGD, getTestDir } from "@jimp/test-utils";
+import jpeg from "@jimp/jpeg";
+import configure from "@jimp/custom";
+
+import blit from "../src";
+
+const jimp = configure({ types: [jpeg], plugins: [blit] }, Jimp);
+const testDir = getTestDir(__dirname);
+
+describe("Blit over image", function () {
+ this.timeout(15000);
+ const targetJGD = mkJGD(
+ "▴▴▴▴▸▸▸▸",
+ "▴▴▴▴▸▸▸▸",
+ "▴▴▴▴▸▸▸▸",
+ "▴▴▴▴▸▸▸▸",
+ "▾▾▾▾◆◆◆◆",
+ "▾▾▾▾◆◆◆◆",
+ "▾▾▾▾◆◆◆◆",
+ "▾▾▾▾◆◆◆◆"
+ );
+ const srcJGD = mkJGD(
+ "□□□□□□",
+ "□▥▥▥▥□",
+ "□▥■■▥□",
+ "□▥■■▥□",
+ "□▥▥▥▥□",
+ "□□□□□□"
+ );
+
+ let targetImg;
+ let srcImg; // stores the Jimp instances of the JGD images above.
+
+ before((done) => {
+ const img1 = jimp.read(targetJGD);
+ const img2 = jimp.read(srcJGD);
+ Promise.all([img1, img2])
+ .then((images) => {
+ targetImg = images[0];
+ srcImg = images[1];
+ done();
+ })
+ .catch(done);
+ });
+
+ it("blit on top, with no crop", () => {
+ targetImg
+ .clone()
+ .blit(srcImg, 0, 0)
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ "□□□□□□▸▸",
+ "□▥▥▥▥□▸▸",
+ "□▥■■▥□▸▸",
+ "□▥■■▥□▸▸",
+ "□▥▥▥▥□◆◆",
+ "□□□□□□◆◆",
+ "▾▾▾▾◆◆◆◆",
+ "▾▾▾▾◆◆◆◆"
+ )
+ );
+ });
+
+ it("blit on middle, with no crop", () => {
+ targetImg
+ .clone()
+ .blit(srcImg, 1, 1)
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ "▴▴▴▴▸▸▸▸",
+ "▴□□□□□□▸",
+ "▴□▥▥▥▥□▸",
+ "▴□▥■■▥□▸",
+ "▾□▥■■▥□◆",
+ "▾□▥▥▥▥□◆",
+ "▾□□□□□□◆",
+ "▾▾▾▾◆◆◆◆"
+ )
+ );
+ });
+
+ it("blit on middle, with x,y crop", () => {
+ targetImg
+ .clone()
+ .blit(srcImg, 2, 2, 1, 1, 5, 5)
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ "▴▴▴▴▸▸▸▸",
+ "▴▴▴▴▸▸▸▸",
+ "▴▴▥▥▥▥□▸",
+ "▴▴▥■■▥□▸",
+ "▾▾▥■■▥□◆",
+ "▾▾▥▥▥▥□◆",
+ "▾▾□□□□□◆",
+ "▾▾▾▾◆◆◆◆"
+ )
+ );
+ });
+
+ it("blit on middle, with x,y,w,h crop", () => {
+ targetImg
+ .clone()
+ .blit(srcImg, 2, 2, 1, 1, 4, 4)
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ "▴▴▴▴▸▸▸▸",
+ "▴▴▴▴▸▸▸▸",
+ "▴▴▥▥▥▥▸▸",
+ "▴▴▥■■▥▸▸",
+ "▾▾▥■■▥◆◆",
+ "▾▾▥▥▥▥◆◆",
+ "▾▾▾▾◆◆◆◆",
+ "▾▾▾▾◆◆◆◆"
+ )
+ );
+ });
+
+ it("blit partially out, on top-left", () => {
+ targetImg
+ .clone()
+ .blit(srcImg, -1, -1)
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ "▥▥▥▥□▸▸▸",
+ "▥■■▥□▸▸▸",
+ "▥■■▥□▸▸▸",
+ "▥▥▥▥□▸▸▸",
+ "□□□□□◆◆◆",
+ "▾▾▾▾◆◆◆◆",
+ "▾▾▾▾◆◆◆◆",
+ "▾▾▾▾◆◆◆◆"
+ )
+ );
+ });
+
+ it("blit partially out, on bottom-right", () => {
+ targetImg
+ .clone()
+ .blit(srcImg, 3, 3)
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ "▴▴▴▴▸▸▸▸",
+ "▴▴▴▴▸▸▸▸",
+ "▴▴▴▴▸▸▸▸",
+ "▴▴▴□□□□□",
+ "▾▾▾□▥▥▥▥",
+ "▾▾▾□▥■■▥",
+ "▾▾▾□▥■■▥",
+ "▾▾▾□▥▥▥▥"
+ )
+ );
+ });
+
+ it("blit alpha", async () => {
+ const expectedImg = await Jimp.read(testDir + "/images/blit-alpha.png");
+ const dice = await Jimp.read(testDir + "/images/dice.png");
+ const image = await Jimp.read(testDir + "/images/cops.jpg");
+
+ image
+ .blit(dice, 0, 0)
+ .bitmap.data.should.be.deepEqual(expectedImg.bitmap.data);
+ });
+
+ async function createCat(catNum, len) {
+ const imgHeight = 60;
+
+ const butt = await Jimp.read(testDir + "/images/cat_butt.png");
+ const head = await Jimp.read(testDir + "/images/cat_head.png");
+ const fuzz = await Jimp.read(testDir + "/images/cat_fuzz.png");
+
+ let longCat = len;
+ longCat = longCat > 20 ? 20 : longCat;
+ longCat = longCat <= 1 ? 1 : longCat;
+
+ const cat =
+ Math.floor(catNum * (head.bitmap.height / imgHeight)) * imgHeight;
+
+ const newImage = await Jimp.create(
+ butt.bitmap.width + head.bitmap.width + fuzz.bitmap.width * longCat,
+ imgHeight,
+ 0x00000000
+ );
+
+ newImage.blit(butt, 0, 0, 0, cat, butt.bitmap.width, imgHeight);
+ for (let i = 0; i < longCat; i++) {
+ newImage.blit(
+ fuzz,
+ butt.bitmap.width + fuzz.bitmap.width * i,
+ 0,
+ 0,
+ cat,
+ fuzz.bitmap.width,
+ imgHeight
+ );
+ }
+
+ newImage.blit(
+ head,
+ butt.bitmap.width + fuzz.bitmap.width * longCat,
+ 0,
+ 0,
+ cat,
+ head.bitmap.width,
+ imgHeight
+ );
+
+ return newImage;
+ }
+
+ it("uses src params correctly", async () => {
+ const expectedSmall = await Jimp.read(
+ testDir + "/images/cat-results/small-cat.png"
+ );
+ const small = await createCat(0.3, 1);
+ small.bitmap.data.should.be.deepEqual(expectedSmall.bitmap.data);
+
+ const expectedMedium = await Jimp.read(
+ testDir + "/images/cat-results/medium-cat.png"
+ );
+ const medium = await createCat(0.6, 7);
+ medium.bitmap.data.should.be.deepEqual(expectedMedium.bitmap.data);
+
+ const expectedLarge = await Jimp.read(
+ testDir + "/images/cat-results/large-cat.png"
+ );
+ const large = await createCat(0.9, 20);
+ large.bitmap.data.should.be.deepEqual(expectedLarge.bitmap.data);
+ });
+});
diff --git a/project starter code/node_modules/@jimp/plugin-blit/test/images/blit-alpha.png b/node_modules/@jimp/plugin-blit/test/images/blit-alpha.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-blit/test/images/blit-alpha.png
rename to node_modules/@jimp/plugin-blit/test/images/blit-alpha.png
diff --git a/project starter code/node_modules/@jimp/plugin-blit/test/images/cat-results/large-cat.png b/node_modules/@jimp/plugin-blit/test/images/cat-results/large-cat.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-blit/test/images/cat-results/large-cat.png
rename to node_modules/@jimp/plugin-blit/test/images/cat-results/large-cat.png
diff --git a/project starter code/node_modules/@jimp/plugin-blit/test/images/cat-results/medium-cat.png b/node_modules/@jimp/plugin-blit/test/images/cat-results/medium-cat.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-blit/test/images/cat-results/medium-cat.png
rename to node_modules/@jimp/plugin-blit/test/images/cat-results/medium-cat.png
diff --git a/project starter code/node_modules/@jimp/plugin-blit/test/images/cat-results/small-cat.png b/node_modules/@jimp/plugin-blit/test/images/cat-results/small-cat.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-blit/test/images/cat-results/small-cat.png
rename to node_modules/@jimp/plugin-blit/test/images/cat-results/small-cat.png
diff --git a/project starter code/node_modules/@jimp/plugin-blit/test/images/cat_butt.png b/node_modules/@jimp/plugin-blit/test/images/cat_butt.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-blit/test/images/cat_butt.png
rename to node_modules/@jimp/plugin-blit/test/images/cat_butt.png
diff --git a/project starter code/node_modules/@jimp/plugin-blit/test/images/cat_fuzz.png b/node_modules/@jimp/plugin-blit/test/images/cat_fuzz.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-blit/test/images/cat_fuzz.png
rename to node_modules/@jimp/plugin-blit/test/images/cat_fuzz.png
diff --git a/project starter code/node_modules/@jimp/plugin-blit/test/images/cat_head.png b/node_modules/@jimp/plugin-blit/test/images/cat_head.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-blit/test/images/cat_head.png
rename to node_modules/@jimp/plugin-blit/test/images/cat_head.png
diff --git a/project starter code/node_modules/@jimp/plugin-blit/test/images/cops.jpg b/node_modules/@jimp/plugin-blit/test/images/cops.jpg
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-blit/test/images/cops.jpg
rename to node_modules/@jimp/plugin-blit/test/images/cops.jpg
diff --git a/project starter code/node_modules/@jimp/plugin-blit/test/images/dice.png b/node_modules/@jimp/plugin-blit/test/images/dice.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-blit/test/images/dice.png
rename to node_modules/@jimp/plugin-blit/test/images/dice.png
diff --git a/node_modules/@jimp/plugin-blur/CHANGELOG.md b/node_modules/@jimp/plugin-blur/CHANGELOG.md
new file mode 100644
index 00000000..4eb3193f
--- /dev/null
+++ b/node_modules/@jimp/plugin-blur/CHANGELOG.md
@@ -0,0 +1,35 @@
+# v0.16.3 (Sat Feb 04 2023)
+
+#### ⚠️ Pushed to `master`
+
+- upgrade prettier ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 1
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+---
+
+# v0.11.0 (Fri May 15 2020)
+
+#### 🚀 Enhancement
+
+- Removed Core-JS as a dependency. [#882](https://github.com/oliver-moran/jimp/pull/882) ([@EricRabil](https://github.com/EricRabil))
+
+#### Authors: 1
+
+- Eric Rabil ([@EricRabil](https://github.com/EricRabil))
+
+---
+
+# v0.9.3 (Tue Nov 26 2019)
+
+#### 🐛 Bug Fix
+
+- `@jimp/cli`, `@jimp/core`, `@jimp/custom`, `jimp`, `@jimp/plugin-blit`, `@jimp/plugin-blur`, `@jimp/plugin-circle`, `@jimp/plugin-color`, `@jimp/plugin-contain`, `@jimp/plugin-cover`, `@jimp/plugin-crop`, `@jimp/plugin-displace`, `@jimp/plugin-dither`, `@jimp/plugin-fisheye`, `@jimp/plugin-flip`, `@jimp/plugin-gaussian`, `@jimp/plugin-invert`, `@jimp/plugin-mask`, `@jimp/plugin-normalize`, `@jimp/plugin-print`, `@jimp/plugin-resize`, `@jimp/plugin-rotate`, `@jimp/plugin-scale`, `@jimp/plugin-shadow`, `@jimp/plugin-threshold`, `@jimp/plugins`, `@jimp/test-utils`, `@jimp/bmp`, `@jimp/gif`, `@jimp/jpeg`, `@jimp/png`, `@jimp/tiff`, `@jimp/types`, `@jimp/utils`
+ - Fix regeneratorRuntime errors [#815](https://github.com/oliver-moran/jimp/pull/815) ([@crutchcorn](https://github.com/crutchcorn) [@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 2
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+- Corbin Crutchley ([@crutchcorn](https://github.com/crutchcorn))
diff --git a/project starter code/node_modules/@jimp/plugin-blur/LICENSE b/node_modules/@jimp/plugin-blur/LICENSE
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-blur/LICENSE
rename to node_modules/@jimp/plugin-blur/LICENSE
diff --git a/node_modules/@jimp/plugin-blur/README.md b/node_modules/@jimp/plugin-blur/README.md
new file mode 100644
index 00000000..caa71583
--- /dev/null
+++ b/node_modules/@jimp/plugin-blur/README.md
@@ -0,0 +1,25 @@
+
+
+
@jimp/plugin-blur
+
Blur an image.
+
+
+A fast blur algorithm that produces similar effect to a Gaussian blur - but MUCH quicker
+
+## Usage
+
+- @param {number} r the pixel radius of the blur
+- @param {function(Error, Jimp)} cb (optional) a callback for when complete
+
+```js
+import jimp from "jimp";
+
+async function main() {
+ const image = await jimp.read("test/image.png");
+
+ image.blur(5);
+}
+
+main();
+```
diff --git a/project starter code/node_modules/@jimp/plugin-blur/dist/blur-tables.js b/node_modules/@jimp/plugin-blur/dist/blur-tables.js
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-blur/dist/blur-tables.js
rename to node_modules/@jimp/plugin-blur/dist/blur-tables.js
diff --git a/node_modules/@jimp/plugin-blur/dist/blur-tables.js.map b/node_modules/@jimp/plugin-blur/dist/blur-tables.js.map
new file mode 100644
index 00000000..a1ceeb6f
--- /dev/null
+++ b/node_modules/@jimp/plugin-blur/dist/blur-tables.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/blur-tables.js"],"names":["mulTable","shgTable"],"mappings":"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","sourcesContent":["export const mulTable = [\n 1, 57, 41, 21, 203, 34, 97, 73, 227, 91, 149, 62, 105, 45, 39, 137, 241, 107,\n 3, 173, 39, 71, 65, 238, 219, 101, 187, 87, 81, 151, 141, 133, 249, 117, 221,\n 209, 197, 187, 177, 169, 5, 153, 73, 139, 133, 127, 243, 233, 223, 107, 103,\n 99, 191, 23, 177, 171, 165, 159, 77, 149, 9, 139, 135, 131, 253, 245, 119,\n 231, 224, 109, 211, 103, 25, 195, 189, 23, 45, 175, 171, 83, 81, 79, 155, 151,\n 147, 9, 141, 137, 67, 131, 129, 251, 123, 30, 235, 115, 113, 221, 217, 53, 13,\n 51, 50, 49, 193, 189, 185, 91, 179, 175, 43, 169, 83, 163, 5, 79, 155, 19, 75,\n 147, 145, 143, 35, 69, 17, 67, 33, 65, 255, 251, 247, 243, 239, 59, 29, 229,\n 113, 111, 219, 27, 213, 105, 207, 51, 201, 199, 49, 193, 191, 47, 93, 183,\n 181, 179, 11, 87, 43, 85, 167, 165, 163, 161, 159, 157, 155, 77, 19, 75, 37,\n 73, 145, 143, 141, 35, 138, 137, 135, 67, 33, 131, 129, 255, 63, 250, 247, 61,\n 121, 239, 237, 117, 29, 229, 227, 225, 111, 55, 109, 216, 213, 211, 209, 207,\n 205, 203, 201, 199, 197, 195, 193, 48, 190, 47, 93, 185, 183, 181, 179, 178,\n 176, 175, 173, 171, 85, 21, 167, 165, 41, 163, 161, 5, 79, 157, 78, 154, 153,\n 19, 75, 149, 74, 147, 73, 144, 143, 71, 141, 140, 139, 137, 17, 135, 134, 133,\n 66, 131, 65, 129, 1,\n];\n\nexport const shgTable = [\n 0, 9, 10, 10, 14, 12, 14, 14, 16, 15, 16, 15, 16, 15, 15, 17, 18, 17, 12, 18,\n 16, 17, 17, 19, 19, 18, 19, 18, 18, 19, 19, 19, 20, 19, 20, 20, 20, 20, 20,\n 20, 15, 20, 19, 20, 20, 20, 21, 21, 21, 20, 20, 20, 21, 18, 21, 21, 21, 21,\n 20, 21, 17, 21, 21, 21, 22, 22, 21, 22, 22, 21, 22, 21, 19, 22, 22, 19, 20,\n 22, 22, 21, 21, 21, 22, 22, 22, 18, 22, 22, 21, 22, 22, 23, 22, 20, 23, 22,\n 22, 23, 23, 21, 19, 21, 21, 21, 23, 23, 23, 22, 23, 23, 21, 23, 22, 23, 18,\n 22, 23, 20, 22, 23, 23, 23, 21, 22, 20, 22, 21, 22, 24, 24, 24, 24, 24, 22,\n 21, 24, 23, 23, 24, 21, 24, 23, 24, 22, 24, 24, 22, 24, 24, 22, 23, 24, 24,\n 24, 20, 23, 22, 23, 24, 24, 24, 24, 24, 24, 24, 23, 21, 23, 22, 23, 24, 24,\n 24, 22, 24, 24, 24, 23, 22, 24, 24, 25, 23, 25, 25, 23, 24, 25, 25, 24, 22,\n 25, 25, 25, 24, 23, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 23,\n 25, 23, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 24, 22, 25, 25, 23, 25, 25,\n 20, 24, 25, 24, 25, 25, 22, 24, 25, 24, 25, 24, 25, 25, 24, 25, 25, 25, 25,\n 22, 25, 25, 25, 24, 25, 24, 25, 18,\n];\n"],"file":"blur-tables.js"}
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-blur/dist/index.js b/node_modules/@jimp/plugin-blur/dist/index.js
new file mode 100644
index 00000000..38f8bb5a
--- /dev/null
+++ b/node_modules/@jimp/plugin-blur/dist/index.js
@@ -0,0 +1,182 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports["default"] = void 0;
+
+var _utils = require("@jimp/utils");
+
+var _blurTables = require("./blur-tables");
+
+/*
+ Superfast Blur (0.5)
+ http://www.quasimondo.com/BoxBlurForCanvas/FastBlur.js
+
+ Copyright (c) 2011 Mario Klingemann
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the "Software"), to deal in the Software without
+ restriction, including without limitation the rights to use,
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following
+ conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+*/
+var _default = function _default() {
+ return {
+ /**
+ * A fast blur algorithm that produces similar effect to a Gaussian blur - but MUCH quicker
+ * @param {number} r the pixel radius of the blur
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+ blur: function blur(r, cb) {
+ if (typeof r !== "number") return _utils.throwError.call(this, "r must be a number", cb);
+ if (r < 1) return _utils.throwError.call(this, "r must be greater than 0", cb);
+ var rsum;
+ var gsum;
+ var bsum;
+ var asum;
+ var x;
+ var y;
+ var i;
+ var p;
+ var p1;
+ var p2;
+ var yp;
+ var yi;
+ var yw;
+ var pa;
+ var wm = this.bitmap.width - 1;
+ var hm = this.bitmap.height - 1; // const wh = this.bitmap.width * this.bitmap.height;
+
+ var rad1 = r + 1;
+ var mulSum = _blurTables.mulTable[r];
+ var shgSum = _blurTables.shgTable[r];
+ var red = [];
+ var green = [];
+ var blue = [];
+ var alpha = [];
+ var vmin = [];
+ var vmax = [];
+ var iterations = 2;
+
+ while (iterations-- > 0) {
+ yi = 0;
+ yw = 0;
+
+ for (y = 0; y < this.bitmap.height; y++) {
+ rsum = this.bitmap.data[yw] * rad1;
+ gsum = this.bitmap.data[yw + 1] * rad1;
+ bsum = this.bitmap.data[yw + 2] * rad1;
+ asum = this.bitmap.data[yw + 3] * rad1;
+
+ for (i = 1; i <= r; i++) {
+ p = yw + ((i > wm ? wm : i) << 2);
+ rsum += this.bitmap.data[p++];
+ gsum += this.bitmap.data[p++];
+ bsum += this.bitmap.data[p++];
+ asum += this.bitmap.data[p];
+ }
+
+ for (x = 0; x < this.bitmap.width; x++) {
+ red[yi] = rsum;
+ green[yi] = gsum;
+ blue[yi] = bsum;
+ alpha[yi] = asum;
+
+ if (y === 0) {
+ vmin[x] = ((p = x + rad1) < wm ? p : wm) << 2;
+ vmax[x] = (p = x - r) > 0 ? p << 2 : 0;
+ }
+
+ p1 = yw + vmin[x];
+ p2 = yw + vmax[x];
+ rsum += this.bitmap.data[p1++] - this.bitmap.data[p2++];
+ gsum += this.bitmap.data[p1++] - this.bitmap.data[p2++];
+ bsum += this.bitmap.data[p1++] - this.bitmap.data[p2++];
+ asum += this.bitmap.data[p1] - this.bitmap.data[p2];
+ yi++;
+ }
+
+ yw += this.bitmap.width << 2;
+ }
+
+ for (x = 0; x < this.bitmap.width; x++) {
+ yp = x;
+ rsum = red[yp] * rad1;
+ gsum = green[yp] * rad1;
+ bsum = blue[yp] * rad1;
+ asum = alpha[yp] * rad1;
+
+ for (i = 1; i <= r; i++) {
+ yp += i > hm ? 0 : this.bitmap.width;
+ rsum += red[yp];
+ gsum += green[yp];
+ bsum += blue[yp];
+ asum += alpha[yp];
+ }
+
+ yi = x << 2;
+
+ for (y = 0; y < this.bitmap.height; y++) {
+ pa = asum * mulSum >>> shgSum;
+ this.bitmap.data[yi + 3] = pa; // normalize alpha
+
+ if (pa > 255) {
+ this.bitmap.data[yi + 3] = 255;
+ }
+
+ if (pa > 0) {
+ pa = 255 / pa;
+ this.bitmap.data[yi] = (rsum * mulSum >>> shgSum) * pa;
+ this.bitmap.data[yi + 1] = (gsum * mulSum >>> shgSum) * pa;
+ this.bitmap.data[yi + 2] = (bsum * mulSum >>> shgSum) * pa;
+ } else {
+ this.bitmap.data[yi + 2] = 0;
+ this.bitmap.data[yi + 1] = 0;
+ this.bitmap.data[yi] = 0;
+ }
+
+ if (x === 0) {
+ vmin[y] = ((p = y + rad1) < hm ? p : hm) * this.bitmap.width;
+ vmax[y] = (p = y - r) > 0 ? p * this.bitmap.width : 0;
+ }
+
+ p1 = x + vmin[y];
+ p2 = x + vmax[y];
+ rsum += red[p1] - red[p2];
+ gsum += green[p1] - green[p2];
+ bsum += blue[p1] - blue[p2];
+ asum += alpha[p1] - alpha[p2];
+ yi += this.bitmap.width << 2;
+ }
+ }
+ }
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ }
+ };
+};
+
+exports["default"] = _default;
+module.exports = exports.default;
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-blur/dist/index.js.map b/node_modules/@jimp/plugin-blur/dist/index.js.map
new file mode 100644
index 00000000..9892b9a1
--- /dev/null
+++ b/node_modules/@jimp/plugin-blur/dist/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/index.js"],"names":["blur","r","cb","throwError","call","rsum","gsum","bsum","asum","x","y","i","p","p1","p2","yp","yi","yw","pa","wm","bitmap","width","hm","height","rad1","mulSum","mulTable","shgSum","shgTable","red","green","blue","alpha","vmin","vmax","iterations","data"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;eA4Be;AAAA,SAAO;AACpB;;;;;;AAMAA,IAAAA,IAPoB,gBAOfC,CAPe,EAOZC,EAPY,EAOR;AACV,UAAI,OAAOD,CAAP,KAAa,QAAjB,EACE,OAAOE,kBAAWC,IAAX,CAAgB,IAAhB,EAAsB,oBAAtB,EAA4CF,EAA5C,CAAP;AACF,UAAID,CAAC,GAAG,CAAR,EAAW,OAAOE,kBAAWC,IAAX,CAAgB,IAAhB,EAAsB,0BAAtB,EAAkDF,EAAlD,CAAP;AAEX,UAAIG,IAAJ;AACA,UAAIC,IAAJ;AACA,UAAIC,IAAJ;AACA,UAAIC,IAAJ;AACA,UAAIC,CAAJ;AACA,UAAIC,CAAJ;AACA,UAAIC,CAAJ;AACA,UAAIC,CAAJ;AACA,UAAIC,EAAJ;AACA,UAAIC,EAAJ;AACA,UAAIC,EAAJ;AACA,UAAIC,EAAJ;AACA,UAAIC,EAAJ;AACA,UAAIC,EAAJ;AAEA,UAAMC,EAAE,GAAG,KAAKC,MAAL,CAAYC,KAAZ,GAAoB,CAA/B;AACA,UAAMC,EAAE,GAAG,KAAKF,MAAL,CAAYG,MAAZ,GAAqB,CAAhC,CArBU,CAsBV;;AACA,UAAMC,IAAI,GAAGvB,CAAC,GAAG,CAAjB;AAEA,UAAMwB,MAAM,GAAGC,qBAASzB,CAAT,CAAf;AACA,UAAM0B,MAAM,GAAGC,qBAAS3B,CAAT,CAAf;AAEA,UAAM4B,GAAG,GAAG,EAAZ;AACA,UAAMC,KAAK,GAAG,EAAd;AACA,UAAMC,IAAI,GAAG,EAAb;AACA,UAAMC,KAAK,GAAG,EAAd;AAEA,UAAMC,IAAI,GAAG,EAAb;AACA,UAAMC,IAAI,GAAG,EAAb;AAEA,UAAIC,UAAU,GAAG,CAAjB;;AAEA,aAAOA,UAAU,KAAK,CAAtB,EAAyB;AACvBnB,QAAAA,EAAE,GAAG,CAAL;AACAC,QAAAA,EAAE,GAAG,CAAL;;AAEA,aAAKP,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG,KAAKU,MAAL,CAAYG,MAA5B,EAAoCb,CAAC,EAArC,EAAyC;AACvCL,UAAAA,IAAI,GAAG,KAAKe,MAAL,CAAYgB,IAAZ,CAAiBnB,EAAjB,IAAuBO,IAA9B;AACAlB,UAAAA,IAAI,GAAG,KAAKc,MAAL,CAAYgB,IAAZ,CAAiBnB,EAAE,GAAG,CAAtB,IAA2BO,IAAlC;AACAjB,UAAAA,IAAI,GAAG,KAAKa,MAAL,CAAYgB,IAAZ,CAAiBnB,EAAE,GAAG,CAAtB,IAA2BO,IAAlC;AACAhB,UAAAA,IAAI,GAAG,KAAKY,MAAL,CAAYgB,IAAZ,CAAiBnB,EAAE,GAAG,CAAtB,IAA2BO,IAAlC;;AAEA,eAAKb,CAAC,GAAG,CAAT,EAAYA,CAAC,IAAIV,CAAjB,EAAoBU,CAAC,EAArB,EAAyB;AACvBC,YAAAA,CAAC,GAAGK,EAAE,IAAI,CAACN,CAAC,GAAGQ,EAAJ,GAASA,EAAT,GAAcR,CAAf,KAAqB,CAAzB,CAAN;AACAN,YAAAA,IAAI,IAAI,KAAKe,MAAL,CAAYgB,IAAZ,CAAiBxB,CAAC,EAAlB,CAAR;AACAN,YAAAA,IAAI,IAAI,KAAKc,MAAL,CAAYgB,IAAZ,CAAiBxB,CAAC,EAAlB,CAAR;AACAL,YAAAA,IAAI,IAAI,KAAKa,MAAL,CAAYgB,IAAZ,CAAiBxB,CAAC,EAAlB,CAAR;AACAJ,YAAAA,IAAI,IAAI,KAAKY,MAAL,CAAYgB,IAAZ,CAAiBxB,CAAjB,CAAR;AACD;;AAED,eAAKH,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG,KAAKW,MAAL,CAAYC,KAA5B,EAAmCZ,CAAC,EAApC,EAAwC;AACtCoB,YAAAA,GAAG,CAACb,EAAD,CAAH,GAAUX,IAAV;AACAyB,YAAAA,KAAK,CAACd,EAAD,CAAL,GAAYV,IAAZ;AACAyB,YAAAA,IAAI,CAACf,EAAD,CAAJ,GAAWT,IAAX;AACAyB,YAAAA,KAAK,CAAChB,EAAD,CAAL,GAAYR,IAAZ;;AAEA,gBAAIE,CAAC,KAAK,CAAV,EAAa;AACXuB,cAAAA,IAAI,CAACxB,CAAD,CAAJ,GAAU,CAAC,CAACG,CAAC,GAAGH,CAAC,GAAGe,IAAT,IAAiBL,EAAjB,GAAsBP,CAAtB,GAA0BO,EAA3B,KAAkC,CAA5C;AACAe,cAAAA,IAAI,CAACzB,CAAD,CAAJ,GAAU,CAACG,CAAC,GAAGH,CAAC,GAAGR,CAAT,IAAc,CAAd,GAAkBW,CAAC,IAAI,CAAvB,GAA2B,CAArC;AACD;;AAEDC,YAAAA,EAAE,GAAGI,EAAE,GAAGgB,IAAI,CAACxB,CAAD,CAAd;AACAK,YAAAA,EAAE,GAAGG,EAAE,GAAGiB,IAAI,CAACzB,CAAD,CAAd;AAEAJ,YAAAA,IAAI,IAAI,KAAKe,MAAL,CAAYgB,IAAZ,CAAiBvB,EAAE,EAAnB,IAAyB,KAAKO,MAAL,CAAYgB,IAAZ,CAAiBtB,EAAE,EAAnB,CAAjC;AACAR,YAAAA,IAAI,IAAI,KAAKc,MAAL,CAAYgB,IAAZ,CAAiBvB,EAAE,EAAnB,IAAyB,KAAKO,MAAL,CAAYgB,IAAZ,CAAiBtB,EAAE,EAAnB,CAAjC;AACAP,YAAAA,IAAI,IAAI,KAAKa,MAAL,CAAYgB,IAAZ,CAAiBvB,EAAE,EAAnB,IAAyB,KAAKO,MAAL,CAAYgB,IAAZ,CAAiBtB,EAAE,EAAnB,CAAjC;AACAN,YAAAA,IAAI,IAAI,KAAKY,MAAL,CAAYgB,IAAZ,CAAiBvB,EAAjB,IAAuB,KAAKO,MAAL,CAAYgB,IAAZ,CAAiBtB,EAAjB,CAA/B;AAEAE,YAAAA,EAAE;AACH;;AAEDC,UAAAA,EAAE,IAAI,KAAKG,MAAL,CAAYC,KAAZ,IAAqB,CAA3B;AACD;;AAED,aAAKZ,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG,KAAKW,MAAL,CAAYC,KAA5B,EAAmCZ,CAAC,EAApC,EAAwC;AACtCM,UAAAA,EAAE,GAAGN,CAAL;AACAJ,UAAAA,IAAI,GAAGwB,GAAG,CAACd,EAAD,CAAH,GAAUS,IAAjB;AACAlB,UAAAA,IAAI,GAAGwB,KAAK,CAACf,EAAD,CAAL,GAAYS,IAAnB;AACAjB,UAAAA,IAAI,GAAGwB,IAAI,CAAChB,EAAD,CAAJ,GAAWS,IAAlB;AACAhB,UAAAA,IAAI,GAAGwB,KAAK,CAACjB,EAAD,CAAL,GAAYS,IAAnB;;AAEA,eAAKb,CAAC,GAAG,CAAT,EAAYA,CAAC,IAAIV,CAAjB,EAAoBU,CAAC,EAArB,EAAyB;AACvBI,YAAAA,EAAE,IAAIJ,CAAC,GAAGW,EAAJ,GAAS,CAAT,GAAa,KAAKF,MAAL,CAAYC,KAA/B;AACAhB,YAAAA,IAAI,IAAIwB,GAAG,CAACd,EAAD,CAAX;AACAT,YAAAA,IAAI,IAAIwB,KAAK,CAACf,EAAD,CAAb;AACAR,YAAAA,IAAI,IAAIwB,IAAI,CAAChB,EAAD,CAAZ;AACAP,YAAAA,IAAI,IAAIwB,KAAK,CAACjB,EAAD,CAAb;AACD;;AAEDC,UAAAA,EAAE,GAAGP,CAAC,IAAI,CAAV;;AAEA,eAAKC,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG,KAAKU,MAAL,CAAYG,MAA5B,EAAoCb,CAAC,EAArC,EAAyC;AACvCQ,YAAAA,EAAE,GAAIV,IAAI,GAAGiB,MAAR,KAAoBE,MAAzB;AACA,iBAAKP,MAAL,CAAYgB,IAAZ,CAAiBpB,EAAE,GAAG,CAAtB,IAA2BE,EAA3B,CAFuC,CAIvC;;AACA,gBAAIA,EAAE,GAAG,GAAT,EAAc;AACZ,mBAAKE,MAAL,CAAYgB,IAAZ,CAAiBpB,EAAE,GAAG,CAAtB,IAA2B,GAA3B;AACD;;AAED,gBAAIE,EAAE,GAAG,CAAT,EAAY;AACVA,cAAAA,EAAE,GAAG,MAAMA,EAAX;AACA,mBAAKE,MAAL,CAAYgB,IAAZ,CAAiBpB,EAAjB,IAAuB,CAAEX,IAAI,GAAGoB,MAAR,KAAoBE,MAArB,IAA+BT,EAAtD;AACA,mBAAKE,MAAL,CAAYgB,IAAZ,CAAiBpB,EAAE,GAAG,CAAtB,IAA2B,CAAEV,IAAI,GAAGmB,MAAR,KAAoBE,MAArB,IAA+BT,EAA1D;AACA,mBAAKE,MAAL,CAAYgB,IAAZ,CAAiBpB,EAAE,GAAG,CAAtB,IAA2B,CAAET,IAAI,GAAGkB,MAAR,KAAoBE,MAArB,IAA+BT,EAA1D;AACD,aALD,MAKO;AACL,mBAAKE,MAAL,CAAYgB,IAAZ,CAAiBpB,EAAE,GAAG,CAAtB,IAA2B,CAA3B;AACA,mBAAKI,MAAL,CAAYgB,IAAZ,CAAiBpB,EAAE,GAAG,CAAtB,IAA2B,CAA3B;AACA,mBAAKI,MAAL,CAAYgB,IAAZ,CAAiBpB,EAAjB,IAAuB,CAAvB;AACD;;AAED,gBAAIP,CAAC,KAAK,CAAV,EAAa;AACXwB,cAAAA,IAAI,CAACvB,CAAD,CAAJ,GAAU,CAAC,CAACE,CAAC,GAAGF,CAAC,GAAGc,IAAT,IAAiBF,EAAjB,GAAsBV,CAAtB,GAA0BU,EAA3B,IAAiC,KAAKF,MAAL,CAAYC,KAAvD;AACAa,cAAAA,IAAI,CAACxB,CAAD,CAAJ,GAAU,CAACE,CAAC,GAAGF,CAAC,GAAGT,CAAT,IAAc,CAAd,GAAkBW,CAAC,GAAG,KAAKQ,MAAL,CAAYC,KAAlC,GAA0C,CAApD;AACD;;AAEDR,YAAAA,EAAE,GAAGJ,CAAC,GAAGwB,IAAI,CAACvB,CAAD,CAAb;AACAI,YAAAA,EAAE,GAAGL,CAAC,GAAGyB,IAAI,CAACxB,CAAD,CAAb;AAEAL,YAAAA,IAAI,IAAIwB,GAAG,CAAChB,EAAD,CAAH,GAAUgB,GAAG,CAACf,EAAD,CAArB;AACAR,YAAAA,IAAI,IAAIwB,KAAK,CAACjB,EAAD,CAAL,GAAYiB,KAAK,CAAChB,EAAD,CAAzB;AACAP,YAAAA,IAAI,IAAIwB,IAAI,CAAClB,EAAD,CAAJ,GAAWkB,IAAI,CAACjB,EAAD,CAAvB;AACAN,YAAAA,IAAI,IAAIwB,KAAK,CAACnB,EAAD,CAAL,GAAYmB,KAAK,CAAClB,EAAD,CAAzB;AAEAE,YAAAA,EAAE,IAAI,KAAKI,MAAL,CAAYC,KAAZ,IAAqB,CAA3B;AACD;AACF;AACF;;AAED,UAAI,0BAAcnB,EAAd,CAAJ,EAAuB;AACrBA,QAAAA,EAAE,CAACE,IAAH,CAAQ,IAAR,EAAc,IAAd,EAAoB,IAApB;AACD;;AAED,aAAO,IAAP;AACD;AApJmB,GAAP;AAAA,C","sourcesContent":["import { throwError, isNodePattern } from \"@jimp/utils\";\nimport { mulTable, shgTable } from \"./blur-tables\";\n\n/*\n Superfast Blur (0.5)\n http://www.quasimondo.com/BoxBlurForCanvas/FastBlur.js\n\n Copyright (c) 2011 Mario Klingemann\n\n Permission is hereby granted, free of charge, to any person\n obtaining a copy of this software and associated documentation\n files (the \"Software\"), to deal in the Software without\n restriction, including without limitation the rights to use,\n copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the\n Software is furnished to do so, subject to the following\n conditions:\n\n The above copyright notice and this permission notice shall be\n included in all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n OTHER DEALINGS IN THE SOFTWARE.\n*/\n\nexport default () => ({\n /**\n * A fast blur algorithm that produces similar effect to a Gaussian blur - but MUCH quicker\n * @param {number} r the pixel radius of the blur\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp} this for chaining of methods\n */\n blur(r, cb) {\n if (typeof r !== \"number\")\n return throwError.call(this, \"r must be a number\", cb);\n if (r < 1) return throwError.call(this, \"r must be greater than 0\", cb);\n\n let rsum;\n let gsum;\n let bsum;\n let asum;\n let x;\n let y;\n let i;\n let p;\n let p1;\n let p2;\n let yp;\n let yi;\n let yw;\n let pa;\n\n const wm = this.bitmap.width - 1;\n const hm = this.bitmap.height - 1;\n // const wh = this.bitmap.width * this.bitmap.height;\n const rad1 = r + 1;\n\n const mulSum = mulTable[r];\n const shgSum = shgTable[r];\n\n const red = [];\n const green = [];\n const blue = [];\n const alpha = [];\n\n const vmin = [];\n const vmax = [];\n\n let iterations = 2;\n\n while (iterations-- > 0) {\n yi = 0;\n yw = 0;\n\n for (y = 0; y < this.bitmap.height; y++) {\n rsum = this.bitmap.data[yw] * rad1;\n gsum = this.bitmap.data[yw + 1] * rad1;\n bsum = this.bitmap.data[yw + 2] * rad1;\n asum = this.bitmap.data[yw + 3] * rad1;\n\n for (i = 1; i <= r; i++) {\n p = yw + ((i > wm ? wm : i) << 2);\n rsum += this.bitmap.data[p++];\n gsum += this.bitmap.data[p++];\n bsum += this.bitmap.data[p++];\n asum += this.bitmap.data[p];\n }\n\n for (x = 0; x < this.bitmap.width; x++) {\n red[yi] = rsum;\n green[yi] = gsum;\n blue[yi] = bsum;\n alpha[yi] = asum;\n\n if (y === 0) {\n vmin[x] = ((p = x + rad1) < wm ? p : wm) << 2;\n vmax[x] = (p = x - r) > 0 ? p << 2 : 0;\n }\n\n p1 = yw + vmin[x];\n p2 = yw + vmax[x];\n\n rsum += this.bitmap.data[p1++] - this.bitmap.data[p2++];\n gsum += this.bitmap.data[p1++] - this.bitmap.data[p2++];\n bsum += this.bitmap.data[p1++] - this.bitmap.data[p2++];\n asum += this.bitmap.data[p1] - this.bitmap.data[p2];\n\n yi++;\n }\n\n yw += this.bitmap.width << 2;\n }\n\n for (x = 0; x < this.bitmap.width; x++) {\n yp = x;\n rsum = red[yp] * rad1;\n gsum = green[yp] * rad1;\n bsum = blue[yp] * rad1;\n asum = alpha[yp] * rad1;\n\n for (i = 1; i <= r; i++) {\n yp += i > hm ? 0 : this.bitmap.width;\n rsum += red[yp];\n gsum += green[yp];\n bsum += blue[yp];\n asum += alpha[yp];\n }\n\n yi = x << 2;\n\n for (y = 0; y < this.bitmap.height; y++) {\n pa = (asum * mulSum) >>> shgSum;\n this.bitmap.data[yi + 3] = pa;\n\n // normalize alpha\n if (pa > 255) {\n this.bitmap.data[yi + 3] = 255;\n }\n\n if (pa > 0) {\n pa = 255 / pa;\n this.bitmap.data[yi] = ((rsum * mulSum) >>> shgSum) * pa;\n this.bitmap.data[yi + 1] = ((gsum * mulSum) >>> shgSum) * pa;\n this.bitmap.data[yi + 2] = ((bsum * mulSum) >>> shgSum) * pa;\n } else {\n this.bitmap.data[yi + 2] = 0;\n this.bitmap.data[yi + 1] = 0;\n this.bitmap.data[yi] = 0;\n }\n\n if (x === 0) {\n vmin[y] = ((p = y + rad1) < hm ? p : hm) * this.bitmap.width;\n vmax[y] = (p = y - r) > 0 ? p * this.bitmap.width : 0;\n }\n\n p1 = x + vmin[y];\n p2 = x + vmax[y];\n\n rsum += red[p1] - red[p2];\n gsum += green[p1] - green[p2];\n bsum += blue[p1] - blue[p2];\n asum += alpha[p1] - alpha[p2];\n\n yi += this.bitmap.width << 2;\n }\n }\n }\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n },\n});\n"],"file":"index.js"}
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-blur/index.d.ts b/node_modules/@jimp/plugin-blur/index.d.ts
new file mode 100644
index 00000000..8e325774
--- /dev/null
+++ b/node_modules/@jimp/plugin-blur/index.d.ts
@@ -0,0 +1,7 @@
+import { ImageCallback } from "@jimp/core";
+
+interface Blur {
+ blur(r: number, cb?: ImageCallback): this;
+}
+
+export default function (): Blur;
diff --git a/node_modules/@jimp/plugin-blur/package.json b/node_modules/@jimp/plugin-blur/package.json
new file mode 100644
index 00000000..9f89b841
--- /dev/null
+++ b/node_modules/@jimp/plugin-blur/package.json
@@ -0,0 +1,30 @@
+{
+ "name": "@jimp/plugin-blur",
+ "version": "0.16.13",
+ "description": "blur an image.",
+ "main": "dist/index.js",
+ "module": "es/index.js",
+ "types": "index.d.ts",
+ "scripts": {
+ "build": "npm run build:node:production && npm run build:module",
+ "build:watch": "npm run build:node:debug -- -- --watch --verbose",
+ "build:debug": "npm run build:node:debug",
+ "build:module": "cross-env BABEL_ENV=module babel src -d es --source-maps --config-file ../../babel.config.js",
+ "build:node": "babel src -d dist --source-maps --config-file ../../babel.config.js",
+ "build:node:debug": "cross-env BABEL_ENV=development npm run build:node",
+ "build:node:production": "cross-env BABEL_ENV=production npm run build:node"
+ },
+ "author": "",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "gitHead": "9eec86086634329a072901dca3a800b850548572"
+}
diff --git a/node_modules/@jimp/plugin-blur/src/blur-tables.js b/node_modules/@jimp/plugin-blur/src/blur-tables.js
new file mode 100644
index 00000000..b6300145
--- /dev/null
+++ b/node_modules/@jimp/plugin-blur/src/blur-tables.js
@@ -0,0 +1,35 @@
+export const mulTable = [
+ 1, 57, 41, 21, 203, 34, 97, 73, 227, 91, 149, 62, 105, 45, 39, 137, 241, 107,
+ 3, 173, 39, 71, 65, 238, 219, 101, 187, 87, 81, 151, 141, 133, 249, 117, 221,
+ 209, 197, 187, 177, 169, 5, 153, 73, 139, 133, 127, 243, 233, 223, 107, 103,
+ 99, 191, 23, 177, 171, 165, 159, 77, 149, 9, 139, 135, 131, 253, 245, 119,
+ 231, 224, 109, 211, 103, 25, 195, 189, 23, 45, 175, 171, 83, 81, 79, 155, 151,
+ 147, 9, 141, 137, 67, 131, 129, 251, 123, 30, 235, 115, 113, 221, 217, 53, 13,
+ 51, 50, 49, 193, 189, 185, 91, 179, 175, 43, 169, 83, 163, 5, 79, 155, 19, 75,
+ 147, 145, 143, 35, 69, 17, 67, 33, 65, 255, 251, 247, 243, 239, 59, 29, 229,
+ 113, 111, 219, 27, 213, 105, 207, 51, 201, 199, 49, 193, 191, 47, 93, 183,
+ 181, 179, 11, 87, 43, 85, 167, 165, 163, 161, 159, 157, 155, 77, 19, 75, 37,
+ 73, 145, 143, 141, 35, 138, 137, 135, 67, 33, 131, 129, 255, 63, 250, 247, 61,
+ 121, 239, 237, 117, 29, 229, 227, 225, 111, 55, 109, 216, 213, 211, 209, 207,
+ 205, 203, 201, 199, 197, 195, 193, 48, 190, 47, 93, 185, 183, 181, 179, 178,
+ 176, 175, 173, 171, 85, 21, 167, 165, 41, 163, 161, 5, 79, 157, 78, 154, 153,
+ 19, 75, 149, 74, 147, 73, 144, 143, 71, 141, 140, 139, 137, 17, 135, 134, 133,
+ 66, 131, 65, 129, 1,
+];
+
+export const shgTable = [
+ 0, 9, 10, 10, 14, 12, 14, 14, 16, 15, 16, 15, 16, 15, 15, 17, 18, 17, 12, 18,
+ 16, 17, 17, 19, 19, 18, 19, 18, 18, 19, 19, 19, 20, 19, 20, 20, 20, 20, 20,
+ 20, 15, 20, 19, 20, 20, 20, 21, 21, 21, 20, 20, 20, 21, 18, 21, 21, 21, 21,
+ 20, 21, 17, 21, 21, 21, 22, 22, 21, 22, 22, 21, 22, 21, 19, 22, 22, 19, 20,
+ 22, 22, 21, 21, 21, 22, 22, 22, 18, 22, 22, 21, 22, 22, 23, 22, 20, 23, 22,
+ 22, 23, 23, 21, 19, 21, 21, 21, 23, 23, 23, 22, 23, 23, 21, 23, 22, 23, 18,
+ 22, 23, 20, 22, 23, 23, 23, 21, 22, 20, 22, 21, 22, 24, 24, 24, 24, 24, 22,
+ 21, 24, 23, 23, 24, 21, 24, 23, 24, 22, 24, 24, 22, 24, 24, 22, 23, 24, 24,
+ 24, 20, 23, 22, 23, 24, 24, 24, 24, 24, 24, 24, 23, 21, 23, 22, 23, 24, 24,
+ 24, 22, 24, 24, 24, 23, 22, 24, 24, 25, 23, 25, 25, 23, 24, 25, 25, 24, 22,
+ 25, 25, 25, 24, 23, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 23,
+ 25, 23, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 24, 22, 25, 25, 23, 25, 25,
+ 20, 24, 25, 24, 25, 25, 22, 24, 25, 24, 25, 24, 25, 25, 24, 25, 25, 25, 25,
+ 22, 25, 25, 25, 24, 25, 24, 25, 18,
+];
diff --git a/node_modules/@jimp/plugin-blur/src/index.js b/node_modules/@jimp/plugin-blur/src/index.js
new file mode 100644
index 00000000..d97ae3d6
--- /dev/null
+++ b/node_modules/@jimp/plugin-blur/src/index.js
@@ -0,0 +1,181 @@
+import { throwError, isNodePattern } from "@jimp/utils";
+import { mulTable, shgTable } from "./blur-tables";
+
+/*
+ Superfast Blur (0.5)
+ http://www.quasimondo.com/BoxBlurForCanvas/FastBlur.js
+
+ Copyright (c) 2011 Mario Klingemann
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the "Software"), to deal in the Software without
+ restriction, including without limitation the rights to use,
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following
+ conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+export default () => ({
+ /**
+ * A fast blur algorithm that produces similar effect to a Gaussian blur - but MUCH quicker
+ * @param {number} r the pixel radius of the blur
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+ blur(r, cb) {
+ if (typeof r !== "number")
+ return throwError.call(this, "r must be a number", cb);
+ if (r < 1) return throwError.call(this, "r must be greater than 0", cb);
+
+ let rsum;
+ let gsum;
+ let bsum;
+ let asum;
+ let x;
+ let y;
+ let i;
+ let p;
+ let p1;
+ let p2;
+ let yp;
+ let yi;
+ let yw;
+ let pa;
+
+ const wm = this.bitmap.width - 1;
+ const hm = this.bitmap.height - 1;
+ // const wh = this.bitmap.width * this.bitmap.height;
+ const rad1 = r + 1;
+
+ const mulSum = mulTable[r];
+ const shgSum = shgTable[r];
+
+ const red = [];
+ const green = [];
+ const blue = [];
+ const alpha = [];
+
+ const vmin = [];
+ const vmax = [];
+
+ let iterations = 2;
+
+ while (iterations-- > 0) {
+ yi = 0;
+ yw = 0;
+
+ for (y = 0; y < this.bitmap.height; y++) {
+ rsum = this.bitmap.data[yw] * rad1;
+ gsum = this.bitmap.data[yw + 1] * rad1;
+ bsum = this.bitmap.data[yw + 2] * rad1;
+ asum = this.bitmap.data[yw + 3] * rad1;
+
+ for (i = 1; i <= r; i++) {
+ p = yw + ((i > wm ? wm : i) << 2);
+ rsum += this.bitmap.data[p++];
+ gsum += this.bitmap.data[p++];
+ bsum += this.bitmap.data[p++];
+ asum += this.bitmap.data[p];
+ }
+
+ for (x = 0; x < this.bitmap.width; x++) {
+ red[yi] = rsum;
+ green[yi] = gsum;
+ blue[yi] = bsum;
+ alpha[yi] = asum;
+
+ if (y === 0) {
+ vmin[x] = ((p = x + rad1) < wm ? p : wm) << 2;
+ vmax[x] = (p = x - r) > 0 ? p << 2 : 0;
+ }
+
+ p1 = yw + vmin[x];
+ p2 = yw + vmax[x];
+
+ rsum += this.bitmap.data[p1++] - this.bitmap.data[p2++];
+ gsum += this.bitmap.data[p1++] - this.bitmap.data[p2++];
+ bsum += this.bitmap.data[p1++] - this.bitmap.data[p2++];
+ asum += this.bitmap.data[p1] - this.bitmap.data[p2];
+
+ yi++;
+ }
+
+ yw += this.bitmap.width << 2;
+ }
+
+ for (x = 0; x < this.bitmap.width; x++) {
+ yp = x;
+ rsum = red[yp] * rad1;
+ gsum = green[yp] * rad1;
+ bsum = blue[yp] * rad1;
+ asum = alpha[yp] * rad1;
+
+ for (i = 1; i <= r; i++) {
+ yp += i > hm ? 0 : this.bitmap.width;
+ rsum += red[yp];
+ gsum += green[yp];
+ bsum += blue[yp];
+ asum += alpha[yp];
+ }
+
+ yi = x << 2;
+
+ for (y = 0; y < this.bitmap.height; y++) {
+ pa = (asum * mulSum) >>> shgSum;
+ this.bitmap.data[yi + 3] = pa;
+
+ // normalize alpha
+ if (pa > 255) {
+ this.bitmap.data[yi + 3] = 255;
+ }
+
+ if (pa > 0) {
+ pa = 255 / pa;
+ this.bitmap.data[yi] = ((rsum * mulSum) >>> shgSum) * pa;
+ this.bitmap.data[yi + 1] = ((gsum * mulSum) >>> shgSum) * pa;
+ this.bitmap.data[yi + 2] = ((bsum * mulSum) >>> shgSum) * pa;
+ } else {
+ this.bitmap.data[yi + 2] = 0;
+ this.bitmap.data[yi + 1] = 0;
+ this.bitmap.data[yi] = 0;
+ }
+
+ if (x === 0) {
+ vmin[y] = ((p = y + rad1) < hm ? p : hm) * this.bitmap.width;
+ vmax[y] = (p = y - r) > 0 ? p * this.bitmap.width : 0;
+ }
+
+ p1 = x + vmin[y];
+ p2 = x + vmax[y];
+
+ rsum += red[p1] - red[p2];
+ gsum += green[p1] - green[p2];
+ bsum += blue[p1] - blue[p2];
+ asum += alpha[p1] - alpha[p2];
+
+ yi += this.bitmap.width << 2;
+ }
+ }
+ }
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+});
diff --git a/node_modules/@jimp/plugin-circle/CHANGELOG.md b/node_modules/@jimp/plugin-circle/CHANGELOG.md
new file mode 100644
index 00000000..4eb3193f
--- /dev/null
+++ b/node_modules/@jimp/plugin-circle/CHANGELOG.md
@@ -0,0 +1,35 @@
+# v0.16.3 (Sat Feb 04 2023)
+
+#### ⚠️ Pushed to `master`
+
+- upgrade prettier ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 1
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+---
+
+# v0.11.0 (Fri May 15 2020)
+
+#### 🚀 Enhancement
+
+- Removed Core-JS as a dependency. [#882](https://github.com/oliver-moran/jimp/pull/882) ([@EricRabil](https://github.com/EricRabil))
+
+#### Authors: 1
+
+- Eric Rabil ([@EricRabil](https://github.com/EricRabil))
+
+---
+
+# v0.9.3 (Tue Nov 26 2019)
+
+#### 🐛 Bug Fix
+
+- `@jimp/cli`, `@jimp/core`, `@jimp/custom`, `jimp`, `@jimp/plugin-blit`, `@jimp/plugin-blur`, `@jimp/plugin-circle`, `@jimp/plugin-color`, `@jimp/plugin-contain`, `@jimp/plugin-cover`, `@jimp/plugin-crop`, `@jimp/plugin-displace`, `@jimp/plugin-dither`, `@jimp/plugin-fisheye`, `@jimp/plugin-flip`, `@jimp/plugin-gaussian`, `@jimp/plugin-invert`, `@jimp/plugin-mask`, `@jimp/plugin-normalize`, `@jimp/plugin-print`, `@jimp/plugin-resize`, `@jimp/plugin-rotate`, `@jimp/plugin-scale`, `@jimp/plugin-shadow`, `@jimp/plugin-threshold`, `@jimp/plugins`, `@jimp/test-utils`, `@jimp/bmp`, `@jimp/gif`, `@jimp/jpeg`, `@jimp/png`, `@jimp/tiff`, `@jimp/types`, `@jimp/utils`
+ - Fix regeneratorRuntime errors [#815](https://github.com/oliver-moran/jimp/pull/815) ([@crutchcorn](https://github.com/crutchcorn) [@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 2
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+- Corbin Crutchley ([@crutchcorn](https://github.com/crutchcorn))
diff --git a/project starter code/node_modules/@jimp/plugin-circle/LICENSE b/node_modules/@jimp/plugin-circle/LICENSE
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-circle/LICENSE
rename to node_modules/@jimp/plugin-circle/LICENSE
diff --git a/node_modules/@jimp/plugin-circle/README.md b/node_modules/@jimp/plugin-circle/README.md
new file mode 100644
index 00000000..689b3ab8
--- /dev/null
+++ b/node_modules/@jimp/plugin-circle/README.md
@@ -0,0 +1,25 @@
+
+
+
@jimp/plugin-circle
+
Creates a circle out of an image.
+
+
+## Usage
+
+- @param {function(Error, Jimp)} options (optional) radius, x, y
+- @param {function(Error, Jimp)} cb (optional) a callback for when complete
+
+```js
+import jimp from "jimp";
+
+async function main() {
+ const image = await jimp.read("test/image.png");
+
+ image.circle();
+ // or
+ image.circle({ radius: 50, x: 25, y: 25 });
+}
+
+main();
+```
diff --git a/node_modules/@jimp/plugin-circle/dist/index.js b/node_modules/@jimp/plugin-circle/dist/index.js
new file mode 100644
index 00000000..bb423d5f
--- /dev/null
+++ b/node_modules/@jimp/plugin-circle/dist/index.js
@@ -0,0 +1,53 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports["default"] = void 0;
+
+var _utils = require("@jimp/utils");
+
+/**
+ * Creates a circle out of an image.
+ * @param {function(Error, Jimp)} options (optional) radius, x, y
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+var _default = function _default() {
+ return {
+ circle: function circle() {
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+ var cb = arguments.length > 1 ? arguments[1] : undefined;
+
+ if (typeof options === "function") {
+ cb = options;
+ options = {};
+ }
+
+ var radius = options.radius || (this.bitmap.width > this.bitmap.height ? this.bitmap.height : this.bitmap.width) / 2;
+ var center = {
+ x: typeof options.x === "number" ? options.x : this.bitmap.width / 2,
+ y: typeof options.y === "number" ? options.y : this.bitmap.height / 2
+ };
+ this.scanQuiet(0, 0, this.bitmap.width, this.bitmap.height, function (x, y, idx) {
+ var curR = Math.sqrt(Math.pow(x - center.x, 2) + Math.pow(y - center.y, 2));
+
+ if (radius - curR <= 0.0) {
+ this.bitmap.data[idx + 3] = 0;
+ } else if (radius - curR < 1.0) {
+ this.bitmap.data[idx + 3] = 255 * (radius - curR);
+ }
+ });
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ }
+ };
+};
+
+exports["default"] = _default;
+module.exports = exports.default;
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-circle/dist/index.js.map b/node_modules/@jimp/plugin-circle/dist/index.js.map
new file mode 100644
index 00000000..dc73d883
--- /dev/null
+++ b/node_modules/@jimp/plugin-circle/dist/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/index.js"],"names":["circle","options","cb","radius","bitmap","width","height","center","x","y","scanQuiet","idx","curR","Math","sqrt","pow","data","call"],"mappings":";;;;;;;AAAA;;AAEA;;;;;;eAMe;AAAA,SAAO;AACpBA,IAAAA,MADoB,oBACK;AAAA,UAAlBC,OAAkB,uEAAR,EAAQ;AAAA,UAAJC,EAAI;;AACvB,UAAI,OAAOD,OAAP,KAAmB,UAAvB,EAAmC;AACjCC,QAAAA,EAAE,GAAGD,OAAL;AACAA,QAAAA,OAAO,GAAG,EAAV;AACD;;AAED,UAAME,MAAM,GACVF,OAAO,CAACE,MAAR,IACA,CAAC,KAAKC,MAAL,CAAYC,KAAZ,GAAoB,KAAKD,MAAL,CAAYE,MAAhC,GACG,KAAKF,MAAL,CAAYE,MADf,GAEG,KAAKF,MAAL,CAAYC,KAFhB,IAEyB,CAJ3B;AAMA,UAAME,MAAM,GAAG;AACbC,QAAAA,CAAC,EAAE,OAAOP,OAAO,CAACO,CAAf,KAAqB,QAArB,GAAgCP,OAAO,CAACO,CAAxC,GAA4C,KAAKJ,MAAL,CAAYC,KAAZ,GAAoB,CADtD;AAEbI,QAAAA,CAAC,EAAE,OAAOR,OAAO,CAACQ,CAAf,KAAqB,QAArB,GAAgCR,OAAO,CAACQ,CAAxC,GAA4C,KAAKL,MAAL,CAAYE,MAAZ,GAAqB;AAFvD,OAAf;AAKA,WAAKI,SAAL,CACE,CADF,EAEE,CAFF,EAGE,KAAKN,MAAL,CAAYC,KAHd,EAIE,KAAKD,MAAL,CAAYE,MAJd,EAKE,UAAUE,CAAV,EAAaC,CAAb,EAAgBE,GAAhB,EAAqB;AACnB,YAAMC,IAAI,GAAGC,IAAI,CAACC,IAAL,CACXD,IAAI,CAACE,GAAL,CAASP,CAAC,GAAGD,MAAM,CAACC,CAApB,EAAuB,CAAvB,IAA4BK,IAAI,CAACE,GAAL,CAASN,CAAC,GAAGF,MAAM,CAACE,CAApB,EAAuB,CAAvB,CADjB,CAAb;;AAIA,YAAIN,MAAM,GAAGS,IAAT,IAAiB,GAArB,EAA0B;AACxB,eAAKR,MAAL,CAAYY,IAAZ,CAAiBL,GAAG,GAAG,CAAvB,IAA4B,CAA5B;AACD,SAFD,MAEO,IAAIR,MAAM,GAAGS,IAAT,GAAgB,GAApB,EAAyB;AAC9B,eAAKR,MAAL,CAAYY,IAAZ,CAAiBL,GAAG,GAAG,CAAvB,IAA4B,OAAOR,MAAM,GAAGS,IAAhB,CAA5B;AACD;AACF,OAfH;;AAkBA,UAAI,0BAAcV,EAAd,CAAJ,EAAuB;AACrBA,QAAAA,EAAE,CAACe,IAAH,CAAQ,IAAR,EAAc,IAAd,EAAoB,IAApB;AACD;;AAED,aAAO,IAAP;AACD;AAzCmB,GAAP;AAAA,C","sourcesContent":["import { isNodePattern } from \"@jimp/utils\";\n\n/**\n * Creates a circle out of an image.\n * @param {function(Error, Jimp)} options (optional) radius, x, y\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp} this for chaining of methods\n */\nexport default () => ({\n circle(options = {}, cb) {\n if (typeof options === \"function\") {\n cb = options;\n options = {};\n }\n\n const radius =\n options.radius ||\n (this.bitmap.width > this.bitmap.height\n ? this.bitmap.height\n : this.bitmap.width) / 2;\n\n const center = {\n x: typeof options.x === \"number\" ? options.x : this.bitmap.width / 2,\n y: typeof options.y === \"number\" ? options.y : this.bitmap.height / 2,\n };\n\n this.scanQuiet(\n 0,\n 0,\n this.bitmap.width,\n this.bitmap.height,\n function (x, y, idx) {\n const curR = Math.sqrt(\n Math.pow(x - center.x, 2) + Math.pow(y - center.y, 2)\n );\n\n if (radius - curR <= 0.0) {\n this.bitmap.data[idx + 3] = 0;\n } else if (radius - curR < 1.0) {\n this.bitmap.data[idx + 3] = 255 * (radius - curR);\n }\n }\n );\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n },\n});\n"],"file":"index.js"}
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-circle/index.d.ts b/node_modules/@jimp/plugin-circle/index.d.ts
new file mode 100644
index 00000000..302dda00
--- /dev/null
+++ b/node_modules/@jimp/plugin-circle/index.d.ts
@@ -0,0 +1,15 @@
+import { ImageCallback } from "@jimp/core";
+
+interface Circle {
+ circle(
+ options?: {
+ radius: number;
+ x: number;
+ y: number;
+ },
+ cb?: ImageCallback
+ ): this;
+ circle(cb?: ImageCallback): this;
+}
+
+export default function (): Circle;
diff --git a/node_modules/@jimp/plugin-circle/package.json b/node_modules/@jimp/plugin-circle/package.json
new file mode 100644
index 00000000..f58b5fae
--- /dev/null
+++ b/node_modules/@jimp/plugin-circle/package.json
@@ -0,0 +1,37 @@
+{
+ "name": "@jimp/plugin-circle",
+ "version": "0.16.13",
+ "description": "Creates a circle out of an image.",
+ "main": "dist/index.js",
+ "module": "es/index.js",
+ "types": "index.d.ts",
+ "scripts": {
+ "test": "cross-env BABEL_ENV=test mocha --require @babel/register",
+ "test:watch": "npm run test -- --reporter min --watch",
+ "test:coverage": "nyc npm run test",
+ "build": "npm run build:node:production && npm run build:module",
+ "build:watch": "npm run build:node:debug -- -- --watch --verbose",
+ "build:debug": "npm run build:node:debug",
+ "build:module": "cross-env BABEL_ENV=module babel src -d es --source-maps --config-file ../../babel.config.js",
+ "build:node": "babel src -d dist --source-maps --config-file ../../babel.config.js",
+ "build:node:debug": "cross-env BABEL_ENV=development npm run build:node",
+ "build:node:production": "cross-env BABEL_ENV=production npm run build:node"
+ },
+ "author": "",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ },
+ "devDependencies": {
+ "@jimp/custom": "^0.16.13",
+ "@jimp/test-utils": "^0.16.13"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "gitHead": "9eec86086634329a072901dca3a800b850548572"
+}
diff --git a/node_modules/@jimp/plugin-circle/src/index.js b/node_modules/@jimp/plugin-circle/src/index.js
new file mode 100644
index 00000000..5d1a5c9c
--- /dev/null
+++ b/node_modules/@jimp/plugin-circle/src/index.js
@@ -0,0 +1,51 @@
+import { isNodePattern } from "@jimp/utils";
+
+/**
+ * Creates a circle out of an image.
+ * @param {function(Error, Jimp)} options (optional) radius, x, y
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+export default () => ({
+ circle(options = {}, cb) {
+ if (typeof options === "function") {
+ cb = options;
+ options = {};
+ }
+
+ const radius =
+ options.radius ||
+ (this.bitmap.width > this.bitmap.height
+ ? this.bitmap.height
+ : this.bitmap.width) / 2;
+
+ const center = {
+ x: typeof options.x === "number" ? options.x : this.bitmap.width / 2,
+ y: typeof options.y === "number" ? options.y : this.bitmap.height / 2,
+ };
+
+ this.scanQuiet(
+ 0,
+ 0,
+ this.bitmap.width,
+ this.bitmap.height,
+ function (x, y, idx) {
+ const curR = Math.sqrt(
+ Math.pow(x - center.x, 2) + Math.pow(y - center.y, 2)
+ );
+
+ if (radius - curR <= 0.0) {
+ this.bitmap.data[idx + 3] = 0;
+ } else if (radius - curR < 1.0) {
+ this.bitmap.data[idx + 3] = 255 * (radius - curR);
+ }
+ }
+ );
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+});
diff --git a/node_modules/@jimp/plugin-circle/test/circle.test.js b/node_modules/@jimp/plugin-circle/test/circle.test.js
new file mode 100644
index 00000000..19fc95d0
--- /dev/null
+++ b/node_modules/@jimp/plugin-circle/test/circle.test.js
@@ -0,0 +1,78 @@
+import { Jimp, mkJGD, getTestDir } from "@jimp/test-utils";
+import configure from "@jimp/custom";
+
+import circle from "../src";
+
+const jimp = configure({ plugins: [circle] }, Jimp);
+
+describe("Circle", () => {
+ it("makes a circle based on image height and width", async () => {
+ const expectedImg = await Jimp.read(
+ getTestDir(__dirname) + "/images/circled.png"
+ );
+ const imgSrc = await jimp.read(
+ mkJGD(
+ "▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦",
+ "▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦",
+ "▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦",
+ "▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦",
+ "▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦",
+ "▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦",
+ "▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦",
+ "▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦",
+ "▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦",
+ "▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦"
+ )
+ );
+
+ imgSrc.circle().bitmap.data.should.be.deepEqual(expectedImg.bitmap.data);
+ });
+
+ it("makes a circle using provided radius", async () => {
+ const expectedImg = await Jimp.read(
+ getTestDir(__dirname) + "/images/radius-3-circle.png"
+ );
+ const imgSrc = await jimp.read(
+ mkJGD(
+ "▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦",
+ "▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦",
+ "▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦",
+ "▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦",
+ "▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦",
+ "▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦",
+ "▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦",
+ "▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦",
+ "▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦",
+ "▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦"
+ )
+ );
+
+ imgSrc
+ .circle({ radius: 3 })
+ .bitmap.data.should.be.deepEqual(expectedImg.bitmap.data);
+ });
+
+ it("should ", async () => {
+ const expectedImg = await Jimp.read(
+ getTestDir(__dirname) + "/images/x-y-circle.png"
+ );
+ const imgSrc = await jimp.read(
+ mkJGD(
+ "▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦",
+ "▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦",
+ "▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦",
+ "▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦",
+ "▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦",
+ "▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦",
+ "▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦",
+ "▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦",
+ "▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦",
+ "▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦▦"
+ )
+ );
+
+ imgSrc
+ .circle({ radius: 5, x: 5, y: 5 })
+ .bitmap.data.should.be.deepEqual(expectedImg.bitmap.data);
+ });
+});
diff --git a/project starter code/node_modules/@jimp/plugin-circle/test/images/circled.png b/node_modules/@jimp/plugin-circle/test/images/circled.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-circle/test/images/circled.png
rename to node_modules/@jimp/plugin-circle/test/images/circled.png
diff --git a/project starter code/node_modules/@jimp/plugin-circle/test/images/radius-3-circle.png b/node_modules/@jimp/plugin-circle/test/images/radius-3-circle.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-circle/test/images/radius-3-circle.png
rename to node_modules/@jimp/plugin-circle/test/images/radius-3-circle.png
diff --git a/project starter code/node_modules/@jimp/plugin-circle/test/images/x-y-circle.png b/node_modules/@jimp/plugin-circle/test/images/x-y-circle.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-circle/test/images/x-y-circle.png
rename to node_modules/@jimp/plugin-circle/test/images/x-y-circle.png
diff --git a/node_modules/@jimp/plugin-color/CHANGELOG.md b/node_modules/@jimp/plugin-color/CHANGELOG.md
new file mode 100644
index 00000000..e0fea7c1
--- /dev/null
+++ b/node_modules/@jimp/plugin-color/CHANGELOG.md
@@ -0,0 +1,41 @@
+# v0.16.3 (Sat Feb 04 2023)
+
+#### 🐛 Bug Fix
+
+- Fix edgeHandling types [#1080](https://github.com/jimp-dev/jimp/pull/1080) ([@domdomegg](https://github.com/domdomegg))
+
+#### ⚠️ Pushed to `master`
+
+- update linting ([@hipstersmoothie](https://github.com/hipstersmoothie))
+- upgrade prettier ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 2
+
+- Adam Jones ([@domdomegg](https://github.com/domdomegg))
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+---
+
+# v0.11.0 (Fri May 15 2020)
+
+#### 🚀 Enhancement
+
+- Removed Core-JS as a dependency. [#882](https://github.com/oliver-moran/jimp/pull/882) ([@EricRabil](https://github.com/EricRabil))
+
+#### Authors: 1
+
+- Eric Rabil ([@EricRabil](https://github.com/EricRabil))
+
+---
+
+# v0.9.3 (Tue Nov 26 2019)
+
+#### 🐛 Bug Fix
+
+- `@jimp/cli`, `@jimp/core`, `@jimp/custom`, `jimp`, `@jimp/plugin-blit`, `@jimp/plugin-blur`, `@jimp/plugin-circle`, `@jimp/plugin-color`, `@jimp/plugin-contain`, `@jimp/plugin-cover`, `@jimp/plugin-crop`, `@jimp/plugin-displace`, `@jimp/plugin-dither`, `@jimp/plugin-fisheye`, `@jimp/plugin-flip`, `@jimp/plugin-gaussian`, `@jimp/plugin-invert`, `@jimp/plugin-mask`, `@jimp/plugin-normalize`, `@jimp/plugin-print`, `@jimp/plugin-resize`, `@jimp/plugin-rotate`, `@jimp/plugin-scale`, `@jimp/plugin-shadow`, `@jimp/plugin-threshold`, `@jimp/plugins`, `@jimp/test-utils`, `@jimp/bmp`, `@jimp/gif`, `@jimp/jpeg`, `@jimp/png`, `@jimp/tiff`, `@jimp/types`, `@jimp/utils`
+ - Fix regeneratorRuntime errors [#815](https://github.com/oliver-moran/jimp/pull/815) ([@crutchcorn](https://github.com/crutchcorn) [@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 2
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+- Corbin Crutchley ([@crutchcorn](https://github.com/crutchcorn))
diff --git a/project starter code/node_modules/@jimp/plugin-color/LICENSE b/node_modules/@jimp/plugin-color/LICENSE
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-color/LICENSE
rename to node_modules/@jimp/plugin-color/LICENSE
diff --git a/node_modules/@jimp/plugin-color/README.md b/node_modules/@jimp/plugin-color/README.md
new file mode 100644
index 00000000..1b4c800f
--- /dev/null
+++ b/node_modules/@jimp/plugin-color/README.md
@@ -0,0 +1,262 @@
+
+
+
@jimp/plugin-color
+
Jimp color methods.
+
+
+Bitmap manipulation to adjust the color in an image.
+
+## color
+
+Apply multiple color modification rules
+
+- @param {array} actions list of color modification rules, in following format: { apply: '', params: [ ] }
+- @param {function(Error, Jimp)} cb (optional) a callback for when complete
+
+```js
+import jimp from "jimp";
+
+async function main() {
+ const image = await jimp.read("test/image.png");
+
+ image.color([{ apply: "red", params: [100] }]);
+}
+
+main();
+```
+
+Jimp supports advanced colour manipulation using a single method as follows:
+
+```js
+image.color([
+ { apply: "hue", params: [-90] },
+ { apply: "lighten", params: [50] },
+ { apply: "xor", params: ["#06D"] },
+]);
+```
+
+The method supports the following modifiers:
+
+| Modifier | Description |
+| ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| **lighten** {amount} | Lighten the color a given amount, from 0 to 100. Providing 100 will always return white (works through [TinyColor](https://github.com/bgrins/TinyColor)) |
+| **brighten** {amount} | Brighten the color a given amount, from 0 to 100 (works through [TinyColor](https://github.com/bgrins/TinyColor)) |
+| **darken** {amount} | Darken the color a given amount, from 0 to 100. Providing 100 will always return black (works through [TinyColor](https://github.com/bgrins/TinyColor)) |
+| **desaturate** {amount} | Desaturate the color a given amount, from 0 to 100. Providing 100 will is the same as calling greyscale (works through [TinyColor](https://github.com/bgrins/TinyColor)) |
+| **saturate** {amount} | Saturate the color a given amount, from 0 to 100 (works through [TinyColor](https://github.com/bgrins/TinyColor)) |
+| **greyscale** {amount} | Completely desaturates a color into greyscale (works through [TinyColor](https://github.com/bgrins/TinyColor)) |
+| **spin** {degree} | Spin the hue a given amount, from -360 to 360. Calling with 0, 360, or -360 will do nothing - since it sets the hue back to what it was before. (works through [TinyColor](https://github.com/bgrins/TinyColor)) |
+| **hue** {degree} | Alias for **spin** |
+| **mix** {color, amount} | Mixes colors by their RGB component values. Amount is opacity of overlaying color |
+| **tint** {amount} | Same as applying **mix** with white color |
+| **shade** {amount} | Same as applying **mix** with black color |
+| **xor** {color} | Treats the two colors as bitfields and applies an XOR operation to the red, green, and blue components |
+| **red** {amount} | Modify Red component by a given amount |
+| **green** {amount} | Modify Green component by a given amount |
+| **blue** {amount} | Modify Blue component by a given amount |
+
+## brightness
+
+Adjusts the brightness of the image
+
+- @param {number} val the amount to adjust the brightness, a number between -1 and +1
+- @param {function(Error, Jimp)} cb (optional) a callback for when complete
+
+```js
+import jimp from "jimp";
+
+async function main() {
+ const image = await jimp.read("test/image.png");
+
+ image.brightness(20);
+}
+
+main();
+```
+
+## contrast
+
+Adjusts the contrast of the image
+
+- @param {number} val the amount to adjust the contrast, a number between -1 and +1
+- @param {function(Error, Jimp)} cb (optional) a callback for when complete
+
+```js
+import jimp from "jimp";
+
+async function main() {
+ const image = await jimp.read("test/image.png");
+
+ image.contrast(70);
+}
+
+main();
+```
+
+## posterize
+
+Apply a posterize effect
+
+- @param {number} n the amount to adjust the contrast, minimum threshold is two
+- @param {function(Error, Jimp)} cb (optional) a callback for when complete
+
+```js
+import jimp from "jimp";
+
+async function main() {
+ const image = await jimp.read("test/image.png");
+
+ image.posterize(5);
+}
+
+main();
+```
+
+## opacity
+
+Multiplies the opacity of each pixel by a factor between 0 and 1
+
+- @param {number} f A number, the factor by which to multiply the opacity of each pixel
+- @param {function(Error, Jimp)} cb (optional) a callback for when complete
+
+```js
+import jimp from "jimp";
+
+async function main() {
+ const image = await jimp.read("test/image.png");
+
+ image.opacity(80);
+}
+
+main();
+```
+
+## sepia
+
+Applies a sepia tone to the image
+
+- @param {function(Error, Jimp)} cb (optional) a callback for when complete
+
+```js
+import jimp from "jimp";
+
+async function main() {
+ const image = await jimp.read("test/image.png");
+
+ image.sepia();
+}
+
+main();
+```
+
+## fade
+
+Fades each pixel by a factor between 0 and 1
+
+- @param {number} f A number from 0 to 1. 0 will haven no effect. 1 will turn the image completely transparent.
+- @param {function(Error, Jimp)} cb (optional) a callback for when complete
+
+```js
+import jimp from "jimp";
+
+async function main() {
+ const image = await jimp.read("test/image.png");
+
+ image.fade(0.7);
+}
+
+main();
+```
+
+## convolution
+
+Sum neighbor pixels weighted by the kernel matrix. You can find a nice explanation with examples at [GIMP's Convolution Matrix plugin](https://docs.gimp.org/2.6/en/plug-in-convmatrix.html)
+
+- @param {array} kernel a matrix to weight the neighbors sum
+- @param {number} edgeHandling (optional) define how to sum pixels from outside the border
+- @param {function(Error, Jimp)} cb (optional) a callback for when complete
+
+```js
+import jimp from "jimp";
+
+async function main() {
+ const image = await jimp.read("test/image.png");
+
+ image.convolution(
+ [
+ [-1, -1, -1],
+ [-1, 8, -1],
+ [-1, -1, -1],
+ ],
+ jimp.EDGE_EXTEND
+ );
+}
+
+main();
+```
+
+## opaque
+
+Set the alpha channel on every pixel to fully opaque
+
+- @param {function(Error, Jimp)} cb (optional) a callback for when complete
+
+```js
+import jimp from "jimp";
+
+async function main() {
+ const image = await jimp.read("test/image.png");
+
+ image.opaque();
+}
+
+main();
+```
+
+## pixelate
+
+Pixelates the image or a region
+
+- @param {number} size the size of the pixels
+- @param {number} x (optional) the x position of the region to pixelate
+- @param {number} y (optional) the y position of the region to pixelate
+- @param {number} w (optional) the width of the region to pixelate
+- @param {number} h (optional) the height of the region to pixelate
+- @param {function(Error, Jimp)} cb (optional) a callback for when complete
+
+```js
+import jimp from "jimp";
+
+async function main() {
+ const image = await jimp.read("test/image.png");
+
+ image.pixelate(10);
+}
+
+main();
+```
+
+## convolute
+
+Applies a convolution kernel to the image or a region
+
+- @param {array} kernel the convolution kernel
+- @param {number} x (optional) the x position of the region to apply convolution to
+- @param {number} y (optional) the y position of the region to apply convolution to
+- @param {number} w (optional) the width of the region to apply convolution to
+- @param {number} h (optional) the height of the region to apply convolution to
+- @param {function(Error, Jimp)} cb (optional) a callback for when complete
+
+```js
+import jimp from "jimp";
+
+async function main() {
+ const image = await jimp.read("test/image.png");
+
+ // make me better
+ image.pixelate(kernal);
+}
+
+main();
+```
diff --git a/node_modules/@jimp/plugin-color/dist/index.js b/node_modules/@jimp/plugin-color/dist/index.js
new file mode 100644
index 00000000..e733f3ad
--- /dev/null
+++ b/node_modules/@jimp/plugin-color/dist/index.js
@@ -0,0 +1,567 @@
+"use strict";
+
+var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports["default"] = void 0;
+
+var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
+
+var _tinycolor = _interopRequireDefault(require("tinycolor2"));
+
+var _utils = require("@jimp/utils");
+
+function applyKernel(im, kernel, x, y) {
+ var value = [0, 0, 0];
+ var size = (kernel.length - 1) / 2;
+
+ for (var kx = 0; kx < kernel.length; kx += 1) {
+ for (var ky = 0; ky < kernel[kx].length; ky += 1) {
+ var idx = im.getPixelIndex(x + kx - size, y + ky - size);
+ value[0] += im.bitmap.data[idx] * kernel[kx][ky];
+ value[1] += im.bitmap.data[idx + 1] * kernel[kx][ky];
+ value[2] += im.bitmap.data[idx + 2] * kernel[kx][ky];
+ }
+ }
+
+ return value;
+}
+
+var isDef = function isDef(v) {
+ return typeof v !== "undefined" && v !== null;
+};
+
+function greyscale(cb) {
+ this.scanQuiet(0, 0, this.bitmap.width, this.bitmap.height, function (x, y, idx) {
+ var grey = parseInt(0.2126 * this.bitmap.data[idx] + 0.7152 * this.bitmap.data[idx + 1] + 0.0722 * this.bitmap.data[idx + 2], 10);
+ this.bitmap.data[idx] = grey;
+ this.bitmap.data[idx + 1] = grey;
+ this.bitmap.data[idx + 2] = grey;
+ });
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+}
+
+function mix(clr, clr2) {
+ var p = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 50;
+ return {
+ r: (clr2.r - clr.r) * (p / 100) + clr.r,
+ g: (clr2.g - clr.g) * (p / 100) + clr.g,
+ b: (clr2.b - clr.b) * (p / 100) + clr.b
+ };
+}
+
+function colorFn(actions, cb) {
+ var _this = this;
+
+ if (!actions || !Array.isArray(actions)) {
+ return _utils.throwError.call(this, "actions must be an array", cb);
+ }
+
+ actions = actions.map(function (action) {
+ if (action.apply === "xor" || action.apply === "mix") {
+ action.params[0] = (0, _tinycolor["default"])(action.params[0]).toRgb();
+ }
+
+ return action;
+ });
+ this.scanQuiet(0, 0, this.bitmap.width, this.bitmap.height, function (x, y, idx) {
+ var clr = {
+ r: _this.bitmap.data[idx],
+ g: _this.bitmap.data[idx + 1],
+ b: _this.bitmap.data[idx + 2]
+ };
+
+ var colorModifier = function colorModifier(i, amount) {
+ return _this.constructor.limit255(clr[i] + amount);
+ };
+
+ actions.forEach(function (action) {
+ if (action.apply === "mix") {
+ clr = mix(clr, action.params[0], action.params[1]);
+ } else if (action.apply === "tint") {
+ clr = mix(clr, {
+ r: 255,
+ g: 255,
+ b: 255
+ }, action.params[0]);
+ } else if (action.apply === "shade") {
+ clr = mix(clr, {
+ r: 0,
+ g: 0,
+ b: 0
+ }, action.params[0]);
+ } else if (action.apply === "xor") {
+ clr = {
+ r: clr.r ^ action.params[0].r,
+ g: clr.g ^ action.params[0].g,
+ b: clr.b ^ action.params[0].b
+ };
+ } else if (action.apply === "red") {
+ clr.r = colorModifier("r", action.params[0]);
+ } else if (action.apply === "green") {
+ clr.g = colorModifier("g", action.params[0]);
+ } else if (action.apply === "blue") {
+ clr.b = colorModifier("b", action.params[0]);
+ } else {
+ var _clr;
+
+ if (action.apply === "hue") {
+ action.apply = "spin";
+ }
+
+ clr = (0, _tinycolor["default"])(clr);
+
+ if (!clr[action.apply]) {
+ return _utils.throwError.call(_this, "action " + action.apply + " not supported", cb);
+ }
+
+ clr = (_clr = clr)[action.apply].apply(_clr, (0, _toConsumableArray2["default"])(action.params)).toRgb();
+ }
+ });
+ _this.bitmap.data[idx] = clr.r;
+ _this.bitmap.data[idx + 1] = clr.g;
+ _this.bitmap.data[idx + 2] = clr.b;
+ });
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+}
+
+var _default = function _default() {
+ return {
+ /**
+ * Adjusts the brightness of the image
+ * @param {number} val the amount to adjust the brightness, a number between -1 and +1
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp }this for chaining of methods
+ */
+ brightness: function brightness(val, cb) {
+ if (typeof val !== "number") {
+ return _utils.throwError.call(this, "val must be numbers", cb);
+ }
+
+ if (val < -1 || val > +1) {
+ return _utils.throwError.call(this, "val must be a number between -1 and +1", cb);
+ }
+
+ this.scanQuiet(0, 0, this.bitmap.width, this.bitmap.height, function (x, y, idx) {
+ if (val < 0.0) {
+ this.bitmap.data[idx] *= 1 + val;
+ this.bitmap.data[idx + 1] *= 1 + val;
+ this.bitmap.data[idx + 2] *= 1 + val;
+ } else {
+ this.bitmap.data[idx] += (255 - this.bitmap.data[idx]) * val;
+ this.bitmap.data[idx + 1] += (255 - this.bitmap.data[idx + 1]) * val;
+ this.bitmap.data[idx + 2] += (255 - this.bitmap.data[idx + 2]) * val;
+ }
+ });
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+
+ /**
+ * Adjusts the contrast of the image
+ * @param {number} val the amount to adjust the contrast, a number between -1 and +1
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp }this for chaining of methods
+ */
+ contrast: function contrast(val, cb) {
+ if (typeof val !== "number") {
+ return _utils.throwError.call(this, "val must be numbers", cb);
+ }
+
+ if (val < -1 || val > +1) {
+ return _utils.throwError.call(this, "val must be a number between -1 and +1", cb);
+ }
+
+ var factor = (val + 1) / (1 - val);
+
+ function adjust(value) {
+ value = Math.floor(factor * (value - 127) + 127);
+ return value < 0 ? 0 : value > 255 ? 255 : value;
+ }
+
+ this.scanQuiet(0, 0, this.bitmap.width, this.bitmap.height, function (x, y, idx) {
+ this.bitmap.data[idx] = adjust(this.bitmap.data[idx]);
+ this.bitmap.data[idx + 1] = adjust(this.bitmap.data[idx + 1]);
+ this.bitmap.data[idx + 2] = adjust(this.bitmap.data[idx + 2]);
+ });
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+
+ /**
+ * Apply a posterize effect
+ * @param {number} n the amount to adjust the contrast, minimum threshold is two
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp }this for chaining of methods
+ */
+ posterize: function posterize(n, cb) {
+ if (typeof n !== "number") {
+ return _utils.throwError.call(this, "n must be numbers", cb);
+ }
+
+ if (n < 2) {
+ n = 2;
+ } // minimum of 2 levels
+
+
+ this.scanQuiet(0, 0, this.bitmap.width, this.bitmap.height, function (x, y, idx) {
+ this.bitmap.data[idx] = Math.floor(this.bitmap.data[idx] / 255 * (n - 1)) / (n - 1) * 255;
+ this.bitmap.data[idx + 1] = Math.floor(this.bitmap.data[idx + 1] / 255 * (n - 1)) / (n - 1) * 255;
+ this.bitmap.data[idx + 2] = Math.floor(this.bitmap.data[idx + 2] / 255 * (n - 1)) / (n - 1) * 255;
+ });
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+
+ /**
+ * Removes colour from the image using ITU Rec 709 luminance values
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp }this for chaining of methods
+ */
+ greyscale: greyscale,
+ // Alias of greyscale for our American friends
+ grayscale: greyscale,
+
+ /**
+ * Multiplies the opacity of each pixel by a factor between 0 and 1
+ * @param {number} f A number, the factor by which to multiply the opacity of each pixel
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp }this for chaining of methods
+ */
+ opacity: function opacity(f, cb) {
+ if (typeof f !== "number") return _utils.throwError.call(this, "f must be a number", cb);
+ if (f < 0 || f > 1) return _utils.throwError.call(this, "f must be a number from 0 to 1", cb);
+ this.scanQuiet(0, 0, this.bitmap.width, this.bitmap.height, function (x, y, idx) {
+ var v = this.bitmap.data[idx + 3] * f;
+ this.bitmap.data[idx + 3] = v;
+ });
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+
+ /**
+ * Applies a sepia tone to the image
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp }this for chaining of methods
+ */
+ sepia: function sepia(cb) {
+ this.scanQuiet(0, 0, this.bitmap.width, this.bitmap.height, function (x, y, idx) {
+ var red = this.bitmap.data[idx];
+ var green = this.bitmap.data[idx + 1];
+ var blue = this.bitmap.data[idx + 2];
+ red = red * 0.393 + green * 0.769 + blue * 0.189;
+ green = red * 0.349 + green * 0.686 + blue * 0.168;
+ blue = red * 0.272 + green * 0.534 + blue * 0.131;
+ this.bitmap.data[idx] = red < 255 ? red : 255;
+ this.bitmap.data[idx + 1] = green < 255 ? green : 255;
+ this.bitmap.data[idx + 2] = blue < 255 ? blue : 255;
+ });
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+
+ /**
+ * Fades each pixel by a factor between 0 and 1
+ * @param {number} f A number from 0 to 1. 0 will haven no effect. 1 will turn the image completely transparent.
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp }this for chaining of methods
+ */
+ fade: function fade(f, cb) {
+ if (typeof f !== "number") {
+ return _utils.throwError.call(this, "f must be a number", cb);
+ }
+
+ if (f < 0 || f > 1) {
+ return _utils.throwError.call(this, "f must be a number from 0 to 1", cb);
+ } // this method is an alternative to opacity (which may be deprecated)
+
+
+ this.opacity(1 - f);
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+
+ /**
+ * Adds each element of the image to its local neighbors, weighted by the kernel
+ * @param {array} kernel a matrix to weight the neighbors sum
+ * @param {number} edgeHandling (optional) define how to sum pixels from outside the border
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp }this for chaining of methods
+ */
+ convolution: function convolution(kernel, edgeHandling, cb) {
+ if (typeof edgeHandling === "function" && typeof cb === "undefined") {
+ cb = edgeHandling;
+ edgeHandling = null;
+ }
+
+ if (!edgeHandling) {
+ edgeHandling = this.constructor.EDGE_EXTEND;
+ }
+
+ var newData = Buffer.from(this.bitmap.data);
+ var kRows = kernel.length;
+ var kCols = kernel[0].length;
+ var rowEnd = Math.floor(kRows / 2);
+ var colEnd = Math.floor(kCols / 2);
+ var rowIni = -rowEnd;
+ var colIni = -colEnd;
+ var weight;
+ var rSum;
+ var gSum;
+ var bSum;
+ var ri;
+ var gi;
+ var bi;
+ var xi;
+ var yi;
+ var idxi;
+ this.scanQuiet(0, 0, this.bitmap.width, this.bitmap.height, function (x, y, idx) {
+ bSum = 0;
+ gSum = 0;
+ rSum = 0;
+
+ for (var row = rowIni; row <= rowEnd; row++) {
+ for (var col = colIni; col <= colEnd; col++) {
+ xi = x + col;
+ yi = y + row;
+ weight = kernel[row + rowEnd][col + colEnd];
+ idxi = this.getPixelIndex(xi, yi, edgeHandling);
+
+ if (idxi === -1) {
+ bi = 0;
+ gi = 0;
+ ri = 0;
+ } else {
+ ri = this.bitmap.data[idxi + 0];
+ gi = this.bitmap.data[idxi + 1];
+ bi = this.bitmap.data[idxi + 2];
+ }
+
+ rSum += weight * ri;
+ gSum += weight * gi;
+ bSum += weight * bi;
+ }
+ }
+
+ if (rSum < 0) {
+ rSum = 0;
+ }
+
+ if (gSum < 0) {
+ gSum = 0;
+ }
+
+ if (bSum < 0) {
+ bSum = 0;
+ }
+
+ if (rSum > 255) {
+ rSum = 255;
+ }
+
+ if (gSum > 255) {
+ gSum = 255;
+ }
+
+ if (bSum > 255) {
+ bSum = 255;
+ }
+
+ newData[idx + 0] = rSum;
+ newData[idx + 1] = gSum;
+ newData[idx + 2] = bSum;
+ });
+ this.bitmap.data = newData;
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+
+ /**
+ * Set the alpha channel on every pixel to fully opaque
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp }this for chaining of methods
+ */
+ opaque: function opaque(cb) {
+ this.scanQuiet(0, 0, this.bitmap.width, this.bitmap.height, function (x, y, idx) {
+ this.bitmap.data[idx + 3] = 255;
+ });
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+
+ /**
+ * Pixelates the image or a region
+ * @param {number} size the size of the pixels
+ * @param {number} x (optional) the x position of the region to pixelate
+ * @param {number} y (optional) the y position of the region to pixelate
+ * @param {number} w (optional) the width of the region to pixelate
+ * @param {number} h (optional) the height of the region to pixelate
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp }this for chaining of methods
+ */
+ pixelate: function pixelate(size, x, y, w, h, cb) {
+ if (typeof x === "function") {
+ cb = x;
+ h = null;
+ w = null;
+ y = null;
+ x = null;
+ } else {
+ if (typeof size !== "number") {
+ return _utils.throwError.call(this, "size must be a number", cb);
+ }
+
+ if (isDef(x) && typeof x !== "number") {
+ return _utils.throwError.call(this, "x must be a number", cb);
+ }
+
+ if (isDef(y) && typeof y !== "number") {
+ return _utils.throwError.call(this, "y must be a number", cb);
+ }
+
+ if (isDef(w) && typeof w !== "number") {
+ return _utils.throwError.call(this, "w must be a number", cb);
+ }
+
+ if (isDef(h) && typeof h !== "number") {
+ return _utils.throwError.call(this, "h must be a number", cb);
+ }
+ }
+
+ var kernel = [[1 / 16, 2 / 16, 1 / 16], [2 / 16, 4 / 16, 2 / 16], [1 / 16, 2 / 16, 1 / 16]];
+ x = x || 0;
+ y = y || 0;
+ w = isDef(w) ? w : this.bitmap.width - x;
+ h = isDef(h) ? h : this.bitmap.height - y;
+ var source = this.cloneQuiet();
+ this.scanQuiet(x, y, w, h, function (xx, yx, idx) {
+ xx = size * Math.floor(xx / size);
+ yx = size * Math.floor(yx / size);
+ var value = applyKernel(source, kernel, xx, yx);
+ this.bitmap.data[idx] = value[0];
+ this.bitmap.data[idx + 1] = value[1];
+ this.bitmap.data[idx + 2] = value[2];
+ });
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+
+ /**
+ * Applies a convolution kernel to the image or a region
+ * @param {array} kernel the convolution kernel
+ * @param {number} x (optional) the x position of the region to apply convolution to
+ * @param {number} y (optional) the y position of the region to apply convolution to
+ * @param {number} w (optional) the width of the region to apply convolution to
+ * @param {number} h (optional) the height of the region to apply convolution to
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp }this for chaining of methods
+ */
+ convolute: function convolute(kernel, x, y, w, h, cb) {
+ if (!Array.isArray(kernel)) return _utils.throwError.call(this, "the kernel must be an array", cb);
+
+ if (typeof x === "function") {
+ cb = x;
+ x = null;
+ y = null;
+ w = null;
+ h = null;
+ } else {
+ if (isDef(x) && typeof x !== "number") {
+ return _utils.throwError.call(this, "x must be a number", cb);
+ }
+
+ if (isDef(y) && typeof y !== "number") {
+ return _utils.throwError.call(this, "y must be a number", cb);
+ }
+
+ if (isDef(w) && typeof w !== "number") {
+ return _utils.throwError.call(this, "w must be a number", cb);
+ }
+
+ if (isDef(h) && typeof h !== "number") {
+ return _utils.throwError.call(this, "h must be a number", cb);
+ }
+ }
+
+ var ksize = (kernel.length - 1) / 2;
+ x = isDef(x) ? x : ksize;
+ y = isDef(y) ? y : ksize;
+ w = isDef(w) ? w : this.bitmap.width - x;
+ h = isDef(h) ? h : this.bitmap.height - y;
+ var source = this.cloneQuiet();
+ this.scanQuiet(x, y, w, h, function (xx, yx, idx) {
+ var value = applyKernel(source, kernel, xx, yx);
+ this.bitmap.data[idx] = this.constructor.limit255(value[0]);
+ this.bitmap.data[idx + 1] = this.constructor.limit255(value[1]);
+ this.bitmap.data[idx + 2] = this.constructor.limit255(value[2]);
+ });
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+
+ /**
+ * Apply multiple color modification rules
+ * @param {array} actions list of color modification rules, in following format: { apply: '', params: [ ] }
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp }this for chaining of methods
+ */
+ color: colorFn,
+ colour: colorFn
+ };
+};
+
+exports["default"] = _default;
+module.exports = exports.default;
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-color/dist/index.js.map b/node_modules/@jimp/plugin-color/dist/index.js.map
new file mode 100644
index 00000000..d477bda8
--- /dev/null
+++ b/node_modules/@jimp/plugin-color/dist/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/index.js"],"names":["applyKernel","im","kernel","x","y","value","size","length","kx","ky","idx","getPixelIndex","bitmap","data","isDef","v","greyscale","cb","scanQuiet","width","height","grey","parseInt","call","mix","clr","clr2","p","r","g","b","colorFn","actions","Array","isArray","throwError","map","action","apply","params","toRgb","colorModifier","i","amount","constructor","limit255","forEach","brightness","val","contrast","factor","adjust","Math","floor","posterize","n","grayscale","opacity","f","sepia","red","green","blue","fade","convolution","edgeHandling","EDGE_EXTEND","newData","Buffer","from","kRows","kCols","rowEnd","colEnd","rowIni","colIni","weight","rSum","gSum","bSum","ri","gi","bi","xi","yi","idxi","row","col","opaque","pixelate","w","h","source","cloneQuiet","xx","yx","convolute","ksize","color","colour"],"mappings":"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","sourcesContent":["import tinyColor from \"tinycolor2\";\nimport { throwError, isNodePattern } from \"@jimp/utils\";\n\nfunction applyKernel(im, kernel, x, y) {\n const value = [0, 0, 0];\n const size = (kernel.length - 1) / 2;\n\n for (let kx = 0; kx < kernel.length; kx += 1) {\n for (let ky = 0; ky < kernel[kx].length; ky += 1) {\n const idx = im.getPixelIndex(x + kx - size, y + ky - size);\n\n value[0] += im.bitmap.data[idx] * kernel[kx][ky];\n value[1] += im.bitmap.data[idx + 1] * kernel[kx][ky];\n value[2] += im.bitmap.data[idx + 2] * kernel[kx][ky];\n }\n }\n\n return value;\n}\n\nconst isDef = (v) => typeof v !== \"undefined\" && v !== null;\n\nfunction greyscale(cb) {\n this.scanQuiet(\n 0,\n 0,\n this.bitmap.width,\n this.bitmap.height,\n function (x, y, idx) {\n const grey = parseInt(\n 0.2126 * this.bitmap.data[idx] +\n 0.7152 * this.bitmap.data[idx + 1] +\n 0.0722 * this.bitmap.data[idx + 2],\n 10\n );\n\n this.bitmap.data[idx] = grey;\n this.bitmap.data[idx + 1] = grey;\n this.bitmap.data[idx + 2] = grey;\n }\n );\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n}\n\nfunction mix(clr, clr2, p = 50) {\n return {\n r: (clr2.r - clr.r) * (p / 100) + clr.r,\n g: (clr2.g - clr.g) * (p / 100) + clr.g,\n b: (clr2.b - clr.b) * (p / 100) + clr.b,\n };\n}\n\nfunction colorFn(actions, cb) {\n if (!actions || !Array.isArray(actions)) {\n return throwError.call(this, \"actions must be an array\", cb);\n }\n\n actions = actions.map((action) => {\n if (action.apply === \"xor\" || action.apply === \"mix\") {\n action.params[0] = tinyColor(action.params[0]).toRgb();\n }\n\n return action;\n });\n\n this.scanQuiet(0, 0, this.bitmap.width, this.bitmap.height, (x, y, idx) => {\n let clr = {\n r: this.bitmap.data[idx],\n g: this.bitmap.data[idx + 1],\n b: this.bitmap.data[idx + 2],\n };\n\n const colorModifier = (i, amount) =>\n this.constructor.limit255(clr[i] + amount);\n\n actions.forEach((action) => {\n if (action.apply === \"mix\") {\n clr = mix(clr, action.params[0], action.params[1]);\n } else if (action.apply === \"tint\") {\n clr = mix(clr, { r: 255, g: 255, b: 255 }, action.params[0]);\n } else if (action.apply === \"shade\") {\n clr = mix(clr, { r: 0, g: 0, b: 0 }, action.params[0]);\n } else if (action.apply === \"xor\") {\n clr = {\n r: clr.r ^ action.params[0].r,\n g: clr.g ^ action.params[0].g,\n b: clr.b ^ action.params[0].b,\n };\n } else if (action.apply === \"red\") {\n clr.r = colorModifier(\"r\", action.params[0]);\n } else if (action.apply === \"green\") {\n clr.g = colorModifier(\"g\", action.params[0]);\n } else if (action.apply === \"blue\") {\n clr.b = colorModifier(\"b\", action.params[0]);\n } else {\n if (action.apply === \"hue\") {\n action.apply = \"spin\";\n }\n\n clr = tinyColor(clr);\n\n if (!clr[action.apply]) {\n return throwError.call(\n this,\n \"action \" + action.apply + \" not supported\",\n cb\n );\n }\n\n clr = clr[action.apply](...action.params).toRgb();\n }\n });\n\n this.bitmap.data[idx] = clr.r;\n this.bitmap.data[idx + 1] = clr.g;\n this.bitmap.data[idx + 2] = clr.b;\n });\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n}\n\nexport default () => ({\n /**\n * Adjusts the brightness of the image\n * @param {number} val the amount to adjust the brightness, a number between -1 and +1\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp }this for chaining of methods\n */\n brightness(val, cb) {\n if (typeof val !== \"number\") {\n return throwError.call(this, \"val must be numbers\", cb);\n }\n\n if (val < -1 || val > +1) {\n return throwError.call(\n this,\n \"val must be a number between -1 and +1\",\n cb\n );\n }\n\n this.scanQuiet(\n 0,\n 0,\n this.bitmap.width,\n this.bitmap.height,\n function (x, y, idx) {\n if (val < 0.0) {\n this.bitmap.data[idx] *= 1 + val;\n this.bitmap.data[idx + 1] *= 1 + val;\n this.bitmap.data[idx + 2] *= 1 + val;\n } else {\n this.bitmap.data[idx] += (255 - this.bitmap.data[idx]) * val;\n this.bitmap.data[idx + 1] += (255 - this.bitmap.data[idx + 1]) * val;\n this.bitmap.data[idx + 2] += (255 - this.bitmap.data[idx + 2]) * val;\n }\n }\n );\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n },\n\n /**\n * Adjusts the contrast of the image\n * @param {number} val the amount to adjust the contrast, a number between -1 and +1\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp }this for chaining of methods\n */\n contrast(val, cb) {\n if (typeof val !== \"number\") {\n return throwError.call(this, \"val must be numbers\", cb);\n }\n\n if (val < -1 || val > +1) {\n return throwError.call(\n this,\n \"val must be a number between -1 and +1\",\n cb\n );\n }\n\n const factor = (val + 1) / (1 - val);\n\n function adjust(value) {\n value = Math.floor(factor * (value - 127) + 127);\n\n return value < 0 ? 0 : value > 255 ? 255 : value;\n }\n\n this.scanQuiet(\n 0,\n 0,\n this.bitmap.width,\n this.bitmap.height,\n function (x, y, idx) {\n this.bitmap.data[idx] = adjust(this.bitmap.data[idx]);\n this.bitmap.data[idx + 1] = adjust(this.bitmap.data[idx + 1]);\n this.bitmap.data[idx + 2] = adjust(this.bitmap.data[idx + 2]);\n }\n );\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n },\n\n /**\n * Apply a posterize effect\n * @param {number} n the amount to adjust the contrast, minimum threshold is two\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp }this for chaining of methods\n */\n posterize(n, cb) {\n if (typeof n !== \"number\") {\n return throwError.call(this, \"n must be numbers\", cb);\n }\n\n if (n < 2) {\n n = 2;\n } // minimum of 2 levels\n\n this.scanQuiet(\n 0,\n 0,\n this.bitmap.width,\n this.bitmap.height,\n function (x, y, idx) {\n this.bitmap.data[idx] =\n (Math.floor((this.bitmap.data[idx] / 255) * (n - 1)) / (n - 1)) * 255;\n this.bitmap.data[idx + 1] =\n (Math.floor((this.bitmap.data[idx + 1] / 255) * (n - 1)) / (n - 1)) *\n 255;\n this.bitmap.data[idx + 2] =\n (Math.floor((this.bitmap.data[idx + 2] / 255) * (n - 1)) / (n - 1)) *\n 255;\n }\n );\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n },\n\n /**\n * Removes colour from the image using ITU Rec 709 luminance values\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp }this for chaining of methods\n */\n greyscale,\n\n // Alias of greyscale for our American friends\n grayscale: greyscale,\n\n /**\n * Multiplies the opacity of each pixel by a factor between 0 and 1\n * @param {number} f A number, the factor by which to multiply the opacity of each pixel\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp }this for chaining of methods\n */\n opacity(f, cb) {\n if (typeof f !== \"number\")\n return throwError.call(this, \"f must be a number\", cb);\n if (f < 0 || f > 1)\n return throwError.call(this, \"f must be a number from 0 to 1\", cb);\n\n this.scanQuiet(\n 0,\n 0,\n this.bitmap.width,\n this.bitmap.height,\n function (x, y, idx) {\n const v = this.bitmap.data[idx + 3] * f;\n this.bitmap.data[idx + 3] = v;\n }\n );\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n },\n\n /**\n * Applies a sepia tone to the image\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp }this for chaining of methods\n */\n sepia(cb) {\n this.scanQuiet(\n 0,\n 0,\n this.bitmap.width,\n this.bitmap.height,\n function (x, y, idx) {\n let red = this.bitmap.data[idx];\n let green = this.bitmap.data[idx + 1];\n let blue = this.bitmap.data[idx + 2];\n\n red = red * 0.393 + green * 0.769 + blue * 0.189;\n green = red * 0.349 + green * 0.686 + blue * 0.168;\n blue = red * 0.272 + green * 0.534 + blue * 0.131;\n\n this.bitmap.data[idx] = red < 255 ? red : 255;\n this.bitmap.data[idx + 1] = green < 255 ? green : 255;\n this.bitmap.data[idx + 2] = blue < 255 ? blue : 255;\n }\n );\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n },\n\n /**\n * Fades each pixel by a factor between 0 and 1\n * @param {number} f A number from 0 to 1. 0 will haven no effect. 1 will turn the image completely transparent.\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp }this for chaining of methods\n */\n fade(f, cb) {\n if (typeof f !== \"number\") {\n return throwError.call(this, \"f must be a number\", cb);\n }\n\n if (f < 0 || f > 1) {\n return throwError.call(this, \"f must be a number from 0 to 1\", cb);\n }\n\n // this method is an alternative to opacity (which may be deprecated)\n this.opacity(1 - f);\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n },\n\n /**\n * Adds each element of the image to its local neighbors, weighted by the kernel\n * @param {array} kernel a matrix to weight the neighbors sum\n * @param {number} edgeHandling (optional) define how to sum pixels from outside the border\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp }this for chaining of methods\n */\n convolution(kernel, edgeHandling, cb) {\n if (typeof edgeHandling === \"function\" && typeof cb === \"undefined\") {\n cb = edgeHandling;\n edgeHandling = null;\n }\n\n if (!edgeHandling) {\n edgeHandling = this.constructor.EDGE_EXTEND;\n }\n\n const newData = Buffer.from(this.bitmap.data);\n const kRows = kernel.length;\n const kCols = kernel[0].length;\n const rowEnd = Math.floor(kRows / 2);\n const colEnd = Math.floor(kCols / 2);\n const rowIni = -rowEnd;\n const colIni = -colEnd;\n\n let weight;\n let rSum;\n let gSum;\n let bSum;\n let ri;\n let gi;\n let bi;\n let xi;\n let yi;\n let idxi;\n\n this.scanQuiet(\n 0,\n 0,\n this.bitmap.width,\n this.bitmap.height,\n function (x, y, idx) {\n bSum = 0;\n gSum = 0;\n rSum = 0;\n\n for (let row = rowIni; row <= rowEnd; row++) {\n for (let col = colIni; col <= colEnd; col++) {\n xi = x + col;\n yi = y + row;\n weight = kernel[row + rowEnd][col + colEnd];\n idxi = this.getPixelIndex(xi, yi, edgeHandling);\n\n if (idxi === -1) {\n bi = 0;\n gi = 0;\n ri = 0;\n } else {\n ri = this.bitmap.data[idxi + 0];\n gi = this.bitmap.data[idxi + 1];\n bi = this.bitmap.data[idxi + 2];\n }\n\n rSum += weight * ri;\n gSum += weight * gi;\n bSum += weight * bi;\n }\n }\n\n if (rSum < 0) {\n rSum = 0;\n }\n\n if (gSum < 0) {\n gSum = 0;\n }\n\n if (bSum < 0) {\n bSum = 0;\n }\n\n if (rSum > 255) {\n rSum = 255;\n }\n\n if (gSum > 255) {\n gSum = 255;\n }\n\n if (bSum > 255) {\n bSum = 255;\n }\n\n newData[idx + 0] = rSum;\n newData[idx + 1] = gSum;\n newData[idx + 2] = bSum;\n }\n );\n\n this.bitmap.data = newData;\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n },\n\n /**\n * Set the alpha channel on every pixel to fully opaque\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp }this for chaining of methods\n */\n opaque(cb) {\n this.scanQuiet(\n 0,\n 0,\n this.bitmap.width,\n this.bitmap.height,\n function (x, y, idx) {\n this.bitmap.data[idx + 3] = 255;\n }\n );\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n },\n\n /**\n * Pixelates the image or a region\n * @param {number} size the size of the pixels\n * @param {number} x (optional) the x position of the region to pixelate\n * @param {number} y (optional) the y position of the region to pixelate\n * @param {number} w (optional) the width of the region to pixelate\n * @param {number} h (optional) the height of the region to pixelate\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp }this for chaining of methods\n */\n pixelate(size, x, y, w, h, cb) {\n if (typeof x === \"function\") {\n cb = x;\n h = null;\n w = null;\n y = null;\n x = null;\n } else {\n if (typeof size !== \"number\") {\n return throwError.call(this, \"size must be a number\", cb);\n }\n\n if (isDef(x) && typeof x !== \"number\") {\n return throwError.call(this, \"x must be a number\", cb);\n }\n\n if (isDef(y) && typeof y !== \"number\") {\n return throwError.call(this, \"y must be a number\", cb);\n }\n\n if (isDef(w) && typeof w !== \"number\") {\n return throwError.call(this, \"w must be a number\", cb);\n }\n\n if (isDef(h) && typeof h !== \"number\") {\n return throwError.call(this, \"h must be a number\", cb);\n }\n }\n\n const kernel = [\n [1 / 16, 2 / 16, 1 / 16],\n [2 / 16, 4 / 16, 2 / 16],\n [1 / 16, 2 / 16, 1 / 16],\n ];\n\n x = x || 0;\n y = y || 0;\n w = isDef(w) ? w : this.bitmap.width - x;\n h = isDef(h) ? h : this.bitmap.height - y;\n\n const source = this.cloneQuiet();\n\n this.scanQuiet(x, y, w, h, function (xx, yx, idx) {\n xx = size * Math.floor(xx / size);\n yx = size * Math.floor(yx / size);\n\n const value = applyKernel(source, kernel, xx, yx);\n\n this.bitmap.data[idx] = value[0];\n this.bitmap.data[idx + 1] = value[1];\n this.bitmap.data[idx + 2] = value[2];\n });\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n },\n\n /**\n * Applies a convolution kernel to the image or a region\n * @param {array} kernel the convolution kernel\n * @param {number} x (optional) the x position of the region to apply convolution to\n * @param {number} y (optional) the y position of the region to apply convolution to\n * @param {number} w (optional) the width of the region to apply convolution to\n * @param {number} h (optional) the height of the region to apply convolution to\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp }this for chaining of methods\n */\n convolute(kernel, x, y, w, h, cb) {\n if (!Array.isArray(kernel))\n return throwError.call(this, \"the kernel must be an array\", cb);\n\n if (typeof x === \"function\") {\n cb = x;\n x = null;\n y = null;\n w = null;\n h = null;\n } else {\n if (isDef(x) && typeof x !== \"number\") {\n return throwError.call(this, \"x must be a number\", cb);\n }\n\n if (isDef(y) && typeof y !== \"number\") {\n return throwError.call(this, \"y must be a number\", cb);\n }\n\n if (isDef(w) && typeof w !== \"number\") {\n return throwError.call(this, \"w must be a number\", cb);\n }\n\n if (isDef(h) && typeof h !== \"number\") {\n return throwError.call(this, \"h must be a number\", cb);\n }\n }\n\n const ksize = (kernel.length - 1) / 2;\n\n x = isDef(x) ? x : ksize;\n y = isDef(y) ? y : ksize;\n w = isDef(w) ? w : this.bitmap.width - x;\n h = isDef(h) ? h : this.bitmap.height - y;\n\n const source = this.cloneQuiet();\n\n this.scanQuiet(x, y, w, h, function (xx, yx, idx) {\n const value = applyKernel(source, kernel, xx, yx);\n\n this.bitmap.data[idx] = this.constructor.limit255(value[0]);\n this.bitmap.data[idx + 1] = this.constructor.limit255(value[1]);\n this.bitmap.data[idx + 2] = this.constructor.limit255(value[2]);\n });\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n },\n\n /**\n * Apply multiple color modification rules\n * @param {array} actions list of color modification rules, in following format: { apply: '', params: [ ] }\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp }this for chaining of methods\n */\n color: colorFn,\n colour: colorFn,\n});\n"],"file":"index.js"}
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-color/index.d.ts b/node_modules/@jimp/plugin-color/index.d.ts
new file mode 100644
index 00000000..44a4ce5e
--- /dev/null
+++ b/node_modules/@jimp/plugin-color/index.d.ts
@@ -0,0 +1,56 @@
+import { ImageCallback } from "@jimp/core";
+
+type ColorActionName =
+ | "mix"
+ | "tint"
+ | "shade"
+ | "xor"
+ | "red"
+ | "green"
+ | "blue"
+ | "hue";
+
+type ColorAction = {
+ apply: ColorActionName;
+ params: any;
+};
+
+interface Color {
+ brightness(val: number, cb?: ImageCallback): this;
+ contrast(val: number, cb?: ImageCallback): this;
+ posterize(n: number, cb?: ImageCallback): this;
+ greyscale(cb?: ImageCallback): this;
+ grayscale(cb?: ImageCallback): this;
+ opacity(f: number, cb?: ImageCallback): this;
+ sepia(cb?: ImageCallback): this;
+ fade(f: number, cb?: ImageCallback): this;
+ convolution(kernel: number[][], cb?: ImageCallback): this;
+ convolution(
+ kernel: number[][],
+ edgeHandling: number,
+ cb?: ImageCallback
+ ): this;
+ opaque(cb?: ImageCallback): this;
+ pixelate(size: number, cb?: ImageCallback): this;
+ pixelate(
+ size: number,
+ x: number,
+ y: number,
+ w: number,
+ h: number,
+ cb?: ImageCallback
+ ): this;
+ convolute(kernel: number[][], cb?: ImageCallback): this;
+ convolute(
+ kernel: number[][],
+ x: number,
+ y: number,
+ w: number,
+ h: number,
+ cb?: ImageCallback
+ ): this;
+ color(actions: ColorAction[], cb?: ImageCallback): this;
+ colour(actions: ColorAction[], cb?: ImageCallback): this;
+}
+
+export default function (): Color;
diff --git a/node_modules/@jimp/plugin-color/package.json b/node_modules/@jimp/plugin-color/package.json
new file mode 100644
index 00000000..91891777
--- /dev/null
+++ b/node_modules/@jimp/plugin-color/package.json
@@ -0,0 +1,39 @@
+{
+ "name": "@jimp/plugin-color",
+ "version": "0.16.13",
+ "description": "Bitmap manipulation to adjust the color in an image.",
+ "main": "dist/index.js",
+ "module": "es/index.js",
+ "types": "index.d.ts",
+ "scripts": {
+ "test": "cross-env BABEL_ENV=test mocha --require @babel/register",
+ "test:watch": "npm run test -- --reporter min --watch",
+ "test:coverage": "nyc npm run test",
+ "build": "npm run build:node:production && npm run build:module",
+ "build:watch": "npm run build:node:debug -- -- --watch --verbose",
+ "build:debug": "npm run build:node:debug",
+ "build:module": "cross-env BABEL_ENV=module babel src -d es --source-maps --config-file ../../babel.config.js",
+ "build:node": "babel src -d dist --source-maps --config-file ../../babel.config.js",
+ "build:node:debug": "cross-env BABEL_ENV=development npm run build:node",
+ "build:node:production": "cross-env BABEL_ENV=production npm run build:node"
+ },
+ "author": "",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13",
+ "tinycolor2": "^1.4.1"
+ },
+ "devDependencies": {
+ "@jimp/custom": "^0.16.13",
+ "@jimp/test-utils": "^0.16.13",
+ "@jimp/types": "^0.16.13"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "gitHead": "9eec86086634329a072901dca3a800b850548572"
+}
diff --git a/node_modules/@jimp/plugin-color/src/index.js b/node_modules/@jimp/plugin-color/src/index.js
new file mode 100644
index 00000000..1531a2a1
--- /dev/null
+++ b/node_modules/@jimp/plugin-color/src/index.js
@@ -0,0 +1,630 @@
+import tinyColor from "tinycolor2";
+import { throwError, isNodePattern } from "@jimp/utils";
+
+function applyKernel(im, kernel, x, y) {
+ const value = [0, 0, 0];
+ const size = (kernel.length - 1) / 2;
+
+ for (let kx = 0; kx < kernel.length; kx += 1) {
+ for (let ky = 0; ky < kernel[kx].length; ky += 1) {
+ const idx = im.getPixelIndex(x + kx - size, y + ky - size);
+
+ value[0] += im.bitmap.data[idx] * kernel[kx][ky];
+ value[1] += im.bitmap.data[idx + 1] * kernel[kx][ky];
+ value[2] += im.bitmap.data[idx + 2] * kernel[kx][ky];
+ }
+ }
+
+ return value;
+}
+
+const isDef = (v) => typeof v !== "undefined" && v !== null;
+
+function greyscale(cb) {
+ this.scanQuiet(
+ 0,
+ 0,
+ this.bitmap.width,
+ this.bitmap.height,
+ function (x, y, idx) {
+ const grey = parseInt(
+ 0.2126 * this.bitmap.data[idx] +
+ 0.7152 * this.bitmap.data[idx + 1] +
+ 0.0722 * this.bitmap.data[idx + 2],
+ 10
+ );
+
+ this.bitmap.data[idx] = grey;
+ this.bitmap.data[idx + 1] = grey;
+ this.bitmap.data[idx + 2] = grey;
+ }
+ );
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+}
+
+function mix(clr, clr2, p = 50) {
+ return {
+ r: (clr2.r - clr.r) * (p / 100) + clr.r,
+ g: (clr2.g - clr.g) * (p / 100) + clr.g,
+ b: (clr2.b - clr.b) * (p / 100) + clr.b,
+ };
+}
+
+function colorFn(actions, cb) {
+ if (!actions || !Array.isArray(actions)) {
+ return throwError.call(this, "actions must be an array", cb);
+ }
+
+ actions = actions.map((action) => {
+ if (action.apply === "xor" || action.apply === "mix") {
+ action.params[0] = tinyColor(action.params[0]).toRgb();
+ }
+
+ return action;
+ });
+
+ this.scanQuiet(0, 0, this.bitmap.width, this.bitmap.height, (x, y, idx) => {
+ let clr = {
+ r: this.bitmap.data[idx],
+ g: this.bitmap.data[idx + 1],
+ b: this.bitmap.data[idx + 2],
+ };
+
+ const colorModifier = (i, amount) =>
+ this.constructor.limit255(clr[i] + amount);
+
+ actions.forEach((action) => {
+ if (action.apply === "mix") {
+ clr = mix(clr, action.params[0], action.params[1]);
+ } else if (action.apply === "tint") {
+ clr = mix(clr, { r: 255, g: 255, b: 255 }, action.params[0]);
+ } else if (action.apply === "shade") {
+ clr = mix(clr, { r: 0, g: 0, b: 0 }, action.params[0]);
+ } else if (action.apply === "xor") {
+ clr = {
+ r: clr.r ^ action.params[0].r,
+ g: clr.g ^ action.params[0].g,
+ b: clr.b ^ action.params[0].b,
+ };
+ } else if (action.apply === "red") {
+ clr.r = colorModifier("r", action.params[0]);
+ } else if (action.apply === "green") {
+ clr.g = colorModifier("g", action.params[0]);
+ } else if (action.apply === "blue") {
+ clr.b = colorModifier("b", action.params[0]);
+ } else {
+ if (action.apply === "hue") {
+ action.apply = "spin";
+ }
+
+ clr = tinyColor(clr);
+
+ if (!clr[action.apply]) {
+ return throwError.call(
+ this,
+ "action " + action.apply + " not supported",
+ cb
+ );
+ }
+
+ clr = clr[action.apply](...action.params).toRgb();
+ }
+ });
+
+ this.bitmap.data[idx] = clr.r;
+ this.bitmap.data[idx + 1] = clr.g;
+ this.bitmap.data[idx + 2] = clr.b;
+ });
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+}
+
+export default () => ({
+ /**
+ * Adjusts the brightness of the image
+ * @param {number} val the amount to adjust the brightness, a number between -1 and +1
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp }this for chaining of methods
+ */
+ brightness(val, cb) {
+ if (typeof val !== "number") {
+ return throwError.call(this, "val must be numbers", cb);
+ }
+
+ if (val < -1 || val > +1) {
+ return throwError.call(
+ this,
+ "val must be a number between -1 and +1",
+ cb
+ );
+ }
+
+ this.scanQuiet(
+ 0,
+ 0,
+ this.bitmap.width,
+ this.bitmap.height,
+ function (x, y, idx) {
+ if (val < 0.0) {
+ this.bitmap.data[idx] *= 1 + val;
+ this.bitmap.data[idx + 1] *= 1 + val;
+ this.bitmap.data[idx + 2] *= 1 + val;
+ } else {
+ this.bitmap.data[idx] += (255 - this.bitmap.data[idx]) * val;
+ this.bitmap.data[idx + 1] += (255 - this.bitmap.data[idx + 1]) * val;
+ this.bitmap.data[idx + 2] += (255 - this.bitmap.data[idx + 2]) * val;
+ }
+ }
+ );
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+
+ /**
+ * Adjusts the contrast of the image
+ * @param {number} val the amount to adjust the contrast, a number between -1 and +1
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp }this for chaining of methods
+ */
+ contrast(val, cb) {
+ if (typeof val !== "number") {
+ return throwError.call(this, "val must be numbers", cb);
+ }
+
+ if (val < -1 || val > +1) {
+ return throwError.call(
+ this,
+ "val must be a number between -1 and +1",
+ cb
+ );
+ }
+
+ const factor = (val + 1) / (1 - val);
+
+ function adjust(value) {
+ value = Math.floor(factor * (value - 127) + 127);
+
+ return value < 0 ? 0 : value > 255 ? 255 : value;
+ }
+
+ this.scanQuiet(
+ 0,
+ 0,
+ this.bitmap.width,
+ this.bitmap.height,
+ function (x, y, idx) {
+ this.bitmap.data[idx] = adjust(this.bitmap.data[idx]);
+ this.bitmap.data[idx + 1] = adjust(this.bitmap.data[idx + 1]);
+ this.bitmap.data[idx + 2] = adjust(this.bitmap.data[idx + 2]);
+ }
+ );
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+
+ /**
+ * Apply a posterize effect
+ * @param {number} n the amount to adjust the contrast, minimum threshold is two
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp }this for chaining of methods
+ */
+ posterize(n, cb) {
+ if (typeof n !== "number") {
+ return throwError.call(this, "n must be numbers", cb);
+ }
+
+ if (n < 2) {
+ n = 2;
+ } // minimum of 2 levels
+
+ this.scanQuiet(
+ 0,
+ 0,
+ this.bitmap.width,
+ this.bitmap.height,
+ function (x, y, idx) {
+ this.bitmap.data[idx] =
+ (Math.floor((this.bitmap.data[idx] / 255) * (n - 1)) / (n - 1)) * 255;
+ this.bitmap.data[idx + 1] =
+ (Math.floor((this.bitmap.data[idx + 1] / 255) * (n - 1)) / (n - 1)) *
+ 255;
+ this.bitmap.data[idx + 2] =
+ (Math.floor((this.bitmap.data[idx + 2] / 255) * (n - 1)) / (n - 1)) *
+ 255;
+ }
+ );
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+
+ /**
+ * Removes colour from the image using ITU Rec 709 luminance values
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp }this for chaining of methods
+ */
+ greyscale,
+
+ // Alias of greyscale for our American friends
+ grayscale: greyscale,
+
+ /**
+ * Multiplies the opacity of each pixel by a factor between 0 and 1
+ * @param {number} f A number, the factor by which to multiply the opacity of each pixel
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp }this for chaining of methods
+ */
+ opacity(f, cb) {
+ if (typeof f !== "number")
+ return throwError.call(this, "f must be a number", cb);
+ if (f < 0 || f > 1)
+ return throwError.call(this, "f must be a number from 0 to 1", cb);
+
+ this.scanQuiet(
+ 0,
+ 0,
+ this.bitmap.width,
+ this.bitmap.height,
+ function (x, y, idx) {
+ const v = this.bitmap.data[idx + 3] * f;
+ this.bitmap.data[idx + 3] = v;
+ }
+ );
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+
+ /**
+ * Applies a sepia tone to the image
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp }this for chaining of methods
+ */
+ sepia(cb) {
+ this.scanQuiet(
+ 0,
+ 0,
+ this.bitmap.width,
+ this.bitmap.height,
+ function (x, y, idx) {
+ let red = this.bitmap.data[idx];
+ let green = this.bitmap.data[idx + 1];
+ let blue = this.bitmap.data[idx + 2];
+
+ red = red * 0.393 + green * 0.769 + blue * 0.189;
+ green = red * 0.349 + green * 0.686 + blue * 0.168;
+ blue = red * 0.272 + green * 0.534 + blue * 0.131;
+
+ this.bitmap.data[idx] = red < 255 ? red : 255;
+ this.bitmap.data[idx + 1] = green < 255 ? green : 255;
+ this.bitmap.data[idx + 2] = blue < 255 ? blue : 255;
+ }
+ );
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+
+ /**
+ * Fades each pixel by a factor between 0 and 1
+ * @param {number} f A number from 0 to 1. 0 will haven no effect. 1 will turn the image completely transparent.
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp }this for chaining of methods
+ */
+ fade(f, cb) {
+ if (typeof f !== "number") {
+ return throwError.call(this, "f must be a number", cb);
+ }
+
+ if (f < 0 || f > 1) {
+ return throwError.call(this, "f must be a number from 0 to 1", cb);
+ }
+
+ // this method is an alternative to opacity (which may be deprecated)
+ this.opacity(1 - f);
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+
+ /**
+ * Adds each element of the image to its local neighbors, weighted by the kernel
+ * @param {array} kernel a matrix to weight the neighbors sum
+ * @param {number} edgeHandling (optional) define how to sum pixels from outside the border
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp }this for chaining of methods
+ */
+ convolution(kernel, edgeHandling, cb) {
+ if (typeof edgeHandling === "function" && typeof cb === "undefined") {
+ cb = edgeHandling;
+ edgeHandling = null;
+ }
+
+ if (!edgeHandling) {
+ edgeHandling = this.constructor.EDGE_EXTEND;
+ }
+
+ const newData = Buffer.from(this.bitmap.data);
+ const kRows = kernel.length;
+ const kCols = kernel[0].length;
+ const rowEnd = Math.floor(kRows / 2);
+ const colEnd = Math.floor(kCols / 2);
+ const rowIni = -rowEnd;
+ const colIni = -colEnd;
+
+ let weight;
+ let rSum;
+ let gSum;
+ let bSum;
+ let ri;
+ let gi;
+ let bi;
+ let xi;
+ let yi;
+ let idxi;
+
+ this.scanQuiet(
+ 0,
+ 0,
+ this.bitmap.width,
+ this.bitmap.height,
+ function (x, y, idx) {
+ bSum = 0;
+ gSum = 0;
+ rSum = 0;
+
+ for (let row = rowIni; row <= rowEnd; row++) {
+ for (let col = colIni; col <= colEnd; col++) {
+ xi = x + col;
+ yi = y + row;
+ weight = kernel[row + rowEnd][col + colEnd];
+ idxi = this.getPixelIndex(xi, yi, edgeHandling);
+
+ if (idxi === -1) {
+ bi = 0;
+ gi = 0;
+ ri = 0;
+ } else {
+ ri = this.bitmap.data[idxi + 0];
+ gi = this.bitmap.data[idxi + 1];
+ bi = this.bitmap.data[idxi + 2];
+ }
+
+ rSum += weight * ri;
+ gSum += weight * gi;
+ bSum += weight * bi;
+ }
+ }
+
+ if (rSum < 0) {
+ rSum = 0;
+ }
+
+ if (gSum < 0) {
+ gSum = 0;
+ }
+
+ if (bSum < 0) {
+ bSum = 0;
+ }
+
+ if (rSum > 255) {
+ rSum = 255;
+ }
+
+ if (gSum > 255) {
+ gSum = 255;
+ }
+
+ if (bSum > 255) {
+ bSum = 255;
+ }
+
+ newData[idx + 0] = rSum;
+ newData[idx + 1] = gSum;
+ newData[idx + 2] = bSum;
+ }
+ );
+
+ this.bitmap.data = newData;
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+
+ /**
+ * Set the alpha channel on every pixel to fully opaque
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp }this for chaining of methods
+ */
+ opaque(cb) {
+ this.scanQuiet(
+ 0,
+ 0,
+ this.bitmap.width,
+ this.bitmap.height,
+ function (x, y, idx) {
+ this.bitmap.data[idx + 3] = 255;
+ }
+ );
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+
+ /**
+ * Pixelates the image or a region
+ * @param {number} size the size of the pixels
+ * @param {number} x (optional) the x position of the region to pixelate
+ * @param {number} y (optional) the y position of the region to pixelate
+ * @param {number} w (optional) the width of the region to pixelate
+ * @param {number} h (optional) the height of the region to pixelate
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp }this for chaining of methods
+ */
+ pixelate(size, x, y, w, h, cb) {
+ if (typeof x === "function") {
+ cb = x;
+ h = null;
+ w = null;
+ y = null;
+ x = null;
+ } else {
+ if (typeof size !== "number") {
+ return throwError.call(this, "size must be a number", cb);
+ }
+
+ if (isDef(x) && typeof x !== "number") {
+ return throwError.call(this, "x must be a number", cb);
+ }
+
+ if (isDef(y) && typeof y !== "number") {
+ return throwError.call(this, "y must be a number", cb);
+ }
+
+ if (isDef(w) && typeof w !== "number") {
+ return throwError.call(this, "w must be a number", cb);
+ }
+
+ if (isDef(h) && typeof h !== "number") {
+ return throwError.call(this, "h must be a number", cb);
+ }
+ }
+
+ const kernel = [
+ [1 / 16, 2 / 16, 1 / 16],
+ [2 / 16, 4 / 16, 2 / 16],
+ [1 / 16, 2 / 16, 1 / 16],
+ ];
+
+ x = x || 0;
+ y = y || 0;
+ w = isDef(w) ? w : this.bitmap.width - x;
+ h = isDef(h) ? h : this.bitmap.height - y;
+
+ const source = this.cloneQuiet();
+
+ this.scanQuiet(x, y, w, h, function (xx, yx, idx) {
+ xx = size * Math.floor(xx / size);
+ yx = size * Math.floor(yx / size);
+
+ const value = applyKernel(source, kernel, xx, yx);
+
+ this.bitmap.data[idx] = value[0];
+ this.bitmap.data[idx + 1] = value[1];
+ this.bitmap.data[idx + 2] = value[2];
+ });
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+
+ /**
+ * Applies a convolution kernel to the image or a region
+ * @param {array} kernel the convolution kernel
+ * @param {number} x (optional) the x position of the region to apply convolution to
+ * @param {number} y (optional) the y position of the region to apply convolution to
+ * @param {number} w (optional) the width of the region to apply convolution to
+ * @param {number} h (optional) the height of the region to apply convolution to
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp }this for chaining of methods
+ */
+ convolute(kernel, x, y, w, h, cb) {
+ if (!Array.isArray(kernel))
+ return throwError.call(this, "the kernel must be an array", cb);
+
+ if (typeof x === "function") {
+ cb = x;
+ x = null;
+ y = null;
+ w = null;
+ h = null;
+ } else {
+ if (isDef(x) && typeof x !== "number") {
+ return throwError.call(this, "x must be a number", cb);
+ }
+
+ if (isDef(y) && typeof y !== "number") {
+ return throwError.call(this, "y must be a number", cb);
+ }
+
+ if (isDef(w) && typeof w !== "number") {
+ return throwError.call(this, "w must be a number", cb);
+ }
+
+ if (isDef(h) && typeof h !== "number") {
+ return throwError.call(this, "h must be a number", cb);
+ }
+ }
+
+ const ksize = (kernel.length - 1) / 2;
+
+ x = isDef(x) ? x : ksize;
+ y = isDef(y) ? y : ksize;
+ w = isDef(w) ? w : this.bitmap.width - x;
+ h = isDef(h) ? h : this.bitmap.height - y;
+
+ const source = this.cloneQuiet();
+
+ this.scanQuiet(x, y, w, h, function (xx, yx, idx) {
+ const value = applyKernel(source, kernel, xx, yx);
+
+ this.bitmap.data[idx] = this.constructor.limit255(value[0]);
+ this.bitmap.data[idx + 1] = this.constructor.limit255(value[1]);
+ this.bitmap.data[idx + 2] = this.constructor.limit255(value[2]);
+ });
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+
+ /**
+ * Apply multiple color modification rules
+ * @param {array} actions list of color modification rules, in following format: { apply: '', params: [ ] }
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp }this for chaining of methods
+ */
+ color: colorFn,
+ colour: colorFn,
+});
diff --git a/node_modules/@jimp/plugin-color/test/color.test.js b/node_modules/@jimp/plugin-color/test/color.test.js
new file mode 100644
index 00000000..562808bf
--- /dev/null
+++ b/node_modules/@jimp/plugin-color/test/color.test.js
@@ -0,0 +1,49 @@
+import { Jimp, donutJGD } from "@jimp/test-utils";
+import configure from "@jimp/custom";
+
+import color from "../src";
+
+const jimp = configure({ plugins: [color] }, Jimp);
+
+describe("canvas color transformation", () => {
+ const redDonutJGD = donutJGD(0x00000000, 0xff000088, 0xff0000ff);
+
+ it("can apply more than one color transformation", async () => {
+ const image = await jimp.read(redDonutJGD);
+ const newJGD = image
+ .color([
+ { apply: "hue", params: [-180] },
+ { apply: "lighten", params: [25] },
+ ])
+ .getJGDSync();
+
+ newJGD.should.be.sameJGD(donutJGD(0x40404000, 0x80ffff88, 0x80ffffff));
+ });
+
+ it("lighten", async () => {
+ const image = await jimp.read(redDonutJGD);
+
+ image
+ .color([{ apply: "lighten", params: [25] }])
+ .getJGDSync()
+ .should.be.sameJGD(donutJGD(0x40404000, 0xff808088, 0xff8080ff));
+ });
+
+ it("brighten", async () => {
+ const image = await jimp.read(redDonutJGD);
+
+ image
+ .color([{ apply: "brighten", params: [25] }])
+ .getJGDSync()
+ .should.be.sameJGD(donutJGD(0x40404000, 0xff404088, 0xff4040ff));
+ });
+
+ it("spin hue", async () => {
+ const image = await jimp.read(redDonutJGD);
+
+ image
+ .color([{ apply: "hue", params: [150] }])
+ .getJGDSync()
+ .should.be.sameJGD(donutJGD(0x00000000, 0x00ff8088, 0x00ff80ff));
+ });
+});
diff --git a/node_modules/@jimp/plugin-color/test/convolution.test.js b/node_modules/@jimp/plugin-color/test/convolution.test.js
new file mode 100644
index 00000000..2bf66085
--- /dev/null
+++ b/node_modules/@jimp/plugin-color/test/convolution.test.js
@@ -0,0 +1,188 @@
+import { Jimp, mkJGD, getTestDir } from "@jimp/test-utils";
+import configure from "@jimp/custom";
+import types from "@jimp/types";
+
+import color from "../src";
+
+const jimp = configure({ types: [types], plugins: [color] }, Jimp);
+
+describe("Convolution", function () {
+ this.timeout(15000);
+
+ const imgs = [
+ jimp.read(
+ mkJGD(
+ "22222222",
+ "22222222",
+ "22888822",
+ "22888822",
+ "22888822",
+ "22888822",
+ "22222222",
+ "22222222"
+ )
+ ),
+ jimp.read(
+ mkJGD(
+ "88222222",
+ "88222222",
+ "22222222",
+ "22222222",
+ "22222222",
+ "22222222",
+ "22222222",
+ "22222222"
+ )
+ ),
+ ];
+
+ let imgMid;
+ let imgTopLeft; // stores the Jimp instances of the JGD images above.
+
+ before((done) => {
+ Promise.all(imgs)
+ .then((imgs) => {
+ imgMid = imgs[0];
+ imgTopLeft = imgs[1];
+ done();
+ })
+ .catch(done);
+ });
+
+ const sharpM = [
+ [-1, -1, 0],
+ [-1, 1, 1],
+ [0, 1, 1],
+ ];
+
+ it("3x3 sharp matrix on EDGE_EXTEND", (done) => {
+ imgMid
+ .clone()
+ .convolution(sharpM)
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ "22222222",
+ "28EEE822",
+ "2EFFF802",
+ "2EF88002",
+ "2EF88002",
+ "28800002",
+ "22000002",
+ "22222222"
+ ),
+ "Mid light block"
+ );
+ imgTopLeft
+ .clone()
+ .convolution(sharpM)
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ "80022222",
+ "00022222",
+ "00022222",
+ "22222222",
+ "22222222",
+ "22222222",
+ "22222222",
+ "22222222"
+ ),
+ "Top left light block"
+ );
+ done();
+ });
+
+ it("3x3 sharp matrix on EDGE_WRAP", (done) => {
+ imgMid
+ .clone()
+ .convolution(sharpM, jimp.EDGE_WRAP)
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ "66666666",
+ "28EEE822",
+ "2EFFF802",
+ "2EF88002",
+ "2EF88002",
+ "28800002",
+ "22000002",
+ "22222222"
+ ),
+ "Mid light block"
+ );
+ imgTopLeft
+ .clone()
+ .convolution(sharpM, jimp.EDGE_WRAP)
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ "FC06666F",
+ "80022228",
+ "00022222",
+ "22222222",
+ "22222222",
+ "22222222",
+ "22222222",
+ "E8222228"
+ ),
+ "Top left light block"
+ );
+ done();
+ });
+
+ it("3x3 sharp matrix on EDGE_CROP", (done) => {
+ imgMid
+ .clone()
+ .convolution(sharpM, jimp.EDGE_CROP)
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ "86666662",
+ "68EEE820",
+ "6EFFF800",
+ "6EF88000",
+ "6EF88000",
+ "68800000",
+ "62000000",
+ "20000000"
+ ),
+ "Mid light block"
+ );
+ imgTopLeft
+ .clone()
+ .convolution(sharpM, jimp.EDGE_CROP)
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ "FC066662",
+ "C0022220",
+ "00022220",
+ "62222220",
+ "62222220",
+ "62222220",
+ "62222220",
+ "20000000"
+ ),
+ "Top left light block"
+ );
+ done();
+ });
+
+ it("new pixel value is greater than 255", async () => {
+ const expectedImg = await jimp.read(
+ getTestDir(__dirname) + "/images/qr-convoluted.png"
+ );
+ const image = await jimp.read(getTestDir(__dirname) + "/images/qr.jpg");
+
+ image
+ .convolution([
+ [0, 0, 0, 0, 0],
+ [0, 1, 1, 1, 0],
+ [0, 1, 0, 1, 0],
+ [0, 1, 1, 1, 0],
+ [0, 0, 0, 0, 0],
+ ])
+ .bitmap.data.should.be.deepEqual(expectedImg.bitmap.data);
+ });
+});
diff --git a/project starter code/node_modules/@jimp/plugin-color/test/images/qr-convoluted.png b/node_modules/@jimp/plugin-color/test/images/qr-convoluted.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-color/test/images/qr-convoluted.png
rename to node_modules/@jimp/plugin-color/test/images/qr-convoluted.png
diff --git a/project starter code/node_modules/@jimp/plugin-color/test/images/qr.jpg b/node_modules/@jimp/plugin-color/test/images/qr.jpg
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-color/test/images/qr.jpg
rename to node_modules/@jimp/plugin-color/test/images/qr.jpg
diff --git a/node_modules/@jimp/plugin-contain/CHANGELOG.md b/node_modules/@jimp/plugin-contain/CHANGELOG.md
new file mode 100644
index 00000000..4eb3193f
--- /dev/null
+++ b/node_modules/@jimp/plugin-contain/CHANGELOG.md
@@ -0,0 +1,35 @@
+# v0.16.3 (Sat Feb 04 2023)
+
+#### ⚠️ Pushed to `master`
+
+- upgrade prettier ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 1
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+---
+
+# v0.11.0 (Fri May 15 2020)
+
+#### 🚀 Enhancement
+
+- Removed Core-JS as a dependency. [#882](https://github.com/oliver-moran/jimp/pull/882) ([@EricRabil](https://github.com/EricRabil))
+
+#### Authors: 1
+
+- Eric Rabil ([@EricRabil](https://github.com/EricRabil))
+
+---
+
+# v0.9.3 (Tue Nov 26 2019)
+
+#### 🐛 Bug Fix
+
+- `@jimp/cli`, `@jimp/core`, `@jimp/custom`, `jimp`, `@jimp/plugin-blit`, `@jimp/plugin-blur`, `@jimp/plugin-circle`, `@jimp/plugin-color`, `@jimp/plugin-contain`, `@jimp/plugin-cover`, `@jimp/plugin-crop`, `@jimp/plugin-displace`, `@jimp/plugin-dither`, `@jimp/plugin-fisheye`, `@jimp/plugin-flip`, `@jimp/plugin-gaussian`, `@jimp/plugin-invert`, `@jimp/plugin-mask`, `@jimp/plugin-normalize`, `@jimp/plugin-print`, `@jimp/plugin-resize`, `@jimp/plugin-rotate`, `@jimp/plugin-scale`, `@jimp/plugin-shadow`, `@jimp/plugin-threshold`, `@jimp/plugins`, `@jimp/test-utils`, `@jimp/bmp`, `@jimp/gif`, `@jimp/jpeg`, `@jimp/png`, `@jimp/tiff`, `@jimp/types`, `@jimp/utils`
+ - Fix regeneratorRuntime errors [#815](https://github.com/oliver-moran/jimp/pull/815) ([@crutchcorn](https://github.com/crutchcorn) [@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 2
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+- Corbin Crutchley ([@crutchcorn](https://github.com/crutchcorn))
diff --git a/project starter code/node_modules/@jimp/plugin-contain/LICENSE b/node_modules/@jimp/plugin-contain/LICENSE
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-contain/LICENSE
rename to node_modules/@jimp/plugin-contain/LICENSE
diff --git a/node_modules/@jimp/plugin-contain/README.md b/node_modules/@jimp/plugin-contain/README.md
new file mode 100644
index 00000000..187cdc75
--- /dev/null
+++ b/node_modules/@jimp/plugin-contain/README.md
@@ -0,0 +1,59 @@
+
+
+
@jimp/plugin-contain
+
Contain an image within a height and width.
+
+
+Scale the image to the given width and height keeping the aspect ratio. Some parts of the image may be letter boxed.
+
+## Usage
+
+- @param {number} w the width to resize the image to
+- @param {number} h the height to resize the image to
+- @param {number} alignBits (optional) A bitmask for horizontal and vertical alignment
+- @param {string} mode (optional) a scaling method (e.g. Jimp.RESIZE_BEZIER)
+- @param {function(Error, Jimp)} cb (optional) a callback for when complete
+
+```js
+import jimp from "jimp";
+
+async function main() {
+ const image = await jimp.read("test/image.png");
+
+ image.contain(150, 100);
+}
+
+main();
+```
+
+### Align modes
+
+The following constants can be passed to `image.contain`:
+
+```js
+Jimp.HORIZONTAL_ALIGN_LEFT;
+Jimp.HORIZONTAL_ALIGN_CENTER;
+Jimp.HORIZONTAL_ALIGN_RIGHT;
+
+Jimp.VERTICAL_ALIGN_TOP;
+Jimp.VERTICAL_ALIGN_MIDDLE;
+Jimp.VERTICAL_ALIGN_BOTTOM;
+```
+
+For example:
+
+```js
+image.contain(250, 250, Jimp.HORIZONTAL_ALIGN_LEFT | Jimp.VERTICAL_ALIGN_TOP);
+image.contain(
+ 250,
+ 250,
+ Jimp.HORIZONTAL_ALIGN_RIGHT | Jimp.VERTICAL_ALIGN_BOTTOM
+);
+```
+
+Default align mode for `image.contain` is:
+
+```js
+Jimp.HORIZONTAL_ALIGN_CENTER | Jimp.VERTICAL_ALIGN_MIDDLE;
+```
diff --git a/node_modules/@jimp/plugin-contain/dist/index.js b/node_modules/@jimp/plugin-contain/dist/index.js
new file mode 100644
index 00000000..77b211de
--- /dev/null
+++ b/node_modules/@jimp/plugin-contain/dist/index.js
@@ -0,0 +1,75 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports["default"] = void 0;
+
+var _utils = require("@jimp/utils");
+
+/**
+ * Scale the image to the given width and height keeping the aspect ratio. Some parts of the image may be letter boxed.
+ * @param {number} w the width to resize the image to
+ * @param {number} h the height to resize the image to
+ * @param {number} alignBits (optional) A bitmask for horizontal and vertical alignment
+ * @param {string} mode (optional) a scaling method (e.g. Jimp.RESIZE_BEZIER)
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+var _default = function _default() {
+ return {
+ contain: function contain(w, h, alignBits, mode, cb) {
+ if (typeof w !== "number" || typeof h !== "number") {
+ return _utils.throwError.call(this, "w and h must be numbers", cb);
+ } // permit any sort of optional parameters combination
+
+
+ if (typeof alignBits === "string") {
+ if (typeof mode === "function" && typeof cb === "undefined") cb = mode;
+ mode = alignBits;
+ alignBits = null;
+ }
+
+ if (typeof alignBits === "function") {
+ if (typeof cb === "undefined") cb = alignBits;
+ mode = null;
+ alignBits = null;
+ }
+
+ if (typeof mode === "function" && typeof cb === "undefined") {
+ cb = mode;
+ mode = null;
+ }
+
+ alignBits = alignBits || this.constructor.HORIZONTAL_ALIGN_CENTER | this.constructor.VERTICAL_ALIGN_MIDDLE;
+ var hbits = alignBits & (1 << 3) - 1;
+ var vbits = alignBits >> 3; // check if more flags than one is in the bit sets
+
+ if (!(hbits !== 0 && !(hbits & hbits - 1) || vbits !== 0 && !(vbits & vbits - 1))) {
+ return _utils.throwError.call(this, "only use one flag per alignment direction", cb);
+ }
+
+ var alignH = hbits >> 1; // 0, 1, 2
+
+ var alignV = vbits >> 1; // 0, 1, 2
+
+ var f = w / h > this.bitmap.width / this.bitmap.height ? h / this.bitmap.height : w / this.bitmap.width;
+ var c = this.cloneQuiet().scale(f, mode);
+ this.resize(w, h, mode);
+ this.scanQuiet(0, 0, this.bitmap.width, this.bitmap.height, function (x, y, idx) {
+ this.bitmap.data.writeUInt32BE(this._background, idx);
+ });
+ this.blit(c, (this.bitmap.width - c.bitmap.width) / 2 * alignH, (this.bitmap.height - c.bitmap.height) / 2 * alignV);
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ }
+ };
+};
+
+exports["default"] = _default;
+module.exports = exports.default;
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-contain/dist/index.js.map b/node_modules/@jimp/plugin-contain/dist/index.js.map
new file mode 100644
index 00000000..e534381f
--- /dev/null
+++ b/node_modules/@jimp/plugin-contain/dist/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/index.js"],"names":["contain","w","h","alignBits","mode","cb","throwError","call","constructor","HORIZONTAL_ALIGN_CENTER","VERTICAL_ALIGN_MIDDLE","hbits","vbits","alignH","alignV","f","bitmap","width","height","c","cloneQuiet","scale","resize","scanQuiet","x","y","idx","data","writeUInt32BE","_background","blit"],"mappings":"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","sourcesContent":["import { isNodePattern, throwError } from \"@jimp/utils\";\n\n/**\n * Scale the image to the given width and height keeping the aspect ratio. Some parts of the image may be letter boxed.\n * @param {number} w the width to resize the image to\n * @param {number} h the height to resize the image to\n * @param {number} alignBits (optional) A bitmask for horizontal and vertical alignment\n * @param {string} mode (optional) a scaling method (e.g. Jimp.RESIZE_BEZIER)\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp} this for chaining of methods\n */\nexport default () => ({\n contain(w, h, alignBits, mode, cb) {\n if (typeof w !== \"number\" || typeof h !== \"number\") {\n return throwError.call(this, \"w and h must be numbers\", cb);\n }\n\n // permit any sort of optional parameters combination\n if (typeof alignBits === \"string\") {\n if (typeof mode === \"function\" && typeof cb === \"undefined\") cb = mode;\n mode = alignBits;\n alignBits = null;\n }\n\n if (typeof alignBits === \"function\") {\n if (typeof cb === \"undefined\") cb = alignBits;\n mode = null;\n alignBits = null;\n }\n\n if (typeof mode === \"function\" && typeof cb === \"undefined\") {\n cb = mode;\n mode = null;\n }\n\n alignBits =\n alignBits ||\n this.constructor.HORIZONTAL_ALIGN_CENTER |\n this.constructor.VERTICAL_ALIGN_MIDDLE;\n const hbits = alignBits & ((1 << 3) - 1);\n const vbits = alignBits >> 3;\n\n // check if more flags than one is in the bit sets\n if (\n !(\n (hbits !== 0 && !(hbits & (hbits - 1))) ||\n (vbits !== 0 && !(vbits & (vbits - 1)))\n )\n ) {\n return throwError.call(\n this,\n \"only use one flag per alignment direction\",\n cb\n );\n }\n\n const alignH = hbits >> 1; // 0, 1, 2\n const alignV = vbits >> 1; // 0, 1, 2\n\n const f =\n w / h > this.bitmap.width / this.bitmap.height\n ? h / this.bitmap.height\n : w / this.bitmap.width;\n const c = this.cloneQuiet().scale(f, mode);\n\n this.resize(w, h, mode);\n this.scanQuiet(\n 0,\n 0,\n this.bitmap.width,\n this.bitmap.height,\n function (x, y, idx) {\n this.bitmap.data.writeUInt32BE(this._background, idx);\n }\n );\n this.blit(\n c,\n ((this.bitmap.width - c.bitmap.width) / 2) * alignH,\n ((this.bitmap.height - c.bitmap.height) / 2) * alignV\n );\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n },\n});\n"],"file":"index.js"}
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-contain/index.d.ts b/node_modules/@jimp/plugin-contain/index.d.ts
new file mode 100644
index 00000000..8c3306d3
--- /dev/null
+++ b/node_modules/@jimp/plugin-contain/index.d.ts
@@ -0,0 +1,21 @@
+import { ImageCallback } from "@jimp/core";
+
+interface Contain {
+ contain(w: number, h: number, cb?: ImageCallback): this;
+ contain(w: number, h: number, mode?: string, cb?: ImageCallback): this;
+ contain(
+ w: number,
+ h: number,
+ alignBits?: number,
+ cb?: ImageCallback
+ ): this;
+ contain(
+ w: number,
+ h: number,
+ alignBits?: number,
+ mode?: string,
+ cb?: ImageCallback
+ ): this;
+}
+
+export default function (): Contain;
diff --git a/node_modules/@jimp/plugin-contain/package.json b/node_modules/@jimp/plugin-contain/package.json
new file mode 100644
index 00000000..3a91ace7
--- /dev/null
+++ b/node_modules/@jimp/plugin-contain/package.json
@@ -0,0 +1,43 @@
+{
+ "name": "@jimp/plugin-contain",
+ "version": "0.16.13",
+ "description": "contain an image.",
+ "main": "dist/index.js",
+ "module": "es/index.js",
+ "types": "index.d.ts",
+ "scripts": {
+ "test": "cross-env BABEL_ENV=test mocha --require @babel/register",
+ "test:watch": "npm run test -- --reporter min --watch",
+ "test:coverage": "nyc npm run test",
+ "build": "npm run build:node:production && npm run build:module",
+ "build:watch": "npm run build:node:debug -- -- --watch --verbose",
+ "build:debug": "npm run build:node:debug",
+ "build:module": "cross-env BABEL_ENV=module babel src -d es --source-maps --config-file ../../babel.config.js",
+ "build:node": "babel src -d dist --source-maps --config-file ../../babel.config.js",
+ "build:node:debug": "cross-env BABEL_ENV=development npm run build:node",
+ "build:node:production": "cross-env BABEL_ENV=production npm run build:node"
+ },
+ "author": "",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5",
+ "@jimp/plugin-blit": ">=0.3.5",
+ "@jimp/plugin-resize": ">=0.3.5",
+ "@jimp/plugin-scale": ">=0.3.5"
+ },
+ "devDependencies": {
+ "@jimp/custom": "^0.16.13",
+ "@jimp/plugin-blit": "^0.16.13",
+ "@jimp/plugin-resize": "^0.16.13",
+ "@jimp/plugin-scale": "^0.16.13",
+ "@jimp/test-utils": "^0.16.13"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "gitHead": "9eec86086634329a072901dca3a800b850548572"
+}
diff --git a/node_modules/@jimp/plugin-contain/src/index.js b/node_modules/@jimp/plugin-contain/src/index.js
new file mode 100644
index 00000000..1736343c
--- /dev/null
+++ b/node_modules/@jimp/plugin-contain/src/index.js
@@ -0,0 +1,88 @@
+import { isNodePattern, throwError } from "@jimp/utils";
+
+/**
+ * Scale the image to the given width and height keeping the aspect ratio. Some parts of the image may be letter boxed.
+ * @param {number} w the width to resize the image to
+ * @param {number} h the height to resize the image to
+ * @param {number} alignBits (optional) A bitmask for horizontal and vertical alignment
+ * @param {string} mode (optional) a scaling method (e.g. Jimp.RESIZE_BEZIER)
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+export default () => ({
+ contain(w, h, alignBits, mode, cb) {
+ if (typeof w !== "number" || typeof h !== "number") {
+ return throwError.call(this, "w and h must be numbers", cb);
+ }
+
+ // permit any sort of optional parameters combination
+ if (typeof alignBits === "string") {
+ if (typeof mode === "function" && typeof cb === "undefined") cb = mode;
+ mode = alignBits;
+ alignBits = null;
+ }
+
+ if (typeof alignBits === "function") {
+ if (typeof cb === "undefined") cb = alignBits;
+ mode = null;
+ alignBits = null;
+ }
+
+ if (typeof mode === "function" && typeof cb === "undefined") {
+ cb = mode;
+ mode = null;
+ }
+
+ alignBits =
+ alignBits ||
+ this.constructor.HORIZONTAL_ALIGN_CENTER |
+ this.constructor.VERTICAL_ALIGN_MIDDLE;
+ const hbits = alignBits & ((1 << 3) - 1);
+ const vbits = alignBits >> 3;
+
+ // check if more flags than one is in the bit sets
+ if (
+ !(
+ (hbits !== 0 && !(hbits & (hbits - 1))) ||
+ (vbits !== 0 && !(vbits & (vbits - 1)))
+ )
+ ) {
+ return throwError.call(
+ this,
+ "only use one flag per alignment direction",
+ cb
+ );
+ }
+
+ const alignH = hbits >> 1; // 0, 1, 2
+ const alignV = vbits >> 1; // 0, 1, 2
+
+ const f =
+ w / h > this.bitmap.width / this.bitmap.height
+ ? h / this.bitmap.height
+ : w / this.bitmap.width;
+ const c = this.cloneQuiet().scale(f, mode);
+
+ this.resize(w, h, mode);
+ this.scanQuiet(
+ 0,
+ 0,
+ this.bitmap.width,
+ this.bitmap.height,
+ function (x, y, idx) {
+ this.bitmap.data.writeUInt32BE(this._background, idx);
+ }
+ );
+ this.blit(
+ c,
+ ((this.bitmap.width - c.bitmap.width) / 2) * alignH,
+ ((this.bitmap.height - c.bitmap.height) / 2) * alignV
+ );
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+});
diff --git a/node_modules/@jimp/plugin-contain/test/contain.test.js b/node_modules/@jimp/plugin-contain/test/contain.test.js
new file mode 100644
index 00000000..19739a27
--- /dev/null
+++ b/node_modules/@jimp/plugin-contain/test/contain.test.js
@@ -0,0 +1,131 @@
+import { Jimp, mkJGD, hasOwnProp } from "@jimp/test-utils";
+import configure from "@jimp/custom";
+import blit from "@jimp/plugin-blit";
+import resize from "@jimp/plugin-resize";
+import scale from "@jimp/plugin-scale";
+
+import contain from "../src";
+
+const jimp = configure({ plugins: [scale, resize, blit, contain] }, Jimp);
+
+describe("All align combinations for contain", () => {
+ const verticalJGD = mkJGD(
+ "▴▴▴▴▸▸▸▸",
+ "▴▴▴▴▸▸▸▸",
+ "▴▴▴▴▸▸▸▸",
+ "▴▴▴▴▸▸▸▸",
+ "▴▴▴▴▸▸▸▸",
+ "▴▴▴▴▸▸▸▸",
+ "▾▾▾▾◆◆◆◆",
+ "▾▾▾▾◆◆◆◆",
+ "▾▾▾▾◆◆◆◆",
+ "▾▾▾▾◆◆◆◆",
+ "▾▾▾▾◆◆◆◆",
+ "▾▾▾▾◆◆◆◆"
+ );
+
+ const horizontalJGD = mkJGD(
+ "▴▴▴▴▴▴▸▸▸▸▸▸",
+ "▴▴▴▴▴▴▸▸▸▸▸▸",
+ "▴▴▴▴▴▴▸▸▸▸▸▸",
+ "▴▴▴▴▴▴▸▸▸▸▸▸",
+ "▾▾▾▾▾▾◆◆◆◆◆◆",
+ "▾▾▾▾▾▾◆◆◆◆◆◆",
+ "▾▾▾▾▾▾◆◆◆◆◆◆",
+ "▾▾▾▾▾▾◆◆◆◆◆◆"
+ );
+
+ let vertical;
+ let horizontal; // stores the Jimp instances of the JGD images above.
+
+ before((done) => {
+ const img1 = jimp.read(verticalJGD);
+ const img2 = jimp.read(horizontalJGD);
+ Promise.all([img1, img2])
+ .then((images) => {
+ vertical = images[0];
+ horizontal = images[1];
+ done();
+ })
+ .catch(done);
+ });
+
+ const tests = {}; // Stores the expected result for each alignment combination.
+ tests["LEFT TOP"] = {
+ contain: {
+ verti: mkJGD("▴▴▸▸ ", "▴▴▸▸ ", "▴▴▸▸ ", "▾▾◆◆ ", "▾▾◆◆ ", "▾▾◆◆ "),
+ horiz: mkJGD("▴▴▴▸▸▸", "▴▴▴▸▸▸", "▾▾▾◆◆◆", "▾▾▾◆◆◆", " ", " "),
+ },
+ };
+ tests["CENTER TOP"] = {
+ contain: {
+ verti: mkJGD(" ▴▴▸▸ ", " ▴▴▸▸ ", " ▴▴▸▸ ", " ▾▾◆◆ ", " ▾▾◆◆ ", " ▾▾◆◆ "),
+ horiz: mkJGD("▴▴▴▸▸▸", "▴▴▴▸▸▸", "▾▾▾◆◆◆", "▾▾▾◆◆◆", " ", " "),
+ },
+ };
+ tests["RIGHT TOP"] = {
+ contain: {
+ verti: mkJGD(" ▴▴▸▸", " ▴▴▸▸", " ▴▴▸▸", " ▾▾◆◆", " ▾▾◆◆", " ▾▾◆◆"),
+ horiz: mkJGD("▴▴▴▸▸▸", "▴▴▴▸▸▸", "▾▾▾◆◆◆", "▾▾▾◆◆◆", " ", " "),
+ },
+ };
+
+ tests["LEFT MIDDLE"] = {
+ contain: {
+ verti: mkJGD("▴▴▸▸ ", "▴▴▸▸ ", "▴▴▸▸ ", "▾▾◆◆ ", "▾▾◆◆ ", "▾▾◆◆ "),
+ horiz: mkJGD(" ", "▴▴▴▸▸▸", "▴▴▴▸▸▸", "▾▾▾◆◆◆", "▾▾▾◆◆◆", " "),
+ },
+ };
+ tests["CENTER MIDDLE"] = {
+ contain: {
+ verti: mkJGD(" ▴▴▸▸ ", " ▴▴▸▸ ", " ▴▴▸▸ ", " ▾▾◆◆ ", " ▾▾◆◆ ", " ▾▾◆◆ "),
+ horiz: mkJGD(" ", "▴▴▴▸▸▸", "▴▴▴▸▸▸", "▾▾▾◆◆◆", "▾▾▾◆◆◆", " "),
+ },
+ };
+ tests["RIGHT MIDDLE"] = {
+ contain: {
+ verti: mkJGD(" ▴▴▸▸", " ▴▴▸▸", " ▴▴▸▸", " ▾▾◆◆", " ▾▾◆◆", " ▾▾◆◆"),
+ horiz: mkJGD(" ", "▴▴▴▸▸▸", "▴▴▴▸▸▸", "▾▾▾◆◆◆", "▾▾▾◆◆◆", " "),
+ },
+ };
+
+ tests["LEFT BOTTOM"] = {
+ contain: {
+ verti: mkJGD("▴▴▸▸ ", "▴▴▸▸ ", "▴▴▸▸ ", "▾▾◆◆ ", "▾▾◆◆ ", "▾▾◆◆ "),
+ horiz: mkJGD(" ", " ", "▴▴▴▸▸▸", "▴▴▴▸▸▸", "▾▾▾◆◆◆", "▾▾▾◆◆◆"),
+ },
+ };
+ tests["CENTER BOTTOM"] = {
+ contain: {
+ verti: mkJGD(" ▴▴▸▸ ", " ▴▴▸▸ ", " ▴▴▸▸ ", " ▾▾◆◆ ", " ▾▾◆◆ ", " ▾▾◆◆ "),
+ horiz: mkJGD(" ", " ", "▴▴▴▸▸▸", "▴▴▴▸▸▸", "▾▾▾◆◆◆", "▾▾▾◆◆◆"),
+ },
+ };
+ tests["RIGHT BOTTOM"] = {
+ contain: {
+ verti: mkJGD(" ▴▴▸▸", " ▴▴▸▸", " ▴▴▸▸", " ▾▾◆◆", " ▾▾◆◆", " ▾▾◆◆"),
+ horiz: mkJGD(" ", " ", "▴▴▴▸▸▸", "▴▴▴▸▸▸", "▾▾▾◆◆◆", "▾▾▾◆◆◆"),
+ },
+ };
+
+ function runAlignTest(align) {
+ const jgdContainV = tests[align].contain.verti;
+ const jgdContainH = tests[align].contain.horiz;
+ let a = align.split(" ");
+ a = Jimp["HORIZONTAL_ALIGN_" + a[0]] | Jimp["VERTICAL_ALIGN_" + a[1]];
+ it("contain aligned to " + align, () => {
+ vertical
+ .clone()
+ .contain(6, 6, a)
+ .getJGDSync()
+ .should.be.sameJGD(jgdContainV, "Vertical image");
+ horizontal
+ .clone()
+ .contain(6, 6, a)
+ .getJGDSync()
+ .should.be.sameJGD(jgdContainH, "Horizontal image");
+ });
+ }
+
+ for (const align in tests) if (hasOwnProp(tests, align)) runAlignTest(align);
+});
diff --git a/node_modules/@jimp/plugin-cover/CHANGELOG.md b/node_modules/@jimp/plugin-cover/CHANGELOG.md
new file mode 100644
index 00000000..4eb3193f
--- /dev/null
+++ b/node_modules/@jimp/plugin-cover/CHANGELOG.md
@@ -0,0 +1,35 @@
+# v0.16.3 (Sat Feb 04 2023)
+
+#### ⚠️ Pushed to `master`
+
+- upgrade prettier ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 1
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+---
+
+# v0.11.0 (Fri May 15 2020)
+
+#### 🚀 Enhancement
+
+- Removed Core-JS as a dependency. [#882](https://github.com/oliver-moran/jimp/pull/882) ([@EricRabil](https://github.com/EricRabil))
+
+#### Authors: 1
+
+- Eric Rabil ([@EricRabil](https://github.com/EricRabil))
+
+---
+
+# v0.9.3 (Tue Nov 26 2019)
+
+#### 🐛 Bug Fix
+
+- `@jimp/cli`, `@jimp/core`, `@jimp/custom`, `jimp`, `@jimp/plugin-blit`, `@jimp/plugin-blur`, `@jimp/plugin-circle`, `@jimp/plugin-color`, `@jimp/plugin-contain`, `@jimp/plugin-cover`, `@jimp/plugin-crop`, `@jimp/plugin-displace`, `@jimp/plugin-dither`, `@jimp/plugin-fisheye`, `@jimp/plugin-flip`, `@jimp/plugin-gaussian`, `@jimp/plugin-invert`, `@jimp/plugin-mask`, `@jimp/plugin-normalize`, `@jimp/plugin-print`, `@jimp/plugin-resize`, `@jimp/plugin-rotate`, `@jimp/plugin-scale`, `@jimp/plugin-shadow`, `@jimp/plugin-threshold`, `@jimp/plugins`, `@jimp/test-utils`, `@jimp/bmp`, `@jimp/gif`, `@jimp/jpeg`, `@jimp/png`, `@jimp/tiff`, `@jimp/types`, `@jimp/utils`
+ - Fix regeneratorRuntime errors [#815](https://github.com/oliver-moran/jimp/pull/815) ([@crutchcorn](https://github.com/crutchcorn) [@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 2
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+- Corbin Crutchley ([@crutchcorn](https://github.com/crutchcorn))
diff --git a/project starter code/node_modules/@jimp/plugin-cover/LICENSE b/node_modules/@jimp/plugin-cover/LICENSE
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-cover/LICENSE
rename to node_modules/@jimp/plugin-cover/LICENSE
diff --git a/node_modules/@jimp/plugin-cover/README.md b/node_modules/@jimp/plugin-cover/README.md
new file mode 100644
index 00000000..8313aa2c
--- /dev/null
+++ b/node_modules/@jimp/plugin-cover/README.md
@@ -0,0 +1,54 @@
+
+
+
@jimp/plugin-cover
+
+
+Scale the image so the given width and height keeping the aspect ratio. Some parts of the image may be clipped.
+
+## Usage
+
+- @param {number} w the width to resize the image to
+- @param {number} h the height to resize the image to
+- @param {number} alignBits (optional) A bitmask for horizontal and vertical alignment
+- @param {string} mode (optional) a scaling method (e.g. Jimp.RESIZE_BEZIER)
+- @param {function(Error, Jimp)} cb (optional) a callback for when complete
+
+```js
+import jimp from "jimp";
+
+async function main() {
+ const image = await jimp.read("test/image.png");
+
+ image.cover(150, 100);
+}
+
+main();
+```
+
+### Align modes
+
+The following constants can be passed to `image.cover`:
+
+```js
+Jimp.HORIZONTAL_ALIGN_LEFT;
+Jimp.HORIZONTAL_ALIGN_CENTER;
+Jimp.HORIZONTAL_ALIGN_RIGHT;
+
+Jimp.VERTICAL_ALIGN_TOP;
+Jimp.VERTICAL_ALIGN_MIDDLE;
+Jimp.VERTICAL_ALIGN_BOTTOM;
+```
+
+For example:
+
+```js
+image.cover(250, 250, Jimp.HORIZONTAL_ALIGN_LEFT | Jimp.VERTICAL_ALIGN_TOP);
+image.cover(250, 250, Jimp.HORIZONTAL_ALIGN_RIGHT | Jimp.VERTICAL_ALIGN_BOTTOM);
+```
+
+Default align mode for `image.cover` is:
+
+```js
+Jimp.HORIZONTAL_ALIGN_CENTER | Jimp.VERTICAL_ALIGN_MIDDLE;
+```
diff --git a/node_modules/@jimp/plugin-cover/dist/index.js b/node_modules/@jimp/plugin-cover/dist/index.js
new file mode 100644
index 00000000..9dec0381
--- /dev/null
+++ b/node_modules/@jimp/plugin-cover/dist/index.js
@@ -0,0 +1,59 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports["default"] = void 0;
+
+var _utils = require("@jimp/utils");
+
+/**
+ * Scale the image so the given width and height keeping the aspect ratio. Some parts of the image may be clipped.
+ * @param {number} w the width to resize the image to
+ * @param {number} h the height to resize the image to
+ * @param {number} alignBits (optional) A bitmask for horizontal and vertical alignment
+ * @param {string} mode (optional) a scaling method (e.g. Jimp.RESIZE_BEZIER)
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+var _default = function _default() {
+ return {
+ cover: function cover(w, h, alignBits, mode, cb) {
+ if (typeof w !== "number" || typeof h !== "number") {
+ return _utils.throwError.call(this, "w and h must be numbers", cb);
+ }
+
+ if (alignBits && typeof alignBits === "function" && typeof cb === "undefined") {
+ cb = alignBits;
+ alignBits = null;
+ mode = null;
+ } else if (typeof mode === "function" && typeof cb === "undefined") {
+ cb = mode;
+ mode = null;
+ }
+
+ alignBits = alignBits || this.constructor.HORIZONTAL_ALIGN_CENTER | this.constructor.VERTICAL_ALIGN_MIDDLE;
+ var hbits = alignBits & (1 << 3) - 1;
+ var vbits = alignBits >> 3; // check if more flags than one is in the bit sets
+
+ if (!(hbits !== 0 && !(hbits & hbits - 1) || vbits !== 0 && !(vbits & vbits - 1))) return _utils.throwError.call(this, "only use one flag per alignment direction", cb);
+ var alignH = hbits >> 1; // 0, 1, 2
+
+ var alignV = vbits >> 1; // 0, 1, 2
+
+ var f = w / h > this.bitmap.width / this.bitmap.height ? w / this.bitmap.width : h / this.bitmap.height;
+ this.scale(f, mode);
+ this.crop((this.bitmap.width - w) / 2 * alignH, (this.bitmap.height - h) / 2 * alignV, w, h);
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ }
+ };
+};
+
+exports["default"] = _default;
+module.exports = exports.default;
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-cover/dist/index.js.map b/node_modules/@jimp/plugin-cover/dist/index.js.map
new file mode 100644
index 00000000..e0713d42
--- /dev/null
+++ b/node_modules/@jimp/plugin-cover/dist/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/index.js"],"names":["cover","w","h","alignBits","mode","cb","throwError","call","constructor","HORIZONTAL_ALIGN_CENTER","VERTICAL_ALIGN_MIDDLE","hbits","vbits","alignH","alignV","f","bitmap","width","height","scale","crop"],"mappings":";;;;;;;AAAA;;AAEA;;;;;;;;;eASe;AAAA,SAAO;AACpBA,IAAAA,KADoB,iBACdC,CADc,EACXC,CADW,EACRC,SADQ,EACGC,IADH,EACSC,EADT,EACa;AAC/B,UAAI,OAAOJ,CAAP,KAAa,QAAb,IAAyB,OAAOC,CAAP,KAAa,QAA1C,EAAoD;AAClD,eAAOI,kBAAWC,IAAX,CAAgB,IAAhB,EAAsB,yBAAtB,EAAiDF,EAAjD,CAAP;AACD;;AAED,UACEF,SAAS,IACT,OAAOA,SAAP,KAAqB,UADrB,IAEA,OAAOE,EAAP,KAAc,WAHhB,EAIE;AACAA,QAAAA,EAAE,GAAGF,SAAL;AACAA,QAAAA,SAAS,GAAG,IAAZ;AACAC,QAAAA,IAAI,GAAG,IAAP;AACD,OARD,MAQO,IAAI,OAAOA,IAAP,KAAgB,UAAhB,IAA8B,OAAOC,EAAP,KAAc,WAAhD,EAA6D;AAClEA,QAAAA,EAAE,GAAGD,IAAL;AACAA,QAAAA,IAAI,GAAG,IAAP;AACD;;AAEDD,MAAAA,SAAS,GACPA,SAAS,IACT,KAAKK,WAAL,CAAiBC,uBAAjB,GACE,KAAKD,WAAL,CAAiBE,qBAHrB;AAIA,UAAMC,KAAK,GAAGR,SAAS,GAAI,CAAC,KAAK,CAAN,IAAW,CAAtC;AACA,UAAMS,KAAK,GAAGT,SAAS,IAAI,CAA3B,CAvB+B,CAyB/B;;AACA,UACE,EACGQ,KAAK,KAAK,CAAV,IAAe,EAAEA,KAAK,GAAIA,KAAK,GAAG,CAAnB,CAAhB,IACCC,KAAK,KAAK,CAAV,IAAe,EAAEA,KAAK,GAAIA,KAAK,GAAG,CAAnB,CAFlB,CADF,EAME,OAAON,kBAAWC,IAAX,CACL,IADK,EAEL,2CAFK,EAGLF,EAHK,CAAP;AAMF,UAAMQ,MAAM,GAAGF,KAAK,IAAI,CAAxB,CAtC+B,CAsCJ;;AAC3B,UAAMG,MAAM,GAAGF,KAAK,IAAI,CAAxB,CAvC+B,CAuCJ;;AAE3B,UAAMG,CAAC,GACLd,CAAC,GAAGC,CAAJ,GAAQ,KAAKc,MAAL,CAAYC,KAAZ,GAAoB,KAAKD,MAAL,CAAYE,MAAxC,GACIjB,CAAC,GAAG,KAAKe,MAAL,CAAYC,KADpB,GAEIf,CAAC,GAAG,KAAKc,MAAL,CAAYE,MAHtB;AAIA,WAAKC,KAAL,CAAWJ,CAAX,EAAcX,IAAd;AACA,WAAKgB,IAAL,CACG,CAAC,KAAKJ,MAAL,CAAYC,KAAZ,GAAoBhB,CAArB,IAA0B,CAA3B,GAAgCY,MADlC,EAEG,CAAC,KAAKG,MAAL,CAAYE,MAAZ,GAAqBhB,CAAtB,IAA2B,CAA5B,GAAiCY,MAFnC,EAGEb,CAHF,EAIEC,CAJF;;AAOA,UAAI,0BAAcG,EAAd,CAAJ,EAAuB;AACrBA,QAAAA,EAAE,CAACE,IAAH,CAAQ,IAAR,EAAc,IAAd,EAAoB,IAApB;AACD;;AAED,aAAO,IAAP;AACD;AA3DmB,GAAP;AAAA,C","sourcesContent":["import { isNodePattern, throwError } from \"@jimp/utils\";\n\n/**\n * Scale the image so the given width and height keeping the aspect ratio. Some parts of the image may be clipped.\n * @param {number} w the width to resize the image to\n * @param {number} h the height to resize the image to\n * @param {number} alignBits (optional) A bitmask for horizontal and vertical alignment\n * @param {string} mode (optional) a scaling method (e.g. Jimp.RESIZE_BEZIER)\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp} this for chaining of methods\n */\nexport default () => ({\n cover(w, h, alignBits, mode, cb) {\n if (typeof w !== \"number\" || typeof h !== \"number\") {\n return throwError.call(this, \"w and h must be numbers\", cb);\n }\n\n if (\n alignBits &&\n typeof alignBits === \"function\" &&\n typeof cb === \"undefined\"\n ) {\n cb = alignBits;\n alignBits = null;\n mode = null;\n } else if (typeof mode === \"function\" && typeof cb === \"undefined\") {\n cb = mode;\n mode = null;\n }\n\n alignBits =\n alignBits ||\n this.constructor.HORIZONTAL_ALIGN_CENTER |\n this.constructor.VERTICAL_ALIGN_MIDDLE;\n const hbits = alignBits & ((1 << 3) - 1);\n const vbits = alignBits >> 3;\n\n // check if more flags than one is in the bit sets\n if (\n !(\n (hbits !== 0 && !(hbits & (hbits - 1))) ||\n (vbits !== 0 && !(vbits & (vbits - 1)))\n )\n )\n return throwError.call(\n this,\n \"only use one flag per alignment direction\",\n cb\n );\n\n const alignH = hbits >> 1; // 0, 1, 2\n const alignV = vbits >> 1; // 0, 1, 2\n\n const f =\n w / h > this.bitmap.width / this.bitmap.height\n ? w / this.bitmap.width\n : h / this.bitmap.height;\n this.scale(f, mode);\n this.crop(\n ((this.bitmap.width - w) / 2) * alignH,\n ((this.bitmap.height - h) / 2) * alignV,\n w,\n h\n );\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n },\n});\n"],"file":"index.js"}
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-cover/index.d.ts b/node_modules/@jimp/plugin-cover/index.d.ts
new file mode 100644
index 00000000..6a9e5d1c
--- /dev/null
+++ b/node_modules/@jimp/plugin-cover/index.d.ts
@@ -0,0 +1,20 @@
+import { ImageCallback } from "@jimp/core";
+
+interface Cover {
+ cover(w: number, h: number, cb?: ImageCallback): this;
+ cover(
+ w: number,
+ h: number,
+ alignBits?: number,
+ cb?: ImageCallback
+ ): this;
+ cover(
+ w: number,
+ h: number,
+ alignBits?: number,
+ mode?: string,
+ cb?: ImageCallback
+ ): this;
+}
+
+export default function (): Cover;
diff --git a/node_modules/@jimp/plugin-cover/package.json b/node_modules/@jimp/plugin-cover/package.json
new file mode 100644
index 00000000..0e7a6a6d
--- /dev/null
+++ b/node_modules/@jimp/plugin-cover/package.json
@@ -0,0 +1,43 @@
+{
+ "name": "@jimp/plugin-cover",
+ "version": "0.16.13",
+ "description": "cover an image.",
+ "main": "dist/index.js",
+ "module": "es/index.js",
+ "types": "index.d.ts",
+ "scripts": {
+ "test": "cross-env BABEL_ENV=test mocha --require @babel/register",
+ "test:watch": "npm run test -- --reporter min --watch",
+ "test:coverage": "nyc npm run test",
+ "build": "npm run build:node:production && npm run build:module",
+ "build:watch": "npm run build:node:debug -- -- --watch --verbose",
+ "build:debug": "npm run build:node:debug",
+ "build:module": "cross-env BABEL_ENV=module babel src -d es --source-maps --config-file ../../babel.config.js",
+ "build:node": "babel src -d dist --source-maps --config-file ../../babel.config.js",
+ "build:node:debug": "cross-env BABEL_ENV=development npm run build:node",
+ "build:node:production": "cross-env BABEL_ENV=production npm run build:node"
+ },
+ "author": "",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5",
+ "@jimp/plugin-crop": ">=0.3.5",
+ "@jimp/plugin-resize": ">=0.3.5",
+ "@jimp/plugin-scale": ">=0.3.5"
+ },
+ "devDependencies": {
+ "@jimp/custom": "^0.16.13",
+ "@jimp/plugin-crop": "^0.16.13",
+ "@jimp/plugin-resize": "^0.16.13",
+ "@jimp/plugin-scale": "^0.16.13",
+ "@jimp/test-utils": "^0.16.13"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "gitHead": "9eec86086634329a072901dca3a800b850548572"
+}
diff --git a/node_modules/@jimp/plugin-cover/src/index.js b/node_modules/@jimp/plugin-cover/src/index.js
new file mode 100644
index 00000000..37a0f1b7
--- /dev/null
+++ b/node_modules/@jimp/plugin-cover/src/index.js
@@ -0,0 +1,72 @@
+import { isNodePattern, throwError } from "@jimp/utils";
+
+/**
+ * Scale the image so the given width and height keeping the aspect ratio. Some parts of the image may be clipped.
+ * @param {number} w the width to resize the image to
+ * @param {number} h the height to resize the image to
+ * @param {number} alignBits (optional) A bitmask for horizontal and vertical alignment
+ * @param {string} mode (optional) a scaling method (e.g. Jimp.RESIZE_BEZIER)
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+export default () => ({
+ cover(w, h, alignBits, mode, cb) {
+ if (typeof w !== "number" || typeof h !== "number") {
+ return throwError.call(this, "w and h must be numbers", cb);
+ }
+
+ if (
+ alignBits &&
+ typeof alignBits === "function" &&
+ typeof cb === "undefined"
+ ) {
+ cb = alignBits;
+ alignBits = null;
+ mode = null;
+ } else if (typeof mode === "function" && typeof cb === "undefined") {
+ cb = mode;
+ mode = null;
+ }
+
+ alignBits =
+ alignBits ||
+ this.constructor.HORIZONTAL_ALIGN_CENTER |
+ this.constructor.VERTICAL_ALIGN_MIDDLE;
+ const hbits = alignBits & ((1 << 3) - 1);
+ const vbits = alignBits >> 3;
+
+ // check if more flags than one is in the bit sets
+ if (
+ !(
+ (hbits !== 0 && !(hbits & (hbits - 1))) ||
+ (vbits !== 0 && !(vbits & (vbits - 1)))
+ )
+ )
+ return throwError.call(
+ this,
+ "only use one flag per alignment direction",
+ cb
+ );
+
+ const alignH = hbits >> 1; // 0, 1, 2
+ const alignV = vbits >> 1; // 0, 1, 2
+
+ const f =
+ w / h > this.bitmap.width / this.bitmap.height
+ ? w / this.bitmap.width
+ : h / this.bitmap.height;
+ this.scale(f, mode);
+ this.crop(
+ ((this.bitmap.width - w) / 2) * alignH,
+ ((this.bitmap.height - h) / 2) * alignV,
+ w,
+ h
+ );
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+});
diff --git a/node_modules/@jimp/plugin-cover/test/cover.test.js b/node_modules/@jimp/plugin-cover/test/cover.test.js
new file mode 100644
index 00000000..121fa442
--- /dev/null
+++ b/node_modules/@jimp/plugin-cover/test/cover.test.js
@@ -0,0 +1,131 @@
+import { Jimp, mkJGD, hasOwnProp } from "@jimp/test-utils";
+import configure from "@jimp/custom";
+import crop from "@jimp/plugin-crop";
+import scale from "@jimp/plugin-scale";
+import resize from "@jimp/plugin-resize";
+
+import cover from "../src";
+
+const jimp = configure({ plugins: [resize, scale, crop, cover] }, Jimp);
+
+describe("All align combinations for cover", () => {
+ const verticalJGD = mkJGD(
+ "▴▴▴▴▸▸▸▸",
+ "▴▴▴▴▸▸▸▸",
+ "▴▴▴▴▸▸▸▸",
+ "▴▴▴▴▸▸▸▸",
+ "▴▴▴▴▸▸▸▸",
+ "▴▴▴▴▸▸▸▸",
+ "▾▾▾▾◆◆◆◆",
+ "▾▾▾▾◆◆◆◆",
+ "▾▾▾▾◆◆◆◆",
+ "▾▾▾▾◆◆◆◆",
+ "▾▾▾▾◆◆◆◆",
+ "▾▾▾▾◆◆◆◆"
+ );
+
+ const horizontalJGD = mkJGD(
+ "▴▴▴▴▴▴▸▸▸▸▸▸",
+ "▴▴▴▴▴▴▸▸▸▸▸▸",
+ "▴▴▴▴▴▴▸▸▸▸▸▸",
+ "▴▴▴▴▴▴▸▸▸▸▸▸",
+ "▾▾▾▾▾▾◆◆◆◆◆◆",
+ "▾▾▾▾▾▾◆◆◆◆◆◆",
+ "▾▾▾▾▾▾◆◆◆◆◆◆",
+ "▾▾▾▾▾▾◆◆◆◆◆◆"
+ );
+
+ let vertical;
+ let horizontal; // stores the Jimp instances of the JGD images above.
+
+ before((done) => {
+ const img1 = jimp.read(verticalJGD);
+ const img2 = jimp.read(horizontalJGD);
+ Promise.all([img1, img2])
+ .then((images) => {
+ vertical = images[0];
+ horizontal = images[1];
+ done();
+ })
+ .catch(done);
+ });
+
+ const tests = {}; // Stores the expected result for each alignment combination.
+ tests["LEFT TOP"] = {
+ cover: {
+ verti: mkJGD("▴▴▸▸", "▴▴▸▸", "▴▴▸▸", "▾▾◆◆"),
+ horiz: mkJGD("▴▴▴▸", "▴▴▴▸", "▾▾▾◆", "▾▾▾◆"),
+ },
+ };
+ tests["CENTER TOP"] = {
+ cover: {
+ verti: mkJGD("▴▴▸▸", "▴▴▸▸", "▴▴▸▸", "▾▾◆◆"),
+ horiz: mkJGD("▴▴▸▸", "▴▴▸▸", "▾▾◆◆", "▾▾◆◆"),
+ },
+ };
+ tests["RIGHT TOP"] = {
+ cover: {
+ verti: mkJGD("▴▴▸▸", "▴▴▸▸", "▴▴▸▸", "▾▾◆◆"),
+ horiz: mkJGD("▴▸▸▸", "▴▸▸▸", "▾◆◆◆", "▾◆◆◆"),
+ },
+ };
+
+ tests["LEFT MIDDLE"] = {
+ cover: {
+ verti: mkJGD("▴▴▸▸", "▴▴▸▸", "▾▾◆◆", "▾▾◆◆"),
+ horiz: mkJGD("▴▴▴▸", "▴▴▴▸", "▾▾▾◆", "▾▾▾◆"),
+ },
+ };
+ tests["CENTER MIDDLE"] = {
+ cover: {
+ verti: mkJGD("▴▴▸▸", "▴▴▸▸", "▾▾◆◆", "▾▾◆◆"),
+ horiz: mkJGD("▴▴▸▸", "▴▴▸▸", "▾▾◆◆", "▾▾◆◆"),
+ },
+ };
+ tests["RIGHT MIDDLE"] = {
+ cover: {
+ verti: mkJGD("▴▴▸▸", "▴▴▸▸", "▾▾◆◆", "▾▾◆◆"),
+ horiz: mkJGD("▴▸▸▸", "▴▸▸▸", "▾◆◆◆", "▾◆◆◆"),
+ },
+ };
+
+ tests["LEFT BOTTOM"] = {
+ cover: {
+ verti: mkJGD("▴▴▸▸", "▾▾◆◆", "▾▾◆◆", "▾▾◆◆"),
+ horiz: mkJGD("▴▴▴▸", "▴▴▴▸", "▾▾▾◆", "▾▾▾◆"),
+ },
+ };
+ tests["CENTER BOTTOM"] = {
+ cover: {
+ verti: mkJGD("▴▴▸▸", "▾▾◆◆", "▾▾◆◆", "▾▾◆◆"),
+ horiz: mkJGD("▴▴▸▸", "▴▴▸▸", "▾▾◆◆", "▾▾◆◆"),
+ },
+ };
+ tests["RIGHT BOTTOM"] = {
+ cover: {
+ verti: mkJGD("▴▴▸▸", "▾▾◆◆", "▾▾◆◆", "▾▾◆◆"),
+ horiz: mkJGD("▴▸▸▸", "▴▸▸▸", "▾◆◆◆", "▾◆◆◆"),
+ },
+ };
+
+ function runAlignTest(align) {
+ const jgdCoverV = tests[align].cover.verti;
+ const jgdCoverH = tests[align].cover.horiz;
+ let a = align.split(" ");
+ a = Jimp["HORIZONTAL_ALIGN_" + a[0]] | Jimp["VERTICAL_ALIGN_" + a[1]];
+ it("cover aligned to " + align, () => {
+ vertical
+ .clone()
+ .cover(4, 4, a)
+ .getJGDSync()
+ .should.be.sameJGD(jgdCoverV, "Vertical image");
+ horizontal
+ .clone()
+ .cover(4, 4, a)
+ .getJGDSync()
+ .should.be.sameJGD(jgdCoverH, "Horizontal image");
+ });
+ }
+
+ for (const align in tests) if (hasOwnProp(tests, align)) runAlignTest(align);
+});
diff --git a/node_modules/@jimp/plugin-crop/CHANGELOG.md b/node_modules/@jimp/plugin-crop/CHANGELOG.md
new file mode 100644
index 00000000..bfa0db7b
--- /dev/null
+++ b/node_modules/@jimp/plugin-crop/CHANGELOG.md
@@ -0,0 +1,52 @@
+# v0.16.3 (Sat Feb 04 2023)
+
+#### 🐛 Bug Fix
+
+- fixed plugin-crop full width slices math [#1073](https://github.com/jimp-dev/jimp/pull/1073) ([@endreszabo](https://github.com/endreszabo))
+
+#### ⚠️ Pushed to `master`
+
+- upgrade prettier ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 2
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+- Endre Szabo ([@endreszabo](https://github.com/endreszabo))
+
+---
+
+# v0.16.0 (Sat Aug 08 2020)
+
+#### 🚀 Enhancement
+
+- added ability to ignore sides on autocrop [#924](https://github.com/oliver-moran/jimp/pull/924) ([@cbanfiel](https://github.com/cbanfiel))
+
+#### Authors: 1
+
+- Chad Banfield ([@cbanfiel](https://github.com/cbanfiel))
+
+---
+
+# v0.11.0 (Fri May 15 2020)
+
+#### 🚀 Enhancement
+
+- Removed Core-JS as a dependency. [#882](https://github.com/oliver-moran/jimp/pull/882) ([@EricRabil](https://github.com/EricRabil))
+
+#### Authors: 1
+
+- Eric Rabil ([@EricRabil](https://github.com/EricRabil))
+
+---
+
+# v0.9.3 (Tue Nov 26 2019)
+
+#### 🐛 Bug Fix
+
+- `@jimp/cli`, `@jimp/core`, `@jimp/custom`, `jimp`, `@jimp/plugin-blit`, `@jimp/plugin-blur`, `@jimp/plugin-circle`, `@jimp/plugin-color`, `@jimp/plugin-contain`, `@jimp/plugin-cover`, `@jimp/plugin-crop`, `@jimp/plugin-displace`, `@jimp/plugin-dither`, `@jimp/plugin-fisheye`, `@jimp/plugin-flip`, `@jimp/plugin-gaussian`, `@jimp/plugin-invert`, `@jimp/plugin-mask`, `@jimp/plugin-normalize`, `@jimp/plugin-print`, `@jimp/plugin-resize`, `@jimp/plugin-rotate`, `@jimp/plugin-scale`, `@jimp/plugin-shadow`, `@jimp/plugin-threshold`, `@jimp/plugins`, `@jimp/test-utils`, `@jimp/bmp`, `@jimp/gif`, `@jimp/jpeg`, `@jimp/png`, `@jimp/tiff`, `@jimp/types`, `@jimp/utils`
+ - Fix regeneratorRuntime errors [#815](https://github.com/oliver-moran/jimp/pull/815) ([@crutchcorn](https://github.com/crutchcorn) [@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 2
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+- Corbin Crutchley ([@crutchcorn](https://github.com/crutchcorn))
diff --git a/project starter code/node_modules/@jimp/plugin-crop/LICENSE b/node_modules/@jimp/plugin-crop/LICENSE
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-crop/LICENSE
rename to node_modules/@jimp/plugin-crop/LICENSE
diff --git a/node_modules/@jimp/plugin-crop/README.md b/node_modules/@jimp/plugin-crop/README.md
new file mode 100644
index 00000000..64689368
--- /dev/null
+++ b/node_modules/@jimp/plugin-crop/README.md
@@ -0,0 +1,56 @@
+
+
+
@jimp/plugin-crop
+
Crop an image.
+
+
+## Crop
+
+Crops the image at a given point to a give size
+
+- @param {number} x the x coordinate to crop form
+- @param {number} y the y coordinate to crop form
+- @param w the width of the crop region
+- @param h the height of the crop region
+- @param {function(Error, Jimp)} cb (optional) a callback for when complete
+
+```js
+import jimp from "jimp";
+
+async function main() {
+ const image = await jimp.read("test/image.png");
+
+ image.crop(150, 150);
+}
+
+main();
+```
+
+## AutoCrop
+
+AutoCrop same color borders from this image
+
+- @param {number} tolerance (optional): a percent value of tolerance for pixels color difference (default: 0.0002%)
+- @param {boolean} cropOnlyFrames (optional): flag to crop only real frames: all 4 sides of the image must have some border (default: true)
+
+or
+
+- @param {object} options object
+ - tolerance (optional): a percent value of tolerance for pixels color difference (default: 0.0002%)
+ - cropOnlyFrames (optional): flag to crop only real frames: all 4 sides of the image must have some border (default: true)
+ - cropSymmetric (optional): flag to force cropping top be symmetric. north and south / east and west are cropped by the same value
+ - leaveBorder (optional): integer of how many pixels of the background color to leave around the image
+
+```js
+import jimp from "jimp";
+
+async function main() {
+ const image = await jimp.read("test/image.png");
+
+ image.autocrop();
+ image.autocrop({ cropOnlyFrames: false, cropSymmetric: true });
+}
+
+main();
+```
diff --git a/node_modules/@jimp/plugin-crop/dist/index.js b/node_modules/@jimp/plugin-crop/dist/index.js
new file mode 100644
index 00000000..1b58ec6a
--- /dev/null
+++ b/node_modules/@jimp/plugin-crop/dist/index.js
@@ -0,0 +1,287 @@
+"use strict";
+
+var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports["default"] = pluginCrop;
+
+var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
+
+var _utils = require("@jimp/utils");
+
+/* eslint-disable no-labels */
+function pluginCrop(event) {
+ /**
+ * Crops the image at a given point to a give size
+ * @param {number} x the x coordinate to crop form
+ * @param {number} y the y coordinate to crop form
+ * @param w the width of the crop region
+ * @param h the height of the crop region
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+ event("crop", function (x, y, w, h, cb) {
+ if (typeof x !== "number" || typeof y !== "number") return _utils.throwError.call(this, "x and y must be numbers", cb);
+ if (typeof w !== "number" || typeof h !== "number") return _utils.throwError.call(this, "w and h must be numbers", cb); // round input
+
+ x = Math.round(x);
+ y = Math.round(y);
+ w = Math.round(w);
+ h = Math.round(h);
+
+ if (x === 0 && w === this.bitmap.width) {
+ // shortcut
+ var start = w * y + x << 2;
+ var end = start + (h * w << 2);
+ this.bitmap.data = this.bitmap.data.slice(start, end);
+ } else {
+ var bitmap = Buffer.allocUnsafe(w * h * 4);
+ var offset = 0;
+ this.scanQuiet(x, y, w, h, function (x, y, idx) {
+ var data = this.bitmap.data.readUInt32BE(idx, true);
+ bitmap.writeUInt32BE(data, offset, true);
+ offset += 4;
+ });
+ this.bitmap.data = bitmap;
+ }
+
+ this.bitmap.width = w;
+ this.bitmap.height = h;
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ });
+ return {
+ "class": {
+ /**
+ * Autocrop same color borders from this image
+ * @param {number} tolerance (optional): a percent value of tolerance for pixels color difference (default: 0.0002%)
+ * @param {boolean} cropOnlyFrames (optional): flag to crop only real frames: all 4 sides of the image must have some border (default: true)
+ * @param {function(Error, Jimp)} cb (optional): a callback for when complete (default: no callback)
+ * @returns {Jimp} this for chaining of methods
+ */
+ autocrop: function autocrop() {
+ var w = this.bitmap.width;
+ var h = this.bitmap.height;
+ var minPixelsPerSide = 1; // to avoid cropping completely the image, resulting in an invalid 0 sized image
+
+ var cb; // callback
+
+ var leaveBorder = 0; // Amount of pixels in border to leave
+
+ var tolerance = 0.0002; // percent of color difference tolerance (default value)
+
+ var cropOnlyFrames = true; // flag to force cropping only if the image has a real "frame"
+ // i.e. all 4 sides have some border (default value)
+
+ var cropSymmetric = false; // flag to force cropping top be symmetric.
+ // i.e. north and south / east and west are cropped by the same value
+
+ var ignoreSides = {
+ north: false,
+ south: false,
+ east: false,
+ west: false
+ }; // parse arguments
+
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+
+ for (var a = 0, len = args.length; a < len; a++) {
+ if (typeof args[a] === "number") {
+ // tolerance value passed
+ tolerance = args[a];
+ }
+
+ if (typeof args[a] === "boolean") {
+ // cropOnlyFrames value passed
+ cropOnlyFrames = args[a];
+ }
+
+ if (typeof args[a] === "function") {
+ // callback value passed
+ cb = args[a];
+ }
+
+ if ((0, _typeof2["default"])(args[a]) === "object") {
+ // config object passed
+ var config = args[a];
+
+ if (typeof config.tolerance !== "undefined") {
+ tolerance = config.tolerance;
+ }
+
+ if (typeof config.cropOnlyFrames !== "undefined") {
+ cropOnlyFrames = config.cropOnlyFrames;
+ }
+
+ if (typeof config.cropSymmetric !== "undefined") {
+ cropSymmetric = config.cropSymmetric;
+ }
+
+ if (typeof config.leaveBorder !== "undefined") {
+ leaveBorder = config.leaveBorder;
+ }
+
+ if (typeof config.ignoreSides !== "undefined") {
+ ignoreSides = config.ignoreSides;
+ }
+ }
+ }
+ /**
+ * All borders must be of the same color as the top left pixel, to be cropped.
+ * It should be possible to crop borders each with a different color,
+ * but since there are many ways for corners to intersect, it would
+ * introduce unnecessary complexity to the algorithm.
+ */
+ // scan each side for same color borders
+
+
+ var colorTarget = this.getPixelColor(0, 0); // top left pixel color is the target color
+
+ var rgba1 = this.constructor.intToRGBA(colorTarget); // for north and east sides
+
+ var northPixelsToCrop = 0;
+ var eastPixelsToCrop = 0;
+ var southPixelsToCrop = 0;
+ var westPixelsToCrop = 0; // north side (scan rows from north to south)
+
+ colorTarget = this.getPixelColor(0, 0);
+
+ if (!ignoreSides.north) {
+ north: for (var y = 0; y < h - minPixelsPerSide; y++) {
+ for (var x = 0; x < w; x++) {
+ var colorXY = this.getPixelColor(x, y);
+ var rgba2 = this.constructor.intToRGBA(colorXY);
+
+ if (this.constructor.colorDiff(rgba1, rgba2) > tolerance) {
+ // this pixel is too distant from the first one: abort this side scan
+ break north;
+ }
+ } // this row contains all pixels with the same color: increment this side pixels to crop
+
+
+ northPixelsToCrop++;
+ }
+ } // east side (scan columns from east to west)
+
+
+ colorTarget = this.getPixelColor(w, 0);
+
+ if (!ignoreSides.east) {
+ east: for (var _x = 0; _x < w - minPixelsPerSide; _x++) {
+ for (var _y = 0 + northPixelsToCrop; _y < h; _y++) {
+ var _colorXY = this.getPixelColor(_x, _y);
+
+ var _rgba = this.constructor.intToRGBA(_colorXY);
+
+ if (this.constructor.colorDiff(rgba1, _rgba) > tolerance) {
+ // this pixel is too distant from the first one: abort this side scan
+ break east;
+ }
+ } // this column contains all pixels with the same color: increment this side pixels to crop
+
+
+ eastPixelsToCrop++;
+ }
+ } // south side (scan rows from south to north)
+
+
+ colorTarget = this.getPixelColor(0, h);
+
+ if (!ignoreSides.south) {
+ south: for (var _y2 = h - 1; _y2 >= northPixelsToCrop + minPixelsPerSide; _y2--) {
+ for (var _x2 = w - eastPixelsToCrop - 1; _x2 >= 0; _x2--) {
+ var _colorXY2 = this.getPixelColor(_x2, _y2);
+
+ var _rgba2 = this.constructor.intToRGBA(_colorXY2);
+
+ if (this.constructor.colorDiff(rgba1, _rgba2) > tolerance) {
+ // this pixel is too distant from the first one: abort this side scan
+ break south;
+ }
+ } // this row contains all pixels with the same color: increment this side pixels to crop
+
+
+ southPixelsToCrop++;
+ }
+ } // west side (scan columns from west to east)
+
+
+ colorTarget = this.getPixelColor(w, h);
+
+ if (!ignoreSides.west) {
+ west: for (var _x3 = w - 1; _x3 >= 0 + eastPixelsToCrop + minPixelsPerSide; _x3--) {
+ for (var _y3 = h - 1; _y3 >= 0 + northPixelsToCrop; _y3--) {
+ var _colorXY3 = this.getPixelColor(_x3, _y3);
+
+ var _rgba3 = this.constructor.intToRGBA(_colorXY3);
+
+ if (this.constructor.colorDiff(rgba1, _rgba3) > tolerance) {
+ // this pixel is too distant from the first one: abort this side scan
+ break west;
+ }
+ } // this column contains all pixels with the same color: increment this side pixels to crop
+
+
+ westPixelsToCrop++;
+ }
+ } // decide if a crop is needed
+
+
+ var doCrop = false; // apply leaveBorder
+
+ westPixelsToCrop -= leaveBorder;
+ eastPixelsToCrop -= leaveBorder;
+ northPixelsToCrop -= leaveBorder;
+ southPixelsToCrop -= leaveBorder;
+
+ if (cropSymmetric) {
+ var horizontal = Math.min(eastPixelsToCrop, westPixelsToCrop);
+ var vertical = Math.min(northPixelsToCrop, southPixelsToCrop);
+ westPixelsToCrop = horizontal;
+ eastPixelsToCrop = horizontal;
+ northPixelsToCrop = vertical;
+ southPixelsToCrop = vertical;
+ } // make sure that crops are >= 0
+
+
+ westPixelsToCrop = westPixelsToCrop >= 0 ? westPixelsToCrop : 0;
+ eastPixelsToCrop = eastPixelsToCrop >= 0 ? eastPixelsToCrop : 0;
+ northPixelsToCrop = northPixelsToCrop >= 0 ? northPixelsToCrop : 0;
+ southPixelsToCrop = southPixelsToCrop >= 0 ? southPixelsToCrop : 0; // safety checks
+
+ var widthOfRemainingPixels = w - (westPixelsToCrop + eastPixelsToCrop);
+ var heightOfRemainingPixels = h - (southPixelsToCrop + northPixelsToCrop);
+
+ if (cropOnlyFrames) {
+ // crop image if all sides should be cropped
+ doCrop = eastPixelsToCrop !== 0 && northPixelsToCrop !== 0 && westPixelsToCrop !== 0 && southPixelsToCrop !== 0;
+ } else {
+ // crop image if at least one side should be cropped
+ doCrop = eastPixelsToCrop !== 0 || northPixelsToCrop !== 0 || westPixelsToCrop !== 0 || southPixelsToCrop !== 0;
+ }
+
+ if (doCrop) {
+ // do the real crop
+ this.crop(eastPixelsToCrop, northPixelsToCrop, widthOfRemainingPixels, heightOfRemainingPixels);
+ }
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ }
+ }
+ };
+}
+
+module.exports = exports.default;
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-crop/dist/index.js.map b/node_modules/@jimp/plugin-crop/dist/index.js.map
new file mode 100644
index 00000000..8edd8835
--- /dev/null
+++ b/node_modules/@jimp/plugin-crop/dist/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/index.js"],"names":["pluginCrop","event","x","y","w","h","cb","throwError","call","Math","round","bitmap","width","start","end","data","slice","Buffer","allocUnsafe","offset","scanQuiet","idx","readUInt32BE","writeUInt32BE","height","autocrop","minPixelsPerSide","leaveBorder","tolerance","cropOnlyFrames","cropSymmetric","ignoreSides","north","south","east","west","args","a","len","length","config","colorTarget","getPixelColor","rgba1","constructor","intToRGBA","northPixelsToCrop","eastPixelsToCrop","southPixelsToCrop","westPixelsToCrop","colorXY","rgba2","colorDiff","doCrop","horizontal","min","vertical","widthOfRemainingPixels","heightOfRemainingPixels","crop"],"mappings":"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","sourcesContent":["/* eslint-disable no-labels */\n\nimport { throwError, isNodePattern } from \"@jimp/utils\";\n\nexport default function pluginCrop(event) {\n /**\n * Crops the image at a given point to a give size\n * @param {number} x the x coordinate to crop form\n * @param {number} y the y coordinate to crop form\n * @param w the width of the crop region\n * @param h the height of the crop region\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp} this for chaining of methods\n */\n event(\"crop\", function (x, y, w, h, cb) {\n if (typeof x !== \"number\" || typeof y !== \"number\")\n return throwError.call(this, \"x and y must be numbers\", cb);\n if (typeof w !== \"number\" || typeof h !== \"number\")\n return throwError.call(this, \"w and h must be numbers\", cb);\n\n // round input\n x = Math.round(x);\n y = Math.round(y);\n w = Math.round(w);\n h = Math.round(h);\n\n if (x === 0 && w === this.bitmap.width) {\n // shortcut\n const start = (w * y + x) << 2;\n const end = start + ((h * w) << 2);\n\n this.bitmap.data = this.bitmap.data.slice(start, end);\n } else {\n const bitmap = Buffer.allocUnsafe(w * h * 4);\n let offset = 0;\n\n this.scanQuiet(x, y, w, h, function (x, y, idx) {\n const data = this.bitmap.data.readUInt32BE(idx, true);\n bitmap.writeUInt32BE(data, offset, true);\n offset += 4;\n });\n\n this.bitmap.data = bitmap;\n }\n\n this.bitmap.width = w;\n this.bitmap.height = h;\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n });\n\n return {\n class: {\n /**\n * Autocrop same color borders from this image\n * @param {number} tolerance (optional): a percent value of tolerance for pixels color difference (default: 0.0002%)\n * @param {boolean} cropOnlyFrames (optional): flag to crop only real frames: all 4 sides of the image must have some border (default: true)\n * @param {function(Error, Jimp)} cb (optional): a callback for when complete (default: no callback)\n * @returns {Jimp} this for chaining of methods\n */\n autocrop(...args) {\n const w = this.bitmap.width;\n const h = this.bitmap.height;\n const minPixelsPerSide = 1; // to avoid cropping completely the image, resulting in an invalid 0 sized image\n\n let cb; // callback\n let leaveBorder = 0; // Amount of pixels in border to leave\n let tolerance = 0.0002; // percent of color difference tolerance (default value)\n let cropOnlyFrames = true; // flag to force cropping only if the image has a real \"frame\"\n // i.e. all 4 sides have some border (default value)\n let cropSymmetric = false; // flag to force cropping top be symmetric.\n // i.e. north and south / east and west are cropped by the same value\n let ignoreSides = {\n north: false,\n south: false,\n east: false,\n west: false,\n };\n\n // parse arguments\n for (let a = 0, len = args.length; a < len; a++) {\n if (typeof args[a] === \"number\") {\n // tolerance value passed\n tolerance = args[a];\n }\n\n if (typeof args[a] === \"boolean\") {\n // cropOnlyFrames value passed\n cropOnlyFrames = args[a];\n }\n\n if (typeof args[a] === \"function\") {\n // callback value passed\n cb = args[a];\n }\n\n if (typeof args[a] === \"object\") {\n // config object passed\n const config = args[a];\n\n if (typeof config.tolerance !== \"undefined\") {\n ({ tolerance } = config);\n }\n\n if (typeof config.cropOnlyFrames !== \"undefined\") {\n ({ cropOnlyFrames } = config);\n }\n\n if (typeof config.cropSymmetric !== \"undefined\") {\n ({ cropSymmetric } = config);\n }\n\n if (typeof config.leaveBorder !== \"undefined\") {\n ({ leaveBorder } = config);\n }\n\n if (typeof config.ignoreSides !== \"undefined\") {\n ({ ignoreSides } = config);\n }\n }\n }\n\n /**\n * All borders must be of the same color as the top left pixel, to be cropped.\n * It should be possible to crop borders each with a different color,\n * but since there are many ways for corners to intersect, it would\n * introduce unnecessary complexity to the algorithm.\n */\n\n // scan each side for same color borders\n let colorTarget = this.getPixelColor(0, 0); // top left pixel color is the target color\n const rgba1 = this.constructor.intToRGBA(colorTarget);\n\n // for north and east sides\n let northPixelsToCrop = 0;\n let eastPixelsToCrop = 0;\n let southPixelsToCrop = 0;\n let westPixelsToCrop = 0;\n\n // north side (scan rows from north to south)\n colorTarget = this.getPixelColor(0, 0);\n if (!ignoreSides.north) {\n north: for (let y = 0; y < h - minPixelsPerSide; y++) {\n for (let x = 0; x < w; x++) {\n const colorXY = this.getPixelColor(x, y);\n const rgba2 = this.constructor.intToRGBA(colorXY);\n\n if (this.constructor.colorDiff(rgba1, rgba2) > tolerance) {\n // this pixel is too distant from the first one: abort this side scan\n break north;\n }\n }\n\n // this row contains all pixels with the same color: increment this side pixels to crop\n northPixelsToCrop++;\n }\n }\n\n // east side (scan columns from east to west)\n colorTarget = this.getPixelColor(w, 0);\n if (!ignoreSides.east) {\n east: for (let x = 0; x < w - minPixelsPerSide; x++) {\n for (let y = 0 + northPixelsToCrop; y < h; y++) {\n const colorXY = this.getPixelColor(x, y);\n const rgba2 = this.constructor.intToRGBA(colorXY);\n\n if (this.constructor.colorDiff(rgba1, rgba2) > tolerance) {\n // this pixel is too distant from the first one: abort this side scan\n break east;\n }\n }\n\n // this column contains all pixels with the same color: increment this side pixels to crop\n eastPixelsToCrop++;\n }\n }\n\n // south side (scan rows from south to north)\n colorTarget = this.getPixelColor(0, h);\n\n if (!ignoreSides.south) {\n south: for (\n let y = h - 1;\n y >= northPixelsToCrop + minPixelsPerSide;\n y--\n ) {\n for (let x = w - eastPixelsToCrop - 1; x >= 0; x--) {\n const colorXY = this.getPixelColor(x, y);\n const rgba2 = this.constructor.intToRGBA(colorXY);\n\n if (this.constructor.colorDiff(rgba1, rgba2) > tolerance) {\n // this pixel is too distant from the first one: abort this side scan\n break south;\n }\n }\n\n // this row contains all pixels with the same color: increment this side pixels to crop\n southPixelsToCrop++;\n }\n }\n\n // west side (scan columns from west to east)\n colorTarget = this.getPixelColor(w, h);\n if (!ignoreSides.west) {\n west: for (\n let x = w - 1;\n x >= 0 + eastPixelsToCrop + minPixelsPerSide;\n x--\n ) {\n for (let y = h - 1; y >= 0 + northPixelsToCrop; y--) {\n const colorXY = this.getPixelColor(x, y);\n const rgba2 = this.constructor.intToRGBA(colorXY);\n\n if (this.constructor.colorDiff(rgba1, rgba2) > tolerance) {\n // this pixel is too distant from the first one: abort this side scan\n break west;\n }\n }\n\n // this column contains all pixels with the same color: increment this side pixels to crop\n westPixelsToCrop++;\n }\n }\n\n // decide if a crop is needed\n let doCrop = false;\n\n // apply leaveBorder\n westPixelsToCrop -= leaveBorder;\n eastPixelsToCrop -= leaveBorder;\n northPixelsToCrop -= leaveBorder;\n southPixelsToCrop -= leaveBorder;\n\n if (cropSymmetric) {\n const horizontal = Math.min(eastPixelsToCrop, westPixelsToCrop);\n const vertical = Math.min(northPixelsToCrop, southPixelsToCrop);\n westPixelsToCrop = horizontal;\n eastPixelsToCrop = horizontal;\n northPixelsToCrop = vertical;\n southPixelsToCrop = vertical;\n }\n\n // make sure that crops are >= 0\n westPixelsToCrop = westPixelsToCrop >= 0 ? westPixelsToCrop : 0;\n eastPixelsToCrop = eastPixelsToCrop >= 0 ? eastPixelsToCrop : 0;\n northPixelsToCrop = northPixelsToCrop >= 0 ? northPixelsToCrop : 0;\n southPixelsToCrop = southPixelsToCrop >= 0 ? southPixelsToCrop : 0;\n\n // safety checks\n const widthOfRemainingPixels =\n w - (westPixelsToCrop + eastPixelsToCrop);\n const heightOfRemainingPixels =\n h - (southPixelsToCrop + northPixelsToCrop);\n\n if (cropOnlyFrames) {\n // crop image if all sides should be cropped\n doCrop =\n eastPixelsToCrop !== 0 &&\n northPixelsToCrop !== 0 &&\n westPixelsToCrop !== 0 &&\n southPixelsToCrop !== 0;\n } else {\n // crop image if at least one side should be cropped\n doCrop =\n eastPixelsToCrop !== 0 ||\n northPixelsToCrop !== 0 ||\n westPixelsToCrop !== 0 ||\n southPixelsToCrop !== 0;\n }\n\n if (doCrop) {\n // do the real crop\n this.crop(\n eastPixelsToCrop,\n northPixelsToCrop,\n widthOfRemainingPixels,\n heightOfRemainingPixels\n );\n }\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n },\n },\n };\n}\n"],"file":"index.js"}
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-crop/index.d.ts b/node_modules/@jimp/plugin-crop/index.d.ts
new file mode 100644
index 00000000..48550b4f
--- /dev/null
+++ b/node_modules/@jimp/plugin-crop/index.d.ts
@@ -0,0 +1,46 @@
+import { Jimp, ImageCallback } from "@jimp/core";
+
+interface CropClass {
+ crop(
+ x: number,
+ y: number,
+ w: number,
+ h: number,
+ cb?: ImageCallback
+ ): this;
+ cropQuiet(
+ x: number,
+ y: number,
+ w: number,
+ h: number,
+ cb?: ImageCallback
+ ): this;
+ autocrop(tolerance?: number, cb?: ImageCallback): this;
+ autocrop(cropOnlyFrames?: boolean, cb?: ImageCallback): this;
+ autocrop(
+ tolerance?: number,
+ cropOnlyFrames?: boolean,
+ cb?: ImageCallback
+ ): this;
+ autocrop(
+ options: {
+ tolerance?: number;
+ cropOnlyFrames?: boolean;
+ cropSymmetric?: boolean;
+ leaveBorder?: number;
+ ignoreSides?: {
+ north: boolean;
+ south: boolean;
+ east: boolean;
+ west: boolean;
+ };
+ },
+ cb?: ImageCallback
+ ): this;
+}
+
+interface Crop {
+ class: CropClass;
+}
+
+export default function (): Crop;
diff --git a/node_modules/@jimp/plugin-crop/package.json b/node_modules/@jimp/plugin-crop/package.json
new file mode 100644
index 00000000..ec1f3e56
--- /dev/null
+++ b/node_modules/@jimp/plugin-crop/package.json
@@ -0,0 +1,37 @@
+{
+ "name": "@jimp/plugin-crop",
+ "version": "0.16.13",
+ "description": "crop an image.",
+ "main": "dist/index.js",
+ "module": "es/index.js",
+ "types": "index.d.ts",
+ "scripts": {
+ "test": "cross-env BABEL_ENV=test mocha --require @babel/register",
+ "test:watch": "npm run test -- --reporter min --watch",
+ "test:coverage": "nyc npm run test",
+ "build": "npm run build:node:production && npm run build:module",
+ "build:watch": "npm run build:node:debug -- -- --watch --verbose",
+ "build:debug": "npm run build:node:debug",
+ "build:module": "cross-env BABEL_ENV=module babel src -d es --source-maps --config-file ../../babel.config.js",
+ "build:node": "babel src -d dist --source-maps --config-file ../../babel.config.js",
+ "build:node:debug": "cross-env BABEL_ENV=development npm run build:node",
+ "build:node:production": "cross-env BABEL_ENV=production npm run build:node"
+ },
+ "author": "",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13"
+ },
+ "devDependencies": {
+ "@jimp/custom": "^0.16.13",
+ "@jimp/test-utils": "^0.16.13"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "gitHead": "9eec86086634329a072901dca3a800b850548572"
+}
diff --git a/node_modules/@jimp/plugin-crop/src/index.js b/node_modules/@jimp/plugin-crop/src/index.js
new file mode 100644
index 00000000..5cb13d47
--- /dev/null
+++ b/node_modules/@jimp/plugin-crop/src/index.js
@@ -0,0 +1,293 @@
+/* eslint-disable no-labels */
+
+import { throwError, isNodePattern } from "@jimp/utils";
+
+export default function pluginCrop(event) {
+ /**
+ * Crops the image at a given point to a give size
+ * @param {number} x the x coordinate to crop form
+ * @param {number} y the y coordinate to crop form
+ * @param w the width of the crop region
+ * @param h the height of the crop region
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+ event("crop", function (x, y, w, h, cb) {
+ if (typeof x !== "number" || typeof y !== "number")
+ return throwError.call(this, "x and y must be numbers", cb);
+ if (typeof w !== "number" || typeof h !== "number")
+ return throwError.call(this, "w and h must be numbers", cb);
+
+ // round input
+ x = Math.round(x);
+ y = Math.round(y);
+ w = Math.round(w);
+ h = Math.round(h);
+
+ if (x === 0 && w === this.bitmap.width) {
+ // shortcut
+ const start = (w * y + x) << 2;
+ const end = start + ((h * w) << 2);
+
+ this.bitmap.data = this.bitmap.data.slice(start, end);
+ } else {
+ const bitmap = Buffer.allocUnsafe(w * h * 4);
+ let offset = 0;
+
+ this.scanQuiet(x, y, w, h, function (x, y, idx) {
+ const data = this.bitmap.data.readUInt32BE(idx, true);
+ bitmap.writeUInt32BE(data, offset, true);
+ offset += 4;
+ });
+
+ this.bitmap.data = bitmap;
+ }
+
+ this.bitmap.width = w;
+ this.bitmap.height = h;
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ });
+
+ return {
+ class: {
+ /**
+ * Autocrop same color borders from this image
+ * @param {number} tolerance (optional): a percent value of tolerance for pixels color difference (default: 0.0002%)
+ * @param {boolean} cropOnlyFrames (optional): flag to crop only real frames: all 4 sides of the image must have some border (default: true)
+ * @param {function(Error, Jimp)} cb (optional): a callback for when complete (default: no callback)
+ * @returns {Jimp} this for chaining of methods
+ */
+ autocrop(...args) {
+ const w = this.bitmap.width;
+ const h = this.bitmap.height;
+ const minPixelsPerSide = 1; // to avoid cropping completely the image, resulting in an invalid 0 sized image
+
+ let cb; // callback
+ let leaveBorder = 0; // Amount of pixels in border to leave
+ let tolerance = 0.0002; // percent of color difference tolerance (default value)
+ let cropOnlyFrames = true; // flag to force cropping only if the image has a real "frame"
+ // i.e. all 4 sides have some border (default value)
+ let cropSymmetric = false; // flag to force cropping top be symmetric.
+ // i.e. north and south / east and west are cropped by the same value
+ let ignoreSides = {
+ north: false,
+ south: false,
+ east: false,
+ west: false,
+ };
+
+ // parse arguments
+ for (let a = 0, len = args.length; a < len; a++) {
+ if (typeof args[a] === "number") {
+ // tolerance value passed
+ tolerance = args[a];
+ }
+
+ if (typeof args[a] === "boolean") {
+ // cropOnlyFrames value passed
+ cropOnlyFrames = args[a];
+ }
+
+ if (typeof args[a] === "function") {
+ // callback value passed
+ cb = args[a];
+ }
+
+ if (typeof args[a] === "object") {
+ // config object passed
+ const config = args[a];
+
+ if (typeof config.tolerance !== "undefined") {
+ ({ tolerance } = config);
+ }
+
+ if (typeof config.cropOnlyFrames !== "undefined") {
+ ({ cropOnlyFrames } = config);
+ }
+
+ if (typeof config.cropSymmetric !== "undefined") {
+ ({ cropSymmetric } = config);
+ }
+
+ if (typeof config.leaveBorder !== "undefined") {
+ ({ leaveBorder } = config);
+ }
+
+ if (typeof config.ignoreSides !== "undefined") {
+ ({ ignoreSides } = config);
+ }
+ }
+ }
+
+ /**
+ * All borders must be of the same color as the top left pixel, to be cropped.
+ * It should be possible to crop borders each with a different color,
+ * but since there are many ways for corners to intersect, it would
+ * introduce unnecessary complexity to the algorithm.
+ */
+
+ // scan each side for same color borders
+ let colorTarget = this.getPixelColor(0, 0); // top left pixel color is the target color
+ const rgba1 = this.constructor.intToRGBA(colorTarget);
+
+ // for north and east sides
+ let northPixelsToCrop = 0;
+ let eastPixelsToCrop = 0;
+ let southPixelsToCrop = 0;
+ let westPixelsToCrop = 0;
+
+ // north side (scan rows from north to south)
+ colorTarget = this.getPixelColor(0, 0);
+ if (!ignoreSides.north) {
+ north: for (let y = 0; y < h - minPixelsPerSide; y++) {
+ for (let x = 0; x < w; x++) {
+ const colorXY = this.getPixelColor(x, y);
+ const rgba2 = this.constructor.intToRGBA(colorXY);
+
+ if (this.constructor.colorDiff(rgba1, rgba2) > tolerance) {
+ // this pixel is too distant from the first one: abort this side scan
+ break north;
+ }
+ }
+
+ // this row contains all pixels with the same color: increment this side pixels to crop
+ northPixelsToCrop++;
+ }
+ }
+
+ // east side (scan columns from east to west)
+ colorTarget = this.getPixelColor(w, 0);
+ if (!ignoreSides.east) {
+ east: for (let x = 0; x < w - minPixelsPerSide; x++) {
+ for (let y = 0 + northPixelsToCrop; y < h; y++) {
+ const colorXY = this.getPixelColor(x, y);
+ const rgba2 = this.constructor.intToRGBA(colorXY);
+
+ if (this.constructor.colorDiff(rgba1, rgba2) > tolerance) {
+ // this pixel is too distant from the first one: abort this side scan
+ break east;
+ }
+ }
+
+ // this column contains all pixels with the same color: increment this side pixels to crop
+ eastPixelsToCrop++;
+ }
+ }
+
+ // south side (scan rows from south to north)
+ colorTarget = this.getPixelColor(0, h);
+
+ if (!ignoreSides.south) {
+ south: for (
+ let y = h - 1;
+ y >= northPixelsToCrop + minPixelsPerSide;
+ y--
+ ) {
+ for (let x = w - eastPixelsToCrop - 1; x >= 0; x--) {
+ const colorXY = this.getPixelColor(x, y);
+ const rgba2 = this.constructor.intToRGBA(colorXY);
+
+ if (this.constructor.colorDiff(rgba1, rgba2) > tolerance) {
+ // this pixel is too distant from the first one: abort this side scan
+ break south;
+ }
+ }
+
+ // this row contains all pixels with the same color: increment this side pixels to crop
+ southPixelsToCrop++;
+ }
+ }
+
+ // west side (scan columns from west to east)
+ colorTarget = this.getPixelColor(w, h);
+ if (!ignoreSides.west) {
+ west: for (
+ let x = w - 1;
+ x >= 0 + eastPixelsToCrop + minPixelsPerSide;
+ x--
+ ) {
+ for (let y = h - 1; y >= 0 + northPixelsToCrop; y--) {
+ const colorXY = this.getPixelColor(x, y);
+ const rgba2 = this.constructor.intToRGBA(colorXY);
+
+ if (this.constructor.colorDiff(rgba1, rgba2) > tolerance) {
+ // this pixel is too distant from the first one: abort this side scan
+ break west;
+ }
+ }
+
+ // this column contains all pixels with the same color: increment this side pixels to crop
+ westPixelsToCrop++;
+ }
+ }
+
+ // decide if a crop is needed
+ let doCrop = false;
+
+ // apply leaveBorder
+ westPixelsToCrop -= leaveBorder;
+ eastPixelsToCrop -= leaveBorder;
+ northPixelsToCrop -= leaveBorder;
+ southPixelsToCrop -= leaveBorder;
+
+ if (cropSymmetric) {
+ const horizontal = Math.min(eastPixelsToCrop, westPixelsToCrop);
+ const vertical = Math.min(northPixelsToCrop, southPixelsToCrop);
+ westPixelsToCrop = horizontal;
+ eastPixelsToCrop = horizontal;
+ northPixelsToCrop = vertical;
+ southPixelsToCrop = vertical;
+ }
+
+ // make sure that crops are >= 0
+ westPixelsToCrop = westPixelsToCrop >= 0 ? westPixelsToCrop : 0;
+ eastPixelsToCrop = eastPixelsToCrop >= 0 ? eastPixelsToCrop : 0;
+ northPixelsToCrop = northPixelsToCrop >= 0 ? northPixelsToCrop : 0;
+ southPixelsToCrop = southPixelsToCrop >= 0 ? southPixelsToCrop : 0;
+
+ // safety checks
+ const widthOfRemainingPixels =
+ w - (westPixelsToCrop + eastPixelsToCrop);
+ const heightOfRemainingPixels =
+ h - (southPixelsToCrop + northPixelsToCrop);
+
+ if (cropOnlyFrames) {
+ // crop image if all sides should be cropped
+ doCrop =
+ eastPixelsToCrop !== 0 &&
+ northPixelsToCrop !== 0 &&
+ westPixelsToCrop !== 0 &&
+ southPixelsToCrop !== 0;
+ } else {
+ // crop image if at least one side should be cropped
+ doCrop =
+ eastPixelsToCrop !== 0 ||
+ northPixelsToCrop !== 0 ||
+ westPixelsToCrop !== 0 ||
+ southPixelsToCrop !== 0;
+ }
+
+ if (doCrop) {
+ // do the real crop
+ this.crop(
+ eastPixelsToCrop,
+ northPixelsToCrop,
+ widthOfRemainingPixels,
+ heightOfRemainingPixels
+ );
+ }
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+ },
+ };
+}
diff --git a/node_modules/@jimp/plugin-crop/test/autocrop.test.js b/node_modules/@jimp/plugin-crop/test/autocrop.test.js
new file mode 100644
index 00000000..915fb7c9
--- /dev/null
+++ b/node_modules/@jimp/plugin-crop/test/autocrop.test.js
@@ -0,0 +1,429 @@
+import { Jimp, mkJGD } from "@jimp/test-utils";
+import configure from "@jimp/custom";
+
+import crop from "../src";
+
+const jimp = configure({ plugins: [crop] }, Jimp);
+
+describe("Autocrop", () => {
+ it("image with transparent surround color", async () => {
+ const imgSrc = await jimp.read(
+ mkJGD(
+ " ",
+ " ◆◆ ",
+ " ◆▦▦◆ ",
+ " ◆▦▦▦▦◆ ",
+ " ◆▦▦◆ ",
+ " ◆◆ ",
+ " "
+ )
+ );
+
+ imgSrc
+ .autocrop()
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(" ◆◆ ", " ◆▦▦◆ ", "◆▦▦▦▦◆", " ◆▦▦◆ ", " ◆◆ ")
+ );
+ });
+
+ it("image with opaque surround color", async () => {
+ const imgSrc = await jimp.read(
+ mkJGD(
+ "▥▥▥▥▥▥▥▥▥▥",
+ "▥▥▥▥◆◆▥▥▥▥",
+ "▥▥▥◆▦▦◆▥▥▥",
+ "▥▥◆▦▦▦▦◆▥▥",
+ "▥▥▥◆▦▦◆▥▥▥",
+ "▥▥▥▥◆◆▥▥▥▥",
+ "▥▥▥▥▥▥▥▥▥▥"
+ )
+ );
+
+ imgSrc
+ .autocrop()
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD("▥▥◆◆▥▥", "▥◆▦▦◆▥", "◆▦▦▦▦◆", "▥◆▦▦◆▥", "▥▥◆◆▥▥")
+ );
+ });
+
+ it("image with one color border", async () => {
+ const imgSrc = await jimp.read(
+ mkJGD(
+ "▥▥▥▥▥▥▥▥▥▥▥▥",
+ "▥▥▥▥▥▥▥▥▥▥▥▥",
+ "▥▥ ◆◆ ▥▥",
+ "▥▥ ◆▦▦◆ ▥▥",
+ "▥▥ ◆▦▦▦▦◆ ▥▥",
+ "▥▥ ◆▦▦◆ ▥▥",
+ "▥▥ ◆◆ ▥▥",
+ "▥▥▥▥▥▥▥▥▥▥▥▥",
+ "▥▥▥▥▥▥▥▥▥▥▥▥"
+ )
+ );
+
+ imgSrc
+ .autocrop()
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(" ◆◆ ", " ◆▦▦◆ ", " ◆▦▦▦▦◆ ", " ◆▦▦◆ ", " ◆◆ ")
+ );
+ });
+
+ it("image border with small variation", async () => {
+ const imgSrc = await jimp.read(
+ mkJGD(
+ "323232323232",
+ "232323232323",
+ "32 ◆◆ 32",
+ "23 ◆▦▦◆ 23",
+ "32 ◆▦▦▦▦◆ 32",
+ "23 ◆▦▦◆ 23",
+ "32 ◆◆ 32",
+ "232323232323",
+ "323232323232"
+ )
+ );
+ imgSrc
+ .clone()
+ .autocrop()
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ "323232323232",
+ "232323232323",
+ "32 ◆◆ 32",
+ "23 ◆▦▦◆ 23",
+ "32 ◆▦▦▦▦◆ 32",
+ "23 ◆▦▦◆ 23",
+ "32 ◆◆ 32",
+ "232323232323",
+ "323232323232"
+ )
+ );
+ imgSrc
+ .clone()
+ .autocrop(0.005)
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(" ◆◆ ", " ◆▦▦◆ ", " ◆▦▦▦▦◆ ", " ◆▦▦◆ ", " ◆◆ ")
+ );
+ });
+
+ it("image border with small variation configured by options", async () => {
+ const imgSrc = await Jimp.read(
+ mkJGD(
+ "323232323232",
+ "232323232323",
+ "32 ◆◆ 32",
+ "23 ◆▦▦◆ 23",
+ "32 ◆▦▦▦▦◆ 32",
+ "23 ◆▦▦◆ 23",
+ "32 ◆◆ 32",
+ "232323232323",
+ "323232323232"
+ )
+ );
+ imgSrc
+ .clone()
+ .autocrop()
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ "323232323232",
+ "232323232323",
+ "32 ◆◆ 32",
+ "23 ◆▦▦◆ 23",
+ "32 ◆▦▦▦▦◆ 32",
+ "23 ◆▦▦◆ 23",
+ "32 ◆◆ 32",
+ "232323232323",
+ "323232323232"
+ )
+ );
+ imgSrc
+ .clone()
+ .autocrop({ tolerance: 0.005 })
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(" ◆◆ ", " ◆▦▦◆ ", " ◆▦▦▦▦◆ ", " ◆▦▦◆ ", " ◆◆ ")
+ );
+ });
+
+ it("image without frame", async () => {
+ const imgSrc = await Jimp.read(
+ mkJGD(
+ "▥▥ ◆◆ ",
+ "▥▥ ◆▦▦◆ ",
+ "▥▥ ◆▦▦▦▦◆ ",
+ "▥▥ ◆▦▦◆ ",
+ "▥▥ ◆◆ ",
+ "▥▥▥▥▥▥▥▥▥▥",
+ "▥▥▥▥▥▥▥▥▥▥"
+ )
+ );
+
+ imgSrc
+ .autocrop(false)
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(" ◆◆ ", " ◆▦▦◆ ", " ◆▦▦▦▦◆ ", " ◆▦▦◆ ", " ◆◆ ")
+ );
+ });
+
+ it("image without frame configured by options", async () => {
+ const imgSrc = await Jimp.read(
+ mkJGD(
+ "▥▥ ◆◆ ",
+ "▥▥ ◆▦▦◆ ",
+ "▥▥ ◆▦▦▦▦◆ ",
+ "▥▥ ◆▦▦◆ ",
+ "▥▥ ◆◆ ",
+ "▥▥▥▥▥▥▥▥▥▥",
+ "▥▥▥▥▥▥▥▥▥▥"
+ )
+ );
+
+ imgSrc
+ .autocrop({ cropOnlyFrames: false })
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(" ◆◆ ", " ◆▦▦◆ ", " ◆▦▦▦▦◆ ", " ◆▦▦◆ ", " ◆◆ ")
+ );
+ });
+
+ it("image with symmetric border configured by options", async () => {
+ const imgSrc = await Jimp.read(
+ mkJGD(
+ "▥▥▥▥▥▥▥▥▥▥▥▥▥▥",
+ "▥▥ ◆◆ ▥▥▥▥",
+ "▥▥ ◆▦▦◆ ▥▥▥▥",
+ "▥▥ ◆▦▦▦▦◆ ▥▥▥▥",
+ "▥▥ ◆▦▦◆ ▥▥▥▥",
+ "▥▥ ◆◆ ▥▥▥▥",
+ "▥▥▥▥▥▥▥▥▥▥▥▥▥▥",
+ "▥▥▥▥▥▥▥▥▥▥▥▥▥▥"
+ )
+ );
+
+ imgSrc
+ .autocrop({ cropSymmetric: true })
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ " ◆◆ ▥▥",
+ " ◆▦▦◆ ▥▥",
+ " ◆▦▦▦▦◆ ▥▥",
+ " ◆▦▦◆ ▥▥",
+ " ◆◆ ▥▥",
+ "▥▥▥▥▥▥▥▥▥▥"
+ )
+ );
+ });
+
+ it("image without frame and with symmetric border configured by options", async () => {
+ const imgSrc = await Jimp.read(
+ mkJGD(
+ "▥▥ ◆◆ ▥▥▥▥",
+ "▥▥ ◆▦▦◆ ▥▥▥▥",
+ "▥▥ ◆▦▦▦▦◆ ▥▥▥▥",
+ "▥▥ ◆▦▦◆ ▥▥▥▥",
+ "▥▥ ◆◆ ▥▥▥▥",
+ "▥▥▥▥▥▥▥▥▥▥▥▥▥▥",
+ "▥▥▥▥▥▥▥▥▥▥▥▥▥▥"
+ )
+ );
+ imgSrc
+ .autocrop({ cropSymmetric: true, cropOnlyFrames: false })
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ " ◆◆ ▥▥",
+ " ◆▦▦◆ ▥▥",
+ " ◆▦▦▦▦◆ ▥▥",
+ " ◆▦▦◆ ▥▥",
+ " ◆◆ ▥▥",
+ "▥▥▥▥▥▥▥▥▥▥",
+ "▥▥▥▥▥▥▥▥▥▥"
+ )
+ );
+ });
+
+ it("image without frame and with some border left", async () => {
+ const imgSrc = await Jimp.read(
+ mkJGD(
+ "323232323232",
+ "232323232323",
+ "32 ◆◆ 32",
+ "23 ◆▦▦◆ 23",
+ "32 ◆▦▦▦▦◆ 32",
+ "23 ◆▦▦◆ 23",
+ "32 ◆◆ 32",
+ "232323232323",
+ "323232323232"
+ )
+ );
+
+ imgSrc
+ .autocrop({
+ tolerance: 0.005,
+ leaveBorder: 1,
+ })
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ "3232323232",
+ "2 ◆◆ 3",
+ "3 ◆▦▦◆ 2",
+ "2 ◆▦▦▦▦◆ 3",
+ "3 ◆▦▦◆ 2",
+ "2 ◆◆ 3",
+ "3232323232"
+ )
+ );
+ });
+
+ it('image not cropped given an out of bounds "leaveBorder" value ', async () => {
+ const imgSrc = await Jimp.read(
+ mkJGD(
+ "323232323232",
+ "232323232323",
+ "32 ◆◆ 32",
+ "23 ◆▦▦◆ 23",
+ "32 ◆▦▦▦▦◆ 32",
+ "23 ◆▦▦◆ 23",
+ "32 ◆◆ 32",
+ "232323232323",
+ "323232323232"
+ )
+ );
+
+ imgSrc
+ .autocrop({
+ tolerance: 0.005,
+ leaveBorder: 100,
+ })
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ "323232323232",
+ "232323232323",
+ "32 ◆◆ 32",
+ "23 ◆▦▦◆ 23",
+ "32 ◆▦▦▦▦◆ 32",
+ "23 ◆▦▦◆ 23",
+ "32 ◆◆ 32",
+ "232323232323",
+ "323232323232"
+ )
+ );
+ });
+
+ it("image with top and bottom frame and leaveBorder", async () => {
+ const imgSrc = await Jimp.read(
+ mkJGD(
+ "▥▥▥▥▥▥▥▥",
+ "▥▥▥▥▥▥▥▥",
+ "▥▥▥▥▥▥▥▥",
+ " ◆◆ ",
+ " ◆▦▦◆ ",
+ " ◆▦▦▦▦◆ ",
+ " ◆▦▦◆ ",
+ " ◆◆ ",
+ "▥▥▥▥▥▥▥▥",
+ "▥▥▥▥▥▥▥▥",
+ "▥▥▥▥▥▥▥▥"
+ )
+ );
+ imgSrc
+ .autocrop({ cropSymmetric: true, cropOnlyFrames: false, leaveBorder: 2 })
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ "▥▥▥▥▥▥▥▥",
+ "▥▥▥▥▥▥▥▥",
+ " ◆◆ ",
+ " ◆▦▦◆ ",
+ " ◆▦▦▦▦◆ ",
+ " ◆▦▦◆ ",
+ " ◆◆ ",
+ "▥▥▥▥▥▥▥▥",
+ "▥▥▥▥▥▥▥▥"
+ )
+ );
+ });
+
+ it("ignore sides north", async () => {
+ const imgSrc = await jimp.read(
+ mkJGD(
+ " ",
+ " ◆◆ ",
+ " ◆▦▦◆ ",
+ " ◆▦▦▦▦◆ ",
+ " ◆▦▦◆ ",
+ " ◆◆ ",
+ " "
+ )
+ );
+
+ imgSrc
+ .autocrop({ cropOnlyFrames: false, ignoreSides: { north: true } })
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(" ", " ◆◆ ", " ◆▦▦◆ ", "◆▦▦▦▦◆", " ◆▦▦◆ ", " ◆◆ ")
+ );
+ });
+
+ it("ignore sides south and west", async () => {
+ const imgSrc = await jimp.read(
+ mkJGD(
+ " ",
+ " ◆◆ ",
+ " ◆▦▦◆ ",
+ " ◆▦▦▦▦◆ ",
+ " ◆▦▦◆ ",
+ " ◆◆ ",
+ " "
+ )
+ );
+
+ imgSrc
+ .autocrop({
+ cropOnlyFrames: false,
+ ignoreSides: { west: true, south: true },
+ })
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ " ◆◆ ",
+ " ◆▦▦◆ ",
+ "◆▦▦▦▦◆ ",
+ " ◆▦▦◆ ",
+ " ◆◆ ",
+ " "
+ )
+ );
+ });
+
+ it("ignore sides east", async () => {
+ const imgSrc = await jimp.read(
+ mkJGD(
+ " ",
+ " ◆◆ ",
+ " ◆▦▦◆ ",
+ " ◆▦▦▦▦◆ ",
+ " ◆▦▦◆ ",
+ " ◆◆ ",
+ " "
+ )
+ );
+
+ imgSrc
+ .autocrop({ cropOnlyFrames: false, ignoreSides: { east: true } })
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(" ◆◆ ", " ◆▦▦◆ ", " ◆▦▦▦▦◆", " ◆▦▦◆ ", " ◆◆ ")
+ );
+ });
+});
diff --git a/node_modules/@jimp/plugin-crop/test/crop.test.js b/node_modules/@jimp/plugin-crop/test/crop.test.js
new file mode 100644
index 00000000..734e2788
--- /dev/null
+++ b/node_modules/@jimp/plugin-crop/test/crop.test.js
@@ -0,0 +1,65 @@
+import { Jimp, mkJGD } from "@jimp/test-utils";
+import configure from "@jimp/custom";
+
+import crop from "../src";
+
+const jimp = configure({ plugins: [crop] }, Jimp);
+
+describe("crop", () => {
+ // 6x5 size
+ const testImage = mkJGD(" ◆◆ ", " ◆▦▦◆ ", "◆▦▦▦▦◆", " ◆▦▦◆ ", " ◆◆ ");
+
+ it("full width from top", async () => {
+ const imgSrc = await jimp.read(testImage);
+
+ imgSrc
+ .crop(0, 0, 6, 2)
+ .getJGDSync()
+ .should.be.sameJGD(mkJGD(" ◆◆ ", " ◆▦▦◆ "));
+ });
+
+ it("full width from bottom", async () => {
+ const imgSrc = await jimp.read(testImage);
+
+ imgSrc
+ .crop(0, 3, 6, 2)
+ .getJGDSync()
+ .should.be.sameJGD(mkJGD(" ◆▦▦◆ ", " ◆◆ "));
+ });
+
+ it("full width from middle", async () => {
+ const imgSrc = await jimp.read(testImage);
+
+ imgSrc
+ .crop(0, 2, 6, 2)
+ .getJGDSync()
+ .should.be.sameJGD(mkJGD("◆▦▦▦▦◆", " ◆▦▦◆ "));
+ });
+
+ it("full height from left", async () => {
+ const imgSrc = await jimp.read(testImage);
+
+ imgSrc
+ .crop(0, 0, 2, 5)
+ .getJGDSync()
+ .should.be.sameJGD(mkJGD(" ", " ◆", "◆▦", " ◆", " "));
+ });
+
+ it("full height from right", async () => {
+ const imgSrc = await jimp.read(testImage);
+
+ imgSrc
+ .crop(4, 0, 2, 5)
+ .getJGDSync()
+ .should.be.sameJGD(mkJGD(" ", "◆ ", "▦◆", "◆ ", " "));
+ });
+
+ it("full height from middle", async () => {
+ const imgSrc = await jimp.read(testImage);
+
+ imgSrc
+ .crop(2, 0, 2, 5)
+ .getJGDSync()
+ .should.be.sameJGD(mkJGD("◆◆", "▦▦", "▦▦", "▦▦", "◆◆"));
+ });
+});
diff --git a/node_modules/@jimp/plugin-displace/CHANGELOG.md b/node_modules/@jimp/plugin-displace/CHANGELOG.md
new file mode 100644
index 00000000..4eb3193f
--- /dev/null
+++ b/node_modules/@jimp/plugin-displace/CHANGELOG.md
@@ -0,0 +1,35 @@
+# v0.16.3 (Sat Feb 04 2023)
+
+#### ⚠️ Pushed to `master`
+
+- upgrade prettier ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 1
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+---
+
+# v0.11.0 (Fri May 15 2020)
+
+#### 🚀 Enhancement
+
+- Removed Core-JS as a dependency. [#882](https://github.com/oliver-moran/jimp/pull/882) ([@EricRabil](https://github.com/EricRabil))
+
+#### Authors: 1
+
+- Eric Rabil ([@EricRabil](https://github.com/EricRabil))
+
+---
+
+# v0.9.3 (Tue Nov 26 2019)
+
+#### 🐛 Bug Fix
+
+- `@jimp/cli`, `@jimp/core`, `@jimp/custom`, `jimp`, `@jimp/plugin-blit`, `@jimp/plugin-blur`, `@jimp/plugin-circle`, `@jimp/plugin-color`, `@jimp/plugin-contain`, `@jimp/plugin-cover`, `@jimp/plugin-crop`, `@jimp/plugin-displace`, `@jimp/plugin-dither`, `@jimp/plugin-fisheye`, `@jimp/plugin-flip`, `@jimp/plugin-gaussian`, `@jimp/plugin-invert`, `@jimp/plugin-mask`, `@jimp/plugin-normalize`, `@jimp/plugin-print`, `@jimp/plugin-resize`, `@jimp/plugin-rotate`, `@jimp/plugin-scale`, `@jimp/plugin-shadow`, `@jimp/plugin-threshold`, `@jimp/plugins`, `@jimp/test-utils`, `@jimp/bmp`, `@jimp/gif`, `@jimp/jpeg`, `@jimp/png`, `@jimp/tiff`, `@jimp/types`, `@jimp/utils`
+ - Fix regeneratorRuntime errors [#815](https://github.com/oliver-moran/jimp/pull/815) ([@crutchcorn](https://github.com/crutchcorn) [@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 2
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+- Corbin Crutchley ([@crutchcorn](https://github.com/crutchcorn))
diff --git a/project starter code/node_modules/@jimp/plugin-displace/LICENSE b/node_modules/@jimp/plugin-displace/LICENSE
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-displace/LICENSE
rename to node_modules/@jimp/plugin-displace/LICENSE
diff --git a/node_modules/@jimp/plugin-displace/README.md b/node_modules/@jimp/plugin-displace/README.md
new file mode 100644
index 00000000..d74a2447
--- /dev/null
+++ b/node_modules/@jimp/plugin-displace/README.md
@@ -0,0 +1,27 @@
+
+
+
@jimp/plugin-displace
+
Displace an image.
+
+
+Displaces the image based on the provided displacement map
+
+## Usage
+
+- @param {object} map the source Jimp instance
+- @param {number} offset the maximum displacement value
+- @param {function(Error, Jimp)} cb (optional) a callback for when complete
+
+```js
+import jimp from "jimp";
+
+async function main() {
+ const image = await jimp.read("test/image.png");
+
+ // Make me better!
+ image.displace(map, 10);
+}
+
+main();
+```
diff --git a/node_modules/@jimp/plugin-displace/dist/index.js b/node_modules/@jimp/plugin-displace/dist/index.js
new file mode 100644
index 00000000..caa1a1fd
--- /dev/null
+++ b/node_modules/@jimp/plugin-displace/dist/index.js
@@ -0,0 +1,53 @@
+"use strict";
+
+var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports["default"] = void 0;
+
+var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
+
+var _utils = require("@jimp/utils");
+
+/**
+ * Displaces the image based on the provided displacement map
+ * @param {object} map the source Jimp instance
+ * @param {number} offset the maximum displacement value
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+var _default = function _default() {
+ return {
+ displace: function displace(map, offset, cb) {
+ if ((0, _typeof2["default"])(map) !== "object" || map.constructor !== this.constructor) {
+ return _utils.throwError.call(this, "The source must be a Jimp image", cb);
+ }
+
+ if (typeof offset !== "number") {
+ return _utils.throwError.call(this, "factor must be a number", cb);
+ }
+
+ var source = this.cloneQuiet();
+ this.scanQuiet(0, 0, this.bitmap.width, this.bitmap.height, function (x, y, idx) {
+ var displacement = map.bitmap.data[idx] / 256 * offset;
+ displacement = Math.round(displacement);
+ var ids = this.getPixelIndex(x + displacement, y);
+ this.bitmap.data[ids] = source.bitmap.data[idx];
+ this.bitmap.data[ids + 1] = source.bitmap.data[idx + 1];
+ this.bitmap.data[ids + 2] = source.bitmap.data[idx + 2];
+ });
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ }
+ };
+};
+
+exports["default"] = _default;
+module.exports = exports.default;
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-displace/dist/index.js.map b/node_modules/@jimp/plugin-displace/dist/index.js.map
new file mode 100644
index 00000000..d525666d
--- /dev/null
+++ b/node_modules/@jimp/plugin-displace/dist/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/index.js"],"names":["displace","map","offset","cb","constructor","throwError","call","source","cloneQuiet","scanQuiet","bitmap","width","height","x","y","idx","displacement","data","Math","round","ids","getPixelIndex"],"mappings":";;;;;;;;;;;AAAA;;AAEA;;;;;;;eAOe;AAAA,SAAO;AACpBA,IAAAA,QADoB,oBACXC,GADW,EACNC,MADM,EACEC,EADF,EACM;AACxB,UAAI,yBAAOF,GAAP,MAAe,QAAf,IAA2BA,GAAG,CAACG,WAAJ,KAAoB,KAAKA,WAAxD,EAAqE;AACnE,eAAOC,kBAAWC,IAAX,CAAgB,IAAhB,EAAsB,iCAAtB,EAAyDH,EAAzD,CAAP;AACD;;AAED,UAAI,OAAOD,MAAP,KAAkB,QAAtB,EAAgC;AAC9B,eAAOG,kBAAWC,IAAX,CAAgB,IAAhB,EAAsB,yBAAtB,EAAiDH,EAAjD,CAAP;AACD;;AAED,UAAMI,MAAM,GAAG,KAAKC,UAAL,EAAf;AACA,WAAKC,SAAL,CACE,CADF,EAEE,CAFF,EAGE,KAAKC,MAAL,CAAYC,KAHd,EAIE,KAAKD,MAAL,CAAYE,MAJd,EAKE,UAAUC,CAAV,EAAaC,CAAb,EAAgBC,GAAhB,EAAqB;AACnB,YAAIC,YAAY,GAAIf,GAAG,CAACS,MAAJ,CAAWO,IAAX,CAAgBF,GAAhB,IAAuB,GAAxB,GAA+Bb,MAAlD;AACAc,QAAAA,YAAY,GAAGE,IAAI,CAACC,KAAL,CAAWH,YAAX,CAAf;AAEA,YAAMI,GAAG,GAAG,KAAKC,aAAL,CAAmBR,CAAC,GAAGG,YAAvB,EAAqCF,CAArC,CAAZ;AACA,aAAKJ,MAAL,CAAYO,IAAZ,CAAiBG,GAAjB,IAAwBb,MAAM,CAACG,MAAP,CAAcO,IAAd,CAAmBF,GAAnB,CAAxB;AACA,aAAKL,MAAL,CAAYO,IAAZ,CAAiBG,GAAG,GAAG,CAAvB,IAA4Bb,MAAM,CAACG,MAAP,CAAcO,IAAd,CAAmBF,GAAG,GAAG,CAAzB,CAA5B;AACA,aAAKL,MAAL,CAAYO,IAAZ,CAAiBG,GAAG,GAAG,CAAvB,IAA4Bb,MAAM,CAACG,MAAP,CAAcO,IAAd,CAAmBF,GAAG,GAAG,CAAzB,CAA5B;AACD,OAbH;;AAgBA,UAAI,0BAAcZ,EAAd,CAAJ,EAAuB;AACrBA,QAAAA,EAAE,CAACG,IAAH,CAAQ,IAAR,EAAc,IAAd,EAAoB,IAApB;AACD;;AAED,aAAO,IAAP;AACD;AAhCmB,GAAP;AAAA,C","sourcesContent":["import { isNodePattern, throwError } from \"@jimp/utils\";\n\n/**\n * Displaces the image based on the provided displacement map\n * @param {object} map the source Jimp instance\n * @param {number} offset the maximum displacement value\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp} this for chaining of methods\n */\nexport default () => ({\n displace(map, offset, cb) {\n if (typeof map !== \"object\" || map.constructor !== this.constructor) {\n return throwError.call(this, \"The source must be a Jimp image\", cb);\n }\n\n if (typeof offset !== \"number\") {\n return throwError.call(this, \"factor must be a number\", cb);\n }\n\n const source = this.cloneQuiet();\n this.scanQuiet(\n 0,\n 0,\n this.bitmap.width,\n this.bitmap.height,\n function (x, y, idx) {\n let displacement = (map.bitmap.data[idx] / 256) * offset;\n displacement = Math.round(displacement);\n\n const ids = this.getPixelIndex(x + displacement, y);\n this.bitmap.data[ids] = source.bitmap.data[idx];\n this.bitmap.data[ids + 1] = source.bitmap.data[idx + 1];\n this.bitmap.data[ids + 2] = source.bitmap.data[idx + 2];\n }\n );\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n },\n});\n"],"file":"index.js"}
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-displace/index.d.ts b/node_modules/@jimp/plugin-displace/index.d.ts
new file mode 100644
index 00000000..d2ea79bf
--- /dev/null
+++ b/node_modules/@jimp/plugin-displace/index.d.ts
@@ -0,0 +1,7 @@
+import { Jimp, ImageCallback } from "@jimp/core";
+
+interface Displace {
+ displace(map: Jimp, offset: number, cb?: ImageCallback): this;
+}
+
+export default function (): Displace;
diff --git a/node_modules/@jimp/plugin-displace/package.json b/node_modules/@jimp/plugin-displace/package.json
new file mode 100644
index 00000000..b0ac1284
--- /dev/null
+++ b/node_modules/@jimp/plugin-displace/package.json
@@ -0,0 +1,30 @@
+{
+ "name": "@jimp/plugin-displace",
+ "version": "0.16.13",
+ "description": "displace an image.",
+ "main": "dist/index.js",
+ "module": "es/index.js",
+ "types": "index.d.ts",
+ "scripts": {
+ "build": "npm run build:node:production && npm run build:module",
+ "build:watch": "npm run build:node:debug -- -- --watch --verbose",
+ "build:debug": "npm run build:node:debug",
+ "build:module": "cross-env BABEL_ENV=module babel src -d es --source-maps --config-file ../../babel.config.js",
+ "build:node": "babel src -d dist --source-maps --config-file ../../babel.config.js",
+ "build:node:debug": "cross-env BABEL_ENV=development npm run build:node",
+ "build:node:production": "cross-env BABEL_ENV=production npm run build:node"
+ },
+ "author": "",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "gitHead": "9eec86086634329a072901dca3a800b850548572"
+}
diff --git a/node_modules/@jimp/plugin-displace/src/index.js b/node_modules/@jimp/plugin-displace/src/index.js
new file mode 100644
index 00000000..4dcd4403
--- /dev/null
+++ b/node_modules/@jimp/plugin-displace/src/index.js
@@ -0,0 +1,43 @@
+import { isNodePattern, throwError } from "@jimp/utils";
+
+/**
+ * Displaces the image based on the provided displacement map
+ * @param {object} map the source Jimp instance
+ * @param {number} offset the maximum displacement value
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+export default () => ({
+ displace(map, offset, cb) {
+ if (typeof map !== "object" || map.constructor !== this.constructor) {
+ return throwError.call(this, "The source must be a Jimp image", cb);
+ }
+
+ if (typeof offset !== "number") {
+ return throwError.call(this, "factor must be a number", cb);
+ }
+
+ const source = this.cloneQuiet();
+ this.scanQuiet(
+ 0,
+ 0,
+ this.bitmap.width,
+ this.bitmap.height,
+ function (x, y, idx) {
+ let displacement = (map.bitmap.data[idx] / 256) * offset;
+ displacement = Math.round(displacement);
+
+ const ids = this.getPixelIndex(x + displacement, y);
+ this.bitmap.data[ids] = source.bitmap.data[idx];
+ this.bitmap.data[ids + 1] = source.bitmap.data[idx + 1];
+ this.bitmap.data[ids + 2] = source.bitmap.data[idx + 2];
+ }
+ );
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+});
diff --git a/node_modules/@jimp/plugin-dither/CHANGELOG.md b/node_modules/@jimp/plugin-dither/CHANGELOG.md
new file mode 100644
index 00000000..4eb3193f
--- /dev/null
+++ b/node_modules/@jimp/plugin-dither/CHANGELOG.md
@@ -0,0 +1,35 @@
+# v0.16.3 (Sat Feb 04 2023)
+
+#### ⚠️ Pushed to `master`
+
+- upgrade prettier ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 1
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+---
+
+# v0.11.0 (Fri May 15 2020)
+
+#### 🚀 Enhancement
+
+- Removed Core-JS as a dependency. [#882](https://github.com/oliver-moran/jimp/pull/882) ([@EricRabil](https://github.com/EricRabil))
+
+#### Authors: 1
+
+- Eric Rabil ([@EricRabil](https://github.com/EricRabil))
+
+---
+
+# v0.9.3 (Tue Nov 26 2019)
+
+#### 🐛 Bug Fix
+
+- `@jimp/cli`, `@jimp/core`, `@jimp/custom`, `jimp`, `@jimp/plugin-blit`, `@jimp/plugin-blur`, `@jimp/plugin-circle`, `@jimp/plugin-color`, `@jimp/plugin-contain`, `@jimp/plugin-cover`, `@jimp/plugin-crop`, `@jimp/plugin-displace`, `@jimp/plugin-dither`, `@jimp/plugin-fisheye`, `@jimp/plugin-flip`, `@jimp/plugin-gaussian`, `@jimp/plugin-invert`, `@jimp/plugin-mask`, `@jimp/plugin-normalize`, `@jimp/plugin-print`, `@jimp/plugin-resize`, `@jimp/plugin-rotate`, `@jimp/plugin-scale`, `@jimp/plugin-shadow`, `@jimp/plugin-threshold`, `@jimp/plugins`, `@jimp/test-utils`, `@jimp/bmp`, `@jimp/gif`, `@jimp/jpeg`, `@jimp/png`, `@jimp/tiff`, `@jimp/types`, `@jimp/utils`
+ - Fix regeneratorRuntime errors [#815](https://github.com/oliver-moran/jimp/pull/815) ([@crutchcorn](https://github.com/crutchcorn) [@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 2
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+- Corbin Crutchley ([@crutchcorn](https://github.com/crutchcorn))
diff --git a/project starter code/node_modules/@jimp/plugin-dither/LICENSE b/node_modules/@jimp/plugin-dither/LICENSE
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-dither/LICENSE
rename to node_modules/@jimp/plugin-dither/LICENSE
diff --git a/node_modules/@jimp/plugin-dither/README.md b/node_modules/@jimp/plugin-dither/README.md
new file mode 100644
index 00000000..b384599d
--- /dev/null
+++ b/node_modules/@jimp/plugin-dither/README.md
@@ -0,0 +1,26 @@
+
+
+
@jimp/plugin-dither
+
Apply a dither effect to an image.
+
+
+> Dither - is an intentionally applied form of noise used to randomize quantization error, preventing large-scale patterns such as color banding in images. Dither is routinely used in processing of both digital audio and video data, and is often one of the last stages of mastering audio to a CD.
+
+## Usage
+
+Apply a ordered dithering effect
+
+- @param {function(Error, Jimp)} cb (optional) a callback for when complete
+
+```js
+import jimp from "jimp";
+
+async function main() {
+ const image = await jimp.read("test/image.png");
+
+ image.dither565();
+}
+
+main();
+```
diff --git a/project starter code/node_modules/@jimp/plugin-dither/dist/index.js b/node_modules/@jimp/plugin-dither/dist/index.js
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-dither/dist/index.js
rename to node_modules/@jimp/plugin-dither/dist/index.js
diff --git a/node_modules/@jimp/plugin-dither/dist/index.js.map b/node_modules/@jimp/plugin-dither/dist/index.js.map
new file mode 100644
index 00000000..b96091f4
--- /dev/null
+++ b/node_modules/@jimp/plugin-dither/dist/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/index.js"],"names":["dither","cb","rgb565Matrix","scanQuiet","bitmap","width","height","x","y","idx","thresholdId","data","Math","min","call","dither565","dither16"],"mappings":";;;;;;;AAAA;;AAEA;;;;;AAKA,SAASA,MAAT,CAAgBC,EAAhB,EAAoB;AAClB,MAAMC,YAAY,GAAG,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,EAAV,EAAc,EAAd,EAAkB,CAAlB,EAAqB,EAArB,EAAyB,CAAzB,EAA4B,CAA5B,EAA+B,EAA/B,EAAmC,CAAnC,EAAsC,EAAtC,EAA0C,EAA1C,EAA8C,CAA9C,EAAiD,EAAjD,EAAqD,CAArD,CAArB;AACA,OAAKC,SAAL,CACE,CADF,EAEE,CAFF,EAGE,KAAKC,MAAL,CAAYC,KAHd,EAIE,KAAKD,MAAL,CAAYE,MAJd,EAKE,UAAUC,CAAV,EAAaC,CAAb,EAAgBC,GAAhB,EAAqB;AACnB,QAAMC,WAAW,GAAG,CAAC,CAACF,CAAC,GAAG,CAAL,KAAW,CAAZ,IAAkBD,CAAC,GAAG,CAA1C;AACA,QAAMP,MAAM,GAAGE,YAAY,CAACQ,WAAD,CAA3B;AACA,SAAKN,MAAL,CAAYO,IAAZ,CAAiBF,GAAjB,IAAwBG,IAAI,CAACC,GAAL,CAAS,KAAKT,MAAL,CAAYO,IAAZ,CAAiBF,GAAjB,IAAwBT,MAAjC,EAAyC,IAAzC,CAAxB;AACA,SAAKI,MAAL,CAAYO,IAAZ,CAAiBF,GAAG,GAAG,CAAvB,IAA4BG,IAAI,CAACC,GAAL,CAC1B,KAAKT,MAAL,CAAYO,IAAZ,CAAiBF,GAAG,GAAG,CAAvB,IAA4BT,MADF,EAE1B,IAF0B,CAA5B;AAIA,SAAKI,MAAL,CAAYO,IAAZ,CAAiBF,GAAG,GAAG,CAAvB,IAA4BG,IAAI,CAACC,GAAL,CAC1B,KAAKT,MAAL,CAAYO,IAAZ,CAAiBF,GAAG,GAAG,CAAvB,IAA4BT,MADF,EAE1B,IAF0B,CAA5B;AAID,GAjBH;;AAoBA,MAAI,0BAAcC,EAAd,CAAJ,EAAuB;AACrBA,IAAAA,EAAE,CAACa,IAAH,CAAQ,IAAR,EAAc,IAAd,EAAoB,IAApB;AACD;;AAED,SAAO,IAAP;AACD;;eAEc;AAAA,SAAO;AACpBC,IAAAA,SAAS,EAAEf,MADS;AAEpBgB,IAAAA,QAAQ,EAAEhB;AAFU,GAAP;AAAA,C","sourcesContent":["import { isNodePattern } from \"@jimp/utils\";\n\n/**\n * Apply a ordered dithering effect\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp} this for chaining of methods\n */\nfunction dither(cb) {\n const rgb565Matrix = [1, 9, 3, 11, 13, 5, 15, 7, 4, 12, 2, 10, 16, 8, 14, 6];\n this.scanQuiet(\n 0,\n 0,\n this.bitmap.width,\n this.bitmap.height,\n function (x, y, idx) {\n const thresholdId = ((y & 3) << 2) + (x % 4);\n const dither = rgb565Matrix[thresholdId];\n this.bitmap.data[idx] = Math.min(this.bitmap.data[idx] + dither, 0xff);\n this.bitmap.data[idx + 1] = Math.min(\n this.bitmap.data[idx + 1] + dither,\n 0xff\n );\n this.bitmap.data[idx + 2] = Math.min(\n this.bitmap.data[idx + 2] + dither,\n 0xff\n );\n }\n );\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n}\n\nexport default () => ({\n dither565: dither,\n dither16: dither,\n});\n"],"file":"index.js"}
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-dither/index.d.ts b/node_modules/@jimp/plugin-dither/index.d.ts
new file mode 100644
index 00000000..9f2415df
--- /dev/null
+++ b/node_modules/@jimp/plugin-dither/index.d.ts
@@ -0,0 +1,8 @@
+import { ImageCallback } from "@jimp/core";
+
+interface Dither {
+ dither565(cb?: ImageCallback): this;
+ dither16(cb?: ImageCallback): this;
+}
+
+export default function (): Dither;
diff --git a/node_modules/@jimp/plugin-dither/package.json b/node_modules/@jimp/plugin-dither/package.json
new file mode 100644
index 00000000..5a1d627d
--- /dev/null
+++ b/node_modules/@jimp/plugin-dither/package.json
@@ -0,0 +1,30 @@
+{
+ "name": "@jimp/plugin-dither",
+ "version": "0.16.13",
+ "description": "Dither an image.",
+ "main": "dist/index.js",
+ "module": "es/index.js",
+ "types": "index.d.ts",
+ "scripts": {
+ "build": "npm run build:node:production && npm run build:module",
+ "build:watch": "npm run build:node:debug -- -- --watch --verbose",
+ "build:debug": "npm run build:node:debug",
+ "build:module": "cross-env BABEL_ENV=module babel src -d es --source-maps --config-file ../../babel.config.js",
+ "build:node": "babel src -d dist --source-maps --config-file ../../babel.config.js",
+ "build:node:debug": "cross-env BABEL_ENV=development npm run build:node",
+ "build:node:production": "cross-env BABEL_ENV=production npm run build:node"
+ },
+ "author": "",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "gitHead": "9eec86086634329a072901dca3a800b850548572"
+}
diff --git a/node_modules/@jimp/plugin-dither/src/index.js b/node_modules/@jimp/plugin-dither/src/index.js
new file mode 100644
index 00000000..c5ce9ece
--- /dev/null
+++ b/node_modules/@jimp/plugin-dither/src/index.js
@@ -0,0 +1,40 @@
+import { isNodePattern } from "@jimp/utils";
+
+/**
+ * Apply a ordered dithering effect
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+function dither(cb) {
+ const rgb565Matrix = [1, 9, 3, 11, 13, 5, 15, 7, 4, 12, 2, 10, 16, 8, 14, 6];
+ this.scanQuiet(
+ 0,
+ 0,
+ this.bitmap.width,
+ this.bitmap.height,
+ function (x, y, idx) {
+ const thresholdId = ((y & 3) << 2) + (x % 4);
+ const dither = rgb565Matrix[thresholdId];
+ this.bitmap.data[idx] = Math.min(this.bitmap.data[idx] + dither, 0xff);
+ this.bitmap.data[idx + 1] = Math.min(
+ this.bitmap.data[idx + 1] + dither,
+ 0xff
+ );
+ this.bitmap.data[idx + 2] = Math.min(
+ this.bitmap.data[idx + 2] + dither,
+ 0xff
+ );
+ }
+ );
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+}
+
+export default () => ({
+ dither565: dither,
+ dither16: dither,
+});
diff --git a/node_modules/@jimp/plugin-fisheye/CHANGELOG.md b/node_modules/@jimp/plugin-fisheye/CHANGELOG.md
new file mode 100644
index 00000000..5bd13a6a
--- /dev/null
+++ b/node_modules/@jimp/plugin-fisheye/CHANGELOG.md
@@ -0,0 +1,47 @@
+# v0.16.3 (Sat Feb 04 2023)
+
+#### ⚠️ Pushed to `master`
+
+- upgrade prettier ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 1
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+---
+
+# v0.16.2 (Thu Sep 15 2022)
+
+#### 📝 Documentation
+
+- added the "e" back to @jimp/plugin-fisheye [#947](https://github.com/oliver-moran/jimp/pull/947) ([@mynameismax](https://github.com/mynameismax))
+
+#### Authors: 1
+
+- Max ([@mynameismax](https://github.com/mynameismax))
+
+---
+
+# v0.11.0 (Fri May 15 2020)
+
+#### 🚀 Enhancement
+
+- Removed Core-JS as a dependency. [#882](https://github.com/oliver-moran/jimp/pull/882) ([@EricRabil](https://github.com/EricRabil))
+
+#### Authors: 1
+
+- Eric Rabil ([@EricRabil](https://github.com/EricRabil))
+
+---
+
+# v0.9.3 (Tue Nov 26 2019)
+
+#### 🐛 Bug Fix
+
+- `@jimp/cli`, `@jimp/core`, `@jimp/custom`, `jimp`, `@jimp/plugin-blit`, `@jimp/plugin-blur`, `@jimp/plugin-circle`, `@jimp/plugin-color`, `@jimp/plugin-contain`, `@jimp/plugin-cover`, `@jimp/plugin-crop`, `@jimp/plugin-displace`, `@jimp/plugin-dither`, `@jimp/plugin-fisheye`, `@jimp/plugin-flip`, `@jimp/plugin-gaussian`, `@jimp/plugin-invert`, `@jimp/plugin-mask`, `@jimp/plugin-normalize`, `@jimp/plugin-print`, `@jimp/plugin-resize`, `@jimp/plugin-rotate`, `@jimp/plugin-scale`, `@jimp/plugin-shadow`, `@jimp/plugin-threshold`, `@jimp/plugins`, `@jimp/test-utils`, `@jimp/bmp`, `@jimp/gif`, `@jimp/jpeg`, `@jimp/png`, `@jimp/tiff`, `@jimp/types`, `@jimp/utils`
+ - Fix regeneratorRuntime errors [#815](https://github.com/oliver-moran/jimp/pull/815) ([@crutchcorn](https://github.com/crutchcorn) [@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 2
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+- Corbin Crutchley ([@crutchcorn](https://github.com/crutchcorn))
diff --git a/project starter code/node_modules/@jimp/plugin-fisheye/LICENSE b/node_modules/@jimp/plugin-fisheye/LICENSE
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-fisheye/LICENSE
rename to node_modules/@jimp/plugin-fisheye/LICENSE
diff --git a/node_modules/@jimp/plugin-fisheye/README.md b/node_modules/@jimp/plugin-fisheye/README.md
new file mode 100644
index 00000000..3a1ae13c
--- /dev/null
+++ b/node_modules/@jimp/plugin-fisheye/README.md
@@ -0,0 +1,27 @@
+
+
+
@jimp/plugin-fisheye
+
Apply a fisheye effect to an image
+
+
+## Usage
+
+- @param {function(Error, Jimp)} options (optional) radius
+- @param {function(Error, Jimp)} cb (optional) a callback for when complete
+
+```js
+import jimp from "jimp";
+
+async function main() {
+ const image = await jimp.read("test/image.png");
+
+ image.fisheye();
+ // or
+ image.fisheye({ r: 1.6 });
+}
+
+main();
+```
+
+Produces nice images with [@jimp/plugin-circle](../plugin-circle).
diff --git a/node_modules/@jimp/plugin-fisheye/babel.config.js b/node_modules/@jimp/plugin-fisheye/babel.config.js
new file mode 100644
index 00000000..13e2603a
--- /dev/null
+++ b/node_modules/@jimp/plugin-fisheye/babel.config.js
@@ -0,0 +1,38 @@
+module.exports = (api) => {
+ api.cache(true);
+
+ return {
+ presets: [
+ [
+ "@babel/env",
+ {
+ useBuiltIns: "usage",
+ },
+ ],
+ ],
+
+ plugins: [
+ "@babel/proposal-class-properties",
+ "@babel/syntax-object-rest-spread",
+ process.env.BABEL_ENV !== "module" && "add-module-exports",
+ [
+ "transform-inline-environment-variables",
+ { include: ["BABEL_ENV", "ENV"] },
+ ],
+ ].filter(Boolean),
+
+ env: {
+ test: {
+ plugins: ["istanbul"],
+ },
+ development: {
+ plugins: [process.env.ENV !== "browser" && "source-map-support"].filter(
+ Boolean
+ ),
+ },
+ module: {
+ presets: [["@babel/env", { modules: false }]],
+ },
+ },
+ };
+};
diff --git a/node_modules/@jimp/plugin-fisheye/dist/index.js b/node_modules/@jimp/plugin-fisheye/dist/index.js
new file mode 100644
index 00000000..fba91290
--- /dev/null
+++ b/node_modules/@jimp/plugin-fisheye/dist/index.js
@@ -0,0 +1,65 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports["default"] = void 0;
+
+var _utils = require("@jimp/utils");
+
+/**
+ * Creates a circle out of an image.
+ * @param {object} options (optional) r: radius of effect
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+var _default = function _default() {
+ return {
+ fisheye: function fisheye() {
+ var _this = this;
+
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
+ r: 2.5
+ };
+ var cb = arguments.length > 1 ? arguments[1] : undefined;
+
+ if (typeof options === "function") {
+ cb = options;
+ options = {
+ r: 2.5
+ };
+ }
+
+ var source = this.cloneQuiet();
+ var _source$bitmap = source.bitmap,
+ width = _source$bitmap.width,
+ height = _source$bitmap.height;
+ source.scanQuiet(0, 0, width, height, function (x, y) {
+ var hx = x / width;
+ var hy = y / height;
+ var r = Math.sqrt(Math.pow(hx - 0.5, 2) + Math.pow(hy - 0.5, 2));
+ var rn = 2 * Math.pow(r, options.r);
+ var cosA = (hx - 0.5) / r;
+ var sinA = (hy - 0.5) / r;
+ var newX = Math.round((rn * cosA + 0.5) * width);
+ var newY = Math.round((rn * sinA + 0.5) * height);
+ var color = source.getPixelColor(newX, newY);
+
+ _this.setPixelColor(color, x, y);
+ });
+ /* Set center pixel color, otherwise it will be transparent */
+
+ this.setPixelColor(source.getPixelColor(width / 2, height / 2), width / 2, height / 2);
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ }
+ };
+};
+
+exports["default"] = _default;
+module.exports = exports.default;
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-fisheye/dist/index.js.map b/node_modules/@jimp/plugin-fisheye/dist/index.js.map
new file mode 100644
index 00000000..4ff401d5
--- /dev/null
+++ b/node_modules/@jimp/plugin-fisheye/dist/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/index.js"],"names":["fisheye","options","r","cb","source","cloneQuiet","bitmap","width","height","scanQuiet","x","y","hx","hy","Math","sqrt","pow","rn","cosA","sinA","newX","round","newY","color","getPixelColor","setPixelColor","call"],"mappings":";;;;;;;AAAA;;AAEA;;;;;;eAMe;AAAA,SAAO;AACpBA,IAAAA,OADoB,qBACc;AAAA;;AAAA,UAA1BC,OAA0B,uEAAhB;AAAEC,QAAAA,CAAC,EAAE;AAAL,OAAgB;AAAA,UAAJC,EAAI;;AAChC,UAAI,OAAOF,OAAP,KAAmB,UAAvB,EAAmC;AACjCE,QAAAA,EAAE,GAAGF,OAAL;AACAA,QAAAA,OAAO,GAAG;AAAEC,UAAAA,CAAC,EAAE;AAAL,SAAV;AACD;;AAED,UAAME,MAAM,GAAG,KAAKC,UAAL,EAAf;AANgC,2BAOND,MAAM,CAACE,MAPD;AAAA,UAOxBC,KAPwB,kBAOxBA,KAPwB;AAAA,UAOjBC,MAPiB,kBAOjBA,MAPiB;AAShCJ,MAAAA,MAAM,CAACK,SAAP,CAAiB,CAAjB,EAAoB,CAApB,EAAuBF,KAAvB,EAA8BC,MAA9B,EAAsC,UAACE,CAAD,EAAIC,CAAJ,EAAU;AAC9C,YAAMC,EAAE,GAAGF,CAAC,GAAGH,KAAf;AACA,YAAMM,EAAE,GAAGF,CAAC,GAAGH,MAAf;AACA,YAAMN,CAAC,GAAGY,IAAI,CAACC,IAAL,CAAUD,IAAI,CAACE,GAAL,CAASJ,EAAE,GAAG,GAAd,EAAmB,CAAnB,IAAwBE,IAAI,CAACE,GAAL,CAASH,EAAE,GAAG,GAAd,EAAmB,CAAnB,CAAlC,CAAV;AACA,YAAMI,EAAE,GAAG,IAAIH,IAAI,CAACE,GAAL,CAASd,CAAT,EAAYD,OAAO,CAACC,CAApB,CAAf;AACA,YAAMgB,IAAI,GAAG,CAACN,EAAE,GAAG,GAAN,IAAaV,CAA1B;AACA,YAAMiB,IAAI,GAAG,CAACN,EAAE,GAAG,GAAN,IAAaX,CAA1B;AACA,YAAMkB,IAAI,GAAGN,IAAI,CAACO,KAAL,CAAW,CAACJ,EAAE,GAAGC,IAAL,GAAY,GAAb,IAAoBX,KAA/B,CAAb;AACA,YAAMe,IAAI,GAAGR,IAAI,CAACO,KAAL,CAAW,CAACJ,EAAE,GAAGE,IAAL,GAAY,GAAb,IAAoBX,MAA/B,CAAb;AACA,YAAMe,KAAK,GAAGnB,MAAM,CAACoB,aAAP,CAAqBJ,IAArB,EAA2BE,IAA3B,CAAd;;AAEA,QAAA,KAAI,CAACG,aAAL,CAAmBF,KAAnB,EAA0Bb,CAA1B,EAA6BC,CAA7B;AACD,OAZD;AAcA;;AACA,WAAKc,aAAL,CACErB,MAAM,CAACoB,aAAP,CAAqBjB,KAAK,GAAG,CAA7B,EAAgCC,MAAM,GAAG,CAAzC,CADF,EAEED,KAAK,GAAG,CAFV,EAGEC,MAAM,GAAG,CAHX;;AAMA,UAAI,0BAAcL,EAAd,CAAJ,EAAuB;AACrBA,QAAAA,EAAE,CAACuB,IAAH,CAAQ,IAAR,EAAc,IAAd,EAAoB,IAApB;AACD;;AAED,aAAO,IAAP;AACD;AApCmB,GAAP;AAAA,C","sourcesContent":["import { isNodePattern } from \"@jimp/utils\";\n\n/**\n * Creates a circle out of an image.\n * @param {object} options (optional) r: radius of effect\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp} this for chaining of methods\n */\nexport default () => ({\n fisheye(options = { r: 2.5 }, cb) {\n if (typeof options === \"function\") {\n cb = options;\n options = { r: 2.5 };\n }\n\n const source = this.cloneQuiet();\n const { width, height } = source.bitmap;\n\n source.scanQuiet(0, 0, width, height, (x, y) => {\n const hx = x / width;\n const hy = y / height;\n const r = Math.sqrt(Math.pow(hx - 0.5, 2) + Math.pow(hy - 0.5, 2));\n const rn = 2 * Math.pow(r, options.r);\n const cosA = (hx - 0.5) / r;\n const sinA = (hy - 0.5) / r;\n const newX = Math.round((rn * cosA + 0.5) * width);\n const newY = Math.round((rn * sinA + 0.5) * height);\n const color = source.getPixelColor(newX, newY);\n\n this.setPixelColor(color, x, y);\n });\n\n /* Set center pixel color, otherwise it will be transparent */\n this.setPixelColor(\n source.getPixelColor(width / 2, height / 2),\n width / 2,\n height / 2\n );\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n },\n});\n"],"file":"index.js"}
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-fisheye/index.d.ts b/node_modules/@jimp/plugin-fisheye/index.d.ts
new file mode 100644
index 00000000..693b6f33
--- /dev/null
+++ b/node_modules/@jimp/plugin-fisheye/index.d.ts
@@ -0,0 +1,8 @@
+import { ImageCallback } from "@jimp/core";
+
+interface Fisheye {
+ fishEye(opts?: { r: number }, cb?: ImageCallback): this;
+ fishEye(cb?: ImageCallback): this;
+}
+
+export default function (): Fisheye;
diff --git a/node_modules/@jimp/plugin-fisheye/package.json b/node_modules/@jimp/plugin-fisheye/package.json
new file mode 100644
index 00000000..6b9f695b
--- /dev/null
+++ b/node_modules/@jimp/plugin-fisheye/package.json
@@ -0,0 +1,37 @@
+{
+ "name": "@jimp/plugin-fisheye",
+ "version": "0.16.13",
+ "description": "Apply a fisheye effect to an image.",
+ "main": "dist/index.js",
+ "module": "es/index.js",
+ "types": "index.d.ts",
+ "scripts": {
+ "test": "cross-env BABEL_ENV=test mocha --require @babel/register",
+ "test:watch": "npm run test -- --reporter min --watch",
+ "test:coverage": "nyc npm run test",
+ "build": "npm run build:node:production && npm run build:module",
+ "build:watch": "npm run build:node:debug -- -- --watch --verbose",
+ "build:debug": "npm run build:node:debug",
+ "build:module": "cross-env BABEL_ENV=module babel src -d es --source-maps --config-file ../../babel.config.js",
+ "build:node": "babel src -d dist --source-maps --config-file ../../babel.config.js",
+ "build:node:debug": "cross-env BABEL_ENV=development npm run build:node",
+ "build:node:production": "cross-env BABEL_ENV=production npm run build:node"
+ },
+ "author": "",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ },
+ "devDependencies": {
+ "@jimp/custom": "^0.16.13",
+ "@jimp/test-utils": "^0.16.13"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "gitHead": "9eec86086634329a072901dca3a800b850548572"
+}
diff --git a/node_modules/@jimp/plugin-fisheye/src/index.js b/node_modules/@jimp/plugin-fisheye/src/index.js
new file mode 100644
index 00000000..15c5b51d
--- /dev/null
+++ b/node_modules/@jimp/plugin-fisheye/src/index.js
@@ -0,0 +1,46 @@
+import { isNodePattern } from "@jimp/utils";
+
+/**
+ * Creates a circle out of an image.
+ * @param {object} options (optional) r: radius of effect
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+export default () => ({
+ fisheye(options = { r: 2.5 }, cb) {
+ if (typeof options === "function") {
+ cb = options;
+ options = { r: 2.5 };
+ }
+
+ const source = this.cloneQuiet();
+ const { width, height } = source.bitmap;
+
+ source.scanQuiet(0, 0, width, height, (x, y) => {
+ const hx = x / width;
+ const hy = y / height;
+ const r = Math.sqrt(Math.pow(hx - 0.5, 2) + Math.pow(hy - 0.5, 2));
+ const rn = 2 * Math.pow(r, options.r);
+ const cosA = (hx - 0.5) / r;
+ const sinA = (hy - 0.5) / r;
+ const newX = Math.round((rn * cosA + 0.5) * width);
+ const newY = Math.round((rn * sinA + 0.5) * height);
+ const color = source.getPixelColor(newX, newY);
+
+ this.setPixelColor(color, x, y);
+ });
+
+ /* Set center pixel color, otherwise it will be transparent */
+ this.setPixelColor(
+ source.getPixelColor(width / 2, height / 2),
+ width / 2,
+ height / 2
+ );
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+});
diff --git a/node_modules/@jimp/plugin-fisheye/test/fisheye.test.js b/node_modules/@jimp/plugin-fisheye/test/fisheye.test.js
new file mode 100644
index 00000000..b8f5aa1e
--- /dev/null
+++ b/node_modules/@jimp/plugin-fisheye/test/fisheye.test.js
@@ -0,0 +1,77 @@
+import { Jimp, mkJGD } from "@jimp/test-utils";
+import configure from "@jimp/custom";
+
+import fisheye from "../src";
+
+const jimp = configure({ plugins: [fisheye] }, Jimp);
+
+describe("Fisheye", () => {
+ it("should create fisheye lens to image", async () => {
+ const imgNormal = await jimp.read(
+ mkJGD(
+ "0000000000",
+ "0001221000",
+ "0022222200",
+ "0122112210",
+ "0221001220",
+ "0221001220",
+ "0122112210",
+ "0022222200",
+ "0001221000",
+ "0000000000"
+ )
+ );
+ const imgBulged = await jimp.read(
+ mkJGD(
+ "0001221000",
+ "0221112220",
+ "0220000121",
+ "1100000112",
+ "2100000012",
+ "2100000012",
+ "1200000012",
+ "0211000222",
+ "0221111220",
+ "0012222200"
+ )
+ );
+
+ imgNormal.fisheye().getJGDSync().should.be.sameJGD(imgBulged.getJGDSync());
+ });
+
+ it("should create fisheye lens to image with radius", async () => {
+ const imgNormal = await jimp.read(
+ mkJGD(
+ "0000000000",
+ "0000000000",
+ "0000000000",
+ "0000000000",
+ "0001111000",
+ "0001111000",
+ "0000000000",
+ "0000000000",
+ "0000000000",
+ "0000000000"
+ )
+ );
+ const imgBulged = await jimp.read(
+ mkJGD(
+ "■■■■■■■■■■",
+ "■■■■■■■■■■",
+ "■■■■■■■■■■",
+ "■■■11111■■",
+ "■■111111■■",
+ "■■111111■■",
+ "■■■■111■■■",
+ "■■■■■■■■■■",
+ "■■■■■■■■■■",
+ "■■■■■■■■■■"
+ )
+ );
+
+ imgNormal
+ .fisheye({ r: 1.8 })
+ .getJGDSync()
+ .should.be.sameJGD(imgBulged.getJGDSync());
+ });
+});
diff --git a/node_modules/@jimp/plugin-flip/CHANGELOG.md b/node_modules/@jimp/plugin-flip/CHANGELOG.md
new file mode 100644
index 00000000..ecf1d4df
--- /dev/null
+++ b/node_modules/@jimp/plugin-flip/CHANGELOG.md
@@ -0,0 +1,47 @@
+# v0.16.3 (Sat Feb 04 2023)
+
+#### ⚠️ Pushed to `master`
+
+- upgrade prettier ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 1
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+---
+
+# v0.11.0 (Fri May 15 2020)
+
+#### 🚀 Enhancement
+
+- Removed Core-JS as a dependency. [#882](https://github.com/oliver-moran/jimp/pull/882) ([@EricRabil](https://github.com/EricRabil))
+
+#### Authors: 1
+
+- Eric Rabil ([@EricRabil](https://github.com/EricRabil))
+
+---
+
+# v0.10.3 (Mon Apr 20 2020)
+
+#### 🐛 Bug Fix
+
+- Simplify and fix flip [#879](https://github.com/oliver-moran/jimp/pull/879) ([@skalee](https://github.com/skalee))
+
+#### Authors: 1
+
+- Sebastian Skałacki ([@skalee](https://github.com/skalee))
+
+---
+
+# v0.9.3 (Tue Nov 26 2019)
+
+#### 🐛 Bug Fix
+
+- `@jimp/cli`, `@jimp/core`, `@jimp/custom`, `jimp`, `@jimp/plugin-blit`, `@jimp/plugin-blur`, `@jimp/plugin-circle`, `@jimp/plugin-color`, `@jimp/plugin-contain`, `@jimp/plugin-cover`, `@jimp/plugin-crop`, `@jimp/plugin-displace`, `@jimp/plugin-dither`, `@jimp/plugin-fisheye`, `@jimp/plugin-flip`, `@jimp/plugin-gaussian`, `@jimp/plugin-invert`, `@jimp/plugin-mask`, `@jimp/plugin-normalize`, `@jimp/plugin-print`, `@jimp/plugin-resize`, `@jimp/plugin-rotate`, `@jimp/plugin-scale`, `@jimp/plugin-shadow`, `@jimp/plugin-threshold`, `@jimp/plugins`, `@jimp/test-utils`, `@jimp/bmp`, `@jimp/gif`, `@jimp/jpeg`, `@jimp/png`, `@jimp/tiff`, `@jimp/types`, `@jimp/utils`
+ - Fix regeneratorRuntime errors [#815](https://github.com/oliver-moran/jimp/pull/815) ([@crutchcorn](https://github.com/crutchcorn) [@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 2
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+- Corbin Crutchley ([@crutchcorn](https://github.com/crutchcorn))
diff --git a/project starter code/node_modules/@jimp/plugin-flip/LICENSE b/node_modules/@jimp/plugin-flip/LICENSE
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-flip/LICENSE
rename to node_modules/@jimp/plugin-flip/LICENSE
diff --git a/node_modules/@jimp/plugin-flip/README.md b/node_modules/@jimp/plugin-flip/README.md
new file mode 100644
index 00000000..dd7ecaf5
--- /dev/null
+++ b/node_modules/@jimp/plugin-flip/README.md
@@ -0,0 +1,30 @@
+
+
+
@jimp/plugin-flip
+
flip an image.
+
+
+Flip the image horizontally or vertically. Defaults to horizontal.
+
+Also aliased as `mirror`
+
+## Usage
+
+- @param {boolean} horizontal a Boolean, if true the image will be flipped horizontally
+- @param {boolean} vertical a Boolean, if true the image will be flipped vertically
+- @param {function(Error, Jimp)} cb (optional) a callback for when complete
+
+```js
+import jimp from "jimp";
+
+async function main() {
+ const image = await jimp.read("test/image.png");
+
+ image.flip();
+ image.mirror();
+ image.flip(false, true);
+}
+
+main();
+```
diff --git a/node_modules/@jimp/plugin-flip/dist/index.js b/node_modules/@jimp/plugin-flip/dist/index.js
new file mode 100644
index 00000000..b3f82f1b
--- /dev/null
+++ b/node_modules/@jimp/plugin-flip/dist/index.js
@@ -0,0 +1,48 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports["default"] = void 0;
+
+var _utils = require("@jimp/utils");
+
+/**
+ * Flip the image horizontally
+ * @param {boolean} horizontal a Boolean, if true the image will be flipped horizontally
+ * @param {boolean} vertical a Boolean, if true the image will be flipped vertically
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+function flipFn(horizontal, vertical, cb) {
+ if (typeof horizontal !== "boolean" || typeof vertical !== "boolean") return _utils.throwError.call(this, "horizontal and vertical must be Booleans", cb);
+ var bitmap = Buffer.alloc(this.bitmap.data.length);
+ this.scanQuiet(0, 0, this.bitmap.width, this.bitmap.height, function (x, y, idx) {
+ var _x = horizontal ? this.bitmap.width - 1 - x : x;
+
+ var _y = vertical ? this.bitmap.height - 1 - y : y;
+
+ var _idx = this.bitmap.width * _y + _x << 2;
+
+ var data = this.bitmap.data.readUInt32BE(idx);
+ bitmap.writeUInt32BE(data, _idx);
+ });
+ this.bitmap.data = Buffer.from(bitmap);
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+}
+
+var _default = function _default() {
+ return {
+ flip: flipFn,
+ mirror: flipFn
+ };
+};
+
+exports["default"] = _default;
+module.exports = exports.default;
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-flip/dist/index.js.map b/node_modules/@jimp/plugin-flip/dist/index.js.map
new file mode 100644
index 00000000..afa7b12f
--- /dev/null
+++ b/node_modules/@jimp/plugin-flip/dist/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/index.js"],"names":["flipFn","horizontal","vertical","cb","throwError","call","bitmap","Buffer","alloc","data","length","scanQuiet","width","height","x","y","idx","_x","_y","_idx","readUInt32BE","writeUInt32BE","from","flip","mirror"],"mappings":";;;;;;;AAAA;;AAEA;;;;;;;AAOA,SAASA,MAAT,CAAgBC,UAAhB,EAA4BC,QAA5B,EAAsCC,EAAtC,EAA0C;AACxC,MAAI,OAAOF,UAAP,KAAsB,SAAtB,IAAmC,OAAOC,QAAP,KAAoB,SAA3D,EACE,OAAOE,kBAAWC,IAAX,CACL,IADK,EAEL,0CAFK,EAGLF,EAHK,CAAP;AAMF,MAAMG,MAAM,GAAGC,MAAM,CAACC,KAAP,CAAa,KAAKF,MAAL,CAAYG,IAAZ,CAAiBC,MAA9B,CAAf;AACA,OAAKC,SAAL,CACE,CADF,EAEE,CAFF,EAGE,KAAKL,MAAL,CAAYM,KAHd,EAIE,KAAKN,MAAL,CAAYO,MAJd,EAKE,UAAUC,CAAV,EAAaC,CAAb,EAAgBC,GAAhB,EAAqB;AACnB,QAAMC,EAAE,GAAGhB,UAAU,GAAG,KAAKK,MAAL,CAAYM,KAAZ,GAAoB,CAApB,GAAwBE,CAA3B,GAA+BA,CAApD;;AACA,QAAMI,EAAE,GAAGhB,QAAQ,GAAG,KAAKI,MAAL,CAAYO,MAAZ,GAAqB,CAArB,GAAyBE,CAA5B,GAAgCA,CAAnD;;AACA,QAAMI,IAAI,GAAI,KAAKb,MAAL,CAAYM,KAAZ,GAAoBM,EAApB,GAAyBD,EAA1B,IAAiC,CAA9C;;AACA,QAAMR,IAAI,GAAG,KAAKH,MAAL,CAAYG,IAAZ,CAAiBW,YAAjB,CAA8BJ,GAA9B,CAAb;AAEAV,IAAAA,MAAM,CAACe,aAAP,CAAqBZ,IAArB,EAA2BU,IAA3B;AACD,GAZH;AAeA,OAAKb,MAAL,CAAYG,IAAZ,GAAmBF,MAAM,CAACe,IAAP,CAAYhB,MAAZ,CAAnB;;AAEA,MAAI,0BAAcH,EAAd,CAAJ,EAAuB;AACrBA,IAAAA,EAAE,CAACE,IAAH,CAAQ,IAAR,EAAc,IAAd,EAAoB,IAApB;AACD;;AAED,SAAO,IAAP;AACD;;eAEc;AAAA,SAAO;AACpBkB,IAAAA,IAAI,EAAEvB,MADc;AAEpBwB,IAAAA,MAAM,EAAExB;AAFY,GAAP;AAAA,C","sourcesContent":["import { isNodePattern, throwError } from \"@jimp/utils\";\n\n/**\n * Flip the image horizontally\n * @param {boolean} horizontal a Boolean, if true the image will be flipped horizontally\n * @param {boolean} vertical a Boolean, if true the image will be flipped vertically\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp} this for chaining of methods\n */\nfunction flipFn(horizontal, vertical, cb) {\n if (typeof horizontal !== \"boolean\" || typeof vertical !== \"boolean\")\n return throwError.call(\n this,\n \"horizontal and vertical must be Booleans\",\n cb\n );\n\n const bitmap = Buffer.alloc(this.bitmap.data.length);\n this.scanQuiet(\n 0,\n 0,\n this.bitmap.width,\n this.bitmap.height,\n function (x, y, idx) {\n const _x = horizontal ? this.bitmap.width - 1 - x : x;\n const _y = vertical ? this.bitmap.height - 1 - y : y;\n const _idx = (this.bitmap.width * _y + _x) << 2;\n const data = this.bitmap.data.readUInt32BE(idx);\n\n bitmap.writeUInt32BE(data, _idx);\n }\n );\n\n this.bitmap.data = Buffer.from(bitmap);\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n}\n\nexport default () => ({\n flip: flipFn,\n mirror: flipFn,\n});\n"],"file":"index.js"}
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-flip/index.d.ts b/node_modules/@jimp/plugin-flip/index.d.ts
new file mode 100644
index 00000000..3f1efd66
--- /dev/null
+++ b/node_modules/@jimp/plugin-flip/index.d.ts
@@ -0,0 +1,12 @@
+import { ImageCallback } from "@jimp/core";
+
+interface Flip {
+ flip(horizontal: boolean, vertical: boolean, cb?: ImageCallback): this;
+ mirror(
+ horizontal: boolean,
+ vertical: boolean,
+ cb?: ImageCallback
+ ): this;
+}
+
+export default function (): Flip;
diff --git a/node_modules/@jimp/plugin-flip/package.json b/node_modules/@jimp/plugin-flip/package.json
new file mode 100644
index 00000000..8b4f801b
--- /dev/null
+++ b/node_modules/@jimp/plugin-flip/package.json
@@ -0,0 +1,31 @@
+{
+ "name": "@jimp/plugin-flip",
+ "version": "0.16.13",
+ "description": "flip an image.",
+ "main": "dist/index.js",
+ "module": "es/index.js",
+ "types": "index.d.ts",
+ "scripts": {
+ "build": "npm run build:node:production && npm run build:module",
+ "build:watch": "npm run build:node:debug -- -- --watch --verbose",
+ "build:debug": "npm run build:node:debug",
+ "build:module": "cross-env BABEL_ENV=module babel src -d es --source-maps --config-file ../../babel.config.js",
+ "build:node": "babel src -d dist --source-maps --config-file ../../babel.config.js",
+ "build:node:debug": "cross-env BABEL_ENV=development npm run build:node",
+ "build:node:production": "cross-env BABEL_ENV=production npm run build:node"
+ },
+ "author": "",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5",
+ "@jimp/plugin-rotate": ">=0.3.5"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "gitHead": "9eec86086634329a072901dca3a800b850548572"
+}
diff --git a/node_modules/@jimp/plugin-flip/src/index.js b/node_modules/@jimp/plugin-flip/src/index.js
new file mode 100644
index 00000000..01064ac1
--- /dev/null
+++ b/node_modules/@jimp/plugin-flip/src/index.js
@@ -0,0 +1,46 @@
+import { isNodePattern, throwError } from "@jimp/utils";
+
+/**
+ * Flip the image horizontally
+ * @param {boolean} horizontal a Boolean, if true the image will be flipped horizontally
+ * @param {boolean} vertical a Boolean, if true the image will be flipped vertically
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+function flipFn(horizontal, vertical, cb) {
+ if (typeof horizontal !== "boolean" || typeof vertical !== "boolean")
+ return throwError.call(
+ this,
+ "horizontal and vertical must be Booleans",
+ cb
+ );
+
+ const bitmap = Buffer.alloc(this.bitmap.data.length);
+ this.scanQuiet(
+ 0,
+ 0,
+ this.bitmap.width,
+ this.bitmap.height,
+ function (x, y, idx) {
+ const _x = horizontal ? this.bitmap.width - 1 - x : x;
+ const _y = vertical ? this.bitmap.height - 1 - y : y;
+ const _idx = (this.bitmap.width * _y + _x) << 2;
+ const data = this.bitmap.data.readUInt32BE(idx);
+
+ bitmap.writeUInt32BE(data, _idx);
+ }
+ );
+
+ this.bitmap.data = Buffer.from(bitmap);
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+}
+
+export default () => ({
+ flip: flipFn,
+ mirror: flipFn,
+});
diff --git a/node_modules/@jimp/plugin-flip/test/flipping.test.js b/node_modules/@jimp/plugin-flip/test/flipping.test.js
new file mode 100644
index 00000000..fb17d203
--- /dev/null
+++ b/node_modules/@jimp/plugin-flip/test/flipping.test.js
@@ -0,0 +1,99 @@
+import { Jimp, mkJGD } from "@jimp/test-utils";
+
+import configure from "@jimp/custom";
+
+import flip from "../src";
+
+const jimp = configure({ plugins: [flip] }, Jimp);
+
+describe("Flipping plugin", () => {
+ it("can flip horizontally", async () => {
+ const src = await jimp.read(
+ mkJGD(
+ "AAAABBBB",
+ "AAABAAAB",
+ "ABABABAB",
+ "CCCCCCCC",
+ "CCCCCCCC",
+ "CCCCCCCC",
+ "AACCCCAA"
+ )
+ );
+
+ const result = src.flip(true, false);
+
+ result
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ "BBBBAAAA",
+ "BAAABAAA",
+ "BABABABA",
+ "CCCCCCCC",
+ "CCCCCCCC",
+ "CCCCCCCC",
+ "AACCCCAA"
+ )
+ );
+ });
+
+ it("can flip vertically", async () => {
+ const src = await jimp.read(
+ mkJGD(
+ "AAAABBBB",
+ "AAABAAAB",
+ "ABABABAB",
+ "CCCCCCCC",
+ "CCCCCCCC",
+ "CCCCCCCC",
+ "AACCCCAA"
+ )
+ );
+
+ const result = src.flip(false, true);
+
+ result
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ "AACCCCAA",
+ "CCCCCCCC",
+ "CCCCCCCC",
+ "CCCCCCCC",
+ "ABABABAB",
+ "AAABAAAB",
+ "AAAABBBB"
+ )
+ );
+ });
+
+ it("can flip both horizontally and vertically at once", async () => {
+ const src = await jimp.read(
+ mkJGD(
+ "AAAABBBB",
+ "AAABAAAB",
+ "ABABABAB",
+ "CCCCCCCC",
+ "CCCCCCCC",
+ "CCCCCCCC",
+ "AACCCCAA"
+ )
+ );
+
+ const result = src.flip(true, true);
+
+ result
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ "AACCCCAA",
+ "CCCCCCCC",
+ "CCCCCCCC",
+ "CCCCCCCC",
+ "BABABABA",
+ "BAAABAAA",
+ "BBBBAAAA"
+ )
+ );
+ });
+});
diff --git a/node_modules/@jimp/plugin-gaussian/CHANGELOG.md b/node_modules/@jimp/plugin-gaussian/CHANGELOG.md
new file mode 100644
index 00000000..4eb3193f
--- /dev/null
+++ b/node_modules/@jimp/plugin-gaussian/CHANGELOG.md
@@ -0,0 +1,35 @@
+# v0.16.3 (Sat Feb 04 2023)
+
+#### ⚠️ Pushed to `master`
+
+- upgrade prettier ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 1
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+---
+
+# v0.11.0 (Fri May 15 2020)
+
+#### 🚀 Enhancement
+
+- Removed Core-JS as a dependency. [#882](https://github.com/oliver-moran/jimp/pull/882) ([@EricRabil](https://github.com/EricRabil))
+
+#### Authors: 1
+
+- Eric Rabil ([@EricRabil](https://github.com/EricRabil))
+
+---
+
+# v0.9.3 (Tue Nov 26 2019)
+
+#### 🐛 Bug Fix
+
+- `@jimp/cli`, `@jimp/core`, `@jimp/custom`, `jimp`, `@jimp/plugin-blit`, `@jimp/plugin-blur`, `@jimp/plugin-circle`, `@jimp/plugin-color`, `@jimp/plugin-contain`, `@jimp/plugin-cover`, `@jimp/plugin-crop`, `@jimp/plugin-displace`, `@jimp/plugin-dither`, `@jimp/plugin-fisheye`, `@jimp/plugin-flip`, `@jimp/plugin-gaussian`, `@jimp/plugin-invert`, `@jimp/plugin-mask`, `@jimp/plugin-normalize`, `@jimp/plugin-print`, `@jimp/plugin-resize`, `@jimp/plugin-rotate`, `@jimp/plugin-scale`, `@jimp/plugin-shadow`, `@jimp/plugin-threshold`, `@jimp/plugins`, `@jimp/test-utils`, `@jimp/bmp`, `@jimp/gif`, `@jimp/jpeg`, `@jimp/png`, `@jimp/tiff`, `@jimp/types`, `@jimp/utils`
+ - Fix regeneratorRuntime errors [#815](https://github.com/oliver-moran/jimp/pull/815) ([@crutchcorn](https://github.com/crutchcorn) [@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 2
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+- Corbin Crutchley ([@crutchcorn](https://github.com/crutchcorn))
diff --git a/project starter code/node_modules/@jimp/plugin-gaussian/LICENSE b/node_modules/@jimp/plugin-gaussian/LICENSE
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-gaussian/LICENSE
rename to node_modules/@jimp/plugin-gaussian/LICENSE
diff --git a/node_modules/@jimp/plugin-gaussian/README.md b/node_modules/@jimp/plugin-gaussian/README.md
new file mode 100644
index 00000000..0f15ca98
--- /dev/null
+++ b/node_modules/@jimp/plugin-gaussian/README.md
@@ -0,0 +1,25 @@
+
+
+
@jimp/plugin-gaussian
+
Gaussian blur an image.
+
+
+Applies a true Gaussian blur to the image (warning: this is VERY slow)
+
+## Usage
+
+- @param {number} r the pixel radius of the blur
+- @param {function(Error, Jimp)} cb (optional) a callback for when complete
+
+```js
+import jimp from "jimp";
+
+async function main() {
+ const image = await jimp.read("test/image.png");
+
+ image.gaussian(15);
+}
+
+main();
+```
diff --git a/node_modules/@jimp/plugin-gaussian/dist/index.js b/node_modules/@jimp/plugin-gaussian/dist/index.js
new file mode 100644
index 00000000..d4312c8c
--- /dev/null
+++ b/node_modules/@jimp/plugin-gaussian/dist/index.js
@@ -0,0 +1,87 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports["default"] = void 0;
+
+var _utils = require("@jimp/utils");
+
+/**
+ * Applies a true Gaussian blur to the image (warning: this is VERY slow)
+ * @param {number} r the pixel radius of the blur
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+var _default = function _default() {
+ return {
+ gaussian: function gaussian(r, cb) {
+ // http://blog.ivank.net/fastest-gaussian-blur.html
+ if (typeof r !== "number") {
+ return _utils.throwError.call(this, "r must be a number", cb);
+ }
+
+ if (r < 1) {
+ return _utils.throwError.call(this, "r must be greater than 0", cb);
+ }
+
+ var rs = Math.ceil(r * 2.57); // significant radius
+
+ var range = rs * 2 + 1;
+ var rr2 = r * r * 2;
+ var rr2pi = rr2 * Math.PI;
+ var weights = [];
+
+ for (var y = 0; y < range; y++) {
+ weights[y] = [];
+
+ for (var x = 0; x < range; x++) {
+ var dsq = Math.pow(x - rs, 2) + Math.pow(y - rs, 2);
+ weights[y][x] = Math.exp(-dsq / rr2) / rr2pi;
+ }
+ }
+
+ for (var _y = 0; _y < this.bitmap.height; _y++) {
+ for (var _x = 0; _x < this.bitmap.width; _x++) {
+ var red = 0;
+ var green = 0;
+ var blue = 0;
+ var alpha = 0;
+ var wsum = 0;
+
+ for (var iy = 0; iy < range; iy++) {
+ for (var ix = 0; ix < range; ix++) {
+ var x1 = Math.min(this.bitmap.width - 1, Math.max(0, ix + _x - rs));
+ var y1 = Math.min(this.bitmap.height - 1, Math.max(0, iy + _y - rs));
+ var weight = weights[iy][ix];
+
+ var _idx = y1 * this.bitmap.width + x1 << 2;
+
+ red += this.bitmap.data[_idx] * weight;
+ green += this.bitmap.data[_idx + 1] * weight;
+ blue += this.bitmap.data[_idx + 2] * weight;
+ alpha += this.bitmap.data[_idx + 3] * weight;
+ wsum += weight;
+ }
+
+ var idx = _y * this.bitmap.width + _x << 2;
+ this.bitmap.data[idx] = Math.round(red / wsum);
+ this.bitmap.data[idx + 1] = Math.round(green / wsum);
+ this.bitmap.data[idx + 2] = Math.round(blue / wsum);
+ this.bitmap.data[idx + 3] = Math.round(alpha / wsum);
+ }
+ }
+ }
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ }
+ };
+};
+
+exports["default"] = _default;
+module.exports = exports.default;
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-gaussian/dist/index.js.map b/node_modules/@jimp/plugin-gaussian/dist/index.js.map
new file mode 100644
index 00000000..b0a9e436
--- /dev/null
+++ b/node_modules/@jimp/plugin-gaussian/dist/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/index.js"],"names":["gaussian","r","cb","throwError","call","rs","Math","ceil","range","rr2","rr2pi","PI","weights","y","x","dsq","exp","bitmap","height","width","red","green","blue","alpha","wsum","iy","ix","x1","min","max","y1","weight","idx","data","round"],"mappings":"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","sourcesContent":["import { isNodePattern, throwError } from \"@jimp/utils\";\n\n/**\n * Applies a true Gaussian blur to the image (warning: this is VERY slow)\n * @param {number} r the pixel radius of the blur\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp} this for chaining of methods\n */\nexport default () => ({\n gaussian(r, cb) {\n // http://blog.ivank.net/fastest-gaussian-blur.html\n if (typeof r !== \"number\") {\n return throwError.call(this, \"r must be a number\", cb);\n }\n\n if (r < 1) {\n return throwError.call(this, \"r must be greater than 0\", cb);\n }\n\n const rs = Math.ceil(r * 2.57); // significant radius\n const range = rs * 2 + 1;\n const rr2 = r * r * 2;\n const rr2pi = rr2 * Math.PI;\n\n const weights = [];\n\n for (let y = 0; y < range; y++) {\n weights[y] = [];\n for (let x = 0; x < range; x++) {\n const dsq = (x - rs) ** 2 + (y - rs) ** 2;\n weights[y][x] = Math.exp(-dsq / rr2) / rr2pi;\n }\n }\n\n for (let y = 0; y < this.bitmap.height; y++) {\n for (let x = 0; x < this.bitmap.width; x++) {\n let red = 0;\n let green = 0;\n let blue = 0;\n let alpha = 0;\n let wsum = 0;\n\n for (let iy = 0; iy < range; iy++) {\n for (let ix = 0; ix < range; ix++) {\n const x1 = Math.min(\n this.bitmap.width - 1,\n Math.max(0, ix + x - rs)\n );\n const y1 = Math.min(\n this.bitmap.height - 1,\n Math.max(0, iy + y - rs)\n );\n const weight = weights[iy][ix];\n const idx = (y1 * this.bitmap.width + x1) << 2;\n\n red += this.bitmap.data[idx] * weight;\n green += this.bitmap.data[idx + 1] * weight;\n blue += this.bitmap.data[idx + 2] * weight;\n alpha += this.bitmap.data[idx + 3] * weight;\n wsum += weight;\n }\n\n const idx = (y * this.bitmap.width + x) << 2;\n\n this.bitmap.data[idx] = Math.round(red / wsum);\n this.bitmap.data[idx + 1] = Math.round(green / wsum);\n this.bitmap.data[idx + 2] = Math.round(blue / wsum);\n this.bitmap.data[idx + 3] = Math.round(alpha / wsum);\n }\n }\n }\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n },\n});\n"],"file":"index.js"}
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-gaussian/index.d.ts b/node_modules/@jimp/plugin-gaussian/index.d.ts
new file mode 100644
index 00000000..4f9114c9
--- /dev/null
+++ b/node_modules/@jimp/plugin-gaussian/index.d.ts
@@ -0,0 +1,7 @@
+import { ImageCallback } from "@jimp/core";
+
+interface Gaussian {
+ gaussian(r: number, cb?: ImageCallback): this;
+}
+
+export default function (): Gaussian;
diff --git a/node_modules/@jimp/plugin-gaussian/package.json b/node_modules/@jimp/plugin-gaussian/package.json
new file mode 100644
index 00000000..c78a8cd2
--- /dev/null
+++ b/node_modules/@jimp/plugin-gaussian/package.json
@@ -0,0 +1,30 @@
+{
+ "name": "@jimp/plugin-gaussian",
+ "version": "0.16.13",
+ "description": "gaussian blur an image.",
+ "main": "dist/index.js",
+ "module": "es/index.js",
+ "types": "index.d.ts",
+ "scripts": {
+ "build": "npm run build:node:production && npm run build:module",
+ "build:watch": "npm run build:node:debug -- -- --watch --verbose",
+ "build:debug": "npm run build:node:debug",
+ "build:module": "cross-env BABEL_ENV=module babel src -d es --source-maps --config-file ../../babel.config.js",
+ "build:node": "babel src -d dist --source-maps --config-file ../../babel.config.js",
+ "build:node:debug": "cross-env BABEL_ENV=development npm run build:node",
+ "build:node:production": "cross-env BABEL_ENV=production npm run build:node"
+ },
+ "author": "",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "gitHead": "9eec86086634329a072901dca3a800b850548572"
+}
diff --git a/node_modules/@jimp/plugin-gaussian/src/index.js b/node_modules/@jimp/plugin-gaussian/src/index.js
new file mode 100644
index 00000000..21528cb6
--- /dev/null
+++ b/node_modules/@jimp/plugin-gaussian/src/index.js
@@ -0,0 +1,79 @@
+import { isNodePattern, throwError } from "@jimp/utils";
+
+/**
+ * Applies a true Gaussian blur to the image (warning: this is VERY slow)
+ * @param {number} r the pixel radius of the blur
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+export default () => ({
+ gaussian(r, cb) {
+ // http://blog.ivank.net/fastest-gaussian-blur.html
+ if (typeof r !== "number") {
+ return throwError.call(this, "r must be a number", cb);
+ }
+
+ if (r < 1) {
+ return throwError.call(this, "r must be greater than 0", cb);
+ }
+
+ const rs = Math.ceil(r * 2.57); // significant radius
+ const range = rs * 2 + 1;
+ const rr2 = r * r * 2;
+ const rr2pi = rr2 * Math.PI;
+
+ const weights = [];
+
+ for (let y = 0; y < range; y++) {
+ weights[y] = [];
+ for (let x = 0; x < range; x++) {
+ const dsq = (x - rs) ** 2 + (y - rs) ** 2;
+ weights[y][x] = Math.exp(-dsq / rr2) / rr2pi;
+ }
+ }
+
+ for (let y = 0; y < this.bitmap.height; y++) {
+ for (let x = 0; x < this.bitmap.width; x++) {
+ let red = 0;
+ let green = 0;
+ let blue = 0;
+ let alpha = 0;
+ let wsum = 0;
+
+ for (let iy = 0; iy < range; iy++) {
+ for (let ix = 0; ix < range; ix++) {
+ const x1 = Math.min(
+ this.bitmap.width - 1,
+ Math.max(0, ix + x - rs)
+ );
+ const y1 = Math.min(
+ this.bitmap.height - 1,
+ Math.max(0, iy + y - rs)
+ );
+ const weight = weights[iy][ix];
+ const idx = (y1 * this.bitmap.width + x1) << 2;
+
+ red += this.bitmap.data[idx] * weight;
+ green += this.bitmap.data[idx + 1] * weight;
+ blue += this.bitmap.data[idx + 2] * weight;
+ alpha += this.bitmap.data[idx + 3] * weight;
+ wsum += weight;
+ }
+
+ const idx = (y * this.bitmap.width + x) << 2;
+
+ this.bitmap.data[idx] = Math.round(red / wsum);
+ this.bitmap.data[idx + 1] = Math.round(green / wsum);
+ this.bitmap.data[idx + 2] = Math.round(blue / wsum);
+ this.bitmap.data[idx + 3] = Math.round(alpha / wsum);
+ }
+ }
+ }
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+});
diff --git a/node_modules/@jimp/plugin-invert/CHANGELOG.md b/node_modules/@jimp/plugin-invert/CHANGELOG.md
new file mode 100644
index 00000000..4eb3193f
--- /dev/null
+++ b/node_modules/@jimp/plugin-invert/CHANGELOG.md
@@ -0,0 +1,35 @@
+# v0.16.3 (Sat Feb 04 2023)
+
+#### ⚠️ Pushed to `master`
+
+- upgrade prettier ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 1
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+---
+
+# v0.11.0 (Fri May 15 2020)
+
+#### 🚀 Enhancement
+
+- Removed Core-JS as a dependency. [#882](https://github.com/oliver-moran/jimp/pull/882) ([@EricRabil](https://github.com/EricRabil))
+
+#### Authors: 1
+
+- Eric Rabil ([@EricRabil](https://github.com/EricRabil))
+
+---
+
+# v0.9.3 (Tue Nov 26 2019)
+
+#### 🐛 Bug Fix
+
+- `@jimp/cli`, `@jimp/core`, `@jimp/custom`, `jimp`, `@jimp/plugin-blit`, `@jimp/plugin-blur`, `@jimp/plugin-circle`, `@jimp/plugin-color`, `@jimp/plugin-contain`, `@jimp/plugin-cover`, `@jimp/plugin-crop`, `@jimp/plugin-displace`, `@jimp/plugin-dither`, `@jimp/plugin-fisheye`, `@jimp/plugin-flip`, `@jimp/plugin-gaussian`, `@jimp/plugin-invert`, `@jimp/plugin-mask`, `@jimp/plugin-normalize`, `@jimp/plugin-print`, `@jimp/plugin-resize`, `@jimp/plugin-rotate`, `@jimp/plugin-scale`, `@jimp/plugin-shadow`, `@jimp/plugin-threshold`, `@jimp/plugins`, `@jimp/test-utils`, `@jimp/bmp`, `@jimp/gif`, `@jimp/jpeg`, `@jimp/png`, `@jimp/tiff`, `@jimp/types`, `@jimp/utils`
+ - Fix regeneratorRuntime errors [#815](https://github.com/oliver-moran/jimp/pull/815) ([@crutchcorn](https://github.com/crutchcorn) [@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 2
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+- Corbin Crutchley ([@crutchcorn](https://github.com/crutchcorn))
diff --git a/project starter code/node_modules/@jimp/plugin-invert/LICENSE b/node_modules/@jimp/plugin-invert/LICENSE
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-invert/LICENSE
rename to node_modules/@jimp/plugin-invert/LICENSE
diff --git a/node_modules/@jimp/plugin-invert/README.md b/node_modules/@jimp/plugin-invert/README.md
new file mode 100644
index 00000000..e201f584
--- /dev/null
+++ b/node_modules/@jimp/plugin-invert/README.md
@@ -0,0 +1,24 @@
+
+
+
@jimp/plugin-invert
+
Invert an image's colors.
+
+
+Invert an image's colors.
+
+## Usage
+
+- @param {function(Error, Jimp)} cb (optional) a callback for when complete
+
+```js
+import jimp from "jimp";
+
+async function main() {
+ const image = await jimp.read("test/image.png");
+
+ image.invert();
+}
+
+main();
+```
diff --git a/project starter code/node_modules/@jimp/plugin-invert/dist/index.js b/node_modules/@jimp/plugin-invert/dist/index.js
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-invert/dist/index.js
rename to node_modules/@jimp/plugin-invert/dist/index.js
diff --git a/node_modules/@jimp/plugin-invert/dist/index.js.map b/node_modules/@jimp/plugin-invert/dist/index.js.map
new file mode 100644
index 00000000..317ed895
--- /dev/null
+++ b/node_modules/@jimp/plugin-invert/dist/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/index.js"],"names":["invert","cb","scanQuiet","bitmap","width","height","x","y","idx","data","call"],"mappings":";;;;;;;AAAA;;AAEA;;;;;eAKe;AAAA,SAAO;AACpBA,IAAAA,MADoB,kBACbC,EADa,EACT;AACT,WAAKC,SAAL,CACE,CADF,EAEE,CAFF,EAGE,KAAKC,MAAL,CAAYC,KAHd,EAIE,KAAKD,MAAL,CAAYE,MAJd,EAKE,UAAUC,CAAV,EAAaC,CAAb,EAAgBC,GAAhB,EAAqB;AACnB,aAAKL,MAAL,CAAYM,IAAZ,CAAiBD,GAAjB,IAAwB,MAAM,KAAKL,MAAL,CAAYM,IAAZ,CAAiBD,GAAjB,CAA9B;AACA,aAAKL,MAAL,CAAYM,IAAZ,CAAiBD,GAAG,GAAG,CAAvB,IAA4B,MAAM,KAAKL,MAAL,CAAYM,IAAZ,CAAiBD,GAAG,GAAG,CAAvB,CAAlC;AACA,aAAKL,MAAL,CAAYM,IAAZ,CAAiBD,GAAG,GAAG,CAAvB,IAA4B,MAAM,KAAKL,MAAL,CAAYM,IAAZ,CAAiBD,GAAG,GAAG,CAAvB,CAAlC;AACD,OATH;;AAYA,UAAI,0BAAcP,EAAd,CAAJ,EAAuB;AACrBA,QAAAA,EAAE,CAACS,IAAH,CAAQ,IAAR,EAAc,IAAd,EAAoB,IAApB;AACD;;AAED,aAAO,IAAP;AACD;AAnBmB,GAAP;AAAA,C","sourcesContent":["import { isNodePattern } from \"@jimp/utils\";\n\n/**\n * Inverts the image\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp} this for chaining of methods\n */\nexport default () => ({\n invert(cb) {\n this.scanQuiet(\n 0,\n 0,\n this.bitmap.width,\n this.bitmap.height,\n function (x, y, idx) {\n this.bitmap.data[idx] = 255 - this.bitmap.data[idx];\n this.bitmap.data[idx + 1] = 255 - this.bitmap.data[idx + 1];\n this.bitmap.data[idx + 2] = 255 - this.bitmap.data[idx + 2];\n }\n );\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n },\n});\n"],"file":"index.js"}
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-invert/index.d.ts b/node_modules/@jimp/plugin-invert/index.d.ts
new file mode 100644
index 00000000..483b5430
--- /dev/null
+++ b/node_modules/@jimp/plugin-invert/index.d.ts
@@ -0,0 +1,7 @@
+import { ImageCallback } from "@jimp/core";
+
+interface Invert {
+ invert(cb?: ImageCallback): this;
+}
+
+export default function (): Invert;
diff --git a/node_modules/@jimp/plugin-invert/package.json b/node_modules/@jimp/plugin-invert/package.json
new file mode 100644
index 00000000..093b6ca2
--- /dev/null
+++ b/node_modules/@jimp/plugin-invert/package.json
@@ -0,0 +1,30 @@
+{
+ "name": "@jimp/plugin-invert",
+ "version": "0.16.13",
+ "description": "invert an image.",
+ "main": "dist/index.js",
+ "module": "es/index.js",
+ "types": "index.d.ts",
+ "scripts": {
+ "build": "npm run build:node:production && npm run build:module",
+ "build:watch": "npm run build:node:debug -- -- --watch --verbose",
+ "build:debug": "npm run build:node:debug",
+ "build:module": "cross-env BABEL_ENV=module babel src -d es --source-maps --config-file ../../babel.config.js",
+ "build:node": "babel src -d dist --source-maps --config-file ../../babel.config.js",
+ "build:node:debug": "cross-env BABEL_ENV=development npm run build:node",
+ "build:node:production": "cross-env BABEL_ENV=production npm run build:node"
+ },
+ "author": "",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "gitHead": "9eec86086634329a072901dca3a800b850548572"
+}
diff --git a/node_modules/@jimp/plugin-invert/src/index.js b/node_modules/@jimp/plugin-invert/src/index.js
new file mode 100644
index 00000000..44ad9302
--- /dev/null
+++ b/node_modules/@jimp/plugin-invert/src/index.js
@@ -0,0 +1,28 @@
+import { isNodePattern } from "@jimp/utils";
+
+/**
+ * Inverts the image
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+export default () => ({
+ invert(cb) {
+ this.scanQuiet(
+ 0,
+ 0,
+ this.bitmap.width,
+ this.bitmap.height,
+ function (x, y, idx) {
+ this.bitmap.data[idx] = 255 - this.bitmap.data[idx];
+ this.bitmap.data[idx + 1] = 255 - this.bitmap.data[idx + 1];
+ this.bitmap.data[idx + 2] = 255 - this.bitmap.data[idx + 2];
+ }
+ );
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+});
diff --git a/node_modules/@jimp/plugin-mask/CHANGELOG.md b/node_modules/@jimp/plugin-mask/CHANGELOG.md
new file mode 100644
index 00000000..4eb3193f
--- /dev/null
+++ b/node_modules/@jimp/plugin-mask/CHANGELOG.md
@@ -0,0 +1,35 @@
+# v0.16.3 (Sat Feb 04 2023)
+
+#### ⚠️ Pushed to `master`
+
+- upgrade prettier ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 1
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+---
+
+# v0.11.0 (Fri May 15 2020)
+
+#### 🚀 Enhancement
+
+- Removed Core-JS as a dependency. [#882](https://github.com/oliver-moran/jimp/pull/882) ([@EricRabil](https://github.com/EricRabil))
+
+#### Authors: 1
+
+- Eric Rabil ([@EricRabil](https://github.com/EricRabil))
+
+---
+
+# v0.9.3 (Tue Nov 26 2019)
+
+#### 🐛 Bug Fix
+
+- `@jimp/cli`, `@jimp/core`, `@jimp/custom`, `jimp`, `@jimp/plugin-blit`, `@jimp/plugin-blur`, `@jimp/plugin-circle`, `@jimp/plugin-color`, `@jimp/plugin-contain`, `@jimp/plugin-cover`, `@jimp/plugin-crop`, `@jimp/plugin-displace`, `@jimp/plugin-dither`, `@jimp/plugin-fisheye`, `@jimp/plugin-flip`, `@jimp/plugin-gaussian`, `@jimp/plugin-invert`, `@jimp/plugin-mask`, `@jimp/plugin-normalize`, `@jimp/plugin-print`, `@jimp/plugin-resize`, `@jimp/plugin-rotate`, `@jimp/plugin-scale`, `@jimp/plugin-shadow`, `@jimp/plugin-threshold`, `@jimp/plugins`, `@jimp/test-utils`, `@jimp/bmp`, `@jimp/gif`, `@jimp/jpeg`, `@jimp/png`, `@jimp/tiff`, `@jimp/types`, `@jimp/utils`
+ - Fix regeneratorRuntime errors [#815](https://github.com/oliver-moran/jimp/pull/815) ([@crutchcorn](https://github.com/crutchcorn) [@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 2
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+- Corbin Crutchley ([@crutchcorn](https://github.com/crutchcorn))
diff --git a/project starter code/node_modules/@jimp/plugin-mask/LICENSE b/node_modules/@jimp/plugin-mask/LICENSE
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-mask/LICENSE
rename to node_modules/@jimp/plugin-mask/LICENSE
diff --git a/node_modules/@jimp/plugin-mask/README.md b/node_modules/@jimp/plugin-mask/README.md
new file mode 100644
index 00000000..840ce372
--- /dev/null
+++ b/node_modules/@jimp/plugin-mask/README.md
@@ -0,0 +1,26 @@
+
+
+
@jimp/plugin-mask
+
mask an image with another image.
+
+
+Masks a source image on to this image using average pixel colour. A completely black pixel on the mask will turn a pixel in the image completely transparent.
+
+## Usage
+
+- @param {Jimp} src the source Jimp instance
+- @param {number} x the horizontal position to blit the image
+- @param {number} y the vertical position to blit the image
+- @param {function(Error, Jimp)} cb (optional) a callback for when complete
+
+```js
+import jimp from "jimp";
+
+async function main() {
+ const image = await jimp.read("test/image.png");
+ const mask = await jimp.read("test/mask.png");
+
+ image.mask(mask);
+}
+```
diff --git a/node_modules/@jimp/plugin-mask/dist/index.js b/node_modules/@jimp/plugin-mask/dist/index.js
new file mode 100644
index 00000000..79a6f19b
--- /dev/null
+++ b/node_modules/@jimp/plugin-mask/dist/index.js
@@ -0,0 +1,62 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports["default"] = void 0;
+
+var _utils = require("@jimp/utils");
+
+/**
+ * Masks a source image on to this image using average pixel colour. A completely black pixel on the mask will turn a pixel in the image completely transparent.
+ * @param {Jimp} src the source Jimp instance
+ * @param {number} x the horizontal position to blit the image
+ * @param {number} y the vertical position to blit the image
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+var _default = function _default() {
+ return {
+ mask: function mask(src) {
+ var x = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
+ var y = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
+ var cb = arguments.length > 3 ? arguments[3] : undefined;
+
+ if (!(src instanceof this.constructor)) {
+ return _utils.throwError.call(this, "The source must be a Jimp image", cb);
+ }
+
+ if (typeof x !== "number" || typeof y !== "number") {
+ return _utils.throwError.call(this, "x and y must be numbers", cb);
+ } // round input
+
+
+ x = Math.round(x);
+ y = Math.round(y);
+ var w = this.bitmap.width;
+ var h = this.bitmap.height;
+ var baseImage = this;
+ src.scanQuiet(0, 0, src.bitmap.width, src.bitmap.height, function (sx, sy, idx) {
+ var destX = x + sx;
+ var destY = y + sy;
+
+ if (destX >= 0 && destY >= 0 && destX < w && destY < h) {
+ var dstIdx = baseImage.getPixelIndex(destX, destY);
+ var data = this.bitmap.data;
+ var avg = (data[idx + 0] + data[idx + 1] + data[idx + 2]) / 3;
+ baseImage.bitmap.data[dstIdx + 3] *= avg / 255;
+ }
+ });
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ }
+ };
+};
+
+exports["default"] = _default;
+module.exports = exports.default;
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-mask/dist/index.js.map b/node_modules/@jimp/plugin-mask/dist/index.js.map
new file mode 100644
index 00000000..40cda516
--- /dev/null
+++ b/node_modules/@jimp/plugin-mask/dist/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/index.js"],"names":["mask","src","x","y","cb","constructor","throwError","call","Math","round","w","bitmap","width","h","height","baseImage","scanQuiet","sx","sy","idx","destX","destY","dstIdx","getPixelIndex","data","avg"],"mappings":";;;;;;;AAAA;;AAEA;;;;;;;;eAQe;AAAA,SAAO;AACpBA,IAAAA,IADoB,gBACfC,GADe,EACQ;AAAA,UAAlBC,CAAkB,uEAAd,CAAc;AAAA,UAAXC,CAAW,uEAAP,CAAO;AAAA,UAAJC,EAAI;;AAC1B,UAAI,EAAEH,GAAG,YAAY,KAAKI,WAAtB,CAAJ,EAAwC;AACtC,eAAOC,kBAAWC,IAAX,CAAgB,IAAhB,EAAsB,iCAAtB,EAAyDH,EAAzD,CAAP;AACD;;AAED,UAAI,OAAOF,CAAP,KAAa,QAAb,IAAyB,OAAOC,CAAP,KAAa,QAA1C,EAAoD;AAClD,eAAOG,kBAAWC,IAAX,CAAgB,IAAhB,EAAsB,yBAAtB,EAAiDH,EAAjD,CAAP;AACD,OAPyB,CAS1B;;;AACAF,MAAAA,CAAC,GAAGM,IAAI,CAACC,KAAL,CAAWP,CAAX,CAAJ;AACAC,MAAAA,CAAC,GAAGK,IAAI,CAACC,KAAL,CAAWN,CAAX,CAAJ;AAEA,UAAMO,CAAC,GAAG,KAAKC,MAAL,CAAYC,KAAtB;AACA,UAAMC,CAAC,GAAG,KAAKF,MAAL,CAAYG,MAAtB;AACA,UAAMC,SAAS,GAAG,IAAlB;AAEAd,MAAAA,GAAG,CAACe,SAAJ,CACE,CADF,EAEE,CAFF,EAGEf,GAAG,CAACU,MAAJ,CAAWC,KAHb,EAIEX,GAAG,CAACU,MAAJ,CAAWG,MAJb,EAKE,UAAUG,EAAV,EAAcC,EAAd,EAAkBC,GAAlB,EAAuB;AACrB,YAAMC,KAAK,GAAGlB,CAAC,GAAGe,EAAlB;AACA,YAAMI,KAAK,GAAGlB,CAAC,GAAGe,EAAlB;;AAEA,YAAIE,KAAK,IAAI,CAAT,IAAcC,KAAK,IAAI,CAAvB,IAA4BD,KAAK,GAAGV,CAApC,IAAyCW,KAAK,GAAGR,CAArD,EAAwD;AACtD,cAAMS,MAAM,GAAGP,SAAS,CAACQ,aAAV,CAAwBH,KAAxB,EAA+BC,KAA/B,CAAf;AADsD,cAE9CG,IAF8C,GAErC,KAAKb,MAFgC,CAE9Ca,IAF8C;AAGtD,cAAMC,GAAG,GAAG,CAACD,IAAI,CAACL,GAAG,GAAG,CAAP,CAAJ,GAAgBK,IAAI,CAACL,GAAG,GAAG,CAAP,CAApB,GAAgCK,IAAI,CAACL,GAAG,GAAG,CAAP,CAArC,IAAkD,CAA9D;AAEAJ,UAAAA,SAAS,CAACJ,MAAV,CAAiBa,IAAjB,CAAsBF,MAAM,GAAG,CAA/B,KAAqCG,GAAG,GAAG,GAA3C;AACD;AACF,OAhBH;;AAmBA,UAAI,0BAAcrB,EAAd,CAAJ,EAAuB;AACrBA,QAAAA,EAAE,CAACG,IAAH,CAAQ,IAAR,EAAc,IAAd,EAAoB,IAApB;AACD;;AAED,aAAO,IAAP;AACD;AA1CmB,GAAP;AAAA,C","sourcesContent":["import { isNodePattern, throwError } from \"@jimp/utils\";\n\n/**\n * Masks a source image on to this image using average pixel colour. A completely black pixel on the mask will turn a pixel in the image completely transparent.\n * @param {Jimp} src the source Jimp instance\n * @param {number} x the horizontal position to blit the image\n * @param {number} y the vertical position to blit the image\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp} this for chaining of methods\n */\nexport default () => ({\n mask(src, x = 0, y = 0, cb) {\n if (!(src instanceof this.constructor)) {\n return throwError.call(this, \"The source must be a Jimp image\", cb);\n }\n\n if (typeof x !== \"number\" || typeof y !== \"number\") {\n return throwError.call(this, \"x and y must be numbers\", cb);\n }\n\n // round input\n x = Math.round(x);\n y = Math.round(y);\n\n const w = this.bitmap.width;\n const h = this.bitmap.height;\n const baseImage = this;\n\n src.scanQuiet(\n 0,\n 0,\n src.bitmap.width,\n src.bitmap.height,\n function (sx, sy, idx) {\n const destX = x + sx;\n const destY = y + sy;\n\n if (destX >= 0 && destY >= 0 && destX < w && destY < h) {\n const dstIdx = baseImage.getPixelIndex(destX, destY);\n const { data } = this.bitmap;\n const avg = (data[idx + 0] + data[idx + 1] + data[idx + 2]) / 3;\n\n baseImage.bitmap.data[dstIdx + 3] *= avg / 255;\n }\n }\n );\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n },\n});\n"],"file":"index.js"}
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-mask/index.d.ts b/node_modules/@jimp/plugin-mask/index.d.ts
new file mode 100644
index 00000000..8effa592
--- /dev/null
+++ b/node_modules/@jimp/plugin-mask/index.d.ts
@@ -0,0 +1,7 @@
+import { ImageCallback, Jimp } from "@jimp/core";
+
+interface Mask {
+ mask(src: Jimp, x: number, y: number, cb?: ImageCallback): this;
+}
+
+export default function (): Mask;
diff --git a/node_modules/@jimp/plugin-mask/package.json b/node_modules/@jimp/plugin-mask/package.json
new file mode 100644
index 00000000..eea0bd57
--- /dev/null
+++ b/node_modules/@jimp/plugin-mask/package.json
@@ -0,0 +1,37 @@
+{
+ "name": "@jimp/plugin-mask",
+ "version": "0.16.13",
+ "description": "mask an image.",
+ "main": "dist/index.js",
+ "module": "es/index.js",
+ "types": "index.d.ts",
+ "scripts": {
+ "test": "cross-env BABEL_ENV=test mocha --require @babel/register",
+ "test:watch": "npm run test -- --reporter min --watch",
+ "test:coverage": "nyc npm run test",
+ "build": "npm run build:node:production && npm run build:module",
+ "build:watch": "npm run build:node:debug -- -- --watch --verbose",
+ "build:debug": "npm run build:node:debug",
+ "build:module": "cross-env BABEL_ENV=module babel src -d es --source-maps --config-file ../../babel.config.js",
+ "build:node": "babel src -d dist --source-maps --config-file ../../babel.config.js",
+ "build:node:debug": "cross-env BABEL_ENV=development npm run build:node",
+ "build:node:production": "cross-env BABEL_ENV=production npm run build:node"
+ },
+ "author": "",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ },
+ "devDependencies": {
+ "@jimp/custom": "^0.16.13",
+ "@jimp/test-utils": "^0.16.13"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "gitHead": "9eec86086634329a072901dca3a800b850548572"
+}
diff --git a/node_modules/@jimp/plugin-mask/src/index.js b/node_modules/@jimp/plugin-mask/src/index.js
new file mode 100644
index 00000000..2a6b32d4
--- /dev/null
+++ b/node_modules/@jimp/plugin-mask/src/index.js
@@ -0,0 +1,54 @@
+import { isNodePattern, throwError } from "@jimp/utils";
+
+/**
+ * Masks a source image on to this image using average pixel colour. A completely black pixel on the mask will turn a pixel in the image completely transparent.
+ * @param {Jimp} src the source Jimp instance
+ * @param {number} x the horizontal position to blit the image
+ * @param {number} y the vertical position to blit the image
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+export default () => ({
+ mask(src, x = 0, y = 0, cb) {
+ if (!(src instanceof this.constructor)) {
+ return throwError.call(this, "The source must be a Jimp image", cb);
+ }
+
+ if (typeof x !== "number" || typeof y !== "number") {
+ return throwError.call(this, "x and y must be numbers", cb);
+ }
+
+ // round input
+ x = Math.round(x);
+ y = Math.round(y);
+
+ const w = this.bitmap.width;
+ const h = this.bitmap.height;
+ const baseImage = this;
+
+ src.scanQuiet(
+ 0,
+ 0,
+ src.bitmap.width,
+ src.bitmap.height,
+ function (sx, sy, idx) {
+ const destX = x + sx;
+ const destY = y + sy;
+
+ if (destX >= 0 && destY >= 0 && destX < w && destY < h) {
+ const dstIdx = baseImage.getPixelIndex(destX, destY);
+ const { data } = this.bitmap;
+ const avg = (data[idx + 0] + data[idx + 1] + data[idx + 2]) / 3;
+
+ baseImage.bitmap.data[dstIdx + 3] *= avg / 255;
+ }
+ }
+ );
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+});
diff --git a/node_modules/@jimp/plugin-mask/test/mask.test.js b/node_modules/@jimp/plugin-mask/test/mask.test.js
new file mode 100644
index 00000000..373bc099
--- /dev/null
+++ b/node_modules/@jimp/plugin-mask/test/mask.test.js
@@ -0,0 +1,173 @@
+import { Jimp, mkJGD } from "@jimp/test-utils";
+import configure from "@jimp/custom";
+
+import mask from "../src";
+
+const jimp = configure({ plugins: [mask] }, Jimp);
+
+describe("Mask", () => {
+ let imgSrcOpaq;
+ let imgSrcAlpa;
+ let maskGrayBig;
+ let maskGraySmall;
+ let maskColor;
+
+ before((done) => {
+ Promise.all([
+ jimp.read(mkJGD("▴□▾□■□", "■▴■▾■□", "■□▴□▾□", "■□■▴■▾")),
+ jimp.read(mkJGD("▴▵▾▿", "▴▵▾▿", "▴▵▾▿")),
+ jimp.read(mkJGD("048840", "8CFFC8", "8CFFC8", "048840")),
+ jimp.read(mkJGD("0369", "369C", "69CF")),
+ jimp.read(mkJGD("▴▴▾▾", "▪▪▰▰", "□□□□")),
+ ])
+ .then((imgs) => {
+ imgSrcOpaq = imgs[0];
+ imgSrcAlpa = imgs[1];
+ maskGrayBig = imgs[2];
+ maskGraySmall = imgs[3];
+ maskColor = imgs[4];
+ done();
+ })
+ .catch(done);
+ });
+
+ it("Affect opaque image with a gray mask with the same size", () => {
+ imgSrcOpaq
+ .clone()
+ .mask(maskGrayBig)
+ .getJGDSync()
+ .should.be.sameJGD({
+ width: 6,
+ height: 4,
+ data: [
+ 0xff000000, 0xffffff44, 0x0000ff88, 0xffffff88, 0x00000044,
+ 0xffffff00, 0x00000088, 0xff0000cc, 0x000000ff, 0x0000ffff,
+ 0x000000cc, 0xffffff88, 0x00000088, 0xffffffcc, 0xff0000ff,
+ 0xffffffff, 0x0000ffcc, 0xffffff88, 0x00000000, 0xffffff44,
+ 0x00000088, 0xff000088, 0x00000044, 0x0000ff00,
+ ],
+ });
+ });
+
+ it("Affect opaque image with a gray mask with the same size, blited", () => {
+ imgSrcOpaq
+ .clone()
+ .mask(maskGrayBig, 1, 1)
+ .getJGDSync()
+ .should.be.sameJGD({
+ width: 6,
+ height: 4,
+ data: [
+ 0xff0000ff, 0xffffffff, 0x0000ffff, 0xffffffff, 0x000000ff,
+ 0xffffffff, 0x000000ff, 0xff000000, 0x00000044, 0x0000ff88,
+ 0x00000088, 0xffffff44, 0x000000ff, 0xffffff88, 0xff0000cc,
+ 0xffffffff, 0x0000ffff, 0xffffffcc, 0x000000ff, 0xffffff88,
+ 0x000000cc, 0xff0000ff, 0x000000ff, 0x0000ffcc,
+ ],
+ });
+ });
+
+ it("Affect opaque image with a gray mask with the same size, blited negative", () => {
+ imgSrcOpaq
+ .clone()
+ .mask(maskGrayBig, -1, -1)
+ .getJGDSync()
+ .should.be.sameJGD({
+ width: 6,
+ height: 4,
+ data: [
+ 0xff0000cc, 0xffffffff, 0x0000ffff, 0xffffffcc, 0x00000088,
+ 0xffffffff, 0x000000cc, 0xff0000ff, 0x000000ff, 0x0000ffcc,
+ 0x00000088, 0xffffffff, 0x00000044, 0xffffff88, 0xff000088,
+ 0xffffff44, 0x0000ff00, 0xffffffff, 0x000000ff, 0xffffffff,
+ 0x000000ff, 0xff0000ff, 0x000000ff, 0x0000ffff,
+ ],
+ });
+ });
+
+ it("Affect opaque image with a smaller gray mask", () => {
+ imgSrcOpaq
+ .clone()
+ .mask(maskGraySmall)
+ .getJGDSync()
+ .should.be.sameJGD({
+ width: 6,
+ height: 4,
+ data: [
+ 0xff000000, 0xffffff33, 0x0000ff66, 0xffffff99, 0x000000ff,
+ 0xffffffff, 0x00000033, 0xff000066, 0x00000099, 0x0000ffcc,
+ 0x000000ff, 0xffffffff, 0x00000066, 0xffffff99, 0xff0000cc,
+ 0xffffffff, 0x0000ffff, 0xffffffff, 0x000000ff, 0xffffffff,
+ 0x000000ff, 0xff0000ff, 0x000000ff, 0x0000ffff,
+ ],
+ });
+ });
+
+ it("Affect opaque image with a smaller gray mask, blited", () => {
+ imgSrcOpaq
+ .clone()
+ .mask(maskGraySmall, 1, 1)
+ .getJGDSync()
+ .should.be.sameJGD({
+ width: 6,
+ height: 4,
+ data: [
+ 0xff0000ff, 0xffffffff, 0x0000ffff, 0xffffffff, 0x000000ff,
+ 0xffffffff, 0x000000ff, 0xff000000, 0x00000033, 0x0000ff66,
+ 0x00000099, 0xffffffff, 0x000000ff, 0xffffff33, 0xff000066,
+ 0xffffff99, 0x0000ffcc, 0xffffffff, 0x000000ff, 0xffffff66,
+ 0x00000099, 0xff0000cc, 0x000000ff, 0x0000ffff,
+ ],
+ });
+ });
+
+ it("Affect alpha image with a bigger gray mask", () => {
+ imgSrcAlpa
+ .clone()
+ .mask(maskGrayBig)
+ .getJGDSync()
+ .should.be.sameJGD({
+ width: 4,
+ height: 3,
+ data: [
+ 0xff000000, 0xff000021, 0x0000ff88, 0x0000ff43, 0xff000088,
+ 0xff000065, 0x0000ffff, 0x0000ff7f, 0xff000088, 0xff000065,
+ 0x0000ffff, 0x0000ff7f,
+ ],
+ });
+ });
+
+ it("Affect alpha image with a bigger gray mask, blited", () => {
+ imgSrcAlpa
+ .clone()
+ .mask(maskGrayBig, -1, -1)
+ .getJGDSync()
+ .should.be.sameJGD({
+ width: 4,
+ height: 3,
+ data: [
+ 0xff0000cc, 0xff00007f, 0x0000ffff, 0x0000ff65, 0xff0000cc,
+ 0xff00007f, 0x0000ffff, 0x0000ff65, 0xff000044, 0xff000043,
+ 0x0000ff88, 0x0000ff21,
+ ],
+ });
+ });
+
+ it("Affect opaque image with a colored mask", () => {
+ imgSrcOpaq
+ .clone()
+ .mask(maskColor, 1, 1)
+ .getJGDSync()
+ .should.be.sameJGD({
+ width: 6,
+ height: 4,
+ data: [
+ 0xff0000ff, 0xffffffff, 0x0000ffff, 0xffffffff, 0x000000ff,
+ 0xffffffff, 0x000000ff, 0xff000055, 0x00000055, 0x0000ff55,
+ 0x00000055, 0xffffffff, 0x000000ff, 0xffffffaa, 0xff0000aa,
+ 0xffffffaa, 0x0000ffaa, 0xffffffff, 0x000000ff, 0xffffffff,
+ 0x000000ff, 0xff0000ff, 0x000000ff, 0x0000ffff,
+ ],
+ });
+ });
+});
diff --git a/node_modules/@jimp/plugin-normalize/CHANGELOG.md b/node_modules/@jimp/plugin-normalize/CHANGELOG.md
new file mode 100644
index 00000000..4eb3193f
--- /dev/null
+++ b/node_modules/@jimp/plugin-normalize/CHANGELOG.md
@@ -0,0 +1,35 @@
+# v0.16.3 (Sat Feb 04 2023)
+
+#### ⚠️ Pushed to `master`
+
+- upgrade prettier ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 1
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+---
+
+# v0.11.0 (Fri May 15 2020)
+
+#### 🚀 Enhancement
+
+- Removed Core-JS as a dependency. [#882](https://github.com/oliver-moran/jimp/pull/882) ([@EricRabil](https://github.com/EricRabil))
+
+#### Authors: 1
+
+- Eric Rabil ([@EricRabil](https://github.com/EricRabil))
+
+---
+
+# v0.9.3 (Tue Nov 26 2019)
+
+#### 🐛 Bug Fix
+
+- `@jimp/cli`, `@jimp/core`, `@jimp/custom`, `jimp`, `@jimp/plugin-blit`, `@jimp/plugin-blur`, `@jimp/plugin-circle`, `@jimp/plugin-color`, `@jimp/plugin-contain`, `@jimp/plugin-cover`, `@jimp/plugin-crop`, `@jimp/plugin-displace`, `@jimp/plugin-dither`, `@jimp/plugin-fisheye`, `@jimp/plugin-flip`, `@jimp/plugin-gaussian`, `@jimp/plugin-invert`, `@jimp/plugin-mask`, `@jimp/plugin-normalize`, `@jimp/plugin-print`, `@jimp/plugin-resize`, `@jimp/plugin-rotate`, `@jimp/plugin-scale`, `@jimp/plugin-shadow`, `@jimp/plugin-threshold`, `@jimp/plugins`, `@jimp/test-utils`, `@jimp/bmp`, `@jimp/gif`, `@jimp/jpeg`, `@jimp/png`, `@jimp/tiff`, `@jimp/types`, `@jimp/utils`
+ - Fix regeneratorRuntime errors [#815](https://github.com/oliver-moran/jimp/pull/815) ([@crutchcorn](https://github.com/crutchcorn) [@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 2
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+- Corbin Crutchley ([@crutchcorn](https://github.com/crutchcorn))
diff --git a/project starter code/node_modules/@jimp/plugin-normalize/LICENSE b/node_modules/@jimp/plugin-normalize/LICENSE
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-normalize/LICENSE
rename to node_modules/@jimp/plugin-normalize/LICENSE
diff --git a/node_modules/@jimp/plugin-normalize/README.md b/node_modules/@jimp/plugin-normalize/README.md
new file mode 100644
index 00000000..19ba914d
--- /dev/null
+++ b/node_modules/@jimp/plugin-normalize/README.md
@@ -0,0 +1,24 @@
+
+
+
@jimp/plugin-normalize
+
Normalize an image's colors.
+
+
+Normalizes an images color by computing a histogram.
+
+## Usage
+
+- @param {function(Error, Jimp)} cb (optional) a callback for when complete
+
+```js
+import jimp from "jimp";
+
+async function main() {
+ const image = await jimp.read("test/image.png");
+
+ image.normalize();
+}
+
+main();
+```
diff --git a/project starter code/node_modules/@jimp/plugin-normalize/dist/index.js b/node_modules/@jimp/plugin-normalize/dist/index.js
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-normalize/dist/index.js
rename to node_modules/@jimp/plugin-normalize/dist/index.js
diff --git a/node_modules/@jimp/plugin-normalize/dist/index.js.map b/node_modules/@jimp/plugin-normalize/dist/index.js.map
new file mode 100644
index 00000000..5d2e75a7
--- /dev/null
+++ b/node_modules/@jimp/plugin-normalize/dist/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/index.js"],"names":["histogram","r","Array","fill","g","b","scanQuiet","bitmap","width","height","x","y","index","data","normalize","value","min","max","getBounds","histogramChannel","findIndex","slice","reverse","cb","h","call","bounds","idx"],"mappings":"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","sourcesContent":["import { isNodePattern } from \"@jimp/utils\";\n\n/**\n * Get an image's histogram\n * @return {object} An object with an array of color occurrence counts for each channel (r,g,b)\n */\nfunction histogram() {\n const histogram = {\n r: new Array(256).fill(0),\n g: new Array(256).fill(0),\n b: new Array(256).fill(0),\n };\n\n this.scanQuiet(\n 0,\n 0,\n this.bitmap.width,\n this.bitmap.height,\n function (x, y, index) {\n histogram.r[this.bitmap.data[index + 0]]++;\n histogram.g[this.bitmap.data[index + 1]]++;\n histogram.b[this.bitmap.data[index + 2]]++;\n }\n );\n\n return histogram;\n}\n\n/**\n * Normalize values\n * @param {integer} value Pixel channel value.\n * @param {integer} min Minimum value for channel\n * @param {integer} max Maximum value for channel\n * @return {integer} normalized values\n */\nconst normalize = function (value, min, max) {\n return ((value - min) * 255) / (max - min);\n};\n\nconst getBounds = function (histogramChannel) {\n return [\n histogramChannel.findIndex((value) => value > 0),\n 255 -\n histogramChannel\n .slice()\n .reverse()\n .findIndex((value) => value > 0),\n ];\n};\n\n/**\n * Normalizes the image\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp} this for chaining of methods\n */\nexport default () => ({\n normalize(cb) {\n const h = histogram.call(this);\n\n // store bounds (minimum and maximum values)\n const bounds = {\n r: getBounds(h.r),\n g: getBounds(h.g),\n b: getBounds(h.b),\n };\n\n // apply value transformations\n this.scanQuiet(\n 0,\n 0,\n this.bitmap.width,\n this.bitmap.height,\n function (x, y, idx) {\n const r = this.bitmap.data[idx + 0];\n const g = this.bitmap.data[idx + 1];\n const b = this.bitmap.data[idx + 2];\n\n this.bitmap.data[idx + 0] = normalize(r, bounds.r[0], bounds.r[1]);\n this.bitmap.data[idx + 1] = normalize(g, bounds.g[0], bounds.g[1]);\n this.bitmap.data[idx + 2] = normalize(b, bounds.b[0], bounds.b[1]);\n }\n );\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n },\n});\n"],"file":"index.js"}
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-normalize/index.d.ts b/node_modules/@jimp/plugin-normalize/index.d.ts
new file mode 100644
index 00000000..1ae996dc
--- /dev/null
+++ b/node_modules/@jimp/plugin-normalize/index.d.ts
@@ -0,0 +1,7 @@
+import { ImageCallback } from "@jimp/core";
+
+interface Normalize {
+ normalize(cb?: ImageCallback): this;
+}
+
+export default function (): Normalize;
diff --git a/node_modules/@jimp/plugin-normalize/package.json b/node_modules/@jimp/plugin-normalize/package.json
new file mode 100644
index 00000000..3da939c1
--- /dev/null
+++ b/node_modules/@jimp/plugin-normalize/package.json
@@ -0,0 +1,37 @@
+{
+ "name": "@jimp/plugin-normalize",
+ "version": "0.16.13",
+ "description": "normalize an image.",
+ "main": "dist/index.js",
+ "module": "es/index.js",
+ "types": "index.d.ts",
+ "scripts": {
+ "test": "cross-env BABEL_ENV=test mocha --require @babel/register",
+ "test:watch": "npm run test -- --reporter min --watch",
+ "test:coverage": "nyc npm run test",
+ "build": "npm run build:node:production && npm run build:module",
+ "build:watch": "npm run build:node:debug -- -- --watch --verbose",
+ "build:debug": "npm run build:node:debug",
+ "build:module": "cross-env BABEL_ENV=module babel src -d es --source-maps --config-file ../../babel.config.js",
+ "build:node": "babel src -d dist --source-maps --config-file ../../babel.config.js",
+ "build:node:debug": "cross-env BABEL_ENV=development npm run build:node",
+ "build:node:production": "cross-env BABEL_ENV=production npm run build:node"
+ },
+ "author": "",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ },
+ "devDependencies": {
+ "@jimp/custom": "^0.16.13",
+ "@jimp/test-utils": "^0.16.13"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "gitHead": "9eec86086634329a072901dca3a800b850548572"
+}
diff --git a/node_modules/@jimp/plugin-normalize/src/index.js b/node_modules/@jimp/plugin-normalize/src/index.js
new file mode 100644
index 00000000..57a696ca
--- /dev/null
+++ b/node_modules/@jimp/plugin-normalize/src/index.js
@@ -0,0 +1,90 @@
+import { isNodePattern } from "@jimp/utils";
+
+/**
+ * Get an image's histogram
+ * @return {object} An object with an array of color occurrence counts for each channel (r,g,b)
+ */
+function histogram() {
+ const histogram = {
+ r: new Array(256).fill(0),
+ g: new Array(256).fill(0),
+ b: new Array(256).fill(0),
+ };
+
+ this.scanQuiet(
+ 0,
+ 0,
+ this.bitmap.width,
+ this.bitmap.height,
+ function (x, y, index) {
+ histogram.r[this.bitmap.data[index + 0]]++;
+ histogram.g[this.bitmap.data[index + 1]]++;
+ histogram.b[this.bitmap.data[index + 2]]++;
+ }
+ );
+
+ return histogram;
+}
+
+/**
+ * Normalize values
+ * @param {integer} value Pixel channel value.
+ * @param {integer} min Minimum value for channel
+ * @param {integer} max Maximum value for channel
+ * @return {integer} normalized values
+ */
+const normalize = function (value, min, max) {
+ return ((value - min) * 255) / (max - min);
+};
+
+const getBounds = function (histogramChannel) {
+ return [
+ histogramChannel.findIndex((value) => value > 0),
+ 255 -
+ histogramChannel
+ .slice()
+ .reverse()
+ .findIndex((value) => value > 0),
+ ];
+};
+
+/**
+ * Normalizes the image
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+export default () => ({
+ normalize(cb) {
+ const h = histogram.call(this);
+
+ // store bounds (minimum and maximum values)
+ const bounds = {
+ r: getBounds(h.r),
+ g: getBounds(h.g),
+ b: getBounds(h.b),
+ };
+
+ // apply value transformations
+ this.scanQuiet(
+ 0,
+ 0,
+ this.bitmap.width,
+ this.bitmap.height,
+ function (x, y, idx) {
+ const r = this.bitmap.data[idx + 0];
+ const g = this.bitmap.data[idx + 1];
+ const b = this.bitmap.data[idx + 2];
+
+ this.bitmap.data[idx + 0] = normalize(r, bounds.r[0], bounds.r[1]);
+ this.bitmap.data[idx + 1] = normalize(g, bounds.g[0], bounds.g[1]);
+ this.bitmap.data[idx + 2] = normalize(b, bounds.b[0], bounds.b[1]);
+ }
+ );
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+});
diff --git a/node_modules/@jimp/plugin-normalize/test/normalize.test.js b/node_modules/@jimp/plugin-normalize/test/normalize.test.js
new file mode 100644
index 00000000..fc67fec7
--- /dev/null
+++ b/node_modules/@jimp/plugin-normalize/test/normalize.test.js
@@ -0,0 +1,39 @@
+import { Jimp, mkJGD } from "@jimp/test-utils";
+import configure from "@jimp/custom";
+
+import normalize from "../src";
+
+const jimp = configure({ plugins: [normalize] }, Jimp);
+
+describe("Normalize", () => {
+ it("change grayscale image", async () => {
+ const image = await jimp.read(mkJGD("36▦", "6▦9", "▦9C"));
+
+ image
+ .normalize()
+ .getJGDSync()
+ .should.be.sameJGD(mkJGD("■5▦", "5▦A", "▦A□"));
+ });
+
+ it("change red/blue image", async () => {
+ const image = await jimp.read({
+ width: 3,
+ height: 2,
+ data: [
+ 0x000000ff, 0x400022ff, 0x40002200, 0x400000ff, 0x000022ff, 0x800055ff,
+ ],
+ });
+
+ image
+ .normalize()
+ .getJGDSync()
+ .should.be.sameJGD({
+ width: 3,
+ height: 2,
+ data: [
+ 0x000000ff, 0x7f0066ff, 0x7f006600, 0x7f0000ff, 0x000066ff,
+ 0xff00ffff,
+ ],
+ });
+ });
+});
diff --git a/node_modules/@jimp/plugin-print/CHANGELOG.md b/node_modules/@jimp/plugin-print/CHANGELOG.md
new file mode 100644
index 00000000..23f8c511
--- /dev/null
+++ b/node_modules/@jimp/plugin-print/CHANGELOG.md
@@ -0,0 +1,71 @@
+# v0.16.3 (Sat Feb 04 2023)
+
+#### 🐛 Bug Fix
+
+- Update README.md [#1120](https://github.com/jimp-dev/jimp/pull/1120) ([@mfuatnuroglu](https://github.com/mfuatnuroglu))
+
+#### ⚠️ Pushed to `master`
+
+- try this ([@hipstersmoothie](https://github.com/hipstersmoothie))
+- upgrade prettier ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 2
+
+- [@mfuatnuroglu](https://github.com/mfuatnuroglu)
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+---
+
+# v0.11.0 (Fri May 15 2020)
+
+#### 🚀 Enhancement
+
+- Removed Core-JS as a dependency. [#882](https://github.com/oliver-moran/jimp/pull/882) ([@EricRabil](https://github.com/EricRabil))
+
+#### Authors: 1
+
+- Eric Rabil ([@EricRabil](https://github.com/EricRabil))
+
+---
+
+# v0.10.1 (Sun Apr 05 2020)
+
+#### 📝 Documentation
+
+- Fix a `loadFont` and case inconsistency of `jimp` [#868](https://github.com/oliver-moran/jimp/pull/868) ([@xinbenlv](https://github.com/xinbenlv))
+
+#### Authors: 1
+
+- xinbenlv ([@xinbenlv](https://github.com/xinbenlv))
+
+---
+
+# v0.9.5 (Tue Mar 03 2020)
+
+#### 🐛 Bug Fix
+
+- `@jimp/plugin-print`
+ - Export font type [#838](https://github.com/oliver-moran/jimp/pull/838) ([@DomiR](https://github.com/DomiR))
+
+#### 📝 Documentation
+
+- `@jimp/plugin-print`
+ - Added ttf2fnt.com to the list [#845](https://github.com/oliver-moran/jimp/pull/845) ([@mbejda](https://github.com/mbejda))
+
+#### Authors: 1
+
+- Dominique Rau ([@DomiR](https://github.com/DomiR))
+
+---
+
+# v0.9.3 (Tue Nov 26 2019)
+
+#### 🐛 Bug Fix
+
+- `@jimp/cli`, `@jimp/core`, `@jimp/custom`, `jimp`, `@jimp/plugin-blit`, `@jimp/plugin-blur`, `@jimp/plugin-circle`, `@jimp/plugin-color`, `@jimp/plugin-contain`, `@jimp/plugin-cover`, `@jimp/plugin-crop`, `@jimp/plugin-displace`, `@jimp/plugin-dither`, `@jimp/plugin-fisheye`, `@jimp/plugin-flip`, `@jimp/plugin-gaussian`, `@jimp/plugin-invert`, `@jimp/plugin-mask`, `@jimp/plugin-normalize`, `@jimp/plugin-print`, `@jimp/plugin-resize`, `@jimp/plugin-rotate`, `@jimp/plugin-scale`, `@jimp/plugin-shadow`, `@jimp/plugin-threshold`, `@jimp/plugins`, `@jimp/test-utils`, `@jimp/bmp`, `@jimp/gif`, `@jimp/jpeg`, `@jimp/png`, `@jimp/tiff`, `@jimp/types`, `@jimp/utils`
+ - Fix regeneratorRuntime errors [#815](https://github.com/oliver-moran/jimp/pull/815) ([@crutchcorn](https://github.com/crutchcorn) [@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 2
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+- Corbin Crutchley ([@crutchcorn](https://github.com/crutchcorn))
diff --git a/project starter code/node_modules/@jimp/plugin-print/LICENSE b/node_modules/@jimp/plugin-print/LICENSE
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/LICENSE
rename to node_modules/@jimp/plugin-print/LICENSE
diff --git a/node_modules/@jimp/plugin-print/README.md b/node_modules/@jimp/plugin-print/README.md
new file mode 100644
index 00000000..4d395c87
--- /dev/null
+++ b/node_modules/@jimp/plugin-print/README.md
@@ -0,0 +1,173 @@
+
+
+
@jimp/plugin-print
+
Print text on an image.
+
+
+Jimp supports basic typography using BMFont format (.fnt) even ones in different languages! Just find a bitmap font that is suitable [bitmap fonts](https://en.wikipedia.org/wiki/Bitmap_fonts).
+
+Online tools are also available to convert TTF fonts to BMFont format. They can be used to create color font or sprite packs.
+
+:star: [ttf2fnt](https://ttf2fnt.com/)
+
+:star: [Littera](http://kvazars.com/littera/)
+
+:star: [Hiero](https://github.com/libgdx/libgdx/wiki/Hiero)
+
+## Included Fonts
+
+- `Jimp.FONT_SANS_8_BLACK`
+- `Jimp.FONT_SANS_10_BLACK`
+- `Jimp.FONT_SANS_12_BLACK`
+- `Jimp.FONT_SANS_14_BLACK`
+- `Jimp.FONT_SANS_16_BLACK`
+- `Jimp.FONT_SANS_32_BLACK`
+- `Jimp.FONT_SANS_64_BLACK`
+- `Jimp.FONT_SANS_128_BLACK`
+- `Jimp.FONT_SANS_8_WHITE`
+- `Jimp.FONT_SANS_16_WHITE`
+- `Jimp.FONT_SANS_32_WHITE`
+- `Jimp.FONT_SANS_64_WHITE`
+- `Jimp.FONT_SANS_128_WHITE`
+
+## loadFont
+
+Loads a bitmap font from a file
+
+- @param {string} file the file path of a .fnt file
+- @param {function(Error, Jimp)} cb (optional) a function to call when the font is loaded
+- @returns {Promise} a promise
+
+```js
+import Jimp from "jimp";
+
+async function main() {
+ const font = await Jimp.loadFont(Jimp.FONT_SANS_32_BLACK);
+}
+
+main();
+```
+
+## print
+
+Draws a text on a image on a given boundary
+
+- @param {Jimp} font a bitmap font loaded from `Jimp.loadFont` command
+- @param {number} x the x position to start drawing the text
+- @param {number} y the y position to start drawing the text
+- @param {string} text the text to draw (string or object with `text`, `alignmentX`, and/or `alignmentY`)
+- @param {number} maxWidth (optional) the boundary width to draw in
+- @param {number} maxHeight (optional) the boundary height to draw in
+- @param {function(Error, Jimp)} cb (optional) a function to call when the text is written
+
+```js
+import Jimp from "jimp";
+
+async function main() {
+ const font = await Jimp.loadFont(Jimp.FONT_SANS_32_BLACK);
+ const image = await Jimp.read(1000, 1000, 0x0000ffff);
+
+ image.print(font, 10, 10, "Hello World!");
+}
+
+main();
+```
+
+### Alignment
+
+Alignment modes are supported by replacing the `str` argument with an object containing `text`, `alignmentX` and `alignmentY`. `alignmentX` defaults to `Jimp.HORIZONTAL_ALIGN_LEFT` and `alignmentY` defaults to `Jimp.VERTICAL_ALIGN_TOP`.
+
+You can align text using the following constants.
+
+```js
+Jimp.HORIZONTAL_ALIGN_LEFT;
+Jimp.HORIZONTAL_ALIGN_CENTER;
+Jimp.HORIZONTAL_ALIGN_RIGHT;
+
+Jimp.VERTICAL_ALIGN_TOP;
+Jimp.VERTICAL_ALIGN_MIDDLE;
+Jimp.VERTICAL_ALIGN_BOTTOM;
+```
+
+Default align modes for `image.print` are:
+
+```js
+{
+ alignmentX: Jimp.HORIZONTAL_ALIGN_LEFT,
+ alignmentY: Jimp.VERTICAL_ALIGN_TOP
+}
+```
+
+```js
+const font = await Jimp.loadFont(pathOrURL);
+
+// prints 'Hello world!' on an image, middle and center-aligned
+image.print(
+ font,
+ x,
+ y,
+ {
+ text: "Hello world!",
+ alignmentX: Jimp.HORIZONTAL_ALIGN_CENTER,
+ alignmentY: Jimp.VERTICAL_ALIGN_MIDDLE,
+ },
+ maxWidth,
+ maxHeight
+);
+```
+
+**Note**: although `maxWidth` and `maxHeight` parameters are optional to `print()`, they are needed to correctly align the text using the requested alignment mode.
+
+#### Staggering Text
+
+If you need to stagger text position along the x or y-axis the print method also returns the final coordinates as an argument to the callback.
+
+```js
+const font = await Jimp.loadFont(Jimp.FONT_SANS_32_BLACK);
+
+image.print(
+ font,
+ 10,
+ 10,
+ "Hello world that wraps!",
+ 50,
+ (err, image, { x, y }) => {
+ image.print(font, x, y + 20, "More text on another line", 50);
+ }
+);
+```
+
+## measureText
+
+Measure how wide a piece of text will be.
+
+```js
+import Jimp from "jimp";
+
+async function main() {
+ const font = await Jimp.loadFont(Jimp.FONT_SANS_32_BLACK);
+ const image = await Jimp.read(1000, 1000, 0x0000ffff);
+
+ Jimp.measureText(font, "Hello World!");
+}
+
+main();
+```
+
+## measureTextHeight
+
+Measure how tall a piece of text will be.
+
+```js
+import Jimp from "jimp";
+
+async function main() {
+ const font = await Jimp.loadFont(Jimp.FONT_SANS_32_BLACK);
+ const image = await Jimp.read(1000, 1000, 0x0000ffff);
+
+ Jimp.measureTextHeight(font, "Hello World!", 100);
+}
+
+main();
+```
diff --git a/node_modules/@jimp/plugin-print/dist/index.js b/node_modules/@jimp/plugin-print/dist/index.js
new file mode 100644
index 00000000..8dd27c05
--- /dev/null
+++ b/node_modules/@jimp/plugin-print/dist/index.js
@@ -0,0 +1,261 @@
+"use strict";
+
+var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports["default"] = void 0;
+
+var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
+
+var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
+
+var _path = _interopRequireDefault(require("path"));
+
+var _loadBmfont = _interopRequireDefault(require("load-bmfont"));
+
+var _utils = require("@jimp/utils");
+
+var _measureText = require("./measure-text");
+
+function xOffsetBasedOnAlignment(constants, font, line, maxWidth, alignment) {
+ if (alignment === constants.HORIZONTAL_ALIGN_LEFT) {
+ return 0;
+ }
+
+ if (alignment === constants.HORIZONTAL_ALIGN_CENTER) {
+ return (maxWidth - (0, _measureText.measureText)(font, line)) / 2;
+ }
+
+ return maxWidth - (0, _measureText.measureText)(font, line);
+}
+
+function drawCharacter(image, font, x, y, _char) {
+ if (_char.width > 0 && _char.height > 0) {
+ var characterPage = font.pages[_char.page];
+ image.blit(characterPage, x + _char.xoffset, y + _char.yoffset, _char.x, _char.y, _char.width, _char.height);
+ }
+
+ return image;
+}
+
+function printText(font, x, y, text, defaultCharWidth) {
+ for (var i = 0; i < text.length; i++) {
+ var _char2 = void 0;
+
+ if (font.chars[text[i]]) {
+ _char2 = text[i];
+ } else if (/\s/.test(text[i])) {
+ _char2 = "";
+ } else {
+ _char2 = "?";
+ }
+
+ var fontChar = font.chars[_char2] || {};
+ var fontKerning = font.kernings[_char2];
+ drawCharacter(this, font, x, y, fontChar || {});
+ var kerning = fontKerning && fontKerning[text[i + 1]] ? fontKerning[text[i + 1]] : 0;
+ x += kerning + (fontChar.xadvance || defaultCharWidth);
+ }
+}
+
+function splitLines(font, text, maxWidth) {
+ var words = text.split(" ");
+ var lines = [];
+ var currentLine = [];
+ var longestLine = 0;
+ words.forEach(function (word) {
+ var line = [].concat((0, _toConsumableArray2["default"])(currentLine), [word]).join(" ");
+ var length = (0, _measureText.measureText)(font, line);
+
+ if (length <= maxWidth) {
+ if (length > longestLine) {
+ longestLine = length;
+ }
+
+ currentLine.push(word);
+ } else {
+ lines.push(currentLine);
+ currentLine = [word];
+ }
+ });
+ lines.push(currentLine);
+ return {
+ lines: lines,
+ longestLine: longestLine
+ };
+}
+
+function loadPages(Jimp, dir, pages) {
+ var newPages = pages.map(function (page) {
+ return Jimp.read(dir + "/" + page);
+ });
+ return Promise.all(newPages);
+}
+
+var dir = process.env.DIRNAME || "".concat(__dirname, "/../");
+
+var _default = function _default() {
+ return {
+ constants: {
+ measureText: _measureText.measureText,
+ measureTextHeight: _measureText.measureTextHeight,
+ FONT_SANS_8_BLACK: _path["default"].join(dir, "fonts/open-sans/open-sans-8-black/open-sans-8-black.fnt"),
+ FONT_SANS_10_BLACK: _path["default"].join(dir, "fonts/open-sans/open-sans-10-black/open-sans-10-black.fnt"),
+ FONT_SANS_12_BLACK: _path["default"].join(dir, "fonts/open-sans/open-sans-12-black/open-sans-12-black.fnt"),
+ FONT_SANS_14_BLACK: _path["default"].join(dir, "fonts/open-sans/open-sans-14-black/open-sans-14-black.fnt"),
+ FONT_SANS_16_BLACK: _path["default"].join(dir, "fonts/open-sans/open-sans-16-black/open-sans-16-black.fnt"),
+ FONT_SANS_32_BLACK: _path["default"].join(dir, "fonts/open-sans/open-sans-32-black/open-sans-32-black.fnt"),
+ FONT_SANS_64_BLACK: _path["default"].join(dir, "fonts/open-sans/open-sans-64-black/open-sans-64-black.fnt"),
+ FONT_SANS_128_BLACK: _path["default"].join(dir, "fonts/open-sans/open-sans-128-black/open-sans-128-black.fnt"),
+ FONT_SANS_8_WHITE: _path["default"].join(dir, "fonts/open-sans/open-sans-8-white/open-sans-8-white.fnt"),
+ FONT_SANS_16_WHITE: _path["default"].join(dir, "fonts/open-sans/open-sans-16-white/open-sans-16-white.fnt"),
+ FONT_SANS_32_WHITE: _path["default"].join(dir, "fonts/open-sans/open-sans-32-white/open-sans-32-white.fnt"),
+ FONT_SANS_64_WHITE: _path["default"].join(dir, "fonts/open-sans/open-sans-64-white/open-sans-64-white.fnt"),
+ FONT_SANS_128_WHITE: _path["default"].join(dir, "fonts/open-sans/open-sans-128-white/open-sans-128-white.fnt"),
+
+ /**
+ * Loads a bitmap font from a file
+ * @param {string} file the file path of a .fnt file
+ * @param {function(Error, Jimp)} cb (optional) a function to call when the font is loaded
+ * @returns {Promise} a promise
+ */
+ loadFont: function loadFont(file, cb) {
+ var _this = this;
+
+ if (typeof file !== "string") return _utils.throwError.call(this, "file must be a string", cb);
+ return new Promise(function (resolve, reject) {
+ cb = cb || function (err, font) {
+ if (err) reject(err);else resolve(font);
+ };
+
+ (0, _loadBmfont["default"])(file, function (err, font) {
+ var chars = {};
+ var kernings = {};
+
+ if (err) {
+ return _utils.throwError.call(_this, err, cb);
+ }
+
+ for (var i = 0; i < font.chars.length; i++) {
+ chars[String.fromCharCode(font.chars[i].id)] = font.chars[i];
+ }
+
+ for (var _i = 0; _i < font.kernings.length; _i++) {
+ var firstString = String.fromCharCode(font.kernings[_i].first);
+ kernings[firstString] = kernings[firstString] || {};
+ kernings[firstString][String.fromCharCode(font.kernings[_i].second)] = font.kernings[_i].amount;
+ }
+
+ loadPages(_this, _path["default"].dirname(file), font.pages).then(function (pages) {
+ cb(null, {
+ chars: chars,
+ kernings: kernings,
+ pages: pages,
+ common: font.common,
+ info: font.info
+ });
+ });
+ });
+ });
+ }
+ },
+ "class": {
+ /**
+ * Draws a text on a image on a given boundary
+ * @param {Jimp} font a bitmap font loaded from `Jimp.loadFont` command
+ * @param {number} x the x position to start drawing the text
+ * @param {number} y the y position to start drawing the text
+ * @param {any} text the text to draw (string or object with `text`, `alignmentX`, and/or `alignmentY`)
+ * @param {number} maxWidth (optional) the boundary width to draw in
+ * @param {number} maxHeight (optional) the boundary height to draw in
+ * @param {function(Error, Jimp)} cb (optional) a function to call when the text is written
+ * @returns {Jimp} this for chaining of methods
+ */
+ print: function print(font, x, y, text, maxWidth, maxHeight, cb) {
+ var _this2 = this;
+
+ if (typeof maxWidth === "function" && typeof cb === "undefined") {
+ cb = maxWidth;
+ maxWidth = Infinity;
+ }
+
+ if (typeof maxWidth === "undefined") {
+ maxWidth = Infinity;
+ }
+
+ if (typeof maxHeight === "function" && typeof cb === "undefined") {
+ cb = maxHeight;
+ maxHeight = Infinity;
+ }
+
+ if (typeof maxHeight === "undefined") {
+ maxHeight = Infinity;
+ }
+
+ if ((0, _typeof2["default"])(font) !== "object") {
+ return _utils.throwError.call(this, "font must be a Jimp loadFont", cb);
+ }
+
+ if (typeof x !== "number" || typeof y !== "number" || typeof maxWidth !== "number") {
+ return _utils.throwError.call(this, "x, y and maxWidth must be numbers", cb);
+ }
+
+ if (typeof maxWidth !== "number") {
+ return _utils.throwError.call(this, "maxWidth must be a number", cb);
+ }
+
+ if (typeof maxHeight !== "number") {
+ return _utils.throwError.call(this, "maxHeight must be a number", cb);
+ }
+
+ var alignmentX;
+ var alignmentY;
+
+ if ((0, _typeof2["default"])(text) === "object" && text.text !== null && text.text !== undefined) {
+ alignmentX = text.alignmentX || this.constructor.HORIZONTAL_ALIGN_LEFT;
+ alignmentY = text.alignmentY || this.constructor.VERTICAL_ALIGN_TOP;
+ var _text = text;
+ text = _text.text;
+ } else {
+ alignmentX = this.constructor.HORIZONTAL_ALIGN_LEFT;
+ alignmentY = this.constructor.VERTICAL_ALIGN_TOP;
+ text = text.toString();
+ }
+
+ if (maxHeight !== Infinity && alignmentY === this.constructor.VERTICAL_ALIGN_BOTTOM) {
+ y += maxHeight - (0, _measureText.measureTextHeight)(font, text, maxWidth);
+ } else if (maxHeight !== Infinity && alignmentY === this.constructor.VERTICAL_ALIGN_MIDDLE) {
+ y += maxHeight / 2 - (0, _measureText.measureTextHeight)(font, text, maxWidth) / 2;
+ }
+
+ var defaultCharWidth = Object.entries(font.chars)[0][1].xadvance;
+
+ var _splitLines = splitLines(font, text, maxWidth),
+ lines = _splitLines.lines,
+ longestLine = _splitLines.longestLine;
+
+ lines.forEach(function (line) {
+ var lineString = line.join(" ");
+ var alignmentWidth = xOffsetBasedOnAlignment(_this2.constructor, font, lineString, maxWidth, alignmentX);
+ printText.call(_this2, font, x + alignmentWidth, y, lineString, defaultCharWidth);
+ y += font.common.lineHeight;
+ });
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, this, {
+ x: x + longestLine,
+ y: y
+ });
+ }
+
+ return this;
+ }
+ }
+ };
+};
+
+exports["default"] = _default;
+module.exports = exports.default;
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-print/dist/index.js.map b/node_modules/@jimp/plugin-print/dist/index.js.map
new file mode 100644
index 00000000..05413275
--- /dev/null
+++ b/node_modules/@jimp/plugin-print/dist/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/index.js"],"names":["xOffsetBasedOnAlignment","constants","font","line","maxWidth","alignment","HORIZONTAL_ALIGN_LEFT","HORIZONTAL_ALIGN_CENTER","drawCharacter","image","x","y","char","width","height","characterPage","pages","page","blit","xoffset","yoffset","printText","text","defaultCharWidth","i","length","chars","test","fontChar","fontKerning","kernings","kerning","xadvance","splitLines","words","split","lines","currentLine","longestLine","forEach","word","join","push","loadPages","Jimp","dir","newPages","map","read","Promise","all","process","env","DIRNAME","__dirname","measureText","measureTextHeight","FONT_SANS_8_BLACK","Path","FONT_SANS_10_BLACK","FONT_SANS_12_BLACK","FONT_SANS_14_BLACK","FONT_SANS_16_BLACK","FONT_SANS_32_BLACK","FONT_SANS_64_BLACK","FONT_SANS_128_BLACK","FONT_SANS_8_WHITE","FONT_SANS_16_WHITE","FONT_SANS_32_WHITE","FONT_SANS_64_WHITE","FONT_SANS_128_WHITE","loadFont","file","cb","throwError","call","resolve","reject","err","String","fromCharCode","id","firstString","first","second","amount","dirname","then","common","info","print","maxHeight","Infinity","alignmentX","alignmentY","undefined","constructor","VERTICAL_ALIGN_TOP","toString","VERTICAL_ALIGN_BOTTOM","VERTICAL_ALIGN_MIDDLE","Object","entries","lineString","alignmentWidth","lineHeight"],"mappings":"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","sourcesContent":["import Path from \"path\";\nimport bMFont from \"load-bmfont\";\nimport { isNodePattern, throwError } from \"@jimp/utils\";\nimport { measureText, measureTextHeight } from \"./measure-text\";\n\nfunction xOffsetBasedOnAlignment(constants, font, line, maxWidth, alignment) {\n if (alignment === constants.HORIZONTAL_ALIGN_LEFT) {\n return 0;\n }\n\n if (alignment === constants.HORIZONTAL_ALIGN_CENTER) {\n return (maxWidth - measureText(font, line)) / 2;\n }\n\n return maxWidth - measureText(font, line);\n}\n\nfunction drawCharacter(image, font, x, y, char) {\n if (char.width > 0 && char.height > 0) {\n const characterPage = font.pages[char.page];\n\n image.blit(\n characterPage,\n x + char.xoffset,\n y + char.yoffset,\n char.x,\n char.y,\n char.width,\n char.height\n );\n }\n\n return image;\n}\n\nfunction printText(font, x, y, text, defaultCharWidth) {\n for (let i = 0; i < text.length; i++) {\n let char;\n\n if (font.chars[text[i]]) {\n char = text[i];\n } else if (/\\s/.test(text[i])) {\n char = \"\";\n } else {\n char = \"?\";\n }\n\n const fontChar = font.chars[char] || {};\n const fontKerning = font.kernings[char];\n\n drawCharacter(this, font, x, y, fontChar || {});\n\n const kerning =\n fontKerning && fontKerning[text[i + 1]] ? fontKerning[text[i + 1]] : 0;\n\n x += kerning + (fontChar.xadvance || defaultCharWidth);\n }\n}\n\nfunction splitLines(font, text, maxWidth) {\n const words = text.split(\" \");\n const lines = [];\n let currentLine = [];\n let longestLine = 0;\n\n words.forEach((word) => {\n const line = [...currentLine, word].join(\" \");\n const length = measureText(font, line);\n\n if (length <= maxWidth) {\n if (length > longestLine) {\n longestLine = length;\n }\n\n currentLine.push(word);\n } else {\n lines.push(currentLine);\n currentLine = [word];\n }\n });\n\n lines.push(currentLine);\n\n return {\n lines,\n longestLine,\n };\n}\n\nfunction loadPages(Jimp, dir, pages) {\n const newPages = pages.map((page) => {\n return Jimp.read(dir + \"/\" + page);\n });\n\n return Promise.all(newPages);\n}\n\nconst dir = process.env.DIRNAME || `${__dirname}/../`;\n\nexport default () => ({\n constants: {\n measureText,\n measureTextHeight,\n FONT_SANS_8_BLACK: Path.join(\n dir,\n \"fonts/open-sans/open-sans-8-black/open-sans-8-black.fnt\"\n ),\n FONT_SANS_10_BLACK: Path.join(\n dir,\n \"fonts/open-sans/open-sans-10-black/open-sans-10-black.fnt\"\n ),\n FONT_SANS_12_BLACK: Path.join(\n dir,\n \"fonts/open-sans/open-sans-12-black/open-sans-12-black.fnt\"\n ),\n FONT_SANS_14_BLACK: Path.join(\n dir,\n \"fonts/open-sans/open-sans-14-black/open-sans-14-black.fnt\"\n ),\n FONT_SANS_16_BLACK: Path.join(\n dir,\n \"fonts/open-sans/open-sans-16-black/open-sans-16-black.fnt\"\n ),\n FONT_SANS_32_BLACK: Path.join(\n dir,\n \"fonts/open-sans/open-sans-32-black/open-sans-32-black.fnt\"\n ),\n FONT_SANS_64_BLACK: Path.join(\n dir,\n \"fonts/open-sans/open-sans-64-black/open-sans-64-black.fnt\"\n ),\n FONT_SANS_128_BLACK: Path.join(\n dir,\n \"fonts/open-sans/open-sans-128-black/open-sans-128-black.fnt\"\n ),\n\n FONT_SANS_8_WHITE: Path.join(\n dir,\n \"fonts/open-sans/open-sans-8-white/open-sans-8-white.fnt\"\n ),\n FONT_SANS_16_WHITE: Path.join(\n dir,\n \"fonts/open-sans/open-sans-16-white/open-sans-16-white.fnt\"\n ),\n FONT_SANS_32_WHITE: Path.join(\n dir,\n \"fonts/open-sans/open-sans-32-white/open-sans-32-white.fnt\"\n ),\n FONT_SANS_64_WHITE: Path.join(\n dir,\n \"fonts/open-sans/open-sans-64-white/open-sans-64-white.fnt\"\n ),\n FONT_SANS_128_WHITE: Path.join(\n dir,\n \"fonts/open-sans/open-sans-128-white/open-sans-128-white.fnt\"\n ),\n\n /**\n * Loads a bitmap font from a file\n * @param {string} file the file path of a .fnt file\n * @param {function(Error, Jimp)} cb (optional) a function to call when the font is loaded\n * @returns {Promise} a promise\n */\n loadFont(file, cb) {\n if (typeof file !== \"string\")\n return throwError.call(this, \"file must be a string\", cb);\n\n return new Promise((resolve, reject) => {\n cb =\n cb ||\n function (err, font) {\n if (err) reject(err);\n else resolve(font);\n };\n\n bMFont(file, (err, font) => {\n const chars = {};\n const kernings = {};\n\n if (err) {\n return throwError.call(this, err, cb);\n }\n\n for (let i = 0; i < font.chars.length; i++) {\n chars[String.fromCharCode(font.chars[i].id)] = font.chars[i];\n }\n\n for (let i = 0; i < font.kernings.length; i++) {\n const firstString = String.fromCharCode(font.kernings[i].first);\n kernings[firstString] = kernings[firstString] || {};\n kernings[firstString][\n String.fromCharCode(font.kernings[i].second)\n ] = font.kernings[i].amount;\n }\n\n loadPages(this, Path.dirname(file), font.pages).then((pages) => {\n cb(null, {\n chars,\n kernings,\n pages,\n common: font.common,\n info: font.info,\n });\n });\n });\n });\n },\n },\n\n class: {\n /**\n * Draws a text on a image on a given boundary\n * @param {Jimp} font a bitmap font loaded from `Jimp.loadFont` command\n * @param {number} x the x position to start drawing the text\n * @param {number} y the y position to start drawing the text\n * @param {any} text the text to draw (string or object with `text`, `alignmentX`, and/or `alignmentY`)\n * @param {number} maxWidth (optional) the boundary width to draw in\n * @param {number} maxHeight (optional) the boundary height to draw in\n * @param {function(Error, Jimp)} cb (optional) a function to call when the text is written\n * @returns {Jimp} this for chaining of methods\n */\n print(font, x, y, text, maxWidth, maxHeight, cb) {\n if (typeof maxWidth === \"function\" && typeof cb === \"undefined\") {\n cb = maxWidth;\n maxWidth = Infinity;\n }\n\n if (typeof maxWidth === \"undefined\") {\n maxWidth = Infinity;\n }\n\n if (typeof maxHeight === \"function\" && typeof cb === \"undefined\") {\n cb = maxHeight;\n maxHeight = Infinity;\n }\n\n if (typeof maxHeight === \"undefined\") {\n maxHeight = Infinity;\n }\n\n if (typeof font !== \"object\") {\n return throwError.call(this, \"font must be a Jimp loadFont\", cb);\n }\n\n if (\n typeof x !== \"number\" ||\n typeof y !== \"number\" ||\n typeof maxWidth !== \"number\"\n ) {\n return throwError.call(this, \"x, y and maxWidth must be numbers\", cb);\n }\n\n if (typeof maxWidth !== \"number\") {\n return throwError.call(this, \"maxWidth must be a number\", cb);\n }\n\n if (typeof maxHeight !== \"number\") {\n return throwError.call(this, \"maxHeight must be a number\", cb);\n }\n\n let alignmentX;\n let alignmentY;\n\n if (\n typeof text === \"object\" &&\n text.text !== null &&\n text.text !== undefined\n ) {\n alignmentX = text.alignmentX || this.constructor.HORIZONTAL_ALIGN_LEFT;\n alignmentY = text.alignmentY || this.constructor.VERTICAL_ALIGN_TOP;\n ({ text } = text);\n } else {\n alignmentX = this.constructor.HORIZONTAL_ALIGN_LEFT;\n alignmentY = this.constructor.VERTICAL_ALIGN_TOP;\n text = text.toString();\n }\n\n if (\n maxHeight !== Infinity &&\n alignmentY === this.constructor.VERTICAL_ALIGN_BOTTOM\n ) {\n y += maxHeight - measureTextHeight(font, text, maxWidth);\n } else if (\n maxHeight !== Infinity &&\n alignmentY === this.constructor.VERTICAL_ALIGN_MIDDLE\n ) {\n y += maxHeight / 2 - measureTextHeight(font, text, maxWidth) / 2;\n }\n\n const defaultCharWidth = Object.entries(font.chars)[0][1].xadvance;\n const { lines, longestLine } = splitLines(font, text, maxWidth);\n\n lines.forEach((line) => {\n const lineString = line.join(\" \");\n const alignmentWidth = xOffsetBasedOnAlignment(\n this.constructor,\n font,\n lineString,\n maxWidth,\n alignmentX\n );\n\n printText.call(\n this,\n font,\n x + alignmentWidth,\n y,\n lineString,\n defaultCharWidth\n );\n\n y += font.common.lineHeight;\n });\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this, { x: x + longestLine, y });\n }\n\n return this;\n },\n },\n});\n"],"file":"index.js"}
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-print/dist/measure-text.js b/node_modules/@jimp/plugin-print/dist/measure-text.js
new file mode 100644
index 00000000..42939fae
--- /dev/null
+++ b/node_modules/@jimp/plugin-print/dist/measure-text.js
@@ -0,0 +1,41 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.measureText = measureText;
+exports.measureTextHeight = measureTextHeight;
+
+function measureText(font, text) {
+ var x = 0;
+
+ for (var i = 0; i < text.length; i++) {
+ if (font.chars[text[i]]) {
+ var kerning = font.kernings[text[i]] && font.kernings[text[i]][text[i + 1]] ? font.kernings[text[i]][text[i + 1]] : 0;
+ x += (font.chars[text[i]].xadvance || 0) + kerning;
+ }
+ }
+
+ return x;
+}
+
+function measureTextHeight(font, text, maxWidth) {
+ var words = text.split(" ");
+ var line = "";
+ var textTotalHeight = font.common.lineHeight;
+
+ for (var n = 0; n < words.length; n++) {
+ var testLine = line + words[n] + " ";
+ var testWidth = measureText(font, testLine);
+
+ if (testWidth > maxWidth && n > 0) {
+ textTotalHeight += font.common.lineHeight;
+ line = words[n] + " ";
+ } else {
+ line = testLine;
+ }
+ }
+
+ return textTotalHeight;
+}
+//# sourceMappingURL=measure-text.js.map
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-print/dist/measure-text.js.map b/node_modules/@jimp/plugin-print/dist/measure-text.js.map
new file mode 100644
index 00000000..724d20aa
--- /dev/null
+++ b/node_modules/@jimp/plugin-print/dist/measure-text.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/measure-text.js"],"names":["measureText","font","text","x","i","length","chars","kerning","kernings","xadvance","measureTextHeight","maxWidth","words","split","line","textTotalHeight","common","lineHeight","n","testLine","testWidth"],"mappings":";;;;;;;;AAAO,SAASA,WAAT,CAAqBC,IAArB,EAA2BC,IAA3B,EAAiC;AACtC,MAAIC,CAAC,GAAG,CAAR;;AAEA,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGF,IAAI,CAACG,MAAzB,EAAiCD,CAAC,EAAlC,EAAsC;AACpC,QAAIH,IAAI,CAACK,KAAL,CAAWJ,IAAI,CAACE,CAAD,CAAf,CAAJ,EAAyB;AACvB,UAAMG,OAAO,GACXN,IAAI,CAACO,QAAL,CAAcN,IAAI,CAACE,CAAD,CAAlB,KAA0BH,IAAI,CAACO,QAAL,CAAcN,IAAI,CAACE,CAAD,CAAlB,EAAuBF,IAAI,CAACE,CAAC,GAAG,CAAL,CAA3B,CAA1B,GACIH,IAAI,CAACO,QAAL,CAAcN,IAAI,CAACE,CAAD,CAAlB,EAAuBF,IAAI,CAACE,CAAC,GAAG,CAAL,CAA3B,CADJ,GAEI,CAHN;AAKAD,MAAAA,CAAC,IAAI,CAACF,IAAI,CAACK,KAAL,CAAWJ,IAAI,CAACE,CAAD,CAAf,EAAoBK,QAApB,IAAgC,CAAjC,IAAsCF,OAA3C;AACD;AACF;;AAED,SAAOJ,CAAP;AACD;;AAEM,SAASO,iBAAT,CAA2BT,IAA3B,EAAiCC,IAAjC,EAAuCS,QAAvC,EAAiD;AACtD,MAAMC,KAAK,GAAGV,IAAI,CAACW,KAAL,CAAW,GAAX,CAAd;AACA,MAAIC,IAAI,GAAG,EAAX;AACA,MAAIC,eAAe,GAAGd,IAAI,CAACe,MAAL,CAAYC,UAAlC;;AAEA,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGN,KAAK,CAACP,MAA1B,EAAkCa,CAAC,EAAnC,EAAuC;AACrC,QAAMC,QAAQ,GAAGL,IAAI,GAAGF,KAAK,CAACM,CAAD,CAAZ,GAAkB,GAAnC;AACA,QAAME,SAAS,GAAGpB,WAAW,CAACC,IAAD,EAAOkB,QAAP,CAA7B;;AAEA,QAAIC,SAAS,GAAGT,QAAZ,IAAwBO,CAAC,GAAG,CAAhC,EAAmC;AACjCH,MAAAA,eAAe,IAAId,IAAI,CAACe,MAAL,CAAYC,UAA/B;AACAH,MAAAA,IAAI,GAAGF,KAAK,CAACM,CAAD,CAAL,GAAW,GAAlB;AACD,KAHD,MAGO;AACLJ,MAAAA,IAAI,GAAGK,QAAP;AACD;AACF;;AAED,SAAOJ,eAAP;AACD","sourcesContent":["export function measureText(font, text) {\n let x = 0;\n\n for (let i = 0; i < text.length; i++) {\n if (font.chars[text[i]]) {\n const kerning =\n font.kernings[text[i]] && font.kernings[text[i]][text[i + 1]]\n ? font.kernings[text[i]][text[i + 1]]\n : 0;\n\n x += (font.chars[text[i]].xadvance || 0) + kerning;\n }\n }\n\n return x;\n}\n\nexport function measureTextHeight(font, text, maxWidth) {\n const words = text.split(\" \");\n let line = \"\";\n let textTotalHeight = font.common.lineHeight;\n\n for (let n = 0; n < words.length; n++) {\n const testLine = line + words[n] + \" \";\n const testWidth = measureText(font, testLine);\n\n if (testWidth > maxWidth && n > 0) {\n textTotalHeight += font.common.lineHeight;\n line = words[n] + \" \";\n } else {\n line = testLine;\n }\n }\n\n return textTotalHeight;\n}\n"],"file":"measure-text.js"}
\ No newline at end of file
diff --git a/project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/Apache License.txt b/node_modules/@jimp/plugin-print/fonts/open-sans/Apache License.txt
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/Apache License.txt
rename to node_modules/@jimp/plugin-print/fonts/open-sans/Apache License.txt
diff --git a/project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-10-black/open-sans-10-black.fnt b/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-10-black/open-sans-10-black.fnt
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-10-black/open-sans-10-black.fnt
rename to node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-10-black/open-sans-10-black.fnt
diff --git a/project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-10-black/open-sans-10-black.png b/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-10-black/open-sans-10-black.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-10-black/open-sans-10-black.png
rename to node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-10-black/open-sans-10-black.png
diff --git a/project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-12-black/open-sans-12-black.fnt b/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-12-black/open-sans-12-black.fnt
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-12-black/open-sans-12-black.fnt
rename to node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-12-black/open-sans-12-black.fnt
diff --git a/project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-12-black/open-sans-12-black.png b/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-12-black/open-sans-12-black.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-12-black/open-sans-12-black.png
rename to node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-12-black/open-sans-12-black.png
diff --git a/project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-128-black/open-sans-128-black.fnt b/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-128-black/open-sans-128-black.fnt
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-128-black/open-sans-128-black.fnt
rename to node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-128-black/open-sans-128-black.fnt
diff --git a/project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-128-black/open-sans-128-black.png b/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-128-black/open-sans-128-black.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-128-black/open-sans-128-black.png
rename to node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-128-black/open-sans-128-black.png
diff --git a/project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-128-white/open-sans-128-white.fnt b/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-128-white/open-sans-128-white.fnt
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-128-white/open-sans-128-white.fnt
rename to node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-128-white/open-sans-128-white.fnt
diff --git a/project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-128-white/open-sans-128-white.png b/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-128-white/open-sans-128-white.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-128-white/open-sans-128-white.png
rename to node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-128-white/open-sans-128-white.png
diff --git a/project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-14-black/open-sans-14-black.fnt b/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-14-black/open-sans-14-black.fnt
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-14-black/open-sans-14-black.fnt
rename to node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-14-black/open-sans-14-black.fnt
diff --git a/project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-14-black/open-sans-14-black.png b/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-14-black/open-sans-14-black.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-14-black/open-sans-14-black.png
rename to node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-14-black/open-sans-14-black.png
diff --git a/project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-16-black/open-sans-16-black.fnt b/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-16-black/open-sans-16-black.fnt
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-16-black/open-sans-16-black.fnt
rename to node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-16-black/open-sans-16-black.fnt
diff --git a/project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-16-black/open-sans-16-black.png b/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-16-black/open-sans-16-black.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-16-black/open-sans-16-black.png
rename to node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-16-black/open-sans-16-black.png
diff --git a/project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-16-white/open-sans-16-white.fnt b/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-16-white/open-sans-16-white.fnt
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-16-white/open-sans-16-white.fnt
rename to node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-16-white/open-sans-16-white.fnt
diff --git a/project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-16-white/open-sans-16-white.png b/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-16-white/open-sans-16-white.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-16-white/open-sans-16-white.png
rename to node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-16-white/open-sans-16-white.png
diff --git a/project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-32-black/open-sans-32-black.fnt b/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-32-black/open-sans-32-black.fnt
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-32-black/open-sans-32-black.fnt
rename to node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-32-black/open-sans-32-black.fnt
diff --git a/project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-32-black/open-sans-32-black.png b/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-32-black/open-sans-32-black.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-32-black/open-sans-32-black.png
rename to node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-32-black/open-sans-32-black.png
diff --git a/project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-32-white/open-sans-32-white.fnt b/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-32-white/open-sans-32-white.fnt
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-32-white/open-sans-32-white.fnt
rename to node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-32-white/open-sans-32-white.fnt
diff --git a/project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-32-white/open-sans-32-white.png b/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-32-white/open-sans-32-white.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-32-white/open-sans-32-white.png
rename to node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-32-white/open-sans-32-white.png
diff --git a/project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-64-black/open-sans-64-black.fnt b/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-64-black/open-sans-64-black.fnt
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-64-black/open-sans-64-black.fnt
rename to node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-64-black/open-sans-64-black.fnt
diff --git a/project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-64-black/open-sans-64-black.png b/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-64-black/open-sans-64-black.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-64-black/open-sans-64-black.png
rename to node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-64-black/open-sans-64-black.png
diff --git a/project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-64-white/open-sans-64-white.fnt b/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-64-white/open-sans-64-white.fnt
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-64-white/open-sans-64-white.fnt
rename to node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-64-white/open-sans-64-white.fnt
diff --git a/project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-64-white/open-sans-64-white.png b/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-64-white/open-sans-64-white.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-64-white/open-sans-64-white.png
rename to node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-64-white/open-sans-64-white.png
diff --git a/project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-8-black/open-sans-8-black.fnt b/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-8-black/open-sans-8-black.fnt
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-8-black/open-sans-8-black.fnt
rename to node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-8-black/open-sans-8-black.fnt
diff --git a/project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-8-black/open-sans-8-black.png b/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-8-black/open-sans-8-black.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-8-black/open-sans-8-black.png
rename to node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-8-black/open-sans-8-black.png
diff --git a/project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-8-white/open-sans-8-white.fnt b/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-8-white/open-sans-8-white.fnt
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-8-white/open-sans-8-white.fnt
rename to node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-8-white/open-sans-8-white.fnt
diff --git a/project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-8-white/open-sans-8-white.png b/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-8-white/open-sans-8-white.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-8-white/open-sans-8-white.png
rename to node_modules/@jimp/plugin-print/fonts/open-sans/open-sans-8-white/open-sans-8-white.png
diff --git a/node_modules/@jimp/plugin-print/index.d.ts b/node_modules/@jimp/plugin-print/index.d.ts
new file mode 100644
index 00000000..c5c9cd3e
--- /dev/null
+++ b/node_modules/@jimp/plugin-print/index.d.ts
@@ -0,0 +1,125 @@
+import { GenericCallback, ImageCallback } from "@jimp/core";
+
+export interface FontChar {
+ id: number;
+ x: number;
+ y: number;
+ width: number;
+ height: number;
+ xoffset: number;
+ yoffset: number;
+ xadvance: number;
+ page: number;
+ chnl: number;
+}
+
+export interface FontInfo {
+ face: string;
+ size: number;
+ bold: number;
+ italic: number;
+ charset: string;
+ unicode: number;
+ stretchH: number;
+ smooth: number;
+ aa: number;
+ padding: [number, number, number, number];
+ spacing: [number, number];
+}
+
+export interface FontCommon {
+ lineHeight: number;
+ base: number;
+ scaleW: number;
+ scaleH: number;
+ pages: number;
+ packed: number;
+ alphaChnl: number;
+ redChnl: number;
+ greenChnl: number;
+ blueChnl: number;
+}
+
+export interface Font {
+ chars: {
+ [char: string]: FontChar;
+ };
+ kernings: {
+ [firstString: string]: {
+ [secondString: string]: number;
+ };
+ };
+ pages: string[];
+ common: FontCommon;
+ info: FontInfo;
+}
+
+type PrintableText =
+ | any
+ | {
+ text: string;
+ alignmentX: number;
+ alignmentY: number;
+ };
+
+interface PrintClass {
+ // Text methods
+ print(
+ font: Font,
+ x: number,
+ y: number,
+ text: PrintableText,
+ cb?: ImageCallback
+ ): this;
+ print(
+ font: Font,
+ x: number,
+ y: number,
+ text: PrintableText,
+ maxWidth?: number,
+ cb?: ImageCallback
+ ): this;
+ print(
+ font: Font,
+ x: number,
+ y: number,
+ text: PrintableText,
+ maxWidth?: number,
+ maxHeight?: number,
+ cb?: ImageCallback
+ ): this;
+}
+
+interface Print {
+ constants: {
+ measureText(font: Font, text: PrintableText): number;
+ measureTextHeight(
+ font: Font,
+ text: PrintableText,
+ maxWidth: number
+ ): number;
+
+ // Font locations
+ FONT_SANS_8_BLACK: string;
+ FONT_SANS_10_BLACK: string;
+ FONT_SANS_12_BLACK: string;
+ FONT_SANS_14_BLACK: string;
+ FONT_SANS_16_BLACK: string;
+ FONT_SANS_32_BLACK: string;
+ FONT_SANS_64_BLACK: string;
+ FONT_SANS_128_BLACK: string;
+
+ FONT_SANS_8_WHITE: string;
+ FONT_SANS_16_WHITE: string;
+ FONT_SANS_32_WHITE: string;
+ FONT_SANS_64_WHITE: string;
+ FONT_SANS_128_WHITE: string;
+
+ loadFont(file: string): Promise;
+ loadFont(file: string, cb: GenericCallback): Promise;
+ };
+
+ class: PrintClass;
+}
+
+export default function (): Print;
diff --git a/node_modules/@jimp/plugin-print/package.json b/node_modules/@jimp/plugin-print/package.json
new file mode 100644
index 00000000..e443c64c
--- /dev/null
+++ b/node_modules/@jimp/plugin-print/package.json
@@ -0,0 +1,40 @@
+{
+ "name": "@jimp/plugin-print",
+ "version": "0.16.13",
+ "description": "print an image.",
+ "main": "dist/index.js",
+ "module": "es/index.js",
+ "types": "index.d.ts",
+ "scripts": {
+ "test": "cross-env BABEL_ENV=test mocha --require @babel/register",
+ "test:watch": "npm run test -- --reporter min --watch",
+ "test:coverage": "nyc npm run test",
+ "build": "npm run build:node:production && npm run build:module",
+ "build:watch": "npm run build:node:debug -- -- --watch --verbose",
+ "build:debug": "npm run build:node:debug",
+ "build:module": "cross-env BABEL_ENV=module babel src -d es --source-maps --config-file ../../babel.config.js",
+ "build:node": "babel src -d dist --source-maps --config-file ../../babel.config.js",
+ "build:node:debug": "cross-env BABEL_ENV=development npm run build:node",
+ "build:node:production": "cross-env BABEL_ENV=production npm run build:node"
+ },
+ "author": "",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13",
+ "load-bmfont": "^1.4.0"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5",
+ "@jimp/plugin-blit": ">=0.3.5"
+ },
+ "devDependencies": {
+ "@jimp/custom": "^0.16.13",
+ "@jimp/plugin-blit": "^0.16.13",
+ "@jimp/test-utils": "^0.16.13"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "gitHead": "9eec86086634329a072901dca3a800b850548572"
+}
diff --git a/node_modules/@jimp/plugin-print/src/index.js b/node_modules/@jimp/plugin-print/src/index.js
new file mode 100644
index 00000000..df71548b
--- /dev/null
+++ b/node_modules/@jimp/plugin-print/src/index.js
@@ -0,0 +1,322 @@
+import Path from "path";
+import bMFont from "load-bmfont";
+import { isNodePattern, throwError } from "@jimp/utils";
+import { measureText, measureTextHeight } from "./measure-text";
+
+function xOffsetBasedOnAlignment(constants, font, line, maxWidth, alignment) {
+ if (alignment === constants.HORIZONTAL_ALIGN_LEFT) {
+ return 0;
+ }
+
+ if (alignment === constants.HORIZONTAL_ALIGN_CENTER) {
+ return (maxWidth - measureText(font, line)) / 2;
+ }
+
+ return maxWidth - measureText(font, line);
+}
+
+function drawCharacter(image, font, x, y, char) {
+ if (char.width > 0 && char.height > 0) {
+ const characterPage = font.pages[char.page];
+
+ image.blit(
+ characterPage,
+ x + char.xoffset,
+ y + char.yoffset,
+ char.x,
+ char.y,
+ char.width,
+ char.height
+ );
+ }
+
+ return image;
+}
+
+function printText(font, x, y, text, defaultCharWidth) {
+ for (let i = 0; i < text.length; i++) {
+ let char;
+
+ if (font.chars[text[i]]) {
+ char = text[i];
+ } else if (/\s/.test(text[i])) {
+ char = "";
+ } else {
+ char = "?";
+ }
+
+ const fontChar = font.chars[char] || {};
+ const fontKerning = font.kernings[char];
+
+ drawCharacter(this, font, x, y, fontChar || {});
+
+ const kerning =
+ fontKerning && fontKerning[text[i + 1]] ? fontKerning[text[i + 1]] : 0;
+
+ x += kerning + (fontChar.xadvance || defaultCharWidth);
+ }
+}
+
+function splitLines(font, text, maxWidth) {
+ const words = text.split(" ");
+ const lines = [];
+ let currentLine = [];
+ let longestLine = 0;
+
+ words.forEach((word) => {
+ const line = [...currentLine, word].join(" ");
+ const length = measureText(font, line);
+
+ if (length <= maxWidth) {
+ if (length > longestLine) {
+ longestLine = length;
+ }
+
+ currentLine.push(word);
+ } else {
+ lines.push(currentLine);
+ currentLine = [word];
+ }
+ });
+
+ lines.push(currentLine);
+
+ return {
+ lines,
+ longestLine,
+ };
+}
+
+function loadPages(Jimp, dir, pages) {
+ const newPages = pages.map((page) => {
+ return Jimp.read(dir + "/" + page);
+ });
+
+ return Promise.all(newPages);
+}
+
+const dir = process.env.DIRNAME || `${__dirname}/../`;
+
+export default () => ({
+ constants: {
+ measureText,
+ measureTextHeight,
+ FONT_SANS_8_BLACK: Path.join(
+ dir,
+ "fonts/open-sans/open-sans-8-black/open-sans-8-black.fnt"
+ ),
+ FONT_SANS_10_BLACK: Path.join(
+ dir,
+ "fonts/open-sans/open-sans-10-black/open-sans-10-black.fnt"
+ ),
+ FONT_SANS_12_BLACK: Path.join(
+ dir,
+ "fonts/open-sans/open-sans-12-black/open-sans-12-black.fnt"
+ ),
+ FONT_SANS_14_BLACK: Path.join(
+ dir,
+ "fonts/open-sans/open-sans-14-black/open-sans-14-black.fnt"
+ ),
+ FONT_SANS_16_BLACK: Path.join(
+ dir,
+ "fonts/open-sans/open-sans-16-black/open-sans-16-black.fnt"
+ ),
+ FONT_SANS_32_BLACK: Path.join(
+ dir,
+ "fonts/open-sans/open-sans-32-black/open-sans-32-black.fnt"
+ ),
+ FONT_SANS_64_BLACK: Path.join(
+ dir,
+ "fonts/open-sans/open-sans-64-black/open-sans-64-black.fnt"
+ ),
+ FONT_SANS_128_BLACK: Path.join(
+ dir,
+ "fonts/open-sans/open-sans-128-black/open-sans-128-black.fnt"
+ ),
+
+ FONT_SANS_8_WHITE: Path.join(
+ dir,
+ "fonts/open-sans/open-sans-8-white/open-sans-8-white.fnt"
+ ),
+ FONT_SANS_16_WHITE: Path.join(
+ dir,
+ "fonts/open-sans/open-sans-16-white/open-sans-16-white.fnt"
+ ),
+ FONT_SANS_32_WHITE: Path.join(
+ dir,
+ "fonts/open-sans/open-sans-32-white/open-sans-32-white.fnt"
+ ),
+ FONT_SANS_64_WHITE: Path.join(
+ dir,
+ "fonts/open-sans/open-sans-64-white/open-sans-64-white.fnt"
+ ),
+ FONT_SANS_128_WHITE: Path.join(
+ dir,
+ "fonts/open-sans/open-sans-128-white/open-sans-128-white.fnt"
+ ),
+
+ /**
+ * Loads a bitmap font from a file
+ * @param {string} file the file path of a .fnt file
+ * @param {function(Error, Jimp)} cb (optional) a function to call when the font is loaded
+ * @returns {Promise} a promise
+ */
+ loadFont(file, cb) {
+ if (typeof file !== "string")
+ return throwError.call(this, "file must be a string", cb);
+
+ return new Promise((resolve, reject) => {
+ cb =
+ cb ||
+ function (err, font) {
+ if (err) reject(err);
+ else resolve(font);
+ };
+
+ bMFont(file, (err, font) => {
+ const chars = {};
+ const kernings = {};
+
+ if (err) {
+ return throwError.call(this, err, cb);
+ }
+
+ for (let i = 0; i < font.chars.length; i++) {
+ chars[String.fromCharCode(font.chars[i].id)] = font.chars[i];
+ }
+
+ for (let i = 0; i < font.kernings.length; i++) {
+ const firstString = String.fromCharCode(font.kernings[i].first);
+ kernings[firstString] = kernings[firstString] || {};
+ kernings[firstString][
+ String.fromCharCode(font.kernings[i].second)
+ ] = font.kernings[i].amount;
+ }
+
+ loadPages(this, Path.dirname(file), font.pages).then((pages) => {
+ cb(null, {
+ chars,
+ kernings,
+ pages,
+ common: font.common,
+ info: font.info,
+ });
+ });
+ });
+ });
+ },
+ },
+
+ class: {
+ /**
+ * Draws a text on a image on a given boundary
+ * @param {Jimp} font a bitmap font loaded from `Jimp.loadFont` command
+ * @param {number} x the x position to start drawing the text
+ * @param {number} y the y position to start drawing the text
+ * @param {any} text the text to draw (string or object with `text`, `alignmentX`, and/or `alignmentY`)
+ * @param {number} maxWidth (optional) the boundary width to draw in
+ * @param {number} maxHeight (optional) the boundary height to draw in
+ * @param {function(Error, Jimp)} cb (optional) a function to call when the text is written
+ * @returns {Jimp} this for chaining of methods
+ */
+ print(font, x, y, text, maxWidth, maxHeight, cb) {
+ if (typeof maxWidth === "function" && typeof cb === "undefined") {
+ cb = maxWidth;
+ maxWidth = Infinity;
+ }
+
+ if (typeof maxWidth === "undefined") {
+ maxWidth = Infinity;
+ }
+
+ if (typeof maxHeight === "function" && typeof cb === "undefined") {
+ cb = maxHeight;
+ maxHeight = Infinity;
+ }
+
+ if (typeof maxHeight === "undefined") {
+ maxHeight = Infinity;
+ }
+
+ if (typeof font !== "object") {
+ return throwError.call(this, "font must be a Jimp loadFont", cb);
+ }
+
+ if (
+ typeof x !== "number" ||
+ typeof y !== "number" ||
+ typeof maxWidth !== "number"
+ ) {
+ return throwError.call(this, "x, y and maxWidth must be numbers", cb);
+ }
+
+ if (typeof maxWidth !== "number") {
+ return throwError.call(this, "maxWidth must be a number", cb);
+ }
+
+ if (typeof maxHeight !== "number") {
+ return throwError.call(this, "maxHeight must be a number", cb);
+ }
+
+ let alignmentX;
+ let alignmentY;
+
+ if (
+ typeof text === "object" &&
+ text.text !== null &&
+ text.text !== undefined
+ ) {
+ alignmentX = text.alignmentX || this.constructor.HORIZONTAL_ALIGN_LEFT;
+ alignmentY = text.alignmentY || this.constructor.VERTICAL_ALIGN_TOP;
+ ({ text } = text);
+ } else {
+ alignmentX = this.constructor.HORIZONTAL_ALIGN_LEFT;
+ alignmentY = this.constructor.VERTICAL_ALIGN_TOP;
+ text = text.toString();
+ }
+
+ if (
+ maxHeight !== Infinity &&
+ alignmentY === this.constructor.VERTICAL_ALIGN_BOTTOM
+ ) {
+ y += maxHeight - measureTextHeight(font, text, maxWidth);
+ } else if (
+ maxHeight !== Infinity &&
+ alignmentY === this.constructor.VERTICAL_ALIGN_MIDDLE
+ ) {
+ y += maxHeight / 2 - measureTextHeight(font, text, maxWidth) / 2;
+ }
+
+ const defaultCharWidth = Object.entries(font.chars)[0][1].xadvance;
+ const { lines, longestLine } = splitLines(font, text, maxWidth);
+
+ lines.forEach((line) => {
+ const lineString = line.join(" ");
+ const alignmentWidth = xOffsetBasedOnAlignment(
+ this.constructor,
+ font,
+ lineString,
+ maxWidth,
+ alignmentX
+ );
+
+ printText.call(
+ this,
+ font,
+ x + alignmentWidth,
+ y,
+ lineString,
+ defaultCharWidth
+ );
+
+ y += font.common.lineHeight;
+ });
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this, { x: x + longestLine, y });
+ }
+
+ return this;
+ },
+ },
+});
diff --git a/node_modules/@jimp/plugin-print/src/measure-text.js b/node_modules/@jimp/plugin-print/src/measure-text.js
new file mode 100644
index 00000000..a86dfbe3
--- /dev/null
+++ b/node_modules/@jimp/plugin-print/src/measure-text.js
@@ -0,0 +1,36 @@
+export function measureText(font, text) {
+ let x = 0;
+
+ for (let i = 0; i < text.length; i++) {
+ if (font.chars[text[i]]) {
+ const kerning =
+ font.kernings[text[i]] && font.kernings[text[i]][text[i + 1]]
+ ? font.kernings[text[i]][text[i + 1]]
+ : 0;
+
+ x += (font.chars[text[i]].xadvance || 0) + kerning;
+ }
+ }
+
+ return x;
+}
+
+export function measureTextHeight(font, text, maxWidth) {
+ const words = text.split(" ");
+ let line = "";
+ let textTotalHeight = font.common.lineHeight;
+
+ for (let n = 0; n < words.length; n++) {
+ const testLine = line + words[n] + " ";
+ const testWidth = measureText(font, testLine);
+
+ if (testWidth > maxWidth && n > 0) {
+ textTotalHeight += font.common.lineHeight;
+ line = words[n] + " ";
+ } else {
+ line = testLine;
+ }
+ }
+
+ return textTotalHeight;
+}
diff --git a/project starter code/node_modules/@jimp/plugin-print/test/images/SANS_16_BLACK-positioned.png b/node_modules/@jimp/plugin-print/test/images/SANS_16_BLACK-positioned.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/test/images/SANS_16_BLACK-positioned.png
rename to node_modules/@jimp/plugin-print/test/images/SANS_16_BLACK-positioned.png
diff --git a/project starter code/node_modules/@jimp/plugin-print/test/images/SANS_16_BLACK.png b/node_modules/@jimp/plugin-print/test/images/SANS_16_BLACK.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/test/images/SANS_16_BLACK.png
rename to node_modules/@jimp/plugin-print/test/images/SANS_16_BLACK.png
diff --git a/project starter code/node_modules/@jimp/plugin-print/test/images/SANS_16_WHITE.png b/node_modules/@jimp/plugin-print/test/images/SANS_16_WHITE.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/test/images/SANS_16_WHITE.png
rename to node_modules/@jimp/plugin-print/test/images/SANS_16_WHITE.png
diff --git a/project starter code/node_modules/@jimp/plugin-print/test/images/SANS_32_BLACK.png b/node_modules/@jimp/plugin-print/test/images/SANS_32_BLACK.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/test/images/SANS_32_BLACK.png
rename to node_modules/@jimp/plugin-print/test/images/SANS_32_BLACK.png
diff --git a/project starter code/node_modules/@jimp/plugin-print/test/images/SANS_32_WHITE.png b/node_modules/@jimp/plugin-print/test/images/SANS_32_WHITE.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/test/images/SANS_32_WHITE.png
rename to node_modules/@jimp/plugin-print/test/images/SANS_32_WHITE.png
diff --git a/project starter code/node_modules/@jimp/plugin-print/test/images/SANS_64_BLACK.png b/node_modules/@jimp/plugin-print/test/images/SANS_64_BLACK.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/test/images/SANS_64_BLACK.png
rename to node_modules/@jimp/plugin-print/test/images/SANS_64_BLACK.png
diff --git a/project starter code/node_modules/@jimp/plugin-print/test/images/SANS_64_WHITE.png b/node_modules/@jimp/plugin-print/test/images/SANS_64_WHITE.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/test/images/SANS_64_WHITE.png
rename to node_modules/@jimp/plugin-print/test/images/SANS_64_WHITE.png
diff --git a/project starter code/node_modules/@jimp/plugin-print/test/images/SANS_8_BLACK.png b/node_modules/@jimp/plugin-print/test/images/SANS_8_BLACK.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/test/images/SANS_8_BLACK.png
rename to node_modules/@jimp/plugin-print/test/images/SANS_8_BLACK.png
diff --git a/project starter code/node_modules/@jimp/plugin-print/test/images/SANS_8_WHITE.png b/node_modules/@jimp/plugin-print/test/images/SANS_8_WHITE.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/test/images/SANS_8_WHITE.png
rename to node_modules/@jimp/plugin-print/test/images/SANS_8_WHITE.png
diff --git a/project starter code/node_modules/@jimp/plugin-print/test/images/bottom-aligned-y.png b/node_modules/@jimp/plugin-print/test/images/bottom-aligned-y.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/test/images/bottom-aligned-y.png
rename to node_modules/@jimp/plugin-print/test/images/bottom-aligned-y.png
diff --git a/project starter code/node_modules/@jimp/plugin-print/test/images/bottom-aligned.png b/node_modules/@jimp/plugin-print/test/images/bottom-aligned.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/test/images/bottom-aligned.png
rename to node_modules/@jimp/plugin-print/test/images/bottom-aligned.png
diff --git a/project starter code/node_modules/@jimp/plugin-print/test/images/center-aligned.png b/node_modules/@jimp/plugin-print/test/images/center-aligned.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/test/images/center-aligned.png
rename to node_modules/@jimp/plugin-print/test/images/center-aligned.png
diff --git a/project starter code/node_modules/@jimp/plugin-print/test/images/left-aligned.png b/node_modules/@jimp/plugin-print/test/images/left-aligned.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/test/images/left-aligned.png
rename to node_modules/@jimp/plugin-print/test/images/left-aligned.png
diff --git a/project starter code/node_modules/@jimp/plugin-print/test/images/middle-aligned-y.png b/node_modules/@jimp/plugin-print/test/images/middle-aligned-y.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/test/images/middle-aligned-y.png
rename to node_modules/@jimp/plugin-print/test/images/middle-aligned-y.png
diff --git a/project starter code/node_modules/@jimp/plugin-print/test/images/middle-aligned.png b/node_modules/@jimp/plugin-print/test/images/middle-aligned.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/test/images/middle-aligned.png
rename to node_modules/@jimp/plugin-print/test/images/middle-aligned.png
diff --git a/project starter code/node_modules/@jimp/plugin-print/test/images/print-number.png b/node_modules/@jimp/plugin-print/test/images/print-number.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/test/images/print-number.png
rename to node_modules/@jimp/plugin-print/test/images/print-number.png
diff --git a/project starter code/node_modules/@jimp/plugin-print/test/images/right-aligned.png b/node_modules/@jimp/plugin-print/test/images/right-aligned.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/test/images/right-aligned.png
rename to node_modules/@jimp/plugin-print/test/images/right-aligned.png
diff --git a/project starter code/node_modules/@jimp/plugin-print/test/images/spacing.png b/node_modules/@jimp/plugin-print/test/images/spacing.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/test/images/spacing.png
rename to node_modules/@jimp/plugin-print/test/images/spacing.png
diff --git a/project starter code/node_modules/@jimp/plugin-print/test/images/unknown-char-test.png b/node_modules/@jimp/plugin-print/test/images/unknown-char-test.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-print/test/images/unknown-char-test.png
rename to node_modules/@jimp/plugin-print/test/images/unknown-char-test.png
diff --git a/node_modules/@jimp/plugin-print/test/print.test.js b/node_modules/@jimp/plugin-print/test/print.test.js
new file mode 100644
index 00000000..b0292a3c
--- /dev/null
+++ b/node_modules/@jimp/plugin-print/test/print.test.js
@@ -0,0 +1,284 @@
+/* eslint key-spacing: ["error", { "align": "value" }] */
+
+import { Jimp, getTestDir, hasOwnProp } from "@jimp/test-utils";
+import configure from "@jimp/custom";
+import blit from "@jimp/plugin-blit";
+
+import print from "../src";
+
+const jimp = configure({ plugins: [print, blit] }, Jimp);
+
+async function createTextImage(
+ width,
+ height,
+ font,
+ { x = 0, y = 0, text, maxWidth, maxHeight }
+) {
+ const loadedFont = await jimp.loadFont(font);
+ const image = await Jimp.create(width, height, 0xffffffff);
+
+ return image.print(loadedFont, x, y, text, maxWidth, maxHeight);
+}
+
+describe("Write text over image", function () {
+ this.timeout(30000);
+
+ const fontDefs = {
+ SANS_8_BLACK: { w: 28, h: 28, bg: 0xffffffff },
+
+ SANS_16_BLACK: { w: 54, h: 54, bg: 0xffffffff },
+ SANS_32_BLACK: { w: 114, h: 114, bg: 0xffffffff },
+ SANS_64_BLACK: { w: 220, h: 220, bg: 0xffffffff },
+
+ SANS_8_WHITE: { w: 28, h: 28, bg: 0x000000ff },
+
+ SANS_16_WHITE: { w: 54, h: 54, bg: 0x000000ff },
+ SANS_32_WHITE: { w: 114, h: 114, bg: 0x000000ff },
+ SANS_64_WHITE: { w: 220, h: 220, bg: 0x000000ff },
+ };
+
+ for (const fontName in fontDefs)
+ if (hasOwnProp(fontDefs, fontName))
+ ((fontName, conf) => {
+ it("Jimp preset " + fontName + " bitmap font", async () => {
+ const font = await jimp.loadFont(Jimp["FONT_" + fontName]);
+ const expected =
+ getTestDir(__dirname) + "/images/" + fontName + ".png";
+
+ const expectedImg = await Jimp.read(expected);
+ const image = await Jimp.create(conf.w, conf.h, conf.bg);
+
+ image
+ .print(font, 0, 0, "This is only a test.", image.bitmap.width)
+ .bitmap.data.should.be.deepEqual(expectedImg.bitmap.data);
+ });
+ })(fontName, fontDefs[fontName]);
+
+ it("Jimp preset SANS_16_BLACK bitmap font positioned", async () => {
+ const font = await jimp.loadFont(Jimp.FONT_SANS_16_BLACK);
+ const expected =
+ getTestDir(__dirname) + "/images/SANS_16_BLACK-positioned.png";
+ const expectedImg = await Jimp.read(expected);
+ const image = await Jimp.create("300", "100", 0xff8800ff);
+
+ image
+ .print(font, 150, 50, "This is only a test.", 100)
+ .bitmap.data.should.be.deepEqual(expectedImg.bitmap.data);
+ });
+
+ it("Jimp loads font from URL", async () => {
+ const font = await Jimp.loadFont(
+ "https://raw.githubusercontent.com/jimp-dev/jimp/master/packages/plugin-print/fonts/open-sans/open-sans-16-black/open-sans-16-black.fnt"
+ );
+ const expected =
+ getTestDir(__dirname) + "/images/SANS_16_BLACK-positioned.png";
+ const expectedImg = await Jimp.read(expected);
+ const image = await Jimp.create("300", "100", 0xff8800ff);
+
+ image
+ .print(font, 150, 50, "This is only a test.", 100)
+ .bitmap.data.should.be.deepEqual(expectedImg.bitmap.data);
+ });
+
+ it("Jimp renders ? for unknown characters", async () => {
+ const font = await jimp.loadFont(Jimp.FONT_SANS_16_BLACK);
+
+ const expected = getTestDir(__dirname) + "/images/unknown-char-test.png";
+ const expectedImg = await Jimp.read(expected);
+ const image = await Jimp.read("300", "100", 0xff8800ff);
+
+ image
+ .print(font, 0, 0, "ツ ツ ツ", 100)
+ .bitmap.data.should.be.deepEqual(expectedImg.bitmap.data);
+ });
+
+ it("Jimp can print numbers too", async () => {
+ const font = await Jimp.loadFont(Jimp.FONT_SANS_16_BLACK);
+
+ const expected = getTestDir(__dirname) + "/images/print-number.png";
+ const expectedImg = await Jimp.read(expected);
+ const image = await Jimp.read("300", "100", 0xff8800ff);
+
+ image
+ .print(font, 0, 0, 12345678, 100)
+ .bitmap.data.should.be.deepEqual(expectedImg.bitmap.data);
+ });
+
+ it("left-align text by default", async () => {
+ const expectedImage = await Jimp.read(
+ getTestDir(__dirname) + "/images/left-aligned.png"
+ );
+ const textImage = await createTextImage(320, 240, Jimp.FONT_SANS_16_BLACK, {
+ text: "This is only a test.",
+
+ maxWidth: 100,
+ });
+
+ expectedImage.bitmap.data.should.be.deepEqual(textImage.bitmap.data);
+ });
+
+ it("left-align text by default when passing object", async () => {
+ const expectedImage = await Jimp.read(
+ getTestDir(__dirname) + "/images/left-aligned.png"
+ );
+ const textImage = await createTextImage(320, 240, Jimp.FONT_SANS_16_BLACK, {
+ text: { text: "This is only a test." },
+
+ maxWidth: 100,
+ });
+
+ expectedImage.bitmap.data.should.be.deepEqual(textImage.bitmap.data);
+ });
+
+ it("left-align text when passing object with alignmentX", async () => {
+ const expectedImage = await Jimp.read(
+ getTestDir(__dirname) + "/images/left-aligned.png"
+ );
+ const textImage = await createTextImage(320, 240, Jimp.FONT_SANS_16_BLACK, {
+ text: {
+ text: "This is only a test.",
+
+ alignmentX: Jimp.HORIZONTAL_ALIGN_LEFT,
+ },
+ maxWidth: 100,
+ });
+
+ expectedImage.bitmap.data.should.be.deepEqual(textImage.bitmap.data);
+ });
+
+ it("center-align text when passing object with alignmentX", async () => {
+ const expectedImage = await Jimp.read(
+ getTestDir(__dirname) + "/images/center-aligned.png"
+ );
+ const textImage = await createTextImage(320, 240, Jimp.FONT_SANS_16_BLACK, {
+ text: {
+ text: "This is only a test.",
+
+ alignmentX: Jimp.HORIZONTAL_ALIGN_CENTER,
+ },
+ maxWidth: 100,
+ });
+
+ expectedImage.bitmap.data.should.be.deepEqual(textImage.bitmap.data);
+ });
+
+ it("right-align text when passing object with alignmentX", async () => {
+ const expectedImage = await Jimp.read(
+ getTestDir(__dirname) + "/images/right-aligned.png"
+ );
+ const textImage = await createTextImage(320, 240, Jimp.FONT_SANS_16_BLACK, {
+ text: {
+ text: "This is only a test.",
+
+ alignmentX: Jimp.HORIZONTAL_ALIGN_RIGHT,
+ },
+ maxWidth: 100,
+ });
+
+ expectedImage.bitmap.data.should.be.deepEqual(textImage.bitmap.data);
+ });
+
+ it("middle-align text when passing object with alignmentY", async () => {
+ const expectedImage = await Jimp.read(
+ getTestDir(__dirname) + "/images/middle-aligned.png"
+ );
+ const textImage = await createTextImage(320, 240, Jimp.FONT_SANS_16_BLACK, {
+ text: {
+ text: "This is only a test.",
+
+ alignmentY: Jimp.VERTICAL_ALIGN_MIDDLE,
+ },
+ maxWidth: 100,
+
+ maxHeight: 240,
+ });
+
+ expectedImage.bitmap.data.should.be.deepEqual(textImage.bitmap.data);
+ });
+
+ it("middle-align text when passing object with alignmentY can offset y", async () => {
+ const expectedImage = await Jimp.read(
+ getTestDir(__dirname) + "/images/middle-aligned-y.png"
+ );
+ const textImage = await createTextImage(320, 240, Jimp.FONT_SANS_16_BLACK, {
+ y: 50,
+
+ text: {
+ text: "This is only a test.",
+
+ alignmentY: Jimp.VERTICAL_ALIGN_MIDDLE,
+ },
+ maxWidth: 100,
+
+ maxHeight: 240,
+ });
+
+ expectedImage.bitmap.data.should.be.deepEqual(textImage.bitmap.data);
+ });
+
+ it("bottom-align text when passing object with alignmentY", async () => {
+ const expectedImage = await Jimp.read(
+ getTestDir(__dirname) + "/images/bottom-aligned.png"
+ );
+ const textImage = await createTextImage(320, 240, Jimp.FONT_SANS_16_BLACK, {
+ text: {
+ text: "This is only a test.",
+
+ alignmentY: Jimp.VERTICAL_ALIGN_BOTTOM,
+ },
+ maxWidth: 100,
+
+ maxHeight: 240,
+ });
+
+ expectedImage.bitmap.data.should.be.deepEqual(textImage.bitmap.data);
+ });
+
+ it("bottom-align text when passing object with alignmentY offset y", async () => {
+ const expectedImage = await Jimp.read(
+ getTestDir(__dirname) + "/images/bottom-aligned-y.png"
+ );
+ const textImage = await createTextImage(320, 240, Jimp.FONT_SANS_16_BLACK, {
+ y: 100,
+
+ text: {
+ text: "This is only a test.",
+
+ alignmentY: Jimp.VERTICAL_ALIGN_BOTTOM,
+ },
+ maxWidth: 100,
+
+ maxHeight: 100,
+ });
+
+ expectedImage.bitmap.data.should.be.deepEqual(textImage.bitmap.data);
+ });
+
+ it("exposes print y position in cb", async () => {
+ const expectedImage = await Jimp.read(
+ getTestDir(__dirname) + "/images/spacing.png"
+ );
+
+ const loadedFont = await jimp.loadFont(Jimp.FONT_SANS_16_BLACK);
+ const image = await Jimp.create(500, 500, 0xffffffff);
+
+ image.print(
+ loadedFont,
+ 0,
+ 0,
+ "One two three four fix six seven eight nine ten eleven twelve",
+ 250,
+ (err, image, { x, y }) => {
+ image.print(
+ loadedFont,
+ x,
+ y + 50,
+ "thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty",
+ 250
+ );
+ }
+ );
+
+ expectedImage.bitmap.data.should.be.deepEqual(image.bitmap.data);
+ });
+});
diff --git a/node_modules/@jimp/plugin-resize/CHANGELOG.md b/node_modules/@jimp/plugin-resize/CHANGELOG.md
new file mode 100644
index 00000000..4eb3193f
--- /dev/null
+++ b/node_modules/@jimp/plugin-resize/CHANGELOG.md
@@ -0,0 +1,35 @@
+# v0.16.3 (Sat Feb 04 2023)
+
+#### ⚠️ Pushed to `master`
+
+- upgrade prettier ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 1
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+---
+
+# v0.11.0 (Fri May 15 2020)
+
+#### 🚀 Enhancement
+
+- Removed Core-JS as a dependency. [#882](https://github.com/oliver-moran/jimp/pull/882) ([@EricRabil](https://github.com/EricRabil))
+
+#### Authors: 1
+
+- Eric Rabil ([@EricRabil](https://github.com/EricRabil))
+
+---
+
+# v0.9.3 (Tue Nov 26 2019)
+
+#### 🐛 Bug Fix
+
+- `@jimp/cli`, `@jimp/core`, `@jimp/custom`, `jimp`, `@jimp/plugin-blit`, `@jimp/plugin-blur`, `@jimp/plugin-circle`, `@jimp/plugin-color`, `@jimp/plugin-contain`, `@jimp/plugin-cover`, `@jimp/plugin-crop`, `@jimp/plugin-displace`, `@jimp/plugin-dither`, `@jimp/plugin-fisheye`, `@jimp/plugin-flip`, `@jimp/plugin-gaussian`, `@jimp/plugin-invert`, `@jimp/plugin-mask`, `@jimp/plugin-normalize`, `@jimp/plugin-print`, `@jimp/plugin-resize`, `@jimp/plugin-rotate`, `@jimp/plugin-scale`, `@jimp/plugin-shadow`, `@jimp/plugin-threshold`, `@jimp/plugins`, `@jimp/test-utils`, `@jimp/bmp`, `@jimp/gif`, `@jimp/jpeg`, `@jimp/png`, `@jimp/tiff`, `@jimp/types`, `@jimp/utils`
+ - Fix regeneratorRuntime errors [#815](https://github.com/oliver-moran/jimp/pull/815) ([@crutchcorn](https://github.com/crutchcorn) [@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 2
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+- Corbin Crutchley ([@crutchcorn](https://github.com/crutchcorn))
diff --git a/project starter code/node_modules/@jimp/plugin-resize/LICENSE b/node_modules/@jimp/plugin-resize/LICENSE
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-resize/LICENSE
rename to node_modules/@jimp/plugin-resize/LICENSE
diff --git a/node_modules/@jimp/plugin-resize/README.md b/node_modules/@jimp/plugin-resize/README.md
new file mode 100644
index 00000000..a74dbdff
--- /dev/null
+++ b/node_modules/@jimp/plugin-resize/README.md
@@ -0,0 +1,61 @@
+
+
+
@jimp/plugin-resize
+
Resize an image.
+
+
+Resizes the image to a set width and height using a 2-pass bilinear algorithm/
+
+## Usage
+
+- @param {number} w the width to resize the image to (or Jimp.AUTO)
+- @param {number} h the height to resize the image to (or Jimp.AUTO)
+- @param {string} mode (optional) a scaling method (e.g. Jimp.RESIZE_BEZIER)
+- @param {function(Error, Jimp)} cb (optional) a callback for when complete
+
+```js
+import jimp from "jimp";
+
+async function main() {
+ // Read the image.
+ const image = await jimp.read("test/image.png");
+
+ // Resize the image to width 150 and auto height.
+ await image.resize(150, jimp.AUTO);
+
+ // Save and overwrite the image
+ await image.writeAsync("test/image.png");
+}
+
+main();
+```
+
+## Auto
+
+`Jimp.AUTO` can be passes to either the height or width and jimp will scale the image accordingly. `Jimp.AUTO` cannot be both height and width.
+
+```js
+// resize the height to 250 and scale the width accordingly
+image.resize(Jimp.AUTO, 250);
+// resize the width to 250 and scale the height accordingly
+image.resize(250, Jimp.AUTO);
+```
+
+### Resize modes
+
+The default resizing algorithm uses a bilinear method.
+
+Optionally, the following constants can be passed to choose a particular resizing algorithm:
+
+```js
+Jimp.RESIZE_NEAREST_NEIGHBOR;
+Jimp.RESIZE_BILINEAR;
+Jimp.RESIZE_BICUBIC;
+Jimp.RESIZE_HERMITE;
+Jimp.RESIZE_BEZIER;
+```
+
+```js
+image.resize(250, 250, Jimp.RESIZE_BEZIER);
+```
diff --git a/node_modules/@jimp/plugin-resize/dist/index.js b/node_modules/@jimp/plugin-resize/dist/index.js
new file mode 100644
index 00000000..5facc581
--- /dev/null
+++ b/node_modules/@jimp/plugin-resize/dist/index.js
@@ -0,0 +1,96 @@
+"use strict";
+
+var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports["default"] = void 0;
+
+var _utils = require("@jimp/utils");
+
+var _resize = _interopRequireDefault(require("./modules/resize"));
+
+var _resize2 = _interopRequireDefault(require("./modules/resize2"));
+
+var _default = function _default() {
+ return {
+ constants: {
+ RESIZE_NEAREST_NEIGHBOR: "nearestNeighbor",
+ RESIZE_BILINEAR: "bilinearInterpolation",
+ RESIZE_BICUBIC: "bicubicInterpolation",
+ RESIZE_HERMITE: "hermiteInterpolation",
+ RESIZE_BEZIER: "bezierInterpolation"
+ },
+ "class": {
+ /**
+ * Resizes the image to a set width and height using a 2-pass bilinear algorithm
+ * @param {number} w the width to resize the image to (or Jimp.AUTO)
+ * @param {number} h the height to resize the image to (or Jimp.AUTO)
+ * @param {string} mode (optional) a scaling method (e.g. Jimp.RESIZE_BEZIER)
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+ resize: function resize(w, h, mode, cb) {
+ if (typeof w !== "number" || typeof h !== "number") {
+ return _utils.throwError.call(this, "w and h must be numbers", cb);
+ }
+
+ if (typeof mode === "function" && typeof cb === "undefined") {
+ cb = mode;
+ mode = null;
+ }
+
+ if (w === this.constructor.AUTO && h === this.constructor.AUTO) {
+ return _utils.throwError.call(this, "w and h cannot both be set to auto", cb);
+ }
+
+ if (w === this.constructor.AUTO) {
+ w = this.bitmap.width * (h / this.bitmap.height);
+ }
+
+ if (h === this.constructor.AUTO) {
+ h = this.bitmap.height * (w / this.bitmap.width);
+ }
+
+ if (w < 0 || h < 0) {
+ return _utils.throwError.call(this, "w and h must be positive numbers", cb);
+ } // round inputs
+
+
+ w = Math.round(w);
+ h = Math.round(h);
+
+ if (typeof _resize2["default"][mode] === "function") {
+ var dst = {
+ data: Buffer.alloc(w * h * 4),
+ width: w,
+ height: h
+ };
+
+ _resize2["default"][mode](this.bitmap, dst);
+
+ this.bitmap = dst;
+ } else {
+ var image = this;
+ var resize = new _resize["default"](this.bitmap.width, this.bitmap.height, w, h, true, true, function (buffer) {
+ image.bitmap.data = Buffer.from(buffer);
+ image.bitmap.width = w;
+ image.bitmap.height = h;
+ });
+ resize.resize(this.bitmap.data);
+ }
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ }
+ }
+ };
+};
+
+exports["default"] = _default;
+module.exports = exports.default;
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-resize/dist/index.js.map b/node_modules/@jimp/plugin-resize/dist/index.js.map
new file mode 100644
index 00000000..4f6cf9b8
--- /dev/null
+++ b/node_modules/@jimp/plugin-resize/dist/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/index.js"],"names":["constants","RESIZE_NEAREST_NEIGHBOR","RESIZE_BILINEAR","RESIZE_BICUBIC","RESIZE_HERMITE","RESIZE_BEZIER","resize","w","h","mode","cb","throwError","call","constructor","AUTO","bitmap","width","height","Math","round","Resize2","dst","data","Buffer","alloc","image","Resize","buffer","from"],"mappings":"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","sourcesContent":["import { throwError, isNodePattern } from \"@jimp/utils\";\n\nimport Resize from \"./modules/resize\";\nimport Resize2 from \"./modules/resize2\";\n\nexport default () => ({\n constants: {\n RESIZE_NEAREST_NEIGHBOR: \"nearestNeighbor\",\n RESIZE_BILINEAR: \"bilinearInterpolation\",\n RESIZE_BICUBIC: \"bicubicInterpolation\",\n RESIZE_HERMITE: \"hermiteInterpolation\",\n RESIZE_BEZIER: \"bezierInterpolation\",\n },\n\n class: {\n /**\n * Resizes the image to a set width and height using a 2-pass bilinear algorithm\n * @param {number} w the width to resize the image to (or Jimp.AUTO)\n * @param {number} h the height to resize the image to (or Jimp.AUTO)\n * @param {string} mode (optional) a scaling method (e.g. Jimp.RESIZE_BEZIER)\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp} this for chaining of methods\n */\n resize(w, h, mode, cb) {\n if (typeof w !== \"number\" || typeof h !== \"number\") {\n return throwError.call(this, \"w and h must be numbers\", cb);\n }\n\n if (typeof mode === \"function\" && typeof cb === \"undefined\") {\n cb = mode;\n mode = null;\n }\n\n if (w === this.constructor.AUTO && h === this.constructor.AUTO) {\n return throwError.call(this, \"w and h cannot both be set to auto\", cb);\n }\n\n if (w === this.constructor.AUTO) {\n w = this.bitmap.width * (h / this.bitmap.height);\n }\n\n if (h === this.constructor.AUTO) {\n h = this.bitmap.height * (w / this.bitmap.width);\n }\n\n if (w < 0 || h < 0) {\n return throwError.call(this, \"w and h must be positive numbers\", cb);\n }\n\n // round inputs\n w = Math.round(w);\n h = Math.round(h);\n\n if (typeof Resize2[mode] === \"function\") {\n const dst = {\n data: Buffer.alloc(w * h * 4),\n width: w,\n height: h,\n };\n Resize2[mode](this.bitmap, dst);\n this.bitmap = dst;\n } else {\n const image = this;\n const resize = new Resize(\n this.bitmap.width,\n this.bitmap.height,\n w,\n h,\n true,\n true,\n (buffer) => {\n image.bitmap.data = Buffer.from(buffer);\n image.bitmap.width = w;\n image.bitmap.height = h;\n }\n );\n resize.resize(this.bitmap.data);\n }\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n },\n },\n});\n"],"file":"index.js"}
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-resize/dist/modules/resize.js b/node_modules/@jimp/plugin-resize/dist/modules/resize.js
new file mode 100644
index 00000000..05c89c0d
--- /dev/null
+++ b/node_modules/@jimp/plugin-resize/dist/modules/resize.js
@@ -0,0 +1,406 @@
+"use strict";
+
+// JavaScript Image Resizer (c) 2012 - Grant Galitz
+// Released to public domain 29 July 2013: https://github.com/grantgalitz/JS-Image-Resizer/issues/4
+function Resize(widthOriginal, heightOriginal, targetWidth, targetHeight, blendAlpha, interpolationPass, resizeCallback) {
+ this.widthOriginal = Math.abs(Math.floor(widthOriginal) || 0);
+ this.heightOriginal = Math.abs(Math.floor(heightOriginal) || 0);
+ this.targetWidth = Math.abs(Math.floor(targetWidth) || 0);
+ this.targetHeight = Math.abs(Math.floor(targetHeight) || 0);
+ this.colorChannels = blendAlpha ? 4 : 3;
+ this.interpolationPass = Boolean(interpolationPass);
+ this.resizeCallback = typeof resizeCallback === "function" ? resizeCallback : function () {};
+ this.targetWidthMultipliedByChannels = this.targetWidth * this.colorChannels;
+ this.originalWidthMultipliedByChannels = this.widthOriginal * this.colorChannels;
+ this.originalHeightMultipliedByChannels = this.heightOriginal * this.colorChannels;
+ this.widthPassResultSize = this.targetWidthMultipliedByChannels * this.heightOriginal;
+ this.finalResultSize = this.targetWidthMultipliedByChannels * this.targetHeight;
+ this.initialize();
+}
+
+Resize.prototype.initialize = function () {
+ // Perform some checks:
+ if (this.widthOriginal > 0 && this.heightOriginal > 0 && this.targetWidth > 0 && this.targetHeight > 0) {
+ this.configurePasses();
+ } else {
+ throw new Error("Invalid settings specified for the resizer.");
+ }
+};
+
+Resize.prototype.configurePasses = function () {
+ if (this.widthOriginal === this.targetWidth) {
+ // Bypass the width resizer pass:
+ this.resizeWidth = this.bypassResizer;
+ } else {
+ // Setup the width resizer pass:
+ this.ratioWeightWidthPass = this.widthOriginal / this.targetWidth;
+
+ if (this.ratioWeightWidthPass < 1 && this.interpolationPass) {
+ this.initializeFirstPassBuffers(true);
+ this.resizeWidth = this.colorChannels === 4 ? this.resizeWidthInterpolatedRGBA : this.resizeWidthInterpolatedRGB;
+ } else {
+ this.initializeFirstPassBuffers(false);
+ this.resizeWidth = this.colorChannels === 4 ? this.resizeWidthRGBA : this.resizeWidthRGB;
+ }
+ }
+
+ if (this.heightOriginal === this.targetHeight) {
+ // Bypass the height resizer pass:
+ this.resizeHeight = this.bypassResizer;
+ } else {
+ // Setup the height resizer pass:
+ this.ratioWeightHeightPass = this.heightOriginal / this.targetHeight;
+
+ if (this.ratioWeightHeightPass < 1 && this.interpolationPass) {
+ this.initializeSecondPassBuffers(true);
+ this.resizeHeight = this.resizeHeightInterpolated;
+ } else {
+ this.initializeSecondPassBuffers(false);
+ this.resizeHeight = this.colorChannels === 4 ? this.resizeHeightRGBA : this.resizeHeightRGB;
+ }
+ }
+};
+
+Resize.prototype._resizeWidthInterpolatedRGBChannels = function (buffer, fourthChannel) {
+ var channelsNum = fourthChannel ? 4 : 3;
+ var ratioWeight = this.ratioWeightWidthPass;
+ var outputBuffer = this.widthBuffer;
+ var weight = 0;
+ var finalOffset = 0;
+ var pixelOffset = 0;
+ var firstWeight = 0;
+ var secondWeight = 0;
+ var targetPosition; // Handle for only one interpolation input being valid for start calculation:
+
+ for (targetPosition = 0; weight < 1 / 3; targetPosition += channelsNum, weight += ratioWeight) {
+ for (finalOffset = targetPosition, pixelOffset = 0; finalOffset < this.widthPassResultSize; pixelOffset += this.originalWidthMultipliedByChannels, finalOffset += this.targetWidthMultipliedByChannels) {
+ outputBuffer[finalOffset] = buffer[pixelOffset];
+ outputBuffer[finalOffset + 1] = buffer[pixelOffset + 1];
+ outputBuffer[finalOffset + 2] = buffer[pixelOffset + 2];
+ if (fourthChannel) outputBuffer[finalOffset + 3] = buffer[pixelOffset + 3];
+ }
+ } // Adjust for overshoot of the last pass's counter:
+
+
+ weight -= 1 / 3;
+ var interpolationWidthSourceReadStop;
+
+ for (interpolationWidthSourceReadStop = this.widthOriginal - 1; weight < interpolationWidthSourceReadStop; targetPosition += channelsNum, weight += ratioWeight) {
+ // Calculate weightings:
+ secondWeight = weight % 1;
+ firstWeight = 1 - secondWeight; // Interpolate:
+
+ for (finalOffset = targetPosition, pixelOffset = Math.floor(weight) * channelsNum; finalOffset < this.widthPassResultSize; pixelOffset += this.originalWidthMultipliedByChannels, finalOffset += this.targetWidthMultipliedByChannels) {
+ outputBuffer[finalOffset + 0] = buffer[pixelOffset + 0] * firstWeight + buffer[pixelOffset + channelsNum + 0] * secondWeight;
+ outputBuffer[finalOffset + 1] = buffer[pixelOffset + 1] * firstWeight + buffer[pixelOffset + channelsNum + 1] * secondWeight;
+ outputBuffer[finalOffset + 2] = buffer[pixelOffset + 2] * firstWeight + buffer[pixelOffset + channelsNum + 2] * secondWeight;
+ if (fourthChannel) outputBuffer[finalOffset + 3] = buffer[pixelOffset + 3] * firstWeight + buffer[pixelOffset + channelsNum + 3] * secondWeight;
+ }
+ } // Handle for only one interpolation input being valid for end calculation:
+
+
+ for (interpolationWidthSourceReadStop = this.originalWidthMultipliedByChannels - channelsNum; targetPosition < this.targetWidthMultipliedByChannels; targetPosition += channelsNum) {
+ for (finalOffset = targetPosition, pixelOffset = interpolationWidthSourceReadStop; finalOffset < this.widthPassResultSize; pixelOffset += this.originalWidthMultipliedByChannels, finalOffset += this.targetWidthMultipliedByChannels) {
+ outputBuffer[finalOffset] = buffer[pixelOffset];
+ outputBuffer[finalOffset + 1] = buffer[pixelOffset + 1];
+ outputBuffer[finalOffset + 2] = buffer[pixelOffset + 2];
+ if (fourthChannel) outputBuffer[finalOffset + 3] = buffer[pixelOffset + 3];
+ }
+ }
+
+ return outputBuffer;
+};
+
+Resize.prototype._resizeWidthRGBChannels = function (buffer, fourthChannel) {
+ var channelsNum = fourthChannel ? 4 : 3;
+ var ratioWeight = this.ratioWeightWidthPass;
+ var ratioWeightDivisor = 1 / ratioWeight;
+ var nextLineOffsetOriginalWidth = this.originalWidthMultipliedByChannels - channelsNum + 1;
+ var nextLineOffsetTargetWidth = this.targetWidthMultipliedByChannels - channelsNum + 1;
+ var output = this.outputWidthWorkBench;
+ var outputBuffer = this.widthBuffer;
+ var trustworthyColorsCount = this.outputWidthWorkBenchOpaquePixelsCount;
+ var weight = 0;
+ var amountToNext = 0;
+ var actualPosition = 0;
+ var currentPosition = 0;
+ var line = 0;
+ var pixelOffset = 0;
+ var outputOffset = 0;
+ var multiplier = 1;
+ var r = 0;
+ var g = 0;
+ var b = 0;
+ var a = 0;
+
+ do {
+ for (line = 0; line < this.originalHeightMultipliedByChannels;) {
+ output[line++] = 0;
+ output[line++] = 0;
+ output[line++] = 0;
+
+ if (fourthChannel) {
+ output[line++] = 0;
+ trustworthyColorsCount[line / channelsNum - 1] = 0;
+ }
+ }
+
+ weight = ratioWeight;
+
+ do {
+ amountToNext = 1 + actualPosition - currentPosition;
+ multiplier = Math.min(weight, amountToNext);
+
+ for (line = 0, pixelOffset = actualPosition; line < this.originalHeightMultipliedByChannels; pixelOffset += nextLineOffsetOriginalWidth) {
+ r = buffer[pixelOffset];
+ g = buffer[++pixelOffset];
+ b = buffer[++pixelOffset];
+ a = fourthChannel ? buffer[++pixelOffset] : 255; // Ignore RGB values if pixel is completely transparent
+
+ output[line++] += (a ? r : 0) * multiplier;
+ output[line++] += (a ? g : 0) * multiplier;
+ output[line++] += (a ? b : 0) * multiplier;
+
+ if (fourthChannel) {
+ output[line++] += a * multiplier;
+ trustworthyColorsCount[line / channelsNum - 1] += a ? multiplier : 0;
+ }
+ }
+
+ if (weight >= amountToNext) {
+ actualPosition += channelsNum;
+ currentPosition = actualPosition;
+ weight -= amountToNext;
+ } else {
+ currentPosition += weight;
+ break;
+ }
+ } while (weight > 0 && actualPosition < this.originalWidthMultipliedByChannels);
+
+ for (line = 0, pixelOffset = outputOffset; line < this.originalHeightMultipliedByChannels; pixelOffset += nextLineOffsetTargetWidth) {
+ weight = fourthChannel ? trustworthyColorsCount[line / channelsNum] : 1;
+ multiplier = fourthChannel ? weight ? 1 / weight : 0 : ratioWeightDivisor;
+ outputBuffer[pixelOffset] = output[line++] * multiplier;
+ outputBuffer[++pixelOffset] = output[line++] * multiplier;
+ outputBuffer[++pixelOffset] = output[line++] * multiplier;
+ if (fourthChannel) outputBuffer[++pixelOffset] = output[line++] * ratioWeightDivisor;
+ }
+
+ outputOffset += channelsNum;
+ } while (outputOffset < this.targetWidthMultipliedByChannels);
+
+ return outputBuffer;
+};
+
+Resize.prototype._resizeHeightRGBChannels = function (buffer, fourthChannel) {
+ var ratioWeight = this.ratioWeightHeightPass;
+ var ratioWeightDivisor = 1 / ratioWeight;
+ var output = this.outputHeightWorkBench;
+ var outputBuffer = this.heightBuffer;
+ var trustworthyColorsCount = this.outputHeightWorkBenchOpaquePixelsCount;
+ var weight = 0;
+ var amountToNext = 0;
+ var actualPosition = 0;
+ var currentPosition = 0;
+ var pixelOffset = 0;
+ var outputOffset = 0;
+ var caret = 0;
+ var multiplier = 1;
+ var r = 0;
+ var g = 0;
+ var b = 0;
+ var a = 0;
+
+ do {
+ for (pixelOffset = 0; pixelOffset < this.targetWidthMultipliedByChannels;) {
+ output[pixelOffset++] = 0;
+ output[pixelOffset++] = 0;
+ output[pixelOffset++] = 0;
+
+ if (fourthChannel) {
+ output[pixelOffset++] = 0;
+ trustworthyColorsCount[pixelOffset / 4 - 1] = 0;
+ }
+ }
+
+ weight = ratioWeight;
+
+ do {
+ amountToNext = 1 + actualPosition - currentPosition;
+ multiplier = Math.min(weight, amountToNext);
+ caret = actualPosition;
+
+ for (pixelOffset = 0; pixelOffset < this.targetWidthMultipliedByChannels;) {
+ r = buffer[caret++];
+ g = buffer[caret++];
+ b = buffer[caret++];
+ a = fourthChannel ? buffer[caret++] : 255; // Ignore RGB values if pixel is completely transparent
+
+ output[pixelOffset++] += (a ? r : 0) * multiplier;
+ output[pixelOffset++] += (a ? g : 0) * multiplier;
+ output[pixelOffset++] += (a ? b : 0) * multiplier;
+
+ if (fourthChannel) {
+ output[pixelOffset++] += a * multiplier;
+ trustworthyColorsCount[pixelOffset / 4 - 1] += a ? multiplier : 0;
+ }
+ }
+
+ if (weight >= amountToNext) {
+ actualPosition = caret;
+ currentPosition = actualPosition;
+ weight -= amountToNext;
+ } else {
+ currentPosition += weight;
+ break;
+ }
+ } while (weight > 0 && actualPosition < this.widthPassResultSize);
+
+ for (pixelOffset = 0; pixelOffset < this.targetWidthMultipliedByChannels;) {
+ weight = fourthChannel ? trustworthyColorsCount[pixelOffset / 4] : 1;
+ multiplier = fourthChannel ? weight ? 1 / weight : 0 : ratioWeightDivisor;
+ outputBuffer[outputOffset++] = Math.round(output[pixelOffset++] * multiplier);
+ outputBuffer[outputOffset++] = Math.round(output[pixelOffset++] * multiplier);
+ outputBuffer[outputOffset++] = Math.round(output[pixelOffset++] * multiplier);
+
+ if (fourthChannel) {
+ outputBuffer[outputOffset++] = Math.round(output[pixelOffset++] * ratioWeightDivisor);
+ }
+ }
+ } while (outputOffset < this.finalResultSize);
+
+ return outputBuffer;
+};
+
+Resize.prototype.resizeWidthInterpolatedRGB = function (buffer) {
+ return this._resizeWidthInterpolatedRGBChannels(buffer, false);
+};
+
+Resize.prototype.resizeWidthInterpolatedRGBA = function (buffer) {
+ return this._resizeWidthInterpolatedRGBChannels(buffer, true);
+};
+
+Resize.prototype.resizeWidthRGB = function (buffer) {
+ return this._resizeWidthRGBChannels(buffer, false);
+};
+
+Resize.prototype.resizeWidthRGBA = function (buffer) {
+ return this._resizeWidthRGBChannels(buffer, true);
+};
+
+Resize.prototype.resizeHeightInterpolated = function (buffer) {
+ var ratioWeight = this.ratioWeightHeightPass;
+ var outputBuffer = this.heightBuffer;
+ var weight = 0;
+ var finalOffset = 0;
+ var pixelOffset = 0;
+ var pixelOffsetAccumulated = 0;
+ var pixelOffsetAccumulated2 = 0;
+ var firstWeight = 0;
+ var secondWeight = 0;
+ var interpolationHeightSourceReadStop; // Handle for only one interpolation input being valid for start calculation:
+
+ for (; weight < 1 / 3; weight += ratioWeight) {
+ for (pixelOffset = 0; pixelOffset < this.targetWidthMultipliedByChannels;) {
+ outputBuffer[finalOffset++] = Math.round(buffer[pixelOffset++]);
+ }
+ } // Adjust for overshoot of the last pass's counter:
+
+
+ weight -= 1 / 3;
+
+ for (interpolationHeightSourceReadStop = this.heightOriginal - 1; weight < interpolationHeightSourceReadStop; weight += ratioWeight) {
+ // Calculate weightings:
+ secondWeight = weight % 1;
+ firstWeight = 1 - secondWeight; // Interpolate:
+
+ pixelOffsetAccumulated = Math.floor(weight) * this.targetWidthMultipliedByChannels;
+ pixelOffsetAccumulated2 = pixelOffsetAccumulated + this.targetWidthMultipliedByChannels;
+
+ for (pixelOffset = 0; pixelOffset < this.targetWidthMultipliedByChannels; ++pixelOffset) {
+ outputBuffer[finalOffset++] = Math.round(buffer[pixelOffsetAccumulated++] * firstWeight + buffer[pixelOffsetAccumulated2++] * secondWeight);
+ }
+ } // Handle for only one interpolation input being valid for end calculation:
+
+
+ while (finalOffset < this.finalResultSize) {
+ for (pixelOffset = 0, pixelOffsetAccumulated = interpolationHeightSourceReadStop * this.targetWidthMultipliedByChannels; pixelOffset < this.targetWidthMultipliedByChannels; ++pixelOffset) {
+ outputBuffer[finalOffset++] = Math.round(buffer[pixelOffsetAccumulated++]);
+ }
+ }
+
+ return outputBuffer;
+};
+
+Resize.prototype.resizeHeightRGB = function (buffer) {
+ return this._resizeHeightRGBChannels(buffer, false);
+};
+
+Resize.prototype.resizeHeightRGBA = function (buffer) {
+ return this._resizeHeightRGBChannels(buffer, true);
+};
+
+Resize.prototype.resize = function (buffer) {
+ this.resizeCallback(this.resizeHeight(this.resizeWidth(buffer)));
+};
+
+Resize.prototype.bypassResizer = function (buffer) {
+ // Just return the buffer passed:
+ return buffer;
+};
+
+Resize.prototype.initializeFirstPassBuffers = function (BILINEARAlgo) {
+ // Initialize the internal width pass buffers:
+ this.widthBuffer = this.generateFloatBuffer(this.widthPassResultSize);
+
+ if (!BILINEARAlgo) {
+ this.outputWidthWorkBench = this.generateFloatBuffer(this.originalHeightMultipliedByChannels);
+
+ if (this.colorChannels > 3) {
+ this.outputWidthWorkBenchOpaquePixelsCount = this.generateFloat64Buffer(this.heightOriginal);
+ }
+ }
+};
+
+Resize.prototype.initializeSecondPassBuffers = function (BILINEARAlgo) {
+ // Initialize the internal height pass buffers:
+ this.heightBuffer = this.generateUint8Buffer(this.finalResultSize);
+
+ if (!BILINEARAlgo) {
+ this.outputHeightWorkBench = this.generateFloatBuffer(this.targetWidthMultipliedByChannels);
+
+ if (this.colorChannels > 3) {
+ this.outputHeightWorkBenchOpaquePixelsCount = this.generateFloat64Buffer(this.targetWidth);
+ }
+ }
+};
+
+Resize.prototype.generateFloatBuffer = function (bufferLength) {
+ // Generate a float32 typed array buffer:
+ try {
+ return new Float32Array(bufferLength);
+ } catch (error) {
+ return [];
+ }
+};
+
+Resize.prototype.generateFloat64Buffer = function (bufferLength) {
+ // Generate a float64 typed array buffer:
+ try {
+ return new Float64Array(bufferLength);
+ } catch (error) {
+ return [];
+ }
+};
+
+Resize.prototype.generateUint8Buffer = function (bufferLength) {
+ // Generate a uint8 typed array buffer:
+ try {
+ return new Uint8Array(bufferLength);
+ } catch (error) {
+ return [];
+ }
+};
+
+module.exports = Resize;
+//# sourceMappingURL=resize.js.map
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-resize/dist/modules/resize.js.map b/node_modules/@jimp/plugin-resize/dist/modules/resize.js.map
new file mode 100644
index 00000000..da4bf2ad
--- /dev/null
+++ b/node_modules/@jimp/plugin-resize/dist/modules/resize.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../src/modules/resize.js"],"names":["Resize","widthOriginal","heightOriginal","targetWidth","targetHeight","blendAlpha","interpolationPass","resizeCallback","Math","abs","floor","colorChannels","Boolean","targetWidthMultipliedByChannels","originalWidthMultipliedByChannels","originalHeightMultipliedByChannels","widthPassResultSize","finalResultSize","initialize","prototype","configurePasses","Error","resizeWidth","bypassResizer","ratioWeightWidthPass","initializeFirstPassBuffers","resizeWidthInterpolatedRGBA","resizeWidthInterpolatedRGB","resizeWidthRGBA","resizeWidthRGB","resizeHeight","ratioWeightHeightPass","initializeSecondPassBuffers","resizeHeightInterpolated","resizeHeightRGBA","resizeHeightRGB","_resizeWidthInterpolatedRGBChannels","buffer","fourthChannel","channelsNum","ratioWeight","outputBuffer","widthBuffer","weight","finalOffset","pixelOffset","firstWeight","secondWeight","targetPosition","interpolationWidthSourceReadStop","_resizeWidthRGBChannels","ratioWeightDivisor","nextLineOffsetOriginalWidth","nextLineOffsetTargetWidth","output","outputWidthWorkBench","trustworthyColorsCount","outputWidthWorkBenchOpaquePixelsCount","amountToNext","actualPosition","currentPosition","line","outputOffset","multiplier","r","g","b","a","min","_resizeHeightRGBChannels","outputHeightWorkBench","heightBuffer","outputHeightWorkBenchOpaquePixelsCount","caret","round","pixelOffsetAccumulated","pixelOffsetAccumulated2","interpolationHeightSourceReadStop","resize","BILINEARAlgo","generateFloatBuffer","generateFloat64Buffer","generateUint8Buffer","bufferLength","Float32Array","error","Float64Array","Uint8Array","module","exports"],"mappings":"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","sourcesContent":["// JavaScript Image Resizer (c) 2012 - Grant Galitz\n// Released to public domain 29 July 2013: https://github.com/grantgalitz/JS-Image-Resizer/issues/4\n\nfunction Resize(\n widthOriginal,\n heightOriginal,\n targetWidth,\n targetHeight,\n blendAlpha,\n interpolationPass,\n resizeCallback\n) {\n this.widthOriginal = Math.abs(Math.floor(widthOriginal) || 0);\n this.heightOriginal = Math.abs(Math.floor(heightOriginal) || 0);\n this.targetWidth = Math.abs(Math.floor(targetWidth) || 0);\n this.targetHeight = Math.abs(Math.floor(targetHeight) || 0);\n this.colorChannels = blendAlpha ? 4 : 3;\n this.interpolationPass = Boolean(interpolationPass);\n this.resizeCallback =\n typeof resizeCallback === \"function\" ? resizeCallback : function () {};\n\n this.targetWidthMultipliedByChannels = this.targetWidth * this.colorChannels;\n this.originalWidthMultipliedByChannels =\n this.widthOriginal * this.colorChannels;\n this.originalHeightMultipliedByChannels =\n this.heightOriginal * this.colorChannels;\n this.widthPassResultSize =\n this.targetWidthMultipliedByChannels * this.heightOriginal;\n this.finalResultSize =\n this.targetWidthMultipliedByChannels * this.targetHeight;\n this.initialize();\n}\n\nResize.prototype.initialize = function () {\n // Perform some checks:\n if (\n this.widthOriginal > 0 &&\n this.heightOriginal > 0 &&\n this.targetWidth > 0 &&\n this.targetHeight > 0\n ) {\n this.configurePasses();\n } else {\n throw new Error(\"Invalid settings specified for the resizer.\");\n }\n};\n\nResize.prototype.configurePasses = function () {\n if (this.widthOriginal === this.targetWidth) {\n // Bypass the width resizer pass:\n this.resizeWidth = this.bypassResizer;\n } else {\n // Setup the width resizer pass:\n this.ratioWeightWidthPass = this.widthOriginal / this.targetWidth;\n if (this.ratioWeightWidthPass < 1 && this.interpolationPass) {\n this.initializeFirstPassBuffers(true);\n this.resizeWidth =\n this.colorChannels === 4\n ? this.resizeWidthInterpolatedRGBA\n : this.resizeWidthInterpolatedRGB;\n } else {\n this.initializeFirstPassBuffers(false);\n this.resizeWidth =\n this.colorChannels === 4 ? this.resizeWidthRGBA : this.resizeWidthRGB;\n }\n }\n\n if (this.heightOriginal === this.targetHeight) {\n // Bypass the height resizer pass:\n this.resizeHeight = this.bypassResizer;\n } else {\n // Setup the height resizer pass:\n this.ratioWeightHeightPass = this.heightOriginal / this.targetHeight;\n if (this.ratioWeightHeightPass < 1 && this.interpolationPass) {\n this.initializeSecondPassBuffers(true);\n this.resizeHeight = this.resizeHeightInterpolated;\n } else {\n this.initializeSecondPassBuffers(false);\n this.resizeHeight =\n this.colorChannels === 4 ? this.resizeHeightRGBA : this.resizeHeightRGB;\n }\n }\n};\n\nResize.prototype._resizeWidthInterpolatedRGBChannels = function (\n buffer,\n fourthChannel\n) {\n const channelsNum = fourthChannel ? 4 : 3;\n const ratioWeight = this.ratioWeightWidthPass;\n const outputBuffer = this.widthBuffer;\n\n let weight = 0;\n let finalOffset = 0;\n let pixelOffset = 0;\n let firstWeight = 0;\n let secondWeight = 0;\n let targetPosition;\n\n // Handle for only one interpolation input being valid for start calculation:\n for (\n targetPosition = 0;\n weight < 1 / 3;\n targetPosition += channelsNum, weight += ratioWeight\n ) {\n for (\n finalOffset = targetPosition, pixelOffset = 0;\n finalOffset < this.widthPassResultSize;\n pixelOffset += this.originalWidthMultipliedByChannels,\n finalOffset += this.targetWidthMultipliedByChannels\n ) {\n outputBuffer[finalOffset] = buffer[pixelOffset];\n outputBuffer[finalOffset + 1] = buffer[pixelOffset + 1];\n outputBuffer[finalOffset + 2] = buffer[pixelOffset + 2];\n if (fourthChannel)\n outputBuffer[finalOffset + 3] = buffer[pixelOffset + 3];\n }\n }\n\n // Adjust for overshoot of the last pass's counter:\n weight -= 1 / 3;\n let interpolationWidthSourceReadStop;\n\n for (\n interpolationWidthSourceReadStop = this.widthOriginal - 1;\n weight < interpolationWidthSourceReadStop;\n targetPosition += channelsNum, weight += ratioWeight\n ) {\n // Calculate weightings:\n secondWeight = weight % 1;\n firstWeight = 1 - secondWeight;\n // Interpolate:\n for (\n finalOffset = targetPosition,\n pixelOffset = Math.floor(weight) * channelsNum;\n finalOffset < this.widthPassResultSize;\n pixelOffset += this.originalWidthMultipliedByChannels,\n finalOffset += this.targetWidthMultipliedByChannels\n ) {\n outputBuffer[finalOffset + 0] =\n buffer[pixelOffset + 0] * firstWeight +\n buffer[pixelOffset + channelsNum + 0] * secondWeight;\n outputBuffer[finalOffset + 1] =\n buffer[pixelOffset + 1] * firstWeight +\n buffer[pixelOffset + channelsNum + 1] * secondWeight;\n outputBuffer[finalOffset + 2] =\n buffer[pixelOffset + 2] * firstWeight +\n buffer[pixelOffset + channelsNum + 2] * secondWeight;\n if (fourthChannel)\n outputBuffer[finalOffset + 3] =\n buffer[pixelOffset + 3] * firstWeight +\n buffer[pixelOffset + channelsNum + 3] * secondWeight;\n }\n }\n\n // Handle for only one interpolation input being valid for end calculation:\n for (\n interpolationWidthSourceReadStop =\n this.originalWidthMultipliedByChannels - channelsNum;\n targetPosition < this.targetWidthMultipliedByChannels;\n targetPosition += channelsNum\n ) {\n for (\n finalOffset = targetPosition,\n pixelOffset = interpolationWidthSourceReadStop;\n finalOffset < this.widthPassResultSize;\n pixelOffset += this.originalWidthMultipliedByChannels,\n finalOffset += this.targetWidthMultipliedByChannels\n ) {\n outputBuffer[finalOffset] = buffer[pixelOffset];\n outputBuffer[finalOffset + 1] = buffer[pixelOffset + 1];\n outputBuffer[finalOffset + 2] = buffer[pixelOffset + 2];\n if (fourthChannel)\n outputBuffer[finalOffset + 3] = buffer[pixelOffset + 3];\n }\n }\n\n return outputBuffer;\n};\n\nResize.prototype._resizeWidthRGBChannels = function (buffer, fourthChannel) {\n const channelsNum = fourthChannel ? 4 : 3;\n const ratioWeight = this.ratioWeightWidthPass;\n const ratioWeightDivisor = 1 / ratioWeight;\n const nextLineOffsetOriginalWidth =\n this.originalWidthMultipliedByChannels - channelsNum + 1;\n const nextLineOffsetTargetWidth =\n this.targetWidthMultipliedByChannels - channelsNum + 1;\n const output = this.outputWidthWorkBench;\n const outputBuffer = this.widthBuffer;\n const trustworthyColorsCount = this.outputWidthWorkBenchOpaquePixelsCount;\n\n let weight = 0;\n let amountToNext = 0;\n let actualPosition = 0;\n let currentPosition = 0;\n let line = 0;\n let pixelOffset = 0;\n let outputOffset = 0;\n let multiplier = 1;\n let r = 0;\n let g = 0;\n let b = 0;\n let a = 0;\n\n do {\n for (line = 0; line < this.originalHeightMultipliedByChannels; ) {\n output[line++] = 0;\n output[line++] = 0;\n output[line++] = 0;\n if (fourthChannel) {\n output[line++] = 0;\n trustworthyColorsCount[line / channelsNum - 1] = 0;\n }\n }\n\n weight = ratioWeight;\n\n do {\n amountToNext = 1 + actualPosition - currentPosition;\n multiplier = Math.min(weight, amountToNext);\n for (\n line = 0, pixelOffset = actualPosition;\n line < this.originalHeightMultipliedByChannels;\n pixelOffset += nextLineOffsetOriginalWidth\n ) {\n r = buffer[pixelOffset];\n g = buffer[++pixelOffset];\n b = buffer[++pixelOffset];\n a = fourthChannel ? buffer[++pixelOffset] : 255;\n // Ignore RGB values if pixel is completely transparent\n output[line++] += (a ? r : 0) * multiplier;\n output[line++] += (a ? g : 0) * multiplier;\n output[line++] += (a ? b : 0) * multiplier;\n if (fourthChannel) {\n output[line++] += a * multiplier;\n trustworthyColorsCount[line / channelsNum - 1] += a ? multiplier : 0;\n }\n }\n\n if (weight >= amountToNext) {\n actualPosition += channelsNum;\n currentPosition = actualPosition;\n weight -= amountToNext;\n } else {\n currentPosition += weight;\n break;\n }\n } while (\n weight > 0 &&\n actualPosition < this.originalWidthMultipliedByChannels\n );\n\n for (\n line = 0, pixelOffset = outputOffset;\n line < this.originalHeightMultipliedByChannels;\n pixelOffset += nextLineOffsetTargetWidth\n ) {\n weight = fourthChannel ? trustworthyColorsCount[line / channelsNum] : 1;\n multiplier = fourthChannel\n ? weight\n ? 1 / weight\n : 0\n : ratioWeightDivisor;\n outputBuffer[pixelOffset] = output[line++] * multiplier;\n outputBuffer[++pixelOffset] = output[line++] * multiplier;\n outputBuffer[++pixelOffset] = output[line++] * multiplier;\n if (fourthChannel)\n outputBuffer[++pixelOffset] = output[line++] * ratioWeightDivisor;\n }\n\n outputOffset += channelsNum;\n } while (outputOffset < this.targetWidthMultipliedByChannels);\n\n return outputBuffer;\n};\n\nResize.prototype._resizeHeightRGBChannels = function (buffer, fourthChannel) {\n const ratioWeight = this.ratioWeightHeightPass;\n const ratioWeightDivisor = 1 / ratioWeight;\n const output = this.outputHeightWorkBench;\n const outputBuffer = this.heightBuffer;\n const trustworthyColorsCount = this.outputHeightWorkBenchOpaquePixelsCount;\n\n let weight = 0;\n let amountToNext = 0;\n let actualPosition = 0;\n let currentPosition = 0;\n let pixelOffset = 0;\n let outputOffset = 0;\n let caret = 0;\n let multiplier = 1;\n let r = 0;\n let g = 0;\n let b = 0;\n let a = 0;\n\n do {\n for (\n pixelOffset = 0;\n pixelOffset < this.targetWidthMultipliedByChannels;\n\n ) {\n output[pixelOffset++] = 0;\n output[pixelOffset++] = 0;\n output[pixelOffset++] = 0;\n\n if (fourthChannel) {\n output[pixelOffset++] = 0;\n trustworthyColorsCount[pixelOffset / 4 - 1] = 0;\n }\n }\n\n weight = ratioWeight;\n\n do {\n amountToNext = 1 + actualPosition - currentPosition;\n multiplier = Math.min(weight, amountToNext);\n caret = actualPosition;\n\n for (\n pixelOffset = 0;\n pixelOffset < this.targetWidthMultipliedByChannels;\n\n ) {\n r = buffer[caret++];\n g = buffer[caret++];\n b = buffer[caret++];\n a = fourthChannel ? buffer[caret++] : 255;\n // Ignore RGB values if pixel is completely transparent\n output[pixelOffset++] += (a ? r : 0) * multiplier;\n output[pixelOffset++] += (a ? g : 0) * multiplier;\n output[pixelOffset++] += (a ? b : 0) * multiplier;\n\n if (fourthChannel) {\n output[pixelOffset++] += a * multiplier;\n trustworthyColorsCount[pixelOffset / 4 - 1] += a ? multiplier : 0;\n }\n }\n\n if (weight >= amountToNext) {\n actualPosition = caret;\n currentPosition = actualPosition;\n weight -= amountToNext;\n } else {\n currentPosition += weight;\n break;\n }\n } while (weight > 0 && actualPosition < this.widthPassResultSize);\n\n for (\n pixelOffset = 0;\n pixelOffset < this.targetWidthMultipliedByChannels;\n\n ) {\n weight = fourthChannel ? trustworthyColorsCount[pixelOffset / 4] : 1;\n multiplier = fourthChannel\n ? weight\n ? 1 / weight\n : 0\n : ratioWeightDivisor;\n outputBuffer[outputOffset++] = Math.round(\n output[pixelOffset++] * multiplier\n );\n outputBuffer[outputOffset++] = Math.round(\n output[pixelOffset++] * multiplier\n );\n outputBuffer[outputOffset++] = Math.round(\n output[pixelOffset++] * multiplier\n );\n\n if (fourthChannel) {\n outputBuffer[outputOffset++] = Math.round(\n output[pixelOffset++] * ratioWeightDivisor\n );\n }\n }\n } while (outputOffset < this.finalResultSize);\n\n return outputBuffer;\n};\n\nResize.prototype.resizeWidthInterpolatedRGB = function (buffer) {\n return this._resizeWidthInterpolatedRGBChannels(buffer, false);\n};\n\nResize.prototype.resizeWidthInterpolatedRGBA = function (buffer) {\n return this._resizeWidthInterpolatedRGBChannels(buffer, true);\n};\n\nResize.prototype.resizeWidthRGB = function (buffer) {\n return this._resizeWidthRGBChannels(buffer, false);\n};\n\nResize.prototype.resizeWidthRGBA = function (buffer) {\n return this._resizeWidthRGBChannels(buffer, true);\n};\n\nResize.prototype.resizeHeightInterpolated = function (buffer) {\n const ratioWeight = this.ratioWeightHeightPass;\n const outputBuffer = this.heightBuffer;\n\n let weight = 0;\n let finalOffset = 0;\n let pixelOffset = 0;\n let pixelOffsetAccumulated = 0;\n let pixelOffsetAccumulated2 = 0;\n let firstWeight = 0;\n let secondWeight = 0;\n let interpolationHeightSourceReadStop;\n\n // Handle for only one interpolation input being valid for start calculation:\n for (; weight < 1 / 3; weight += ratioWeight) {\n for (\n pixelOffset = 0;\n pixelOffset < this.targetWidthMultipliedByChannels;\n\n ) {\n outputBuffer[finalOffset++] = Math.round(buffer[pixelOffset++]);\n }\n }\n\n // Adjust for overshoot of the last pass's counter:\n weight -= 1 / 3;\n\n for (\n interpolationHeightSourceReadStop = this.heightOriginal - 1;\n weight < interpolationHeightSourceReadStop;\n weight += ratioWeight\n ) {\n // Calculate weightings:\n secondWeight = weight % 1;\n firstWeight = 1 - secondWeight;\n // Interpolate:\n pixelOffsetAccumulated =\n Math.floor(weight) * this.targetWidthMultipliedByChannels;\n pixelOffsetAccumulated2 =\n pixelOffsetAccumulated + this.targetWidthMultipliedByChannels;\n for (\n pixelOffset = 0;\n pixelOffset < this.targetWidthMultipliedByChannels;\n ++pixelOffset\n ) {\n outputBuffer[finalOffset++] = Math.round(\n buffer[pixelOffsetAccumulated++] * firstWeight +\n buffer[pixelOffsetAccumulated2++] * secondWeight\n );\n }\n }\n\n // Handle for only one interpolation input being valid for end calculation:\n while (finalOffset < this.finalResultSize) {\n for (\n pixelOffset = 0,\n pixelOffsetAccumulated =\n interpolationHeightSourceReadStop *\n this.targetWidthMultipliedByChannels;\n pixelOffset < this.targetWidthMultipliedByChannels;\n ++pixelOffset\n ) {\n outputBuffer[finalOffset++] = Math.round(\n buffer[pixelOffsetAccumulated++]\n );\n }\n }\n\n return outputBuffer;\n};\n\nResize.prototype.resizeHeightRGB = function (buffer) {\n return this._resizeHeightRGBChannels(buffer, false);\n};\n\nResize.prototype.resizeHeightRGBA = function (buffer) {\n return this._resizeHeightRGBChannels(buffer, true);\n};\n\nResize.prototype.resize = function (buffer) {\n this.resizeCallback(this.resizeHeight(this.resizeWidth(buffer)));\n};\n\nResize.prototype.bypassResizer = function (buffer) {\n // Just return the buffer passed:\n return buffer;\n};\n\nResize.prototype.initializeFirstPassBuffers = function (BILINEARAlgo) {\n // Initialize the internal width pass buffers:\n this.widthBuffer = this.generateFloatBuffer(this.widthPassResultSize);\n\n if (!BILINEARAlgo) {\n this.outputWidthWorkBench = this.generateFloatBuffer(\n this.originalHeightMultipliedByChannels\n );\n\n if (this.colorChannels > 3) {\n this.outputWidthWorkBenchOpaquePixelsCount = this.generateFloat64Buffer(\n this.heightOriginal\n );\n }\n }\n};\n\nResize.prototype.initializeSecondPassBuffers = function (BILINEARAlgo) {\n // Initialize the internal height pass buffers:\n this.heightBuffer = this.generateUint8Buffer(this.finalResultSize);\n\n if (!BILINEARAlgo) {\n this.outputHeightWorkBench = this.generateFloatBuffer(\n this.targetWidthMultipliedByChannels\n );\n\n if (this.colorChannels > 3) {\n this.outputHeightWorkBenchOpaquePixelsCount = this.generateFloat64Buffer(\n this.targetWidth\n );\n }\n }\n};\n\nResize.prototype.generateFloatBuffer = function (bufferLength) {\n // Generate a float32 typed array buffer:\n try {\n return new Float32Array(bufferLength);\n } catch (error) {\n return [];\n }\n};\n\nResize.prototype.generateFloat64Buffer = function (bufferLength) {\n // Generate a float64 typed array buffer:\n try {\n return new Float64Array(bufferLength);\n } catch (error) {\n return [];\n }\n};\n\nResize.prototype.generateUint8Buffer = function (bufferLength) {\n // Generate a uint8 typed array buffer:\n try {\n return new Uint8Array(bufferLength);\n } catch (error) {\n return [];\n }\n};\n\nmodule.exports = Resize;\n"],"file":"resize.js"}
\ No newline at end of file
diff --git a/project starter code/node_modules/@jimp/plugin-resize/dist/modules/resize2.js b/node_modules/@jimp/plugin-resize/dist/modules/resize2.js
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-resize/dist/modules/resize2.js
rename to node_modules/@jimp/plugin-resize/dist/modules/resize2.js
diff --git a/node_modules/@jimp/plugin-resize/dist/modules/resize2.js.map b/node_modules/@jimp/plugin-resize/dist/modules/resize2.js.map
new file mode 100644
index 00000000..8183e69f
--- /dev/null
+++ b/node_modules/@jimp/plugin-resize/dist/modules/resize2.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../../src/modules/resize2.js"],"names":["module","exports","nearestNeighbor","src","dst","wSrc","width","hSrc","height","wDst","hDst","bufSrc","data","bufDst","i","j","posDst","iSrc","Math","floor","jSrc","posSrc","bilinearInterpolation","interpolate","k","kMin","vMin","kMax","vMax","round","assign","pos","offset","x","xMin","xMax","y","yMin","yMax","posMin","posMax","min","ceil","_interpolate2D","options","wM","max","wDst2","hM","hDst2","buf1","Buffer","alloc","xPos","t","srcPos","buf1Pos","kPos","x0","x1","x2","x3","buf2","yPos","buf2Pos","y0","y1","y2","y3","m","r","g","b","a","realColors","xyPos","pixelAlpha","bicubicInterpolation","interpolateCubic","a0","a1","a2","a3","hermiteInterpolation","interpolateHermite","c0","c1","c2","c3","bezierInterpolation","interpolateBezier","cp1","cp2","nt"],"mappings":"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","sourcesContent":["/**\n * Copyright (c) 2015 Guyon Roche\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:
\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nmodule.exports = {\n nearestNeighbor(src, dst) {\n const wSrc = src.width;\n const hSrc = src.height;\n\n const wDst = dst.width;\n const hDst = dst.height;\n\n const bufSrc = src.data;\n const bufDst = dst.data;\n\n for (let i = 0; i < hDst; i++) {\n for (let j = 0; j < wDst; j++) {\n let posDst = (i * wDst + j) * 4;\n\n const iSrc = Math.floor((i * hSrc) / hDst);\n const jSrc = Math.floor((j * wSrc) / wDst);\n let posSrc = (iSrc * wSrc + jSrc) * 4;\n\n bufDst[posDst++] = bufSrc[posSrc++];\n bufDst[posDst++] = bufSrc[posSrc++];\n bufDst[posDst++] = bufSrc[posSrc++];\n bufDst[posDst++] = bufSrc[posSrc++];\n }\n }\n },\n\n bilinearInterpolation(src, dst) {\n const wSrc = src.width;\n const hSrc = src.height;\n\n const wDst = dst.width;\n const hDst = dst.height;\n\n const bufSrc = src.data;\n const bufDst = dst.data;\n\n const interpolate = function (k, kMin, vMin, kMax, vMax) {\n // special case - k is integer\n if (kMin === kMax) {\n return vMin;\n }\n\n return Math.round((k - kMin) * vMax + (kMax - k) * vMin);\n };\n\n const assign = function (pos, offset, x, xMin, xMax, y, yMin, yMax) {\n let posMin = (yMin * wSrc + xMin) * 4 + offset;\n let posMax = (yMin * wSrc + xMax) * 4 + offset;\n const vMin = interpolate(x, xMin, bufSrc[posMin], xMax, bufSrc[posMax]);\n\n // special case, y is integer\n if (yMax === yMin) {\n bufDst[pos + offset] = vMin;\n } else {\n posMin = (yMax * wSrc + xMin) * 4 + offset;\n posMax = (yMax * wSrc + xMax) * 4 + offset;\n const vMax = interpolate(x, xMin, bufSrc[posMin], xMax, bufSrc[posMax]);\n\n bufDst[pos + offset] = interpolate(y, yMin, vMin, yMax, vMax);\n }\n };\n\n for (let i = 0; i < hDst; i++) {\n for (let j = 0; j < wDst; j++) {\n const posDst = (i * wDst + j) * 4;\n // x & y in src coordinates\n const x = (j * wSrc) / wDst;\n const xMin = Math.floor(x);\n const xMax = Math.min(Math.ceil(x), wSrc - 1);\n\n const y = (i * hSrc) / hDst;\n const yMin = Math.floor(y);\n const yMax = Math.min(Math.ceil(y), hSrc - 1);\n\n assign(posDst, 0, x, xMin, xMax, y, yMin, yMax);\n assign(posDst, 1, x, xMin, xMax, y, yMin, yMax);\n assign(posDst, 2, x, xMin, xMax, y, yMin, yMax);\n assign(posDst, 3, x, xMin, xMax, y, yMin, yMax);\n }\n }\n },\n\n _interpolate2D(src, dst, options, interpolate) {\n const bufSrc = src.data;\n const bufDst = dst.data;\n\n const wSrc = src.width;\n const hSrc = src.height;\n\n const wDst = dst.width;\n const hDst = dst.height;\n\n // when dst smaller than src/2, interpolate first to a multiple between 0.5 and 1.0 src, then sum squares\n const wM = Math.max(1, Math.floor(wSrc / wDst));\n const wDst2 = wDst * wM;\n const hM = Math.max(1, Math.floor(hSrc / hDst));\n const hDst2 = hDst * hM;\n\n // ===========================================================\n // Pass 1 - interpolate rows\n // buf1 has width of dst2 and height of src\n const buf1 = Buffer.alloc(wDst2 * hSrc * 4);\n for (let i = 0; i < hSrc; i++) {\n for (let j = 0; j < wDst2; j++) {\n // i in src coords, j in dst coords\n\n // calculate x in src coords\n // this interpolation requires 4 sample points and the two inner ones must be real\n // the outer points can be fudged for the edges.\n // therefore (wSrc-1)/wDst2\n const x = (j * (wSrc - 1)) / wDst2;\n const xPos = Math.floor(x);\n const t = x - xPos;\n const srcPos = (i * wSrc + xPos) * 4;\n const buf1Pos = (i * wDst2 + j) * 4;\n\n for (let k = 0; k < 4; k++) {\n const kPos = srcPos + k;\n const x0 =\n xPos > 0 ? bufSrc[kPos - 4] : 2 * bufSrc[kPos] - bufSrc[kPos + 4];\n const x1 = bufSrc[kPos];\n const x2 = bufSrc[kPos + 4];\n const x3 =\n xPos < wSrc - 2\n ? bufSrc[kPos + 8]\n : 2 * bufSrc[kPos + 4] - bufSrc[kPos];\n buf1[buf1Pos + k] = interpolate(x0, x1, x2, x3, t);\n }\n }\n }\n // this._writeFile(wDst2, hSrc, buf1, \"out/buf1.jpg\");\n\n // ===========================================================\n // Pass 2 - interpolate columns\n // buf2 has width and height of dst2\n const buf2 = Buffer.alloc(wDst2 * hDst2 * 4);\n for (let i = 0; i < hDst2; i++) {\n for (let j = 0; j < wDst2; j++) {\n // i&j in dst2 coords\n\n // calculate y in buf1 coords\n // this interpolation requires 4 sample points and the two inner ones must be real\n // the outer points can be fudged for the edges.\n // therefore (hSrc-1)/hDst2\n const y = (i * (hSrc - 1)) / hDst2;\n const yPos = Math.floor(y);\n const t = y - yPos;\n const buf1Pos = (yPos * wDst2 + j) * 4;\n const buf2Pos = (i * wDst2 + j) * 4;\n for (let k = 0; k < 4; k++) {\n const kPos = buf1Pos + k;\n const y0 =\n yPos > 0\n ? buf1[kPos - wDst2 * 4]\n : 2 * buf1[kPos] - buf1[kPos + wDst2 * 4];\n const y1 = buf1[kPos];\n const y2 = buf1[kPos + wDst2 * 4];\n const y3 =\n yPos < hSrc - 2\n ? buf1[kPos + wDst2 * 8]\n : 2 * buf1[kPos + wDst2 * 4] - buf1[kPos];\n\n buf2[buf2Pos + k] = interpolate(y0, y1, y2, y3, t);\n }\n }\n }\n // this._writeFile(wDst2, hDst2, buf2, \"out/buf2.jpg\");\n\n // ===========================================================\n // Pass 3 - scale to dst\n const m = wM * hM;\n if (m > 1) {\n for (let i = 0; i < hDst; i++) {\n for (let j = 0; j < wDst; j++) {\n // i&j in dst bounded coords\n let r = 0;\n let g = 0;\n let b = 0;\n let a = 0;\n let realColors = 0;\n\n for (let y = 0; y < hM; y++) {\n const yPos = i * hM + y;\n\n for (let x = 0; x < wM; x++) {\n const xPos = j * wM + x;\n const xyPos = (yPos * wDst2 + xPos) * 4;\n const pixelAlpha = buf2[xyPos + 3];\n\n if (pixelAlpha) {\n r += buf2[xyPos];\n g += buf2[xyPos + 1];\n b += buf2[xyPos + 2];\n realColors++;\n }\n\n a += pixelAlpha;\n }\n }\n\n const pos = (i * wDst + j) * 4;\n bufDst[pos] = realColors ? Math.round(r / realColors) : 0;\n bufDst[pos + 1] = realColors ? Math.round(g / realColors) : 0;\n bufDst[pos + 2] = realColors ? Math.round(b / realColors) : 0;\n bufDst[pos + 3] = Math.round(a / m);\n }\n }\n } else {\n // replace dst buffer with buf2\n dst.data = buf2;\n }\n },\n\n bicubicInterpolation(src, dst, options) {\n const interpolateCubic = function (x0, x1, x2, x3, t) {\n const a0 = x3 - x2 - x0 + x1;\n const a1 = x0 - x1 - a0;\n const a2 = x2 - x0;\n const a3 = x1;\n return Math.max(\n 0,\n Math.min(255, a0 * (t * t * t) + a1 * (t * t) + a2 * t + a3)\n );\n };\n\n return this._interpolate2D(src, dst, options, interpolateCubic);\n },\n\n hermiteInterpolation(src, dst, options) {\n const interpolateHermite = function (x0, x1, x2, x3, t) {\n const c0 = x1;\n const c1 = 0.5 * (x2 - x0);\n const c2 = x0 - 2.5 * x1 + 2 * x2 - 0.5 * x3;\n const c3 = 0.5 * (x3 - x0) + 1.5 * (x1 - x2);\n return Math.max(\n 0,\n Math.min(255, Math.round(((c3 * t + c2) * t + c1) * t + c0))\n );\n };\n\n return this._interpolate2D(src, dst, options, interpolateHermite);\n },\n\n bezierInterpolation(src, dst, options) {\n // between 2 points y(n), y(n+1), use next points out, y(n-1), y(n+2)\n // to predict control points (a & b) to be placed at n+0.5\n // ya(n) = y(n) + (y(n+1)-y(n-1))/4\n // yb(n) = y(n+1) - (y(n+2)-y(n))/4\n // then use std bezier to interpolate [n,n+1)\n // y(n+t) = y(n)*(1-t)^3 + 3 * ya(n)*(1-t)^2*t + 3 * yb(n)*(1-t)*t^2 + y(n+1)*t^3\n // note the 3* factor for the two control points\n // for edge cases, can choose:\n // y(-1) = y(0) - 2*(y(1)-y(0))\n // y(w) = y(w-1) + 2*(y(w-1)-y(w-2))\n // but can go with y(-1) = y(0) and y(w) = y(w-1)\n const interpolateBezier = function (x0, x1, x2, x3, t) {\n // x1, x2 are the knots, use x0 and x3 to calculate control points\n const cp1 = x1 + (x2 - x0) / 4;\n const cp2 = x2 - (x3 - x1) / 4;\n const nt = 1 - t;\n const c0 = x1 * nt * nt * nt;\n const c1 = 3 * cp1 * nt * nt * t;\n const c2 = 3 * cp2 * nt * t * t;\n const c3 = x2 * t * t * t;\n return Math.max(0, Math.min(255, Math.round(c0 + c1 + c2 + c3)));\n };\n\n return this._interpolate2D(src, dst, options, interpolateBezier);\n },\n};\n"],"file":"resize2.js"}
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-resize/index.d.ts b/node_modules/@jimp/plugin-resize/index.d.ts
new file mode 100644
index 00000000..58b3cdcb
--- /dev/null
+++ b/node_modules/@jimp/plugin-resize/index.d.ts
@@ -0,0 +1,21 @@
+import { ImageCallback } from "@jimp/core";
+
+interface ResizeClass {
+ resize(w: number, h: number, cb?: ImageCallback): this;
+ resize(w: number, h: number, mode?: string, cb?: ImageCallback): this;
+}
+
+interface Resize {
+ constants: {
+ // resize methods
+ RESIZE_NEAREST_NEIGHBOR: "nearestNeighbor";
+ RESIZE_BILINEAR: "bilinearInterpolation";
+ RESIZE_BICUBIC: "bicubicInterpolation";
+ RESIZE_HERMITE: "hermiteInterpolation";
+ RESIZE_BEZIER: "bezierInterpolation";
+ };
+
+ class: ResizeClass;
+}
+
+export default function (): Resize;
diff --git a/node_modules/@jimp/plugin-resize/package.json b/node_modules/@jimp/plugin-resize/package.json
new file mode 100644
index 00000000..550d992b
--- /dev/null
+++ b/node_modules/@jimp/plugin-resize/package.json
@@ -0,0 +1,37 @@
+{
+ "name": "@jimp/plugin-resize",
+ "version": "0.16.13",
+ "description": "Resize an image.",
+ "main": "dist/index.js",
+ "module": "es/index.js",
+ "types": "index.d.ts",
+ "scripts": {
+ "test": "cross-env BABEL_ENV=test mocha --require @babel/register",
+ "test:watch": "npm run test -- --reporter min --watch",
+ "test:coverage": "nyc npm run test",
+ "build": "npm run build:node:production && npm run build:module",
+ "build:watch": "npm run build:node:debug -- -- --watch --verbose",
+ "build:debug": "npm run build:node:debug",
+ "build:module": "cross-env BABEL_ENV=module babel src -d es --source-maps --config-file ../../babel.config.js",
+ "build:node": "babel src -d dist --source-maps --config-file ../../babel.config.js",
+ "build:node:debug": "cross-env BABEL_ENV=development npm run build:node",
+ "build:node:production": "cross-env BABEL_ENV=production npm run build:node"
+ },
+ "author": "",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ },
+ "devDependencies": {
+ "@jimp/custom": "^0.16.13",
+ "@jimp/test-utils": "^0.16.13"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "gitHead": "9eec86086634329a072901dca3a800b850548572"
+}
diff --git a/node_modules/@jimp/plugin-resize/src/index.js b/node_modules/@jimp/plugin-resize/src/index.js
new file mode 100644
index 00000000..2c77df99
--- /dev/null
+++ b/node_modules/@jimp/plugin-resize/src/index.js
@@ -0,0 +1,87 @@
+import { throwError, isNodePattern } from "@jimp/utils";
+
+import Resize from "./modules/resize";
+import Resize2 from "./modules/resize2";
+
+export default () => ({
+ constants: {
+ RESIZE_NEAREST_NEIGHBOR: "nearestNeighbor",
+ RESIZE_BILINEAR: "bilinearInterpolation",
+ RESIZE_BICUBIC: "bicubicInterpolation",
+ RESIZE_HERMITE: "hermiteInterpolation",
+ RESIZE_BEZIER: "bezierInterpolation",
+ },
+
+ class: {
+ /**
+ * Resizes the image to a set width and height using a 2-pass bilinear algorithm
+ * @param {number} w the width to resize the image to (or Jimp.AUTO)
+ * @param {number} h the height to resize the image to (or Jimp.AUTO)
+ * @param {string} mode (optional) a scaling method (e.g. Jimp.RESIZE_BEZIER)
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+ resize(w, h, mode, cb) {
+ if (typeof w !== "number" || typeof h !== "number") {
+ return throwError.call(this, "w and h must be numbers", cb);
+ }
+
+ if (typeof mode === "function" && typeof cb === "undefined") {
+ cb = mode;
+ mode = null;
+ }
+
+ if (w === this.constructor.AUTO && h === this.constructor.AUTO) {
+ return throwError.call(this, "w and h cannot both be set to auto", cb);
+ }
+
+ if (w === this.constructor.AUTO) {
+ w = this.bitmap.width * (h / this.bitmap.height);
+ }
+
+ if (h === this.constructor.AUTO) {
+ h = this.bitmap.height * (w / this.bitmap.width);
+ }
+
+ if (w < 0 || h < 0) {
+ return throwError.call(this, "w and h must be positive numbers", cb);
+ }
+
+ // round inputs
+ w = Math.round(w);
+ h = Math.round(h);
+
+ if (typeof Resize2[mode] === "function") {
+ const dst = {
+ data: Buffer.alloc(w * h * 4),
+ width: w,
+ height: h,
+ };
+ Resize2[mode](this.bitmap, dst);
+ this.bitmap = dst;
+ } else {
+ const image = this;
+ const resize = new Resize(
+ this.bitmap.width,
+ this.bitmap.height,
+ w,
+ h,
+ true,
+ true,
+ (buffer) => {
+ image.bitmap.data = Buffer.from(buffer);
+ image.bitmap.width = w;
+ image.bitmap.height = h;
+ }
+ );
+ resize.resize(this.bitmap.data);
+ }
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+ },
+});
diff --git a/node_modules/@jimp/plugin-resize/src/modules/resize.js b/node_modules/@jimp/plugin-resize/src/modules/resize.js
new file mode 100644
index 00000000..d4c86147
--- /dev/null
+++ b/node_modules/@jimp/plugin-resize/src/modules/resize.js
@@ -0,0 +1,548 @@
+// JavaScript Image Resizer (c) 2012 - Grant Galitz
+// Released to public domain 29 July 2013: https://github.com/grantgalitz/JS-Image-Resizer/issues/4
+
+function Resize(
+ widthOriginal,
+ heightOriginal,
+ targetWidth,
+ targetHeight,
+ blendAlpha,
+ interpolationPass,
+ resizeCallback
+) {
+ this.widthOriginal = Math.abs(Math.floor(widthOriginal) || 0);
+ this.heightOriginal = Math.abs(Math.floor(heightOriginal) || 0);
+ this.targetWidth = Math.abs(Math.floor(targetWidth) || 0);
+ this.targetHeight = Math.abs(Math.floor(targetHeight) || 0);
+ this.colorChannels = blendAlpha ? 4 : 3;
+ this.interpolationPass = Boolean(interpolationPass);
+ this.resizeCallback =
+ typeof resizeCallback === "function" ? resizeCallback : function () {};
+
+ this.targetWidthMultipliedByChannels = this.targetWidth * this.colorChannels;
+ this.originalWidthMultipliedByChannels =
+ this.widthOriginal * this.colorChannels;
+ this.originalHeightMultipliedByChannels =
+ this.heightOriginal * this.colorChannels;
+ this.widthPassResultSize =
+ this.targetWidthMultipliedByChannels * this.heightOriginal;
+ this.finalResultSize =
+ this.targetWidthMultipliedByChannels * this.targetHeight;
+ this.initialize();
+}
+
+Resize.prototype.initialize = function () {
+ // Perform some checks:
+ if (
+ this.widthOriginal > 0 &&
+ this.heightOriginal > 0 &&
+ this.targetWidth > 0 &&
+ this.targetHeight > 0
+ ) {
+ this.configurePasses();
+ } else {
+ throw new Error("Invalid settings specified for the resizer.");
+ }
+};
+
+Resize.prototype.configurePasses = function () {
+ if (this.widthOriginal === this.targetWidth) {
+ // Bypass the width resizer pass:
+ this.resizeWidth = this.bypassResizer;
+ } else {
+ // Setup the width resizer pass:
+ this.ratioWeightWidthPass = this.widthOriginal / this.targetWidth;
+ if (this.ratioWeightWidthPass < 1 && this.interpolationPass) {
+ this.initializeFirstPassBuffers(true);
+ this.resizeWidth =
+ this.colorChannels === 4
+ ? this.resizeWidthInterpolatedRGBA
+ : this.resizeWidthInterpolatedRGB;
+ } else {
+ this.initializeFirstPassBuffers(false);
+ this.resizeWidth =
+ this.colorChannels === 4 ? this.resizeWidthRGBA : this.resizeWidthRGB;
+ }
+ }
+
+ if (this.heightOriginal === this.targetHeight) {
+ // Bypass the height resizer pass:
+ this.resizeHeight = this.bypassResizer;
+ } else {
+ // Setup the height resizer pass:
+ this.ratioWeightHeightPass = this.heightOriginal / this.targetHeight;
+ if (this.ratioWeightHeightPass < 1 && this.interpolationPass) {
+ this.initializeSecondPassBuffers(true);
+ this.resizeHeight = this.resizeHeightInterpolated;
+ } else {
+ this.initializeSecondPassBuffers(false);
+ this.resizeHeight =
+ this.colorChannels === 4 ? this.resizeHeightRGBA : this.resizeHeightRGB;
+ }
+ }
+};
+
+Resize.prototype._resizeWidthInterpolatedRGBChannels = function (
+ buffer,
+ fourthChannel
+) {
+ const channelsNum = fourthChannel ? 4 : 3;
+ const ratioWeight = this.ratioWeightWidthPass;
+ const outputBuffer = this.widthBuffer;
+
+ let weight = 0;
+ let finalOffset = 0;
+ let pixelOffset = 0;
+ let firstWeight = 0;
+ let secondWeight = 0;
+ let targetPosition;
+
+ // Handle for only one interpolation input being valid for start calculation:
+ for (
+ targetPosition = 0;
+ weight < 1 / 3;
+ targetPosition += channelsNum, weight += ratioWeight
+ ) {
+ for (
+ finalOffset = targetPosition, pixelOffset = 0;
+ finalOffset < this.widthPassResultSize;
+ pixelOffset += this.originalWidthMultipliedByChannels,
+ finalOffset += this.targetWidthMultipliedByChannels
+ ) {
+ outputBuffer[finalOffset] = buffer[pixelOffset];
+ outputBuffer[finalOffset + 1] = buffer[pixelOffset + 1];
+ outputBuffer[finalOffset + 2] = buffer[pixelOffset + 2];
+ if (fourthChannel)
+ outputBuffer[finalOffset + 3] = buffer[pixelOffset + 3];
+ }
+ }
+
+ // Adjust for overshoot of the last pass's counter:
+ weight -= 1 / 3;
+ let interpolationWidthSourceReadStop;
+
+ for (
+ interpolationWidthSourceReadStop = this.widthOriginal - 1;
+ weight < interpolationWidthSourceReadStop;
+ targetPosition += channelsNum, weight += ratioWeight
+ ) {
+ // Calculate weightings:
+ secondWeight = weight % 1;
+ firstWeight = 1 - secondWeight;
+ // Interpolate:
+ for (
+ finalOffset = targetPosition,
+ pixelOffset = Math.floor(weight) * channelsNum;
+ finalOffset < this.widthPassResultSize;
+ pixelOffset += this.originalWidthMultipliedByChannels,
+ finalOffset += this.targetWidthMultipliedByChannels
+ ) {
+ outputBuffer[finalOffset + 0] =
+ buffer[pixelOffset + 0] * firstWeight +
+ buffer[pixelOffset + channelsNum + 0] * secondWeight;
+ outputBuffer[finalOffset + 1] =
+ buffer[pixelOffset + 1] * firstWeight +
+ buffer[pixelOffset + channelsNum + 1] * secondWeight;
+ outputBuffer[finalOffset + 2] =
+ buffer[pixelOffset + 2] * firstWeight +
+ buffer[pixelOffset + channelsNum + 2] * secondWeight;
+ if (fourthChannel)
+ outputBuffer[finalOffset + 3] =
+ buffer[pixelOffset + 3] * firstWeight +
+ buffer[pixelOffset + channelsNum + 3] * secondWeight;
+ }
+ }
+
+ // Handle for only one interpolation input being valid for end calculation:
+ for (
+ interpolationWidthSourceReadStop =
+ this.originalWidthMultipliedByChannels - channelsNum;
+ targetPosition < this.targetWidthMultipliedByChannels;
+ targetPosition += channelsNum
+ ) {
+ for (
+ finalOffset = targetPosition,
+ pixelOffset = interpolationWidthSourceReadStop;
+ finalOffset < this.widthPassResultSize;
+ pixelOffset += this.originalWidthMultipliedByChannels,
+ finalOffset += this.targetWidthMultipliedByChannels
+ ) {
+ outputBuffer[finalOffset] = buffer[pixelOffset];
+ outputBuffer[finalOffset + 1] = buffer[pixelOffset + 1];
+ outputBuffer[finalOffset + 2] = buffer[pixelOffset + 2];
+ if (fourthChannel)
+ outputBuffer[finalOffset + 3] = buffer[pixelOffset + 3];
+ }
+ }
+
+ return outputBuffer;
+};
+
+Resize.prototype._resizeWidthRGBChannels = function (buffer, fourthChannel) {
+ const channelsNum = fourthChannel ? 4 : 3;
+ const ratioWeight = this.ratioWeightWidthPass;
+ const ratioWeightDivisor = 1 / ratioWeight;
+ const nextLineOffsetOriginalWidth =
+ this.originalWidthMultipliedByChannels - channelsNum + 1;
+ const nextLineOffsetTargetWidth =
+ this.targetWidthMultipliedByChannels - channelsNum + 1;
+ const output = this.outputWidthWorkBench;
+ const outputBuffer = this.widthBuffer;
+ const trustworthyColorsCount = this.outputWidthWorkBenchOpaquePixelsCount;
+
+ let weight = 0;
+ let amountToNext = 0;
+ let actualPosition = 0;
+ let currentPosition = 0;
+ let line = 0;
+ let pixelOffset = 0;
+ let outputOffset = 0;
+ let multiplier = 1;
+ let r = 0;
+ let g = 0;
+ let b = 0;
+ let a = 0;
+
+ do {
+ for (line = 0; line < this.originalHeightMultipliedByChannels; ) {
+ output[line++] = 0;
+ output[line++] = 0;
+ output[line++] = 0;
+ if (fourthChannel) {
+ output[line++] = 0;
+ trustworthyColorsCount[line / channelsNum - 1] = 0;
+ }
+ }
+
+ weight = ratioWeight;
+
+ do {
+ amountToNext = 1 + actualPosition - currentPosition;
+ multiplier = Math.min(weight, amountToNext);
+ for (
+ line = 0, pixelOffset = actualPosition;
+ line < this.originalHeightMultipliedByChannels;
+ pixelOffset += nextLineOffsetOriginalWidth
+ ) {
+ r = buffer[pixelOffset];
+ g = buffer[++pixelOffset];
+ b = buffer[++pixelOffset];
+ a = fourthChannel ? buffer[++pixelOffset] : 255;
+ // Ignore RGB values if pixel is completely transparent
+ output[line++] += (a ? r : 0) * multiplier;
+ output[line++] += (a ? g : 0) * multiplier;
+ output[line++] += (a ? b : 0) * multiplier;
+ if (fourthChannel) {
+ output[line++] += a * multiplier;
+ trustworthyColorsCount[line / channelsNum - 1] += a ? multiplier : 0;
+ }
+ }
+
+ if (weight >= amountToNext) {
+ actualPosition += channelsNum;
+ currentPosition = actualPosition;
+ weight -= amountToNext;
+ } else {
+ currentPosition += weight;
+ break;
+ }
+ } while (
+ weight > 0 &&
+ actualPosition < this.originalWidthMultipliedByChannels
+ );
+
+ for (
+ line = 0, pixelOffset = outputOffset;
+ line < this.originalHeightMultipliedByChannels;
+ pixelOffset += nextLineOffsetTargetWidth
+ ) {
+ weight = fourthChannel ? trustworthyColorsCount[line / channelsNum] : 1;
+ multiplier = fourthChannel
+ ? weight
+ ? 1 / weight
+ : 0
+ : ratioWeightDivisor;
+ outputBuffer[pixelOffset] = output[line++] * multiplier;
+ outputBuffer[++pixelOffset] = output[line++] * multiplier;
+ outputBuffer[++pixelOffset] = output[line++] * multiplier;
+ if (fourthChannel)
+ outputBuffer[++pixelOffset] = output[line++] * ratioWeightDivisor;
+ }
+
+ outputOffset += channelsNum;
+ } while (outputOffset < this.targetWidthMultipliedByChannels);
+
+ return outputBuffer;
+};
+
+Resize.prototype._resizeHeightRGBChannels = function (buffer, fourthChannel) {
+ const ratioWeight = this.ratioWeightHeightPass;
+ const ratioWeightDivisor = 1 / ratioWeight;
+ const output = this.outputHeightWorkBench;
+ const outputBuffer = this.heightBuffer;
+ const trustworthyColorsCount = this.outputHeightWorkBenchOpaquePixelsCount;
+
+ let weight = 0;
+ let amountToNext = 0;
+ let actualPosition = 0;
+ let currentPosition = 0;
+ let pixelOffset = 0;
+ let outputOffset = 0;
+ let caret = 0;
+ let multiplier = 1;
+ let r = 0;
+ let g = 0;
+ let b = 0;
+ let a = 0;
+
+ do {
+ for (
+ pixelOffset = 0;
+ pixelOffset < this.targetWidthMultipliedByChannels;
+
+ ) {
+ output[pixelOffset++] = 0;
+ output[pixelOffset++] = 0;
+ output[pixelOffset++] = 0;
+
+ if (fourthChannel) {
+ output[pixelOffset++] = 0;
+ trustworthyColorsCount[pixelOffset / 4 - 1] = 0;
+ }
+ }
+
+ weight = ratioWeight;
+
+ do {
+ amountToNext = 1 + actualPosition - currentPosition;
+ multiplier = Math.min(weight, amountToNext);
+ caret = actualPosition;
+
+ for (
+ pixelOffset = 0;
+ pixelOffset < this.targetWidthMultipliedByChannels;
+
+ ) {
+ r = buffer[caret++];
+ g = buffer[caret++];
+ b = buffer[caret++];
+ a = fourthChannel ? buffer[caret++] : 255;
+ // Ignore RGB values if pixel is completely transparent
+ output[pixelOffset++] += (a ? r : 0) * multiplier;
+ output[pixelOffset++] += (a ? g : 0) * multiplier;
+ output[pixelOffset++] += (a ? b : 0) * multiplier;
+
+ if (fourthChannel) {
+ output[pixelOffset++] += a * multiplier;
+ trustworthyColorsCount[pixelOffset / 4 - 1] += a ? multiplier : 0;
+ }
+ }
+
+ if (weight >= amountToNext) {
+ actualPosition = caret;
+ currentPosition = actualPosition;
+ weight -= amountToNext;
+ } else {
+ currentPosition += weight;
+ break;
+ }
+ } while (weight > 0 && actualPosition < this.widthPassResultSize);
+
+ for (
+ pixelOffset = 0;
+ pixelOffset < this.targetWidthMultipliedByChannels;
+
+ ) {
+ weight = fourthChannel ? trustworthyColorsCount[pixelOffset / 4] : 1;
+ multiplier = fourthChannel
+ ? weight
+ ? 1 / weight
+ : 0
+ : ratioWeightDivisor;
+ outputBuffer[outputOffset++] = Math.round(
+ output[pixelOffset++] * multiplier
+ );
+ outputBuffer[outputOffset++] = Math.round(
+ output[pixelOffset++] * multiplier
+ );
+ outputBuffer[outputOffset++] = Math.round(
+ output[pixelOffset++] * multiplier
+ );
+
+ if (fourthChannel) {
+ outputBuffer[outputOffset++] = Math.round(
+ output[pixelOffset++] * ratioWeightDivisor
+ );
+ }
+ }
+ } while (outputOffset < this.finalResultSize);
+
+ return outputBuffer;
+};
+
+Resize.prototype.resizeWidthInterpolatedRGB = function (buffer) {
+ return this._resizeWidthInterpolatedRGBChannels(buffer, false);
+};
+
+Resize.prototype.resizeWidthInterpolatedRGBA = function (buffer) {
+ return this._resizeWidthInterpolatedRGBChannels(buffer, true);
+};
+
+Resize.prototype.resizeWidthRGB = function (buffer) {
+ return this._resizeWidthRGBChannels(buffer, false);
+};
+
+Resize.prototype.resizeWidthRGBA = function (buffer) {
+ return this._resizeWidthRGBChannels(buffer, true);
+};
+
+Resize.prototype.resizeHeightInterpolated = function (buffer) {
+ const ratioWeight = this.ratioWeightHeightPass;
+ const outputBuffer = this.heightBuffer;
+
+ let weight = 0;
+ let finalOffset = 0;
+ let pixelOffset = 0;
+ let pixelOffsetAccumulated = 0;
+ let pixelOffsetAccumulated2 = 0;
+ let firstWeight = 0;
+ let secondWeight = 0;
+ let interpolationHeightSourceReadStop;
+
+ // Handle for only one interpolation input being valid for start calculation:
+ for (; weight < 1 / 3; weight += ratioWeight) {
+ for (
+ pixelOffset = 0;
+ pixelOffset < this.targetWidthMultipliedByChannels;
+
+ ) {
+ outputBuffer[finalOffset++] = Math.round(buffer[pixelOffset++]);
+ }
+ }
+
+ // Adjust for overshoot of the last pass's counter:
+ weight -= 1 / 3;
+
+ for (
+ interpolationHeightSourceReadStop = this.heightOriginal - 1;
+ weight < interpolationHeightSourceReadStop;
+ weight += ratioWeight
+ ) {
+ // Calculate weightings:
+ secondWeight = weight % 1;
+ firstWeight = 1 - secondWeight;
+ // Interpolate:
+ pixelOffsetAccumulated =
+ Math.floor(weight) * this.targetWidthMultipliedByChannels;
+ pixelOffsetAccumulated2 =
+ pixelOffsetAccumulated + this.targetWidthMultipliedByChannels;
+ for (
+ pixelOffset = 0;
+ pixelOffset < this.targetWidthMultipliedByChannels;
+ ++pixelOffset
+ ) {
+ outputBuffer[finalOffset++] = Math.round(
+ buffer[pixelOffsetAccumulated++] * firstWeight +
+ buffer[pixelOffsetAccumulated2++] * secondWeight
+ );
+ }
+ }
+
+ // Handle for only one interpolation input being valid for end calculation:
+ while (finalOffset < this.finalResultSize) {
+ for (
+ pixelOffset = 0,
+ pixelOffsetAccumulated =
+ interpolationHeightSourceReadStop *
+ this.targetWidthMultipliedByChannels;
+ pixelOffset < this.targetWidthMultipliedByChannels;
+ ++pixelOffset
+ ) {
+ outputBuffer[finalOffset++] = Math.round(
+ buffer[pixelOffsetAccumulated++]
+ );
+ }
+ }
+
+ return outputBuffer;
+};
+
+Resize.prototype.resizeHeightRGB = function (buffer) {
+ return this._resizeHeightRGBChannels(buffer, false);
+};
+
+Resize.prototype.resizeHeightRGBA = function (buffer) {
+ return this._resizeHeightRGBChannels(buffer, true);
+};
+
+Resize.prototype.resize = function (buffer) {
+ this.resizeCallback(this.resizeHeight(this.resizeWidth(buffer)));
+};
+
+Resize.prototype.bypassResizer = function (buffer) {
+ // Just return the buffer passed:
+ return buffer;
+};
+
+Resize.prototype.initializeFirstPassBuffers = function (BILINEARAlgo) {
+ // Initialize the internal width pass buffers:
+ this.widthBuffer = this.generateFloatBuffer(this.widthPassResultSize);
+
+ if (!BILINEARAlgo) {
+ this.outputWidthWorkBench = this.generateFloatBuffer(
+ this.originalHeightMultipliedByChannels
+ );
+
+ if (this.colorChannels > 3) {
+ this.outputWidthWorkBenchOpaquePixelsCount = this.generateFloat64Buffer(
+ this.heightOriginal
+ );
+ }
+ }
+};
+
+Resize.prototype.initializeSecondPassBuffers = function (BILINEARAlgo) {
+ // Initialize the internal height pass buffers:
+ this.heightBuffer = this.generateUint8Buffer(this.finalResultSize);
+
+ if (!BILINEARAlgo) {
+ this.outputHeightWorkBench = this.generateFloatBuffer(
+ this.targetWidthMultipliedByChannels
+ );
+
+ if (this.colorChannels > 3) {
+ this.outputHeightWorkBenchOpaquePixelsCount = this.generateFloat64Buffer(
+ this.targetWidth
+ );
+ }
+ }
+};
+
+Resize.prototype.generateFloatBuffer = function (bufferLength) {
+ // Generate a float32 typed array buffer:
+ try {
+ return new Float32Array(bufferLength);
+ } catch (error) {
+ return [];
+ }
+};
+
+Resize.prototype.generateFloat64Buffer = function (bufferLength) {
+ // Generate a float64 typed array buffer:
+ try {
+ return new Float64Array(bufferLength);
+ } catch (error) {
+ return [];
+ }
+};
+
+Resize.prototype.generateUint8Buffer = function (bufferLength) {
+ // Generate a uint8 typed array buffer:
+ try {
+ return new Uint8Array(bufferLength);
+ } catch (error) {
+ return [];
+ }
+};
+
+module.exports = Resize;
diff --git a/node_modules/@jimp/plugin-resize/src/modules/resize2.js b/node_modules/@jimp/plugin-resize/src/modules/resize2.js
new file mode 100644
index 00000000..0b74dc8f
--- /dev/null
+++ b/node_modules/@jimp/plugin-resize/src/modules/resize2.js
@@ -0,0 +1,293 @@
+/**
+ * Copyright (c) 2015 Guyon Roche
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+module.exports = {
+ nearestNeighbor(src, dst) {
+ const wSrc = src.width;
+ const hSrc = src.height;
+
+ const wDst = dst.width;
+ const hDst = dst.height;
+
+ const bufSrc = src.data;
+ const bufDst = dst.data;
+
+ for (let i = 0; i < hDst; i++) {
+ for (let j = 0; j < wDst; j++) {
+ let posDst = (i * wDst + j) * 4;
+
+ const iSrc = Math.floor((i * hSrc) / hDst);
+ const jSrc = Math.floor((j * wSrc) / wDst);
+ let posSrc = (iSrc * wSrc + jSrc) * 4;
+
+ bufDst[posDst++] = bufSrc[posSrc++];
+ bufDst[posDst++] = bufSrc[posSrc++];
+ bufDst[posDst++] = bufSrc[posSrc++];
+ bufDst[posDst++] = bufSrc[posSrc++];
+ }
+ }
+ },
+
+ bilinearInterpolation(src, dst) {
+ const wSrc = src.width;
+ const hSrc = src.height;
+
+ const wDst = dst.width;
+ const hDst = dst.height;
+
+ const bufSrc = src.data;
+ const bufDst = dst.data;
+
+ const interpolate = function (k, kMin, vMin, kMax, vMax) {
+ // special case - k is integer
+ if (kMin === kMax) {
+ return vMin;
+ }
+
+ return Math.round((k - kMin) * vMax + (kMax - k) * vMin);
+ };
+
+ const assign = function (pos, offset, x, xMin, xMax, y, yMin, yMax) {
+ let posMin = (yMin * wSrc + xMin) * 4 + offset;
+ let posMax = (yMin * wSrc + xMax) * 4 + offset;
+ const vMin = interpolate(x, xMin, bufSrc[posMin], xMax, bufSrc[posMax]);
+
+ // special case, y is integer
+ if (yMax === yMin) {
+ bufDst[pos + offset] = vMin;
+ } else {
+ posMin = (yMax * wSrc + xMin) * 4 + offset;
+ posMax = (yMax * wSrc + xMax) * 4 + offset;
+ const vMax = interpolate(x, xMin, bufSrc[posMin], xMax, bufSrc[posMax]);
+
+ bufDst[pos + offset] = interpolate(y, yMin, vMin, yMax, vMax);
+ }
+ };
+
+ for (let i = 0; i < hDst; i++) {
+ for (let j = 0; j < wDst; j++) {
+ const posDst = (i * wDst + j) * 4;
+ // x & y in src coordinates
+ const x = (j * wSrc) / wDst;
+ const xMin = Math.floor(x);
+ const xMax = Math.min(Math.ceil(x), wSrc - 1);
+
+ const y = (i * hSrc) / hDst;
+ const yMin = Math.floor(y);
+ const yMax = Math.min(Math.ceil(y), hSrc - 1);
+
+ assign(posDst, 0, x, xMin, xMax, y, yMin, yMax);
+ assign(posDst, 1, x, xMin, xMax, y, yMin, yMax);
+ assign(posDst, 2, x, xMin, xMax, y, yMin, yMax);
+ assign(posDst, 3, x, xMin, xMax, y, yMin, yMax);
+ }
+ }
+ },
+
+ _interpolate2D(src, dst, options, interpolate) {
+ const bufSrc = src.data;
+ const bufDst = dst.data;
+
+ const wSrc = src.width;
+ const hSrc = src.height;
+
+ const wDst = dst.width;
+ const hDst = dst.height;
+
+ // when dst smaller than src/2, interpolate first to a multiple between 0.5 and 1.0 src, then sum squares
+ const wM = Math.max(1, Math.floor(wSrc / wDst));
+ const wDst2 = wDst * wM;
+ const hM = Math.max(1, Math.floor(hSrc / hDst));
+ const hDst2 = hDst * hM;
+
+ // ===========================================================
+ // Pass 1 - interpolate rows
+ // buf1 has width of dst2 and height of src
+ const buf1 = Buffer.alloc(wDst2 * hSrc * 4);
+ for (let i = 0; i < hSrc; i++) {
+ for (let j = 0; j < wDst2; j++) {
+ // i in src coords, j in dst coords
+
+ // calculate x in src coords
+ // this interpolation requires 4 sample points and the two inner ones must be real
+ // the outer points can be fudged for the edges.
+ // therefore (wSrc-1)/wDst2
+ const x = (j * (wSrc - 1)) / wDst2;
+ const xPos = Math.floor(x);
+ const t = x - xPos;
+ const srcPos = (i * wSrc + xPos) * 4;
+ const buf1Pos = (i * wDst2 + j) * 4;
+
+ for (let k = 0; k < 4; k++) {
+ const kPos = srcPos + k;
+ const x0 =
+ xPos > 0 ? bufSrc[kPos - 4] : 2 * bufSrc[kPos] - bufSrc[kPos + 4];
+ const x1 = bufSrc[kPos];
+ const x2 = bufSrc[kPos + 4];
+ const x3 =
+ xPos < wSrc - 2
+ ? bufSrc[kPos + 8]
+ : 2 * bufSrc[kPos + 4] - bufSrc[kPos];
+ buf1[buf1Pos + k] = interpolate(x0, x1, x2, x3, t);
+ }
+ }
+ }
+ // this._writeFile(wDst2, hSrc, buf1, "out/buf1.jpg");
+
+ // ===========================================================
+ // Pass 2 - interpolate columns
+ // buf2 has width and height of dst2
+ const buf2 = Buffer.alloc(wDst2 * hDst2 * 4);
+ for (let i = 0; i < hDst2; i++) {
+ for (let j = 0; j < wDst2; j++) {
+ // i&j in dst2 coords
+
+ // calculate y in buf1 coords
+ // this interpolation requires 4 sample points and the two inner ones must be real
+ // the outer points can be fudged for the edges.
+ // therefore (hSrc-1)/hDst2
+ const y = (i * (hSrc - 1)) / hDst2;
+ const yPos = Math.floor(y);
+ const t = y - yPos;
+ const buf1Pos = (yPos * wDst2 + j) * 4;
+ const buf2Pos = (i * wDst2 + j) * 4;
+ for (let k = 0; k < 4; k++) {
+ const kPos = buf1Pos + k;
+ const y0 =
+ yPos > 0
+ ? buf1[kPos - wDst2 * 4]
+ : 2 * buf1[kPos] - buf1[kPos + wDst2 * 4];
+ const y1 = buf1[kPos];
+ const y2 = buf1[kPos + wDst2 * 4];
+ const y3 =
+ yPos < hSrc - 2
+ ? buf1[kPos + wDst2 * 8]
+ : 2 * buf1[kPos + wDst2 * 4] - buf1[kPos];
+
+ buf2[buf2Pos + k] = interpolate(y0, y1, y2, y3, t);
+ }
+ }
+ }
+ // this._writeFile(wDst2, hDst2, buf2, "out/buf2.jpg");
+
+ // ===========================================================
+ // Pass 3 - scale to dst
+ const m = wM * hM;
+ if (m > 1) {
+ for (let i = 0; i < hDst; i++) {
+ for (let j = 0; j < wDst; j++) {
+ // i&j in dst bounded coords
+ let r = 0;
+ let g = 0;
+ let b = 0;
+ let a = 0;
+ let realColors = 0;
+
+ for (let y = 0; y < hM; y++) {
+ const yPos = i * hM + y;
+
+ for (let x = 0; x < wM; x++) {
+ const xPos = j * wM + x;
+ const xyPos = (yPos * wDst2 + xPos) * 4;
+ const pixelAlpha = buf2[xyPos + 3];
+
+ if (pixelAlpha) {
+ r += buf2[xyPos];
+ g += buf2[xyPos + 1];
+ b += buf2[xyPos + 2];
+ realColors++;
+ }
+
+ a += pixelAlpha;
+ }
+ }
+
+ const pos = (i * wDst + j) * 4;
+ bufDst[pos] = realColors ? Math.round(r / realColors) : 0;
+ bufDst[pos + 1] = realColors ? Math.round(g / realColors) : 0;
+ bufDst[pos + 2] = realColors ? Math.round(b / realColors) : 0;
+ bufDst[pos + 3] = Math.round(a / m);
+ }
+ }
+ } else {
+ // replace dst buffer with buf2
+ dst.data = buf2;
+ }
+ },
+
+ bicubicInterpolation(src, dst, options) {
+ const interpolateCubic = function (x0, x1, x2, x3, t) {
+ const a0 = x3 - x2 - x0 + x1;
+ const a1 = x0 - x1 - a0;
+ const a2 = x2 - x0;
+ const a3 = x1;
+ return Math.max(
+ 0,
+ Math.min(255, a0 * (t * t * t) + a1 * (t * t) + a2 * t + a3)
+ );
+ };
+
+ return this._interpolate2D(src, dst, options, interpolateCubic);
+ },
+
+ hermiteInterpolation(src, dst, options) {
+ const interpolateHermite = function (x0, x1, x2, x3, t) {
+ const c0 = x1;
+ const c1 = 0.5 * (x2 - x0);
+ const c2 = x0 - 2.5 * x1 + 2 * x2 - 0.5 * x3;
+ const c3 = 0.5 * (x3 - x0) + 1.5 * (x1 - x2);
+ return Math.max(
+ 0,
+ Math.min(255, Math.round(((c3 * t + c2) * t + c1) * t + c0))
+ );
+ };
+
+ return this._interpolate2D(src, dst, options, interpolateHermite);
+ },
+
+ bezierInterpolation(src, dst, options) {
+ // between 2 points y(n), y(n+1), use next points out, y(n-1), y(n+2)
+ // to predict control points (a & b) to be placed at n+0.5
+ // ya(n) = y(n) + (y(n+1)-y(n-1))/4
+ // yb(n) = y(n+1) - (y(n+2)-y(n))/4
+ // then use std bezier to interpolate [n,n+1)
+ // y(n+t) = y(n)*(1-t)^3 + 3 * ya(n)*(1-t)^2*t + 3 * yb(n)*(1-t)*t^2 + y(n+1)*t^3
+ // note the 3* factor for the two control points
+ // for edge cases, can choose:
+ // y(-1) = y(0) - 2*(y(1)-y(0))
+ // y(w) = y(w-1) + 2*(y(w-1)-y(w-2))
+ // but can go with y(-1) = y(0) and y(w) = y(w-1)
+ const interpolateBezier = function (x0, x1, x2, x3, t) {
+ // x1, x2 are the knots, use x0 and x3 to calculate control points
+ const cp1 = x1 + (x2 - x0) / 4;
+ const cp2 = x2 - (x3 - x1) / 4;
+ const nt = 1 - t;
+ const c0 = x1 * nt * nt * nt;
+ const c1 = 3 * cp1 * nt * nt * t;
+ const c2 = 3 * cp2 * nt * t * t;
+ const c3 = x2 * t * t * t;
+ return Math.max(0, Math.min(255, Math.round(c0 + c1 + c2 + c3)));
+ };
+
+ return this._interpolate2D(src, dst, options, interpolateBezier);
+ },
+};
diff --git a/node_modules/@jimp/plugin-resize/test/resize.test.js b/node_modules/@jimp/plugin-resize/test/resize.test.js
new file mode 100644
index 00000000..7f759084
--- /dev/null
+++ b/node_modules/@jimp/plugin-resize/test/resize.test.js
@@ -0,0 +1,301 @@
+import { Jimp, mkJGD, hashForEach } from "@jimp/test-utils";
+import configure from "@jimp/custom";
+
+import resize from "../src";
+
+const jimp = configure({ plugins: [resize] }, Jimp);
+
+describe("Resize images", () => {
+ const testImages = [
+ {
+ title: "max contrast 8x8",
+ src: jimp.read(
+ mkJGD(
+ "■■■■□□□□",
+ "■■■■□□□□",
+ "■■■■□□□□",
+ "■■■■□□□□",
+ "□□□□■■■■",
+ "□□□□■■■■",
+ "□□□□■■■■",
+ "□□□□■■■■"
+ )
+ ),
+ results: {
+ "default 4x4": mkJGD("■■□□", "■■□□", "□□■■", "□□■■"),
+ "NEAREST_NEIGHBOR 4x4": mkJGD("■■□□", "■■□□", "□□■■", "□□■■"),
+ "BILINEAR 4x4": mkJGD("■■□□", "■■□□", "□□■■", "□□■■"),
+ "BICUBIC 4x4": {
+ width: 4,
+ height: 4,
+ data: [
+ 0x000000ff, 0x000000ff, 0xbfbfbfff, 0xffffffff, 0x000000ff,
+ 0x000000ff, 0xbfbfbfff, 0xffffffff, 0xbfbfbfff, 0xbfbfbfff,
+ 0x5f5f5fff, 0x404040ff, 0xffffffff, 0xffffffff, 0x404040ff,
+ 0x000000ff,
+ ],
+ },
+ "HERMITE 4x4": {
+ width: 4,
+ height: 4,
+ data: [
+ 0x000000ff, 0x000000ff, 0xc0c0c0ff, 0xffffffff, 0x000000ff,
+ 0x000000ff, 0xc0c0c0ff, 0xffffffff, 0xc0c0c0ff, 0xc0c0c0ff,
+ 0x606060ff, 0x404040ff, 0xffffffff, 0xffffffff, 0x404040ff,
+ 0x000000ff,
+ ],
+ },
+ "BEZIER 4x4": {
+ width: 4,
+ height: 4,
+ data: [
+ 0x000000ff, 0x000000ff, 0xc0c0c0ff, 0xffffffff, 0x000000ff,
+ 0x000000ff, 0xc0c0c0ff, 0xffffffff, 0xc0c0c0ff, 0xc0c0c0ff,
+ 0x606060ff, 0x404040ff, 0xffffffff, 0xffffffff, 0x404040ff,
+ 0x000000ff,
+ ],
+ },
+ "default 5x2": mkJGD("■■▦□□", "□□▦■■"),
+ "NEAREST_NEIGHBOR 5x2": mkJGD("■■■□□", "□□□■■"),
+ "BILINEAR 5x2": mkJGD("■■3□□", "□□C■■"),
+ "BICUBIC 5x2": {
+ width: 5,
+ height: 2,
+ data: [
+ 0x000000ff, 0x000000ff, 0x000000ff, 0xffffffff, 0xffffffff,
+ 0xdfdfdfff, 0xdfdfdfff, 0xdfdfdfff, 0x202020ff, 0x202020ff,
+ ],
+ },
+ "HERMITE 5x2": {
+ width: 5,
+ height: 2,
+ data: [
+ 0x000000ff, 0x000000ff, 0x000000ff, 0xffffffff, 0xffffffff,
+ 0xdfdfdfff, 0xdfdfdfff, 0xdfdfdfff, 0x202020ff, 0x202020ff,
+ ],
+ },
+ "BEZIER 5x2": {
+ width: 5,
+ height: 2,
+ data: [
+ 0x000000ff, 0x000000ff, 0x000000ff, 0xffffffff, 0xffffffff,
+ 0xdfdfdfff, 0xdfdfdfff, 0xdfdfdfff, 0x202020ff, 0x202020ff,
+ ],
+ },
+ },
+ },
+ /**********************************************************************/
+ {
+ title: "max contrast 12x12 with dots",
+ src: jimp.read(
+ mkJGD(
+ "■■■■■■□□□□□□",
+ "■■■■■■□□□□□□",
+ "■■■□■■□□■□□□",
+ "■■■■■■□□□□□□",
+ "■■■■■■□□□□□□",
+ "■■■■■■□□□□□□",
+ "□□□□□□■■■■■■",
+ "□□□□□□■■■■■■",
+ "□□□□□□■■■■■■",
+ "□□□■□□■■□■■■",
+ "□□□□□□■■■■■■",
+ "□□□□□□■■■■■■"
+ )
+ ),
+ results: {
+ "default 6x6": mkJGD(
+ "■■■□□□",
+ "■▩■□▥□",
+ "■■■□□□",
+ "□□□■■■",
+ "□▥□■▩■",
+ "□□□■■■"
+ ),
+ "NEAREST_NEIGHBOR 6x6": mkJGD(
+ "■■■□□□",
+ "■■■□■□",
+ "■■■□□□",
+ "□□□■■■",
+ "□□□■■■",
+ "□□□■■■"
+ ),
+ "BILINEAR 6x6": mkJGD(
+ "■■■□□□",
+ "■■■□■□",
+ "■■■□□□",
+ "□□□■■■",
+ "□□□■■■",
+ "□□□■■■"
+ ),
+ "BICUBIC 6x6": {
+ width: 6,
+ height: 6,
+ data: [
+ 0x000000ff, 0x000000ff, 0x000000ff, 0xbfbfbfff, 0xffffffff,
+ 0xffffffff, 0x000000ff, 0x474747ff, 0x202020ff, 0xbfbfbfff,
+ 0x979797ff, 0xffffffff, 0x000000ff, 0x000000ff, 0x000000ff,
+ 0xbfbfbfff, 0xffffffff, 0xffffffff, 0xbfbfbfff, 0xbfbfbfff,
+ 0xbfbfbfff, 0x5f5f5fff, 0x404040ff, 0x404040ff, 0xffffffff,
+ 0xeeeeeeff, 0xf7f7f7ff, 0x404040ff, 0x181818ff, 0x000000ff,
+ 0xffffffff, 0xc9c9c9ff, 0xe6e6e6ff, 0x404040ff, 0x4e4e4eff,
+ 0x000000ff,
+ ],
+ },
+ "HERMITE 6x6": {
+ width: 6,
+ height: 6,
+ data: [
+ 0x000000ff, 0x000000ff, 0x000000ff, 0xc0c0c0ff, 0xffffffff,
+ 0xffffffff, 0x000000ff, 0x404040ff, 0x191919ff, 0xc0c0c0ff,
+ 0xa6a6a6ff, 0xffffffff, 0x000000ff, 0x000000ff, 0x000000ff,
+ 0xc0c0c0ff, 0xffffffff, 0xffffffff, 0xc0c0c0ff, 0xc0c0c0ff,
+ 0xc0c0c0ff, 0x606060ff, 0x404040ff, 0x404040ff, 0xffffffff,
+ 0xf3f3f3ff, 0xfafafaff, 0x404040ff, 0x111111ff, 0x000000ff,
+ 0xffffffff, 0xcbcbcbff, 0xebebebff, 0x404040ff, 0x484848ff,
+ 0x000000ff,
+ ],
+ },
+ "BEZIER 6x6": {
+ width: 6,
+ height: 6,
+ data: [
+ 0x000000ff, 0x000000ff, 0x000000ff, 0xc0c0c0ff, 0xffffffff,
+ 0xffffffff, 0x000000ff, 0x444444ff, 0x1d1d1dff, 0xc0c0c0ff,
+ 0x9f9f9fff, 0xffffffff, 0x000000ff, 0x000000ff, 0x000000ff,
+ 0xc0c0c0ff, 0xffffffff, 0xffffffff, 0xc0c0c0ff, 0xc0c0c0ff,
+ 0xc0c0c0ff, 0x606060ff, 0x404040ff, 0x404040ff, 0xffffffff,
+ 0xf0f0f0ff, 0xf9f9f9ff, 0x404040ff, 0x151515ff, 0x000000ff,
+ 0xffffffff, 0xcacacaff, 0xe9e9e9ff, 0x404040ff, 0x4b4b4bff,
+ 0x000000ff,
+ ],
+ },
+ },
+ },
+ /**********************************************************************/
+ {
+ title: "mutch contrast 4x4",
+ src: jimp.read(mkJGD("▩▩▥▥", "▩▩▥▥", "▥▥▩▩", "▥▥▩▩")),
+ results: {
+ "default 6x6": {
+ width: 6,
+ height: 6,
+ data: [
+ 0x404040ff, 0x404040ff, 0x404040ff, 0x959595ff, 0xbfbfbfff,
+ 0xbfbfbfff, 0x404040ff, 0x404040ff, 0x404040ff, 0x959595ff,
+ 0xbfbfbfff, 0xbfbfbfff, 0x404040ff, 0x404040ff, 0x404040ff,
+ 0x959595ff, 0xbfbfbfff, 0xbfbfbfff, 0x959595ff, 0x959595ff,
+ 0x959595ff, 0x787878ff, 0x6a6a6aff, 0x6a6a6aff, 0xbfbfbfff,
+ 0xbfbfbfff, 0xbfbfbfff, 0x6a6a6aff, 0x404040ff, 0x404040ff,
+ 0xbfbfbfff, 0xbfbfbfff, 0xbfbfbfff, 0x6a6a6aff, 0x404040ff,
+ 0x404040ff,
+ ],
+ },
+ "NEAREST_NEIGHBOR 6x6": {
+ width: 6,
+ height: 6,
+ data: [
+ 0x404040ff, 0x404040ff, 0x404040ff, 0xbfbfbfff, 0xbfbfbfff,
+ 0xbfbfbfff, 0x404040ff, 0x404040ff, 0x404040ff, 0xbfbfbfff,
+ 0xbfbfbfff, 0xbfbfbfff, 0x404040ff, 0x404040ff, 0x404040ff,
+ 0xbfbfbfff, 0xbfbfbfff, 0xbfbfbfff, 0xbfbfbfff, 0xbfbfbfff,
+ 0xbfbfbfff, 0x404040ff, 0x404040ff, 0x404040ff, 0xbfbfbfff,
+ 0xbfbfbfff, 0xbfbfbfff, 0x404040ff, 0x404040ff, 0x404040ff,
+ 0xbfbfbfff, 0xbfbfbfff, 0xbfbfbfff, 0x404040ff, 0x404040ff,
+ 0x404040ff,
+ ],
+ },
+ "BILINEAR 6x6": {
+ width: 6,
+ height: 6,
+ data: [
+ 0x404040ff, 0x404040ff, 0x6a6a6aff, 0xbfbfbfff, 0xbfbfbfff,
+ 0xbfbfbfff, 0x404040ff, 0x404040ff, 0x6a6a6aff, 0xbfbfbfff,
+ 0xbfbfbfff, 0xbfbfbfff, 0x6a6a6aff, 0x6a6a6aff, 0x787878ff,
+ 0x959595ff, 0x959595ff, 0x959595ff, 0xbfbfbfff, 0xbfbfbfff,
+ 0x959595ff, 0x404040ff, 0x404040ff, 0x404040ff, 0xbfbfbfff,
+ 0xbfbfbfff, 0x959595ff, 0x404040ff, 0x404040ff, 0x404040ff,
+ 0xbfbfbfff, 0xbfbfbfff, 0x959595ff, 0x404040ff, 0x404040ff,
+ 0x404040ff,
+ ],
+ },
+ "BICUBIC 6x6": {
+ width: 6,
+ height: 6,
+ data: [
+ 0x404040ff, 0x303030ff, 0x404040ff, 0x7f7f7fff, 0xbfbfbfff,
+ 0xcececeff, 0x303030ff, 0x1c1c1cff, 0x303030ff, 0x7f7f7fff,
+ 0xcececeff, 0xe1e1e1ff, 0x404040ff, 0x303030ff, 0x404040ff,
+ 0x7f7f7fff, 0xbfbfbfff, 0xcececeff, 0x7f7f7fff, 0x7f7f7fff,
+ 0x7f7f7fff, 0x7f7f7fff, 0x7f7f7fff, 0x7f7f7fff, 0xbfbfbfff,
+ 0xcececeff, 0xbfbfbfff, 0x7f7f7fff, 0x404040ff, 0x303030ff,
+ 0xcececeff, 0xe1e1e1ff, 0xcececeff, 0x7f7f7fff, 0x303030ff,
+ 0x1c1c1cff,
+ ],
+ },
+ "HERMITE 6x6": {
+ width: 6,
+ height: 6,
+ data: [
+ 0x404040ff, 0x383838ff, 0x404040ff, 0x808080ff, 0xbfbfbfff,
+ 0xc7c7c7ff, 0x383838ff, 0x2f2f2fff, 0x383838ff, 0x808080ff,
+ 0xc7c7c7ff, 0xd0d0d0ff, 0x404040ff, 0x383838ff, 0x404040ff,
+ 0x808080ff, 0xbfbfbfff, 0xc7c7c7ff, 0x808080ff, 0x808080ff,
+ 0x808080ff, 0x808080ff, 0x808080ff, 0x808080ff, 0xbfbfbfff,
+ 0xc7c7c7ff, 0xbfbfbfff, 0x808080ff, 0x404040ff, 0x383838ff,
+ 0xc7c7c7ff, 0xd0d0d0ff, 0xc7c7c7ff, 0x808080ff, 0x383838ff,
+ 0x2f2f2fff,
+ ],
+ },
+ "BEZIER 6x6": {
+ width: 6,
+ height: 6,
+ data: [
+ 0x404040ff, 0x343434ff, 0x404040ff, 0x808080ff, 0xbfbfbfff,
+ 0xcbcbcbff, 0x343434ff, 0x262626ff, 0x343434ff, 0x808080ff,
+ 0xcbcbcbff, 0xd9d9d9ff, 0x404040ff, 0x343434ff, 0x404040ff,
+ 0x808080ff, 0xbfbfbfff, 0xcbcbcbff, 0x808080ff, 0x808080ff,
+ 0x808080ff, 0x808080ff, 0x808080ff, 0x808080ff, 0xbfbfbfff,
+ 0xcbcbcbff, 0xbfbfbfff, 0x808080ff, 0x404040ff, 0x343434ff,
+ 0xcbcbcbff, 0xd9d9d9ff, 0xcbcbcbff, 0x808080ff, 0x343434ff,
+ 0x262626ff,
+ ],
+ },
+ },
+ },
+ ];
+
+ before((done) => {
+ const srcImgs = testImages.map((test) => test.src);
+ Promise.all(srcImgs)
+ .then((imgsJimp) => {
+ for (let i = 0; i < imgsJimp.length; i++) {
+ testImages[i].src = imgsJimp[i];
+ }
+
+ done();
+ })
+ .catch(done);
+ });
+
+ function testEach(test) {
+ describe(test.title, () => {
+ hashForEach(test.results, (expectedTitle, expectedJgd) => {
+ const mode = Jimp["RESIZE_" + expectedTitle.split(" ")[0]];
+ const size = expectedTitle
+ .split(" ")[1]
+ .split("x")
+ .map((n) => parseInt(n, 10));
+ it("to " + expectedTitle, () => {
+ test.src
+ .clone()
+ .resize(size[0], size[1], mode)
+ .getJGDSync()
+ .should.be.sameJGD(expectedJgd);
+ });
+ });
+ });
+ }
+
+ testImages.forEach(testEach);
+});
diff --git a/node_modules/@jimp/plugin-rotate/CHANGELOG.md b/node_modules/@jimp/plugin-rotate/CHANGELOG.md
new file mode 100644
index 00000000..4eb3193f
--- /dev/null
+++ b/node_modules/@jimp/plugin-rotate/CHANGELOG.md
@@ -0,0 +1,35 @@
+# v0.16.3 (Sat Feb 04 2023)
+
+#### ⚠️ Pushed to `master`
+
+- upgrade prettier ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 1
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+---
+
+# v0.11.0 (Fri May 15 2020)
+
+#### 🚀 Enhancement
+
+- Removed Core-JS as a dependency. [#882](https://github.com/oliver-moran/jimp/pull/882) ([@EricRabil](https://github.com/EricRabil))
+
+#### Authors: 1
+
+- Eric Rabil ([@EricRabil](https://github.com/EricRabil))
+
+---
+
+# v0.9.3 (Tue Nov 26 2019)
+
+#### 🐛 Bug Fix
+
+- `@jimp/cli`, `@jimp/core`, `@jimp/custom`, `jimp`, `@jimp/plugin-blit`, `@jimp/plugin-blur`, `@jimp/plugin-circle`, `@jimp/plugin-color`, `@jimp/plugin-contain`, `@jimp/plugin-cover`, `@jimp/plugin-crop`, `@jimp/plugin-displace`, `@jimp/plugin-dither`, `@jimp/plugin-fisheye`, `@jimp/plugin-flip`, `@jimp/plugin-gaussian`, `@jimp/plugin-invert`, `@jimp/plugin-mask`, `@jimp/plugin-normalize`, `@jimp/plugin-print`, `@jimp/plugin-resize`, `@jimp/plugin-rotate`, `@jimp/plugin-scale`, `@jimp/plugin-shadow`, `@jimp/plugin-threshold`, `@jimp/plugins`, `@jimp/test-utils`, `@jimp/bmp`, `@jimp/gif`, `@jimp/jpeg`, `@jimp/png`, `@jimp/tiff`, `@jimp/types`, `@jimp/utils`
+ - Fix regeneratorRuntime errors [#815](https://github.com/oliver-moran/jimp/pull/815) ([@crutchcorn](https://github.com/crutchcorn) [@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 2
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+- Corbin Crutchley ([@crutchcorn](https://github.com/crutchcorn))
diff --git a/project starter code/node_modules/@jimp/plugin-rotate/LICENSE b/node_modules/@jimp/plugin-rotate/LICENSE
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-rotate/LICENSE
rename to node_modules/@jimp/plugin-rotate/LICENSE
diff --git a/node_modules/@jimp/plugin-rotate/README.md b/node_modules/@jimp/plugin-rotate/README.md
new file mode 100644
index 00000000..6bacc7da
--- /dev/null
+++ b/node_modules/@jimp/plugin-rotate/README.md
@@ -0,0 +1,26 @@
+
+
+
@jimp/plugin-rotate
+
Rotate an image.
+
+
+Rotates the image clockwise by a number of degrees. By default the width and height of the image will be resized appropriately.
+
+## Usage
+
+- @param {number} deg the number of degrees to rotate the image by
+- @param {string|boolean} mode (optional) resize mode or a boolean, if false then the width and height of the image will not be changed
+- @param {function(Error, Jimp)} cb (optional) a callback for when complete
+
+```js
+import jimp from "jimp";
+
+async function main() {
+ const image = await jimp.read("test/image.png");
+
+ image.rotate(90);
+}
+
+main();
+```
diff --git a/node_modules/@jimp/plugin-rotate/dist/index.js b/node_modules/@jimp/plugin-rotate/dist/index.js
new file mode 100644
index 00000000..c0a1fb6f
--- /dev/null
+++ b/node_modules/@jimp/plugin-rotate/dist/index.js
@@ -0,0 +1,139 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports["default"] = void 0;
+
+var _utils = require("@jimp/utils");
+
+/**
+ * Rotates an image clockwise by an arbitrary number of degrees. NB: 'this' must be a Jimp object.
+ * @param {number} deg the number of degrees to rotate the image by
+ * @param {string|boolean} mode (optional) resize mode or a boolean, if false then the width and height of the image will not be changed
+ */
+function advancedRotate(deg, mode) {
+ deg %= 360;
+ var rad = deg * Math.PI / 180;
+ var cosine = Math.cos(rad);
+ var sine = Math.sin(rad); // the final width and height will change if resize == true
+
+ var w = this.bitmap.width;
+ var h = this.bitmap.height;
+
+ if (mode === true || typeof mode === "string") {
+ // resize the image to it maximum dimension and blit the existing image
+ // onto the center so that when it is rotated the image is kept in bounds
+ // http://stackoverflow.com/questions/3231176/how-to-get-size-of-a-rotated-rectangle
+ // Plus 1 border pixel to ensure to show all rotated result for some cases.
+ w = Math.ceil(Math.abs(this.bitmap.width * cosine) + Math.abs(this.bitmap.height * sine)) + 1;
+ h = Math.ceil(Math.abs(this.bitmap.width * sine) + Math.abs(this.bitmap.height * cosine)) + 1; // Ensure destination to have even size to a better result.
+
+ if (w % 2 !== 0) {
+ w++;
+ }
+
+ if (h % 2 !== 0) {
+ h++;
+ }
+
+ var c = this.cloneQuiet();
+ this.scanQuiet(0, 0, this.bitmap.width, this.bitmap.height, function (x, y, idx) {
+ this.bitmap.data.writeUInt32BE(this._background, idx);
+ });
+ var max = Math.max(w, h, this.bitmap.width, this.bitmap.height);
+ this.resize(max, max, mode);
+ this.blit(c, this.bitmap.width / 2 - c.bitmap.width / 2, this.bitmap.height / 2 - c.bitmap.height / 2);
+ }
+
+ var bW = this.bitmap.width;
+ var bH = this.bitmap.height;
+ var dstBuffer = Buffer.alloc(this.bitmap.data.length);
+
+ function createTranslationFunction(deltaX, deltaY) {
+ return function (x, y) {
+ return {
+ x: x + deltaX,
+ y: y + deltaY
+ };
+ };
+ }
+
+ var translate2Cartesian = createTranslationFunction(-(bW / 2), -(bH / 2));
+ var translate2Screen = createTranslationFunction(bW / 2 + 0.5, bH / 2 + 0.5);
+
+ for (var y = 1; y <= bH; y++) {
+ for (var x = 1; x <= bW; x++) {
+ var cartesian = translate2Cartesian(x, y);
+ var source = translate2Screen(cosine * cartesian.x - sine * cartesian.y, cosine * cartesian.y + sine * cartesian.x);
+ var dstIdx = bW * (y - 1) + x - 1 << 2;
+
+ if (source.x >= 0 && source.x < bW && source.y >= 0 && source.y < bH) {
+ var srcIdx = (bW * (source.y | 0) + source.x | 0) << 2;
+ var pixelRGBA = this.bitmap.data.readUInt32BE(srcIdx);
+ dstBuffer.writeUInt32BE(pixelRGBA, dstIdx);
+ } else {
+ // reset off-image pixels
+ dstBuffer.writeUInt32BE(this._background, dstIdx);
+ }
+ }
+ }
+
+ this.bitmap.data = dstBuffer;
+
+ if (mode === true || typeof mode === "string") {
+ // now crop the image to the final size
+ var _x = bW / 2 - w / 2;
+
+ var _y = bH / 2 - h / 2;
+
+ this.crop(_x, _y, w, h);
+ }
+}
+
+var _default = function _default() {
+ return {
+ /**
+ * Rotates the image clockwise by a number of degrees. By default the width and height of the image will be resized appropriately.
+ * @param {number} deg the number of degrees to rotate the image by
+ * @param {string|boolean} mode (optional) resize mode or a boolean, if false then the width and height of the image will not be changed
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+ rotate: function rotate(deg, mode, cb) {
+ // enable overloading
+ if (typeof mode === "undefined" || mode === null) {
+ // e.g. image.resize(120);
+ // e.g. image.resize(120, null, cb);
+ // e.g. image.resize(120, undefined, cb);
+ mode = true;
+ }
+
+ if (typeof mode === "function" && typeof cb === "undefined") {
+ // e.g. image.resize(120, cb);
+ cb = mode;
+ mode = true;
+ }
+
+ if (typeof deg !== "number") {
+ return _utils.throwError.call(this, "deg must be a number", cb);
+ }
+
+ if (typeof mode !== "boolean" && typeof mode !== "string") {
+ return _utils.throwError.call(this, "mode must be a boolean or a string", cb);
+ }
+
+ advancedRotate.call(this, deg, mode, cb);
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ }
+ };
+};
+
+exports["default"] = _default;
+module.exports = exports.default;
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-rotate/dist/index.js.map b/node_modules/@jimp/plugin-rotate/dist/index.js.map
new file mode 100644
index 00000000..04439465
--- /dev/null
+++ b/node_modules/@jimp/plugin-rotate/dist/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/index.js"],"names":["advancedRotate","deg","mode","rad","Math","PI","cosine","cos","sine","sin","w","bitmap","width","h","height","ceil","abs","c","cloneQuiet","scanQuiet","x","y","idx","data","writeUInt32BE","_background","max","resize","blit","bW","bH","dstBuffer","Buffer","alloc","length","createTranslationFunction","deltaX","deltaY","translate2Cartesian","translate2Screen","cartesian","source","dstIdx","srcIdx","pixelRGBA","readUInt32BE","crop","rotate","cb","throwError","call"],"mappings":"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","sourcesContent":["import { throwError, isNodePattern } from \"@jimp/utils\";\n\n/**\n * Rotates an image clockwise by an arbitrary number of degrees. NB: 'this' must be a Jimp object.\n * @param {number} deg the number of degrees to rotate the image by\n * @param {string|boolean} mode (optional) resize mode or a boolean, if false then the width and height of the image will not be changed\n */\nfunction advancedRotate(deg, mode) {\n deg %= 360;\n const rad = (deg * Math.PI) / 180;\n const cosine = Math.cos(rad);\n const sine = Math.sin(rad);\n\n // the final width and height will change if resize == true\n let w = this.bitmap.width;\n let h = this.bitmap.height;\n\n if (mode === true || typeof mode === \"string\") {\n // resize the image to it maximum dimension and blit the existing image\n // onto the center so that when it is rotated the image is kept in bounds\n\n // http://stackoverflow.com/questions/3231176/how-to-get-size-of-a-rotated-rectangle\n // Plus 1 border pixel to ensure to show all rotated result for some cases.\n w =\n Math.ceil(\n Math.abs(this.bitmap.width * cosine) +\n Math.abs(this.bitmap.height * sine)\n ) + 1;\n h =\n Math.ceil(\n Math.abs(this.bitmap.width * sine) +\n Math.abs(this.bitmap.height * cosine)\n ) + 1;\n // Ensure destination to have even size to a better result.\n if (w % 2 !== 0) {\n w++;\n }\n\n if (h % 2 !== 0) {\n h++;\n }\n\n const c = this.cloneQuiet();\n this.scanQuiet(\n 0,\n 0,\n this.bitmap.width,\n this.bitmap.height,\n function (x, y, idx) {\n this.bitmap.data.writeUInt32BE(this._background, idx);\n }\n );\n\n const max = Math.max(w, h, this.bitmap.width, this.bitmap.height);\n this.resize(max, max, mode);\n\n this.blit(\n c,\n this.bitmap.width / 2 - c.bitmap.width / 2,\n this.bitmap.height / 2 - c.bitmap.height / 2\n );\n }\n\n const bW = this.bitmap.width;\n const bH = this.bitmap.height;\n const dstBuffer = Buffer.alloc(this.bitmap.data.length);\n\n function createTranslationFunction(deltaX, deltaY) {\n return function (x, y) {\n return {\n x: x + deltaX,\n y: y + deltaY,\n };\n };\n }\n\n const translate2Cartesian = createTranslationFunction(-(bW / 2), -(bH / 2));\n const translate2Screen = createTranslationFunction(\n bW / 2 + 0.5,\n bH / 2 + 0.5\n );\n\n for (let y = 1; y <= bH; y++) {\n for (let x = 1; x <= bW; x++) {\n const cartesian = translate2Cartesian(x, y);\n const source = translate2Screen(\n cosine * cartesian.x - sine * cartesian.y,\n cosine * cartesian.y + sine * cartesian.x\n );\n const dstIdx = (bW * (y - 1) + x - 1) << 2;\n\n if (source.x >= 0 && source.x < bW && source.y >= 0 && source.y < bH) {\n const srcIdx = ((bW * (source.y | 0) + source.x) | 0) << 2;\n const pixelRGBA = this.bitmap.data.readUInt32BE(srcIdx);\n dstBuffer.writeUInt32BE(pixelRGBA, dstIdx);\n } else {\n // reset off-image pixels\n dstBuffer.writeUInt32BE(this._background, dstIdx);\n }\n }\n }\n\n this.bitmap.data = dstBuffer;\n\n if (mode === true || typeof mode === \"string\") {\n // now crop the image to the final size\n const x = bW / 2 - w / 2;\n const y = bH / 2 - h / 2;\n this.crop(x, y, w, h);\n }\n}\n\nexport default () => ({\n /**\n * Rotates the image clockwise by a number of degrees. By default the width and height of the image will be resized appropriately.\n * @param {number} deg the number of degrees to rotate the image by\n * @param {string|boolean} mode (optional) resize mode or a boolean, if false then the width and height of the image will not be changed\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp} this for chaining of methods\n */\n rotate(deg, mode, cb) {\n // enable overloading\n if (typeof mode === \"undefined\" || mode === null) {\n // e.g. image.resize(120);\n // e.g. image.resize(120, null, cb);\n // e.g. image.resize(120, undefined, cb);\n mode = true;\n }\n\n if (typeof mode === \"function\" && typeof cb === \"undefined\") {\n // e.g. image.resize(120, cb);\n cb = mode;\n mode = true;\n }\n\n if (typeof deg !== \"number\") {\n return throwError.call(this, \"deg must be a number\", cb);\n }\n\n if (typeof mode !== \"boolean\" && typeof mode !== \"string\") {\n return throwError.call(this, \"mode must be a boolean or a string\", cb);\n }\n\n advancedRotate.call(this, deg, mode, cb);\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n },\n});\n"],"file":"index.js"}
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-rotate/index.d.ts b/node_modules/@jimp/plugin-rotate/index.d.ts
new file mode 100644
index 00000000..23d2aa2f
--- /dev/null
+++ b/node_modules/@jimp/plugin-rotate/index.d.ts
@@ -0,0 +1,8 @@
+import { ImageCallback } from "@jimp/core";
+
+interface Rotate {
+ rotate(deg: number, cb?: ImageCallback): this;
+ rotate(deg: number, mode: string | boolean, cb?: ImageCallback): this;
+}
+
+export default function (): Rotate;
diff --git a/node_modules/@jimp/plugin-rotate/package.json b/node_modules/@jimp/plugin-rotate/package.json
new file mode 100644
index 00000000..759cc59d
--- /dev/null
+++ b/node_modules/@jimp/plugin-rotate/package.json
@@ -0,0 +1,43 @@
+{
+ "name": "@jimp/plugin-rotate",
+ "version": "0.16.13",
+ "description": "Rotate an image.",
+ "main": "dist/index.js",
+ "module": "es/index.js",
+ "types": "index.d.ts",
+ "scripts": {
+ "test": "cross-env BABEL_ENV=test mocha --require @babel/register",
+ "test:watch": "npm run test -- --reporter min --watch",
+ "test:coverage": "nyc npm run test",
+ "build": "npm run build:node:production && npm run build:module",
+ "build:watch": "npm run build:node:debug -- -- --watch --verbose",
+ "build:debug": "npm run build:node:debug",
+ "build:module": "cross-env BABEL_ENV=module babel src -d es --source-maps --config-file ../../babel.config.js",
+ "build:node": "babel src -d dist --source-maps --config-file ../../babel.config.js",
+ "build:node:debug": "cross-env BABEL_ENV=development npm run build:node",
+ "build:node:production": "cross-env BABEL_ENV=production npm run build:node"
+ },
+ "author": "",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5",
+ "@jimp/plugin-blit": ">=0.3.5",
+ "@jimp/plugin-crop": ">=0.3.5",
+ "@jimp/plugin-resize": ">=0.3.5"
+ },
+ "devDependencies": {
+ "@jimp/custom": "^0.16.13",
+ "@jimp/plugin-blit": "^0.16.13",
+ "@jimp/plugin-crop": "^0.16.13",
+ "@jimp/plugin-resize": "^0.16.13",
+ "@jimp/test-utils": "^0.16.13"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "gitHead": "9eec86086634329a072901dca3a800b850548572"
+}
diff --git a/node_modules/@jimp/plugin-rotate/src/index.js b/node_modules/@jimp/plugin-rotate/src/index.js
new file mode 100644
index 00000000..7b0712a8
--- /dev/null
+++ b/node_modules/@jimp/plugin-rotate/src/index.js
@@ -0,0 +1,152 @@
+import { throwError, isNodePattern } from "@jimp/utils";
+
+/**
+ * Rotates an image clockwise by an arbitrary number of degrees. NB: 'this' must be a Jimp object.
+ * @param {number} deg the number of degrees to rotate the image by
+ * @param {string|boolean} mode (optional) resize mode or a boolean, if false then the width and height of the image will not be changed
+ */
+function advancedRotate(deg, mode) {
+ deg %= 360;
+ const rad = (deg * Math.PI) / 180;
+ const cosine = Math.cos(rad);
+ const sine = Math.sin(rad);
+
+ // the final width and height will change if resize == true
+ let w = this.bitmap.width;
+ let h = this.bitmap.height;
+
+ if (mode === true || typeof mode === "string") {
+ // resize the image to it maximum dimension and blit the existing image
+ // onto the center so that when it is rotated the image is kept in bounds
+
+ // http://stackoverflow.com/questions/3231176/how-to-get-size-of-a-rotated-rectangle
+ // Plus 1 border pixel to ensure to show all rotated result for some cases.
+ w =
+ Math.ceil(
+ Math.abs(this.bitmap.width * cosine) +
+ Math.abs(this.bitmap.height * sine)
+ ) + 1;
+ h =
+ Math.ceil(
+ Math.abs(this.bitmap.width * sine) +
+ Math.abs(this.bitmap.height * cosine)
+ ) + 1;
+ // Ensure destination to have even size to a better result.
+ if (w % 2 !== 0) {
+ w++;
+ }
+
+ if (h % 2 !== 0) {
+ h++;
+ }
+
+ const c = this.cloneQuiet();
+ this.scanQuiet(
+ 0,
+ 0,
+ this.bitmap.width,
+ this.bitmap.height,
+ function (x, y, idx) {
+ this.bitmap.data.writeUInt32BE(this._background, idx);
+ }
+ );
+
+ const max = Math.max(w, h, this.bitmap.width, this.bitmap.height);
+ this.resize(max, max, mode);
+
+ this.blit(
+ c,
+ this.bitmap.width / 2 - c.bitmap.width / 2,
+ this.bitmap.height / 2 - c.bitmap.height / 2
+ );
+ }
+
+ const bW = this.bitmap.width;
+ const bH = this.bitmap.height;
+ const dstBuffer = Buffer.alloc(this.bitmap.data.length);
+
+ function createTranslationFunction(deltaX, deltaY) {
+ return function (x, y) {
+ return {
+ x: x + deltaX,
+ y: y + deltaY,
+ };
+ };
+ }
+
+ const translate2Cartesian = createTranslationFunction(-(bW / 2), -(bH / 2));
+ const translate2Screen = createTranslationFunction(
+ bW / 2 + 0.5,
+ bH / 2 + 0.5
+ );
+
+ for (let y = 1; y <= bH; y++) {
+ for (let x = 1; x <= bW; x++) {
+ const cartesian = translate2Cartesian(x, y);
+ const source = translate2Screen(
+ cosine * cartesian.x - sine * cartesian.y,
+ cosine * cartesian.y + sine * cartesian.x
+ );
+ const dstIdx = (bW * (y - 1) + x - 1) << 2;
+
+ if (source.x >= 0 && source.x < bW && source.y >= 0 && source.y < bH) {
+ const srcIdx = ((bW * (source.y | 0) + source.x) | 0) << 2;
+ const pixelRGBA = this.bitmap.data.readUInt32BE(srcIdx);
+ dstBuffer.writeUInt32BE(pixelRGBA, dstIdx);
+ } else {
+ // reset off-image pixels
+ dstBuffer.writeUInt32BE(this._background, dstIdx);
+ }
+ }
+ }
+
+ this.bitmap.data = dstBuffer;
+
+ if (mode === true || typeof mode === "string") {
+ // now crop the image to the final size
+ const x = bW / 2 - w / 2;
+ const y = bH / 2 - h / 2;
+ this.crop(x, y, w, h);
+ }
+}
+
+export default () => ({
+ /**
+ * Rotates the image clockwise by a number of degrees. By default the width and height of the image will be resized appropriately.
+ * @param {number} deg the number of degrees to rotate the image by
+ * @param {string|boolean} mode (optional) resize mode or a boolean, if false then the width and height of the image will not be changed
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+ rotate(deg, mode, cb) {
+ // enable overloading
+ if (typeof mode === "undefined" || mode === null) {
+ // e.g. image.resize(120);
+ // e.g. image.resize(120, null, cb);
+ // e.g. image.resize(120, undefined, cb);
+ mode = true;
+ }
+
+ if (typeof mode === "function" && typeof cb === "undefined") {
+ // e.g. image.resize(120, cb);
+ cb = mode;
+ mode = true;
+ }
+
+ if (typeof deg !== "number") {
+ return throwError.call(this, "deg must be a number", cb);
+ }
+
+ if (typeof mode !== "boolean" && typeof mode !== "string") {
+ return throwError.call(this, "mode must be a boolean or a string", cb);
+ }
+
+ advancedRotate.call(this, deg, mode, cb);
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+});
diff --git a/node_modules/@jimp/plugin-rotate/test/rotation.test.js b/node_modules/@jimp/plugin-rotate/test/rotation.test.js
new file mode 100644
index 00000000..c86db73f
--- /dev/null
+++ b/node_modules/@jimp/plugin-rotate/test/rotation.test.js
@@ -0,0 +1,636 @@
+import { Jimp, mkJGD } from "@jimp/test-utils";
+import configure from "@jimp/custom";
+import blit from "@jimp/plugin-blit";
+import crop from "@jimp/plugin-crop";
+import resize from "@jimp/plugin-resize";
+
+import rotate from "../src";
+
+const jimp = configure({ plugins: [rotate, blit, crop, resize] }, Jimp);
+
+describe("Rotate a image with even size", () => {
+ let imgSrc = null;
+
+ before((done) => {
+ jimp
+ .read(
+ mkJGD(
+ "▰▴▴▴▪▪▪▰",
+ "▴▴▴▴▪▪▪▪",
+ "▴▴▴▴▪▪▪▪",
+ "▴▴▴▴▪▪▪▪",
+ "▪▪▪▪▴▴▴▴",
+ "▪▪▪▪▴▴▴▴",
+ "▪▪▪▪▴▴▴▴",
+ "▦▪▪▪▴▴▴▦"
+ )
+ )
+ .then((imgJimp) => {
+ imgSrc = imgJimp;
+ done();
+ })
+ .catch(done);
+ });
+
+ it("1 degrees", () => {
+ imgSrc
+ .clone()
+ .rotate(1, true)
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ "▰▴▴▴▪▪▪▰ ",
+ "▴▴▴▴▪▪▪▪ ",
+ "▴▴▴▴▪▪▪▪ ",
+ "▴▴▴▴▪▪▪▪ ",
+ "▪▪▪▪▴▴▴▴ ",
+ "▪▪▪▪▴▴▴▴ ",
+ "▪▪▪▪▴▴▴▴ ",
+ "▦▪▪▪▴▴▴▦ ",
+ " ",
+ " "
+ )
+ );
+ });
+
+ it("91 degrees", () => {
+ imgSrc
+ .clone()
+ .rotate(91, true)
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ " ",
+ "▰▪▪▪▴▴▴▦ ",
+ "▪▪▪▪▴▴▴▴ ",
+ "▪▪▪▪▴▴▴▴ ",
+ "▪▪▪▪▴▴▴▴ ",
+ "▴▴▴▴▪▪▪▪ ",
+ "▴▴▴▴▪▪▪▪ ",
+ "▴▴▴▴▪▪▪▪ ",
+ "▰▴▴▴▪▪▪▦ ",
+ " "
+ )
+ );
+ });
+
+ it("30 degrees", () => {
+ imgSrc
+ .clone()
+ .rotate(30, true)
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ " ▰▰ ",
+ " ▪▪▪▪ ",
+ " ▴▪▪▪▪▪ ",
+ "▴▴▴▴▪▪▪▪ ",
+ "▴▴▴▴▪▪▴▴▴ ",
+ "▴▴▴▴▪▴▴▴▴▴ ",
+ " ▴▴▪▪▴▴▴▴▦ ",
+ " ▪▪▪▪▪▴▴▴ ",
+ " ▪▪▪▪▪ ",
+ " ▪▪▪ ",
+ " ▦ ",
+ " "
+ )
+ );
+ });
+
+ it("45 degrees", () => {
+ imgSrc
+ .clone()
+ .rotate(45, true)
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ " ",
+ " ▰ ",
+ " ▪▪▪ ",
+ " ▪▪▪▪▪ ",
+ " ▴▴▪▪▪▪▴ ",
+ " ▴▴▴▴▪▪▴▴▴ ",
+ "▰▰▴▴▴▴▴▴▴▴▦ ",
+ " ▴▴▴▴▪▪▴▴▴ ",
+ " ▴▴▪▪▪▪▴ ",
+ " ▪▪▪▪▪ ",
+ " ▪▪▪ ",
+ " ▦ ",
+ " ",
+ " "
+ )
+ );
+ });
+
+ it("60 degrees", () => {
+ imgSrc
+ .clone()
+ .rotate(60, true)
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ " ▰ ",
+ " ▪▪▪ ",
+ " ▪▪▪▪▪ ",
+ " ▪▪▪▪▪▴▴▴ ",
+ " ▴▴▪▪▴▴▴▴▦ ",
+ "▴▴▴▴▪▴▴▴▴▴ ",
+ "▴▴▴▴▪▪▴▴▴ ",
+ "▴▴▴▴▪▪▪▪ ",
+ " ▴▪▪▪▪▪ ",
+ " ▪▪▪▪ ",
+ " ▦▦ ",
+ " "
+ )
+ );
+ });
+
+ it("90 degrees", () => {
+ imgSrc
+ .clone()
+ .rotate(90, true)
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ " ",
+ "▰▪▪▪▴▴▴▦ ",
+ "▪▪▪▪▴▴▴▴ ",
+ "▪▪▪▪▴▴▴▴ ",
+ "▪▪▪▪▴▴▴▴ ",
+ "▴▴▴▴▪▪▪▪ ",
+ "▴▴▴▴▪▪▪▪ ",
+ "▴▴▴▴▪▪▪▪ ",
+ "▰▴▴▴▪▪▪▦ ",
+ " "
+ )
+ );
+ });
+
+ it("120 degrees", () => {
+ imgSrc
+ .clone()
+ .rotate(120, true)
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ " ",
+ " ▴▦ ",
+ " ▴▴▴▴ ",
+ " ▪▪▴▴▴▴ ",
+ "▰▪▪▪▴▴▴▴▪ ",
+ "▰▪▪▪▪▴▴▪▪▪ ",
+ " ▪▪▪▪▪▪▪▪▪ ",
+ " ▪▪▴▴▴▪▪▪▪▦ ",
+ " ▴▴▴▴▴▪▪ ",
+ " ▴▴▴▴▪ ",
+ " ▴▴▴ ",
+ " "
+ )
+ );
+ });
+
+ it("135 degrees", () => {
+ imgSrc
+ .clone()
+ .rotate(135, true)
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ " ",
+ " ",
+ " ▦ ",
+ " ▴▴▴ ",
+ " ▴▴▴▴▴ ",
+ " ▪▪▴▴▴▪▪ ",
+ " ▪▪▪▪▴▪▪▪▪ ",
+ " ▰▪▪▪▪▴▪▪▪▪▦ ",
+ " ▪▪▪▴▴▴▪▪▪ ",
+ " ▪▴▴▴▴▴▪ ",
+ " ▴▴▴▴▴ ",
+ " ▴▰▴ ",
+ " ▰ ",
+ " "
+ )
+ );
+ });
+
+ it("180 degrees", () => {
+ imgSrc
+ .clone()
+ .rotate(180, true)
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ " ",
+ " ▦▴▴▴▪▪▪▦ ",
+ " ▴▴▴▴▪▪▪▪ ",
+ " ▴▴▴▴▪▪▪▪ ",
+ " ▴▴▴▴▪▪▪▪ ",
+ " ▪▪▪▪▴▴▴▴ ",
+ " ▪▪▪▪▴▴▴▴ ",
+ " ▪▪▪▪▴▴▴▴ ",
+ " ▰▪▪▪▴▴▴▰ ",
+ " "
+ )
+ );
+ });
+
+ it("225 degrees", () => {
+ imgSrc
+ .clone()
+ .rotate(225, true)
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ " ",
+ " ▦ ",
+ " ▪▪▪ ",
+ " ▪▪▪▪▪ ",
+ " ▴▪▪▪▪▴▴ ",
+ " ▴▴▴▪▪▴▴▴▴ ",
+ " ▦▴▴▴▴▴▴▴▴▰▰ ",
+ " ▴▴▴▪▪▴▴▴▴ ",
+ " ▴▪▪▪▪▴▴ ",
+ " ▪▪▪▪▪ ",
+ " ▪▪▪ ",
+ " ▰ ",
+ " ",
+ " "
+ )
+ );
+ });
+
+ it("270 degrees", () => {
+ imgSrc
+ .clone()
+ .rotate(270, true)
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ " ▦▪▪▪▴▴▴▰ ",
+ " ▪▪▪▪▴▴▴▴ ",
+ " ▪▪▪▪▴▴▴▴ ",
+ " ▪▪▪▪▴▴▴▴ ",
+ " ▴▴▴▴▪▪▪▪ ",
+ " ▴▴▴▴▪▪▪▪ ",
+ " ▴▴▴▴▪▪▪▪ ",
+ " ▦▴▴▴▪▪▪▰ ",
+ " ",
+ " "
+ )
+ );
+ });
+
+ it("315 degrees", () => {
+ imgSrc
+ .clone()
+ .rotate(315, true)
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ " ▰ ",
+ " ▴▰▴ ",
+ " ▴▴▴▴▴ ",
+ " ▪▴▴▴▴▴▪ ",
+ " ▪▪▪▴▴▴▪▪▪ ",
+ " ▦▪▪▪▪▴▪▪▪▪▰ ",
+ " ▪▪▪▪▴▪▪▪▪ ",
+ " ▪▪▴▴▴▪▪ ",
+ " ▴▴▴▴▴ ",
+ " ▴▴▴ ",
+ " ▦ ",
+ " ",
+ " ",
+ " "
+ )
+ );
+ });
+
+ it("360 degrees", () => {
+ imgSrc
+ .clone()
+ .rotate(360, true)
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ "▰▴▴▴▪▪▪▰ ",
+ "▴▴▴▴▪▪▪▪ ",
+ "▴▴▴▴▪▪▪▪ ",
+ "▴▴▴▴▪▪▪▪ ",
+ "▪▪▪▪▴▴▴▴ ",
+ "▪▪▪▪▴▴▴▴ ",
+ "▪▪▪▪▴▴▴▴ ",
+ "▦▪▪▪▴▴▴▦ ",
+ " ",
+ " "
+ )
+ );
+ });
+});
+
+describe("Rotate a image with odd size", () => {
+ let imgSrc = null;
+ before((done) => {
+ jimp
+ .read(
+ mkJGD(
+ "▴▴▴▦▪▪▪",
+ "▴▴▴▦▪▪▪",
+ "▴▴▴▦▪▪▪",
+ "▦▦▦▦▦▦▦",
+ "▴▴▴▦▴▴▴",
+ "▴▴▴▦▴▴▴",
+ "▴▴▴▦▴▴▴"
+ )
+ )
+ .then((imgJimp) => {
+ imgSrc = imgJimp;
+ done();
+ })
+ .catch(done);
+ });
+
+ it("45 degrees", () => {
+ imgSrc
+ .clone()
+ .rotate(45, true)
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ " ",
+ " ▪ ",
+ " ▪▪▪ ",
+ " ▦▪▪▪▦ ",
+ " ▴▴▦▪▦▴▴ ",
+ " ▴▴▴▴▦▴▴▴▴ ",
+ " ▴▴▦▴▦▴▴ ",
+ " ▦▴▴▴▦ ",
+ " ▴▴▴ ",
+ " ▴ ",
+ " ",
+ " "
+ )
+ );
+ });
+
+ it("135 degrees", () => {
+ imgSrc
+ .clone()
+ .rotate(135, true)
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ " ",
+ " ▴ ",
+ " ▴▴▴ ",
+ " ▦▴▴▴▦ ",
+ " ▪▪▦▴▦▴▴ ",
+ " ▪▪▪▪▦▴▴▴▴ ",
+ " ▪▪▦▴▦▴▴ ",
+ " ▦▴▴▴▦ ",
+ " ▴▴▴ ",
+ " ▴ ",
+ " ",
+ " "
+ )
+ );
+ });
+
+ it("225 degrees", () => {
+ imgSrc
+ .clone()
+ .rotate(225, true)
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ " ",
+ " ▴ ",
+ " ▴▴▴ ",
+ " ▦▴▴▴▦ ",
+ " ▴▴▦▴▦▴▴ ",
+ " ▴▴▴▴▦▴▴▴▴ ",
+ " ▴▴▦▪▦▴▴ ",
+ " ▦▪▪▪▦ ",
+ " ▪▪▪ ",
+ " ▪ ",
+ " ",
+ " "
+ )
+ );
+ });
+
+ it("315 degrees", () => {
+ imgSrc
+ .clone()
+ .rotate(315, true)
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ " ",
+ " ▴ ",
+ " ▴▴▴ ",
+ " ▦▴▴▴▦ ",
+ " ▴▴▦▴▦▪▪ ",
+ " ▴▴▴▴▦▪▪▪▪ ",
+ " ▴▴▦▴▦▪▪ ",
+ " ▦▴▴▴▦ ",
+ " ▴▴▴ ",
+ " ▴ ",
+ " ",
+ " "
+ )
+ );
+ });
+});
+
+describe("Rotate a non-square image", () => {
+ let imgSrc = null;
+ before((done) => {
+ jimp
+ .read(mkJGD("▴▴▴▴▪▪▪▪", "▴▴▴▴▪▪▪▪", "▦▦▦▦▴▴▴▴", "▦▦▦▦▴▴▴▴"))
+ .then((imgJimp) => {
+ imgSrc = imgJimp;
+ done();
+ })
+ .catch(done);
+ });
+
+ it("1 degrees", () => {
+ imgSrc
+ .clone()
+ .rotate(1, true)
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ "▴▴▴▴▪▪▪▪ ",
+ "▴▴▴▴▪▪▪▪ ",
+ "▦▦▦▦▴▴▴▴ ",
+ "▦▦▦▦▴▴▴▴ ",
+ " ",
+ " "
+ )
+ );
+ });
+
+ it("10 degrees", () => {
+ imgSrc
+ .clone()
+ .rotate(10, true)
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ " ▪ ",
+ " ▴▴▴▪▪▪▪ ",
+ "▴▴▴▴▪▪▪▴ ",
+ "▴▴▦▦▴▴▴▴ ",
+ "▦▦▦▦▴▴▴ ",
+ "▦▦ ",
+ " ",
+ " "
+ )
+ );
+ });
+
+ it("30 degrees", () => {
+ imgSrc
+ .clone()
+ .rotate(30, true)
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ " ",
+ " ▪▪ ",
+ " ▪▪▪▪ ",
+ " ▴▴▪▪▴▴▴ ",
+ "▴▴▴▦▴▴▴ ",
+ "▴▴▦▦▴▴ ",
+ "▦▦▦▦ ",
+ " ▦ ",
+ " ",
+ " "
+ )
+ );
+ });
+
+ it("45 degrees", () => {
+ imgSrc
+ .clone()
+ .rotate(45, true)
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ " ",
+ " ▪▪ ",
+ " ▪▪▪▴ ",
+ " ▴▪▪▴▴▴ ",
+ " ▴▴▴▴▴▴ ",
+ "▴▴▴▦▦▴ ",
+ "▴▴▦▦▦ ",
+ " ▦▦▦ ",
+ " ▦ ",
+ " "
+ )
+ );
+ });
+
+ it("90 degrees", () => {
+ imgSrc
+ .clone()
+ .rotate(90, true)
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ " ",
+ "▪▪▴▴ ",
+ "▪▪▴▴ ",
+ "▪▪▴▴ ",
+ "▪▪▴▴ ",
+ "▴▴▦▦ ",
+ "▴▴▦▦ ",
+ "▴▴▦▦ ",
+ "▴▴▦▦ ",
+ " "
+ )
+ );
+ });
+
+ it("135 degrees", () => {
+ imgSrc
+ .clone()
+ .rotate(135, true)
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ " ",
+ " ▴ ",
+ " ▴▴▴ ",
+ " ▪▪▴▴▴ ",
+ " ▪▪▪▴▦▦ ",
+ " ▪▪▴▦▦▦ ",
+ " ▴▴▴▦▦▦ ",
+ " ▴▴▴▦ ",
+ " ▴▴ ",
+ " "
+ )
+ );
+ });
+
+ it("180 degrees", () => {
+ imgSrc
+ .clone()
+ .rotate(180, true)
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ " ",
+ " ▴▴▴▴▦▦▦▦ ",
+ " ▴▴▴▴▦▦▦▦ ",
+ " ▪▪▪▪▴▴▴▴ ",
+ " ▪▪▪▪▴▴▴▴ ",
+ " "
+ )
+ );
+ });
+
+ it("225 degrees", () => {
+ imgSrc
+ .clone()
+ .rotate(225, true)
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ " ▦ ",
+ " ▦▦▦ ",
+ " ▦▦▦▴▴ ",
+ " ▴▦▦▴▴▴ ",
+ " ▴▴▴▴▴▴ ",
+ " ▴▴▴▪▪▴ ",
+ " ▴▪▪▪ ",
+ " ▪▪ ",
+ " ",
+ " "
+ )
+ );
+ });
+
+ it("315 degrees", () => {
+ imgSrc
+ .clone()
+ .rotate(315, true)
+ .getJGDSync()
+ .should.be.sameJGD(
+ mkJGD(
+ " ▴▴ ",
+ " ▦▴▴▴ ",
+ "▦▦▦▴▴▴ ",
+ " ▦▦▦▴▪▪ ",
+ " ▦▦▴▪▪▪ ",
+ " ▴▴▴▪▪ ",
+ " ▴▴▴ ",
+ " ▴ ",
+ " ",
+ " "
+ )
+ );
+ });
+});
diff --git a/node_modules/@jimp/plugin-scale/CHANGELOG.md b/node_modules/@jimp/plugin-scale/CHANGELOG.md
new file mode 100644
index 00000000..4eb3193f
--- /dev/null
+++ b/node_modules/@jimp/plugin-scale/CHANGELOG.md
@@ -0,0 +1,35 @@
+# v0.16.3 (Sat Feb 04 2023)
+
+#### ⚠️ Pushed to `master`
+
+- upgrade prettier ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 1
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+---
+
+# v0.11.0 (Fri May 15 2020)
+
+#### 🚀 Enhancement
+
+- Removed Core-JS as a dependency. [#882](https://github.com/oliver-moran/jimp/pull/882) ([@EricRabil](https://github.com/EricRabil))
+
+#### Authors: 1
+
+- Eric Rabil ([@EricRabil](https://github.com/EricRabil))
+
+---
+
+# v0.9.3 (Tue Nov 26 2019)
+
+#### 🐛 Bug Fix
+
+- `@jimp/cli`, `@jimp/core`, `@jimp/custom`, `jimp`, `@jimp/plugin-blit`, `@jimp/plugin-blur`, `@jimp/plugin-circle`, `@jimp/plugin-color`, `@jimp/plugin-contain`, `@jimp/plugin-cover`, `@jimp/plugin-crop`, `@jimp/plugin-displace`, `@jimp/plugin-dither`, `@jimp/plugin-fisheye`, `@jimp/plugin-flip`, `@jimp/plugin-gaussian`, `@jimp/plugin-invert`, `@jimp/plugin-mask`, `@jimp/plugin-normalize`, `@jimp/plugin-print`, `@jimp/plugin-resize`, `@jimp/plugin-rotate`, `@jimp/plugin-scale`, `@jimp/plugin-shadow`, `@jimp/plugin-threshold`, `@jimp/plugins`, `@jimp/test-utils`, `@jimp/bmp`, `@jimp/gif`, `@jimp/jpeg`, `@jimp/png`, `@jimp/tiff`, `@jimp/types`, `@jimp/utils`
+ - Fix regeneratorRuntime errors [#815](https://github.com/oliver-moran/jimp/pull/815) ([@crutchcorn](https://github.com/crutchcorn) [@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 2
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+- Corbin Crutchley ([@crutchcorn](https://github.com/crutchcorn))
diff --git a/project starter code/node_modules/@jimp/plugin-scale/LICENSE b/node_modules/@jimp/plugin-scale/LICENSE
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-scale/LICENSE
rename to node_modules/@jimp/plugin-scale/LICENSE
diff --git a/node_modules/@jimp/plugin-scale/README.md b/node_modules/@jimp/plugin-scale/README.md
new file mode 100644
index 00000000..708a7771
--- /dev/null
+++ b/node_modules/@jimp/plugin-scale/README.md
@@ -0,0 +1,48 @@
+
+
+
@jimp/plugin-scale
+
Scale an image.
+
+
+## scale
+
+Uniformly scales the image by a factor.
+
+- @param {number} f the factor to scale the image by
+- @param {string} mode (optional) a scaling method (e.g. Jimp.RESIZE_BEZIER)
+- @param {function(Error, Jimp)} cb (optional) a callback for when complete
+
+```js
+import jimp from "jimp";
+
+async function main() {
+ const image = await jimp.read("test/image.png");
+
+ image.scale(2);
+ image.scale(2, jimp.RESIZE_BEZIER);
+}
+
+main();
+```
+
+## scaleToFit
+
+Scale the image to the largest size that fits inside the rectangle that has the given width and height.
+
+- @param {number} w the width to resize the image to
+- @param {number} h the height to resize the image to
+- @param {string} mode (optional) a scaling method (e.g. Jimp.RESIZE_BEZIER)
+- @param {function(Error, Jimp)} cb (optional) a callback for when complete
+
+```js
+import jimp from "jimp";
+
+async function main() {
+ const image = await jimp.read("test/image.png");
+
+ image.scaleToFit(100, 100);
+}
+
+main();
+```
diff --git a/node_modules/@jimp/plugin-scale/dist/index.js b/node_modules/@jimp/plugin-scale/dist/index.js
new file mode 100644
index 00000000..a89343d3
--- /dev/null
+++ b/node_modules/@jimp/plugin-scale/dist/index.js
@@ -0,0 +1,76 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports["default"] = void 0;
+
+var _utils = require("@jimp/utils");
+
+var _default = function _default() {
+ return {
+ /**
+ * Uniformly scales the image by a factor.
+ * @param {number} f the factor to scale the image by
+ * @param {string} mode (optional) a scaling method (e.g. Jimp.RESIZE_BEZIER)
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+ scale: function scale(f, mode, cb) {
+ if (typeof f !== "number") {
+ return _utils.throwError.call(this, "f must be a number", cb);
+ }
+
+ if (f < 0) {
+ return _utils.throwError.call(this, "f must be a positive number", cb);
+ }
+
+ if (typeof mode === "function" && typeof cb === "undefined") {
+ cb = mode;
+ mode = null;
+ }
+
+ var w = this.bitmap.width * f;
+ var h = this.bitmap.height * f;
+ this.resize(w, h, mode);
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+
+ /**
+ * Scale the image to the largest size that fits inside the rectangle that has the given width and height.
+ * @param {number} w the width to resize the image to
+ * @param {number} h the height to resize the image to
+ * @param {string} mode (optional) a scaling method (e.g. Jimp.RESIZE_BEZIER)
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+ scaleToFit: function scaleToFit(w, h, mode, cb) {
+ if (typeof w !== "number" || typeof h !== "number") {
+ return _utils.throwError.call(this, "w and h must be numbers", cb);
+ }
+
+ if (typeof mode === "function" && typeof cb === "undefined") {
+ cb = mode;
+ mode = null;
+ }
+
+ var f = w / h > this.bitmap.width / this.bitmap.height ? h / this.bitmap.height : w / this.bitmap.width;
+ this.scale(f, mode);
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ }
+ };
+};
+
+exports["default"] = _default;
+module.exports = exports.default;
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-scale/dist/index.js.map b/node_modules/@jimp/plugin-scale/dist/index.js.map
new file mode 100644
index 00000000..fe17665a
--- /dev/null
+++ b/node_modules/@jimp/plugin-scale/dist/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/index.js"],"names":["scale","f","mode","cb","throwError","call","w","bitmap","width","h","height","resize","scaleToFit"],"mappings":";;;;;;;AAAA;;eAEe;AAAA,SAAO;AACpB;;;;;;;AAOAA,IAAAA,KARoB,iBAQdC,CARc,EAQXC,IARW,EAQLC,EARK,EAQD;AACjB,UAAI,OAAOF,CAAP,KAAa,QAAjB,EAA2B;AACzB,eAAOG,kBAAWC,IAAX,CAAgB,IAAhB,EAAsB,oBAAtB,EAA4CF,EAA5C,CAAP;AACD;;AAED,UAAIF,CAAC,GAAG,CAAR,EAAW;AACT,eAAOG,kBAAWC,IAAX,CAAgB,IAAhB,EAAsB,6BAAtB,EAAqDF,EAArD,CAAP;AACD;;AAED,UAAI,OAAOD,IAAP,KAAgB,UAAhB,IAA8B,OAAOC,EAAP,KAAc,WAAhD,EAA6D;AAC3DA,QAAAA,EAAE,GAAGD,IAAL;AACAA,QAAAA,IAAI,GAAG,IAAP;AACD;;AAED,UAAMI,CAAC,GAAG,KAAKC,MAAL,CAAYC,KAAZ,GAAoBP,CAA9B;AACA,UAAMQ,CAAC,GAAG,KAAKF,MAAL,CAAYG,MAAZ,GAAqBT,CAA/B;AACA,WAAKU,MAAL,CAAYL,CAAZ,EAAeG,CAAf,EAAkBP,IAAlB;;AAEA,UAAI,0BAAcC,EAAd,CAAJ,EAAuB;AACrBA,QAAAA,EAAE,CAACE,IAAH,CAAQ,IAAR,EAAc,IAAd,EAAoB,IAApB;AACD;;AAED,aAAO,IAAP;AACD,KA/BmB;;AAiCpB;;;;;;;;AAQAO,IAAAA,UAzCoB,sBAyCTN,CAzCS,EAyCNG,CAzCM,EAyCHP,IAzCG,EAyCGC,EAzCH,EAyCO;AACzB,UAAI,OAAOG,CAAP,KAAa,QAAb,IAAyB,OAAOG,CAAP,KAAa,QAA1C,EAAoD;AAClD,eAAOL,kBAAWC,IAAX,CAAgB,IAAhB,EAAsB,yBAAtB,EAAiDF,EAAjD,CAAP;AACD;;AAED,UAAI,OAAOD,IAAP,KAAgB,UAAhB,IAA8B,OAAOC,EAAP,KAAc,WAAhD,EAA6D;AAC3DA,QAAAA,EAAE,GAAGD,IAAL;AACAA,QAAAA,IAAI,GAAG,IAAP;AACD;;AAED,UAAMD,CAAC,GACLK,CAAC,GAAGG,CAAJ,GAAQ,KAAKF,MAAL,CAAYC,KAAZ,GAAoB,KAAKD,MAAL,CAAYG,MAAxC,GACID,CAAC,GAAG,KAAKF,MAAL,CAAYG,MADpB,GAEIJ,CAAC,GAAG,KAAKC,MAAL,CAAYC,KAHtB;AAIA,WAAKR,KAAL,CAAWC,CAAX,EAAcC,IAAd;;AAEA,UAAI,0BAAcC,EAAd,CAAJ,EAAuB;AACrBA,QAAAA,EAAE,CAACE,IAAH,CAAQ,IAAR,EAAc,IAAd,EAAoB,IAApB;AACD;;AAED,aAAO,IAAP;AACD;AA9DmB,GAAP;AAAA,C","sourcesContent":["import { isNodePattern, throwError } from \"@jimp/utils\";\n\nexport default () => ({\n /**\n * Uniformly scales the image by a factor.\n * @param {number} f the factor to scale the image by\n * @param {string} mode (optional) a scaling method (e.g. Jimp.RESIZE_BEZIER)\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp} this for chaining of methods\n */\n scale(f, mode, cb) {\n if (typeof f !== \"number\") {\n return throwError.call(this, \"f must be a number\", cb);\n }\n\n if (f < 0) {\n return throwError.call(this, \"f must be a positive number\", cb);\n }\n\n if (typeof mode === \"function\" && typeof cb === \"undefined\") {\n cb = mode;\n mode = null;\n }\n\n const w = this.bitmap.width * f;\n const h = this.bitmap.height * f;\n this.resize(w, h, mode);\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n },\n\n /**\n * Scale the image to the largest size that fits inside the rectangle that has the given width and height.\n * @param {number} w the width to resize the image to\n * @param {number} h the height to resize the image to\n * @param {string} mode (optional) a scaling method (e.g. Jimp.RESIZE_BEZIER)\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp} this for chaining of methods\n */\n scaleToFit(w, h, mode, cb) {\n if (typeof w !== \"number\" || typeof h !== \"number\") {\n return throwError.call(this, \"w and h must be numbers\", cb);\n }\n\n if (typeof mode === \"function\" && typeof cb === \"undefined\") {\n cb = mode;\n mode = null;\n }\n\n const f =\n w / h > this.bitmap.width / this.bitmap.height\n ? h / this.bitmap.height\n : w / this.bitmap.width;\n this.scale(f, mode);\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n },\n});\n"],"file":"index.js"}
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-scale/index.d.ts b/node_modules/@jimp/plugin-scale/index.d.ts
new file mode 100644
index 00000000..28c26ba2
--- /dev/null
+++ b/node_modules/@jimp/plugin-scale/index.d.ts
@@ -0,0 +1,15 @@
+import { ImageCallback } from "@jimp/core";
+
+interface Scale {
+ scale(f: number, cb?: ImageCallback): this;
+ scale(f: number, mode?: string, cb?: ImageCallback): this;
+ scaleToFit(w: number, h: number, cb?: ImageCallback): this;
+ scaleToFit(
+ w: number,
+ h: number,
+ mode?: string,
+ cb?: ImageCallback
+ ): this;
+}
+
+export default function (): Scale;
diff --git a/node_modules/@jimp/plugin-scale/package.json b/node_modules/@jimp/plugin-scale/package.json
new file mode 100644
index 00000000..30eff760
--- /dev/null
+++ b/node_modules/@jimp/plugin-scale/package.json
@@ -0,0 +1,31 @@
+{
+ "name": "@jimp/plugin-scale",
+ "version": "0.16.13",
+ "description": "scale an image.",
+ "main": "dist/index.js",
+ "module": "es/index.js",
+ "types": "index.d.ts",
+ "scripts": {
+ "build": "npm run build:node:production && npm run build:module",
+ "build:watch": "npm run build:node:debug -- -- --watch --verbose",
+ "build:debug": "npm run build:node:debug",
+ "build:module": "cross-env BABEL_ENV=module babel src -d es --source-maps --config-file ../../babel.config.js",
+ "build:node": "babel src -d dist --source-maps --config-file ../../babel.config.js",
+ "build:node:debug": "cross-env BABEL_ENV=development npm run build:node",
+ "build:node:production": "cross-env BABEL_ENV=production npm run build:node"
+ },
+ "author": "",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5",
+ "@jimp/plugin-resize": ">=0.3.5"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "gitHead": "9eec86086634329a072901dca3a800b850548572"
+}
diff --git a/node_modules/@jimp/plugin-scale/src/index.js b/node_modules/@jimp/plugin-scale/src/index.js
new file mode 100644
index 00000000..f67ce2b3
--- /dev/null
+++ b/node_modules/@jimp/plugin-scale/src/index.js
@@ -0,0 +1,66 @@
+import { isNodePattern, throwError } from "@jimp/utils";
+
+export default () => ({
+ /**
+ * Uniformly scales the image by a factor.
+ * @param {number} f the factor to scale the image by
+ * @param {string} mode (optional) a scaling method (e.g. Jimp.RESIZE_BEZIER)
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+ scale(f, mode, cb) {
+ if (typeof f !== "number") {
+ return throwError.call(this, "f must be a number", cb);
+ }
+
+ if (f < 0) {
+ return throwError.call(this, "f must be a positive number", cb);
+ }
+
+ if (typeof mode === "function" && typeof cb === "undefined") {
+ cb = mode;
+ mode = null;
+ }
+
+ const w = this.bitmap.width * f;
+ const h = this.bitmap.height * f;
+ this.resize(w, h, mode);
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+
+ /**
+ * Scale the image to the largest size that fits inside the rectangle that has the given width and height.
+ * @param {number} w the width to resize the image to
+ * @param {number} h the height to resize the image to
+ * @param {string} mode (optional) a scaling method (e.g. Jimp.RESIZE_BEZIER)
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+ scaleToFit(w, h, mode, cb) {
+ if (typeof w !== "number" || typeof h !== "number") {
+ return throwError.call(this, "w and h must be numbers", cb);
+ }
+
+ if (typeof mode === "function" && typeof cb === "undefined") {
+ cb = mode;
+ mode = null;
+ }
+
+ const f =
+ w / h > this.bitmap.width / this.bitmap.height
+ ? h / this.bitmap.height
+ : w / this.bitmap.width;
+ this.scale(f, mode);
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+});
diff --git a/node_modules/@jimp/plugin-shadow/CHANGELOG.md b/node_modules/@jimp/plugin-shadow/CHANGELOG.md
new file mode 100644
index 00000000..57102be3
--- /dev/null
+++ b/node_modules/@jimp/plugin-shadow/CHANGELOG.md
@@ -0,0 +1,48 @@
+# v0.16.3 (Sat Feb 04 2023)
+
+#### ⚠️ Pushed to `master`
+
+- upgrade prettier ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 1
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+---
+
+# v0.11.0 (Fri May 15 2020)
+
+#### 🚀 Enhancement
+
+- Removed Core-JS as a dependency. [#882](https://github.com/oliver-moran/jimp/pull/882) ([@EricRabil](https://github.com/EricRabil))
+
+#### Authors: 1
+
+- Eric Rabil ([@EricRabil](https://github.com/EricRabil))
+
+---
+
+# v0.9.4 (Tue Mar 03 2020)
+
+#### 🐛 Bug Fix
+
+- `@jimp/plugin-shadow`
+ - Update plugin-shadow type definition. [#841](https://github.com/oliver-moran/jimp/pull/841) ([@lekoaf](https://github.com/lekoaf))
+
+#### Authors: 1
+
+- Martin ([@lekoaf](https://github.com/lekoaf))
+
+---
+
+# v0.9.3 (Tue Nov 26 2019)
+
+#### 🐛 Bug Fix
+
+- `@jimp/cli`, `@jimp/core`, `@jimp/custom`, `jimp`, `@jimp/plugin-blit`, `@jimp/plugin-blur`, `@jimp/plugin-circle`, `@jimp/plugin-color`, `@jimp/plugin-contain`, `@jimp/plugin-cover`, `@jimp/plugin-crop`, `@jimp/plugin-displace`, `@jimp/plugin-dither`, `@jimp/plugin-fisheye`, `@jimp/plugin-flip`, `@jimp/plugin-gaussian`, `@jimp/plugin-invert`, `@jimp/plugin-mask`, `@jimp/plugin-normalize`, `@jimp/plugin-print`, `@jimp/plugin-resize`, `@jimp/plugin-rotate`, `@jimp/plugin-scale`, `@jimp/plugin-shadow`, `@jimp/plugin-threshold`, `@jimp/plugins`, `@jimp/test-utils`, `@jimp/bmp`, `@jimp/gif`, `@jimp/jpeg`, `@jimp/png`, `@jimp/tiff`, `@jimp/types`, `@jimp/utils`
+ - Fix regeneratorRuntime errors [#815](https://github.com/oliver-moran/jimp/pull/815) ([@crutchcorn](https://github.com/crutchcorn) [@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 2
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+- Corbin Crutchley ([@crutchcorn](https://github.com/crutchcorn))
diff --git a/project starter code/node_modules/@jimp/plugin-shadow/LICENSE b/node_modules/@jimp/plugin-shadow/LICENSE
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-shadow/LICENSE
rename to node_modules/@jimp/plugin-shadow/LICENSE
diff --git a/node_modules/@jimp/plugin-shadow/README.md b/node_modules/@jimp/plugin-shadow/README.md
new file mode 100644
index 00000000..b068cd22
--- /dev/null
+++ b/node_modules/@jimp/plugin-shadow/README.md
@@ -0,0 +1,30 @@
+
+
+
@jimp/plugin-shadow
+
Creates a shadow on an image.
+
+
+## Usage
+
+- @param {function(Error, Jimp)} options (optional)
+ - opacity - opacity of the shadow between 0 and 1
+ - size,- of the shadow
+ - blur - how blurry the shadow is
+ - x - x position of shadow
+ - y - y position of shadow
+- @param {function(Error, Jimp)} cb (optional) a callback for when complete
+
+```js
+import jimp from "jimp";
+
+async function main() {
+ const image = await jimp.read("test/image.png");
+
+ image.shadow();
+ // or
+ image.shadow({ opacity: 0.8, size: 1.2, blur: 10, x: -75, y: -75 });
+}
+
+main();
+```
diff --git a/node_modules/@jimp/plugin-shadow/babel.config.js b/node_modules/@jimp/plugin-shadow/babel.config.js
new file mode 100644
index 00000000..13e2603a
--- /dev/null
+++ b/node_modules/@jimp/plugin-shadow/babel.config.js
@@ -0,0 +1,38 @@
+module.exports = (api) => {
+ api.cache(true);
+
+ return {
+ presets: [
+ [
+ "@babel/env",
+ {
+ useBuiltIns: "usage",
+ },
+ ],
+ ],
+
+ plugins: [
+ "@babel/proposal-class-properties",
+ "@babel/syntax-object-rest-spread",
+ process.env.BABEL_ENV !== "module" && "add-module-exports",
+ [
+ "transform-inline-environment-variables",
+ { include: ["BABEL_ENV", "ENV"] },
+ ],
+ ].filter(Boolean),
+
+ env: {
+ test: {
+ plugins: ["istanbul"],
+ },
+ development: {
+ plugins: [process.env.ENV !== "browser" && "source-map-support"].filter(
+ Boolean
+ ),
+ },
+ module: {
+ presets: [["@babel/env", { modules: false }]],
+ },
+ },
+ };
+};
diff --git a/node_modules/@jimp/plugin-shadow/dist/index.js b/node_modules/@jimp/plugin-shadow/dist/index.js
new file mode 100644
index 00000000..77a4cc11
--- /dev/null
+++ b/node_modules/@jimp/plugin-shadow/dist/index.js
@@ -0,0 +1,77 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports["default"] = void 0;
+
+var _utils = require("@jimp/utils");
+
+/**
+ * Creates a circle out of an image.
+ * @param {function(Error, Jimp)} options (optional)
+ * opacity - opacity of the shadow between 0 and 1
+ * size,- of the shadow
+ * blur - how blurry the shadow is
+ * x- x position of shadow
+ * y - y position of shadow
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+var _default = function _default() {
+ return {
+ shadow: function shadow() {
+ var _this = this;
+
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+ var cb = arguments.length > 1 ? arguments[1] : undefined;
+
+ if (typeof options === "function") {
+ cb = options;
+ options = {};
+ }
+
+ var _options = options,
+ _options$opacity = _options.opacity,
+ opacity = _options$opacity === void 0 ? 0.7 : _options$opacity,
+ _options$size = _options.size,
+ size = _options$size === void 0 ? 1.1 : _options$size,
+ _options$x = _options.x,
+ x = _options$x === void 0 ? -25 : _options$x,
+ _options$y = _options.y,
+ y = _options$y === void 0 ? 25 : _options$y,
+ _options$blur = _options.blur,
+ blur = _options$blur === void 0 ? 5 : _options$blur; // clone the image
+
+ var orig = this.clone();
+ var shadow = this.clone(); // turn all it's pixels black
+
+ shadow.scan(0, 0, shadow.bitmap.width, shadow.bitmap.height, function (x, y, idx) {
+ shadow.bitmap.data[idx] = 0x00;
+ shadow.bitmap.data[idx + 1] = 0x00;
+ shadow.bitmap.data[idx + 2] = 0x00; // up the opacity a little,
+
+ shadow.bitmap.data[idx + 3] = shadow.constructor.limit255(shadow.bitmap.data[idx + 3] * opacity);
+ _this.bitmap.data[idx] = 0x00;
+ _this.bitmap.data[idx + 1] = 0x00;
+ _this.bitmap.data[idx + 2] = 0x00;
+ _this.bitmap.data[idx + 3] = 0x00;
+ }); // enlarge it. This creates a "shadow".
+
+ shadow.resize(shadow.bitmap.width * size, shadow.bitmap.height * size).blur(blur); // Then blit the "shadow" onto the background and the image on top of that.
+
+ this.composite(shadow, x, y);
+ this.composite(orig, 0, 0);
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ }
+ };
+};
+
+exports["default"] = _default;
+module.exports = exports.default;
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-shadow/dist/index.js.map b/node_modules/@jimp/plugin-shadow/dist/index.js.map
new file mode 100644
index 00000000..9fd96612
--- /dev/null
+++ b/node_modules/@jimp/plugin-shadow/dist/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/index.js"],"names":["shadow","options","cb","opacity","size","x","y","blur","orig","clone","scan","bitmap","width","height","idx","data","constructor","limit255","resize","composite","call"],"mappings":";;;;;;;AAAA;;AAEA;;;;;;;;;;;eAWe;AAAA,SAAO;AACpBA,IAAAA,MADoB,oBACK;AAAA;;AAAA,UAAlBC,OAAkB,uEAAR,EAAQ;AAAA,UAAJC,EAAI;;AACvB,UAAI,OAAOD,OAAP,KAAmB,UAAvB,EAAmC;AACjCC,QAAAA,EAAE,GAAGD,OAAL;AACAA,QAAAA,OAAO,GAAG,EAAV;AACD;;AAJsB,qBAM0CA,OAN1C;AAAA,sCAMfE,OANe;AAAA,UAMfA,OANe,iCAML,GANK;AAAA,mCAMAC,IANA;AAAA,UAMAA,IANA,8BAMO,GANP;AAAA,gCAMYC,CANZ;AAAA,UAMYA,CANZ,2BAMgB,CAAC,EANjB;AAAA,gCAMqBC,CANrB;AAAA,UAMqBA,CANrB,2BAMyB,EANzB;AAAA,mCAM6BC,IAN7B;AAAA,UAM6BA,IAN7B,8BAMoC,CANpC,kBAQvB;;AACA,UAAMC,IAAI,GAAG,KAAKC,KAAL,EAAb;AACA,UAAMT,MAAM,GAAG,KAAKS,KAAL,EAAf,CAVuB,CAYvB;;AACAT,MAAAA,MAAM,CAACU,IAAP,CACE,CADF,EAEE,CAFF,EAGEV,MAAM,CAACW,MAAP,CAAcC,KAHhB,EAIEZ,MAAM,CAACW,MAAP,CAAcE,MAJhB,EAKE,UAACR,CAAD,EAAIC,CAAJ,EAAOQ,GAAP,EAAe;AACbd,QAAAA,MAAM,CAACW,MAAP,CAAcI,IAAd,CAAmBD,GAAnB,IAA0B,IAA1B;AACAd,QAAAA,MAAM,CAACW,MAAP,CAAcI,IAAd,CAAmBD,GAAG,GAAG,CAAzB,IAA8B,IAA9B;AACAd,QAAAA,MAAM,CAACW,MAAP,CAAcI,IAAd,CAAmBD,GAAG,GAAG,CAAzB,IAA8B,IAA9B,CAHa,CAIb;;AACAd,QAAAA,MAAM,CAACW,MAAP,CAAcI,IAAd,CAAmBD,GAAG,GAAG,CAAzB,IAA8Bd,MAAM,CAACgB,WAAP,CAAmBC,QAAnB,CAC5BjB,MAAM,CAACW,MAAP,CAAcI,IAAd,CAAmBD,GAAG,GAAG,CAAzB,IAA8BX,OADF,CAA9B;AAIA,QAAA,KAAI,CAACQ,MAAL,CAAYI,IAAZ,CAAiBD,GAAjB,IAAwB,IAAxB;AACA,QAAA,KAAI,CAACH,MAAL,CAAYI,IAAZ,CAAiBD,GAAG,GAAG,CAAvB,IAA4B,IAA5B;AACA,QAAA,KAAI,CAACH,MAAL,CAAYI,IAAZ,CAAiBD,GAAG,GAAG,CAAvB,IAA4B,IAA5B;AACA,QAAA,KAAI,CAACH,MAAL,CAAYI,IAAZ,CAAiBD,GAAG,GAAG,CAAvB,IAA4B,IAA5B;AACD,OAlBH,EAbuB,CAkCvB;;AACAd,MAAAA,MAAM,CACHkB,MADH,CACUlB,MAAM,CAACW,MAAP,CAAcC,KAAd,GAAsBR,IADhC,EACsCJ,MAAM,CAACW,MAAP,CAAcE,MAAd,GAAuBT,IAD7D,EAEGG,IAFH,CAEQA,IAFR,EAnCuB,CAuCvB;;AACA,WAAKY,SAAL,CAAenB,MAAf,EAAuBK,CAAvB,EAA0BC,CAA1B;AACA,WAAKa,SAAL,CAAeX,IAAf,EAAqB,CAArB,EAAwB,CAAxB;;AAEA,UAAI,0BAAcN,EAAd,CAAJ,EAAuB;AACrBA,QAAAA,EAAE,CAACkB,IAAH,CAAQ,IAAR,EAAc,IAAd,EAAoB,IAApB;AACD;;AAED,aAAO,IAAP;AACD;AAjDmB,GAAP;AAAA,C","sourcesContent":["import { isNodePattern } from \"@jimp/utils\";\n\n/**\n * Creates a circle out of an image.\n * @param {function(Error, Jimp)} options (optional)\n * opacity - opacity of the shadow between 0 and 1\n * size,- of the shadow\n * blur - how blurry the shadow is\n * x- x position of shadow\n * y - y position of shadow\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp} this for chaining of methods\n */\nexport default () => ({\n shadow(options = {}, cb) {\n if (typeof options === \"function\") {\n cb = options;\n options = {};\n }\n\n const { opacity = 0.7, size = 1.1, x = -25, y = 25, blur = 5 } = options;\n\n // clone the image\n const orig = this.clone();\n const shadow = this.clone();\n\n // turn all it's pixels black\n shadow.scan(\n 0,\n 0,\n shadow.bitmap.width,\n shadow.bitmap.height,\n (x, y, idx) => {\n shadow.bitmap.data[idx] = 0x00;\n shadow.bitmap.data[idx + 1] = 0x00;\n shadow.bitmap.data[idx + 2] = 0x00;\n // up the opacity a little,\n shadow.bitmap.data[idx + 3] = shadow.constructor.limit255(\n shadow.bitmap.data[idx + 3] * opacity\n );\n\n this.bitmap.data[idx] = 0x00;\n this.bitmap.data[idx + 1] = 0x00;\n this.bitmap.data[idx + 2] = 0x00;\n this.bitmap.data[idx + 3] = 0x00;\n }\n );\n\n // enlarge it. This creates a \"shadow\".\n shadow\n .resize(shadow.bitmap.width * size, shadow.bitmap.height * size)\n .blur(blur);\n\n // Then blit the \"shadow\" onto the background and the image on top of that.\n this.composite(shadow, x, y);\n this.composite(orig, 0, 0);\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n },\n});\n"],"file":"index.js"}
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-shadow/index.d.ts b/node_modules/@jimp/plugin-shadow/index.d.ts
new file mode 100644
index 00000000..4e3c4841
--- /dev/null
+++ b/node_modules/@jimp/plugin-shadow/index.d.ts
@@ -0,0 +1,17 @@
+import { ImageCallback } from "@jimp/core";
+
+interface Shadow {
+ shadow(
+ options?: {
+ size?: number;
+ opacity?: number;
+ blur: number;
+ x?: number;
+ y?: number;
+ },
+ cb?: ImageCallback
+ ): this;
+ shadow(cb?: ImageCallback): this;
+}
+
+export default function (): Shadow;
diff --git a/node_modules/@jimp/plugin-shadow/package.json b/node_modules/@jimp/plugin-shadow/package.json
new file mode 100644
index 00000000..a8e3ebbb
--- /dev/null
+++ b/node_modules/@jimp/plugin-shadow/package.json
@@ -0,0 +1,41 @@
+{
+ "name": "@jimp/plugin-shadow",
+ "version": "0.16.13",
+ "description": "Creates a shadow on an image.",
+ "main": "dist/index.js",
+ "module": "es/index.js",
+ "types": "index.d.ts",
+ "scripts": {
+ "test": "cross-env BABEL_ENV=test mocha --require @babel/register",
+ "test:watch": "npm run test -- --reporter min --watch",
+ "test:coverage": "nyc npm run test",
+ "build": "npm run build:node:production && npm run build:module",
+ "build:watch": "npm run build:node:debug -- -- --watch --verbose",
+ "build:debug": "npm run build:node:debug",
+ "build:module": "cross-env BABEL_ENV=module babel src -d es --source-maps --config-file ../../babel.config.js",
+ "build:node": "babel src -d dist --source-maps --config-file ../../babel.config.js",
+ "build:node:debug": "cross-env BABEL_ENV=development npm run build:node",
+ "build:node:production": "cross-env BABEL_ENV=production npm run build:node"
+ },
+ "author": "",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5",
+ "@jimp/plugin-blur": ">=0.3.5",
+ "@jimp/plugin-resize": ">=0.3.5"
+ },
+ "devDependencies": {
+ "@jimp/custom": "^0.16.13",
+ "@jimp/plugin-blur": "^0.16.13",
+ "@jimp/plugin-resize": "^0.16.13",
+ "@jimp/test-utils": "^0.16.13"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "gitHead": "9eec86086634329a072901dca3a800b850548572"
+}
diff --git a/node_modules/@jimp/plugin-shadow/src/index.js b/node_modules/@jimp/plugin-shadow/src/index.js
new file mode 100644
index 00000000..81c23c41
--- /dev/null
+++ b/node_modules/@jimp/plugin-shadow/src/index.js
@@ -0,0 +1,64 @@
+import { isNodePattern } from "@jimp/utils";
+
+/**
+ * Creates a circle out of an image.
+ * @param {function(Error, Jimp)} options (optional)
+ * opacity - opacity of the shadow between 0 and 1
+ * size,- of the shadow
+ * blur - how blurry the shadow is
+ * x- x position of shadow
+ * y - y position of shadow
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+export default () => ({
+ shadow(options = {}, cb) {
+ if (typeof options === "function") {
+ cb = options;
+ options = {};
+ }
+
+ const { opacity = 0.7, size = 1.1, x = -25, y = 25, blur = 5 } = options;
+
+ // clone the image
+ const orig = this.clone();
+ const shadow = this.clone();
+
+ // turn all it's pixels black
+ shadow.scan(
+ 0,
+ 0,
+ shadow.bitmap.width,
+ shadow.bitmap.height,
+ (x, y, idx) => {
+ shadow.bitmap.data[idx] = 0x00;
+ shadow.bitmap.data[idx + 1] = 0x00;
+ shadow.bitmap.data[idx + 2] = 0x00;
+ // up the opacity a little,
+ shadow.bitmap.data[idx + 3] = shadow.constructor.limit255(
+ shadow.bitmap.data[idx + 3] * opacity
+ );
+
+ this.bitmap.data[idx] = 0x00;
+ this.bitmap.data[idx + 1] = 0x00;
+ this.bitmap.data[idx + 2] = 0x00;
+ this.bitmap.data[idx + 3] = 0x00;
+ }
+ );
+
+ // enlarge it. This creates a "shadow".
+ shadow
+ .resize(shadow.bitmap.width * size, shadow.bitmap.height * size)
+ .blur(blur);
+
+ // Then blit the "shadow" onto the background and the image on top of that.
+ this.composite(shadow, x, y);
+ this.composite(orig, 0, 0);
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+});
diff --git a/project starter code/node_modules/@jimp/plugin-shadow/test/images/shadow.png b/node_modules/@jimp/plugin-shadow/test/images/shadow.png
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-shadow/test/images/shadow.png
rename to node_modules/@jimp/plugin-shadow/test/images/shadow.png
diff --git a/node_modules/@jimp/plugin-shadow/test/shadow.test.js b/node_modules/@jimp/plugin-shadow/test/shadow.test.js
new file mode 100644
index 00000000..7f2e4dc9
--- /dev/null
+++ b/node_modules/@jimp/plugin-shadow/test/shadow.test.js
@@ -0,0 +1,31 @@
+import { Jimp, mkJGD, getTestDir } from "@jimp/test-utils";
+import configure from "@jimp/custom";
+import resize from "@jimp/plugin-resize";
+import blur from "@jimp/plugin-blur";
+
+import shadow from "../src";
+
+const jimp = configure({ plugins: [shadow, resize, blur] }, Jimp);
+
+describe("Shadow", () => {
+ it("creates a shadow", async () => {
+ const expectedImg = await jimp.read(
+ getTestDir(__dirname) + "/images/shadow.png"
+ );
+ const testImage = await jimp.read(
+ mkJGD(
+ " ",
+ " ◆◆ ",
+ " ◆▦▦◆ ",
+ " ◆▦▦▦▦◆ ",
+ " ◆▦▦◆ ",
+ " ◆◆ ",
+ " "
+ )
+ );
+
+ testImage
+ .shadow({ x: -1, y: 1, blur: 1 })
+ .bitmap.data.should.be.deepEqual(expectedImg.bitmap.data);
+ });
+});
diff --git a/node_modules/@jimp/plugin-threshold/CHANGELOG.md b/node_modules/@jimp/plugin-threshold/CHANGELOG.md
new file mode 100644
index 00000000..8ad0c783
--- /dev/null
+++ b/node_modules/@jimp/plugin-threshold/CHANGELOG.md
@@ -0,0 +1,47 @@
+# v0.16.3 (Sat Feb 04 2023)
+
+#### ⚠️ Pushed to `master`
+
+- upgrade prettier ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 1
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+---
+
+# v0.11.0 (Fri May 15 2020)
+
+#### 🚀 Enhancement
+
+- Removed Core-JS as a dependency. [#882](https://github.com/oliver-moran/jimp/pull/882) ([@EricRabil](https://github.com/EricRabil))
+
+#### Authors: 1
+
+- Eric Rabil ([@EricRabil](https://github.com/EricRabil))
+
+---
+
+# v0.9.7 (Fri Mar 27 2020)
+
+#### 🐛 Bug Fix
+
+- Relax version range of plugin-threshold peerDependencies [#859](https://github.com/oliver-moran/jimp/pull/859) ([@pasieronen](https://github.com/pasieronen))
+
+#### Authors: 1
+
+- Pasi Eronen ([@pasieronen](https://github.com/pasieronen))
+
+---
+
+# v0.9.3 (Tue Nov 26 2019)
+
+#### 🐛 Bug Fix
+
+- `@jimp/cli`, `@jimp/core`, `@jimp/custom`, `jimp`, `@jimp/plugin-blit`, `@jimp/plugin-blur`, `@jimp/plugin-circle`, `@jimp/plugin-color`, `@jimp/plugin-contain`, `@jimp/plugin-cover`, `@jimp/plugin-crop`, `@jimp/plugin-displace`, `@jimp/plugin-dither`, `@jimp/plugin-fisheye`, `@jimp/plugin-flip`, `@jimp/plugin-gaussian`, `@jimp/plugin-invert`, `@jimp/plugin-mask`, `@jimp/plugin-normalize`, `@jimp/plugin-print`, `@jimp/plugin-resize`, `@jimp/plugin-rotate`, `@jimp/plugin-scale`, `@jimp/plugin-shadow`, `@jimp/plugin-threshold`, `@jimp/plugins`, `@jimp/test-utils`, `@jimp/bmp`, `@jimp/gif`, `@jimp/jpeg`, `@jimp/png`, `@jimp/tiff`, `@jimp/types`, `@jimp/utils`
+ - Fix regeneratorRuntime errors [#815](https://github.com/oliver-moran/jimp/pull/815) ([@crutchcorn](https://github.com/crutchcorn) [@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 2
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+- Corbin Crutchley ([@crutchcorn](https://github.com/crutchcorn))
diff --git a/project starter code/node_modules/@jimp/plugin-threshold/LICENSE b/node_modules/@jimp/plugin-threshold/LICENSE
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-threshold/LICENSE
rename to node_modules/@jimp/plugin-threshold/LICENSE
diff --git a/node_modules/@jimp/plugin-threshold/README.md b/node_modules/@jimp/plugin-threshold/README.md
new file mode 100644
index 00000000..57271c3b
--- /dev/null
+++ b/node_modules/@jimp/plugin-threshold/README.md
@@ -0,0 +1,30 @@
+
+
+
@jimp/plugin-threshold
+
Lightens an image.
+
+
+This is useful as a simplified method for processing scanned drawings, signatures, etc
+
+## Usage
+
+- @param {number} options object
+ - max: A number auto limited between 0 - 255
+ - replace: (optional) A number auto limited between 0 - 255 (default 255)
+ - autoGreyscale: (optional) A boolean whether to apply greyscale beforehand (default true)
+- @param {function(Error, Jimp)} cb (optional) a callback for when complete
+
+```js
+import jimp from "jimp";
+
+async function main() {
+ const image = await jimp.read("test/image.png");
+
+ image.threshold({ max: 150 });
+ // or
+ image.threshold({ max: 200, replace: 200, autoGreyscale: false });
+}
+
+main();
+```
diff --git a/node_modules/@jimp/plugin-threshold/babel.config.js b/node_modules/@jimp/plugin-threshold/babel.config.js
new file mode 100644
index 00000000..13e2603a
--- /dev/null
+++ b/node_modules/@jimp/plugin-threshold/babel.config.js
@@ -0,0 +1,38 @@
+module.exports = (api) => {
+ api.cache(true);
+
+ return {
+ presets: [
+ [
+ "@babel/env",
+ {
+ useBuiltIns: "usage",
+ },
+ ],
+ ],
+
+ plugins: [
+ "@babel/proposal-class-properties",
+ "@babel/syntax-object-rest-spread",
+ process.env.BABEL_ENV !== "module" && "add-module-exports",
+ [
+ "transform-inline-environment-variables",
+ { include: ["BABEL_ENV", "ENV"] },
+ ],
+ ].filter(Boolean),
+
+ env: {
+ test: {
+ plugins: ["istanbul"],
+ },
+ development: {
+ plugins: [process.env.ENV !== "browser" && "source-map-support"].filter(
+ Boolean
+ ),
+ },
+ module: {
+ presets: [["@babel/env", { modules: false }]],
+ },
+ },
+ };
+};
diff --git a/node_modules/@jimp/plugin-threshold/dist/index.js b/node_modules/@jimp/plugin-threshold/dist/index.js
new file mode 100644
index 00000000..398bd57e
--- /dev/null
+++ b/node_modules/@jimp/plugin-threshold/dist/index.js
@@ -0,0 +1,67 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports["default"] = void 0;
+
+var _utils = require("@jimp/utils");
+
+/**
+ * Applies a minimum color threshold to a greyscale image. Converts image to greyscale by default
+ * @param {number} options object
+ * max: A number auto limited between 0 - 255
+ * replace: (optional) A number auto limited between 0 - 255 (default 255)
+ * autoGreyscale: (optional) A boolean whether to apply greyscale beforehand (default true)
+ * @param {number} cb (optional) a callback for when complete
+ * @return {this} this for chaining of methods
+ */
+var _default = function _default() {
+ return {
+ threshold: function threshold(_ref, cb) {
+ var _this = this;
+
+ var max = _ref.max,
+ _ref$replace = _ref.replace,
+ replace = _ref$replace === void 0 ? 255 : _ref$replace,
+ _ref$autoGreyscale = _ref.autoGreyscale,
+ autoGreyscale = _ref$autoGreyscale === void 0 ? true : _ref$autoGreyscale;
+
+ if (typeof max !== "number") {
+ return _utils.throwError.call(this, "max must be a number", cb);
+ }
+
+ if (typeof replace !== "number") {
+ return _utils.throwError.call(this, "replace must be a number", cb);
+ }
+
+ if (typeof autoGreyscale !== "boolean") {
+ return _utils.throwError.call(this, "autoGreyscale must be a boolean", cb);
+ }
+
+ max = this.constructor.limit255(max);
+ replace = this.constructor.limit255(replace);
+
+ if (autoGreyscale) {
+ this.greyscale();
+ }
+
+ this.scanQuiet(0, 0, this.bitmap.width, this.bitmap.height, function (x, y, idx) {
+ var grey = _this.bitmap.data[idx] < max ? _this.bitmap.data[idx] : replace;
+ _this.bitmap.data[idx] = grey;
+ _this.bitmap.data[idx + 1] = grey;
+ _this.bitmap.data[idx + 2] = grey;
+ });
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ }
+ };
+};
+
+exports["default"] = _default;
+module.exports = exports.default;
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-threshold/dist/index.js.map b/node_modules/@jimp/plugin-threshold/dist/index.js.map
new file mode 100644
index 00000000..0fe67355
--- /dev/null
+++ b/node_modules/@jimp/plugin-threshold/dist/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/index.js"],"names":["threshold","cb","max","replace","autoGreyscale","throwError","call","constructor","limit255","greyscale","scanQuiet","bitmap","width","height","x","y","idx","grey","data"],"mappings":";;;;;;;AAAA;;AAEA;;;;;;;;;eASe;AAAA,SAAO;AACpBA,IAAAA,SADoB,2BACoCC,EADpC,EACwC;AAAA;;AAAA,UAAhDC,GAAgD,QAAhDA,GAAgD;AAAA,8BAA3CC,OAA2C;AAAA,UAA3CA,OAA2C,6BAAjC,GAAiC;AAAA,oCAA5BC,aAA4B;AAAA,UAA5BA,aAA4B,mCAAZ,IAAY;;AAC1D,UAAI,OAAOF,GAAP,KAAe,QAAnB,EAA6B;AAC3B,eAAOG,kBAAWC,IAAX,CAAgB,IAAhB,EAAsB,sBAAtB,EAA8CL,EAA9C,CAAP;AACD;;AAED,UAAI,OAAOE,OAAP,KAAmB,QAAvB,EAAiC;AAC/B,eAAOE,kBAAWC,IAAX,CAAgB,IAAhB,EAAsB,0BAAtB,EAAkDL,EAAlD,CAAP;AACD;;AAED,UAAI,OAAOG,aAAP,KAAyB,SAA7B,EAAwC;AACtC,eAAOC,kBAAWC,IAAX,CAAgB,IAAhB,EAAsB,iCAAtB,EAAyDL,EAAzD,CAAP;AACD;;AAEDC,MAAAA,GAAG,GAAG,KAAKK,WAAL,CAAiBC,QAAjB,CAA0BN,GAA1B,CAAN;AACAC,MAAAA,OAAO,GAAG,KAAKI,WAAL,CAAiBC,QAAjB,CAA0BL,OAA1B,CAAV;;AAEA,UAAIC,aAAJ,EAAmB;AACjB,aAAKK,SAAL;AACD;;AAED,WAAKC,SAAL,CAAe,CAAf,EAAkB,CAAlB,EAAqB,KAAKC,MAAL,CAAYC,KAAjC,EAAwC,KAAKD,MAAL,CAAYE,MAApD,EAA4D,UAACC,CAAD,EAAIC,CAAJ,EAAOC,GAAP,EAAe;AACzE,YAAMC,IAAI,GACR,KAAI,CAACN,MAAL,CAAYO,IAAZ,CAAiBF,GAAjB,IAAwBd,GAAxB,GAA8B,KAAI,CAACS,MAAL,CAAYO,IAAZ,CAAiBF,GAAjB,CAA9B,GAAsDb,OADxD;AAGA,QAAA,KAAI,CAACQ,MAAL,CAAYO,IAAZ,CAAiBF,GAAjB,IAAwBC,IAAxB;AACA,QAAA,KAAI,CAACN,MAAL,CAAYO,IAAZ,CAAiBF,GAAG,GAAG,CAAvB,IAA4BC,IAA5B;AACA,QAAA,KAAI,CAACN,MAAL,CAAYO,IAAZ,CAAiBF,GAAG,GAAG,CAAvB,IAA4BC,IAA5B;AACD,OAPD;;AASA,UAAI,0BAAchB,EAAd,CAAJ,EAAuB;AACrBA,QAAAA,EAAE,CAACK,IAAH,CAAQ,IAAR,EAAc,IAAd,EAAoB,IAApB;AACD;;AAED,aAAO,IAAP;AACD;AAnCmB,GAAP;AAAA,C","sourcesContent":["import { isNodePattern, throwError } from \"@jimp/utils\";\n\n/**\n * Applies a minimum color threshold to a greyscale image. Converts image to greyscale by default\n * @param {number} options object\n * max: A number auto limited between 0 - 255\n * replace: (optional) A number auto limited between 0 - 255 (default 255)\n * autoGreyscale: (optional) A boolean whether to apply greyscale beforehand (default true)\n * @param {number} cb (optional) a callback for when complete\n * @return {this} this for chaining of methods\n */\nexport default () => ({\n threshold({ max, replace = 255, autoGreyscale = true }, cb) {\n if (typeof max !== \"number\") {\n return throwError.call(this, \"max must be a number\", cb);\n }\n\n if (typeof replace !== \"number\") {\n return throwError.call(this, \"replace must be a number\", cb);\n }\n\n if (typeof autoGreyscale !== \"boolean\") {\n return throwError.call(this, \"autoGreyscale must be a boolean\", cb);\n }\n\n max = this.constructor.limit255(max);\n replace = this.constructor.limit255(replace);\n\n if (autoGreyscale) {\n this.greyscale();\n }\n\n this.scanQuiet(0, 0, this.bitmap.width, this.bitmap.height, (x, y, idx) => {\n const grey =\n this.bitmap.data[idx] < max ? this.bitmap.data[idx] : replace;\n\n this.bitmap.data[idx] = grey;\n this.bitmap.data[idx + 1] = grey;\n this.bitmap.data[idx + 2] = grey;\n });\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n },\n});\n"],"file":"index.js"}
\ No newline at end of file
diff --git a/node_modules/@jimp/plugin-threshold/index.d.ts b/node_modules/@jimp/plugin-threshold/index.d.ts
new file mode 100644
index 00000000..96ad193f
--- /dev/null
+++ b/node_modules/@jimp/plugin-threshold/index.d.ts
@@ -0,0 +1,14 @@
+import { ImageCallback } from "@jimp/core";
+
+interface Threshold {
+ threshold(
+ opts: {
+ max: number;
+ replace?: number;
+ autoGreyscale?: boolean;
+ },
+ cb?: ImageCallback
+ ): this;
+}
+
+export default function (): Threshold;
diff --git a/node_modules/@jimp/plugin-threshold/package.json b/node_modules/@jimp/plugin-threshold/package.json
new file mode 100644
index 00000000..6a4d57bf
--- /dev/null
+++ b/node_modules/@jimp/plugin-threshold/package.json
@@ -0,0 +1,42 @@
+{
+ "name": "@jimp/plugin-threshold",
+ "version": "0.16.13",
+ "description": "Lightens an image.",
+ "main": "dist/index.js",
+ "module": "es/index.js",
+ "types": "index.d.ts",
+ "scripts": {
+ "test": "cross-env BABEL_ENV=test mocha --require @babel/register",
+ "test:watch": "npm run test -- --reporter min --watch",
+ "test:coverage": "nyc npm run test",
+ "build": "npm run build:node:production && npm run build:module",
+ "build:watch": "npm run build:node:debug -- -- --watch --verbose",
+ "build:debug": "npm run build:node:debug",
+ "build:module": "cross-env BABEL_ENV=module babel src -d es --source-maps --config-file ../../babel.config.js",
+ "build:node": "babel src -d dist --source-maps --config-file ../../babel.config.js",
+ "build:node:debug": "cross-env BABEL_ENV=development npm run build:node",
+ "build:node:production": "cross-env BABEL_ENV=production npm run build:node"
+ },
+ "author": "",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5",
+ "@jimp/plugin-color": ">=0.8.0",
+ "@jimp/plugin-resize": ">=0.8.0"
+ },
+ "devDependencies": {
+ "@jimp/custom": "^0.16.13",
+ "@jimp/jpeg": "^0.16.13",
+ "@jimp/plugin-color": "^0.16.13",
+ "@jimp/plugin-resize": "^0.16.13",
+ "@jimp/test-utils": "^0.16.13"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "gitHead": "9eec86086634329a072901dca3a800b850548572"
+}
diff --git a/node_modules/@jimp/plugin-threshold/src/index.js b/node_modules/@jimp/plugin-threshold/src/index.js
new file mode 100644
index 00000000..fad06bac
--- /dev/null
+++ b/node_modules/@jimp/plugin-threshold/src/index.js
@@ -0,0 +1,48 @@
+import { isNodePattern, throwError } from "@jimp/utils";
+
+/**
+ * Applies a minimum color threshold to a greyscale image. Converts image to greyscale by default
+ * @param {number} options object
+ * max: A number auto limited between 0 - 255
+ * replace: (optional) A number auto limited between 0 - 255 (default 255)
+ * autoGreyscale: (optional) A boolean whether to apply greyscale beforehand (default true)
+ * @param {number} cb (optional) a callback for when complete
+ * @return {this} this for chaining of methods
+ */
+export default () => ({
+ threshold({ max, replace = 255, autoGreyscale = true }, cb) {
+ if (typeof max !== "number") {
+ return throwError.call(this, "max must be a number", cb);
+ }
+
+ if (typeof replace !== "number") {
+ return throwError.call(this, "replace must be a number", cb);
+ }
+
+ if (typeof autoGreyscale !== "boolean") {
+ return throwError.call(this, "autoGreyscale must be a boolean", cb);
+ }
+
+ max = this.constructor.limit255(max);
+ replace = this.constructor.limit255(replace);
+
+ if (autoGreyscale) {
+ this.greyscale();
+ }
+
+ this.scanQuiet(0, 0, this.bitmap.width, this.bitmap.height, (x, y, idx) => {
+ const grey =
+ this.bitmap.data[idx] < max ? this.bitmap.data[idx] : replace;
+
+ this.bitmap.data[idx] = grey;
+ this.bitmap.data[idx + 1] = grey;
+ this.bitmap.data[idx + 2] = grey;
+ });
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+});
diff --git a/project starter code/node_modules/@jimp/plugin-threshold/test/images/hands.jpg b/node_modules/@jimp/plugin-threshold/test/images/hands.jpg
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-threshold/test/images/hands.jpg
rename to node_modules/@jimp/plugin-threshold/test/images/hands.jpg
diff --git a/project starter code/node_modules/@jimp/plugin-threshold/test/images/hands_mx200_rp255.jpg b/node_modules/@jimp/plugin-threshold/test/images/hands_mx200_rp255.jpg
similarity index 100%
rename from project starter code/node_modules/@jimp/plugin-threshold/test/images/hands_mx200_rp255.jpg
rename to node_modules/@jimp/plugin-threshold/test/images/hands_mx200_rp255.jpg
diff --git a/node_modules/@jimp/plugin-threshold/test/threshold.test.js b/node_modules/@jimp/plugin-threshold/test/threshold.test.js
new file mode 100644
index 00000000..325f8313
--- /dev/null
+++ b/node_modules/@jimp/plugin-threshold/test/threshold.test.js
@@ -0,0 +1,30 @@
+import { Jimp, getTestDir } from "@jimp/test-utils";
+import configure from "@jimp/custom";
+import jpeg from "@jimp/jpeg";
+import color from "@jimp/plugin-color";
+import resize from "@jimp/plugin-resize";
+
+import threshold from "../src";
+
+const jimp = configure(
+ { types: [jpeg], plugins: [threshold, color, resize] },
+ Jimp
+);
+
+describe("Threshold", function () {
+ this.timeout(15000);
+
+ it("defines default threshold for lighter backgrounds", async () => {
+ const expectedImage = await jimp.read(
+ getTestDir(__dirname) + "/images/hands_mx200_rp255.jpg"
+ );
+ const testImage = await jimp.read(
+ getTestDir(__dirname) + "/images/hands.jpg"
+ );
+
+ testImage
+ .threshold({ max: 200, replace: 255 })
+ .hash()
+ .should.be.equal(expectedImage.hash());
+ });
+});
diff --git a/node_modules/@jimp/plugins/CHANGELOG.md b/node_modules/@jimp/plugins/CHANGELOG.md
new file mode 100644
index 00000000..dbaa66e5
--- /dev/null
+++ b/node_modules/@jimp/plugins/CHANGELOG.md
@@ -0,0 +1,59 @@
+# v0.16.3 (Sat Feb 04 2023)
+
+#### ⚠️ Pushed to `master`
+
+- upgrade prettier ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 1
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+---
+
+# v0.11.0 (Fri May 15 2020)
+
+#### 🚀 Enhancement
+
+- Removed Core-JS as a dependency. [#882](https://github.com/oliver-moran/jimp/pull/882) ([@EricRabil](https://github.com/EricRabil))
+
+#### Authors: 1
+
+- Eric Rabil ([@EricRabil](https://github.com/EricRabil))
+
+---
+
+# v0.9.8 (Sat Mar 28 2020)
+
+#### 🐛 Bug Fix
+
+- Export the four missing plugins from plugin package [#866](https://github.com/oliver-moran/jimp/pull/866) ([@crutchcorn](https://github.com/crutchcorn))
+
+#### Authors: 1
+
+- Corbin Crutchley ([@crutchcorn](https://github.com/crutchcorn))
+
+---
+
+# v0.9.7 (Fri Mar 27 2020)
+
+#### 🐛 Bug Fix
+
+- Added missing plugins to the types [#863](https://github.com/oliver-moran/jimp/pull/863) ([@crutchcorn](https://github.com/crutchcorn))
+
+#### Authors: 1
+
+- Corbin Crutchley ([@crutchcorn](https://github.com/crutchcorn))
+
+---
+
+# v0.9.3 (Tue Nov 26 2019)
+
+#### 🐛 Bug Fix
+
+- `@jimp/cli`, `@jimp/core`, `@jimp/custom`, `jimp`, `@jimp/plugin-blit`, `@jimp/plugin-blur`, `@jimp/plugin-circle`, `@jimp/plugin-color`, `@jimp/plugin-contain`, `@jimp/plugin-cover`, `@jimp/plugin-crop`, `@jimp/plugin-displace`, `@jimp/plugin-dither`, `@jimp/plugin-fisheye`, `@jimp/plugin-flip`, `@jimp/plugin-gaussian`, `@jimp/plugin-invert`, `@jimp/plugin-mask`, `@jimp/plugin-normalize`, `@jimp/plugin-print`, `@jimp/plugin-resize`, `@jimp/plugin-rotate`, `@jimp/plugin-scale`, `@jimp/plugin-shadow`, `@jimp/plugin-threshold`, `@jimp/plugins`, `@jimp/test-utils`, `@jimp/bmp`, `@jimp/gif`, `@jimp/jpeg`, `@jimp/png`, `@jimp/tiff`, `@jimp/types`, `@jimp/utils`
+ - Fix regeneratorRuntime errors [#815](https://github.com/oliver-moran/jimp/pull/815) ([@crutchcorn](https://github.com/crutchcorn) [@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 2
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+- Corbin Crutchley ([@crutchcorn](https://github.com/crutchcorn))
diff --git a/project starter code/node_modules/@jimp/plugins/LICENSE b/node_modules/@jimp/plugins/LICENSE
similarity index 100%
rename from project starter code/node_modules/@jimp/plugins/LICENSE
rename to node_modules/@jimp/plugins/LICENSE
diff --git a/project starter code/node_modules/@jimp/plugins/README.md b/node_modules/@jimp/plugins/README.md
similarity index 100%
rename from project starter code/node_modules/@jimp/plugins/README.md
rename to node_modules/@jimp/plugins/README.md
diff --git a/project starter code/node_modules/@jimp/plugins/dist/index.js b/node_modules/@jimp/plugins/dist/index.js
similarity index 100%
rename from project starter code/node_modules/@jimp/plugins/dist/index.js
rename to node_modules/@jimp/plugins/dist/index.js
diff --git a/node_modules/@jimp/plugins/dist/index.js.map b/node_modules/@jimp/plugins/dist/index.js.map
new file mode 100644
index 00000000..7abc2a38
--- /dev/null
+++ b/node_modules/@jimp/plugins/dist/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/index.js"],"names":["plugins","blit","blur","circle","color","contain","cover","crop","displace","dither","fisheye","flip","gaussian","invert","mask","normalize","print","resize","rotate","scale","shadow","threshold","jimpEvChange","initializedPlugins","map","pluginModule","plugin","constants","mergeDeep"],"mappings":";;;;;;;;;;;AAAA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA,IAAMA,OAAO,GAAG,CACdC,sBADc,EAEdC,sBAFc,EAGdC,wBAHc,EAIdC,uBAJc,EAKdC,yBALc,EAMdC,uBANc,EAOdC,sBAPc,EAQdC,0BARc,EASdC,wBATc,EAUdC,yBAVc,EAWdC,sBAXc,EAYdC,0BAZc,EAadC,wBAbc,EAcdC,sBAdc,EAedC,2BAfc,EAgBdC,uBAhBc,EAiBdC,wBAjBc,EAkBdC,wBAlBc,EAmBdC,uBAnBc,EAoBdC,wBApBc,EAqBdC,2BArBc,CAAhB;;eAwBe,kBAACC,YAAD,EAAkB;AAC/B,MAAMC,kBAAkB,GAAGvB,OAAO,CAACwB,GAAR,CAAY,UAACC,YAAD,EAAkB;AACvD,QAAIC,MAAM,GAAGD,YAAY,CAACH,YAAD,CAAZ,IAA8B,EAA3C;;AAEA,QAAI,CAACI,MAAM,SAAP,IAAiB,CAACA,MAAM,CAACC,SAA7B,EAAwC;AACtC;AACAD,MAAAA,MAAM,GAAG;AAAE,iBAAOA;AAAT,OAAT;AACD;;AAED,WAAOA,MAAP;AACD,GAT0B,CAA3B;AAWA,SAAOE,kEAAaL,kBAAb,EAAP;AACD,C","sourcesContent":["import { mergeDeep } from \"timm\";\n\nimport blit from \"@jimp/plugin-blit\";\nimport blur from \"@jimp/plugin-blur\";\nimport circle from \"@jimp/plugin-circle\";\nimport color from \"@jimp/plugin-color\";\nimport contain from \"@jimp/plugin-contain\";\nimport cover from \"@jimp/plugin-cover\";\nimport crop from \"@jimp/plugin-crop\";\nimport displace from \"@jimp/plugin-displace\";\nimport dither from \"@jimp/plugin-dither\";\nimport fisheye from \"@jimp/plugin-fisheye\";\nimport flip from \"@jimp/plugin-flip\";\nimport gaussian from \"@jimp/plugin-gaussian\";\nimport invert from \"@jimp/plugin-invert\";\nimport mask from \"@jimp/plugin-mask\";\nimport normalize from \"@jimp/plugin-normalize\";\nimport print from \"@jimp/plugin-print\";\nimport resize from \"@jimp/plugin-resize\";\nimport rotate from \"@jimp/plugin-rotate\";\nimport scale from \"@jimp/plugin-scale\";\nimport shadow from \"@jimp/plugin-shadow\";\nimport threshold from \"@jimp/plugin-threshold\";\n\nconst plugins = [\n blit,\n blur,\n circle,\n color,\n contain,\n cover,\n crop,\n displace,\n dither,\n fisheye,\n flip,\n gaussian,\n invert,\n mask,\n normalize,\n print,\n resize,\n rotate,\n scale,\n shadow,\n threshold,\n];\n\nexport default (jimpEvChange) => {\n const initializedPlugins = plugins.map((pluginModule) => {\n let plugin = pluginModule(jimpEvChange) || {};\n\n if (!plugin.class && !plugin.constants) {\n // Default to class function\n plugin = { class: plugin };\n }\n\n return plugin;\n });\n\n return mergeDeep(...initializedPlugins);\n};\n"],"file":"index.js"}
\ No newline at end of file
diff --git a/node_modules/@jimp/plugins/index.d.ts b/node_modules/@jimp/plugins/index.d.ts
new file mode 100644
index 00000000..0184bbcc
--- /dev/null
+++ b/node_modules/@jimp/plugins/index.d.ts
@@ -0,0 +1,76 @@
+import blit from "@jimp/plugin-blit";
+import blur from "@jimp/plugin-blur";
+import circle from "@jimp/plugin-circle";
+import color from "@jimp/plugin-color";
+import contain from "@jimp/plugin-contain";
+import cover from "@jimp/plugin-cover";
+import crop from "@jimp/plugin-crop";
+import displace from "@jimp/plugin-displace";
+import dither from "@jimp/plugin-dither";
+import fisheye from "@jimp/plugin-fisheye";
+import flip from "@jimp/plugin-flip";
+import gaussian from "@jimp/plugin-gaussian";
+import invert from "@jimp/plugin-invert";
+import mask from "@jimp/plugin-mask";
+import normalize from "@jimp/plugin-normalize";
+import print from "@jimp/plugin-print";
+import resize from "@jimp/plugin-resize";
+import rotate from "@jimp/plugin-rotate";
+import scale from "@jimp/plugin-scale";
+import shadow from "@jimp/plugin-shadow";
+import threshold from "@jimp/plugin-threshold";
+
+type BlitRet = ReturnType;
+type BlurRet = ReturnType;
+type CircleRet = ReturnType;
+type ColorRet = ReturnType;
+type ContainRet = ReturnType;
+type CoverRet = ReturnType;
+type CropRet = ReturnType;
+type DisplaceRet = ReturnType;
+type DitherRet = ReturnType;
+type FlipRet = ReturnType;
+type FisheyeRet = ReturnType;
+type GaussianRet = ReturnType;
+type InvertRet = ReturnType;
+type MaskRet = ReturnType;
+type NormalizeRet = ReturnType;
+type PrintRet = ReturnType;
+type ResizeRet = ReturnType;
+type RotateRet = ReturnType;
+type ScaleRet = ReturnType;
+type ShadowRet = ReturnType;
+type ThresholdRet = ReturnType;
+
+/**
+ * This is made union and not intersection to avoid issues with
+ * `IllformedPlugin` and `WellFormedPlugin` when using typings with Jimp
+ * generic
+ *
+ * In reality, this should be an intersection but our type data isn't
+ * clever enough to figure out what's a class and what's not/etc
+ */
+type Plugins =
+ | BlitRet
+ | BlurRet
+ | CircleRet
+ | ColorRet
+ | ContainRet
+ | CoverRet
+ | CropRet
+ | DisplaceRet
+ | DitherRet
+ | FlipRet
+ | FisheyeRet
+ | GaussianRet
+ | InvertRet
+ | MaskRet
+ | NormalizeRet
+ | PrintRet
+ | ResizeRet
+ | RotateRet
+ | ScaleRet
+ | ShadowRet
+ | ThresholdRet;
+
+export default function (): Plugins;
diff --git a/node_modules/@jimp/plugins/package.json b/node_modules/@jimp/plugins/package.json
new file mode 100644
index 00000000..6f3bcc22
--- /dev/null
+++ b/node_modules/@jimp/plugins/package.json
@@ -0,0 +1,51 @@
+{
+ "name": "@jimp/plugins",
+ "version": "0.16.13",
+ "description": "Default Jimp plugin.",
+ "main": "dist/index.js",
+ "module": "es/index.js",
+ "types": "index.d.ts",
+ "scripts": {
+ "build": "npm run build:node:production && npm run build:module",
+ "build:watch": "npm run build:node:debug -- -- --watch --verbose",
+ "build:debug": "npm run build:node:debug",
+ "build:module": "cross-env BABEL_ENV=module babel src -d es --source-maps --config-file ../../babel.config.js",
+ "build:node": "babel src -d dist --source-maps --config-file ../../babel.config.js",
+ "build:node:debug": "cross-env BABEL_ENV=development npm run build:node",
+ "build:node:production": "cross-env BABEL_ENV=production npm run build:node"
+ },
+ "author": "",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/plugin-blit": "^0.16.13",
+ "@jimp/plugin-blur": "^0.16.13",
+ "@jimp/plugin-circle": "^0.16.13",
+ "@jimp/plugin-color": "^0.16.13",
+ "@jimp/plugin-contain": "^0.16.13",
+ "@jimp/plugin-cover": "^0.16.13",
+ "@jimp/plugin-crop": "^0.16.13",
+ "@jimp/plugin-displace": "^0.16.13",
+ "@jimp/plugin-dither": "^0.16.13",
+ "@jimp/plugin-fisheye": "^0.16.13",
+ "@jimp/plugin-flip": "^0.16.13",
+ "@jimp/plugin-gaussian": "^0.16.13",
+ "@jimp/plugin-invert": "^0.16.13",
+ "@jimp/plugin-mask": "^0.16.13",
+ "@jimp/plugin-normalize": "^0.16.13",
+ "@jimp/plugin-print": "^0.16.13",
+ "@jimp/plugin-resize": "^0.16.13",
+ "@jimp/plugin-rotate": "^0.16.13",
+ "@jimp/plugin-scale": "^0.16.13",
+ "@jimp/plugin-shadow": "^0.16.13",
+ "@jimp/plugin-threshold": "^0.16.13",
+ "timm": "^1.6.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "gitHead": "9eec86086634329a072901dca3a800b850548572"
+}
diff --git a/node_modules/@jimp/plugins/src/index.js b/node_modules/@jimp/plugins/src/index.js
new file mode 100644
index 00000000..a31740cf
--- /dev/null
+++ b/node_modules/@jimp/plugins/src/index.js
@@ -0,0 +1,62 @@
+import { mergeDeep } from "timm";
+
+import blit from "@jimp/plugin-blit";
+import blur from "@jimp/plugin-blur";
+import circle from "@jimp/plugin-circle";
+import color from "@jimp/plugin-color";
+import contain from "@jimp/plugin-contain";
+import cover from "@jimp/plugin-cover";
+import crop from "@jimp/plugin-crop";
+import displace from "@jimp/plugin-displace";
+import dither from "@jimp/plugin-dither";
+import fisheye from "@jimp/plugin-fisheye";
+import flip from "@jimp/plugin-flip";
+import gaussian from "@jimp/plugin-gaussian";
+import invert from "@jimp/plugin-invert";
+import mask from "@jimp/plugin-mask";
+import normalize from "@jimp/plugin-normalize";
+import print from "@jimp/plugin-print";
+import resize from "@jimp/plugin-resize";
+import rotate from "@jimp/plugin-rotate";
+import scale from "@jimp/plugin-scale";
+import shadow from "@jimp/plugin-shadow";
+import threshold from "@jimp/plugin-threshold";
+
+const plugins = [
+ blit,
+ blur,
+ circle,
+ color,
+ contain,
+ cover,
+ crop,
+ displace,
+ dither,
+ fisheye,
+ flip,
+ gaussian,
+ invert,
+ mask,
+ normalize,
+ print,
+ resize,
+ rotate,
+ scale,
+ shadow,
+ threshold,
+];
+
+export default (jimpEvChange) => {
+ const initializedPlugins = plugins.map((pluginModule) => {
+ let plugin = pluginModule(jimpEvChange) || {};
+
+ if (!plugin.class && !plugin.constants) {
+ // Default to class function
+ plugin = { class: plugin };
+ }
+
+ return plugin;
+ });
+
+ return mergeDeep(...initializedPlugins);
+};
diff --git a/node_modules/@jimp/png/CHANGELOG.md b/node_modules/@jimp/png/CHANGELOG.md
new file mode 100644
index 00000000..cf26b5c3
--- /dev/null
+++ b/node_modules/@jimp/png/CHANGELOG.md
@@ -0,0 +1,36 @@
+# v0.16.3 (Sat Feb 04 2023)
+
+#### ⚠️ Pushed to `master`
+
+- update linting ([@hipstersmoothie](https://github.com/hipstersmoothie))
+- upgrade prettier ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 1
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+---
+
+# v0.11.0 (Fri May 15 2020)
+
+#### 🚀 Enhancement
+
+- Removed Core-JS as a dependency. [#882](https://github.com/oliver-moran/jimp/pull/882) ([@EricRabil](https://github.com/EricRabil))
+
+#### Authors: 1
+
+- Eric Rabil ([@EricRabil](https://github.com/EricRabil))
+
+---
+
+# v0.9.3 (Tue Nov 26 2019)
+
+#### 🐛 Bug Fix
+
+- `@jimp/cli`, `@jimp/core`, `@jimp/custom`, `jimp`, `@jimp/plugin-blit`, `@jimp/plugin-blur`, `@jimp/plugin-circle`, `@jimp/plugin-color`, `@jimp/plugin-contain`, `@jimp/plugin-cover`, `@jimp/plugin-crop`, `@jimp/plugin-displace`, `@jimp/plugin-dither`, `@jimp/plugin-fisheye`, `@jimp/plugin-flip`, `@jimp/plugin-gaussian`, `@jimp/plugin-invert`, `@jimp/plugin-mask`, `@jimp/plugin-normalize`, `@jimp/plugin-print`, `@jimp/plugin-resize`, `@jimp/plugin-rotate`, `@jimp/plugin-scale`, `@jimp/plugin-shadow`, `@jimp/plugin-threshold`, `@jimp/plugins`, `@jimp/test-utils`, `@jimp/bmp`, `@jimp/gif`, `@jimp/jpeg`, `@jimp/png`, `@jimp/tiff`, `@jimp/types`, `@jimp/utils`
+ - Fix regeneratorRuntime errors [#815](https://github.com/oliver-moran/jimp/pull/815) ([@crutchcorn](https://github.com/crutchcorn) [@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 2
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+- Corbin Crutchley ([@crutchcorn](https://github.com/crutchcorn))
diff --git a/project starter code/node_modules/@jimp/png/LICENSE b/node_modules/@jimp/png/LICENSE
similarity index 100%
rename from project starter code/node_modules/@jimp/png/LICENSE
rename to node_modules/@jimp/png/LICENSE
diff --git a/project starter code/node_modules/@jimp/png/README.md b/node_modules/@jimp/png/README.md
similarity index 100%
rename from project starter code/node_modules/@jimp/png/README.md
rename to node_modules/@jimp/png/README.md
diff --git a/node_modules/@jimp/png/dist/index.js b/node_modules/@jimp/png/dist/index.js
new file mode 100644
index 00000000..0c1a688e
--- /dev/null
+++ b/node_modules/@jimp/png/dist/index.js
@@ -0,0 +1,162 @@
+"use strict";
+
+var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports["default"] = void 0;
+
+var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
+
+var _pngjs = require("pngjs");
+
+var _utils = require("@jimp/utils");
+
+var MIME_TYPE = "image/png"; // PNG filter types
+
+var PNG_FILTER_AUTO = -1;
+var PNG_FILTER_NONE = 0;
+var PNG_FILTER_SUB = 1;
+var PNG_FILTER_UP = 2;
+var PNG_FILTER_AVERAGE = 3;
+var PNG_FILTER_PATH = 4;
+
+var _default = function _default() {
+ return {
+ mime: (0, _defineProperty2["default"])({}, MIME_TYPE, ["png"]),
+ constants: {
+ MIME_PNG: MIME_TYPE,
+ PNG_FILTER_AUTO: PNG_FILTER_AUTO,
+ PNG_FILTER_NONE: PNG_FILTER_NONE,
+ PNG_FILTER_SUB: PNG_FILTER_SUB,
+ PNG_FILTER_UP: PNG_FILTER_UP,
+ PNG_FILTER_AVERAGE: PNG_FILTER_AVERAGE,
+ PNG_FILTER_PATH: PNG_FILTER_PATH
+ },
+ hasAlpha: (0, _defineProperty2["default"])({}, MIME_TYPE, true),
+ decoders: (0, _defineProperty2["default"])({}, MIME_TYPE, _pngjs.PNG.sync.read),
+ encoders: (0, _defineProperty2["default"])({}, MIME_TYPE, function (data) {
+ var png = new _pngjs.PNG({
+ width: data.bitmap.width,
+ height: data.bitmap.height
+ });
+ png.data = data.bitmap.data;
+ return _pngjs.PNG.sync.write(png, {
+ width: data.bitmap.width,
+ height: data.bitmap.height,
+ deflateLevel: data._deflateLevel,
+ deflateStrategy: data._deflateStrategy,
+ filterType: data._filterType,
+ colorType: typeof data._colorType === "number" ? data._colorType : data._rgba ? 6 : 2,
+ inputHasAlpha: data._rgba
+ });
+ }),
+ "class": {
+ _deflateLevel: 9,
+ _deflateStrategy: 3,
+ _filterType: PNG_FILTER_AUTO,
+ _colorType: null,
+
+ /**
+ * Sets the deflate level used when saving as PNG format (default is 9)
+ * @param {number} l Deflate level to use 0-9. 0 is no compression. 9 (default) is maximum compression.
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+ deflateLevel: function deflateLevel(l, cb) {
+ if (typeof l !== "number") {
+ return _utils.throwError.call(this, "l must be a number", cb);
+ }
+
+ if (l < 0 || l > 9) {
+ return _utils.throwError.call(this, "l must be a number 0 - 9", cb);
+ }
+
+ this._deflateLevel = Math.round(l);
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+
+ /**
+ * Sets the deflate strategy used when saving as PNG format (default is 3)
+ * @param {number} s Deflate strategy to use 0-3.
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+ deflateStrategy: function deflateStrategy(s, cb) {
+ if (typeof s !== "number") {
+ return _utils.throwError.call(this, "s must be a number", cb);
+ }
+
+ if (s < 0 || s > 3) {
+ return _utils.throwError.call(this, "s must be a number 0 - 3", cb);
+ }
+
+ this._deflateStrategy = Math.round(s);
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+
+ /**
+ * Sets the filter type used when saving as PNG format (default is automatic filters)
+ * @param {number} f The quality to use -1-4.
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+ filterType: function filterType(f, cb) {
+ if (typeof f !== "number") {
+ return _utils.throwError.call(this, "n must be a number", cb);
+ }
+
+ if (f < -1 || f > 4) {
+ return _utils.throwError.call(this, "n must be -1 (auto) or a number 0 - 4", cb);
+ }
+
+ this._filterType = Math.round(f);
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+
+ /**
+ * Sets the color type used when saving as PNG format
+ * @param {number} s color type to use 0, 2, 4, 6.
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+ colorType: function colorType(s, cb) {
+ if (typeof s !== "number") {
+ return _utils.throwError.call(this, "s must be a number", cb);
+ }
+
+ if (s !== 0 && s !== 2 && s !== 4 && s !== 6) {
+ return _utils.throwError.call(this, "s must be a number 0, 2, 4, 6.", cb);
+ }
+
+ this._colorType = Math.round(s);
+
+ if ((0, _utils.isNodePattern)(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ }
+ }
+ };
+};
+
+exports["default"] = _default;
+module.exports = exports.default;
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@jimp/png/dist/index.js.map b/node_modules/@jimp/png/dist/index.js.map
new file mode 100644
index 00000000..a5bbc076
--- /dev/null
+++ b/node_modules/@jimp/png/dist/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/index.js"],"names":["MIME_TYPE","PNG_FILTER_AUTO","PNG_FILTER_NONE","PNG_FILTER_SUB","PNG_FILTER_UP","PNG_FILTER_AVERAGE","PNG_FILTER_PATH","mime","constants","MIME_PNG","hasAlpha","decoders","PNG","sync","read","encoders","data","png","width","bitmap","height","write","deflateLevel","_deflateLevel","deflateStrategy","_deflateStrategy","filterType","_filterType","colorType","_colorType","_rgba","inputHasAlpha","l","cb","throwError","call","Math","round","s","f"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAEA,IAAMA,SAAS,GAAG,WAAlB,C,CAEA;;AACA,IAAMC,eAAe,GAAG,CAAC,CAAzB;AACA,IAAMC,eAAe,GAAG,CAAxB;AACA,IAAMC,cAAc,GAAG,CAAvB;AACA,IAAMC,aAAa,GAAG,CAAtB;AACA,IAAMC,kBAAkB,GAAG,CAA3B;AACA,IAAMC,eAAe,GAAG,CAAxB;;eAEe;AAAA,SAAO;AACpBC,IAAAA,IAAI,uCAAKP,SAAL,EAAiB,CAAC,KAAD,CAAjB,CADgB;AAGpBQ,IAAAA,SAAS,EAAE;AACTC,MAAAA,QAAQ,EAAET,SADD;AAETC,MAAAA,eAAe,EAAfA,eAFS;AAGTC,MAAAA,eAAe,EAAfA,eAHS;AAITC,MAAAA,cAAc,EAAdA,cAJS;AAKTC,MAAAA,aAAa,EAAbA,aALS;AAMTC,MAAAA,kBAAkB,EAAlBA,kBANS;AAOTC,MAAAA,eAAe,EAAfA;AAPS,KAHS;AAapBI,IAAAA,QAAQ,uCAAKV,SAAL,EAAiB,IAAjB,CAbY;AAcpBW,IAAAA,QAAQ,uCAAKX,SAAL,EAAiBY,WAAIC,IAAJ,CAASC,IAA1B,CAdY;AAepBC,IAAAA,QAAQ,uCACLf,SADK,YACMgB,IADN,EACY;AAChB,UAAMC,GAAG,GAAG,IAAIL,UAAJ,CAAQ;AAClBM,QAAAA,KAAK,EAAEF,IAAI,CAACG,MAAL,CAAYD,KADD;AAElBE,QAAAA,MAAM,EAAEJ,IAAI,CAACG,MAAL,CAAYC;AAFF,OAAR,CAAZ;AAKAH,MAAAA,GAAG,CAACD,IAAJ,GAAWA,IAAI,CAACG,MAAL,CAAYH,IAAvB;AAEA,aAAOJ,WAAIC,IAAJ,CAASQ,KAAT,CAAeJ,GAAf,EAAoB;AACzBC,QAAAA,KAAK,EAAEF,IAAI,CAACG,MAAL,CAAYD,KADM;AAEzBE,QAAAA,MAAM,EAAEJ,IAAI,CAACG,MAAL,CAAYC,MAFK;AAGzBE,QAAAA,YAAY,EAAEN,IAAI,CAACO,aAHM;AAIzBC,QAAAA,eAAe,EAAER,IAAI,CAACS,gBAJG;AAKzBC,QAAAA,UAAU,EAAEV,IAAI,CAACW,WALQ;AAMzBC,QAAAA,SAAS,EACP,OAAOZ,IAAI,CAACa,UAAZ,KAA2B,QAA3B,GACIb,IAAI,CAACa,UADT,GAEIb,IAAI,CAACc,KAAL,GACA,CADA,GAEA,CAXmB;AAYzBC,QAAAA,aAAa,EAAEf,IAAI,CAACc;AAZK,OAApB,CAAP;AAcD,KAvBK,CAfY;AAyCpB,aAAO;AACLP,MAAAA,aAAa,EAAE,CADV;AAELE,MAAAA,gBAAgB,EAAE,CAFb;AAGLE,MAAAA,WAAW,EAAE1B,eAHR;AAIL4B,MAAAA,UAAU,EAAE,IAJP;;AAML;;;;;;AAMAP,MAAAA,YAZK,wBAYQU,CAZR,EAYWC,EAZX,EAYe;AAClB,YAAI,OAAOD,CAAP,KAAa,QAAjB,EAA2B;AACzB,iBAAOE,kBAAWC,IAAX,CAAgB,IAAhB,EAAsB,oBAAtB,EAA4CF,EAA5C,CAAP;AACD;;AAED,YAAID,CAAC,GAAG,CAAJ,IAASA,CAAC,GAAG,CAAjB,EAAoB;AAClB,iBAAOE,kBAAWC,IAAX,CAAgB,IAAhB,EAAsB,0BAAtB,EAAkDF,EAAlD,CAAP;AACD;;AAED,aAAKV,aAAL,GAAqBa,IAAI,CAACC,KAAL,CAAWL,CAAX,CAArB;;AAEA,YAAI,0BAAcC,EAAd,CAAJ,EAAuB;AACrBA,UAAAA,EAAE,CAACE,IAAH,CAAQ,IAAR,EAAc,IAAd,EAAoB,IAApB;AACD;;AAED,eAAO,IAAP;AACD,OA5BI;;AA8BL;;;;;;AAMAX,MAAAA,eApCK,2BAoCWc,CApCX,EAoCcL,EApCd,EAoCkB;AACrB,YAAI,OAAOK,CAAP,KAAa,QAAjB,EAA2B;AACzB,iBAAOJ,kBAAWC,IAAX,CAAgB,IAAhB,EAAsB,oBAAtB,EAA4CF,EAA5C,CAAP;AACD;;AAED,YAAIK,CAAC,GAAG,CAAJ,IAASA,CAAC,GAAG,CAAjB,EAAoB;AAClB,iBAAOJ,kBAAWC,IAAX,CAAgB,IAAhB,EAAsB,0BAAtB,EAAkDF,EAAlD,CAAP;AACD;;AAED,aAAKR,gBAAL,GAAwBW,IAAI,CAACC,KAAL,CAAWC,CAAX,CAAxB;;AAEA,YAAI,0BAAcL,EAAd,CAAJ,EAAuB;AACrBA,UAAAA,EAAE,CAACE,IAAH,CAAQ,IAAR,EAAc,IAAd,EAAoB,IAApB;AACD;;AAED,eAAO,IAAP;AACD,OApDI;;AAsDL;;;;;;AAMAT,MAAAA,UA5DK,sBA4DMa,CA5DN,EA4DSN,EA5DT,EA4Da;AAChB,YAAI,OAAOM,CAAP,KAAa,QAAjB,EAA2B;AACzB,iBAAOL,kBAAWC,IAAX,CAAgB,IAAhB,EAAsB,oBAAtB,EAA4CF,EAA5C,CAAP;AACD;;AAED,YAAIM,CAAC,GAAG,CAAC,CAAL,IAAUA,CAAC,GAAG,CAAlB,EAAqB;AACnB,iBAAOL,kBAAWC,IAAX,CACL,IADK,EAEL,uCAFK,EAGLF,EAHK,CAAP;AAKD;;AAED,aAAKN,WAAL,GAAmBS,IAAI,CAACC,KAAL,CAAWE,CAAX,CAAnB;;AAEA,YAAI,0BAAcN,EAAd,CAAJ,EAAuB;AACrBA,UAAAA,EAAE,CAACE,IAAH,CAAQ,IAAR,EAAc,IAAd,EAAoB,IAApB;AACD;;AAED,eAAO,IAAP;AACD,OAhFI;;AAiFL;;;;;;AAKIP,MAAAA,SAtFC,qBAsFSU,CAtFT,EAsFYL,EAtFZ,EAsFgB;AACnB,YAAI,OAAOK,CAAP,KAAa,QAAjB,EAA2B;AACzB,iBAAOJ,kBAAWC,IAAX,CAAgB,IAAhB,EAAsB,oBAAtB,EAA4CF,EAA5C,CAAP;AACD;;AAED,YAAIK,CAAC,KAAK,CAAN,IAAWA,CAAC,KAAK,CAAjB,IAAsBA,CAAC,KAAK,CAA5B,IAAiCA,CAAC,KAAK,CAA3C,EAA8C;AAC5C,iBAAOJ,kBAAWC,IAAX,CAAgB,IAAhB,EAAsB,gCAAtB,EAAwDF,EAAxD,CAAP;AACD;;AAED,aAAKJ,UAAL,GAAkBO,IAAI,CAACC,KAAL,CAAWC,CAAX,CAAlB;;AAEA,YAAI,0BAAcL,EAAd,CAAJ,EAAuB;AACrBA,UAAAA,EAAE,CAACE,IAAH,CAAQ,IAAR,EAAc,IAAd,EAAoB,IAApB;AACD;;AAED,eAAO,IAAP;AACD;AAtGI;AAzCa,GAAP;AAAA,C","sourcesContent":["import { PNG } from \"pngjs\";\nimport { throwError, isNodePattern } from \"@jimp/utils\";\n\nconst MIME_TYPE = \"image/png\";\n\n// PNG filter types\nconst PNG_FILTER_AUTO = -1;\nconst PNG_FILTER_NONE = 0;\nconst PNG_FILTER_SUB = 1;\nconst PNG_FILTER_UP = 2;\nconst PNG_FILTER_AVERAGE = 3;\nconst PNG_FILTER_PATH = 4;\n\nexport default () => ({\n mime: { [MIME_TYPE]: [\"png\"] },\n\n constants: {\n MIME_PNG: MIME_TYPE,\n PNG_FILTER_AUTO,\n PNG_FILTER_NONE,\n PNG_FILTER_SUB,\n PNG_FILTER_UP,\n PNG_FILTER_AVERAGE,\n PNG_FILTER_PATH,\n },\n\n hasAlpha: { [MIME_TYPE]: true },\n decoders: { [MIME_TYPE]: PNG.sync.read },\n encoders: {\n [MIME_TYPE](data) {\n const png = new PNG({\n width: data.bitmap.width,\n height: data.bitmap.height,\n });\n\n png.data = data.bitmap.data;\n\n return PNG.sync.write(png, {\n width: data.bitmap.width,\n height: data.bitmap.height,\n deflateLevel: data._deflateLevel,\n deflateStrategy: data._deflateStrategy,\n filterType: data._filterType,\n colorType:\n typeof data._colorType === \"number\"\n ? data._colorType\n : data._rgba\n ? 6\n : 2,\n inputHasAlpha: data._rgba,\n });\n },\n },\n\n class: {\n _deflateLevel: 9,\n _deflateStrategy: 3,\n _filterType: PNG_FILTER_AUTO,\n _colorType: null,\n\n /**\n * Sets the deflate level used when saving as PNG format (default is 9)\n * @param {number} l Deflate level to use 0-9. 0 is no compression. 9 (default) is maximum compression.\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp} this for chaining of methods\n */\n deflateLevel(l, cb) {\n if (typeof l !== \"number\") {\n return throwError.call(this, \"l must be a number\", cb);\n }\n\n if (l < 0 || l > 9) {\n return throwError.call(this, \"l must be a number 0 - 9\", cb);\n }\n\n this._deflateLevel = Math.round(l);\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n },\n\n /**\n * Sets the deflate strategy used when saving as PNG format (default is 3)\n * @param {number} s Deflate strategy to use 0-3.\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp} this for chaining of methods\n */\n deflateStrategy(s, cb) {\n if (typeof s !== \"number\") {\n return throwError.call(this, \"s must be a number\", cb);\n }\n\n if (s < 0 || s > 3) {\n return throwError.call(this, \"s must be a number 0 - 3\", cb);\n }\n\n this._deflateStrategy = Math.round(s);\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n },\n\n /**\n * Sets the filter type used when saving as PNG format (default is automatic filters)\n * @param {number} f The quality to use -1-4.\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp} this for chaining of methods\n */\n filterType(f, cb) {\n if (typeof f !== \"number\") {\n return throwError.call(this, \"n must be a number\", cb);\n }\n\n if (f < -1 || f > 4) {\n return throwError.call(\n this,\n \"n must be -1 (auto) or a number 0 - 4\",\n cb\n );\n }\n\n this._filterType = Math.round(f);\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n },\n /**\n * Sets the color type used when saving as PNG format\n * @param {number} s color type to use 0, 2, 4, 6.\n * @param {function(Error, Jimp)} cb (optional) a callback for when complete\n * @returns {Jimp} this for chaining of methods\n */ colorType(s, cb) {\n if (typeof s !== \"number\") {\n return throwError.call(this, \"s must be a number\", cb);\n }\n\n if (s !== 0 && s !== 2 && s !== 4 && s !== 6) {\n return throwError.call(this, \"s must be a number 0, 2, 4, 6.\", cb);\n }\n\n this._colorType = Math.round(s);\n\n if (isNodePattern(cb)) {\n cb.call(this, null, this);\n }\n\n return this;\n },\n },\n});\n"],"file":"index.js"}
\ No newline at end of file
diff --git a/node_modules/@jimp/png/index.d.ts b/node_modules/@jimp/png/index.d.ts
new file mode 100644
index 00000000..52bcda0c
--- /dev/null
+++ b/node_modules/@jimp/png/index.d.ts
@@ -0,0 +1,40 @@
+import { DecoderFn, EncoderFn, ImageCallback } from "@jimp/core";
+
+interface PNGClass {
+ _deflateLevel: number;
+ _deflateStrategy: number;
+ _filterType: number;
+ _colorType: number;
+ deflateLevel(l: number, cb?: ImageCallback): this;
+ deflateStrategy(s: number, cb?: ImageCallback): this;
+ filterType(f: number, cb?: ImageCallback): this;
+ colorType(s: number, cb?: ImageCallback): this;
+}
+
+interface PNG {
+ mime: { "image/png": string[] };
+
+ hasAlpha: { "image/png": true };
+
+ decoders: {
+ "image/png": DecoderFn;
+ };
+ encoders: {
+ "image/png": EncoderFn;
+ };
+
+ class: PNGClass;
+
+ constants: {
+ MIME_PNG: "image/png";
+ // PNG filter types
+ PNG_FILTER_AUTO: -1;
+ PNG_FILTER_NONE: 0;
+ PNG_FILTER_SUB: 1;
+ PNG_FILTER_UP: 2;
+ PNG_FILTER_AVERAGE: 3;
+ PNG_FILTER_PATH: 4;
+ };
+}
+
+export default function (): PNG;
diff --git a/node_modules/@jimp/png/package.json b/node_modules/@jimp/png/package.json
new file mode 100644
index 00000000..eb0b0c68
--- /dev/null
+++ b/node_modules/@jimp/png/package.json
@@ -0,0 +1,38 @@
+{
+ "name": "@jimp/png",
+ "version": "0.16.13",
+ "description": "Default Jimp png encoder/decoder.",
+ "main": "dist/index.js",
+ "module": "es/index.js",
+ "types": "index.d.ts",
+ "scripts": {
+ "test": "cross-env BABEL_ENV=test mocha --require @babel/register",
+ "test:watch": "npm run test -- --reporter min --watch",
+ "test:coverage": "nyc npm run test",
+ "build": "npm run build:node:production && npm run build:module",
+ "build:watch": "npm run build:node:debug -- -- --watch --verbose",
+ "build:debug": "npm run build:node:debug",
+ "build:module": "cross-env BABEL_ENV=module babel src -d es --source-maps --config-file ../../babel.config.js",
+ "build:node": "babel src -d dist --source-maps --config-file ../../babel.config.js",
+ "build:node:debug": "cross-env BABEL_ENV=development npm run build:node",
+ "build:node:production": "cross-env BABEL_ENV=production npm run build:node"
+ },
+ "author": "",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.16.13",
+ "pngjs": "^3.3.3"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ },
+ "devDependencies": {
+ "@jimp/custom": "^0.16.13",
+ "@jimp/test-utils": "^0.16.13"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "gitHead": "9eec86086634329a072901dca3a800b850548572"
+}
diff --git a/node_modules/@jimp/png/src/index.js b/node_modules/@jimp/png/src/index.js
new file mode 100644
index 00000000..5a337f8b
--- /dev/null
+++ b/node_modules/@jimp/png/src/index.js
@@ -0,0 +1,159 @@
+import { PNG } from "pngjs";
+import { throwError, isNodePattern } from "@jimp/utils";
+
+const MIME_TYPE = "image/png";
+
+// PNG filter types
+const PNG_FILTER_AUTO = -1;
+const PNG_FILTER_NONE = 0;
+const PNG_FILTER_SUB = 1;
+const PNG_FILTER_UP = 2;
+const PNG_FILTER_AVERAGE = 3;
+const PNG_FILTER_PATH = 4;
+
+export default () => ({
+ mime: { [MIME_TYPE]: ["png"] },
+
+ constants: {
+ MIME_PNG: MIME_TYPE,
+ PNG_FILTER_AUTO,
+ PNG_FILTER_NONE,
+ PNG_FILTER_SUB,
+ PNG_FILTER_UP,
+ PNG_FILTER_AVERAGE,
+ PNG_FILTER_PATH,
+ },
+
+ hasAlpha: { [MIME_TYPE]: true },
+ decoders: { [MIME_TYPE]: PNG.sync.read },
+ encoders: {
+ [MIME_TYPE](data) {
+ const png = new PNG({
+ width: data.bitmap.width,
+ height: data.bitmap.height,
+ });
+
+ png.data = data.bitmap.data;
+
+ return PNG.sync.write(png, {
+ width: data.bitmap.width,
+ height: data.bitmap.height,
+ deflateLevel: data._deflateLevel,
+ deflateStrategy: data._deflateStrategy,
+ filterType: data._filterType,
+ colorType:
+ typeof data._colorType === "number"
+ ? data._colorType
+ : data._rgba
+ ? 6
+ : 2,
+ inputHasAlpha: data._rgba,
+ });
+ },
+ },
+
+ class: {
+ _deflateLevel: 9,
+ _deflateStrategy: 3,
+ _filterType: PNG_FILTER_AUTO,
+ _colorType: null,
+
+ /**
+ * Sets the deflate level used when saving as PNG format (default is 9)
+ * @param {number} l Deflate level to use 0-9. 0 is no compression. 9 (default) is maximum compression.
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+ deflateLevel(l, cb) {
+ if (typeof l !== "number") {
+ return throwError.call(this, "l must be a number", cb);
+ }
+
+ if (l < 0 || l > 9) {
+ return throwError.call(this, "l must be a number 0 - 9", cb);
+ }
+
+ this._deflateLevel = Math.round(l);
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+
+ /**
+ * Sets the deflate strategy used when saving as PNG format (default is 3)
+ * @param {number} s Deflate strategy to use 0-3.
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+ deflateStrategy(s, cb) {
+ if (typeof s !== "number") {
+ return throwError.call(this, "s must be a number", cb);
+ }
+
+ if (s < 0 || s > 3) {
+ return throwError.call(this, "s must be a number 0 - 3", cb);
+ }
+
+ this._deflateStrategy = Math.round(s);
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+
+ /**
+ * Sets the filter type used when saving as PNG format (default is automatic filters)
+ * @param {number} f The quality to use -1-4.
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */
+ filterType(f, cb) {
+ if (typeof f !== "number") {
+ return throwError.call(this, "n must be a number", cb);
+ }
+
+ if (f < -1 || f > 4) {
+ return throwError.call(
+ this,
+ "n must be -1 (auto) or a number 0 - 4",
+ cb
+ );
+ }
+
+ this._filterType = Math.round(f);
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+ /**
+ * Sets the color type used when saving as PNG format
+ * @param {number} s color type to use 0, 2, 4, 6.
+ * @param {function(Error, Jimp)} cb (optional) a callback for when complete
+ * @returns {Jimp} this for chaining of methods
+ */ colorType(s, cb) {
+ if (typeof s !== "number") {
+ return throwError.call(this, "s must be a number", cb);
+ }
+
+ if (s !== 0 && s !== 2 && s !== 4 && s !== 6) {
+ return throwError.call(this, "s must be a number 0, 2, 4, 6.", cb);
+ }
+
+ this._colorType = Math.round(s);
+
+ if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+ }
+
+ return this;
+ },
+ },
+});
diff --git a/project starter code/node_modules/@jimp/png/test/images/dice.png b/node_modules/@jimp/png/test/images/dice.png
similarity index 100%
rename from project starter code/node_modules/@jimp/png/test/images/dice.png
rename to node_modules/@jimp/png/test/images/dice.png
diff --git a/project starter code/node_modules/@jimp/png/test/images/options.png b/node_modules/@jimp/png/test/images/options.png
similarity index 100%
rename from project starter code/node_modules/@jimp/png/test/images/options.png
rename to node_modules/@jimp/png/test/images/options.png
diff --git a/node_modules/@jimp/png/test/png.test.js b/node_modules/@jimp/png/test/png.test.js
new file mode 100644
index 00000000..cad4a49b
--- /dev/null
+++ b/node_modules/@jimp/png/test/png.test.js
@@ -0,0 +1,60 @@
+import { Jimp, getTestDir } from "@jimp/test-utils";
+import configure from "@jimp/custom";
+
+import png from "../src";
+
+const jimp = configure({ types: [png] }, Jimp);
+
+describe("PNG", () => {
+ const imagesDir = getTestDir(__dirname) + "/images";
+
+ it("load PNG", async () => {
+ const image = await jimp.read(imagesDir + "/dice.png");
+
+ image.getPixelColor(10, 10).should.be.equal(0x00000000);
+ image.getPixelColor(160, 80).should.be.equal(0x1c1cd4ff);
+ image.getPixelColor(400, 250).should.be.equal(0x7e0c0cda);
+ });
+
+ it("export PNG", async () => {
+ const jgd = await jimp.read({
+ width: 3,
+ height: 3,
+ data: [
+ 0xff0000ff, 0xff0080ff, 0xff00ffff, 0xff0080ff, 0xff00ffff, 0x8000ffff,
+ 0xff00ffff, 0x8000ffff, 0x0000ffff,
+ ],
+ });
+ const buffer = await jgd.getBufferAsync("image/png");
+
+ buffer.toString().should.match(/^.PNG\r\n/);
+ });
+
+ it("should use png options", async () => {
+ const jgd = await jimp.read({
+ width: 20,
+ height: 20,
+ data: [
+ 0xff0000ff, 0xff0080ff, 0xff00ffff, 0xff0080ff, 0xff00ffff, 0x8000ffff,
+ 0xff00ffff, 0x8000ffff, 0x0000ffff, 0xff0000ff, 0xff0080ff, 0xff00ffff,
+ 0xff0080ff, 0xff00ffff, 0x8000ffff, 0xff00ffff, 0x8000ffff, 0x0000ffff,
+ 0xff0000ff, 0xff0080ff, 0xff00ffff, 0xff0080ff, 0xff00ffff, 0x8000ffff,
+ 0xff00ffff, 0x8000ffff, 0x0000ffff, 0xff0000ff, 0xff0080ff, 0xff00ffff,
+ 0xff0080ff, 0xff00ffff, 0x8000ffff, 0xff00ffff, 0x8000ffff, 0x0000ffff,
+ ],
+ });
+
+ const image = await jgd
+ .deflateStrategy(0)
+ .colorType(0)
+ .getBufferAsync(Jimp.MIME_PNG);
+
+ const expected = await jimp.read(imagesDir + "/options.png");
+ const expectedBuffer = await expected
+ .deflateStrategy(0)
+ .colorType(0)
+ .getBufferAsync(Jimp.MIME_PNG);
+
+ image.should.be.deepEqual(expectedBuffer);
+ });
+});
diff --git a/node_modules/@jimp/tiff/CHANGELOG.md b/node_modules/@jimp/tiff/CHANGELOG.md
new file mode 100644
index 00000000..4eb3193f
--- /dev/null
+++ b/node_modules/@jimp/tiff/CHANGELOG.md
@@ -0,0 +1,35 @@
+# v0.16.3 (Sat Feb 04 2023)
+
+#### ⚠️ Pushed to `master`
+
+- upgrade prettier ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 1
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+---
+
+# v0.11.0 (Fri May 15 2020)
+
+#### 🚀 Enhancement
+
+- Removed Core-JS as a dependency. [#882](https://github.com/oliver-moran/jimp/pull/882) ([@EricRabil](https://github.com/EricRabil))
+
+#### Authors: 1
+
+- Eric Rabil ([@EricRabil](https://github.com/EricRabil))
+
+---
+
+# v0.9.3 (Tue Nov 26 2019)
+
+#### 🐛 Bug Fix
+
+- `@jimp/cli`, `@jimp/core`, `@jimp/custom`, `jimp`, `@jimp/plugin-blit`, `@jimp/plugin-blur`, `@jimp/plugin-circle`, `@jimp/plugin-color`, `@jimp/plugin-contain`, `@jimp/plugin-cover`, `@jimp/plugin-crop`, `@jimp/plugin-displace`, `@jimp/plugin-dither`, `@jimp/plugin-fisheye`, `@jimp/plugin-flip`, `@jimp/plugin-gaussian`, `@jimp/plugin-invert`, `@jimp/plugin-mask`, `@jimp/plugin-normalize`, `@jimp/plugin-print`, `@jimp/plugin-resize`, `@jimp/plugin-rotate`, `@jimp/plugin-scale`, `@jimp/plugin-shadow`, `@jimp/plugin-threshold`, `@jimp/plugins`, `@jimp/test-utils`, `@jimp/bmp`, `@jimp/gif`, `@jimp/jpeg`, `@jimp/png`, `@jimp/tiff`, `@jimp/types`, `@jimp/utils`
+ - Fix regeneratorRuntime errors [#815](https://github.com/oliver-moran/jimp/pull/815) ([@crutchcorn](https://github.com/crutchcorn) [@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 2
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+- Corbin Crutchley ([@crutchcorn](https://github.com/crutchcorn))
diff --git a/project starter code/node_modules/@jimp/tiff/LICENSE b/node_modules/@jimp/tiff/LICENSE
similarity index 100%
rename from project starter code/node_modules/@jimp/tiff/LICENSE
rename to node_modules/@jimp/tiff/LICENSE
diff --git a/project starter code/node_modules/@jimp/tiff/README.md b/node_modules/@jimp/tiff/README.md
similarity index 100%
rename from project starter code/node_modules/@jimp/tiff/README.md
rename to node_modules/@jimp/tiff/README.md
diff --git a/node_modules/@jimp/tiff/dist/index.js b/node_modules/@jimp/tiff/dist/index.js
new file mode 100644
index 00000000..9eeca7e2
--- /dev/null
+++ b/node_modules/@jimp/tiff/dist/index.js
@@ -0,0 +1,47 @@
+"use strict";
+
+var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports["default"] = void 0;
+
+var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
+
+var _utif = _interopRequireDefault(require("utif"));
+
+var MIME_TYPE = "image/tiff";
+
+var _default = function _default() {
+ return {
+ mime: (0, _defineProperty2["default"])({}, MIME_TYPE, ["tiff", "tif"]),
+ constants: {
+ MIME_TIFF: MIME_TYPE
+ },
+ decoders: (0, _defineProperty2["default"])({}, MIME_TYPE, function (data) {
+ var ifds = _utif["default"].decode(data);
+
+ var page = ifds[0];
+
+ _utif["default"].decodeImages(data, ifds);
+
+ var rgba = _utif["default"].toRGBA8(page);
+
+ return {
+ data: Buffer.from(rgba),
+ width: page.t256[0],
+ height: page.t257[0]
+ };
+ }),
+ encoders: (0, _defineProperty2["default"])({}, MIME_TYPE, function (image) {
+ var tiff = _utif["default"].encodeImage(image.bitmap.data, image.bitmap.width, image.bitmap.height);
+
+ return Buffer.from(tiff);
+ })
+ };
+};
+
+exports["default"] = _default;
+module.exports = exports.default;
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@jimp/tiff/dist/index.js.map b/node_modules/@jimp/tiff/dist/index.js.map
new file mode 100644
index 00000000..743e3f19
--- /dev/null
+++ b/node_modules/@jimp/tiff/dist/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/index.js"],"names":["MIME_TYPE","mime","constants","MIME_TIFF","decoders","data","ifds","UTIF","decode","page","decodeImages","rgba","toRGBA8","Buffer","from","width","t256","height","t257","encoders","image","tiff","encodeImage","bitmap"],"mappings":";;;;;;;;;;;AAAA;;AAEA,IAAMA,SAAS,GAAG,YAAlB;;eAEe;AAAA,SAAO;AACpBC,IAAAA,IAAI,uCAAKD,SAAL,EAAiB,CAAC,MAAD,EAAS,KAAT,CAAjB,CADgB;AAGpBE,IAAAA,SAAS,EAAE;AACTC,MAAAA,SAAS,EAAEH;AADF,KAHS;AAOpBI,IAAAA,QAAQ,uCACLJ,SADK,EACO,UAACK,IAAD,EAAU;AACrB,UAAMC,IAAI,GAAGC,iBAAKC,MAAL,CAAYH,IAAZ,CAAb;;AACA,UAAMI,IAAI,GAAGH,IAAI,CAAC,CAAD,CAAjB;;AACAC,uBAAKG,YAAL,CAAkBL,IAAlB,EAAwBC,IAAxB;;AACA,UAAMK,IAAI,GAAGJ,iBAAKK,OAAL,CAAaH,IAAb,CAAb;;AAEA,aAAO;AACLJ,QAAAA,IAAI,EAAEQ,MAAM,CAACC,IAAP,CAAYH,IAAZ,CADD;AAELI,QAAAA,KAAK,EAAEN,IAAI,CAACO,IAAL,CAAU,CAAV,CAFF;AAGLC,QAAAA,MAAM,EAAER,IAAI,CAACS,IAAL,CAAU,CAAV;AAHH,OAAP;AAKD,KAZK,CAPY;AAsBpBC,IAAAA,QAAQ,uCACLnB,SADK,EACO,UAACoB,KAAD,EAAW;AACtB,UAAMC,IAAI,GAAGd,iBAAKe,WAAL,CACXF,KAAK,CAACG,MAAN,CAAalB,IADF,EAEXe,KAAK,CAACG,MAAN,CAAaR,KAFF,EAGXK,KAAK,CAACG,MAAN,CAAaN,MAHF,CAAb;;AAMA,aAAOJ,MAAM,CAACC,IAAP,CAAYO,IAAZ,CAAP;AACD,KATK;AAtBY,GAAP;AAAA,C","sourcesContent":["import UTIF from \"utif\";\n\nconst MIME_TYPE = \"image/tiff\";\n\nexport default () => ({\n mime: { [MIME_TYPE]: [\"tiff\", \"tif\"] },\n\n constants: {\n MIME_TIFF: MIME_TYPE,\n },\n\n decoders: {\n [MIME_TYPE]: (data) => {\n const ifds = UTIF.decode(data);\n const page = ifds[0];\n UTIF.decodeImages(data, ifds);\n const rgba = UTIF.toRGBA8(page);\n\n return {\n data: Buffer.from(rgba),\n width: page.t256[0],\n height: page.t257[0],\n };\n },\n },\n\n encoders: {\n [MIME_TYPE]: (image) => {\n const tiff = UTIF.encodeImage(\n image.bitmap.data,\n image.bitmap.width,\n image.bitmap.height\n );\n\n return Buffer.from(tiff);\n },\n },\n});\n"],"file":"index.js"}
\ No newline at end of file
diff --git a/node_modules/@jimp/tiff/index.d.ts b/node_modules/@jimp/tiff/index.d.ts
new file mode 100644
index 00000000..851d7383
--- /dev/null
+++ b/node_modules/@jimp/tiff/index.d.ts
@@ -0,0 +1,16 @@
+import { DecoderFn, EncoderFn } from "@jimp/core";
+
+interface Tiff {
+ mime: { "image/tiff": string[] };
+ decoders: {
+ "image/tiff": DecoderFn;
+ };
+ encoders: {
+ "image/tiff": EncoderFn;
+ };
+ constants: {
+ MIME_TIFF: "image/tiff";
+ };
+}
+
+export default function (): Tiff;
diff --git a/node_modules/@jimp/tiff/package.json b/node_modules/@jimp/tiff/package.json
new file mode 100644
index 00000000..be7b1c1e
--- /dev/null
+++ b/node_modules/@jimp/tiff/package.json
@@ -0,0 +1,37 @@
+{
+ "name": "@jimp/tiff",
+ "version": "0.16.13",
+ "description": "Default Jimp tiff encoder/decoder.",
+ "main": "dist/index.js",
+ "module": "es/index.js",
+ "types": "index.d.ts",
+ "scripts": {
+ "test": "cross-env BABEL_ENV=test mocha --require @babel/register",
+ "test:watch": "npm run test -- --reporter min --watch",
+ "test:coverage": "nyc npm run test",
+ "build": "npm run build:node:production && npm run build:module",
+ "build:watch": "npm run build:node:debug -- -- --watch --verbose",
+ "build:debug": "npm run build:node:debug",
+ "build:module": "cross-env BABEL_ENV=module babel src -d es --source-maps --config-file ../../babel.config.js",
+ "build:node": "babel src -d dist --source-maps --config-file ../../babel.config.js",
+ "build:node:debug": "cross-env BABEL_ENV=development npm run build:node",
+ "build:node:production": "cross-env BABEL_ENV=production npm run build:node"
+ },
+ "author": "",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "utif": "^2.0.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ },
+ "devDependencies": {
+ "@jimp/custom": "^0.16.13",
+ "@jimp/test-utils": "^0.16.13"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "gitHead": "9eec86086634329a072901dca3a800b850548572"
+}
diff --git a/node_modules/@jimp/tiff/src/index.js b/node_modules/@jimp/tiff/src/index.js
new file mode 100644
index 00000000..9035f80d
--- /dev/null
+++ b/node_modules/@jimp/tiff/src/index.js
@@ -0,0 +1,38 @@
+import UTIF from "utif";
+
+const MIME_TYPE = "image/tiff";
+
+export default () => ({
+ mime: { [MIME_TYPE]: ["tiff", "tif"] },
+
+ constants: {
+ MIME_TIFF: MIME_TYPE,
+ },
+
+ decoders: {
+ [MIME_TYPE]: (data) => {
+ const ifds = UTIF.decode(data);
+ const page = ifds[0];
+ UTIF.decodeImages(data, ifds);
+ const rgba = UTIF.toRGBA8(page);
+
+ return {
+ data: Buffer.from(rgba),
+ width: page.t256[0],
+ height: page.t257[0],
+ };
+ },
+ },
+
+ encoders: {
+ [MIME_TYPE]: (image) => {
+ const tiff = UTIF.encodeImage(
+ image.bitmap.data,
+ image.bitmap.width,
+ image.bitmap.height
+ );
+
+ return Buffer.from(tiff);
+ },
+ },
+});
diff --git a/project starter code/node_modules/@jimp/tiff/test/images/rgb.tiff b/node_modules/@jimp/tiff/test/images/rgb.tiff
similarity index 100%
rename from project starter code/node_modules/@jimp/tiff/test/images/rgb.tiff
rename to node_modules/@jimp/tiff/test/images/rgb.tiff
diff --git a/node_modules/@jimp/tiff/test/tiff.test.js b/node_modules/@jimp/tiff/test/tiff.test.js
new file mode 100644
index 00000000..05211f28
--- /dev/null
+++ b/node_modules/@jimp/tiff/test/tiff.test.js
@@ -0,0 +1,34 @@
+import { Jimp, getTestDir } from "@jimp/test-utils";
+import configure from "@jimp/custom";
+
+import tiff from "../src";
+
+const jimp = configure({ types: [tiff] }, Jimp);
+
+describe("TIFF", () => {
+ const imagesDir = getTestDir(__dirname) + "/images";
+
+ it("load TIFF", async () => {
+ const image = await jimp.read(imagesDir + "/rgb.tiff");
+
+ image.getPixelColor(10, 10).should.be.equal(0xa4988bff);
+ image.getPixelColor(220, 190).should.be.equal(0xe0d7ddff);
+ image.getPixelColor(350, 130).should.be.equal(0x565433ff);
+ });
+
+ const simpleJGD = {
+ width: 3,
+ height: 3,
+ data: [
+ 0xff0000ff, 0xff0080ff, 0xff00ffff, 0xff0080ff, 0xff00ffff, 0x8000ffff,
+ 0xff00ffff, 0x8000ffff, 0x0000ffff,
+ ],
+ };
+
+ it("export TIFF", async () => {
+ const image = await jimp.read(simpleJGD);
+ const buffer = await image.getBufferAsync("image/tiff");
+
+ buffer.toString().should.match(/^MM\u0000*\u0000/);
+ });
+});
diff --git a/node_modules/@jimp/types/CHANGELOG.md b/node_modules/@jimp/types/CHANGELOG.md
new file mode 100644
index 00000000..4eb3193f
--- /dev/null
+++ b/node_modules/@jimp/types/CHANGELOG.md
@@ -0,0 +1,35 @@
+# v0.16.3 (Sat Feb 04 2023)
+
+#### ⚠️ Pushed to `master`
+
+- upgrade prettier ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 1
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+---
+
+# v0.11.0 (Fri May 15 2020)
+
+#### 🚀 Enhancement
+
+- Removed Core-JS as a dependency. [#882](https://github.com/oliver-moran/jimp/pull/882) ([@EricRabil](https://github.com/EricRabil))
+
+#### Authors: 1
+
+- Eric Rabil ([@EricRabil](https://github.com/EricRabil))
+
+---
+
+# v0.9.3 (Tue Nov 26 2019)
+
+#### 🐛 Bug Fix
+
+- `@jimp/cli`, `@jimp/core`, `@jimp/custom`, `jimp`, `@jimp/plugin-blit`, `@jimp/plugin-blur`, `@jimp/plugin-circle`, `@jimp/plugin-color`, `@jimp/plugin-contain`, `@jimp/plugin-cover`, `@jimp/plugin-crop`, `@jimp/plugin-displace`, `@jimp/plugin-dither`, `@jimp/plugin-fisheye`, `@jimp/plugin-flip`, `@jimp/plugin-gaussian`, `@jimp/plugin-invert`, `@jimp/plugin-mask`, `@jimp/plugin-normalize`, `@jimp/plugin-print`, `@jimp/plugin-resize`, `@jimp/plugin-rotate`, `@jimp/plugin-scale`, `@jimp/plugin-shadow`, `@jimp/plugin-threshold`, `@jimp/plugins`, `@jimp/test-utils`, `@jimp/bmp`, `@jimp/gif`, `@jimp/jpeg`, `@jimp/png`, `@jimp/tiff`, `@jimp/types`, `@jimp/utils`
+ - Fix regeneratorRuntime errors [#815](https://github.com/oliver-moran/jimp/pull/815) ([@crutchcorn](https://github.com/crutchcorn) [@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 2
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+- Corbin Crutchley ([@crutchcorn](https://github.com/crutchcorn))
diff --git a/project starter code/node_modules/@jimp/types/LICENSE b/node_modules/@jimp/types/LICENSE
similarity index 100%
rename from project starter code/node_modules/@jimp/types/LICENSE
rename to node_modules/@jimp/types/LICENSE
diff --git a/project starter code/node_modules/@jimp/types/README.md b/node_modules/@jimp/types/README.md
similarity index 100%
rename from project starter code/node_modules/@jimp/types/README.md
rename to node_modules/@jimp/types/README.md
diff --git a/project starter code/node_modules/@jimp/types/dist/index.js b/node_modules/@jimp/types/dist/index.js
similarity index 100%
rename from project starter code/node_modules/@jimp/types/dist/index.js
rename to node_modules/@jimp/types/dist/index.js
diff --git a/node_modules/@jimp/types/dist/index.js.map b/node_modules/@jimp/types/dist/index.js.map
new file mode 100644
index 00000000..2017bb5d
--- /dev/null
+++ b/node_modules/@jimp/types/dist/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/index.js"],"names":[],"mappings":";;;;;;;;;AAAA;;AAEA;;AACA;;AACA;;AACA;;AACA;;eAEe;AAAA,SAAM,qBAAU,uBAAV,EAAkB,sBAAlB,EAAyB,sBAAzB,EAAgC,uBAAhC,EAAwC,sBAAxC,CAAN;AAAA,C","sourcesContent":["import { mergeDeep } from \"timm\";\n\nimport jpeg from \"@jimp/jpeg\";\nimport png from \"@jimp/png\";\nimport bmp from \"@jimp/bmp\";\nimport tiff from \"@jimp/tiff\";\nimport gif from \"@jimp/gif\";\n\nexport default () => mergeDeep(jpeg(), png(), bmp(), tiff(), gif());\n"],"file":"index.js"}
\ No newline at end of file
diff --git a/node_modules/@jimp/types/index.d.ts b/node_modules/@jimp/types/index.d.ts
new file mode 100644
index 00000000..98f0cceb
--- /dev/null
+++ b/node_modules/@jimp/types/index.d.ts
@@ -0,0 +1,23 @@
+import jpeg from "@jimp/jpeg";
+import png from "@jimp/png";
+import bmp from "@jimp/bmp";
+import tiff from "@jimp/tiff";
+import gif from "@jimp/gif";
+
+type JpegRet = ReturnType;
+type PngRet = ReturnType;
+type BmpRet = ReturnType;
+type TiffRet = ReturnType;
+type GifRet = ReturnType;
+
+/**
+ * This is made union and not intersection to avoid issues with
+ * `IllformedPlugin` and `WellFormedPlugin` when using typings with Jimp
+ * generic
+ *
+ * In reality, this should be an intersection but our type data isn't
+ * clever enough to figure out what's a class and what's not/etc
+ */
+type Types = JpegRet | PngRet | BmpRet | TiffRet | GifRet;
+
+export default function (): Types;
diff --git a/node_modules/@jimp/types/package.json b/node_modules/@jimp/types/package.json
new file mode 100644
index 00000000..752b6936
--- /dev/null
+++ b/node_modules/@jimp/types/package.json
@@ -0,0 +1,38 @@
+{
+ "name": "@jimp/types",
+ "version": "0.16.13",
+ "description": "Default Jimp encoder/decoders.",
+ "main": "dist/index.js",
+ "module": "es/index.js",
+ "types": "index.d.ts",
+ "scripts": {
+ "build": "npm run build:node:production && npm run build:module",
+ "build:watch": "npm run build:node:debug -- -- --watch --verbose",
+ "build:debug": "npm run build:node:debug",
+ "build:module": "cross-env BABEL_ENV=module babel src -d es --source-maps --config-file ../../babel.config.js",
+ "build:node": "babel src -d dist --source-maps --config-file ../../babel.config.js",
+ "build:node:debug": "cross-env BABEL_ENV=development npm run build:node",
+ "build:node:production": "cross-env BABEL_ENV=production npm run build:node"
+ },
+ "author": "",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/bmp": "^0.16.13",
+ "@jimp/gif": "^0.16.13",
+ "@jimp/jpeg": "^0.16.13",
+ "@jimp/png": "^0.16.13",
+ "@jimp/tiff": "^0.16.13",
+ "timm": "^1.6.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ },
+ "devDependencies": {
+ "@types/node": "^12.7.5"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "gitHead": "9eec86086634329a072901dca3a800b850548572"
+}
diff --git a/node_modules/@jimp/types/src/index.js b/node_modules/@jimp/types/src/index.js
new file mode 100644
index 00000000..1f6eb528
--- /dev/null
+++ b/node_modules/@jimp/types/src/index.js
@@ -0,0 +1,9 @@
+import { mergeDeep } from "timm";
+
+import jpeg from "@jimp/jpeg";
+import png from "@jimp/png";
+import bmp from "@jimp/bmp";
+import tiff from "@jimp/tiff";
+import gif from "@jimp/gif";
+
+export default () => mergeDeep(jpeg(), png(), bmp(), tiff(), gif());
diff --git a/node_modules/@jimp/utils/CHANGELOG.md b/node_modules/@jimp/utils/CHANGELOG.md
new file mode 100644
index 00000000..b4af2eee
--- /dev/null
+++ b/node_modules/@jimp/utils/CHANGELOG.md
@@ -0,0 +1,46 @@
+# v0.16.3 (Sat Feb 04 2023)
+
+#### ⚠️ Pushed to `master`
+
+- upgrade prettier ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 1
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+
+---
+
+# v0.11.0 (Fri May 15 2020)
+
+#### 🚀 Enhancement
+
+- Removed Core-JS as a dependency. [#882](https://github.com/oliver-moran/jimp/pull/882) ([@EricRabil](https://github.com/EricRabil))
+
+#### Authors: 1
+
+- Eric Rabil ([@EricRabil](https://github.com/EricRabil))
+
+---
+
+# v0.10.1 (Sun Apr 05 2020)
+
+#### 🐛 Bug Fix
+
+- Update package.json [#870](https://github.com/oliver-moran/jimp/pull/870) ([@arcanis](https://github.com/arcanis))
+
+#### Authors: 1
+
+- Maël Nison ([@arcanis](https://github.com/arcanis))
+
+---
+
+# v0.9.3 (Tue Nov 26 2019)
+
+#### 🐛 Bug Fix
+
+- Fix regeneratorRuntime errors [#815](https://github.com/oliver-moran/jimp/pull/815) ([@crutchcorn](https://github.com/crutchcorn) [@hipstersmoothie](https://github.com/hipstersmoothie))
+
+#### Authors: 2
+
+- Andrew Lisowski ([@hipstersmoothie](https://github.com/hipstersmoothie))
+- Corbin Crutchley ([@crutchcorn](https://github.com/crutchcorn))
diff --git a/project starter code/node_modules/@jimp/utils/LICENSE b/node_modules/@jimp/utils/LICENSE
similarity index 100%
rename from project starter code/node_modules/@jimp/utils/LICENSE
rename to node_modules/@jimp/utils/LICENSE
diff --git a/node_modules/@jimp/utils/README.md b/node_modules/@jimp/utils/README.md
new file mode 100644
index 00000000..51a52c4d
--- /dev/null
+++ b/node_modules/@jimp/utils/README.md
@@ -0,0 +1,70 @@
+
+
+
@jimp/utils
+
Utils for jimp extensions.
+
+
+## Available Methods
+
+### isNodePattern
+
+Determines if function was passed an node callback.
+
+```js
+if (isNodePattern(cb)) {
+ cb.call(this, null, this);
+}
+```
+
+### throwError
+
+Either throws the error or calls the callback with the error.
+
+```js
+if (/* check for error */) {
+ return throwError.call(this, 'someError', cb);
+}
+```
+
+### scan
+
+Scans through a region of the bitmap, calling a function for each pixel.
+
+```js
+function removeRed(image) {
+ return scan(
+ image,
+ 0,
+ 0,
+ image.bitmap.width,
+ image.bitmap.height,
+ function (x, y, index) {
+ const red = this.bitmap.data[index + 0];
+ const green = this.bitmap.data[index + 1];
+ const blue = this.bitmap.data[index + 2];
+ const alpha = this.bitmap.data[index + 3];
+
+ this.bitmap.data[index + 0] = 0;
+ this.bitmap.data[index + 1] = green;
+ this.bitmap.data[index + 2] = blue;
+ this.bitmap.data[index + 3] = alpha;
+ }
+ );
+}
+```
+
+### scanIterator
+
+It's possible to make an iterator scan with a `for ... of`, if you want to `break` the scan before it reaches the end, but note, that this iterator has a huge performance implication:
+
+```js
+for (const { x, y, idx, image } of scanIterator(
+ image,
+ 0,
+ 0,
+ image.bitmap.width,
+ image.bitmap.height
+)) {
+}
+```
diff --git a/node_modules/@jimp/utils/dist/index.js b/node_modules/@jimp/utils/dist/index.js
new file mode 100644
index 00000000..dc9992b7
--- /dev/null
+++ b/node_modules/@jimp/utils/dist/index.js
@@ -0,0 +1,114 @@
+"use strict";
+
+var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.isNodePattern = isNodePattern;
+exports.throwError = throwError;
+exports.scan = scan;
+exports.scanIterator = scanIterator;
+
+var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
+
+var _marked =
+/*#__PURE__*/
+_regenerator["default"].mark(scanIterator);
+
+function isNodePattern(cb) {
+ if (typeof cb === "undefined") {
+ return false;
+ }
+
+ if (typeof cb !== "function") {
+ throw new TypeError("Callback must be a function");
+ }
+
+ return true;
+}
+
+function throwError(error, cb) {
+ if (typeof error === "string") {
+ error = new Error(error);
+ }
+
+ if (typeof cb === "function") {
+ return cb.call(this, error);
+ }
+
+ throw error;
+}
+
+function scan(image, x, y, w, h, f) {
+ // round input
+ x = Math.round(x);
+ y = Math.round(y);
+ w = Math.round(w);
+ h = Math.round(h);
+
+ for (var _y = y; _y < y + h; _y++) {
+ for (var _x = x; _x < x + w; _x++) {
+ var idx = image.bitmap.width * _y + _x << 2;
+ f.call(image, _x, _y, idx);
+ }
+ }
+
+ return image;
+}
+
+function scanIterator(image, x, y, w, h) {
+ var _y, _x, idx;
+
+ return _regenerator["default"].wrap(function scanIterator$(_context) {
+ while (1) {
+ switch (_context.prev = _context.next) {
+ case 0:
+ // round input
+ x = Math.round(x);
+ y = Math.round(y);
+ w = Math.round(w);
+ h = Math.round(h);
+ _y = y;
+
+ case 5:
+ if (!(_y < y + h)) {
+ _context.next = 17;
+ break;
+ }
+
+ _x = x;
+
+ case 7:
+ if (!(_x < x + w)) {
+ _context.next = 14;
+ break;
+ }
+
+ idx = image.bitmap.width * _y + _x << 2;
+ _context.next = 11;
+ return {
+ x: _x,
+ y: _y,
+ idx: idx,
+ image: image
+ };
+
+ case 11:
+ _x++;
+ _context.next = 7;
+ break;
+
+ case 14:
+ _y++;
+ _context.next = 5;
+ break;
+
+ case 17:
+ case "end":
+ return _context.stop();
+ }
+ }
+ }, _marked);
+}
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@jimp/utils/dist/index.js.map b/node_modules/@jimp/utils/dist/index.js.map
new file mode 100644
index 00000000..25e5db6a
--- /dev/null
+++ b/node_modules/@jimp/utils/dist/index.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../src/index.js"],"names":["scanIterator","isNodePattern","cb","TypeError","throwError","error","Error","call","scan","image","x","y","w","h","f","Math","round","_y","_x","idx","bitmap","width"],"mappings":";;;;;;;;;;;;;;;;6BAyCiBA,Y;;AAzCV,SAASC,aAAT,CAAuBC,EAAvB,EAA2B;AAChC,MAAI,OAAOA,EAAP,KAAc,WAAlB,EAA+B;AAC7B,WAAO,KAAP;AACD;;AAED,MAAI,OAAOA,EAAP,KAAc,UAAlB,EAA8B;AAC5B,UAAM,IAAIC,SAAJ,CAAc,6BAAd,CAAN;AACD;;AAED,SAAO,IAAP;AACD;;AAEM,SAASC,UAAT,CAAoBC,KAApB,EAA2BH,EAA3B,EAA+B;AACpC,MAAI,OAAOG,KAAP,KAAiB,QAArB,EAA+B;AAC7BA,IAAAA,KAAK,GAAG,IAAIC,KAAJ,CAAUD,KAAV,CAAR;AACD;;AAED,MAAI,OAAOH,EAAP,KAAc,UAAlB,EAA8B;AAC5B,WAAOA,EAAE,CAACK,IAAH,CAAQ,IAAR,EAAcF,KAAd,CAAP;AACD;;AAED,QAAMA,KAAN;AACD;;AAEM,SAASG,IAAT,CAAcC,KAAd,EAAqBC,CAArB,EAAwBC,CAAxB,EAA2BC,CAA3B,EAA8BC,CAA9B,EAAiCC,CAAjC,EAAoC;AACzC;AACAJ,EAAAA,CAAC,GAAGK,IAAI,CAACC,KAAL,CAAWN,CAAX,CAAJ;AACAC,EAAAA,CAAC,GAAGI,IAAI,CAACC,KAAL,CAAWL,CAAX,CAAJ;AACAC,EAAAA,CAAC,GAAGG,IAAI,CAACC,KAAL,CAAWJ,CAAX,CAAJ;AACAC,EAAAA,CAAC,GAAGE,IAAI,CAACC,KAAL,CAAWH,CAAX,CAAJ;;AAEA,OAAK,IAAII,EAAE,GAAGN,CAAd,EAAiBM,EAAE,GAAGN,CAAC,GAAGE,CAA1B,EAA6BI,EAAE,EAA/B,EAAmC;AACjC,SAAK,IAAIC,EAAE,GAAGR,CAAd,EAAiBQ,EAAE,GAAGR,CAAC,GAAGE,CAA1B,EAA6BM,EAAE,EAA/B,EAAmC;AACjC,UAAMC,GAAG,GAAIV,KAAK,CAACW,MAAN,CAAaC,KAAb,GAAqBJ,EAArB,GAA0BC,EAA3B,IAAkC,CAA9C;AACAJ,MAAAA,CAAC,CAACP,IAAF,CAAOE,KAAP,EAAcS,EAAd,EAAkBD,EAAlB,EAAsBE,GAAtB;AACD;AACF;;AAED,SAAOV,KAAP;AACD;;AAEM,SAAUT,YAAV,CAAuBS,KAAvB,EAA8BC,CAA9B,EAAiCC,CAAjC,EAAoCC,CAApC,EAAuCC,CAAvC;AAAA;;AAAA;AAAA;AAAA;AAAA;AACL;AACAH,UAAAA,CAAC,GAAGK,IAAI,CAACC,KAAL,CAAWN,CAAX,CAAJ;AACAC,UAAAA,CAAC,GAAGI,IAAI,CAACC,KAAL,CAAWL,CAAX,CAAJ;AACAC,UAAAA,CAAC,GAAGG,IAAI,CAACC,KAAL,CAAWJ,CAAX,CAAJ;AACAC,UAAAA,CAAC,GAAGE,IAAI,CAACC,KAAL,CAAWH,CAAX,CAAJ;AAESI,UAAAA,EAPJ,GAOSN,CAPT;;AAAA;AAAA,gBAOYM,EAAE,GAAGN,CAAC,GAAGE,CAPrB;AAAA;AAAA;AAAA;;AAQMK,UAAAA,EARN,GAQWR,CARX;;AAAA;AAAA,gBAQcQ,EAAE,GAAGR,CAAC,GAAGE,CARvB;AAAA;AAAA;AAAA;;AASKO,UAAAA,GATL,GASYV,KAAK,CAACW,MAAN,CAAaC,KAAb,GAAqBJ,EAArB,GAA0BC,EAA3B,IAAkC,CAT7C;AAAA;AAUD,iBAAM;AAAER,YAAAA,CAAC,EAAEQ,EAAL;AAASP,YAAAA,CAAC,EAAEM,EAAZ;AAAgBE,YAAAA,GAAG,EAAHA,GAAhB;AAAqBV,YAAAA,KAAK,EAALA;AAArB,WAAN;;AAVC;AAQ0BS,UAAAA,EAAE,EAR5B;AAAA;AAAA;;AAAA;AAOwBD,UAAAA,EAAE,EAP1B;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["export function isNodePattern(cb) {\n if (typeof cb === \"undefined\") {\n return false;\n }\n\n if (typeof cb !== \"function\") {\n throw new TypeError(\"Callback must be a function\");\n }\n\n return true;\n}\n\nexport function throwError(error, cb) {\n if (typeof error === \"string\") {\n error = new Error(error);\n }\n\n if (typeof cb === \"function\") {\n return cb.call(this, error);\n }\n\n throw error;\n}\n\nexport function scan(image, x, y, w, h, f) {\n // round input\n x = Math.round(x);\n y = Math.round(y);\n w = Math.round(w);\n h = Math.round(h);\n\n for (let _y = y; _y < y + h; _y++) {\n for (let _x = x; _x < x + w; _x++) {\n const idx = (image.bitmap.width * _y + _x) << 2;\n f.call(image, _x, _y, idx);\n }\n }\n\n return image;\n}\n\nexport function* scanIterator(image, x, y, w, h) {\n // round input\n x = Math.round(x);\n y = Math.round(y);\n w = Math.round(w);\n h = Math.round(h);\n\n for (let _y = y; _y < y + h; _y++) {\n for (let _x = x; _x < x + w; _x++) {\n const idx = (image.bitmap.width * _y + _x) << 2;\n yield { x: _x, y: _y, idx, image };\n }\n }\n}\n"],"file":"index.js"}
\ No newline at end of file
diff --git a/node_modules/@jimp/utils/index.d.ts b/node_modules/@jimp/utils/index.d.ts
new file mode 100644
index 00000000..612e9fce
--- /dev/null
+++ b/node_modules/@jimp/utils/index.d.ts
@@ -0,0 +1,19 @@
+import { Image, Omit } from "@jimp/core";
+import { ThrowStatement } from "typescript";
+
+export function isNodePattern(cb: Function): true;
+export function isNodePattern(cb: Omit): false;
+
+export function throwError(
+ error: string | Error,
+ cb?: (err: Error) => void
+): ThrowStatement;
+
+export function scan(
+ image: Image,
+ x: number,
+ y: number,
+ w: number,
+ h: number,
+ f: (image: Image, _x: number, _y: number, idx: number) => void
+): Image;
diff --git a/node_modules/@jimp/utils/package.json b/node_modules/@jimp/utils/package.json
new file mode 100644
index 00000000..a9a6418e
--- /dev/null
+++ b/node_modules/@jimp/utils/package.json
@@ -0,0 +1,27 @@
+{
+ "name": "@jimp/utils",
+ "version": "0.16.13",
+ "description": "Utils for jimp extensions.",
+ "main": "dist/index.js",
+ "module": "es/index.js",
+ "types": "index.d.ts",
+ "scripts": {
+ "build": "npm run build:node:production && npm run build:module",
+ "build:watch": "npm run build:node:debug -- -- --watch --verbose",
+ "build:debug": "npm run build:node:debug",
+ "build:module": "cross-env BABEL_ENV=module babel src -d es --source-maps --config-file ../../babel.config.js",
+ "build:node": "babel src -d dist --source-maps --config-file ../../babel.config.js",
+ "build:node:debug": "cross-env BABEL_ENV=development npm run build:node",
+ "build:node:production": "cross-env BABEL_ENV=production npm run build:node"
+ },
+ "author": "",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "regenerator-runtime": "^0.13.3"
+ },
+ "gitHead": "9eec86086634329a072901dca3a800b850548572"
+}
diff --git a/node_modules/@jimp/utils/src/index.js b/node_modules/@jimp/utils/src/index.js
new file mode 100644
index 00000000..723f2114
--- /dev/null
+++ b/node_modules/@jimp/utils/src/index.js
@@ -0,0 +1,55 @@
+export function isNodePattern(cb) {
+ if (typeof cb === "undefined") {
+ return false;
+ }
+
+ if (typeof cb !== "function") {
+ throw new TypeError("Callback must be a function");
+ }
+
+ return true;
+}
+
+export function throwError(error, cb) {
+ if (typeof error === "string") {
+ error = new Error(error);
+ }
+
+ if (typeof cb === "function") {
+ return cb.call(this, error);
+ }
+
+ throw error;
+}
+
+export function scan(image, x, y, w, h, f) {
+ // round input
+ x = Math.round(x);
+ y = Math.round(y);
+ w = Math.round(w);
+ h = Math.round(h);
+
+ for (let _y = y; _y < y + h; _y++) {
+ for (let _x = x; _x < x + w; _x++) {
+ const idx = (image.bitmap.width * _y + _x) << 2;
+ f.call(image, _x, _y, idx);
+ }
+ }
+
+ return image;
+}
+
+export function* scanIterator(image, x, y, w, h) {
+ // round input
+ x = Math.round(x);
+ y = Math.round(y);
+ w = Math.round(w);
+ h = Math.round(h);
+
+ for (let _y = y; _y < y + h; _y++) {
+ for (let _x = x; _x < x + w; _x++) {
+ const idx = (image.bitmap.width * _y + _x) << 2;
+ yield { x: _x, y: _y, idx, image };
+ }
+ }
+}
diff --git a/node_modules/@tokenizer/token/README.md b/node_modules/@tokenizer/token/README.md
new file mode 100644
index 00000000..1c1ba324
--- /dev/null
+++ b/node_modules/@tokenizer/token/README.md
@@ -0,0 +1,19 @@
+[](https://www.npmjs.com/package/@tokenizer/token)
+[](https://npmcharts.com/compare/@tokenizer/token?interval=30)
+
+# @tokenizer/token
+
+TypeScript definition of an [strtok3](https://github.com/Borewit/strtok3) token.
+
+## Licence
+
+(The MIT License)
+
+Copyright (c) 2020 Borewit
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
diff --git a/node_modules/@tokenizer/token/index.d.ts b/node_modules/@tokenizer/token/index.d.ts
new file mode 100644
index 00000000..d6c8122e
--- /dev/null
+++ b/node_modules/@tokenizer/token/index.d.ts
@@ -0,0 +1,30 @@
+/**
+ * Read-only token
+ * See https://github.com/Borewit/strtok3 for more information
+ */
+export interface IGetToken {
+
+ /**
+ * Length of encoded token in bytes
+ */
+ len: number;
+
+ /**
+ * Decode value from buffer at offset
+ * @param array - Uint8Array to read the decoded value from
+ * @param offset - Decode offset
+ * @return decoded value
+ */
+ get(array: Array, offset: number): Value;
+}
+
+export interface IToken extends IGetToken {
+ /**
+ * Encode value to buffer
+ * @param array - Uint8Array to write the encoded value to
+ * @param offset - Buffer write offset
+ * @param value - Value to decode of type T
+ * @return offset plus number of bytes written
+ */
+ put(array: Array, offset: number, value: Value): number
+}
diff --git a/node_modules/@tokenizer/token/package.json b/node_modules/@tokenizer/token/package.json
new file mode 100644
index 00000000..ad87e5bb
--- /dev/null
+++ b/node_modules/@tokenizer/token/package.json
@@ -0,0 +1,33 @@
+{
+ "name": "@tokenizer/token",
+ "version": "0.3.0",
+ "description": "TypeScript definition for strtok3 token",
+ "main": "",
+ "types": "index.d.ts",
+ "files": [
+ "index.d.ts"
+ ],
+ "keywords": [
+ "token",
+ "interface",
+ "tokenizer",
+ "TypeScript"
+ ],
+ "author": {
+ "name": "Borewit",
+ "url": "https://github.com/Borewit"
+ },
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/Borewit/tokenizer-token.git"
+ },
+ "bugs": {
+ "url": "https://github.com/Borewit/tokenizer-token/issues"
+ },
+ "typeScriptVersion": "3.0",
+ "dependencies": {},
+ "devDependencies": {
+ "@types/node": "^13.1.0"
+ }
+}
diff --git a/project starter code/node_modules/@types/node/LICENSE b/node_modules/@types/node/LICENSE
similarity index 100%
rename from project starter code/node_modules/@types/node/LICENSE
rename to node_modules/@types/node/LICENSE
diff --git a/project starter code/node_modules/@types/node/README.md b/node_modules/@types/node/README.md
similarity index 100%
rename from project starter code/node_modules/@types/node/README.md
rename to node_modules/@types/node/README.md
diff --git a/project starter code/node_modules/@types/node/assert.d.ts b/node_modules/@types/node/assert.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/assert.d.ts
rename to node_modules/@types/node/assert.d.ts
diff --git a/project starter code/node_modules/@types/node/assert/strict.d.ts b/node_modules/@types/node/assert/strict.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/assert/strict.d.ts
rename to node_modules/@types/node/assert/strict.d.ts
diff --git a/project starter code/node_modules/@types/node/async_hooks.d.ts b/node_modules/@types/node/async_hooks.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/async_hooks.d.ts
rename to node_modules/@types/node/async_hooks.d.ts
diff --git a/project starter code/node_modules/@types/node/buffer.d.ts b/node_modules/@types/node/buffer.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/buffer.d.ts
rename to node_modules/@types/node/buffer.d.ts
diff --git a/project starter code/node_modules/@types/node/child_process.d.ts b/node_modules/@types/node/child_process.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/child_process.d.ts
rename to node_modules/@types/node/child_process.d.ts
diff --git a/project starter code/node_modules/@types/node/cluster.d.ts b/node_modules/@types/node/cluster.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/cluster.d.ts
rename to node_modules/@types/node/cluster.d.ts
diff --git a/project starter code/node_modules/@types/node/console.d.ts b/node_modules/@types/node/console.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/console.d.ts
rename to node_modules/@types/node/console.d.ts
diff --git a/project starter code/node_modules/@types/node/constants.d.ts b/node_modules/@types/node/constants.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/constants.d.ts
rename to node_modules/@types/node/constants.d.ts
diff --git a/project starter code/node_modules/@types/node/crypto.d.ts b/node_modules/@types/node/crypto.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/crypto.d.ts
rename to node_modules/@types/node/crypto.d.ts
diff --git a/project starter code/node_modules/@types/node/dgram.d.ts b/node_modules/@types/node/dgram.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/dgram.d.ts
rename to node_modules/@types/node/dgram.d.ts
diff --git a/project starter code/node_modules/@types/node/diagnostics_channel.d.ts b/node_modules/@types/node/diagnostics_channel.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/diagnostics_channel.d.ts
rename to node_modules/@types/node/diagnostics_channel.d.ts
diff --git a/project starter code/node_modules/@types/node/dns.d.ts b/node_modules/@types/node/dns.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/dns.d.ts
rename to node_modules/@types/node/dns.d.ts
diff --git a/project starter code/node_modules/@types/node/dns/promises.d.ts b/node_modules/@types/node/dns/promises.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/dns/promises.d.ts
rename to node_modules/@types/node/dns/promises.d.ts
diff --git a/project starter code/node_modules/@types/node/domain.d.ts b/node_modules/@types/node/domain.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/domain.d.ts
rename to node_modules/@types/node/domain.d.ts
diff --git a/project starter code/node_modules/@types/node/events.d.ts b/node_modules/@types/node/events.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/events.d.ts
rename to node_modules/@types/node/events.d.ts
diff --git a/project starter code/node_modules/@types/node/fs.d.ts b/node_modules/@types/node/fs.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/fs.d.ts
rename to node_modules/@types/node/fs.d.ts
diff --git a/project starter code/node_modules/@types/node/fs/promises.d.ts b/node_modules/@types/node/fs/promises.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/fs/promises.d.ts
rename to node_modules/@types/node/fs/promises.d.ts
diff --git a/project starter code/node_modules/@types/node/globals.d.ts b/node_modules/@types/node/globals.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/globals.d.ts
rename to node_modules/@types/node/globals.d.ts
diff --git a/project starter code/node_modules/@types/node/globals.global.d.ts b/node_modules/@types/node/globals.global.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/globals.global.d.ts
rename to node_modules/@types/node/globals.global.d.ts
diff --git a/project starter code/node_modules/@types/node/http.d.ts b/node_modules/@types/node/http.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/http.d.ts
rename to node_modules/@types/node/http.d.ts
diff --git a/project starter code/node_modules/@types/node/http2.d.ts b/node_modules/@types/node/http2.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/http2.d.ts
rename to node_modules/@types/node/http2.d.ts
diff --git a/project starter code/node_modules/@types/node/https.d.ts b/node_modules/@types/node/https.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/https.d.ts
rename to node_modules/@types/node/https.d.ts
diff --git a/project starter code/node_modules/@types/node/index.d.ts b/node_modules/@types/node/index.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/index.d.ts
rename to node_modules/@types/node/index.d.ts
diff --git a/project starter code/node_modules/@types/node/inspector.d.ts b/node_modules/@types/node/inspector.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/inspector.d.ts
rename to node_modules/@types/node/inspector.d.ts
diff --git a/project starter code/node_modules/@types/node/module.d.ts b/node_modules/@types/node/module.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/module.d.ts
rename to node_modules/@types/node/module.d.ts
diff --git a/project starter code/node_modules/@types/node/net.d.ts b/node_modules/@types/node/net.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/net.d.ts
rename to node_modules/@types/node/net.d.ts
diff --git a/project starter code/node_modules/@types/node/os.d.ts b/node_modules/@types/node/os.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/os.d.ts
rename to node_modules/@types/node/os.d.ts
diff --git a/project starter code/node_modules/@types/node/package.json b/node_modules/@types/node/package.json
similarity index 100%
rename from project starter code/node_modules/@types/node/package.json
rename to node_modules/@types/node/package.json
diff --git a/project starter code/node_modules/@types/node/path.d.ts b/node_modules/@types/node/path.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/path.d.ts
rename to node_modules/@types/node/path.d.ts
diff --git a/project starter code/node_modules/@types/node/perf_hooks.d.ts b/node_modules/@types/node/perf_hooks.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/perf_hooks.d.ts
rename to node_modules/@types/node/perf_hooks.d.ts
diff --git a/project starter code/node_modules/@types/node/process.d.ts b/node_modules/@types/node/process.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/process.d.ts
rename to node_modules/@types/node/process.d.ts
diff --git a/project starter code/node_modules/@types/node/punycode.d.ts b/node_modules/@types/node/punycode.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/punycode.d.ts
rename to node_modules/@types/node/punycode.d.ts
diff --git a/project starter code/node_modules/@types/node/querystring.d.ts b/node_modules/@types/node/querystring.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/querystring.d.ts
rename to node_modules/@types/node/querystring.d.ts
diff --git a/project starter code/node_modules/@types/node/readline.d.ts b/node_modules/@types/node/readline.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/readline.d.ts
rename to node_modules/@types/node/readline.d.ts
diff --git a/project starter code/node_modules/@types/node/repl.d.ts b/node_modules/@types/node/repl.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/repl.d.ts
rename to node_modules/@types/node/repl.d.ts
diff --git a/project starter code/node_modules/@types/node/stream.d.ts b/node_modules/@types/node/stream.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/stream.d.ts
rename to node_modules/@types/node/stream.d.ts
diff --git a/project starter code/node_modules/@types/node/stream/consumers.d.ts b/node_modules/@types/node/stream/consumers.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/stream/consumers.d.ts
rename to node_modules/@types/node/stream/consumers.d.ts
diff --git a/project starter code/node_modules/@types/node/stream/promises.d.ts b/node_modules/@types/node/stream/promises.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/stream/promises.d.ts
rename to node_modules/@types/node/stream/promises.d.ts
diff --git a/project starter code/node_modules/@types/node/stream/web.d.ts b/node_modules/@types/node/stream/web.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/stream/web.d.ts
rename to node_modules/@types/node/stream/web.d.ts
diff --git a/project starter code/node_modules/@types/node/string_decoder.d.ts b/node_modules/@types/node/string_decoder.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/string_decoder.d.ts
rename to node_modules/@types/node/string_decoder.d.ts
diff --git a/project starter code/node_modules/@types/node/timers.d.ts b/node_modules/@types/node/timers.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/timers.d.ts
rename to node_modules/@types/node/timers.d.ts
diff --git a/project starter code/node_modules/@types/node/timers/promises.d.ts b/node_modules/@types/node/timers/promises.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/timers/promises.d.ts
rename to node_modules/@types/node/timers/promises.d.ts
diff --git a/project starter code/node_modules/@types/node/tls.d.ts b/node_modules/@types/node/tls.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/tls.d.ts
rename to node_modules/@types/node/tls.d.ts
diff --git a/project starter code/node_modules/@types/node/trace_events.d.ts b/node_modules/@types/node/trace_events.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/trace_events.d.ts
rename to node_modules/@types/node/trace_events.d.ts
diff --git a/project starter code/node_modules/@types/node/tty.d.ts b/node_modules/@types/node/tty.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/tty.d.ts
rename to node_modules/@types/node/tty.d.ts
diff --git a/project starter code/node_modules/@types/node/url.d.ts b/node_modules/@types/node/url.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/url.d.ts
rename to node_modules/@types/node/url.d.ts
diff --git a/project starter code/node_modules/@types/node/util.d.ts b/node_modules/@types/node/util.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/util.d.ts
rename to node_modules/@types/node/util.d.ts
diff --git a/project starter code/node_modules/@types/node/v8.d.ts b/node_modules/@types/node/v8.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/v8.d.ts
rename to node_modules/@types/node/v8.d.ts
diff --git a/project starter code/node_modules/@types/node/vm.d.ts b/node_modules/@types/node/vm.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/vm.d.ts
rename to node_modules/@types/node/vm.d.ts
diff --git a/project starter code/node_modules/@types/node/wasi.d.ts b/node_modules/@types/node/wasi.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/wasi.d.ts
rename to node_modules/@types/node/wasi.d.ts
diff --git a/project starter code/node_modules/@types/node/worker_threads.d.ts b/node_modules/@types/node/worker_threads.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/worker_threads.d.ts
rename to node_modules/@types/node/worker_threads.d.ts
diff --git a/project starter code/node_modules/@types/node/zlib.d.ts b/node_modules/@types/node/zlib.d.ts
similarity index 100%
rename from project starter code/node_modules/@types/node/zlib.d.ts
rename to node_modules/@types/node/zlib.d.ts
diff --git a/project starter code/node_modules/accepts/HISTORY.md b/node_modules/accepts/HISTORY.md
similarity index 100%
rename from project starter code/node_modules/accepts/HISTORY.md
rename to node_modules/accepts/HISTORY.md
diff --git a/project starter code/node_modules/accepts/LICENSE b/node_modules/accepts/LICENSE
similarity index 100%
rename from project starter code/node_modules/accepts/LICENSE
rename to node_modules/accepts/LICENSE
diff --git a/project starter code/node_modules/accepts/README.md b/node_modules/accepts/README.md
similarity index 100%
rename from project starter code/node_modules/accepts/README.md
rename to node_modules/accepts/README.md
diff --git a/project starter code/node_modules/accepts/index.js b/node_modules/accepts/index.js
similarity index 100%
rename from project starter code/node_modules/accepts/index.js
rename to node_modules/accepts/index.js
diff --git a/project starter code/node_modules/accepts/package.json b/node_modules/accepts/package.json
similarity index 100%
rename from project starter code/node_modules/accepts/package.json
rename to node_modules/accepts/package.json
diff --git a/project starter code/node_modules/any-base/LICENSE b/node_modules/any-base/LICENSE
similarity index 100%
rename from project starter code/node_modules/any-base/LICENSE
rename to node_modules/any-base/LICENSE
diff --git a/project starter code/node_modules/any-base/README.md b/node_modules/any-base/README.md
similarity index 100%
rename from project starter code/node_modules/any-base/README.md
rename to node_modules/any-base/README.md
diff --git a/project starter code/node_modules/any-base/dist/any-base.js b/node_modules/any-base/dist/any-base.js
similarity index 100%
rename from project starter code/node_modules/any-base/dist/any-base.js
rename to node_modules/any-base/dist/any-base.js
diff --git a/project starter code/node_modules/any-base/dist/any-base.min.js b/node_modules/any-base/dist/any-base.min.js
similarity index 100%
rename from project starter code/node_modules/any-base/dist/any-base.min.js
rename to node_modules/any-base/dist/any-base.min.js
diff --git a/project starter code/node_modules/any-base/index.js b/node_modules/any-base/index.js
similarity index 100%
rename from project starter code/node_modules/any-base/index.js
rename to node_modules/any-base/index.js
diff --git a/project starter code/node_modules/any-base/package.json b/node_modules/any-base/package.json
similarity index 100%
rename from project starter code/node_modules/any-base/package.json
rename to node_modules/any-base/package.json
diff --git a/project starter code/node_modules/any-base/src/converter.js b/node_modules/any-base/src/converter.js
similarity index 100%
rename from project starter code/node_modules/any-base/src/converter.js
rename to node_modules/any-base/src/converter.js
diff --git a/project starter code/node_modules/array-flatten/LICENSE b/node_modules/array-flatten/LICENSE
similarity index 100%
rename from project starter code/node_modules/array-flatten/LICENSE
rename to node_modules/array-flatten/LICENSE
diff --git a/project starter code/node_modules/array-flatten/README.md b/node_modules/array-flatten/README.md
similarity index 100%
rename from project starter code/node_modules/array-flatten/README.md
rename to node_modules/array-flatten/README.md
diff --git a/project starter code/node_modules/array-flatten/array-flatten.js b/node_modules/array-flatten/array-flatten.js
similarity index 100%
rename from project starter code/node_modules/array-flatten/array-flatten.js
rename to node_modules/array-flatten/array-flatten.js
diff --git a/project starter code/node_modules/array-flatten/package.json b/node_modules/array-flatten/package.json
similarity index 100%
rename from project starter code/node_modules/array-flatten/package.json
rename to node_modules/array-flatten/package.json
diff --git a/node_modules/asynckit/LICENSE b/node_modules/asynckit/LICENSE
new file mode 100644
index 00000000..c9eca5dd
--- /dev/null
+++ b/node_modules/asynckit/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2016 Alex Indigo
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/asynckit/README.md b/node_modules/asynckit/README.md
new file mode 100644
index 00000000..ddcc7e6b
--- /dev/null
+++ b/node_modules/asynckit/README.md
@@ -0,0 +1,233 @@
+# asynckit [](https://www.npmjs.com/package/asynckit)
+
+Minimal async jobs utility library, with streams support.
+
+[](https://travis-ci.org/alexindigo/asynckit)
+[](https://travis-ci.org/alexindigo/asynckit)
+[](https://ci.appveyor.com/project/alexindigo/asynckit)
+
+[](https://coveralls.io/github/alexindigo/asynckit?branch=master)
+[](https://david-dm.org/alexindigo/asynckit)
+[](https://www.bithound.io/github/alexindigo/asynckit)
+
+
+
+AsyncKit provides harness for `parallel` and `serial` iterators over list of items represented by arrays or objects.
+Optionally it accepts abort function (should be synchronously return by iterator for each item), and terminates left over jobs upon an error event. For specific iteration order built-in (`ascending` and `descending`) and custom sort helpers also supported, via `asynckit.serialOrdered` method.
+
+It ensures async operations to keep behavior more stable and prevent `Maximum call stack size exceeded` errors, from sync iterators.
+
+| compression | size |
+| :----------------- | -------: |
+| asynckit.js | 12.34 kB |
+| asynckit.min.js | 4.11 kB |
+| asynckit.min.js.gz | 1.47 kB |
+
+
+## Install
+
+```sh
+$ npm install --save asynckit
+```
+
+## Examples
+
+### Parallel Jobs
+
+Runs iterator over provided array in parallel. Stores output in the `result` array,
+on the matching positions. In unlikely event of an error from one of the jobs,
+will terminate rest of the active jobs (if abort function is provided)
+and return error along with salvaged data to the main callback function.
+
+#### Input Array
+
+```javascript
+var parallel = require('asynckit').parallel
+ , assert = require('assert')
+ ;
+
+var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ]
+ , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ]
+ , expectedTarget = [ 1, 1, 2, 4, 8, 16, 32, 64 ]
+ , target = []
+ ;
+
+parallel(source, asyncJob, function(err, result)
+{
+ assert.deepEqual(result, expectedResult);
+ assert.deepEqual(target, expectedTarget);
+});
+
+// async job accepts one element from the array
+// and a callback function
+function asyncJob(item, cb)
+{
+ // different delays (in ms) per item
+ var delay = item * 25;
+
+ // pretend different jobs take different time to finish
+ // and not in consequential order
+ var timeoutId = setTimeout(function() {
+ target.push(item);
+ cb(null, item * 2);
+ }, delay);
+
+ // allow to cancel "leftover" jobs upon error
+ // return function, invoking of which will abort this job
+ return clearTimeout.bind(null, timeoutId);
+}
+```
+
+More examples could be found in [test/test-parallel-array.js](test/test-parallel-array.js).
+
+#### Input Object
+
+Also it supports named jobs, listed via object.
+
+```javascript
+var parallel = require('asynckit/parallel')
+ , assert = require('assert')
+ ;
+
+var source = { first: 1, one: 1, four: 4, sixteen: 16, sixtyFour: 64, thirtyTwo: 32, eight: 8, two: 2 }
+ , expectedResult = { first: 2, one: 2, four: 8, sixteen: 32, sixtyFour: 128, thirtyTwo: 64, eight: 16, two: 4 }
+ , expectedTarget = [ 1, 1, 2, 4, 8, 16, 32, 64 ]
+ , expectedKeys = [ 'first', 'one', 'two', 'four', 'eight', 'sixteen', 'thirtyTwo', 'sixtyFour' ]
+ , target = []
+ , keys = []
+ ;
+
+parallel(source, asyncJob, function(err, result)
+{
+ assert.deepEqual(result, expectedResult);
+ assert.deepEqual(target, expectedTarget);
+ assert.deepEqual(keys, expectedKeys);
+});
+
+// supports full value, key, callback (shortcut) interface
+function asyncJob(item, key, cb)
+{
+ // different delays (in ms) per item
+ var delay = item * 25;
+
+ // pretend different jobs take different time to finish
+ // and not in consequential order
+ var timeoutId = setTimeout(function() {
+ keys.push(key);
+ target.push(item);
+ cb(null, item * 2);
+ }, delay);
+
+ // allow to cancel "leftover" jobs upon error
+ // return function, invoking of which will abort this job
+ return clearTimeout.bind(null, timeoutId);
+}
+```
+
+More examples could be found in [test/test-parallel-object.js](test/test-parallel-object.js).
+
+### Serial Jobs
+
+Runs iterator over provided array sequentially. Stores output in the `result` array,
+on the matching positions. In unlikely event of an error from one of the jobs,
+will not proceed to the rest of the items in the list
+and return error along with salvaged data to the main callback function.
+
+#### Input Array
+
+```javascript
+var serial = require('asynckit/serial')
+ , assert = require('assert')
+ ;
+
+var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ]
+ , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ]
+ , expectedTarget = [ 0, 1, 2, 3, 4, 5, 6, 7 ]
+ , target = []
+ ;
+
+serial(source, asyncJob, function(err, result)
+{
+ assert.deepEqual(result, expectedResult);
+ assert.deepEqual(target, expectedTarget);
+});
+
+// extended interface (item, key, callback)
+// also supported for arrays
+function asyncJob(item, key, cb)
+{
+ target.push(key);
+
+ // it will be automatically made async
+ // even it iterator "returns" in the same event loop
+ cb(null, item * 2);
+}
+```
+
+More examples could be found in [test/test-serial-array.js](test/test-serial-array.js).
+
+#### Input Object
+
+Also it supports named jobs, listed via object.
+
+```javascript
+var serial = require('asynckit').serial
+ , assert = require('assert')
+ ;
+
+var source = [ 1, 1, 4, 16, 64, 32, 8, 2 ]
+ , expectedResult = [ 2, 2, 8, 32, 128, 64, 16, 4 ]
+ , expectedTarget = [ 0, 1, 2, 3, 4, 5, 6, 7 ]
+ , target = []
+ ;
+
+var source = { first: 1, one: 1, four: 4, sixteen: 16, sixtyFour: 64, thirtyTwo: 32, eight: 8, two: 2 }
+ , expectedResult = { first: 2, one: 2, four: 8, sixteen: 32, sixtyFour: 128, thirtyTwo: 64, eight: 16, two: 4 }
+ , expectedTarget = [ 1, 1, 4, 16, 64, 32, 8, 2 ]
+ , target = []
+ ;
+
+
+serial(source, asyncJob, function(err, result)
+{
+ assert.deepEqual(result, expectedResult);
+ assert.deepEqual(target, expectedTarget);
+});
+
+// shortcut interface (item, callback)
+// works for object as well as for the arrays
+function asyncJob(item, cb)
+{
+ target.push(item);
+
+ // it will be automatically made async
+ // even it iterator "returns" in the same event loop
+ cb(null, item * 2);
+}
+```
+
+More examples could be found in [test/test-serial-object.js](test/test-serial-object.js).
+
+_Note: Since _object_ is an _unordered_ collection of properties,
+it may produce unexpected results with sequential iterations.
+Whenever order of the jobs' execution is important please use `serialOrdered` method._
+
+### Ordered Serial Iterations
+
+TBD
+
+For example [compare-property](compare-property) package.
+
+### Streaming interface
+
+TBD
+
+## Want to Know More?
+
+More examples can be found in [test folder](test/).
+
+Or open an [issue](https://github.com/alexindigo/asynckit/issues) with questions and/or suggestions.
+
+## License
+
+AsyncKit is licensed under the MIT license.
diff --git a/node_modules/asynckit/bench.js b/node_modules/asynckit/bench.js
new file mode 100644
index 00000000..c612f1a5
--- /dev/null
+++ b/node_modules/asynckit/bench.js
@@ -0,0 +1,76 @@
+/* eslint no-console: "off" */
+
+var asynckit = require('./')
+ , async = require('async')
+ , assert = require('assert')
+ , expected = 0
+ ;
+
+var Benchmark = require('benchmark');
+var suite = new Benchmark.Suite;
+
+var source = [];
+for (var z = 1; z < 100; z++)
+{
+ source.push(z);
+ expected += z;
+}
+
+suite
+// add tests
+
+.add('async.map', function(deferred)
+{
+ var total = 0;
+
+ async.map(source,
+ function(i, cb)
+ {
+ setImmediate(function()
+ {
+ total += i;
+ cb(null, total);
+ });
+ },
+ function(err, result)
+ {
+ assert.ifError(err);
+ assert.equal(result[result.length - 1], expected);
+ deferred.resolve();
+ });
+}, {'defer': true})
+
+
+.add('asynckit.parallel', function(deferred)
+{
+ var total = 0;
+
+ asynckit.parallel(source,
+ function(i, cb)
+ {
+ setImmediate(function()
+ {
+ total += i;
+ cb(null, total);
+ });
+ },
+ function(err, result)
+ {
+ assert.ifError(err);
+ assert.equal(result[result.length - 1], expected);
+ deferred.resolve();
+ });
+}, {'defer': true})
+
+
+// add listeners
+.on('cycle', function(ev)
+{
+ console.log(String(ev.target));
+})
+.on('complete', function()
+{
+ console.log('Fastest is ' + this.filter('fastest').map('name'));
+})
+// run async
+.run({ 'async': true });
diff --git a/node_modules/asynckit/index.js b/node_modules/asynckit/index.js
new file mode 100644
index 00000000..455f9454
--- /dev/null
+++ b/node_modules/asynckit/index.js
@@ -0,0 +1,6 @@
+module.exports =
+{
+ parallel : require('./parallel.js'),
+ serial : require('./serial.js'),
+ serialOrdered : require('./serialOrdered.js')
+};
diff --git a/node_modules/asynckit/lib/abort.js b/node_modules/asynckit/lib/abort.js
new file mode 100644
index 00000000..114367e5
--- /dev/null
+++ b/node_modules/asynckit/lib/abort.js
@@ -0,0 +1,29 @@
+// API
+module.exports = abort;
+
+/**
+ * Aborts leftover active jobs
+ *
+ * @param {object} state - current state object
+ */
+function abort(state)
+{
+ Object.keys(state.jobs).forEach(clean.bind(state));
+
+ // reset leftover jobs
+ state.jobs = {};
+}
+
+/**
+ * Cleans up leftover job by invoking abort function for the provided job id
+ *
+ * @this state
+ * @param {string|number} key - job id to abort
+ */
+function clean(key)
+{
+ if (typeof this.jobs[key] == 'function')
+ {
+ this.jobs[key]();
+ }
+}
diff --git a/node_modules/asynckit/lib/async.js b/node_modules/asynckit/lib/async.js
new file mode 100644
index 00000000..7f1288a4
--- /dev/null
+++ b/node_modules/asynckit/lib/async.js
@@ -0,0 +1,34 @@
+var defer = require('./defer.js');
+
+// API
+module.exports = async;
+
+/**
+ * Runs provided callback asynchronously
+ * even if callback itself is not
+ *
+ * @param {function} callback - callback to invoke
+ * @returns {function} - augmented callback
+ */
+function async(callback)
+{
+ var isAsync = false;
+
+ // check if async happened
+ defer(function() { isAsync = true; });
+
+ return function async_callback(err, result)
+ {
+ if (isAsync)
+ {
+ callback(err, result);
+ }
+ else
+ {
+ defer(function nextTick_callback()
+ {
+ callback(err, result);
+ });
+ }
+ };
+}
diff --git a/node_modules/asynckit/lib/defer.js b/node_modules/asynckit/lib/defer.js
new file mode 100644
index 00000000..b67110c7
--- /dev/null
+++ b/node_modules/asynckit/lib/defer.js
@@ -0,0 +1,26 @@
+module.exports = defer;
+
+/**
+ * Runs provided function on next iteration of the event loop
+ *
+ * @param {function} fn - function to run
+ */
+function defer(fn)
+{
+ var nextTick = typeof setImmediate == 'function'
+ ? setImmediate
+ : (
+ typeof process == 'object' && typeof process.nextTick == 'function'
+ ? process.nextTick
+ : null
+ );
+
+ if (nextTick)
+ {
+ nextTick(fn);
+ }
+ else
+ {
+ setTimeout(fn, 0);
+ }
+}
diff --git a/node_modules/asynckit/lib/iterate.js b/node_modules/asynckit/lib/iterate.js
new file mode 100644
index 00000000..5d2839a5
--- /dev/null
+++ b/node_modules/asynckit/lib/iterate.js
@@ -0,0 +1,75 @@
+var async = require('./async.js')
+ , abort = require('./abort.js')
+ ;
+
+// API
+module.exports = iterate;
+
+/**
+ * Iterates over each job object
+ *
+ * @param {array|object} list - array or object (named list) to iterate over
+ * @param {function} iterator - iterator to run
+ * @param {object} state - current job status
+ * @param {function} callback - invoked when all elements processed
+ */
+function iterate(list, iterator, state, callback)
+{
+ // store current index
+ var key = state['keyedList'] ? state['keyedList'][state.index] : state.index;
+
+ state.jobs[key] = runJob(iterator, key, list[key], function(error, output)
+ {
+ // don't repeat yourself
+ // skip secondary callbacks
+ if (!(key in state.jobs))
+ {
+ return;
+ }
+
+ // clean up jobs
+ delete state.jobs[key];
+
+ if (error)
+ {
+ // don't process rest of the results
+ // stop still active jobs
+ // and reset the list
+ abort(state);
+ }
+ else
+ {
+ state.results[key] = output;
+ }
+
+ // return salvaged results
+ callback(error, state.results);
+ });
+}
+
+/**
+ * Runs iterator over provided job element
+ *
+ * @param {function} iterator - iterator to invoke
+ * @param {string|number} key - key/index of the element in the list of jobs
+ * @param {mixed} item - job description
+ * @param {function} callback - invoked after iterator is done with the job
+ * @returns {function|mixed} - job abort function or something else
+ */
+function runJob(iterator, key, item, callback)
+{
+ var aborter;
+
+ // allow shortcut if iterator expects only two arguments
+ if (iterator.length == 2)
+ {
+ aborter = iterator(item, async(callback));
+ }
+ // otherwise go with full three arguments
+ else
+ {
+ aborter = iterator(item, key, async(callback));
+ }
+
+ return aborter;
+}
diff --git a/node_modules/asynckit/lib/readable_asynckit.js b/node_modules/asynckit/lib/readable_asynckit.js
new file mode 100644
index 00000000..78ad240f
--- /dev/null
+++ b/node_modules/asynckit/lib/readable_asynckit.js
@@ -0,0 +1,91 @@
+var streamify = require('./streamify.js')
+ , defer = require('./defer.js')
+ ;
+
+// API
+module.exports = ReadableAsyncKit;
+
+/**
+ * Base constructor for all streams
+ * used to hold properties/methods
+ */
+function ReadableAsyncKit()
+{
+ ReadableAsyncKit.super_.apply(this, arguments);
+
+ // list of active jobs
+ this.jobs = {};
+
+ // add stream methods
+ this.destroy = destroy;
+ this._start = _start;
+ this._read = _read;
+}
+
+/**
+ * Destroys readable stream,
+ * by aborting outstanding jobs
+ *
+ * @returns {void}
+ */
+function destroy()
+{
+ if (this.destroyed)
+ {
+ return;
+ }
+
+ this.destroyed = true;
+
+ if (typeof this.terminator == 'function')
+ {
+ this.terminator();
+ }
+}
+
+/**
+ * Starts provided jobs in async manner
+ *
+ * @private
+ */
+function _start()
+{
+ // first argument – runner function
+ var runner = arguments[0]
+ // take away first argument
+ , args = Array.prototype.slice.call(arguments, 1)
+ // second argument - input data
+ , input = args[0]
+ // last argument - result callback
+ , endCb = streamify.callback.call(this, args[args.length - 1])
+ ;
+
+ args[args.length - 1] = endCb;
+ // third argument - iterator
+ args[1] = streamify.iterator.call(this, args[1]);
+
+ // allow time for proper setup
+ defer(function()
+ {
+ if (!this.destroyed)
+ {
+ this.terminator = runner.apply(null, args);
+ }
+ else
+ {
+ endCb(null, Array.isArray(input) ? [] : {});
+ }
+ }.bind(this));
+}
+
+
+/**
+ * Implement _read to comply with Readable streams
+ * Doesn't really make sense for flowing object mode
+ *
+ * @private
+ */
+function _read()
+{
+
+}
diff --git a/node_modules/asynckit/lib/readable_parallel.js b/node_modules/asynckit/lib/readable_parallel.js
new file mode 100644
index 00000000..5d2929f7
--- /dev/null
+++ b/node_modules/asynckit/lib/readable_parallel.js
@@ -0,0 +1,25 @@
+var parallel = require('../parallel.js');
+
+// API
+module.exports = ReadableParallel;
+
+/**
+ * Streaming wrapper to `asynckit.parallel`
+ *
+ * @param {array|object} list - array or object (named list) to iterate over
+ * @param {function} iterator - iterator to run
+ * @param {function} callback - invoked when all elements processed
+ * @returns {stream.Readable#}
+ */
+function ReadableParallel(list, iterator, callback)
+{
+ if (!(this instanceof ReadableParallel))
+ {
+ return new ReadableParallel(list, iterator, callback);
+ }
+
+ // turn on object mode
+ ReadableParallel.super_.call(this, {objectMode: true});
+
+ this._start(parallel, list, iterator, callback);
+}
diff --git a/node_modules/asynckit/lib/readable_serial.js b/node_modules/asynckit/lib/readable_serial.js
new file mode 100644
index 00000000..78226982
--- /dev/null
+++ b/node_modules/asynckit/lib/readable_serial.js
@@ -0,0 +1,25 @@
+var serial = require('../serial.js');
+
+// API
+module.exports = ReadableSerial;
+
+/**
+ * Streaming wrapper to `asynckit.serial`
+ *
+ * @param {array|object} list - array or object (named list) to iterate over
+ * @param {function} iterator - iterator to run
+ * @param {function} callback - invoked when all elements processed
+ * @returns {stream.Readable#}
+ */
+function ReadableSerial(list, iterator, callback)
+{
+ if (!(this instanceof ReadableSerial))
+ {
+ return new ReadableSerial(list, iterator, callback);
+ }
+
+ // turn on object mode
+ ReadableSerial.super_.call(this, {objectMode: true});
+
+ this._start(serial, list, iterator, callback);
+}
diff --git a/node_modules/asynckit/lib/readable_serial_ordered.js b/node_modules/asynckit/lib/readable_serial_ordered.js
new file mode 100644
index 00000000..3de89c47
--- /dev/null
+++ b/node_modules/asynckit/lib/readable_serial_ordered.js
@@ -0,0 +1,29 @@
+var serialOrdered = require('../serialOrdered.js');
+
+// API
+module.exports = ReadableSerialOrdered;
+// expose sort helpers
+module.exports.ascending = serialOrdered.ascending;
+module.exports.descending = serialOrdered.descending;
+
+/**
+ * Streaming wrapper to `asynckit.serialOrdered`
+ *
+ * @param {array|object} list - array or object (named list) to iterate over
+ * @param {function} iterator - iterator to run
+ * @param {function} sortMethod - custom sort function
+ * @param {function} callback - invoked when all elements processed
+ * @returns {stream.Readable#}
+ */
+function ReadableSerialOrdered(list, iterator, sortMethod, callback)
+{
+ if (!(this instanceof ReadableSerialOrdered))
+ {
+ return new ReadableSerialOrdered(list, iterator, sortMethod, callback);
+ }
+
+ // turn on object mode
+ ReadableSerialOrdered.super_.call(this, {objectMode: true});
+
+ this._start(serialOrdered, list, iterator, sortMethod, callback);
+}
diff --git a/node_modules/asynckit/lib/state.js b/node_modules/asynckit/lib/state.js
new file mode 100644
index 00000000..cbea7ad8
--- /dev/null
+++ b/node_modules/asynckit/lib/state.js
@@ -0,0 +1,37 @@
+// API
+module.exports = state;
+
+/**
+ * Creates initial state object
+ * for iteration over list
+ *
+ * @param {array|object} list - list to iterate over
+ * @param {function|null} sortMethod - function to use for keys sort,
+ * or `null` to keep them as is
+ * @returns {object} - initial state object
+ */
+function state(list, sortMethod)
+{
+ var isNamedList = !Array.isArray(list)
+ , initState =
+ {
+ index : 0,
+ keyedList: isNamedList || sortMethod ? Object.keys(list) : null,
+ jobs : {},
+ results : isNamedList ? {} : [],
+ size : isNamedList ? Object.keys(list).length : list.length
+ }
+ ;
+
+ if (sortMethod)
+ {
+ // sort array keys based on it's values
+ // sort object's keys just on own merit
+ initState.keyedList.sort(isNamedList ? sortMethod : function(a, b)
+ {
+ return sortMethod(list[a], list[b]);
+ });
+ }
+
+ return initState;
+}
diff --git a/node_modules/asynckit/lib/streamify.js b/node_modules/asynckit/lib/streamify.js
new file mode 100644
index 00000000..f56a1c92
--- /dev/null
+++ b/node_modules/asynckit/lib/streamify.js
@@ -0,0 +1,141 @@
+var async = require('./async.js');
+
+// API
+module.exports = {
+ iterator: wrapIterator,
+ callback: wrapCallback
+};
+
+/**
+ * Wraps iterators with long signature
+ *
+ * @this ReadableAsyncKit#
+ * @param {function} iterator - function to wrap
+ * @returns {function} - wrapped function
+ */
+function wrapIterator(iterator)
+{
+ var stream = this;
+
+ return function(item, key, cb)
+ {
+ var aborter
+ , wrappedCb = async(wrapIteratorCallback.call(stream, cb, key))
+ ;
+
+ stream.jobs[key] = wrappedCb;
+
+ // it's either shortcut (item, cb)
+ if (iterator.length == 2)
+ {
+ aborter = iterator(item, wrappedCb);
+ }
+ // or long format (item, key, cb)
+ else
+ {
+ aborter = iterator(item, key, wrappedCb);
+ }
+
+ return aborter;
+ };
+}
+
+/**
+ * Wraps provided callback function
+ * allowing to execute snitch function before
+ * real callback
+ *
+ * @this ReadableAsyncKit#
+ * @param {function} callback - function to wrap
+ * @returns {function} - wrapped function
+ */
+function wrapCallback(callback)
+{
+ var stream = this;
+
+ var wrapped = function(error, result)
+ {
+ return finisher.call(stream, error, result, callback);
+ };
+
+ return wrapped;
+}
+
+/**
+ * Wraps provided iterator callback function
+ * makes sure snitch only called once,
+ * but passes secondary calls to the original callback
+ *
+ * @this ReadableAsyncKit#
+ * @param {function} callback - callback to wrap
+ * @param {number|string} key - iteration key
+ * @returns {function} wrapped callback
+ */
+function wrapIteratorCallback(callback, key)
+{
+ var stream = this;
+
+ return function(error, output)
+ {
+ // don't repeat yourself
+ if (!(key in stream.jobs))
+ {
+ callback(error, output);
+ return;
+ }
+
+ // clean up jobs
+ delete stream.jobs[key];
+
+ return streamer.call(stream, error, {key: key, value: output}, callback);
+ };
+}
+
+/**
+ * Stream wrapper for iterator callback
+ *
+ * @this ReadableAsyncKit#
+ * @param {mixed} error - error response
+ * @param {mixed} output - iterator output
+ * @param {function} callback - callback that expects iterator results
+ */
+function streamer(error, output, callback)
+{
+ if (error && !this.error)
+ {
+ this.error = error;
+ this.pause();
+ this.emit('error', error);
+ // send back value only, as expected
+ callback(error, output && output.value);
+ return;
+ }
+
+ // stream stuff
+ this.push(output);
+
+ // back to original track
+ // send back value only, as expected
+ callback(error, output && output.value);
+}
+
+/**
+ * Stream wrapper for finishing callback
+ *
+ * @this ReadableAsyncKit#
+ * @param {mixed} error - error response
+ * @param {mixed} output - iterator output
+ * @param {function} callback - callback that expects final results
+ */
+function finisher(error, output, callback)
+{
+ // signal end of the stream
+ // only for successfully finished streams
+ if (!error)
+ {
+ this.push(null);
+ }
+
+ // back to original track
+ callback(error, output);
+}
diff --git a/node_modules/asynckit/lib/terminator.js b/node_modules/asynckit/lib/terminator.js
new file mode 100644
index 00000000..d6eb9921
--- /dev/null
+++ b/node_modules/asynckit/lib/terminator.js
@@ -0,0 +1,29 @@
+var abort = require('./abort.js')
+ , async = require('./async.js')
+ ;
+
+// API
+module.exports = terminator;
+
+/**
+ * Terminates jobs in the attached state context
+ *
+ * @this AsyncKitState#
+ * @param {function} callback - final callback to invoke after termination
+ */
+function terminator(callback)
+{
+ if (!Object.keys(this.jobs).length)
+ {
+ return;
+ }
+
+ // fast forward iteration index
+ this.index = this.size;
+
+ // abort jobs
+ abort(this);
+
+ // send back results we have so far
+ async(callback)(null, this.results);
+}
diff --git a/node_modules/asynckit/package.json b/node_modules/asynckit/package.json
new file mode 100644
index 00000000..51147d65
--- /dev/null
+++ b/node_modules/asynckit/package.json
@@ -0,0 +1,63 @@
+{
+ "name": "asynckit",
+ "version": "0.4.0",
+ "description": "Minimal async jobs utility library, with streams support",
+ "main": "index.js",
+ "scripts": {
+ "clean": "rimraf coverage",
+ "lint": "eslint *.js lib/*.js test/*.js",
+ "test": "istanbul cover --reporter=json tape -- 'test/test-*.js' | tap-spec",
+ "win-test": "tape test/test-*.js",
+ "browser": "browserify -t browserify-istanbul test/lib/browserify_adjustment.js test/test-*.js | obake --coverage | tap-spec",
+ "report": "istanbul report",
+ "size": "browserify index.js | size-table asynckit",
+ "debug": "tape test/test-*.js"
+ },
+ "pre-commit": [
+ "clean",
+ "lint",
+ "test",
+ "browser",
+ "report",
+ "size"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/alexindigo/asynckit.git"
+ },
+ "keywords": [
+ "async",
+ "jobs",
+ "parallel",
+ "serial",
+ "iterator",
+ "array",
+ "object",
+ "stream",
+ "destroy",
+ "terminate",
+ "abort"
+ ],
+ "author": "Alex Indigo ",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/alexindigo/asynckit/issues"
+ },
+ "homepage": "https://github.com/alexindigo/asynckit#readme",
+ "devDependencies": {
+ "browserify": "^13.0.0",
+ "browserify-istanbul": "^2.0.0",
+ "coveralls": "^2.11.9",
+ "eslint": "^2.9.0",
+ "istanbul": "^0.4.3",
+ "obake": "^0.1.2",
+ "phantomjs-prebuilt": "^2.1.7",
+ "pre-commit": "^1.1.3",
+ "reamde": "^1.1.0",
+ "rimraf": "^2.5.2",
+ "size-table": "^0.2.0",
+ "tap-spec": "^4.1.1",
+ "tape": "^4.5.1"
+ },
+ "dependencies": {}
+}
diff --git a/node_modules/asynckit/parallel.js b/node_modules/asynckit/parallel.js
new file mode 100644
index 00000000..3c50344d
--- /dev/null
+++ b/node_modules/asynckit/parallel.js
@@ -0,0 +1,43 @@
+var iterate = require('./lib/iterate.js')
+ , initState = require('./lib/state.js')
+ , terminator = require('./lib/terminator.js')
+ ;
+
+// Public API
+module.exports = parallel;
+
+/**
+ * Runs iterator over provided array elements in parallel
+ *
+ * @param {array|object} list - array or object (named list) to iterate over
+ * @param {function} iterator - iterator to run
+ * @param {function} callback - invoked when all elements processed
+ * @returns {function} - jobs terminator
+ */
+function parallel(list, iterator, callback)
+{
+ var state = initState(list);
+
+ while (state.index < (state['keyedList'] || list).length)
+ {
+ iterate(list, iterator, state, function(error, result)
+ {
+ if (error)
+ {
+ callback(error, result);
+ return;
+ }
+
+ // looks like it's the last one
+ if (Object.keys(state.jobs).length === 0)
+ {
+ callback(null, state.results);
+ return;
+ }
+ });
+
+ state.index++;
+ }
+
+ return terminator.bind(state, callback);
+}
diff --git a/node_modules/asynckit/serial.js b/node_modules/asynckit/serial.js
new file mode 100644
index 00000000..6cd949a6
--- /dev/null
+++ b/node_modules/asynckit/serial.js
@@ -0,0 +1,17 @@
+var serialOrdered = require('./serialOrdered.js');
+
+// Public API
+module.exports = serial;
+
+/**
+ * Runs iterator over provided array elements in series
+ *
+ * @param {array|object} list - array or object (named list) to iterate over
+ * @param {function} iterator - iterator to run
+ * @param {function} callback - invoked when all elements processed
+ * @returns {function} - jobs terminator
+ */
+function serial(list, iterator, callback)
+{
+ return serialOrdered(list, iterator, null, callback);
+}
diff --git a/node_modules/asynckit/serialOrdered.js b/node_modules/asynckit/serialOrdered.js
new file mode 100644
index 00000000..607eafea
--- /dev/null
+++ b/node_modules/asynckit/serialOrdered.js
@@ -0,0 +1,75 @@
+var iterate = require('./lib/iterate.js')
+ , initState = require('./lib/state.js')
+ , terminator = require('./lib/terminator.js')
+ ;
+
+// Public API
+module.exports = serialOrdered;
+// sorting helpers
+module.exports.ascending = ascending;
+module.exports.descending = descending;
+
+/**
+ * Runs iterator over provided sorted array elements in series
+ *
+ * @param {array|object} list - array or object (named list) to iterate over
+ * @param {function} iterator - iterator to run
+ * @param {function} sortMethod - custom sort function
+ * @param {function} callback - invoked when all elements processed
+ * @returns {function} - jobs terminator
+ */
+function serialOrdered(list, iterator, sortMethod, callback)
+{
+ var state = initState(list, sortMethod);
+
+ iterate(list, iterator, state, function iteratorHandler(error, result)
+ {
+ if (error)
+ {
+ callback(error, result);
+ return;
+ }
+
+ state.index++;
+
+ // are we there yet?
+ if (state.index < (state['keyedList'] || list).length)
+ {
+ iterate(list, iterator, state, iteratorHandler);
+ return;
+ }
+
+ // done here
+ callback(null, state.results);
+ });
+
+ return terminator.bind(state, callback);
+}
+
+/*
+ * -- Sort methods
+ */
+
+/**
+ * sort helper to sort array elements in ascending order
+ *
+ * @param {mixed} a - an item to compare
+ * @param {mixed} b - an item to compare
+ * @returns {number} - comparison result
+ */
+function ascending(a, b)
+{
+ return a < b ? -1 : a > b ? 1 : 0;
+}
+
+/**
+ * sort helper to sort array elements in descending order
+ *
+ * @param {mixed} a - an item to compare
+ * @param {mixed} b - an item to compare
+ * @returns {number} - comparison result
+ */
+function descending(a, b)
+{
+ return -1 * ascending(a, b);
+}
diff --git a/node_modules/asynckit/stream.js b/node_modules/asynckit/stream.js
new file mode 100644
index 00000000..d43465f9
--- /dev/null
+++ b/node_modules/asynckit/stream.js
@@ -0,0 +1,21 @@
+var inherits = require('util').inherits
+ , Readable = require('stream').Readable
+ , ReadableAsyncKit = require('./lib/readable_asynckit.js')
+ , ReadableParallel = require('./lib/readable_parallel.js')
+ , ReadableSerial = require('./lib/readable_serial.js')
+ , ReadableSerialOrdered = require('./lib/readable_serial_ordered.js')
+ ;
+
+// API
+module.exports =
+{
+ parallel : ReadableParallel,
+ serial : ReadableSerial,
+ serialOrdered : ReadableSerialOrdered,
+};
+
+inherits(ReadableAsyncKit, Readable);
+
+inherits(ReadableParallel, ReadableAsyncKit);
+inherits(ReadableSerial, ReadableAsyncKit);
+inherits(ReadableSerialOrdered, ReadableAsyncKit);
diff --git a/node_modules/axios/CHANGELOG.md b/node_modules/axios/CHANGELOG.md
new file mode 100644
index 00000000..c9db85b5
--- /dev/null
+++ b/node_modules/axios/CHANGELOG.md
@@ -0,0 +1,952 @@
+# Changelog
+
+## [1.7.2](https://github.com/axios/axios/compare/v1.7.1...v1.7.2) (2024-05-21)
+
+
+### Bug Fixes
+
+* **fetch:** enhance fetch API detection; ([#6413](https://github.com/axios/axios/issues/6413)) ([4f79aef](https://github.com/axios/axios/commit/4f79aef81b7c4644328365bfc33acf0a9ef595bc))
+
+### Contributors to this release
+
+- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+3/-3 (#6413 )")
+
+## [1.7.1](https://github.com/axios/axios/compare/v1.7.0...v1.7.1) (2024-05-20)
+
+
+### Bug Fixes
+
+* **fetch:** fixed ReferenceError issue when TextEncoder is not available in the environment; ([#6410](https://github.com/axios/axios/issues/6410)) ([733f15f](https://github.com/axios/axios/commit/733f15fe5bd2d67e1fadaee82e7913b70d45dc5e))
+
+### Contributors to this release
+
+- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+14/-9 (#6410 )")
+
+# [1.7.0](https://github.com/axios/axios/compare/v1.7.0-beta.2...v1.7.0) (2024-05-19)
+
+
+### Features
+
+* **adapter:** add fetch adapter; ([#6371](https://github.com/axios/axios/issues/6371)) ([a3ff99b](https://github.com/axios/axios/commit/a3ff99b59d8ec2ab5dd049e68c043617a4072e42))
+
+### Bug Fixes
+
+* **core/axios:** handle un-writable error stack ([#6362](https://github.com/axios/axios/issues/6362)) ([81e0455](https://github.com/axios/axios/commit/81e0455b7b57fbaf2be16a73ebe0e6591cc6d8f9))
+
+### Contributors to this release
+
+- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+1015/-127 (#6371 )")
+- [Jay](https://github.com/jasonsaayman "+30/-14 ()")
+- [Alexandre ABRIOUX](https://github.com/alexandre-abrioux "+56/-6 (#6362 )")
+
+# [1.7.0-beta.2](https://github.com/axios/axios/compare/v1.7.0-beta.1...v1.7.0-beta.2) (2024-05-19)
+
+
+### Bug Fixes
+
+* **fetch:** capitalize HTTP method names; ([#6395](https://github.com/axios/axios/issues/6395)) ([ad3174a](https://github.com/axios/axios/commit/ad3174a3515c3c2573f4bcb94818d582826f3914))
+* **fetch:** fix & optimize progress capturing for cases when the request data has a nullish value or zero data length ([#6400](https://github.com/axios/axios/issues/6400)) ([95a3e8e](https://github.com/axios/axios/commit/95a3e8e346cfd6a5548e171f2341df3235d0e26b))
+* **fetch:** fix headers getting from a stream response; ([#6401](https://github.com/axios/axios/issues/6401)) ([870e0a7](https://github.com/axios/axios/commit/870e0a76f60d0094774a6a63fa606eec52a381af))
+
+### Contributors to this release
+
+- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+99/-46 (#6405 #6404 #6401 #6400 #6395 )")
+
+# [1.7.0-beta.1](https://github.com/axios/axios/compare/v1.7.0-beta.0...v1.7.0-beta.1) (2024-05-07)
+
+
+### Bug Fixes
+
+* **core/axios:** handle un-writable error stack ([#6362](https://github.com/axios/axios/issues/6362)) ([81e0455](https://github.com/axios/axios/commit/81e0455b7b57fbaf2be16a73ebe0e6591cc6d8f9))
+* **fetch:** fix cases when ReadableStream or Response.body are not available; ([#6377](https://github.com/axios/axios/issues/6377)) ([d1d359d](https://github.com/axios/axios/commit/d1d359da347704e8b28d768e61515a3e96c5b072))
+* **fetch:** treat fetch-related TypeError as an AxiosError.ERR_NETWORK error; ([#6380](https://github.com/axios/axios/issues/6380)) ([bb5f9a5](https://github.com/axios/axios/commit/bb5f9a5ab768452de9e166dc28d0ffc234245ef1))
+
+### Contributors to this release
+
+- [Alexandre ABRIOUX](https://github.com/alexandre-abrioux "+56/-6 (#6362 )")
+- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+42/-17 (#6380 #6377 )")
+
+# [1.7.0-beta.0](https://github.com/axios/axios/compare/v1.6.8...v1.7.0-beta.0) (2024-04-28)
+
+
+### Features
+
+* **adapter:** add fetch adapter; ([#6371](https://github.com/axios/axios/issues/6371)) ([a3ff99b](https://github.com/axios/axios/commit/a3ff99b59d8ec2ab5dd049e68c043617a4072e42))
+
+### Contributors to this release
+
+- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+1015/-127 (#6371 )")
+- [Jay](https://github.com/jasonsaayman "+30/-14 ()")
+
+## [1.6.8](https://github.com/axios/axios/compare/v1.6.7...v1.6.8) (2024-03-15)
+
+
+### Bug Fixes
+
+* **AxiosHeaders:** fix AxiosHeaders conversion to an object during config merging ([#6243](https://github.com/axios/axios/issues/6243)) ([2656612](https://github.com/axios/axios/commit/2656612bc10fe2757e9832b708ed773ab340b5cb))
+* **import:** use named export for EventEmitter; ([7320430](https://github.com/axios/axios/commit/7320430aef2e1ba2b89488a0eaf42681165498b1))
+* **vulnerability:** update follow-redirects to 1.15.6 ([#6300](https://github.com/axios/axios/issues/6300)) ([8786e0f](https://github.com/axios/axios/commit/8786e0ff55a8c68d4ca989801ad26df924042e27))
+
+### Contributors to this release
+
+- [Jay](https://github.com/jasonsaayman "+4572/-3446 (#6238 )")
+- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+30/-0 (#6231 )")
+- [Mitchell](https://github.com/Creaous "+9/-9 (#6300 )")
+- [Emmanuel](https://github.com/mannoeu "+2/-2 (#6196 )")
+- [Lucas Keller](https://github.com/ljkeller "+3/-0 (#6194 )")
+- [Aditya Mogili](https://github.com/ADITYA-176 "+1/-1 ()")
+- [Miroslav Petrov](https://github.com/petrovmiroslav "+1/-1 (#6243 )")
+
+## [1.6.7](https://github.com/axios/axios/compare/v1.6.6...v1.6.7) (2024-01-25)
+
+
+### Bug Fixes
+
+* capture async stack only for rejections with native error objects; ([#6203](https://github.com/axios/axios/issues/6203)) ([1a08f90](https://github.com/axios/axios/commit/1a08f90f402336e4d00e9ee82f211c6adb1640b0))
+
+### Contributors to this release
+
+- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+30/-26 (#6203 )")
+- [zhoulixiang](https://github.com/zh-lx "+0/-3 (#6186 )")
+
+## [1.6.6](https://github.com/axios/axios/compare/v1.6.5...v1.6.6) (2024-01-24)
+
+
+### Bug Fixes
+
+* fixed missed dispatchBeforeRedirect argument ([#5778](https://github.com/axios/axios/issues/5778)) ([a1938ff](https://github.com/axios/axios/commit/a1938ff073fcb0f89011f001dfbc1fa1dc995e39))
+* wrap errors to improve async stack trace ([#5987](https://github.com/axios/axios/issues/5987)) ([123f354](https://github.com/axios/axios/commit/123f354b920f154a209ea99f76b7b2ef3d9ebbab))
+
+### Contributors to this release
+
+- [Ilya Priven](https://github.com/ikonst "+91/-8 (#5987 )")
+- [Zao Soula](https://github.com/zaosoula "+6/-6 (#5778 )")
+
+## [1.6.5](https://github.com/axios/axios/compare/v1.6.4...v1.6.5) (2024-01-05)
+
+
+### Bug Fixes
+
+* **ci:** refactor notify action as a job of publish action; ([#6176](https://github.com/axios/axios/issues/6176)) ([0736f95](https://github.com/axios/axios/commit/0736f95ce8776366dc9ca569f49ba505feb6373c))
+* **dns:** fixed lookup error handling; ([#6175](https://github.com/axios/axios/issues/6175)) ([f4f2b03](https://github.com/axios/axios/commit/f4f2b039dd38eb4829e8583caede4ed6d2dd59be))
+
+### Contributors to this release
+
+- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+41/-6 (#6176 #6175 )")
+- [Jay](https://github.com/jasonsaayman "+6/-1 ()")
+
+## [1.6.4](https://github.com/axios/axios/compare/v1.6.3...v1.6.4) (2024-01-03)
+
+
+### Bug Fixes
+
+* **security:** fixed formToJSON prototype pollution vulnerability; ([#6167](https://github.com/axios/axios/issues/6167)) ([3c0c11c](https://github.com/axios/axios/commit/3c0c11cade045c4412c242b5727308cff9897a0e))
+* **security:** fixed security vulnerability in follow-redirects ([#6163](https://github.com/axios/axios/issues/6163)) ([75af1cd](https://github.com/axios/axios/commit/75af1cdff5b3a6ca3766d3d3afbc3115bb0811b8))
+
+### Contributors to this release
+
+- [Jay](https://github.com/jasonsaayman "+34/-6 ()")
+- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+34/-3 (#6172 #6167 )")
+- [Guy Nesher](https://github.com/gnesher "+10/-10 (#6163 )")
+
+## [1.6.3](https://github.com/axios/axios/compare/v1.6.2...v1.6.3) (2023-12-26)
+
+
+### Bug Fixes
+
+* Regular Expression Denial of Service (ReDoS) ([#6132](https://github.com/axios/axios/issues/6132)) ([5e7ad38](https://github.com/axios/axios/commit/5e7ad38fb0f819fceb19fb2ee5d5d38f56aa837d))
+
+### Contributors to this release
+
+- [Jay](https://github.com/jasonsaayman "+15/-6 (#6145 )")
+- [Willian Agostini](https://github.com/WillianAgostini "+17/-2 (#6132 )")
+- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+3/-0 (#6084 )")
+
+## [1.6.2](https://github.com/axios/axios/compare/v1.6.1...v1.6.2) (2023-11-14)
+
+
+### Features
+
+* **withXSRFToken:** added withXSRFToken option as a workaround to achieve the old `withCredentials` behavior; ([#6046](https://github.com/axios/axios/issues/6046)) ([cff9967](https://github.com/axios/axios/commit/cff996779b272a5e94c2b52f5503ccf668bc42dc))
+
+### PRs
+- feat(withXSRFToken): added withXSRFToken option as a workaround to achieve the old `withCredentials` behavior; ( [#6046](https://api.github.com/repos/axios/axios/pulls/6046) )
+```
+
+📢 This PR added 'withXSRFToken' option as a replacement for old withCredentials behaviour.
+You should now use withXSRFToken along with withCredential to get the old behavior.
+This functionality is considered as a fix.
+```
+
+### Contributors to this release
+
+- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+271/-146 (#6081 #6080 #6079 #6078 #6046 #6064 #6063 )")
+- [Ng Choon Khon (CK)](https://github.com/ckng0221 "+4/-4 (#6073 )")
+- [Muhammad Noman](https://github.com/mnomanmemon "+2/-2 (#6048 )")
+
+## [1.6.1](https://github.com/axios/axios/compare/v1.6.0...v1.6.1) (2023-11-08)
+
+
+### Bug Fixes
+
+* **formdata:** fixed content-type header normalization for non-standard browser environments; ([#6056](https://github.com/axios/axios/issues/6056)) ([dd465ab](https://github.com/axios/axios/commit/dd465ab22bbfa262c6567be6574bf46a057d5288))
+* **platform:** fixed emulated browser detection in node.js environment; ([#6055](https://github.com/axios/axios/issues/6055)) ([3dc8369](https://github.com/axios/axios/commit/3dc8369e505e32a4e12c22f154c55fd63ac67fbb))
+
+### Contributors to this release
+
+- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+432/-65 (#6059 #6056 #6055 )")
+- [Fabian Meyer](https://github.com/meyfa "+5/-2 (#5835 )")
+
+### PRs
+- feat(withXSRFToken): added withXSRFToken option as a workaround to achieve the old `withCredentials` behavior; ( [#6046](https://api.github.com/repos/axios/axios/pulls/6046) )
+```
+
+📢 This PR added 'withXSRFToken' option as a replacement for old withCredentials behaviour.
+You should now use withXSRFToken along with withCredential to get the old behavior.
+This functionality is considered as a fix.
+```
+
+# [1.6.0](https://github.com/axios/axios/compare/v1.5.1...v1.6.0) (2023-10-26)
+
+
+### Bug Fixes
+
+* **CSRF:** fixed CSRF vulnerability CVE-2023-45857 ([#6028](https://github.com/axios/axios/issues/6028)) ([96ee232](https://github.com/axios/axios/commit/96ee232bd3ee4de2e657333d4d2191cd389e14d0))
+* **dns:** fixed lookup function decorator to work properly in node v20; ([#6011](https://github.com/axios/axios/issues/6011)) ([5aaff53](https://github.com/axios/axios/commit/5aaff532a6b820bb9ab6a8cd0f77131b47e2adb8))
+* **types:** fix AxiosHeaders types; ([#5931](https://github.com/axios/axios/issues/5931)) ([a1c8ad0](https://github.com/axios/axios/commit/a1c8ad008b3c13d53e135bbd0862587fb9d3fc09))
+
+### PRs
+- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) )
+```
+
+⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459
+```
+
+### Contributors to this release
+
+- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+449/-114 (#6032 #6021 #6011 #5932 #5931 )")
+- [Valentin Panov](https://github.com/valentin-panov "+4/-4 (#6028 )")
+- [Rinku Chaudhari](https://github.com/therealrinku "+1/-1 (#5889 )")
+
+## [1.5.1](https://github.com/axios/axios/compare/v1.5.0...v1.5.1) (2023-09-26)
+
+
+### Bug Fixes
+
+* **adapters:** improved adapters loading logic to have clear error messages; ([#5919](https://github.com/axios/axios/issues/5919)) ([e410779](https://github.com/axios/axios/commit/e4107797a7a1376f6209fbecfbbce73d3faa7859))
+* **formdata:** fixed automatic addition of the `Content-Type` header for FormData in non-browser environments; ([#5917](https://github.com/axios/axios/issues/5917)) ([bc9af51](https://github.com/axios/axios/commit/bc9af51b1886d1b3529617702f2a21a6c0ed5d92))
+* **headers:** allow `content-encoding` header to handle case-insensitive values ([#5890](https://github.com/axios/axios/issues/5890)) ([#5892](https://github.com/axios/axios/issues/5892)) ([4c89f25](https://github.com/axios/axios/commit/4c89f25196525e90a6e75eda9cb31ae0a2e18acd))
+* **types:** removed duplicated code ([9e62056](https://github.com/axios/axios/commit/9e6205630e1c9cf863adf141c0edb9e6d8d4b149))
+
+### Contributors to this release
+
+- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+89/-18 (#5919 #5917 )")
+- [David Dallas](https://github.com/DavidJDallas "+11/-5 ()")
+- [Sean Sattler](https://github.com/fb-sean "+2/-8 ()")
+- [Mustafa Ateş Uzun](https://github.com/0o001 "+4/-4 ()")
+- [Przemyslaw Motacki](https://github.com/sfc-gh-pmotacki "+2/-1 (#5892 )")
+- [Michael Di Prisco](https://github.com/Cadienvan "+1/-1 ()")
+
+### PRs
+- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) )
+```
+
+⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459
+```
+
+# [1.5.0](https://github.com/axios/axios/compare/v1.4.0...v1.5.0) (2023-08-26)
+
+
+### Bug Fixes
+
+* **adapter:** make adapter loading error more clear by using platform-specific adapters explicitly ([#5837](https://github.com/axios/axios/issues/5837)) ([9a414bb](https://github.com/axios/axios/commit/9a414bb6c81796a95c6c7fe668637825458e8b6d))
+* **dns:** fixed `cacheable-lookup` integration; ([#5836](https://github.com/axios/axios/issues/5836)) ([b3e327d](https://github.com/axios/axios/commit/b3e327dcc9277bdce34c7ef57beedf644b00d628))
+* **headers:** added support for setting header names that overlap with class methods; ([#5831](https://github.com/axios/axios/issues/5831)) ([d8b4ca0](https://github.com/axios/axios/commit/d8b4ca0ea5f2f05efa4edfe1e7684593f9f68273))
+* **headers:** fixed common Content-Type header merging; ([#5832](https://github.com/axios/axios/issues/5832)) ([8fda276](https://github.com/axios/axios/commit/8fda2766b1e6bcb72c3fabc146223083ef13ce17))
+
+
+### Features
+
+* export getAdapter function ([#5324](https://github.com/axios/axios/issues/5324)) ([ca73eb8](https://github.com/axios/axios/commit/ca73eb878df0ae2dace81fe3a7f1fb5986231bf1))
+* **export:** export adapters without `unsafe` prefix ([#5839](https://github.com/axios/axios/issues/5839)) ([1601f4a](https://github.com/axios/axios/commit/1601f4a27a81ab47fea228f1e244b2c4e3ce28bf))
+
+### Contributors to this release
+
+- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+66/-29 (#5839 #5837 #5836 #5832 #5831 )")
+- [夜葬](https://github.com/geekact "+42/-0 (#5324 )")
+- [Jonathan Budiman](https://github.com/JBudiman00 "+30/-0 (#5788 )")
+- [Michael Di Prisco](https://github.com/Cadienvan "+3/-5 (#5791 )")
+
+### PRs
+- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) )
+```
+
+⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459
+```
+
+# [1.4.0](https://github.com/axios/axios/compare/v1.3.6...v1.4.0) (2023-04-27)
+
+
+### Bug Fixes
+
+* **formdata:** add `multipart/form-data` content type for FormData payload on custom client environments; ([#5678](https://github.com/axios/axios/issues/5678)) ([bbb61e7](https://github.com/axios/axios/commit/bbb61e70cb1185adfb1cbbb86eaf6652c48d89d1))
+* **package:** export package internals with unsafe path prefix; ([#5677](https://github.com/axios/axios/issues/5677)) ([df38c94](https://github.com/axios/axios/commit/df38c949f26414d88ba29ec1e353c4d4f97eaf09))
+
+
+### Features
+
+* **dns:** added support for a custom lookup function; ([#5339](https://github.com/axios/axios/issues/5339)) ([2701911](https://github.com/axios/axios/commit/2701911260a1faa5cc5e1afe437121b330a3b7bb))
+* **types:** export `AxiosHeaderValue` type. ([#5525](https://github.com/axios/axios/issues/5525)) ([726f1c8](https://github.com/axios/axios/commit/726f1c8e00cffa0461a8813a9bdcb8f8b9d762cf))
+
+
+### Performance Improvements
+
+* **merge-config:** optimize mergeConfig performance by avoiding duplicate key visits; ([#5679](https://github.com/axios/axios/issues/5679)) ([e6f7053](https://github.com/axios/axios/commit/e6f7053bf1a3e87cf1f9da8677e12e3fe829d68e))
+
+### Contributors to this release
+
+- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+151/-16 (#5684 #5339 #5679 #5678 #5677 )")
+- [Arthur Fiorette](https://github.com/arthurfiorette "+19/-19 (#5525 )")
+- [PIYUSH NEGI](https://github.com/npiyush97 "+2/-18 (#5670 )")
+
+### PRs
+- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) )
+```
+
+⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459
+```
+
+## [1.3.6](https://github.com/axios/axios/compare/v1.3.5...v1.3.6) (2023-04-19)
+
+
+### Bug Fixes
+
+* **types:** added transport to RawAxiosRequestConfig ([#5445](https://github.com/axios/axios/issues/5445)) ([6f360a2](https://github.com/axios/axios/commit/6f360a2531d8d70363fd9becef6a45a323f170e2))
+* **utils:** make isFormData detection logic stricter to avoid unnecessary calling of the `toString` method on the target; ([#5661](https://github.com/axios/axios/issues/5661)) ([aa372f7](https://github.com/axios/axios/commit/aa372f7306295dfd1100c1c2c77ce95c95808e76))
+
+### Contributors to this release
+
+- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+48/-10 (#5665 #5661 #5663 )")
+- [Michael Di Prisco](https://github.com/Cadienvan "+2/-0 (#5445 )")
+
+### PRs
+- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) )
+```
+
+⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459
+```
+
+## [1.3.5](https://github.com/axios/axios/compare/v1.3.4...v1.3.5) (2023-04-05)
+
+
+### Bug Fixes
+
+* **headers:** fixed isValidHeaderName to support full list of allowed characters; ([#5584](https://github.com/axios/axios/issues/5584)) ([e7decef](https://github.com/axios/axios/commit/e7decef6a99f4627e27ed9ea5b00ce8e201c3841))
+* **params:** re-added the ability to set the function as `paramsSerializer` config; ([#5633](https://github.com/axios/axios/issues/5633)) ([a56c866](https://github.com/axios/axios/commit/a56c8661209d5ce5a645a05f294a0e08a6c1f6b3))
+
+### Contributors to this release
+
+- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+28/-10 (#5633 #5584 )")
+
+### PRs
+- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) )
+```
+
+⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459
+```
+
+## [1.3.4](https://github.com/axios/axios/compare/v1.3.3...v1.3.4) (2023-02-22)
+
+
+### Bug Fixes
+
+* **blob:** added a check to make sure the Blob class is available in the browser's global scope; ([#5548](https://github.com/axios/axios/issues/5548)) ([3772c8f](https://github.com/axios/axios/commit/3772c8fe74112a56e3e9551f894d899bc3a9443a))
+* **http:** fixed regression bug when handling synchronous errors inside the adapter; ([#5564](https://github.com/axios/axios/issues/5564)) ([a3b246c](https://github.com/axios/axios/commit/a3b246c9de5c3bc4b5a742e15add55b375479451))
+
+### Contributors to this release
+
+- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+38/-26 (#5564 )")
+- [lcysgsg](https://github.com/lcysgsg "+4/-0 (#5548 )")
+- [Michael Di Prisco](https://github.com/Cadienvan "+3/-0 (#5444 )")
+
+### PRs
+- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) )
+```
+
+⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459
+```
+
+## [1.3.3](https://github.com/axios/axios/compare/v1.3.2...v1.3.3) (2023-02-13)
+
+
+### Bug Fixes
+
+* **formdata:** added a check to make sure the FormData class is available in the browser's global scope; ([#5545](https://github.com/axios/axios/issues/5545)) ([a6dfa72](https://github.com/axios/axios/commit/a6dfa72010db5ad52db8bd13c0f98e537e8fd05d))
+* **formdata:** fixed setting NaN as Content-Length for form payload in some cases; ([#5535](https://github.com/axios/axios/issues/5535)) ([c19f7bf](https://github.com/axios/axios/commit/c19f7bf770f90ae8307f4ea3104f227056912da1))
+* **headers:** fixed the filtering logic of the clear method; ([#5542](https://github.com/axios/axios/issues/5542)) ([ea87ebf](https://github.com/axios/axios/commit/ea87ebfe6d1699af072b9e7cd40faf8f14b0ab93))
+
+### Contributors to this release
+
+- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+11/-7 (#5545 #5535 #5542 )")
+- [陈若枫](https://github.com/ruofee "+2/-2 (#5467 )")
+
+### PRs
+- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) )
+```
+
+⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459
+```
+
+## [1.3.2](https://github.com/axios/axios/compare/v1.3.1...v1.3.2) (2023-02-03)
+
+
+### Bug Fixes
+
+* **http:** treat http://localhost as base URL for relative paths to avoid `ERR_INVALID_URL` error; ([#5528](https://github.com/axios/axios/issues/5528)) ([128d56f](https://github.com/axios/axios/commit/128d56f4a0fb8f5f2ed6e0dd80bc9225fee9538c))
+* **http:** use explicit import instead of TextEncoder global; ([#5530](https://github.com/axios/axios/issues/5530)) ([6b3c305](https://github.com/axios/axios/commit/6b3c305fc40c56428e0afabedc6f4d29c2830f6f))
+
+### Contributors to this release
+
+- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+2/-1 (#5530 #5528 )")
+
+### PRs
+- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) )
+```
+
+⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459
+```
+
+## [1.3.1](https://github.com/axios/axios/compare/v1.3.0...v1.3.1) (2023-02-01)
+
+
+### Bug Fixes
+
+* **formdata:** add hotfix to use the asynchronous API to compute the content-length header value; ([#5521](https://github.com/axios/axios/issues/5521)) ([96d336f](https://github.com/axios/axios/commit/96d336f527619f21da012fe1f117eeb53e5a2120))
+* **serializer:** fixed serialization of array-like objects; ([#5518](https://github.com/axios/axios/issues/5518)) ([08104c0](https://github.com/axios/axios/commit/08104c028c0f9353897b1b6691d74c440fd0c32d))
+
+### Contributors to this release
+
+- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+27/-8 (#5521 #5518 )")
+
+### PRs
+- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) )
+```
+
+⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459
+```
+
+# [1.3.0](https://github.com/axios/axios/compare/v1.2.6...v1.3.0) (2023-01-31)
+
+
+### Bug Fixes
+
+* **headers:** fixed & optimized clear method; ([#5507](https://github.com/axios/axios/issues/5507)) ([9915635](https://github.com/axios/axios/commit/9915635c69d0ab70daca5738488421f67ca60959))
+* **http:** add zlib headers if missing ([#5497](https://github.com/axios/axios/issues/5497)) ([65e8d1e](https://github.com/axios/axios/commit/65e8d1e28ce829f47a837e45129730e541950d3c))
+
+
+### Features
+
+* **fomdata:** added support for spec-compliant FormData & Blob types; ([#5316](https://github.com/axios/axios/issues/5316)) ([6ac574e](https://github.com/axios/axios/commit/6ac574e00a06731288347acea1e8246091196953))
+
+### Contributors to this release
+
+- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+352/-67 (#5514 #5512 #5510 #5509 #5508 #5316 #5507 )")
+- [ItsNotGoodName](https://github.com/ItsNotGoodName "+43/-2 (#5497 )")
+
+### PRs
+- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) )
+```
+
+⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459
+```
+
+## [1.2.6](https://github.com/axios/axios/compare/v1.2.5...v1.2.6) (2023-01-28)
+
+
+### Bug Fixes
+
+* **headers:** added missed Authorization accessor; ([#5502](https://github.com/axios/axios/issues/5502)) ([342c0ba](https://github.com/axios/axios/commit/342c0ba9a16ea50f5ed7d2366c5c1a2c877e3f26))
+* **types:** fixed `CommonRequestHeadersList` & `CommonResponseHeadersList` types to be private in commonJS; ([#5503](https://github.com/axios/axios/issues/5503)) ([5a3d0a3](https://github.com/axios/axios/commit/5a3d0a3234d77361a1bc7cedee2da1e11df08e2c))
+
+### Contributors to this release
+
+-  [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+24/-9 (#5503 #5502 )")
+
+### PRs
+- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) )
+```
+
+⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459
+```
+
+## [1.2.5](https://github.com/axios/axios/compare/v1.2.4...v1.2.5) (2023-01-26)
+
+
+### Bug Fixes
+
+* **types:** fixed AxiosHeaders to handle spread syntax by making all methods non-enumerable; ([#5499](https://github.com/axios/axios/issues/5499)) ([580f1e8](https://github.com/axios/axios/commit/580f1e8033a61baa38149d59fd16019de3932c22))
+
+### Contributors to this release
+
+-  [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+82/-54 (#5499 )")
+-  [Elliot Ford](https://github.com/EFord36 "+1/-1 (#5462 )")
+
+### PRs
+- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) )
+```
+
+⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459
+```
+
+## [1.2.4](https://github.com/axios/axios/compare/v1.2.3...v1.2.4) (2023-01-22)
+
+
+### Bug Fixes
+
+* **types:** renamed `RawAxiosRequestConfig` back to `AxiosRequestConfig`; ([#5486](https://github.com/axios/axios/issues/5486)) ([2a71f49](https://github.com/axios/axios/commit/2a71f49bc6c68495fa419003a3107ed8bd703ad0))
+* **types:** fix `AxiosRequestConfig` generic; ([#5478](https://github.com/axios/axios/issues/5478)) ([9bce81b](https://github.com/axios/axios/commit/186ea062da8b7d578ae78b1a5c220986b9bce81b))
+
+### Contributors to this release
+
+-  [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+242/-108 (#5486 #5482 )")
+-  [Daniel Hillmann](https://github.com/hilleer "+1/-1 (#5478 )")
+
+### PRs
+- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) )
+```
+
+⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459
+```
+
+## [1.2.3](https://github.com/axios/axios/compare/1.2.2...1.2.3) (2023-01-10)
+
+
+### Bug Fixes
+
+* **types:** fixed AxiosRequestConfig header interface by refactoring it to RawAxiosRequestConfig; ([#5420](https://github.com/axios/axios/issues/5420)) ([0811963](https://github.com/axios/axios/commit/08119634a22f1d5b19f5c9ea0adccb6d3eebc3bc))
+
+### Contributors to this release
+
+-  [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+938/-442 (#5456 #5455 #5453 #5451 #5449 #5447 #5446 #5443 #5442 #5439 #5420 )")
+
+### PRs
+- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) )
+```
+
+⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459
+```
+
+## [1.2.2] - 2022-12-29
+
+### Fixed
+- fix(ci): fix release script inputs [#5392](https://github.com/axios/axios/pull/5392)
+- fix(ci): prerelease scipts [#5377](https://github.com/axios/axios/pull/5377)
+- fix(ci): release scripts [#5376](https://github.com/axios/axios/pull/5376)
+- fix(ci): typescript tests [#5375](https://github.com/axios/axios/pull/5375)
+- fix: Brotli decompression [#5353](https://github.com/axios/axios/pull/5353)
+- fix: add missing HttpStatusCode [#5345](https://github.com/axios/axios/pull/5345)
+
+### Chores
+- chore(ci): set conventional-changelog header config [#5406](https://github.com/axios/axios/pull/5406)
+- chore(ci): fix automatic contributors resolving [#5403](https://github.com/axios/axios/pull/5403)
+- chore(ci): improved logging for the contributors list generator [#5398](https://github.com/axios/axios/pull/5398)
+- chore(ci): fix release action [#5397](https://github.com/axios/axios/pull/5397)
+- chore(ci): fix version bump script by adding bump argument for target version [#5393](https://github.com/axios/axios/pull/5393)
+- chore(deps): bump decode-uri-component from 0.2.0 to 0.2.2 [#5342](https://github.com/axios/axios/pull/5342)
+- chore(ci): GitHub Actions Release script [#5384](https://github.com/axios/axios/pull/5384)
+- chore(ci): release scripts [#5364](https://github.com/axios/axios/pull/5364)
+
+### Contributors to this release
+-  [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS)
+-  [Winnie](https://github.com/winniehell)
+
+## [1.2.1] - 2022-12-05
+
+### Changed
+- feat(exports): export mergeConfig [#5151](https://github.com/axios/axios/pull/5151)
+
+### Fixed
+- fix(CancelledError): include config [#4922](https://github.com/axios/axios/pull/4922)
+- fix(general): removing multiple/trailing/leading whitespace [#5022](https://github.com/axios/axios/pull/5022)
+- fix(headers): decompression for responses without Content-Length header [#5306](https://github.com/axios/axios/pull/5306)
+- fix(webWorker): exception to sending form data in web worker [#5139](https://github.com/axios/axios/pull/5139)
+
+### Refactors
+- refactor(types): AxiosProgressEvent.event type to any [#5308](https://github.com/axios/axios/pull/5308)
+- refactor(types): add missing types for static AxiosError.from method [#4956](https://github.com/axios/axios/pull/4956)
+
+### Chores
+- chore(docs): remove README link to non-existent upgrade guide [#5307](https://github.com/axios/axios/pull/5307)
+- chore(docs): typo in issue template name [#5159](https://github.com/axios/axios/pull/5159)
+
+### Contributors to this release
+
+- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS)
+- [Zachary Lysobey](https://github.com/zachlysobey)
+- [Kevin Ennis](https://github.com/kevincennis)
+- [Philipp Loose](https://github.com/phloose)
+- [secondl1ght](https://github.com/secondl1ght)
+- [wenzheng](https://github.com/0x30)
+- [Ivan Barsukov](https://github.com/ovarn)
+- [Arthur Fiorette](https://github.com/arthurfiorette)
+
+### PRs
+- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) )
+```
+
+⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459
+```
+
+## [1.2.0] - 2022-11-10
+
+### Changed
+
+- changed: refactored module exports [#5162](https://github.com/axios/axios/pull/5162)
+- change: re-added support for loading Axios with require('axios').default [#5225](https://github.com/axios/axios/pull/5225)
+
+### Fixed
+
+- fix: improve AxiosHeaders class [#5224](https://github.com/axios/axios/pull/5224)
+- fix: TypeScript type definitions for commonjs [#5196](https://github.com/axios/axios/pull/5196)
+- fix: type definition of use method on AxiosInterceptorManager to match the the README [#5071](https://github.com/axios/axios/pull/5071)
+- fix: __dirname is not defined in the sandbox [#5269](https://github.com/axios/axios/pull/5269)
+- fix: AxiosError.toJSON method to avoid circular references [#5247](https://github.com/axios/axios/pull/5247)
+- fix: Z_BUF_ERROR when content-encoding is set but the response body is empty [#5250](https://github.com/axios/axios/pull/5250)
+
+### Refactors
+- refactor: allowing adapters to be loaded by name [#5277](https://github.com/axios/axios/pull/5277)
+
+### Chores
+
+- chore: force CI restart [#5243](https://github.com/axios/axios/pull/5243)
+- chore: update ECOSYSTEM.md [#5077](https://github.com/axios/axios/pull/5077)
+- chore: update get/index.html [#5116](https://github.com/axios/axios/pull/5116)
+- chore: update Sandbox UI/UX [#5205](https://github.com/axios/axios/pull/5205)
+- chore:(actions): remove git credentials after checkout [#5235](https://github.com/axios/axios/pull/5235)
+- chore(actions): bump actions/dependency-review-action from 2 to 3 [#5266](https://github.com/axios/axios/pull/5266)
+- chore(packages): bump loader-utils from 1.4.1 to 1.4.2 [#5295](https://github.com/axios/axios/pull/5295)
+- chore(packages): bump engine.io from 6.2.0 to 6.2.1 [#5294](https://github.com/axios/axios/pull/5294)
+- chore(packages): bump socket.io-parser from 4.0.4 to 4.0.5 [#5241](https://github.com/axios/axios/pull/5241)
+- chore(packages): bump loader-utils from 1.4.0 to 1.4.1 [#5245](https://github.com/axios/axios/pull/5245)
+- chore(docs): update Resources links in README [#5119](https://github.com/axios/axios/pull/5119)
+- chore(docs): update the link for JSON url [#5265](https://github.com/axios/axios/pull/5265)
+- chore(docs): fix broken links [#5218](https://github.com/axios/axios/pull/5218)
+- chore(docs): update and rename UPGRADE_GUIDE.md to MIGRATION_GUIDE.md [#5170](https://github.com/axios/axios/pull/5170)
+- chore(docs): typo fix line #856 and #920 [#5194](https://github.com/axios/axios/pull/5194)
+- chore(docs): typo fix #800 [#5193](https://github.com/axios/axios/pull/5193)
+- chore(docs): fix typos [#5184](https://github.com/axios/axios/pull/5184)
+- chore(docs): fix punctuation in README.md [#5197](https://github.com/axios/axios/pull/5197)
+- chore(docs): update readme in the Handling Errors section - issue reference #5260 [#5261](https://github.com/axios/axios/pull/5261)
+- chore: remove \b from filename [#5207](https://github.com/axios/axios/pull/5207)
+- chore(docs): update CHANGELOG.md [#5137](https://github.com/axios/axios/pull/5137)
+- chore: add sideEffects false to package.json [#5025](https://github.com/axios/axios/pull/5025)
+
+### Contributors to this release
+
+- [Maddy Miller](https://github.com/me4502)
+- [Amit Saini](https://github.com/amitsainii)
+- [ecyrbe](https://github.com/ecyrbe)
+- [Ikko Ashimine](https://github.com/eltociear)
+- [Geeth Gunnampalli](https://github.com/thetechie7)
+- [Shreem Asati](https://github.com/shreem-123)
+- [Frieder Bluemle](https://github.com/friederbluemle)
+- [윤세영](https://github.com/yunseyeong)
+- [Claudio Busatto](https://github.com/cjcbusatto)
+- [Remco Haszing](https://github.com/remcohaszing)
+- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS)
+- [Csaba Maulis](https://github.com/om4csaba)
+- [MoPaMo](https://github.com/MoPaMo)
+- [Daniel Fjeldstad](https://github.com/w3bdesign)
+- [Adrien Brunet](https://github.com/adrien-may)
+- [Frazer Smith](https://github.com/Fdawgs)
+- [HaiTao](https://github.com/836334258)
+- [AZM](https://github.com/aziyatali)
+- [relbns](https://github.com/relbns)
+
+### PRs
+- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) )
+```
+
+⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459
+```
+
+## [1.1.3] - 2022-10-15
+
+### Added
+
+- Added custom params serializer support [#5113](https://github.com/axios/axios/pull/5113)
+
+### Fixed
+
+- Fixed top-level export to keep them in-line with static properties [#5109](https://github.com/axios/axios/pull/5109)
+- Stopped including null values to query string. [#5108](https://github.com/axios/axios/pull/5108)
+- Restored proxy config backwards compatibility with 0.x [#5097](https://github.com/axios/axios/pull/5097)
+- Added back AxiosHeaders in AxiosHeaderValue [#5103](https://github.com/axios/axios/pull/5103)
+- Pin CDN install instructions to a specific version [#5060](https://github.com/axios/axios/pull/5060)
+- Handling of array values fixed for AxiosHeaders [#5085](https://github.com/axios/axios/pull/5085)
+
+### Chores
+
+- docs: match badge style, add link to them [#5046](https://github.com/axios/axios/pull/5046)
+- chore: fixing comments typo [#5054](https://github.com/axios/axios/pull/5054)
+- chore: update issue template [#5061](https://github.com/axios/axios/pull/5061)
+- chore: added progress capturing section to the docs; [#5084](https://github.com/axios/axios/pull/5084)
+
+### Contributors to this release
+
+- [Jason Saayman](https://github.com/jasonsaayman)
+- [scarf](https://github.com/scarf005)
+- [Lenz Weber-Tronic](https://github.com/phryneas)
+- [Arvindh](https://github.com/itsarvindh)
+- [Félix Legrelle](https://github.com/FelixLgr)
+- [Patrick Petrovic](https://github.com/ppati000)
+- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS)
+- [littledian](https://github.com/littledian)
+- [ChronosMasterOfAllTime](https://github.com/ChronosMasterOfAllTime)
+
+### PRs
+- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) )
+```
+
+⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459
+```
+
+## [1.1.2] - 2022-10-07
+
+### Fixed
+
+- Fixed broken exports for UMD builds.
+
+### Contributors to this release
+
+- [Jason Saayman](https://github.com/jasonsaayman)
+
+### PRs
+- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) )
+```
+
+⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459
+```
+
+## [1.1.1] - 2022-10-07
+
+### Fixed
+
+- Fixed broken exports for common js. This fix breaks a prior fix, I will fix both issues ASAP but the commonJS use is more impactful.
+
+### Contributors to this release
+
+- [Jason Saayman](https://github.com/jasonsaayman)
+
+### PRs
+- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) )
+```
+
+⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459
+```
+
+## [1.1.0] - 2022-10-06
+
+### Fixed
+
+- Fixed missing exports in type definition index.d.ts [#5003](https://github.com/axios/axios/pull/5003)
+- Fixed query params composing [#5018](https://github.com/axios/axios/pull/5018)
+- Fixed GenericAbortSignal interface by making it more generic [#5021](https://github.com/axios/axios/pull/5021)
+- Fixed adding "clear" to AxiosInterceptorManager [#5010](https://github.com/axios/axios/pull/5010)
+- Fixed commonjs & umd exports [#5030](https://github.com/axios/axios/pull/5030)
+- Fixed inability to access response headers when using axios 1.x with Jest [#5036](https://github.com/axios/axios/pull/5036)
+
+### Contributors to this release
+
+- [Trim21](https://github.com/trim21)
+- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS)
+- [shingo.sasaki](https://github.com/s-sasaki-0529)
+- [Ivan Pepelko](https://github.com/ivanpepelko)
+- [Richard Kořínek](https://github.com/risa)
+
+### PRs
+- CVE 2023 45857 ( [#6028](https://api.github.com/repos/axios/axios/pulls/6028) )
+```
+
+⚠️ Critical vulnerability fix. See https://security.snyk.io/vuln/SNYK-JS-AXIOS-6032459
+```
+
+## [1.0.0] - 2022-10-04
+
+### Added
+
+- Added stack trace to AxiosError [#4624](https://github.com/axios/axios/pull/4624)
+- Add AxiosError to AxiosStatic [#4654](https://github.com/axios/axios/pull/4654)
+- Replaced Rollup as our build runner [#4596](https://github.com/axios/axios/pull/4596)
+- Added generic TS types for the exposed toFormData helper [#4668](https://github.com/axios/axios/pull/4668)
+- Added listen callback function [#4096](https://github.com/axios/axios/pull/4096)
+- Added instructions for installing using PNPM [#4207](https://github.com/axios/axios/pull/4207)
+- Added generic AxiosAbortSignal TS interface to avoid importing AbortController polyfill [#4229](https://github.com/axios/axios/pull/4229)
+- Added axios-url-template in ECOSYSTEM.md [#4238](https://github.com/axios/axios/pull/4238)
+- Added a clear() function to the request and response interceptors object so a user can ensure that all interceptors have been removed from an axios instance [#4248](https://github.com/axios/axios/pull/4248)
+- Added react hook plugin [#4319](https://github.com/axios/axios/pull/4319)
+- Adding HTTP status code for transformResponse [#4580](https://github.com/axios/axios/pull/4580)
+- Added blob to the list of protocols supported by the browser [#4678](https://github.com/axios/axios/pull/4678)
+- Resolving proxy from env on redirect [#4436](https://github.com/axios/axios/pull/4436)
+- Added enhanced toFormData implementation with additional options [4704](https://github.com/axios/axios/pull/4704)
+- Adding Canceler parameters config and request [#4711](https://github.com/axios/axios/pull/4711)
+- Added automatic payload serialization to application/x-www-form-urlencoded [#4714](https://github.com/axios/axios/pull/4714)
+- Added the ability for webpack users to overwrite built-ins [#4715](https://github.com/axios/axios/pull/4715)
+- Added string[] to AxiosRequestHeaders type [#4322](https://github.com/axios/axios/pull/4322)
+- Added the ability for the url-encoded-form serializer to respect the formSerializer config [#4721](https://github.com/axios/axios/pull/4721)
+- Added isCancel type assert [#4293](https://github.com/axios/axios/pull/4293)
+- Added data URL support for node.js [#4725](https://github.com/axios/axios/pull/4725)
+- Adding types for progress event callbacks [#4675](https://github.com/axios/axios/pull/4675)
+- URL params serializer [#4734](https://github.com/axios/axios/pull/4734)
+- Added axios.formToJSON method [#4735](https://github.com/axios/axios/pull/4735)
+- Bower platform add data protocol [#4804](https://github.com/axios/axios/pull/4804)
+- Use WHATWG URL API instead of url.parse() [#4852](https://github.com/axios/axios/pull/4852)
+- Add ENUM containing Http Status Codes to typings [#4903](https://github.com/axios/axios/pull/4903)
+- Improve typing of timeout in index.d.ts [#4934](https://github.com/axios/axios/pull/4934)
+
+### Changed
+
+- Updated AxiosError.config to be optional in the type definition [#4665](https://github.com/axios/axios/pull/4665)
+- Updated README emphasizing the URLSearchParam built-in interface over other solutions [#4590](https://github.com/axios/axios/pull/4590)
+- Include request and config when creating a CanceledError instance [#4659](https://github.com/axios/axios/pull/4659)
+- Changed func-names eslint rule to as-needed [#4492](https://github.com/axios/axios/pull/4492)
+- Replacing deprecated substr() with slice() as substr() is deprecated [#4468](https://github.com/axios/axios/pull/4468)
+- Updating HTTP links in README.md to use HTTPS [#4387](https://github.com/axios/axios/pull/4387)
+- Updated to a better trim() polyfill [#4072](https://github.com/axios/axios/pull/4072)
+- Updated types to allow specifying partial default headers on instance create [#4185](https://github.com/axios/axios/pull/4185)
+- Expanded isAxiosError types [#4344](https://github.com/axios/axios/pull/4344)
+- Updated type definition for axios instance methods [#4224](https://github.com/axios/axios/pull/4224)
+- Updated eslint config [#4722](https://github.com/axios/axios/pull/4722)
+- Updated Docs [#4742](https://github.com/axios/axios/pull/4742)
+- Refactored Axios to use ES2017 [#4787](https://github.com/axios/axios/pull/4787)
+
+
+### Deprecated
+- There are multiple deprecations, refactors and fixes provided in this release. Please read through the full release notes to see how this may impact your project and use case.
+
+### Removed
+
+- Removed incorrect argument for NetworkError constructor [#4656](https://github.com/axios/axios/pull/4656)
+- Removed Webpack [#4596](https://github.com/axios/axios/pull/4596)
+- Removed function that transform arguments to array [#4544](https://github.com/axios/axios/pull/4544)
+
+### Fixed
+
+- Fixed grammar in README [#4649](https://github.com/axios/axios/pull/4649)
+- Fixed code error in README [#4599](https://github.com/axios/axios/pull/4599)
+- Optimized the code that checks cancellation [#4587](https://github.com/axios/axios/pull/4587)
+- Fix url pointing to defaults.js in README [#4532](https://github.com/axios/axios/pull/4532)
+- Use type alias instead of interface for AxiosPromise [#4505](https://github.com/axios/axios/pull/4505)
+- Fix some word spelling and lint style in code comments [#4500](https://github.com/axios/axios/pull/4500)
+- Edited readme with 3 updated browser icons of Chrome, FireFox and Safari [#4414](https://github.com/axios/axios/pull/4414)
+- Bump follow-redirects from 1.14.9 to 1.15.0 [#4673](https://github.com/axios/axios/pull/4673)
+- Fixing http tests to avoid hanging when assertions fail [#4435](https://github.com/axios/axios/pull/4435)
+- Fix TS definition for AxiosRequestTransformer [#4201](https://github.com/axios/axios/pull/4201)
+- Fix grammatical issues in README [#4232](https://github.com/axios/axios/pull/4232)
+- Fixing instance.defaults.headers type [#4557](https://github.com/axios/axios/pull/4557)
+- Fixed race condition on immediate requests cancellation [#4261](https://github.com/axios/axios/pull/4261)
+- Fixing Z_BUF_ERROR when no content [#4701](https://github.com/axios/axios/pull/4701)
+- Fixing proxy beforeRedirect regression [#4708](https://github.com/axios/axios/pull/4708)
+- Fixed AxiosError status code type [#4717](https://github.com/axios/axios/pull/4717)
+- Fixed AxiosError stack capturing [#4718](https://github.com/axios/axios/pull/4718)
+- Fixing AxiosRequestHeaders typings [#4334](https://github.com/axios/axios/pull/4334)
+- Fixed max body length defaults [#4731](https://github.com/axios/axios/pull/4731)
+- Fixed toFormData Blob issue on node>v17 [#4728](https://github.com/axios/axios/pull/4728)
+- Bump grunt from 1.5.2 to 1.5.3 [#4743](https://github.com/axios/axios/pull/4743)
+- Fixing content-type header repeated [#4745](https://github.com/axios/axios/pull/4745)
+- Fixed timeout error message for http [4738](https://github.com/axios/axios/pull/4738)
+- Request ignores false, 0 and empty string as body values [#4785](https://github.com/axios/axios/pull/4785)
+- Added back missing minified builds [#4805](https://github.com/axios/axios/pull/4805)
+- Fixed a type error [#4815](https://github.com/axios/axios/pull/4815)
+- Fixed a regression bug with unsubscribing from cancel token; [#4819](https://github.com/axios/axios/pull/4819)
+- Remove repeated compression algorithm [#4820](https://github.com/axios/axios/pull/4820)
+- The error of calling extend to pass parameters [#4857](https://github.com/axios/axios/pull/4857)
+- SerializerOptions.indexes allows boolean | null | undefined [#4862](https://github.com/axios/axios/pull/4862)
+- Require interceptors to return values [#4874](https://github.com/axios/axios/pull/4874)
+- Removed unused imports [#4949](https://github.com/axios/axios/pull/4949)
+- Allow null indexes on formSerializer and paramsSerializer [#4960](https://github.com/axios/axios/pull/4960)
+
+### Chores
+- Set permissions for GitHub actions [#4765](https://github.com/axios/axios/pull/4765)
+- Included githubactions in the dependabot config [#4770](https://github.com/axios/axios/pull/4770)
+- Included dependency review [#4771](https://github.com/axios/axios/pull/4771)
+- Update security.md [#4784](https://github.com/axios/axios/pull/4784)
+- Remove unnecessary spaces [#4854](https://github.com/axios/axios/pull/4854)
+- Simplify the import path of AxiosError [#4875](https://github.com/axios/axios/pull/4875)
+- Fix Gitpod dead link [#4941](https://github.com/axios/axios/pull/4941)
+- Enable syntax highlighting for a code block [#4970](https://github.com/axios/axios/pull/4970)
+- Using Logo Axios in Readme.md [#4993](https://github.com/axios/axios/pull/4993)
+- Fix markup for note in README [#4825](https://github.com/axios/axios/pull/4825)
+- Fix typo and formatting, add colons [#4853](https://github.com/axios/axios/pull/4853)
+- Fix typo in readme [#4942](https://github.com/axios/axios/pull/4942)
+
+### Security
+
+- Update SECURITY.md [#4687](https://github.com/axios/axios/pull/4687)
+
+### Contributors to this release
+
+- [Bertrand Marron](https://github.com/tusbar)
+- [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS)
+- [Dan Mooney](https://github.com/danmooney)
+- [Michael Li](https://github.com/xiaoyu-tamu)
+- [aong](https://github.com/yxwzaxns)
+- [Des Preston](https://github.com/despreston)
+- [Ted Robertson](https://github.com/tredondo)
+- [zhoulixiang](https://github.com/zh-lx)
+- [Arthur Fiorette](https://github.com/arthurfiorette)
+- [Kumar Shanu](https://github.com/Kr-Shanu)
+- [JALAL](https://github.com/JLL32)
+- [Jingyi Lin](https://github.com/MageeLin)
+- [Philipp Loose](https://github.com/phloose)
+- [Alexander Shchukin](https://github.com/sashsvamir)
+- [Dave Cardwell](https://github.com/davecardwell)
+- [Cat Scarlet](https://github.com/catscarlet)
+- [Luca Pizzini](https://github.com/lpizzinidev)
+- [Kai](https://github.com/Schweinepriester)
+- [Maxime Bargiel](https://github.com/mbargiel)
+- [Brian Helba](https://github.com/brianhelba)
+- [reslear](https://github.com/reslear)
+- [Jamie Slome](https://github.com/JamieSlome)
+- [Landro3](https://github.com/Landro3)
+- [rafw87](https://github.com/rafw87)
+- [Afzal Sayed](https://github.com/afzalsayed96)
+- [Koki Oyatsu](https://github.com/kaishuu0123)
+- [Dave](https://github.com/wangcch)
+- [暴走老七](https://github.com/baozouai)
+- [Spencer](https://github.com/spalger)
+- [Adrian Wieprzkowicz](https://github.com/Argeento)
+- [Jamie Telin](https://github.com/lejahmie)
+- [毛呆](https://github.com/aweikalee)
+- [Kirill Shakirov](https://github.com/turisap)
+- [Rraji Abdelbari](https://github.com/estarossa0)
+- [Jelle Schutter](https://github.com/jelleschutter)
+- [Tom Ceuppens](https://github.com/KyorCode)
+- [Johann Cooper](https://github.com/JohannCooper)
+- [Dimitris Halatsis](https://github.com/mitsos1os)
+- [chenjigeng](https://github.com/chenjigeng)
+- [João Gabriel Quaresma](https://github.com/joaoGabriel55)
+- [Victor Augusto](https://github.com/VictorAugDB)
+- [neilnaveen](https://github.com/neilnaveen)
+- [Pavlos](https://github.com/psmoros)
+- [Kiryl Valkovich](https://github.com/visortelle)
+- [Naveen](https://github.com/naveensrinivasan)
+- [wenzheng](https://github.com/0x30)
+- [hcwhan](https://github.com/hcwhan)
+- [Bassel Rachid](https://github.com/basselworkforce)
+- [Grégoire Pineau](https://github.com/lyrixx)
+- [felipedamin](https://github.com/felipedamin)
+- [Karl Horky](https://github.com/karlhorky)
+- [Yue JIN](https://github.com/kingyue737)
+- [Usman Ali Siddiqui](https://github.com/usman250994)
+- [WD](https://github.com/techbirds)
+- [Günther Foidl](https://github.com/gfoidl)
+- [Stephen Jennings](https://github.com/jennings)
+- [C.T.Lin](https://github.com/chentsulin)
+- [mia-z](https://github.com/mia-z)
+- [Parth Banathia](https://github.com/Parth0105)
+- [parth0105pluang](https://github.com/parth0105pluang)
+- [Marco Weber](https://github.com/mrcwbr)
+- [Luca Pizzini](https://github.com/lpizzinidev)
+- [Willian Agostini](https://github.com/WillianAgostini)
+- [Huyen Nguyen](https://github.com/huyenltnguyen)
\ No newline at end of file
diff --git a/node_modules/axios/LICENSE b/node_modules/axios/LICENSE
new file mode 100644
index 00000000..05006a51
--- /dev/null
+++ b/node_modules/axios/LICENSE
@@ -0,0 +1,7 @@
+# Copyright (c) 2014-present Matt Zabriskie & Collaborators
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/axios/MIGRATION_GUIDE.md b/node_modules/axios/MIGRATION_GUIDE.md
new file mode 100644
index 00000000..ec3ae0da
--- /dev/null
+++ b/node_modules/axios/MIGRATION_GUIDE.md
@@ -0,0 +1,3 @@
+# Migration Guide
+
+## 0.x.x -> 1.1.0
diff --git a/node_modules/axios/README.md b/node_modules/axios/README.md
new file mode 100644
index 00000000..71381cb2
--- /dev/null
+++ b/node_modules/axios/README.md
@@ -0,0 +1,1695 @@
+
+ Platinum sponsors
+
+
+
+
+
+
+
+
+
+
+
+
+
Alloy is the integration development platform that makes it simple and fast for SaaS companies to launch critical user-facing integrations.
+
+ Sign up free •
+ Documentation
+
+
+
+
+
+ Gold sponsors
+
+
+
+
+
+
+
+
+
+
+
+Promise based HTTP client for the browser and node.js
+
+
+ Website •
+ Documentation
+
+
+
+
+[](https://www.npmjs.org/package/axios)
+[](https://cdnjs.com/libraries/axios)
+[](https://github.com/axios/axios/actions/workflows/ci.yml)
+[](https://gitpod.io/#https://github.com/axios/axios)
+[](https://coveralls.io/r/mzabriskie/axios)
+[](https://packagephobia.now.sh/result?p=axios)
+[](https://bundlephobia.com/package/axios@latest)
+[](https://npm-stat.com/charts.html?package=axios)
+[](https://gitter.im/mzabriskie/axios)
+[](https://www.codetriage.com/axios/axios)
+[](https://snyk.io/test/npm/axios)
+
+
+
+
+
+
+## Table of Contents
+
+ - [Features](#features)
+ - [Browser Support](#browser-support)
+ - [Installing](#installing)
+ - [Package manager](#package-manager)
+ - [CDN](#cdn)
+ - [Example](#example)
+ - [Axios API](#axios-api)
+ - [Request method aliases](#request-method-aliases)
+ - [Concurrency 👎](#concurrency-deprecated)
+ - [Creating an instance](#creating-an-instance)
+ - [Instance methods](#instance-methods)
+ - [Request Config](#request-config)
+ - [Response Schema](#response-schema)
+ - [Config Defaults](#config-defaults)
+ - [Global axios defaults](#global-axios-defaults)
+ - [Custom instance defaults](#custom-instance-defaults)
+ - [Config order of precedence](#config-order-of-precedence)
+ - [Interceptors](#interceptors)
+ - [Multiple Interceptors](#multiple-interceptors)
+ - [Handling Errors](#handling-errors)
+ - [Cancellation](#cancellation)
+ - [AbortController](#abortcontroller)
+ - [CancelToken 👎](#canceltoken-deprecated)
+ - [Using application/x-www-form-urlencoded format](#using-applicationx-www-form-urlencoded-format)
+ - [URLSearchParams](#urlsearchparams)
+ - [Query string](#query-string-older-browsers)
+ - [🆕 Automatic serialization](#-automatic-serialization-to-urlsearchparams)
+ - [Using multipart/form-data format](#using-multipartform-data-format)
+ - [FormData](#formdata)
+ - [🆕 Automatic serialization](#-automatic-serialization-to-formdata)
+ - [Files Posting](#files-posting)
+ - [HTML Form Posting](#-html-form-posting-browser)
+ - [🆕 Progress capturing](#-progress-capturing)
+ - [🆕 Rate limiting](#-progress-capturing)
+ - [🆕 AxiosHeaders](#-axiosheaders)
+ - [🔥 Fetch adapter](#-fetch-adapter)
+ - [Semver](#semver)
+ - [Promises](#promises)
+ - [TypeScript](#typescript)
+ - [Resources](#resources)
+ - [Credits](#credits)
+ - [License](#license)
+
+## Features
+
+- Make [XMLHttpRequests](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest) from the browser
+- Make [http](https://nodejs.org/api/http.html) requests from node.js
+- Supports the [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) API
+- Intercept request and response
+- Transform request and response data
+- Cancel requests
+- Automatic transforms for [JSON](https://www.json.org/json-en.html) data
+- 🆕 Automatic data object serialization to `multipart/form-data` and `x-www-form-urlencoded` body encodings
+- Client side support for protecting against [XSRF](https://en.wikipedia.org/wiki/Cross-site_request_forgery)
+
+## Browser Support
+
+ |  |  |  |  |  |
+--- | --- | --- | --- | --- | --- |
+Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ | 11 ✔ |
+
+[](https://saucelabs.com/u/axios)
+
+## Installing
+
+### Package manager
+
+Using npm:
+
+```bash
+$ npm install axios
+```
+
+Using bower:
+
+```bash
+$ bower install axios
+```
+
+Using yarn:
+
+```bash
+$ yarn add axios
+```
+
+Using pnpm:
+
+```bash
+$ pnpm add axios
+```
+
+Once the package is installed, you can import the library using `import` or `require` approach:
+
+```js
+import axios, {isCancel, AxiosError} from 'axios';
+```
+
+You can also use the default export, since the named export is just a re-export from the Axios factory:
+
+```js
+import axios from 'axios';
+
+console.log(axios.isCancel('something'));
+````
+
+If you use `require` for importing, **only default export is available**:
+
+```js
+const axios = require('axios');
+
+console.log(axios.isCancel('something'));
+```
+
+For cases where something went wrong when trying to import a module into a custom or legacy environment,
+you can try importing the module package directly:
+
+```js
+const axios = require('axios/dist/browser/axios.cjs'); // browser commonJS bundle (ES2017)
+// const axios = require('axios/dist/node/axios.cjs'); // node commonJS bundle (ES2017)
+```
+
+### CDN
+
+Using jsDelivr CDN (ES5 UMD browser module):
+
+```html
+
+```
+
+Using unpkg CDN:
+
+```html
+
+```
+
+## Example
+
+> **Note**: CommonJS usage
+> In order to gain the TypeScript typings (for intellisense / autocomplete) while using CommonJS imports with `require()`, use the following approach:
+
+```js
+import axios from 'axios';
+//const axios = require('axios'); // legacy way
+
+// Make a request for a user with a given ID
+axios.get('/user?ID=12345')
+ .then(function (response) {
+ // handle success
+ console.log(response);
+ })
+ .catch(function (error) {
+ // handle error
+ console.log(error);
+ })
+ .finally(function () {
+ // always executed
+ });
+
+// Optionally the request above could also be done as
+axios.get('/user', {
+ params: {
+ ID: 12345
+ }
+ })
+ .then(function (response) {
+ console.log(response);
+ })
+ .catch(function (error) {
+ console.log(error);
+ })
+ .finally(function () {
+ // always executed
+ });
+
+// Want to use async/await? Add the `async` keyword to your outer function/method.
+async function getUser() {
+ try {
+ const response = await axios.get('/user?ID=12345');
+ console.log(response);
+ } catch (error) {
+ console.error(error);
+ }
+}
+```
+
+> **Note**: `async/await` is part of ECMAScript 2017 and is not supported in Internet
+> Explorer and older browsers, so use with caution.
+
+Performing a `POST` request
+
+```js
+axios.post('/user', {
+ firstName: 'Fred',
+ lastName: 'Flintstone'
+ })
+ .then(function (response) {
+ console.log(response);
+ })
+ .catch(function (error) {
+ console.log(error);
+ });
+```
+
+Performing multiple concurrent requests
+
+```js
+function getUserAccount() {
+ return axios.get('/user/12345');
+}
+
+function getUserPermissions() {
+ return axios.get('/user/12345/permissions');
+}
+
+Promise.all([getUserAccount(), getUserPermissions()])
+ .then(function (results) {
+ const acct = results[0];
+ const perm = results[1];
+ });
+```
+
+## axios API
+
+Requests can be made by passing the relevant config to `axios`.
+
+##### axios(config)
+
+```js
+// Send a POST request
+axios({
+ method: 'post',
+ url: '/user/12345',
+ data: {
+ firstName: 'Fred',
+ lastName: 'Flintstone'
+ }
+});
+```
+
+```js
+// GET request for remote image in node.js
+axios({
+ method: 'get',
+ url: 'https://bit.ly/2mTM3nY',
+ responseType: 'stream'
+})
+ .then(function (response) {
+ response.data.pipe(fs.createWriteStream('ada_lovelace.jpg'))
+ });
+```
+
+##### axios(url[, config])
+
+```js
+// Send a GET request (default method)
+axios('/user/12345');
+```
+
+### Request method aliases
+
+For convenience, aliases have been provided for all common request methods.
+
+##### axios.request(config)
+##### axios.get(url[, config])
+##### axios.delete(url[, config])
+##### axios.head(url[, config])
+##### axios.options(url[, config])
+##### axios.post(url[, data[, config]])
+##### axios.put(url[, data[, config]])
+##### axios.patch(url[, data[, config]])
+
+###### NOTE
+When using the alias methods `url`, `method`, and `data` properties don't need to be specified in config.
+
+### Concurrency (Deprecated)
+Please use `Promise.all` to replace the below functions.
+
+Helper functions for dealing with concurrent requests.
+
+axios.all(iterable)
+axios.spread(callback)
+
+### Creating an instance
+
+You can create a new instance of axios with a custom config.
+
+##### axios.create([config])
+
+```js
+const instance = axios.create({
+ baseURL: 'https://some-domain.com/api/',
+ timeout: 1000,
+ headers: {'X-Custom-Header': 'foobar'}
+});
+```
+
+### Instance methods
+
+The available instance methods are listed below. The specified config will be merged with the instance config.
+
+##### axios#request(config)
+##### axios#get(url[, config])
+##### axios#delete(url[, config])
+##### axios#head(url[, config])
+##### axios#options(url[, config])
+##### axios#post(url[, data[, config]])
+##### axios#put(url[, data[, config]])
+##### axios#patch(url[, data[, config]])
+##### axios#getUri([config])
+
+## Request Config
+
+These are the available config options for making requests. Only the `url` is required. Requests will default to `GET` if `method` is not specified.
+
+```js
+{
+ // `url` is the server URL that will be used for the request
+ url: '/user',
+
+ // `method` is the request method to be used when making the request
+ method: 'get', // default
+
+ // `baseURL` will be prepended to `url` unless `url` is absolute.
+ // It can be convenient to set `baseURL` for an instance of axios to pass relative URLs
+ // to methods of that instance.
+ baseURL: 'https://some-domain.com/api/',
+
+ // `transformRequest` allows changes to the request data before it is sent to the server
+ // This is only applicable for request methods 'PUT', 'POST', 'PATCH' and 'DELETE'
+ // The last function in the array must return a string or an instance of Buffer, ArrayBuffer,
+ // FormData or Stream
+ // You may modify the headers object.
+ transformRequest: [function (data, headers) {
+ // Do whatever you want to transform the data
+
+ return data;
+ }],
+
+ // `transformResponse` allows changes to the response data to be made before
+ // it is passed to then/catch
+ transformResponse: [function (data) {
+ // Do whatever you want to transform the data
+
+ return data;
+ }],
+
+ // `headers` are custom headers to be sent
+ headers: {'X-Requested-With': 'XMLHttpRequest'},
+
+ // `params` are the URL parameters to be sent with the request
+ // Must be a plain object or a URLSearchParams object
+ params: {
+ ID: 12345
+ },
+
+ // `paramsSerializer` is an optional config that allows you to customize serializing `params`.
+ paramsSerializer: {
+
+ //Custom encoder function which sends key/value pairs in an iterative fashion.
+ encode?: (param: string): string => { /* Do custom operations here and return transformed string */ },
+
+ // Custom serializer function for the entire parameter. Allows user to mimic pre 1.x behaviour.
+ serialize?: (params: Record, options?: ParamsSerializerOptions ),
+
+ //Configuration for formatting array indexes in the params.
+ indexes: false // Three available options: (1) indexes: null (leads to no brackets), (2) (default) indexes: false (leads to empty brackets), (3) indexes: true (leads to brackets with indexes).
+ },
+
+ // `data` is the data to be sent as the request body
+ // Only applicable for request methods 'PUT', 'POST', 'DELETE , and 'PATCH'
+ // When no `transformRequest` is set, must be of one of the following types:
+ // - string, plain object, ArrayBuffer, ArrayBufferView, URLSearchParams
+ // - Browser only: FormData, File, Blob
+ // - Node only: Stream, Buffer, FormData (form-data package)
+ data: {
+ firstName: 'Fred'
+ },
+
+ // syntax alternative to send data into the body
+ // method post
+ // only the value is sent, not the key
+ data: 'Country=Brasil&City=Belo Horizonte',
+
+ // `timeout` specifies the number of milliseconds before the request times out.
+ // If the request takes longer than `timeout`, the request will be aborted.
+ timeout: 1000, // default is `0` (no timeout)
+
+ // `withCredentials` indicates whether or not cross-site Access-Control requests
+ // should be made using credentials
+ withCredentials: false, // default
+
+ // `adapter` allows custom handling of requests which makes testing easier.
+ // Return a promise and supply a valid response (see lib/adapters/README.md)
+ adapter: function (config) {
+ /* ... */
+ },
+ // Also, you can set the name of the built-in adapter, or provide an array with their names
+ // to choose the first available in the environment
+ adapter: 'xhr' // 'fetch' | 'http' | ['xhr', 'http', 'fetch']
+
+ // `auth` indicates that HTTP Basic auth should be used, and supplies credentials.
+ // This will set an `Authorization` header, overwriting any existing
+ // `Authorization` custom headers you have set using `headers`.
+ // Please note that only HTTP Basic auth is configurable through this parameter.
+ // For Bearer tokens and such, use `Authorization` custom headers instead.
+ auth: {
+ username: 'janedoe',
+ password: 's00pers3cret'
+ },
+
+ // `responseType` indicates the type of data that the server will respond with
+ // options are: 'arraybuffer', 'document', 'json', 'text', 'stream'
+ // browser only: 'blob'
+ responseType: 'json', // default
+
+ // `responseEncoding` indicates encoding to use for decoding responses (Node.js only)
+ // Note: Ignored for `responseType` of 'stream' or client-side requests
+ // options are: 'ascii', 'ASCII', 'ansi', 'ANSI', 'binary', 'BINARY', 'base64', 'BASE64', 'base64url',
+ // 'BASE64URL', 'hex', 'HEX', 'latin1', 'LATIN1', 'ucs-2', 'UCS-2', 'ucs2', 'UCS2', 'utf-8', 'UTF-8',
+ // 'utf8', 'UTF8', 'utf16le', 'UTF16LE'
+ responseEncoding: 'utf8', // default
+
+ // `xsrfCookieName` is the name of the cookie to use as a value for xsrf token
+ xsrfCookieName: 'XSRF-TOKEN', // default
+
+ // `xsrfHeaderName` is the name of the http header that carries the xsrf token value
+ xsrfHeaderName: 'X-XSRF-TOKEN', // default
+
+ // `undefined` (default) - set XSRF header only for the same origin requests
+ withXSRFToken: boolean | undefined | ((config: InternalAxiosRequestConfig) => boolean | undefined),
+
+ // `onUploadProgress` allows handling of progress events for uploads
+ // browser & node.js
+ onUploadProgress: function ({loaded, total, progress, bytes, estimated, rate, upload = true}) {
+ // Do whatever you want with the Axios progress event
+ },
+
+ // `onDownloadProgress` allows handling of progress events for downloads
+ // browser & node.js
+ onDownloadProgress: function ({loaded, total, progress, bytes, estimated, rate, download = true}) {
+ // Do whatever you want with the Axios progress event
+ },
+
+ // `maxContentLength` defines the max size of the http response content in bytes allowed in node.js
+ maxContentLength: 2000,
+
+ // `maxBodyLength` (Node only option) defines the max size of the http request content in bytes allowed
+ maxBodyLength: 2000,
+
+ // `validateStatus` defines whether to resolve or reject the promise for a given
+ // HTTP response status code. If `validateStatus` returns `true` (or is set to `null`
+ // or `undefined`), the promise will be resolved; otherwise, the promise will be
+ // rejected.
+ validateStatus: function (status) {
+ return status >= 200 && status < 300; // default
+ },
+
+ // `maxRedirects` defines the maximum number of redirects to follow in node.js.
+ // If set to 0, no redirects will be followed.
+ maxRedirects: 21, // default
+
+ // `beforeRedirect` defines a function that will be called before redirect.
+ // Use this to adjust the request options upon redirecting,
+ // to inspect the latest response headers,
+ // or to cancel the request by throwing an error
+ // If maxRedirects is set to 0, `beforeRedirect` is not used.
+ beforeRedirect: (options, { headers }) => {
+ if (options.hostname === "example.com") {
+ options.auth = "user:password";
+ }
+ },
+
+ // `socketPath` defines a UNIX Socket to be used in node.js.
+ // e.g. '/var/run/docker.sock' to send requests to the docker daemon.
+ // Only either `socketPath` or `proxy` can be specified.
+ // If both are specified, `socketPath` is used.
+ socketPath: null, // default
+
+ // `transport` determines the transport method that will be used to make the request. If defined, it will be used. Otherwise, if `maxRedirects` is 0, the default `http` or `https` library will be used, depending on the protocol specified in `protocol`. Otherwise, the `httpFollow` or `httpsFollow` library will be used, again depending on the protocol, which can handle redirects.
+ transport: undefined, // default
+
+ // `httpAgent` and `httpsAgent` define a custom agent to be used when performing http
+ // and https requests, respectively, in node.js. This allows options to be added like
+ // `keepAlive` that are not enabled by default.
+ httpAgent: new http.Agent({ keepAlive: true }),
+ httpsAgent: new https.Agent({ keepAlive: true }),
+
+ // `proxy` defines the hostname, port, and protocol of the proxy server.
+ // You can also define your proxy using the conventional `http_proxy` and
+ // `https_proxy` environment variables. If you are using environment variables
+ // for your proxy configuration, you can also define a `no_proxy` environment
+ // variable as a comma-separated list of domains that should not be proxied.
+ // Use `false` to disable proxies, ignoring environment variables.
+ // `auth` indicates that HTTP Basic auth should be used to connect to the proxy, and
+ // supplies credentials.
+ // This will set an `Proxy-Authorization` header, overwriting any existing
+ // `Proxy-Authorization` custom headers you have set using `headers`.
+ // If the proxy server uses HTTPS, then you must set the protocol to `https`.
+ proxy: {
+ protocol: 'https',
+ host: '127.0.0.1',
+ // hostname: '127.0.0.1' // Takes precedence over 'host' if both are defined
+ port: 9000,
+ auth: {
+ username: 'mikeymike',
+ password: 'rapunz3l'
+ }
+ },
+
+ // `cancelToken` specifies a cancel token that can be used to cancel the request
+ // (see Cancellation section below for details)
+ cancelToken: new CancelToken(function (cancel) {
+ }),
+
+ // an alternative way to cancel Axios requests using AbortController
+ signal: new AbortController().signal,
+
+ // `decompress` indicates whether or not the response body should be decompressed
+ // automatically. If set to `true` will also remove the 'content-encoding' header
+ // from the responses objects of all decompressed responses
+ // - Node only (XHR cannot turn off decompression)
+ decompress: true, // default
+
+ // `insecureHTTPParser` boolean.
+ // Indicates where to use an insecure HTTP parser that accepts invalid HTTP headers.
+ // This may allow interoperability with non-conformant HTTP implementations.
+ // Using the insecure parser should be avoided.
+ // see options https://nodejs.org/dist/latest-v12.x/docs/api/http.html#http_http_request_url_options_callback
+ // see also https://nodejs.org/en/blog/vulnerability/february-2020-security-releases/#strict-http-header-parsing-none
+ insecureHTTPParser: undefined, // default
+
+ // transitional options for backward compatibility that may be removed in the newer versions
+ transitional: {
+ // silent JSON parsing mode
+ // `true` - ignore JSON parsing errors and set response.data to null if parsing failed (old behaviour)
+ // `false` - throw SyntaxError if JSON parsing failed (Note: responseType must be set to 'json')
+ silentJSONParsing: true, // default value for the current Axios version
+
+ // try to parse the response string as JSON even if `responseType` is not 'json'
+ forcedJSONParsing: true,
+
+ // throw ETIMEDOUT error instead of generic ECONNABORTED on request timeouts
+ clarifyTimeoutError: false,
+ },
+
+ env: {
+ // The FormData class to be used to automatically serialize the payload into a FormData object
+ FormData: window?.FormData || global?.FormData
+ },
+
+ formSerializer: {
+ visitor: (value, key, path, helpers) => {}; // custom visitor function to serialize form values
+ dots: boolean; // use dots instead of brackets format
+ metaTokens: boolean; // keep special endings like {} in parameter key
+ indexes: boolean; // array indexes format null - no brackets, false - empty brackets, true - brackets with indexes
+ },
+
+ // http adapter only (node.js)
+ maxRate: [
+ 100 * 1024, // 100KB/s upload limit,
+ 100 * 1024 // 100KB/s download limit
+ ]
+}
+```
+
+## Response Schema
+
+The response for a request contains the following information.
+
+```js
+{
+ // `data` is the response that was provided by the server
+ data: {},
+
+ // `status` is the HTTP status code from the server response
+ status: 200,
+
+ // `statusText` is the HTTP status message from the server response
+ statusText: 'OK',
+
+ // `headers` the HTTP headers that the server responded with
+ // All header names are lowercase and can be accessed using the bracket notation.
+ // Example: `response.headers['content-type']`
+ headers: {},
+
+ // `config` is the config that was provided to `axios` for the request
+ config: {},
+
+ // `request` is the request that generated this response
+ // It is the last ClientRequest instance in node.js (in redirects)
+ // and an XMLHttpRequest instance in the browser
+ request: {}
+}
+```
+
+When using `then`, you will receive the response as follows:
+
+```js
+axios.get('/user/12345')
+ .then(function (response) {
+ console.log(response.data);
+ console.log(response.status);
+ console.log(response.statusText);
+ console.log(response.headers);
+ console.log(response.config);
+ });
+```
+
+When using `catch`, or passing a [rejection callback](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then) as second parameter of `then`, the response will be available through the `error` object as explained in the [Handling Errors](#handling-errors) section.
+
+## Config Defaults
+
+You can specify config defaults that will be applied to every request.
+
+### Global axios defaults
+
+```js
+axios.defaults.baseURL = 'https://api.example.com';
+
+// Important: If axios is used with multiple domains, the AUTH_TOKEN will be sent to all of them.
+// See below for an example using Custom instance defaults instead.
+axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
+
+axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
+```
+
+### Custom instance defaults
+
+```js
+// Set config defaults when creating the instance
+const instance = axios.create({
+ baseURL: 'https://api.example.com'
+});
+
+// Alter defaults after instance has been created
+instance.defaults.headers.common['Authorization'] = AUTH_TOKEN;
+```
+
+### Config order of precedence
+
+Config will be merged with an order of precedence. The order is library defaults found in [lib/defaults.js](https://github.com/axios/axios/blob/master/lib/defaults/index.js#L28), then `defaults` property of the instance, and finally `config` argument for the request. The latter will take precedence over the former. Here's an example.
+
+```js
+// Create an instance using the config defaults provided by the library
+// At this point the timeout config value is `0` as is the default for the library
+const instance = axios.create();
+
+// Override timeout default for the library
+// Now all requests using this instance will wait 2.5 seconds before timing out
+instance.defaults.timeout = 2500;
+
+// Override timeout for this request as it's known to take a long time
+instance.get('/longRequest', {
+ timeout: 5000
+});
+```
+
+## Interceptors
+
+You can intercept requests or responses before they are handled by `then` or `catch`.
+
+```js
+// Add a request interceptor
+axios.interceptors.request.use(function (config) {
+ // Do something before request is sent
+ return config;
+ }, function (error) {
+ // Do something with request error
+ return Promise.reject(error);
+ });
+
+// Add a response interceptor
+axios.interceptors.response.use(function (response) {
+ // Any status code that lie within the range of 2xx cause this function to trigger
+ // Do something with response data
+ return response;
+ }, function (error) {
+ // Any status codes that falls outside the range of 2xx cause this function to trigger
+ // Do something with response error
+ return Promise.reject(error);
+ });
+```
+
+If you need to remove an interceptor later you can.
+
+```js
+const myInterceptor = axios.interceptors.request.use(function () {/*...*/});
+axios.interceptors.request.eject(myInterceptor);
+```
+
+You can also clear all interceptors for requests or responses.
+```js
+const instance = axios.create();
+instance.interceptors.request.use(function () {/*...*/});
+instance.interceptors.request.clear(); // Removes interceptors from requests
+instance.interceptors.response.use(function () {/*...*/});
+instance.interceptors.response.clear(); // Removes interceptors from responses
+```
+
+You can add interceptors to a custom instance of axios.
+
+```js
+const instance = axios.create();
+instance.interceptors.request.use(function () {/*...*/});
+```
+
+When you add request interceptors, they are presumed to be asynchronous by default. This can cause a delay
+in the execution of your axios request when the main thread is blocked (a promise is created under the hood for
+the interceptor and your request gets put on the bottom of the call stack). If your request interceptors are synchronous you can add a flag
+to the options object that will tell axios to run the code synchronously and avoid any delays in request execution.
+
+```js
+axios.interceptors.request.use(function (config) {
+ config.headers.test = 'I am only a header!';
+ return config;
+}, null, { synchronous: true });
+```
+
+If you want to execute a particular interceptor based on a runtime check,
+you can add a `runWhen` function to the options object. The interceptor will not be executed **if and only if** the return
+of `runWhen` is `false`. The function will be called with the config
+object (don't forget that you can bind your own arguments to it as well.) This can be handy when you have an
+asynchronous request interceptor that only needs to run at certain times.
+
+```js
+function onGetCall(config) {
+ return config.method === 'get';
+}
+axios.interceptors.request.use(function (config) {
+ config.headers.test = 'special get headers';
+ return config;
+}, null, { runWhen: onGetCall });
+```
+
+### Multiple Interceptors
+
+Given you add multiple response interceptors
+and when the response was fulfilled
+- then each interceptor is executed
+- then they are executed in the order they were added
+- then only the last interceptor's result is returned
+- then every interceptor receives the result of its predecessor
+- and when the fulfillment-interceptor throws
+ - then the following fulfillment-interceptor is not called
+ - then the following rejection-interceptor is called
+ - once caught, another following fulfill-interceptor is called again (just like in a promise chain).
+
+Read [the interceptor tests](./test/specs/interceptors.spec.js) for seeing all this in code.
+
+## Error Types
+
+There are many different axios error messages that can appear that can provide basic information about the specifics of the error and where opportunities may lie in debugging.
+
+The general structure of axios errors is as follows:
+| Property | Definition |
+| -------- | ---------- |
+| message | A quick summary of the error message and the status it failed with. |
+| name | This defines where the error originated from. For axios, it will always be an 'AxiosError'. |
+| stack | Provides the stack trace of the error. |
+| config | An axios config object with specific instance configurations defined by the user from when the request was made |
+| code | Represents an axios identified error. The table below lists out specific definitions for internal axios error. |
+| status | HTTP response status code. See [here](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes) for common HTTP response status code meanings.
+
+Below is a list of potential axios identified error
+| Code | Definition |
+| -------- | ---------- |
+| ERR_BAD_OPTION_VALUE | Invalid or unsupported value provided in axios configuration. |
+| ERR_BAD_OPTION | Invalid option provided in axios configuration. |
+| ECONNABORTED | Request timed out due to exceeding timeout specified in axios configuration. |
+| ETIMEDOUT | Request timed out due to exceeding default axios timelimit. |
+| ERR_NETWORK | Network-related issue.
+| ERR_FR_TOO_MANY_REDIRECTS | Request is redirected too many times; exceeds max redirects specified in axios configuration.
+| ERR_DEPRECATED | Deprecated feature or method used in axios.
+| ERR_BAD_RESPONSE | Response cannot be parsed properly or is in an unexpected format.
+| ERR_BAD_REQUEST | Requested has unexpected format or missing required parameters. |
+| ERR_CANCELED | Feature or method is canceled explicitly by the user.
+| ERR_NOT_SUPPORT | Feature or method not supported in the current axios environment.
+| ERR_INVALID_URL | Invalid URL provided for axios request.
+
+## Handling Errors
+
+the default behavior is to reject every response that returns with a status code that falls out of the range of 2xx and treat it as an error.
+
+```js
+axios.get('/user/12345')
+ .catch(function (error) {
+ if (error.response) {
+ // The request was made and the server responded with a status code
+ // that falls out of the range of 2xx
+ console.log(error.response.data);
+ console.log(error.response.status);
+ console.log(error.response.headers);
+ } else if (error.request) {
+ // The request was made but no response was received
+ // `error.request` is an instance of XMLHttpRequest in the browser and an instance of
+ // http.ClientRequest in node.js
+ console.log(error.request);
+ } else {
+ // Something happened in setting up the request that triggered an Error
+ console.log('Error', error.message);
+ }
+ console.log(error.config);
+ });
+```
+
+Using the `validateStatus` config option, you can override the default condition (status >= 200 && status < 300) and define HTTP code(s) that should throw an error.
+
+```js
+axios.get('/user/12345', {
+ validateStatus: function (status) {
+ return status < 500; // Resolve only if the status code is less than 500
+ }
+})
+```
+
+Using `toJSON` you get an object with more information about the HTTP error.
+
+```js
+axios.get('/user/12345')
+ .catch(function (error) {
+ console.log(error.toJSON());
+ });
+```
+
+## Cancellation
+
+### AbortController
+
+Starting from `v0.22.0` Axios supports AbortController to cancel requests in fetch API way:
+
+```js
+const controller = new AbortController();
+
+axios.get('/foo/bar', {
+ signal: controller.signal
+}).then(function(response) {
+ //...
+});
+// cancel the request
+controller.abort()
+```
+
+### CancelToken `👎deprecated`
+
+You can also cancel a request using a *CancelToken*.
+
+> The axios cancel token API is based on the withdrawn [cancellable promises proposal](https://github.com/tc39/proposal-cancelable-promises).
+
+> This API is deprecated since v0.22.0 and shouldn't be used in new projects
+
+You can create a cancel token using the `CancelToken.source` factory as shown below:
+
+```js
+const CancelToken = axios.CancelToken;
+const source = CancelToken.source();
+
+axios.get('/user/12345', {
+ cancelToken: source.token
+}).catch(function (thrown) {
+ if (axios.isCancel(thrown)) {
+ console.log('Request canceled', thrown.message);
+ } else {
+ // handle error
+ }
+});
+
+axios.post('/user/12345', {
+ name: 'new name'
+}, {
+ cancelToken: source.token
+})
+
+// cancel the request (the message parameter is optional)
+source.cancel('Operation canceled by the user.');
+```
+
+You can also create a cancel token by passing an executor function to the `CancelToken` constructor:
+
+```js
+const CancelToken = axios.CancelToken;
+let cancel;
+
+axios.get('/user/12345', {
+ cancelToken: new CancelToken(function executor(c) {
+ // An executor function receives a cancel function as a parameter
+ cancel = c;
+ })
+});
+
+// cancel the request
+cancel();
+```
+
+> **Note:** you can cancel several requests with the same cancel token/abort controller.
+> If a cancellation token is already cancelled at the moment of starting an Axios request, then the request is cancelled immediately, without any attempts to make a real request.
+
+> During the transition period, you can use both cancellation APIs, even for the same request:
+
+## Using `application/x-www-form-urlencoded` format
+
+### URLSearchParams
+
+By default, axios serializes JavaScript objects to `JSON`. To send data in the [`application/x-www-form-urlencoded` format](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST) instead, you can use the [`URLSearchParams`](https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams) API, which is [supported](http://www.caniuse.com/#feat=urlsearchparams) in the vast majority of browsers,and [ Node](https://nodejs.org/api/url.html#url_class_urlsearchparams) starting with v10 (released in 2018).
+
+```js
+const params = new URLSearchParams({ foo: 'bar' });
+params.append('extraparam', 'value');
+axios.post('/foo', params);
+```
+
+### Query string (Older browsers)
+
+For compatibility with very old browsers, there is a [polyfill](https://github.com/WebReflection/url-search-params) available (make sure to polyfill the global environment).
+
+Alternatively, you can encode data using the [`qs`](https://github.com/ljharb/qs) library:
+
+```js
+const qs = require('qs');
+axios.post('/foo', qs.stringify({ 'bar': 123 }));
+```
+
+Or in another way (ES6),
+
+```js
+import qs from 'qs';
+const data = { 'bar': 123 };
+const options = {
+ method: 'POST',
+ headers: { 'content-type': 'application/x-www-form-urlencoded' },
+ data: qs.stringify(data),
+ url,
+};
+axios(options);
+```
+
+### Older Node.js versions
+
+For older Node.js engines, you can use the [`querystring`](https://nodejs.org/api/querystring.html) module as follows:
+
+```js
+const querystring = require('querystring');
+axios.post('https://something.com/', querystring.stringify({ foo: 'bar' }));
+```
+
+You can also use the [`qs`](https://github.com/ljharb/qs) library.
+
+> **Note**: The `qs` library is preferable if you need to stringify nested objects, as the `querystring` method has [known issues](https://github.com/nodejs/node-v0.x-archive/issues/1665) with that use case.
+
+### 🆕 Automatic serialization to URLSearchParams
+
+Axios will automatically serialize the data object to urlencoded format if the content-type header is set to "application/x-www-form-urlencoded".
+
+```js
+const data = {
+ x: 1,
+ arr: [1, 2, 3],
+ arr2: [1, [2], 3],
+ users: [{name: 'Peter', surname: 'Griffin'}, {name: 'Thomas', surname: 'Anderson'}],
+};
+
+await axios.postForm('https://postman-echo.com/post', data,
+ {headers: {'content-type': 'application/x-www-form-urlencoded'}}
+);
+```
+
+The server will handle it as:
+
+```js
+ {
+ x: '1',
+ 'arr[]': [ '1', '2', '3' ],
+ 'arr2[0]': '1',
+ 'arr2[1][0]': '2',
+ 'arr2[2]': '3',
+ 'arr3[]': [ '1', '2', '3' ],
+ 'users[0][name]': 'Peter',
+ 'users[0][surname]': 'griffin',
+ 'users[1][name]': 'Thomas',
+ 'users[1][surname]': 'Anderson'
+ }
+````
+
+If your backend body-parser (like `body-parser` of `express.js`) supports nested objects decoding, you will get the same object on the server-side automatically
+
+```js
+ var app = express();
+
+ app.use(bodyParser.urlencoded({ extended: true })); // support encoded bodies
+
+ app.post('/', function (req, res, next) {
+ // echo body as JSON
+ res.send(JSON.stringify(req.body));
+ });
+
+ server = app.listen(3000);
+```
+
+## Using `multipart/form-data` format
+
+### FormData
+
+To send the data as a `multipart/formdata` you need to pass a formData instance as a payload.
+Setting the `Content-Type` header is not required as Axios guesses it based on the payload type.
+
+```js
+const formData = new FormData();
+formData.append('foo', 'bar');
+
+axios.post('https://httpbin.org/post', formData);
+```
+
+In node.js, you can use the [`form-data`](https://github.com/form-data/form-data) library as follows:
+
+```js
+const FormData = require('form-data');
+
+const form = new FormData();
+form.append('my_field', 'my value');
+form.append('my_buffer', new Buffer(10));
+form.append('my_file', fs.createReadStream('/foo/bar.jpg'));
+
+axios.post('https://example.com', form)
+```
+
+### 🆕 Automatic serialization to FormData
+
+Starting from `v0.27.0`, Axios supports automatic object serialization to a FormData object if the request `Content-Type`
+header is set to `multipart/form-data`.
+
+The following request will submit the data in a FormData format (Browser & Node.js):
+
+```js
+import axios from 'axios';
+
+axios.post('https://httpbin.org/post', {x: 1}, {
+ headers: {
+ 'Content-Type': 'multipart/form-data'
+ }
+}).then(({data}) => console.log(data));
+```
+
+In the `node.js` build, the ([`form-data`](https://github.com/form-data/form-data)) polyfill is used by default.
+
+You can overload the FormData class by setting the `env.FormData` config variable,
+but you probably won't need it in most cases:
+
+```js
+const axios = require('axios');
+var FormData = require('form-data');
+
+axios.post('https://httpbin.org/post', {x: 1, buf: new Buffer(10)}, {
+ headers: {
+ 'Content-Type': 'multipart/form-data'
+ }
+}).then(({data}) => console.log(data));
+```
+
+Axios FormData serializer supports some special endings to perform the following operations:
+
+- `{}` - serialize the value with JSON.stringify
+- `[]` - unwrap the array-like object as separate fields with the same key
+
+> **Note**: unwrap/expand operation will be used by default on arrays and FileList objects
+
+FormData serializer supports additional options via `config.formSerializer: object` property to handle rare cases:
+
+- `visitor: Function` - user-defined visitor function that will be called recursively to serialize the data object
+to a `FormData` object by following custom rules.
+
+- `dots: boolean = false` - use dot notation instead of brackets to serialize arrays and objects;
+
+- `metaTokens: boolean = true` - add the special ending (e.g `user{}: '{"name": "John"}'`) in the FormData key.
+The back-end body-parser could potentially use this meta-information to automatically parse the value as JSON.
+
+- `indexes: null|false|true = false` - controls how indexes will be added to unwrapped keys of `flat` array-like objects
+
+ - `null` - don't add brackets (`arr: 1`, `arr: 2`, `arr: 3`)
+ - `false`(default) - add empty brackets (`arr[]: 1`, `arr[]: 2`, `arr[]: 3`)
+ - `true` - add brackets with indexes (`arr[0]: 1`, `arr[1]: 2`, `arr[2]: 3`)
+
+Let's say we have an object like this one:
+
+```js
+const obj = {
+ x: 1,
+ arr: [1, 2, 3],
+ arr2: [1, [2], 3],
+ users: [{name: 'Peter', surname: 'Griffin'}, {name: 'Thomas', surname: 'Anderson'}],
+ 'obj2{}': [{x:1}]
+};
+```
+
+The following steps will be executed by the Axios serializer internally:
+
+```js
+const formData = new FormData();
+formData.append('x', '1');
+formData.append('arr[]', '1');
+formData.append('arr[]', '2');
+formData.append('arr[]', '3');
+formData.append('arr2[0]', '1');
+formData.append('arr2[1][0]', '2');
+formData.append('arr2[2]', '3');
+formData.append('users[0][name]', 'Peter');
+formData.append('users[0][surname]', 'Griffin');
+formData.append('users[1][name]', 'Thomas');
+formData.append('users[1][surname]', 'Anderson');
+formData.append('obj2{}', '[{"x":1}]');
+```
+
+Axios supports the following shortcut methods: `postForm`, `putForm`, `patchForm`
+which are just the corresponding http methods with the `Content-Type` header preset to `multipart/form-data`.
+
+## Files Posting
+
+You can easily submit a single file:
+
+```js
+await axios.postForm('https://httpbin.org/post', {
+ 'myVar' : 'foo',
+ 'file': document.querySelector('#fileInput').files[0]
+});
+```
+
+or multiple files as `multipart/form-data`:
+
+```js
+await axios.postForm('https://httpbin.org/post', {
+ 'files[]': document.querySelector('#fileInput').files
+});
+```
+
+`FileList` object can be passed directly:
+
+```js
+await axios.postForm('https://httpbin.org/post', document.querySelector('#fileInput').files)
+```
+
+All files will be sent with the same field names: `files[]`.
+
+## 🆕 HTML Form Posting (browser)
+
+Pass HTML Form element as a payload to submit it as `multipart/form-data` content.
+
+```js
+await axios.postForm('https://httpbin.org/post', document.querySelector('#htmlForm'));
+```
+
+`FormData` and `HTMLForm` objects can also be posted as `JSON` by explicitly setting the `Content-Type` header to `application/json`:
+
+```js
+await axios.post('https://httpbin.org/post', document.querySelector('#htmlForm'), {
+ headers: {
+ 'Content-Type': 'application/json'
+ }
+})
+```
+
+For example, the Form
+
+```html
+
+```
+
+will be submitted as the following JSON object:
+
+```js
+{
+ "foo": "1",
+ "deep": {
+ "prop": {
+ "spaced": "3"
+ }
+ },
+ "baz": [
+ "4",
+ "5"
+ ],
+ "user": {
+ "age": "value2"
+ }
+}
+````
+
+Sending `Blobs`/`Files` as JSON (`base64`) is not currently supported.
+
+## 🆕 Progress capturing
+
+Axios supports both browser and node environments to capture request upload/download progress.
+The frequency of progress events is forced to be limited to `3` times per second.
+
+```js
+await axios.post(url, data, {
+ onUploadProgress: function (axiosProgressEvent) {
+ /*{
+ loaded: number;
+ total?: number;
+ progress?: number; // in range [0..1]
+ bytes: number; // how many bytes have been transferred since the last trigger (delta)
+ estimated?: number; // estimated time in seconds
+ rate?: number; // upload speed in bytes
+ upload: true; // upload sign
+ }*/
+ },
+
+ onDownloadProgress: function (axiosProgressEvent) {
+ /*{
+ loaded: number;
+ total?: number;
+ progress?: number;
+ bytes: number;
+ estimated?: number;
+ rate?: number; // download speed in bytes
+ download: true; // download sign
+ }*/
+ }
+});
+```
+
+You can also track stream upload/download progress in node.js:
+
+```js
+const {data} = await axios.post(SERVER_URL, readableStream, {
+ onUploadProgress: ({progress}) => {
+ console.log((progress * 100).toFixed(2));
+ },
+
+ headers: {
+ 'Content-Length': contentLength
+ },
+
+ maxRedirects: 0 // avoid buffering the entire stream
+});
+````
+
+> **Note:**
+> Capturing FormData upload progress is not currently supported in node.js environments.
+
+> **⚠️ Warning**
+> It is recommended to disable redirects by setting maxRedirects: 0 to upload the stream in the **node.js** environment,
+> as follow-redirects package will buffer the entire stream in RAM without following the "backpressure" algorithm.
+
+
+## 🆕 Rate limiting
+
+Download and upload rate limits can only be set for the http adapter (node.js):
+
+```js
+const {data} = await axios.post(LOCAL_SERVER_URL, myBuffer, {
+ onUploadProgress: ({progress, rate}) => {
+ console.log(`Upload [${(progress*100).toFixed(2)}%]: ${(rate / 1024).toFixed(2)}KB/s`)
+ },
+
+ maxRate: [100 * 1024], // 100KB/s limit
+});
+```
+
+## 🆕 AxiosHeaders
+
+Axios has its own `AxiosHeaders` class to manipulate headers using a Map-like API that guarantees caseless work.
+Although HTTP is case-insensitive in headers, Axios will retain the case of the original header for stylistic reasons
+and for a workaround when servers mistakenly consider the header's case.
+The old approach of directly manipulating headers object is still available, but deprecated and not recommended for future usage.
+
+### Working with headers
+
+An AxiosHeaders object instance can contain different types of internal values. that control setting and merging logic.
+The final headers object with string values is obtained by Axios by calling the `toJSON` method.
+
+> Note: By JSON here we mean an object consisting only of string values intended to be sent over the network.
+
+The header value can be one of the following types:
+- `string` - normal string value that will be sent to the server
+- `null` - skip header when rendering to JSON
+- `false` - skip header when rendering to JSON, additionally indicates that `set` method must be called with `rewrite` option set to `true`
+ to overwrite this value (Axios uses this internally to allow users to opt out of installing certain headers like `User-Agent` or `Content-Type`)
+- `undefined` - value is not set
+
+> Note: The header value is considered set if it is not equal to undefined.
+
+The headers object is always initialized inside interceptors and transformers:
+
+```ts
+ axios.interceptors.request.use((request: InternalAxiosRequestConfig) => {
+ request.headers.set('My-header', 'value');
+
+ request.headers.set({
+ "My-set-header1": "my-set-value1",
+ "My-set-header2": "my-set-value2"
+ });
+
+ request.headers.set('User-Agent', false); // disable subsequent setting the header by Axios
+
+ request.headers.setContentType('text/plain');
+
+ request.headers['My-set-header2'] = 'newValue' // direct access is deprecated
+
+ return request;
+ }
+ );
+````
+
+You can iterate over an `AxiosHeaders` instance using a `for...of` statement:
+
+````js
+const headers = new AxiosHeaders({
+ foo: '1',
+ bar: '2',
+ baz: '3'
+});
+
+for(const [header, value] of headers) {
+ console.log(header, value);
+}
+
+// foo 1
+// bar 2
+// baz 3
+````
+
+### new AxiosHeaders(headers?)
+
+Constructs a new `AxiosHeaders` instance.
+
+```
+constructor(headers?: RawAxiosHeaders | AxiosHeaders | string);
+```
+
+If the headers object is a string, it will be parsed as RAW HTTP headers.
+
+````js
+const headers = new AxiosHeaders(`
+Host: www.bing.com
+User-Agent: curl/7.54.0
+Accept: */*`);
+
+console.log(headers);
+
+// Object [AxiosHeaders] {
+// host: 'www.bing.com',
+// 'user-agent': 'curl/7.54.0',
+// accept: '*/*'
+// }
+````
+
+### AxiosHeaders#set
+
+```ts
+set(headerName, value: Axios, rewrite?: boolean);
+set(headerName, value, rewrite?: (this: AxiosHeaders, value: string, name: string, headers: RawAxiosHeaders) => boolean);
+set(headers?: RawAxiosHeaders | AxiosHeaders | string, rewrite?: boolean);
+```
+
+The `rewrite` argument controls the overwriting behavior:
+- `false` - do not overwrite if header's value is set (is not `undefined`)
+- `undefined` (default) - overwrite the header unless its value is set to `false`
+- `true` - rewrite anyway
+
+The option can also accept a user-defined function that determines whether the value should be overwritten or not.
+
+Returns `this`.
+
+### AxiosHeaders#get(header)
+
+```
+ get(headerName: string, matcher?: true | AxiosHeaderMatcher): AxiosHeaderValue;
+ get(headerName: string, parser: RegExp): RegExpExecArray | null;
+````
+
+Returns the internal value of the header. It can take an extra argument to parse the header's value with `RegExp.exec`,
+matcher function or internal key-value parser.
+
+```ts
+const headers = new AxiosHeaders({
+ 'Content-Type': 'multipart/form-data; boundary=Asrf456BGe4h'
+});
+
+console.log(headers.get('Content-Type'));
+// multipart/form-data; boundary=Asrf456BGe4h
+
+console.log(headers.get('Content-Type', true)); // parse key-value pairs from a string separated with \s,;= delimiters:
+// [Object: null prototype] {
+// 'multipart/form-data': undefined,
+// boundary: 'Asrf456BGe4h'
+// }
+
+
+console.log(headers.get('Content-Type', (value, name, headers) => {
+ return String(value).replace(/a/g, 'ZZZ');
+}));
+// multipZZZrt/form-dZZZtZZZ; boundZZZry=Asrf456BGe4h
+
+console.log(headers.get('Content-Type', /boundary=(\w+)/)?.[0]);
+// boundary=Asrf456BGe4h
+
+```
+
+Returns the value of the header.
+
+### AxiosHeaders#has(header, matcher?)
+
+```
+has(header: string, matcher?: AxiosHeaderMatcher): boolean;
+```
+
+Returns `true` if the header is set (has no `undefined` value).
+
+### AxiosHeaders#delete(header, matcher?)
+
+```
+delete(header: string | string[], matcher?: AxiosHeaderMatcher): boolean;
+```
+
+Returns `true` if at least one header has been removed.
+
+### AxiosHeaders#clear(matcher?)
+
+```
+clear(matcher?: AxiosHeaderMatcher): boolean;
+```
+
+Removes all headers.
+Unlike the `delete` method matcher, this optional matcher will be used to match against the header name rather than the value.
+
+```ts
+const headers = new AxiosHeaders({
+ 'foo': '1',
+ 'x-foo': '2',
+ 'x-bar': '3',
+});
+
+console.log(headers.clear(/^x-/)); // true
+
+console.log(headers.toJSON()); // [Object: null prototype] { foo: '1' }
+```
+
+Returns `true` if at least one header has been cleared.
+
+### AxiosHeaders#normalize(format);
+
+If the headers object was changed directly, it can have duplicates with the same name but in different cases.
+This method normalizes the headers object by combining duplicate keys into one.
+Axios uses this method internally after calling each interceptor.
+Set `format` to true for converting headers name to lowercase and capitalize the initial letters (`cOntEnt-type` => `Content-Type`)
+
+```js
+const headers = new AxiosHeaders({
+ 'foo': '1',
+});
+
+headers.Foo = '2';
+headers.FOO = '3';
+
+console.log(headers.toJSON()); // [Object: null prototype] { foo: '1', Foo: '2', FOO: '3' }
+console.log(headers.normalize().toJSON()); // [Object: null prototype] { foo: '3' }
+console.log(headers.normalize(true).toJSON()); // [Object: null prototype] { Foo: '3' }
+```
+
+Returns `this`.
+
+### AxiosHeaders#concat(...targets)
+
+```
+concat(...targets: Array): AxiosHeaders;
+```
+
+Merges the instance with targets into a new `AxiosHeaders` instance. If the target is a string, it will be parsed as RAW HTTP headers.
+
+Returns a new `AxiosHeaders` instance.
+
+### AxiosHeaders#toJSON(asStrings?)
+
+````
+toJSON(asStrings?: boolean): RawAxiosHeaders;
+````
+
+Resolve all internal headers values into a new null prototype object.
+Set `asStrings` to true to resolve arrays as a string containing all elements, separated by commas.
+
+### AxiosHeaders.from(thing?)
+
+````
+from(thing?: AxiosHeaders | RawAxiosHeaders | string): AxiosHeaders;
+````
+
+Returns a new `AxiosHeaders` instance created from the raw headers passed in,
+or simply returns the given headers object if it's an `AxiosHeaders` instance.
+
+### AxiosHeaders.concat(...targets)
+
+````
+concat(...targets: Array): AxiosHeaders;
+````
+
+Returns a new `AxiosHeaders` instance created by merging the target objects.
+
+### Shortcuts
+
+The following shortcuts are available:
+
+- `setContentType`, `getContentType`, `hasContentType`
+
+- `setContentLength`, `getContentLength`, `hasContentLength`
+
+- `setAccept`, `getAccept`, `hasAccept`
+
+- `setUserAgent`, `getUserAgent`, `hasUserAgent`
+
+- `setContentEncoding`, `getContentEncoding`, `hasContentEncoding`
+
+## 🔥 Fetch adapter
+
+Fetch adapter was introduced in `v1.7.0`. By default, it will be used if `xhr` and `http` adapters are not available in the build,
+or not supported by the environment.
+To use it by default, it must be selected explicitly:
+
+```js
+const {data} = axios.get(url, {
+ adapter: 'fetch' // by default ['xhr', 'http', 'fetch']
+})
+```
+
+You can create a separate instance for this:
+
+```js
+const fetchAxios = axios.create({
+ adapter: 'fetch'
+});
+
+const {data} = fetchAxios.get(url);
+```
+
+The adapter supports the same functionality as `xhr` adapter, **including upload and download progress capturing**.
+Also, it supports additional response types such as `stream` and `formdata` (if supported by the environment).
+
+## Semver
+
+Until axios reaches a `1.0` release, breaking changes will be released with a new minor version. For example `0.5.1`, and `0.5.4` will have the same API, but `0.6.0` will have breaking changes.
+
+## Promises
+
+axios depends on a native ES6 Promise implementation to be [supported](https://caniuse.com/promises).
+If your environment doesn't support ES6 Promises, you can [polyfill](https://github.com/jakearchibald/es6-promise).
+
+## TypeScript
+
+axios includes [TypeScript](https://typescriptlang.org) definitions and a type guard for axios errors.
+
+```typescript
+let user: User = null;
+try {
+ const { data } = await axios.get('/user?ID=12345');
+ user = data.userDetails;
+} catch (error) {
+ if (axios.isAxiosError(error)) {
+ handleAxiosError(error);
+ } else {
+ handleUnexpectedError(error);
+ }
+}
+```
+
+Because axios dual publishes with an ESM default export and a CJS `module.exports`, there are some caveats.
+The recommended setting is to use `"moduleResolution": "node16"` (this is implied by `"module": "node16"`). Note that this requires TypeScript 4.7 or greater.
+If use ESM, your settings should be fine.
+If you compile TypeScript to CJS and you can’t use `"moduleResolution": "node 16"`, you have to enable `esModuleInterop`.
+If you use TypeScript to type check CJS JavaScript code, your only option is to use `"moduleResolution": "node16"`.
+
+## Online one-click setup
+
+You can use Gitpod, an online IDE(which is free for Open Source) for contributing or running the examples online.
+
+[](https://gitpod.io/#https://github.com/axios/axios/blob/main/examples/server.js)
+
+
+## Resources
+
+* [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
+* [Ecosystem](https://github.com/axios/axios/blob/v1.x/ECOSYSTEM.md)
+* [Contributing Guide](https://github.com/axios/axios/blob/v1.x/CONTRIBUTING.md)
+* [Code of Conduct](https://github.com/axios/axios/blob/v1.x/CODE_OF_CONDUCT.md)
+
+## Credits
+
+axios is heavily inspired by the [$http service](https://docs.angularjs.org/api/ng/service/$http) provided in [AngularJS](https://angularjs.org/). Ultimately axios is an effort to provide a standalone `$http`-like service for use outside of AngularJS.
+
+## License
+
+[MIT](LICENSE)
diff --git a/node_modules/axios/SECURITY.md b/node_modules/axios/SECURITY.md
new file mode 100644
index 00000000..a5a2b7d2
--- /dev/null
+++ b/node_modules/axios/SECURITY.md
@@ -0,0 +1,6 @@
+# Reporting a Vulnerability
+
+If you discover a security vulnerability in axios please disclose it via [our huntr page](https://huntr.dev/repos/axios/axios/). Bounty eligibility, CVE assignment, response times and past reports are all there.
+
+
+Thank you for improving the security of axios.
diff --git a/node_modules/axios/dist/axios.js b/node_modules/axios/dist/axios.js
new file mode 100644
index 00000000..88921735
--- /dev/null
+++ b/node_modules/axios/dist/axios.js
@@ -0,0 +1,4172 @@
+// Axios v1.7.2 Copyright (c) 2024 Matt Zabriskie and contributors
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+ typeof define === 'function' && define.amd ? define(factory) :
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.axios = factory());
+})(this, (function () { 'use strict';
+
+ function _AsyncGenerator(e) {
+ var r, t;
+ function resume(r, t) {
+ try {
+ var n = e[r](t),
+ o = n.value,
+ u = o instanceof _OverloadYield;
+ Promise.resolve(u ? o.v : o).then(function (t) {
+ if (u) {
+ var i = "return" === r ? "return" : "next";
+ if (!o.k || t.done) return resume(i, t);
+ t = e[i](t).value;
+ }
+ settle(n.done ? "return" : "normal", t);
+ }, function (e) {
+ resume("throw", e);
+ });
+ } catch (e) {
+ settle("throw", e);
+ }
+ }
+ function settle(e, n) {
+ switch (e) {
+ case "return":
+ r.resolve({
+ value: n,
+ done: !0
+ });
+ break;
+ case "throw":
+ r.reject(n);
+ break;
+ default:
+ r.resolve({
+ value: n,
+ done: !1
+ });
+ }
+ (r = r.next) ? resume(r.key, r.arg) : t = null;
+ }
+ this._invoke = function (e, n) {
+ return new Promise(function (o, u) {
+ var i = {
+ key: e,
+ arg: n,
+ resolve: o,
+ reject: u,
+ next: null
+ };
+ t ? t = t.next = i : (r = t = i, resume(e, n));
+ });
+ }, "function" != typeof e.return && (this.return = void 0);
+ }
+ _AsyncGenerator.prototype["function" == typeof Symbol && Symbol.asyncIterator || "@@asyncIterator"] = function () {
+ return this;
+ }, _AsyncGenerator.prototype.next = function (e) {
+ return this._invoke("next", e);
+ }, _AsyncGenerator.prototype.throw = function (e) {
+ return this._invoke("throw", e);
+ }, _AsyncGenerator.prototype.return = function (e) {
+ return this._invoke("return", e);
+ };
+ function _OverloadYield(t, e) {
+ this.v = t, this.k = e;
+ }
+ function _asyncGeneratorDelegate(t) {
+ var e = {},
+ n = !1;
+ function pump(e, r) {
+ return n = !0, r = new Promise(function (n) {
+ n(t[e](r));
+ }), {
+ done: !1,
+ value: new _OverloadYield(r, 1)
+ };
+ }
+ return e["undefined" != typeof Symbol && Symbol.iterator || "@@iterator"] = function () {
+ return this;
+ }, e.next = function (t) {
+ return n ? (n = !1, t) : pump("next", t);
+ }, "function" == typeof t.throw && (e.throw = function (t) {
+ if (n) throw n = !1, t;
+ return pump("throw", t);
+ }), "function" == typeof t.return && (e.return = function (t) {
+ return n ? (n = !1, t) : pump("return", t);
+ }), e;
+ }
+ function _asyncIterator(r) {
+ var n,
+ t,
+ o,
+ e = 2;
+ for ("undefined" != typeof Symbol && (t = Symbol.asyncIterator, o = Symbol.iterator); e--;) {
+ if (t && null != (n = r[t])) return n.call(r);
+ if (o && null != (n = r[o])) return new AsyncFromSyncIterator(n.call(r));
+ t = "@@asyncIterator", o = "@@iterator";
+ }
+ throw new TypeError("Object is not async iterable");
+ }
+ function AsyncFromSyncIterator(r) {
+ function AsyncFromSyncIteratorContinuation(r) {
+ if (Object(r) !== r) return Promise.reject(new TypeError(r + " is not an object."));
+ var n = r.done;
+ return Promise.resolve(r.value).then(function (r) {
+ return {
+ value: r,
+ done: n
+ };
+ });
+ }
+ return AsyncFromSyncIterator = function (r) {
+ this.s = r, this.n = r.next;
+ }, AsyncFromSyncIterator.prototype = {
+ s: null,
+ n: null,
+ next: function () {
+ return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments));
+ },
+ return: function (r) {
+ var n = this.s.return;
+ return void 0 === n ? Promise.resolve({
+ value: r,
+ done: !0
+ }) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments));
+ },
+ throw: function (r) {
+ var n = this.s.return;
+ return void 0 === n ? Promise.reject(r) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments));
+ }
+ }, new AsyncFromSyncIterator(r);
+ }
+ function _awaitAsyncGenerator(e) {
+ return new _OverloadYield(e, 0);
+ }
+ function _iterableToArrayLimit(r, l) {
+ var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
+ if (null != t) {
+ var e,
+ n,
+ i,
+ u,
+ a = [],
+ f = !0,
+ o = !1;
+ try {
+ if (i = (t = t.call(r)).next, 0 === l) {
+ if (Object(t) !== t) return;
+ f = !1;
+ } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
+ } catch (r) {
+ o = !0, n = r;
+ } finally {
+ try {
+ if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;
+ } finally {
+ if (o) throw n;
+ }
+ }
+ return a;
+ }
+ }
+ function ownKeys(e, r) {
+ var t = Object.keys(e);
+ if (Object.getOwnPropertySymbols) {
+ var o = Object.getOwnPropertySymbols(e);
+ r && (o = o.filter(function (r) {
+ return Object.getOwnPropertyDescriptor(e, r).enumerable;
+ })), t.push.apply(t, o);
+ }
+ return t;
+ }
+ function _objectSpread2(e) {
+ for (var r = 1; r < arguments.length; r++) {
+ var t = null != arguments[r] ? arguments[r] : {};
+ r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {
+ _defineProperty(e, r, t[r]);
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
+ Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
+ });
+ }
+ return e;
+ }
+ function _regeneratorRuntime() {
+ _regeneratorRuntime = function () {
+ return e;
+ };
+ var t,
+ e = {},
+ r = Object.prototype,
+ n = r.hasOwnProperty,
+ o = Object.defineProperty || function (t, e, r) {
+ t[e] = r.value;
+ },
+ i = "function" == typeof Symbol ? Symbol : {},
+ a = i.iterator || "@@iterator",
+ c = i.asyncIterator || "@@asyncIterator",
+ u = i.toStringTag || "@@toStringTag";
+ function define(t, e, r) {
+ return Object.defineProperty(t, e, {
+ value: r,
+ enumerable: !0,
+ configurable: !0,
+ writable: !0
+ }), t[e];
+ }
+ try {
+ define({}, "");
+ } catch (t) {
+ define = function (t, e, r) {
+ return t[e] = r;
+ };
+ }
+ function wrap(t, e, r, n) {
+ var i = e && e.prototype instanceof Generator ? e : Generator,
+ a = Object.create(i.prototype),
+ c = new Context(n || []);
+ return o(a, "_invoke", {
+ value: makeInvokeMethod(t, r, c)
+ }), a;
+ }
+ function tryCatch(t, e, r) {
+ try {
+ return {
+ type: "normal",
+ arg: t.call(e, r)
+ };
+ } catch (t) {
+ return {
+ type: "throw",
+ arg: t
+ };
+ }
+ }
+ e.wrap = wrap;
+ var h = "suspendedStart",
+ l = "suspendedYield",
+ f = "executing",
+ s = "completed",
+ y = {};
+ function Generator() {}
+ function GeneratorFunction() {}
+ function GeneratorFunctionPrototype() {}
+ var p = {};
+ define(p, a, function () {
+ return this;
+ });
+ var d = Object.getPrototypeOf,
+ v = d && d(d(values([])));
+ v && v !== r && n.call(v, a) && (p = v);
+ var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);
+ function defineIteratorMethods(t) {
+ ["next", "throw", "return"].forEach(function (e) {
+ define(t, e, function (t) {
+ return this._invoke(e, t);
+ });
+ });
+ }
+ function AsyncIterator(t, e) {
+ function invoke(r, o, i, a) {
+ var c = tryCatch(t[r], t, o);
+ if ("throw" !== c.type) {
+ var u = c.arg,
+ h = u.value;
+ return h && "object" == typeof h && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) {
+ invoke("next", t, i, a);
+ }, function (t) {
+ invoke("throw", t, i, a);
+ }) : e.resolve(h).then(function (t) {
+ u.value = t, i(u);
+ }, function (t) {
+ return invoke("throw", t, i, a);
+ });
+ }
+ a(c.arg);
+ }
+ var r;
+ o(this, "_invoke", {
+ value: function (t, n) {
+ function callInvokeWithMethodAndArg() {
+ return new e(function (e, r) {
+ invoke(t, n, e, r);
+ });
+ }
+ return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
+ }
+ });
+ }
+ function makeInvokeMethod(e, r, n) {
+ var o = h;
+ return function (i, a) {
+ if (o === f) throw new Error("Generator is already running");
+ if (o === s) {
+ if ("throw" === i) throw a;
+ return {
+ value: t,
+ done: !0
+ };
+ }
+ for (n.method = i, n.arg = a;;) {
+ var c = n.delegate;
+ if (c) {
+ var u = maybeInvokeDelegate(c, n);
+ if (u) {
+ if (u === y) continue;
+ return u;
+ }
+ }
+ if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) {
+ if (o === h) throw o = s, n.arg;
+ n.dispatchException(n.arg);
+ } else "return" === n.method && n.abrupt("return", n.arg);
+ o = f;
+ var p = tryCatch(e, r, n);
+ if ("normal" === p.type) {
+ if (o = n.done ? s : l, p.arg === y) continue;
+ return {
+ value: p.arg,
+ done: n.done
+ };
+ }
+ "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg);
+ }
+ };
+ }
+ function maybeInvokeDelegate(e, r) {
+ var n = r.method,
+ o = e.iterator[n];
+ if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y;
+ var i = tryCatch(o, e.iterator, r.arg);
+ if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y;
+ var a = i.arg;
+ return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y);
+ }
+ function pushTryEntry(t) {
+ var e = {
+ tryLoc: t[0]
+ };
+ 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);
+ }
+ function resetTryEntry(t) {
+ var e = t.completion || {};
+ e.type = "normal", delete e.arg, t.completion = e;
+ }
+ function Context(t) {
+ this.tryEntries = [{
+ tryLoc: "root"
+ }], t.forEach(pushTryEntry, this), this.reset(!0);
+ }
+ function values(e) {
+ if (e || "" === e) {
+ var r = e[a];
+ if (r) return r.call(e);
+ if ("function" == typeof e.next) return e;
+ if (!isNaN(e.length)) {
+ var o = -1,
+ i = function next() {
+ for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;
+ return next.value = t, next.done = !0, next;
+ };
+ return i.next = i;
+ }
+ }
+ throw new TypeError(typeof e + " is not iterable");
+ }
+ return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", {
+ value: GeneratorFunctionPrototype,
+ configurable: !0
+ }), o(GeneratorFunctionPrototype, "constructor", {
+ value: GeneratorFunction,
+ configurable: !0
+ }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) {
+ var e = "function" == typeof t && t.constructor;
+ return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name));
+ }, e.mark = function (t) {
+ return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t;
+ }, e.awrap = function (t) {
+ return {
+ __await: t
+ };
+ }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {
+ return this;
+ }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {
+ void 0 === i && (i = Promise);
+ var a = new AsyncIterator(wrap(t, r, n, o), i);
+ return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {
+ return t.done ? t.value : a.next();
+ });
+ }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () {
+ return this;
+ }), define(g, "toString", function () {
+ return "[object Generator]";
+ }), e.keys = function (t) {
+ var e = Object(t),
+ r = [];
+ for (var n in e) r.push(n);
+ return r.reverse(), function next() {
+ for (; r.length;) {
+ var t = r.pop();
+ if (t in e) return next.value = t, next.done = !1, next;
+ }
+ return next.done = !0, next;
+ };
+ }, e.values = values, Context.prototype = {
+ constructor: Context,
+ reset: function (e) {
+ if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);
+ },
+ stop: function () {
+ this.done = !0;
+ var t = this.tryEntries[0].completion;
+ if ("throw" === t.type) throw t.arg;
+ return this.rval;
+ },
+ dispatchException: function (e) {
+ if (this.done) throw e;
+ var r = this;
+ function handle(n, o) {
+ return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o;
+ }
+ for (var o = this.tryEntries.length - 1; o >= 0; --o) {
+ var i = this.tryEntries[o],
+ a = i.completion;
+ if ("root" === i.tryLoc) return handle("end");
+ if (i.tryLoc <= this.prev) {
+ var c = n.call(i, "catchLoc"),
+ u = n.call(i, "finallyLoc");
+ if (c && u) {
+ if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);
+ if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
+ } else if (c) {
+ if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);
+ } else {
+ if (!u) throw new Error("try statement without catch or finally");
+ if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
+ }
+ }
+ }
+ },
+ abrupt: function (t, e) {
+ for (var r = this.tryEntries.length - 1; r >= 0; --r) {
+ var o = this.tryEntries[r];
+ if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) {
+ var i = o;
+ break;
+ }
+ }
+ i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);
+ var a = i ? i.completion : {};
+ return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a);
+ },
+ complete: function (t, e) {
+ if ("throw" === t.type) throw t.arg;
+ return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y;
+ },
+ finish: function (t) {
+ for (var e = this.tryEntries.length - 1; e >= 0; --e) {
+ var r = this.tryEntries[e];
+ if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;
+ }
+ },
+ catch: function (t) {
+ for (var e = this.tryEntries.length - 1; e >= 0; --e) {
+ var r = this.tryEntries[e];
+ if (r.tryLoc === t) {
+ var n = r.completion;
+ if ("throw" === n.type) {
+ var o = n.arg;
+ resetTryEntry(r);
+ }
+ return o;
+ }
+ }
+ throw new Error("illegal catch attempt");
+ },
+ delegateYield: function (e, r, n) {
+ return this.delegate = {
+ iterator: values(e),
+ resultName: r,
+ nextLoc: n
+ }, "next" === this.method && (this.arg = t), y;
+ }
+ }, e;
+ }
+ function _toPrimitive(t, r) {
+ if ("object" != typeof t || !t) return t;
+ var e = t[Symbol.toPrimitive];
+ if (void 0 !== e) {
+ var i = e.call(t, r || "default");
+ if ("object" != typeof i) return i;
+ throw new TypeError("@@toPrimitive must return a primitive value.");
+ }
+ return ("string" === r ? String : Number)(t);
+ }
+ function _toPropertyKey(t) {
+ var i = _toPrimitive(t, "string");
+ return "symbol" == typeof i ? i : String(i);
+ }
+ function _typeof(o) {
+ "@babel/helpers - typeof";
+
+ return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
+ return typeof o;
+ } : function (o) {
+ return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
+ }, _typeof(o);
+ }
+ function _wrapAsyncGenerator(fn) {
+ return function () {
+ return new _AsyncGenerator(fn.apply(this, arguments));
+ };
+ }
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
+ try {
+ var info = gen[key](arg);
+ var value = info.value;
+ } catch (error) {
+ reject(error);
+ return;
+ }
+ if (info.done) {
+ resolve(value);
+ } else {
+ Promise.resolve(value).then(_next, _throw);
+ }
+ }
+ function _asyncToGenerator(fn) {
+ return function () {
+ var self = this,
+ args = arguments;
+ return new Promise(function (resolve, reject) {
+ var gen = fn.apply(self, args);
+ function _next(value) {
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
+ }
+ function _throw(err) {
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
+ }
+ _next(undefined);
+ });
+ };
+ }
+ function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ }
+ function _defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);
+ }
+ }
+ function _createClass(Constructor, protoProps, staticProps) {
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) _defineProperties(Constructor, staticProps);
+ Object.defineProperty(Constructor, "prototype", {
+ writable: false
+ });
+ return Constructor;
+ }
+ function _defineProperty(obj, key, value) {
+ key = _toPropertyKey(key);
+ if (key in obj) {
+ Object.defineProperty(obj, key, {
+ value: value,
+ enumerable: true,
+ configurable: true,
+ writable: true
+ });
+ } else {
+ obj[key] = value;
+ }
+ return obj;
+ }
+ function _slicedToArray(arr, i) {
+ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
+ }
+ function _toArray(arr) {
+ return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest();
+ }
+ function _toConsumableArray(arr) {
+ return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
+ }
+ function _arrayWithoutHoles(arr) {
+ if (Array.isArray(arr)) return _arrayLikeToArray(arr);
+ }
+ function _arrayWithHoles(arr) {
+ if (Array.isArray(arr)) return arr;
+ }
+ function _iterableToArray(iter) {
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
+ }
+ function _unsupportedIterableToArray(o, minLen) {
+ if (!o) return;
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
+ var n = Object.prototype.toString.call(o).slice(8, -1);
+ if (n === "Object" && o.constructor) n = o.constructor.name;
+ if (n === "Map" || n === "Set") return Array.from(o);
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
+ }
+ function _arrayLikeToArray(arr, len) {
+ if (len == null || len > arr.length) len = arr.length;
+ for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
+ return arr2;
+ }
+ function _nonIterableSpread() {
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+ }
+ function _nonIterableRest() {
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+ }
+ function _createForOfIteratorHelper(o, allowArrayLike) {
+ var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
+ if (!it) {
+ if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
+ if (it) o = it;
+ var i = 0;
+ var F = function () {};
+ return {
+ s: F,
+ n: function () {
+ if (i >= o.length) return {
+ done: true
+ };
+ return {
+ done: false,
+ value: o[i++]
+ };
+ },
+ e: function (e) {
+ throw e;
+ },
+ f: F
+ };
+ }
+ throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+ }
+ var normalCompletion = true,
+ didErr = false,
+ err;
+ return {
+ s: function () {
+ it = it.call(o);
+ },
+ n: function () {
+ var step = it.next();
+ normalCompletion = step.done;
+ return step;
+ },
+ e: function (e) {
+ didErr = true;
+ err = e;
+ },
+ f: function () {
+ try {
+ if (!normalCompletion && it.return != null) it.return();
+ } finally {
+ if (didErr) throw err;
+ }
+ }
+ };
+ }
+
+ function bind(fn, thisArg) {
+ return function wrap() {
+ return fn.apply(thisArg, arguments);
+ };
+ }
+
+ // utils is a library of generic helper functions non-specific to axios
+
+ var toString = Object.prototype.toString;
+ var getPrototypeOf = Object.getPrototypeOf;
+ var kindOf = function (cache) {
+ return function (thing) {
+ var str = toString.call(thing);
+ return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());
+ };
+ }(Object.create(null));
+ var kindOfTest = function kindOfTest(type) {
+ type = type.toLowerCase();
+ return function (thing) {
+ return kindOf(thing) === type;
+ };
+ };
+ var typeOfTest = function typeOfTest(type) {
+ return function (thing) {
+ return _typeof(thing) === type;
+ };
+ };
+
+ /**
+ * Determine if a value is an Array
+ *
+ * @param {Object} val The value to test
+ *
+ * @returns {boolean} True if value is an Array, otherwise false
+ */
+ var isArray = Array.isArray;
+
+ /**
+ * Determine if a value is undefined
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if the value is undefined, otherwise false
+ */
+ var isUndefined = typeOfTest('undefined');
+
+ /**
+ * Determine if a value is a Buffer
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a Buffer, otherwise false
+ */
+ function isBuffer(val) {
+ return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);
+ }
+
+ /**
+ * Determine if a value is an ArrayBuffer
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is an ArrayBuffer, otherwise false
+ */
+ var isArrayBuffer = kindOfTest('ArrayBuffer');
+
+ /**
+ * Determine if a value is a view on an ArrayBuffer
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false
+ */
+ function isArrayBufferView(val) {
+ var result;
+ if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {
+ result = ArrayBuffer.isView(val);
+ } else {
+ result = val && val.buffer && isArrayBuffer(val.buffer);
+ }
+ return result;
+ }
+
+ /**
+ * Determine if a value is a String
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a String, otherwise false
+ */
+ var isString = typeOfTest('string');
+
+ /**
+ * Determine if a value is a Function
+ *
+ * @param {*} val The value to test
+ * @returns {boolean} True if value is a Function, otherwise false
+ */
+ var isFunction = typeOfTest('function');
+
+ /**
+ * Determine if a value is a Number
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a Number, otherwise false
+ */
+ var isNumber = typeOfTest('number');
+
+ /**
+ * Determine if a value is an Object
+ *
+ * @param {*} thing The value to test
+ *
+ * @returns {boolean} True if value is an Object, otherwise false
+ */
+ var isObject = function isObject(thing) {
+ return thing !== null && _typeof(thing) === 'object';
+ };
+
+ /**
+ * Determine if a value is a Boolean
+ *
+ * @param {*} thing The value to test
+ * @returns {boolean} True if value is a Boolean, otherwise false
+ */
+ var isBoolean = function isBoolean(thing) {
+ return thing === true || thing === false;
+ };
+
+ /**
+ * Determine if a value is a plain Object
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a plain Object, otherwise false
+ */
+ var isPlainObject = function isPlainObject(val) {
+ if (kindOf(val) !== 'object') {
+ return false;
+ }
+ var prototype = getPrototypeOf(val);
+ return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);
+ };
+
+ /**
+ * Determine if a value is a Date
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a Date, otherwise false
+ */
+ var isDate = kindOfTest('Date');
+
+ /**
+ * Determine if a value is a File
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a File, otherwise false
+ */
+ var isFile = kindOfTest('File');
+
+ /**
+ * Determine if a value is a Blob
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a Blob, otherwise false
+ */
+ var isBlob = kindOfTest('Blob');
+
+ /**
+ * Determine if a value is a FileList
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a File, otherwise false
+ */
+ var isFileList = kindOfTest('FileList');
+
+ /**
+ * Determine if a value is a Stream
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a Stream, otherwise false
+ */
+ var isStream = function isStream(val) {
+ return isObject(val) && isFunction(val.pipe);
+ };
+
+ /**
+ * Determine if a value is a FormData
+ *
+ * @param {*} thing The value to test
+ *
+ * @returns {boolean} True if value is an FormData, otherwise false
+ */
+ var isFormData = function isFormData(thing) {
+ var kind;
+ return thing && (typeof FormData === 'function' && thing instanceof FormData || isFunction(thing.append) && ((kind = kindOf(thing)) === 'formdata' ||
+ // detect form-data instance
+ kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]'));
+ };
+
+ /**
+ * Determine if a value is a URLSearchParams object
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a URLSearchParams object, otherwise false
+ */
+ var isURLSearchParams = kindOfTest('URLSearchParams');
+ var _map = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest),
+ _map2 = _slicedToArray(_map, 4),
+ isReadableStream = _map2[0],
+ isRequest = _map2[1],
+ isResponse = _map2[2],
+ isHeaders = _map2[3];
+
+ /**
+ * Trim excess whitespace off the beginning and end of a string
+ *
+ * @param {String} str The String to trim
+ *
+ * @returns {String} The String freed of excess whitespace
+ */
+ var trim = function trim(str) {
+ return str.trim ? str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
+ };
+
+ /**
+ * Iterate over an Array or an Object invoking a function for each item.
+ *
+ * If `obj` is an Array callback will be called passing
+ * the value, index, and complete array for each item.
+ *
+ * If 'obj' is an Object callback will be called passing
+ * the value, key, and complete object for each property.
+ *
+ * @param {Object|Array} obj The object to iterate
+ * @param {Function} fn The callback to invoke for each item
+ *
+ * @param {Boolean} [allOwnKeys = false]
+ * @returns {any}
+ */
+ function forEach(obj, fn) {
+ var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
+ _ref$allOwnKeys = _ref.allOwnKeys,
+ allOwnKeys = _ref$allOwnKeys === void 0 ? false : _ref$allOwnKeys;
+ // Don't bother if no value provided
+ if (obj === null || typeof obj === 'undefined') {
+ return;
+ }
+ var i;
+ var l;
+
+ // Force an array if not already something iterable
+ if (_typeof(obj) !== 'object') {
+ /*eslint no-param-reassign:0*/
+ obj = [obj];
+ }
+ if (isArray(obj)) {
+ // Iterate over array values
+ for (i = 0, l = obj.length; i < l; i++) {
+ fn.call(null, obj[i], i, obj);
+ }
+ } else {
+ // Iterate over object keys
+ var keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);
+ var len = keys.length;
+ var key;
+ for (i = 0; i < len; i++) {
+ key = keys[i];
+ fn.call(null, obj[key], key, obj);
+ }
+ }
+ }
+ function findKey(obj, key) {
+ key = key.toLowerCase();
+ var keys = Object.keys(obj);
+ var i = keys.length;
+ var _key;
+ while (i-- > 0) {
+ _key = keys[i];
+ if (key === _key.toLowerCase()) {
+ return _key;
+ }
+ }
+ return null;
+ }
+ var _global = function () {
+ /*eslint no-undef:0*/
+ if (typeof globalThis !== "undefined") return globalThis;
+ return typeof self !== "undefined" ? self : typeof window !== 'undefined' ? window : global;
+ }();
+ var isContextDefined = function isContextDefined(context) {
+ return !isUndefined(context) && context !== _global;
+ };
+
+ /**
+ * Accepts varargs expecting each argument to be an object, then
+ * immutably merges the properties of each object and returns result.
+ *
+ * When multiple objects contain the same key the later object in
+ * the arguments list will take precedence.
+ *
+ * Example:
+ *
+ * ```js
+ * var result = merge({foo: 123}, {foo: 456});
+ * console.log(result.foo); // outputs 456
+ * ```
+ *
+ * @param {Object} obj1 Object to merge
+ *
+ * @returns {Object} Result of all merge properties
+ */
+ function merge( /* obj1, obj2, obj3, ... */
+ ) {
+ var _ref2 = isContextDefined(this) && this || {},
+ caseless = _ref2.caseless;
+ var result = {};
+ var assignValue = function assignValue(val, key) {
+ var targetKey = caseless && findKey(result, key) || key;
+ if (isPlainObject(result[targetKey]) && isPlainObject(val)) {
+ result[targetKey] = merge(result[targetKey], val);
+ } else if (isPlainObject(val)) {
+ result[targetKey] = merge({}, val);
+ } else if (isArray(val)) {
+ result[targetKey] = val.slice();
+ } else {
+ result[targetKey] = val;
+ }
+ };
+ for (var i = 0, l = arguments.length; i < l; i++) {
+ arguments[i] && forEach(arguments[i], assignValue);
+ }
+ return result;
+ }
+
+ /**
+ * Extends object a by mutably adding to it the properties of object b.
+ *
+ * @param {Object} a The object to be extended
+ * @param {Object} b The object to copy properties from
+ * @param {Object} thisArg The object to bind function to
+ *
+ * @param {Boolean} [allOwnKeys]
+ * @returns {Object} The resulting value of object a
+ */
+ var extend = function extend(a, b, thisArg) {
+ var _ref3 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},
+ allOwnKeys = _ref3.allOwnKeys;
+ forEach(b, function (val, key) {
+ if (thisArg && isFunction(val)) {
+ a[key] = bind(val, thisArg);
+ } else {
+ a[key] = val;
+ }
+ }, {
+ allOwnKeys: allOwnKeys
+ });
+ return a;
+ };
+
+ /**
+ * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)
+ *
+ * @param {string} content with BOM
+ *
+ * @returns {string} content value without BOM
+ */
+ var stripBOM = function stripBOM(content) {
+ if (content.charCodeAt(0) === 0xFEFF) {
+ content = content.slice(1);
+ }
+ return content;
+ };
+
+ /**
+ * Inherit the prototype methods from one constructor into another
+ * @param {function} constructor
+ * @param {function} superConstructor
+ * @param {object} [props]
+ * @param {object} [descriptors]
+ *
+ * @returns {void}
+ */
+ var inherits = function inherits(constructor, superConstructor, props, descriptors) {
+ constructor.prototype = Object.create(superConstructor.prototype, descriptors);
+ constructor.prototype.constructor = constructor;
+ Object.defineProperty(constructor, 'super', {
+ value: superConstructor.prototype
+ });
+ props && Object.assign(constructor.prototype, props);
+ };
+
+ /**
+ * Resolve object with deep prototype chain to a flat object
+ * @param {Object} sourceObj source object
+ * @param {Object} [destObj]
+ * @param {Function|Boolean} [filter]
+ * @param {Function} [propFilter]
+ *
+ * @returns {Object}
+ */
+ var toFlatObject = function toFlatObject(sourceObj, destObj, filter, propFilter) {
+ var props;
+ var i;
+ var prop;
+ var merged = {};
+ destObj = destObj || {};
+ // eslint-disable-next-line no-eq-null,eqeqeq
+ if (sourceObj == null) return destObj;
+ do {
+ props = Object.getOwnPropertyNames(sourceObj);
+ i = props.length;
+ while (i-- > 0) {
+ prop = props[i];
+ if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {
+ destObj[prop] = sourceObj[prop];
+ merged[prop] = true;
+ }
+ }
+ sourceObj = filter !== false && getPrototypeOf(sourceObj);
+ } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);
+ return destObj;
+ };
+
+ /**
+ * Determines whether a string ends with the characters of a specified string
+ *
+ * @param {String} str
+ * @param {String} searchString
+ * @param {Number} [position= 0]
+ *
+ * @returns {boolean}
+ */
+ var endsWith = function endsWith(str, searchString, position) {
+ str = String(str);
+ if (position === undefined || position > str.length) {
+ position = str.length;
+ }
+ position -= searchString.length;
+ var lastIndex = str.indexOf(searchString, position);
+ return lastIndex !== -1 && lastIndex === position;
+ };
+
+ /**
+ * Returns new array from array like object or null if failed
+ *
+ * @param {*} [thing]
+ *
+ * @returns {?Array}
+ */
+ var toArray = function toArray(thing) {
+ if (!thing) return null;
+ if (isArray(thing)) return thing;
+ var i = thing.length;
+ if (!isNumber(i)) return null;
+ var arr = new Array(i);
+ while (i-- > 0) {
+ arr[i] = thing[i];
+ }
+ return arr;
+ };
+
+ /**
+ * Checking if the Uint8Array exists and if it does, it returns a function that checks if the
+ * thing passed in is an instance of Uint8Array
+ *
+ * @param {TypedArray}
+ *
+ * @returns {Array}
+ */
+ // eslint-disable-next-line func-names
+ var isTypedArray = function (TypedArray) {
+ // eslint-disable-next-line func-names
+ return function (thing) {
+ return TypedArray && thing instanceof TypedArray;
+ };
+ }(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));
+
+ /**
+ * For each entry in the object, call the function with the key and value.
+ *
+ * @param {Object} obj - The object to iterate over.
+ * @param {Function} fn - The function to call for each entry.
+ *
+ * @returns {void}
+ */
+ var forEachEntry = function forEachEntry(obj, fn) {
+ var generator = obj && obj[Symbol.iterator];
+ var iterator = generator.call(obj);
+ var result;
+ while ((result = iterator.next()) && !result.done) {
+ var pair = result.value;
+ fn.call(obj, pair[0], pair[1]);
+ }
+ };
+
+ /**
+ * It takes a regular expression and a string, and returns an array of all the matches
+ *
+ * @param {string} regExp - The regular expression to match against.
+ * @param {string} str - The string to search.
+ *
+ * @returns {Array}
+ */
+ var matchAll = function matchAll(regExp, str) {
+ var matches;
+ var arr = [];
+ while ((matches = regExp.exec(str)) !== null) {
+ arr.push(matches);
+ }
+ return arr;
+ };
+
+ /* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */
+ var isHTMLForm = kindOfTest('HTMLFormElement');
+ var toCamelCase = function toCamelCase(str) {
+ return str.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g, function replacer(m, p1, p2) {
+ return p1.toUpperCase() + p2;
+ });
+ };
+
+ /* Creating a function that will check if an object has a property. */
+ var hasOwnProperty = function (_ref4) {
+ var hasOwnProperty = _ref4.hasOwnProperty;
+ return function (obj, prop) {
+ return hasOwnProperty.call(obj, prop);
+ };
+ }(Object.prototype);
+
+ /**
+ * Determine if a value is a RegExp object
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a RegExp object, otherwise false
+ */
+ var isRegExp = kindOfTest('RegExp');
+ var reduceDescriptors = function reduceDescriptors(obj, reducer) {
+ var descriptors = Object.getOwnPropertyDescriptors(obj);
+ var reducedDescriptors = {};
+ forEach(descriptors, function (descriptor, name) {
+ var ret;
+ if ((ret = reducer(descriptor, name, obj)) !== false) {
+ reducedDescriptors[name] = ret || descriptor;
+ }
+ });
+ Object.defineProperties(obj, reducedDescriptors);
+ };
+
+ /**
+ * Makes all methods read-only
+ * @param {Object} obj
+ */
+
+ var freezeMethods = function freezeMethods(obj) {
+ reduceDescriptors(obj, function (descriptor, name) {
+ // skip restricted props in strict mode
+ if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {
+ return false;
+ }
+ var value = obj[name];
+ if (!isFunction(value)) return;
+ descriptor.enumerable = false;
+ if ('writable' in descriptor) {
+ descriptor.writable = false;
+ return;
+ }
+ if (!descriptor.set) {
+ descriptor.set = function () {
+ throw Error('Can not rewrite read-only method \'' + name + '\'');
+ };
+ }
+ });
+ };
+ var toObjectSet = function toObjectSet(arrayOrString, delimiter) {
+ var obj = {};
+ var define = function define(arr) {
+ arr.forEach(function (value) {
+ obj[value] = true;
+ });
+ };
+ isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));
+ return obj;
+ };
+ var noop = function noop() {};
+ var toFiniteNumber = function toFiniteNumber(value, defaultValue) {
+ return value != null && Number.isFinite(value = +value) ? value : defaultValue;
+ };
+ var ALPHA = 'abcdefghijklmnopqrstuvwxyz';
+ var DIGIT = '0123456789';
+ var ALPHABET = {
+ DIGIT: DIGIT,
+ ALPHA: ALPHA,
+ ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT
+ };
+ var generateString = function generateString() {
+ var size = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 16;
+ var alphabet = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ALPHABET.ALPHA_DIGIT;
+ var str = '';
+ var length = alphabet.length;
+ while (size--) {
+ str += alphabet[Math.random() * length | 0];
+ }
+ return str;
+ };
+
+ /**
+ * If the thing is a FormData object, return true, otherwise return false.
+ *
+ * @param {unknown} thing - The thing to check.
+ *
+ * @returns {boolean}
+ */
+ function isSpecCompliantForm(thing) {
+ return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);
+ }
+ var toJSONObject = function toJSONObject(obj) {
+ var stack = new Array(10);
+ var visit = function visit(source, i) {
+ if (isObject(source)) {
+ if (stack.indexOf(source) >= 0) {
+ return;
+ }
+ if (!('toJSON' in source)) {
+ stack[i] = source;
+ var target = isArray(source) ? [] : {};
+ forEach(source, function (value, key) {
+ var reducedValue = visit(value, i + 1);
+ !isUndefined(reducedValue) && (target[key] = reducedValue);
+ });
+ stack[i] = undefined;
+ return target;
+ }
+ }
+ return source;
+ };
+ return visit(obj, 0);
+ };
+ var isAsyncFn = kindOfTest('AsyncFunction');
+ var isThenable = function isThenable(thing) {
+ return thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing["catch"]);
+ };
+ var utils$1 = {
+ isArray: isArray,
+ isArrayBuffer: isArrayBuffer,
+ isBuffer: isBuffer,
+ isFormData: isFormData,
+ isArrayBufferView: isArrayBufferView,
+ isString: isString,
+ isNumber: isNumber,
+ isBoolean: isBoolean,
+ isObject: isObject,
+ isPlainObject: isPlainObject,
+ isReadableStream: isReadableStream,
+ isRequest: isRequest,
+ isResponse: isResponse,
+ isHeaders: isHeaders,
+ isUndefined: isUndefined,
+ isDate: isDate,
+ isFile: isFile,
+ isBlob: isBlob,
+ isRegExp: isRegExp,
+ isFunction: isFunction,
+ isStream: isStream,
+ isURLSearchParams: isURLSearchParams,
+ isTypedArray: isTypedArray,
+ isFileList: isFileList,
+ forEach: forEach,
+ merge: merge,
+ extend: extend,
+ trim: trim,
+ stripBOM: stripBOM,
+ inherits: inherits,
+ toFlatObject: toFlatObject,
+ kindOf: kindOf,
+ kindOfTest: kindOfTest,
+ endsWith: endsWith,
+ toArray: toArray,
+ forEachEntry: forEachEntry,
+ matchAll: matchAll,
+ isHTMLForm: isHTMLForm,
+ hasOwnProperty: hasOwnProperty,
+ hasOwnProp: hasOwnProperty,
+ // an alias to avoid ESLint no-prototype-builtins detection
+ reduceDescriptors: reduceDescriptors,
+ freezeMethods: freezeMethods,
+ toObjectSet: toObjectSet,
+ toCamelCase: toCamelCase,
+ noop: noop,
+ toFiniteNumber: toFiniteNumber,
+ findKey: findKey,
+ global: _global,
+ isContextDefined: isContextDefined,
+ ALPHABET: ALPHABET,
+ generateString: generateString,
+ isSpecCompliantForm: isSpecCompliantForm,
+ toJSONObject: toJSONObject,
+ isAsyncFn: isAsyncFn,
+ isThenable: isThenable
+ };
+
+ /**
+ * Create an Error with the specified message, config, error code, request and response.
+ *
+ * @param {string} message The error message.
+ * @param {string} [code] The error code (for example, 'ECONNABORTED').
+ * @param {Object} [config] The config.
+ * @param {Object} [request] The request.
+ * @param {Object} [response] The response.
+ *
+ * @returns {Error} The created error.
+ */
+ function AxiosError(message, code, config, request, response) {
+ Error.call(this);
+ if (Error.captureStackTrace) {
+ Error.captureStackTrace(this, this.constructor);
+ } else {
+ this.stack = new Error().stack;
+ }
+ this.message = message;
+ this.name = 'AxiosError';
+ code && (this.code = code);
+ config && (this.config = config);
+ request && (this.request = request);
+ response && (this.response = response);
+ }
+ utils$1.inherits(AxiosError, Error, {
+ toJSON: function toJSON() {
+ return {
+ // Standard
+ message: this.message,
+ name: this.name,
+ // Microsoft
+ description: this.description,
+ number: this.number,
+ // Mozilla
+ fileName: this.fileName,
+ lineNumber: this.lineNumber,
+ columnNumber: this.columnNumber,
+ stack: this.stack,
+ // Axios
+ config: utils$1.toJSONObject(this.config),
+ code: this.code,
+ status: this.response && this.response.status ? this.response.status : null
+ };
+ }
+ });
+ var prototype$1 = AxiosError.prototype;
+ var descriptors = {};
+ ['ERR_BAD_OPTION_VALUE', 'ERR_BAD_OPTION', 'ECONNABORTED', 'ETIMEDOUT', 'ERR_NETWORK', 'ERR_FR_TOO_MANY_REDIRECTS', 'ERR_DEPRECATED', 'ERR_BAD_RESPONSE', 'ERR_BAD_REQUEST', 'ERR_CANCELED', 'ERR_NOT_SUPPORT', 'ERR_INVALID_URL'
+ // eslint-disable-next-line func-names
+ ].forEach(function (code) {
+ descriptors[code] = {
+ value: code
+ };
+ });
+ Object.defineProperties(AxiosError, descriptors);
+ Object.defineProperty(prototype$1, 'isAxiosError', {
+ value: true
+ });
+
+ // eslint-disable-next-line func-names
+ AxiosError.from = function (error, code, config, request, response, customProps) {
+ var axiosError = Object.create(prototype$1);
+ utils$1.toFlatObject(error, axiosError, function filter(obj) {
+ return obj !== Error.prototype;
+ }, function (prop) {
+ return prop !== 'isAxiosError';
+ });
+ AxiosError.call(axiosError, error.message, code, config, request, response);
+ axiosError.cause = error;
+ axiosError.name = error.name;
+ customProps && Object.assign(axiosError, customProps);
+ return axiosError;
+ };
+
+ // eslint-disable-next-line strict
+ var httpAdapter = null;
+
+ /**
+ * Determines if the given thing is a array or js object.
+ *
+ * @param {string} thing - The object or array to be visited.
+ *
+ * @returns {boolean}
+ */
+ function isVisitable(thing) {
+ return utils$1.isPlainObject(thing) || utils$1.isArray(thing);
+ }
+
+ /**
+ * It removes the brackets from the end of a string
+ *
+ * @param {string} key - The key of the parameter.
+ *
+ * @returns {string} the key without the brackets.
+ */
+ function removeBrackets(key) {
+ return utils$1.endsWith(key, '[]') ? key.slice(0, -2) : key;
+ }
+
+ /**
+ * It takes a path, a key, and a boolean, and returns a string
+ *
+ * @param {string} path - The path to the current key.
+ * @param {string} key - The key of the current object being iterated over.
+ * @param {string} dots - If true, the key will be rendered with dots instead of brackets.
+ *
+ * @returns {string} The path to the current key.
+ */
+ function renderKey(path, key, dots) {
+ if (!path) return key;
+ return path.concat(key).map(function each(token, i) {
+ // eslint-disable-next-line no-param-reassign
+ token = removeBrackets(token);
+ return !dots && i ? '[' + token + ']' : token;
+ }).join(dots ? '.' : '');
+ }
+
+ /**
+ * If the array is an array and none of its elements are visitable, then it's a flat array.
+ *
+ * @param {Array} arr - The array to check
+ *
+ * @returns {boolean}
+ */
+ function isFlatArray(arr) {
+ return utils$1.isArray(arr) && !arr.some(isVisitable);
+ }
+ var predicates = utils$1.toFlatObject(utils$1, {}, null, function filter(prop) {
+ return /^is[A-Z]/.test(prop);
+ });
+
+ /**
+ * Convert a data object to FormData
+ *
+ * @param {Object} obj
+ * @param {?Object} [formData]
+ * @param {?Object} [options]
+ * @param {Function} [options.visitor]
+ * @param {Boolean} [options.metaTokens = true]
+ * @param {Boolean} [options.dots = false]
+ * @param {?Boolean} [options.indexes = false]
+ *
+ * @returns {Object}
+ **/
+
+ /**
+ * It converts an object into a FormData object
+ *
+ * @param {Object} obj - The object to convert to form data.
+ * @param {string} formData - The FormData object to append to.
+ * @param {Object} options
+ *
+ * @returns
+ */
+ function toFormData(obj, formData, options) {
+ if (!utils$1.isObject(obj)) {
+ throw new TypeError('target must be an object');
+ }
+
+ // eslint-disable-next-line no-param-reassign
+ formData = formData || new (FormData)();
+
+ // eslint-disable-next-line no-param-reassign
+ options = utils$1.toFlatObject(options, {
+ metaTokens: true,
+ dots: false,
+ indexes: false
+ }, false, function defined(option, source) {
+ // eslint-disable-next-line no-eq-null,eqeqeq
+ return !utils$1.isUndefined(source[option]);
+ });
+ var metaTokens = options.metaTokens;
+ // eslint-disable-next-line no-use-before-define
+ var visitor = options.visitor || defaultVisitor;
+ var dots = options.dots;
+ var indexes = options.indexes;
+ var _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;
+ var useBlob = _Blob && utils$1.isSpecCompliantForm(formData);
+ if (!utils$1.isFunction(visitor)) {
+ throw new TypeError('visitor must be a function');
+ }
+ function convertValue(value) {
+ if (value === null) return '';
+ if (utils$1.isDate(value)) {
+ return value.toISOString();
+ }
+ if (!useBlob && utils$1.isBlob(value)) {
+ throw new AxiosError('Blob is not supported. Use a Buffer instead.');
+ }
+ if (utils$1.isArrayBuffer(value) || utils$1.isTypedArray(value)) {
+ return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);
+ }
+ return value;
+ }
+
+ /**
+ * Default visitor.
+ *
+ * @param {*} value
+ * @param {String|Number} key
+ * @param {Array} path
+ * @this {FormData}
+ *
+ * @returns {boolean} return true to visit the each prop of the value recursively
+ */
+ function defaultVisitor(value, key, path) {
+ var arr = value;
+ if (value && !path && _typeof(value) === 'object') {
+ if (utils$1.endsWith(key, '{}')) {
+ // eslint-disable-next-line no-param-reassign
+ key = metaTokens ? key : key.slice(0, -2);
+ // eslint-disable-next-line no-param-reassign
+ value = JSON.stringify(value);
+ } else if (utils$1.isArray(value) && isFlatArray(value) || (utils$1.isFileList(value) || utils$1.endsWith(key, '[]')) && (arr = utils$1.toArray(value))) {
+ // eslint-disable-next-line no-param-reassign
+ key = removeBrackets(key);
+ arr.forEach(function each(el, index) {
+ !(utils$1.isUndefined(el) || el === null) && formData.append(
+ // eslint-disable-next-line no-nested-ternary
+ indexes === true ? renderKey([key], index, dots) : indexes === null ? key : key + '[]', convertValue(el));
+ });
+ return false;
+ }
+ }
+ if (isVisitable(value)) {
+ return true;
+ }
+ formData.append(renderKey(path, key, dots), convertValue(value));
+ return false;
+ }
+ var stack = [];
+ var exposedHelpers = Object.assign(predicates, {
+ defaultVisitor: defaultVisitor,
+ convertValue: convertValue,
+ isVisitable: isVisitable
+ });
+ function build(value, path) {
+ if (utils$1.isUndefined(value)) return;
+ if (stack.indexOf(value) !== -1) {
+ throw Error('Circular reference detected in ' + path.join('.'));
+ }
+ stack.push(value);
+ utils$1.forEach(value, function each(el, key) {
+ var result = !(utils$1.isUndefined(el) || el === null) && visitor.call(formData, el, utils$1.isString(key) ? key.trim() : key, path, exposedHelpers);
+ if (result === true) {
+ build(el, path ? path.concat(key) : [key]);
+ }
+ });
+ stack.pop();
+ }
+ if (!utils$1.isObject(obj)) {
+ throw new TypeError('data must be an object');
+ }
+ build(obj);
+ return formData;
+ }
+
+ /**
+ * It encodes a string by replacing all characters that are not in the unreserved set with
+ * their percent-encoded equivalents
+ *
+ * @param {string} str - The string to encode.
+ *
+ * @returns {string} The encoded string.
+ */
+ function encode$1(str) {
+ var charMap = {
+ '!': '%21',
+ "'": '%27',
+ '(': '%28',
+ ')': '%29',
+ '~': '%7E',
+ '%20': '+',
+ '%00': '\x00'
+ };
+ return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {
+ return charMap[match];
+ });
+ }
+
+ /**
+ * It takes a params object and converts it to a FormData object
+ *
+ * @param {Object} params - The parameters to be converted to a FormData object.
+ * @param {Object} options - The options object passed to the Axios constructor.
+ *
+ * @returns {void}
+ */
+ function AxiosURLSearchParams(params, options) {
+ this._pairs = [];
+ params && toFormData(params, this, options);
+ }
+ var prototype = AxiosURLSearchParams.prototype;
+ prototype.append = function append(name, value) {
+ this._pairs.push([name, value]);
+ };
+ prototype.toString = function toString(encoder) {
+ var _encode = encoder ? function (value) {
+ return encoder.call(this, value, encode$1);
+ } : encode$1;
+ return this._pairs.map(function each(pair) {
+ return _encode(pair[0]) + '=' + _encode(pair[1]);
+ }, '').join('&');
+ };
+
+ /**
+ * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their
+ * URI encoded counterparts
+ *
+ * @param {string} val The value to be encoded.
+ *
+ * @returns {string} The encoded value.
+ */
+ function encode(val) {
+ return encodeURIComponent(val).replace(/%3A/gi, ':').replace(/%24/g, '$').replace(/%2C/gi, ',').replace(/%20/g, '+').replace(/%5B/gi, '[').replace(/%5D/gi, ']');
+ }
+
+ /**
+ * Build a URL by appending params to the end
+ *
+ * @param {string} url The base of the url (e.g., http://www.google.com)
+ * @param {object} [params] The params to be appended
+ * @param {?object} options
+ *
+ * @returns {string} The formatted url
+ */
+ function buildURL(url, params, options) {
+ /*eslint no-param-reassign:0*/
+ if (!params) {
+ return url;
+ }
+ var _encode = options && options.encode || encode;
+ var serializeFn = options && options.serialize;
+ var serializedParams;
+ if (serializeFn) {
+ serializedParams = serializeFn(params, options);
+ } else {
+ serializedParams = utils$1.isURLSearchParams(params) ? params.toString() : new AxiosURLSearchParams(params, options).toString(_encode);
+ }
+ if (serializedParams) {
+ var hashmarkIndex = url.indexOf("#");
+ if (hashmarkIndex !== -1) {
+ url = url.slice(0, hashmarkIndex);
+ }
+ url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;
+ }
+ return url;
+ }
+
+ var InterceptorManager = /*#__PURE__*/function () {
+ function InterceptorManager() {
+ _classCallCheck(this, InterceptorManager);
+ this.handlers = [];
+ }
+
+ /**
+ * Add a new interceptor to the stack
+ *
+ * @param {Function} fulfilled The function to handle `then` for a `Promise`
+ * @param {Function} rejected The function to handle `reject` for a `Promise`
+ *
+ * @return {Number} An ID used to remove interceptor later
+ */
+ _createClass(InterceptorManager, [{
+ key: "use",
+ value: function use(fulfilled, rejected, options) {
+ this.handlers.push({
+ fulfilled: fulfilled,
+ rejected: rejected,
+ synchronous: options ? options.synchronous : false,
+ runWhen: options ? options.runWhen : null
+ });
+ return this.handlers.length - 1;
+ }
+
+ /**
+ * Remove an interceptor from the stack
+ *
+ * @param {Number} id The ID that was returned by `use`
+ *
+ * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise
+ */
+ }, {
+ key: "eject",
+ value: function eject(id) {
+ if (this.handlers[id]) {
+ this.handlers[id] = null;
+ }
+ }
+
+ /**
+ * Clear all interceptors from the stack
+ *
+ * @returns {void}
+ */
+ }, {
+ key: "clear",
+ value: function clear() {
+ if (this.handlers) {
+ this.handlers = [];
+ }
+ }
+
+ /**
+ * Iterate over all the registered interceptors
+ *
+ * This method is particularly useful for skipping over any
+ * interceptors that may have become `null` calling `eject`.
+ *
+ * @param {Function} fn The function to call for each interceptor
+ *
+ * @returns {void}
+ */
+ }, {
+ key: "forEach",
+ value: function forEach(fn) {
+ utils$1.forEach(this.handlers, function forEachHandler(h) {
+ if (h !== null) {
+ fn(h);
+ }
+ });
+ }
+ }]);
+ return InterceptorManager;
+ }();
+ var InterceptorManager$1 = InterceptorManager;
+
+ var transitionalDefaults = {
+ silentJSONParsing: true,
+ forcedJSONParsing: true,
+ clarifyTimeoutError: false
+ };
+
+ var URLSearchParams$1 = typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;
+
+ var FormData$1 = typeof FormData !== 'undefined' ? FormData : null;
+
+ var Blob$1 = typeof Blob !== 'undefined' ? Blob : null;
+
+ var platform$1 = {
+ isBrowser: true,
+ classes: {
+ URLSearchParams: URLSearchParams$1,
+ FormData: FormData$1,
+ Blob: Blob$1
+ },
+ protocols: ['http', 'https', 'file', 'blob', 'url', 'data']
+ };
+
+ var hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';
+
+ /**
+ * Determine if we're running in a standard browser environment
+ *
+ * This allows axios to run in a web worker, and react-native.
+ * Both environments support XMLHttpRequest, but not fully standard globals.
+ *
+ * web workers:
+ * typeof window -> undefined
+ * typeof document -> undefined
+ *
+ * react-native:
+ * navigator.product -> 'ReactNative'
+ * nativescript
+ * navigator.product -> 'NativeScript' or 'NS'
+ *
+ * @returns {boolean}
+ */
+ var hasStandardBrowserEnv = function (product) {
+ return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0;
+ }(typeof navigator !== 'undefined' && navigator.product);
+
+ /**
+ * Determine if we're running in a standard browser webWorker environment
+ *
+ * Although the `isStandardBrowserEnv` method indicates that
+ * `allows axios to run in a web worker`, the WebWorker will still be
+ * filtered out due to its judgment standard
+ * `typeof window !== 'undefined' && typeof document !== 'undefined'`.
+ * This leads to a problem when axios post `FormData` in webWorker
+ */
+ var hasStandardBrowserWebWorkerEnv = function () {
+ return typeof WorkerGlobalScope !== 'undefined' &&
+ // eslint-disable-next-line no-undef
+ self instanceof WorkerGlobalScope && typeof self.importScripts === 'function';
+ }();
+ var origin = hasBrowserEnv && window.location.href || 'http://localhost';
+
+ var utils = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ hasBrowserEnv: hasBrowserEnv,
+ hasStandardBrowserWebWorkerEnv: hasStandardBrowserWebWorkerEnv,
+ hasStandardBrowserEnv: hasStandardBrowserEnv,
+ origin: origin
+ });
+
+ var platform = _objectSpread2(_objectSpread2({}, utils), platform$1);
+
+ function toURLEncodedForm(data, options) {
+ return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({
+ visitor: function visitor(value, key, path, helpers) {
+ if (platform.isNode && utils$1.isBuffer(value)) {
+ this.append(key, value.toString('base64'));
+ return false;
+ }
+ return helpers.defaultVisitor.apply(this, arguments);
+ }
+ }, options));
+ }
+
+ /**
+ * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']
+ *
+ * @param {string} name - The name of the property to get.
+ *
+ * @returns An array of strings.
+ */
+ function parsePropPath(name) {
+ // foo[x][y][z]
+ // foo.x.y.z
+ // foo-x-y-z
+ // foo x y z
+ return utils$1.matchAll(/\w+|\[(\w*)]/g, name).map(function (match) {
+ return match[0] === '[]' ? '' : match[1] || match[0];
+ });
+ }
+
+ /**
+ * Convert an array to an object.
+ *
+ * @param {Array} arr - The array to convert to an object.
+ *
+ * @returns An object with the same keys and values as the array.
+ */
+ function arrayToObject(arr) {
+ var obj = {};
+ var keys = Object.keys(arr);
+ var i;
+ var len = keys.length;
+ var key;
+ for (i = 0; i < len; i++) {
+ key = keys[i];
+ obj[key] = arr[key];
+ }
+ return obj;
+ }
+
+ /**
+ * It takes a FormData object and returns a JavaScript object
+ *
+ * @param {string} formData The FormData object to convert to JSON.
+ *
+ * @returns {Object | null} The converted object.
+ */
+ function formDataToJSON(formData) {
+ function buildPath(path, value, target, index) {
+ var name = path[index++];
+ if (name === '__proto__') return true;
+ var isNumericKey = Number.isFinite(+name);
+ var isLast = index >= path.length;
+ name = !name && utils$1.isArray(target) ? target.length : name;
+ if (isLast) {
+ if (utils$1.hasOwnProp(target, name)) {
+ target[name] = [target[name], value];
+ } else {
+ target[name] = value;
+ }
+ return !isNumericKey;
+ }
+ if (!target[name] || !utils$1.isObject(target[name])) {
+ target[name] = [];
+ }
+ var result = buildPath(path, value, target[name], index);
+ if (result && utils$1.isArray(target[name])) {
+ target[name] = arrayToObject(target[name]);
+ }
+ return !isNumericKey;
+ }
+ if (utils$1.isFormData(formData) && utils$1.isFunction(formData.entries)) {
+ var obj = {};
+ utils$1.forEachEntry(formData, function (name, value) {
+ buildPath(parsePropPath(name), value, obj, 0);
+ });
+ return obj;
+ }
+ return null;
+ }
+
+ /**
+ * It takes a string, tries to parse it, and if it fails, it returns the stringified version
+ * of the input
+ *
+ * @param {any} rawValue - The value to be stringified.
+ * @param {Function} parser - A function that parses a string into a JavaScript object.
+ * @param {Function} encoder - A function that takes a value and returns a string.
+ *
+ * @returns {string} A stringified version of the rawValue.
+ */
+ function stringifySafely(rawValue, parser, encoder) {
+ if (utils$1.isString(rawValue)) {
+ try {
+ (parser || JSON.parse)(rawValue);
+ return utils$1.trim(rawValue);
+ } catch (e) {
+ if (e.name !== 'SyntaxError') {
+ throw e;
+ }
+ }
+ }
+ return (encoder || JSON.stringify)(rawValue);
+ }
+ var defaults = {
+ transitional: transitionalDefaults,
+ adapter: ['xhr', 'http', 'fetch'],
+ transformRequest: [function transformRequest(data, headers) {
+ var contentType = headers.getContentType() || '';
+ var hasJSONContentType = contentType.indexOf('application/json') > -1;
+ var isObjectPayload = utils$1.isObject(data);
+ if (isObjectPayload && utils$1.isHTMLForm(data)) {
+ data = new FormData(data);
+ }
+ var isFormData = utils$1.isFormData(data);
+ if (isFormData) {
+ return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;
+ }
+ if (utils$1.isArrayBuffer(data) || utils$1.isBuffer(data) || utils$1.isStream(data) || utils$1.isFile(data) || utils$1.isBlob(data) || utils$1.isReadableStream(data)) {
+ return data;
+ }
+ if (utils$1.isArrayBufferView(data)) {
+ return data.buffer;
+ }
+ if (utils$1.isURLSearchParams(data)) {
+ headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);
+ return data.toString();
+ }
+ var isFileList;
+ if (isObjectPayload) {
+ if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {
+ return toURLEncodedForm(data, this.formSerializer).toString();
+ }
+ if ((isFileList = utils$1.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {
+ var _FormData = this.env && this.env.FormData;
+ return toFormData(isFileList ? {
+ 'files[]': data
+ } : data, _FormData && new _FormData(), this.formSerializer);
+ }
+ }
+ if (isObjectPayload || hasJSONContentType) {
+ headers.setContentType('application/json', false);
+ return stringifySafely(data);
+ }
+ return data;
+ }],
+ transformResponse: [function transformResponse(data) {
+ var transitional = this.transitional || defaults.transitional;
+ var forcedJSONParsing = transitional && transitional.forcedJSONParsing;
+ var JSONRequested = this.responseType === 'json';
+ if (utils$1.isResponse(data) || utils$1.isReadableStream(data)) {
+ return data;
+ }
+ if (data && utils$1.isString(data) && (forcedJSONParsing && !this.responseType || JSONRequested)) {
+ var silentJSONParsing = transitional && transitional.silentJSONParsing;
+ var strictJSONParsing = !silentJSONParsing && JSONRequested;
+ try {
+ return JSON.parse(data);
+ } catch (e) {
+ if (strictJSONParsing) {
+ if (e.name === 'SyntaxError') {
+ throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);
+ }
+ throw e;
+ }
+ }
+ }
+ return data;
+ }],
+ /**
+ * A timeout in milliseconds to abort a request. If set to 0 (default) a
+ * timeout is not created.
+ */
+ timeout: 0,
+ xsrfCookieName: 'XSRF-TOKEN',
+ xsrfHeaderName: 'X-XSRF-TOKEN',
+ maxContentLength: -1,
+ maxBodyLength: -1,
+ env: {
+ FormData: platform.classes.FormData,
+ Blob: platform.classes.Blob
+ },
+ validateStatus: function validateStatus(status) {
+ return status >= 200 && status < 300;
+ },
+ headers: {
+ common: {
+ 'Accept': 'application/json, text/plain, */*',
+ 'Content-Type': undefined
+ }
+ }
+ };
+ utils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], function (method) {
+ defaults.headers[method] = {};
+ });
+ var defaults$1 = defaults;
+
+ // RawAxiosHeaders whose duplicates are ignored by node
+ // c.f. https://nodejs.org/api/http.html#http_message_headers
+ var ignoreDuplicateOf = utils$1.toObjectSet(['age', 'authorization', 'content-length', 'content-type', 'etag', 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', 'last-modified', 'location', 'max-forwards', 'proxy-authorization', 'referer', 'retry-after', 'user-agent']);
+
+ /**
+ * Parse headers into an object
+ *
+ * ```
+ * Date: Wed, 27 Aug 2014 08:58:49 GMT
+ * Content-Type: application/json
+ * Connection: keep-alive
+ * Transfer-Encoding: chunked
+ * ```
+ *
+ * @param {String} rawHeaders Headers needing to be parsed
+ *
+ * @returns {Object} Headers parsed into an object
+ */
+ var parseHeaders = (function (rawHeaders) {
+ var parsed = {};
+ var key;
+ var val;
+ var i;
+ rawHeaders && rawHeaders.split('\n').forEach(function parser(line) {
+ i = line.indexOf(':');
+ key = line.substring(0, i).trim().toLowerCase();
+ val = line.substring(i + 1).trim();
+ if (!key || parsed[key] && ignoreDuplicateOf[key]) {
+ return;
+ }
+ if (key === 'set-cookie') {
+ if (parsed[key]) {
+ parsed[key].push(val);
+ } else {
+ parsed[key] = [val];
+ }
+ } else {
+ parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;
+ }
+ });
+ return parsed;
+ });
+
+ var $internals = Symbol('internals');
+ function normalizeHeader(header) {
+ return header && String(header).trim().toLowerCase();
+ }
+ function normalizeValue(value) {
+ if (value === false || value == null) {
+ return value;
+ }
+ return utils$1.isArray(value) ? value.map(normalizeValue) : String(value);
+ }
+ function parseTokens(str) {
+ var tokens = Object.create(null);
+ var tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;
+ var match;
+ while (match = tokensRE.exec(str)) {
+ tokens[match[1]] = match[2];
+ }
+ return tokens;
+ }
+ var isValidHeaderName = function isValidHeaderName(str) {
+ return /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());
+ };
+ function matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {
+ if (utils$1.isFunction(filter)) {
+ return filter.call(this, value, header);
+ }
+ if (isHeaderNameFilter) {
+ value = header;
+ }
+ if (!utils$1.isString(value)) return;
+ if (utils$1.isString(filter)) {
+ return value.indexOf(filter) !== -1;
+ }
+ if (utils$1.isRegExp(filter)) {
+ return filter.test(value);
+ }
+ }
+ function formatHeader(header) {
+ return header.trim().toLowerCase().replace(/([a-z\d])(\w*)/g, function (w, _char, str) {
+ return _char.toUpperCase() + str;
+ });
+ }
+ function buildAccessors(obj, header) {
+ var accessorName = utils$1.toCamelCase(' ' + header);
+ ['get', 'set', 'has'].forEach(function (methodName) {
+ Object.defineProperty(obj, methodName + accessorName, {
+ value: function value(arg1, arg2, arg3) {
+ return this[methodName].call(this, header, arg1, arg2, arg3);
+ },
+ configurable: true
+ });
+ });
+ }
+ var AxiosHeaders = /*#__PURE__*/function (_Symbol$iterator, _Symbol$toStringTag) {
+ function AxiosHeaders(headers) {
+ _classCallCheck(this, AxiosHeaders);
+ headers && this.set(headers);
+ }
+ _createClass(AxiosHeaders, [{
+ key: "set",
+ value: function set(header, valueOrRewrite, rewrite) {
+ var self = this;
+ function setHeader(_value, _header, _rewrite) {
+ var lHeader = normalizeHeader(_header);
+ if (!lHeader) {
+ throw new Error('header name must be a non-empty string');
+ }
+ var key = utils$1.findKey(self, lHeader);
+ if (!key || self[key] === undefined || _rewrite === true || _rewrite === undefined && self[key] !== false) {
+ self[key || _header] = normalizeValue(_value);
+ }
+ }
+ var setHeaders = function setHeaders(headers, _rewrite) {
+ return utils$1.forEach(headers, function (_value, _header) {
+ return setHeader(_value, _header, _rewrite);
+ });
+ };
+ if (utils$1.isPlainObject(header) || header instanceof this.constructor) {
+ setHeaders(header, valueOrRewrite);
+ } else if (utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {
+ setHeaders(parseHeaders(header), valueOrRewrite);
+ } else if (utils$1.isHeaders(header)) {
+ var _iterator = _createForOfIteratorHelper(header.entries()),
+ _step;
+ try {
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
+ var _step$value = _slicedToArray(_step.value, 2),
+ key = _step$value[0],
+ value = _step$value[1];
+ setHeader(value, key, rewrite);
+ }
+ } catch (err) {
+ _iterator.e(err);
+ } finally {
+ _iterator.f();
+ }
+ } else {
+ header != null && setHeader(valueOrRewrite, header, rewrite);
+ }
+ return this;
+ }
+ }, {
+ key: "get",
+ value: function get(header, parser) {
+ header = normalizeHeader(header);
+ if (header) {
+ var key = utils$1.findKey(this, header);
+ if (key) {
+ var value = this[key];
+ if (!parser) {
+ return value;
+ }
+ if (parser === true) {
+ return parseTokens(value);
+ }
+ if (utils$1.isFunction(parser)) {
+ return parser.call(this, value, key);
+ }
+ if (utils$1.isRegExp(parser)) {
+ return parser.exec(value);
+ }
+ throw new TypeError('parser must be boolean|regexp|function');
+ }
+ }
+ }
+ }, {
+ key: "has",
+ value: function has(header, matcher) {
+ header = normalizeHeader(header);
+ if (header) {
+ var key = utils$1.findKey(this, header);
+ return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));
+ }
+ return false;
+ }
+ }, {
+ key: "delete",
+ value: function _delete(header, matcher) {
+ var self = this;
+ var deleted = false;
+ function deleteHeader(_header) {
+ _header = normalizeHeader(_header);
+ if (_header) {
+ var key = utils$1.findKey(self, _header);
+ if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {
+ delete self[key];
+ deleted = true;
+ }
+ }
+ }
+ if (utils$1.isArray(header)) {
+ header.forEach(deleteHeader);
+ } else {
+ deleteHeader(header);
+ }
+ return deleted;
+ }
+ }, {
+ key: "clear",
+ value: function clear(matcher) {
+ var keys = Object.keys(this);
+ var i = keys.length;
+ var deleted = false;
+ while (i--) {
+ var key = keys[i];
+ if (!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {
+ delete this[key];
+ deleted = true;
+ }
+ }
+ return deleted;
+ }
+ }, {
+ key: "normalize",
+ value: function normalize(format) {
+ var self = this;
+ var headers = {};
+ utils$1.forEach(this, function (value, header) {
+ var key = utils$1.findKey(headers, header);
+ if (key) {
+ self[key] = normalizeValue(value);
+ delete self[header];
+ return;
+ }
+ var normalized = format ? formatHeader(header) : String(header).trim();
+ if (normalized !== header) {
+ delete self[header];
+ }
+ self[normalized] = normalizeValue(value);
+ headers[normalized] = true;
+ });
+ return this;
+ }
+ }, {
+ key: "concat",
+ value: function concat() {
+ var _this$constructor;
+ for (var _len = arguments.length, targets = new Array(_len), _key = 0; _key < _len; _key++) {
+ targets[_key] = arguments[_key];
+ }
+ return (_this$constructor = this.constructor).concat.apply(_this$constructor, [this].concat(targets));
+ }
+ }, {
+ key: "toJSON",
+ value: function toJSON(asStrings) {
+ var obj = Object.create(null);
+ utils$1.forEach(this, function (value, header) {
+ value != null && value !== false && (obj[header] = asStrings && utils$1.isArray(value) ? value.join(', ') : value);
+ });
+ return obj;
+ }
+ }, {
+ key: _Symbol$iterator,
+ value: function value() {
+ return Object.entries(this.toJSON())[Symbol.iterator]();
+ }
+ }, {
+ key: "toString",
+ value: function toString() {
+ return Object.entries(this.toJSON()).map(function (_ref) {
+ var _ref2 = _slicedToArray(_ref, 2),
+ header = _ref2[0],
+ value = _ref2[1];
+ return header + ': ' + value;
+ }).join('\n');
+ }
+ }, {
+ key: _Symbol$toStringTag,
+ get: function get() {
+ return 'AxiosHeaders';
+ }
+ }], [{
+ key: "from",
+ value: function from(thing) {
+ return thing instanceof this ? thing : new this(thing);
+ }
+ }, {
+ key: "concat",
+ value: function concat(first) {
+ var computed = new this(first);
+ for (var _len2 = arguments.length, targets = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
+ targets[_key2 - 1] = arguments[_key2];
+ }
+ targets.forEach(function (target) {
+ return computed.set(target);
+ });
+ return computed;
+ }
+ }, {
+ key: "accessor",
+ value: function accessor(header) {
+ var internals = this[$internals] = this[$internals] = {
+ accessors: {}
+ };
+ var accessors = internals.accessors;
+ var prototype = this.prototype;
+ function defineAccessor(_header) {
+ var lHeader = normalizeHeader(_header);
+ if (!accessors[lHeader]) {
+ buildAccessors(prototype, _header);
+ accessors[lHeader] = true;
+ }
+ }
+ utils$1.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);
+ return this;
+ }
+ }]);
+ return AxiosHeaders;
+ }(Symbol.iterator, Symbol.toStringTag);
+ AxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);
+
+ // reserved names hotfix
+ utils$1.reduceDescriptors(AxiosHeaders.prototype, function (_ref3, key) {
+ var value = _ref3.value;
+ var mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`
+ return {
+ get: function get() {
+ return value;
+ },
+ set: function set(headerValue) {
+ this[mapped] = headerValue;
+ }
+ };
+ });
+ utils$1.freezeMethods(AxiosHeaders);
+ var AxiosHeaders$1 = AxiosHeaders;
+
+ /**
+ * Transform the data for a request or a response
+ *
+ * @param {Array|Function} fns A single function or Array of functions
+ * @param {?Object} response The response object
+ *
+ * @returns {*} The resulting transformed data
+ */
+ function transformData(fns, response) {
+ var config = this || defaults$1;
+ var context = response || config;
+ var headers = AxiosHeaders$1.from(context.headers);
+ var data = context.data;
+ utils$1.forEach(fns, function transform(fn) {
+ data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);
+ });
+ headers.normalize();
+ return data;
+ }
+
+ function isCancel(value) {
+ return !!(value && value.__CANCEL__);
+ }
+
+ /**
+ * A `CanceledError` is an object that is thrown when an operation is canceled.
+ *
+ * @param {string=} message The message.
+ * @param {Object=} config The config.
+ * @param {Object=} request The request.
+ *
+ * @returns {CanceledError} The created error.
+ */
+ function CanceledError(message, config, request) {
+ // eslint-disable-next-line no-eq-null,eqeqeq
+ AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);
+ this.name = 'CanceledError';
+ }
+ utils$1.inherits(CanceledError, AxiosError, {
+ __CANCEL__: true
+ });
+
+ /**
+ * Resolve or reject a Promise based on response status.
+ *
+ * @param {Function} resolve A function that resolves the promise.
+ * @param {Function} reject A function that rejects the promise.
+ * @param {object} response The response.
+ *
+ * @returns {object} The response.
+ */
+ function settle(resolve, reject, response) {
+ var validateStatus = response.config.validateStatus;
+ if (!response.status || !validateStatus || validateStatus(response.status)) {
+ resolve(response);
+ } else {
+ reject(new AxiosError('Request failed with status code ' + response.status, [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4], response.config, response.request, response));
+ }
+ }
+
+ function parseProtocol(url) {
+ var match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url);
+ return match && match[1] || '';
+ }
+
+ /**
+ * Calculate data maxRate
+ * @param {Number} [samplesCount= 10]
+ * @param {Number} [min= 1000]
+ * @returns {Function}
+ */
+ function speedometer(samplesCount, min) {
+ samplesCount = samplesCount || 10;
+ var bytes = new Array(samplesCount);
+ var timestamps = new Array(samplesCount);
+ var head = 0;
+ var tail = 0;
+ var firstSampleTS;
+ min = min !== undefined ? min : 1000;
+ return function push(chunkLength) {
+ var now = Date.now();
+ var startedAt = timestamps[tail];
+ if (!firstSampleTS) {
+ firstSampleTS = now;
+ }
+ bytes[head] = chunkLength;
+ timestamps[head] = now;
+ var i = tail;
+ var bytesCount = 0;
+ while (i !== head) {
+ bytesCount += bytes[i++];
+ i = i % samplesCount;
+ }
+ head = (head + 1) % samplesCount;
+ if (head === tail) {
+ tail = (tail + 1) % samplesCount;
+ }
+ if (now - firstSampleTS < min) {
+ return;
+ }
+ var passed = startedAt && now - startedAt;
+ return passed ? Math.round(bytesCount * 1000 / passed) : undefined;
+ };
+ }
+
+ /**
+ * Throttle decorator
+ * @param {Function} fn
+ * @param {Number} freq
+ * @return {Function}
+ */
+ function throttle(fn, freq) {
+ var timestamp = 0;
+ var threshold = 1000 / freq;
+ var timer = null;
+ return function throttled() {
+ var _arguments = arguments;
+ var force = this === true;
+ var now = Date.now();
+ if (force || now - timestamp > threshold) {
+ if (timer) {
+ clearTimeout(timer);
+ timer = null;
+ }
+ timestamp = now;
+ return fn.apply(null, arguments);
+ }
+ if (!timer) {
+ timer = setTimeout(function () {
+ timer = null;
+ timestamp = Date.now();
+ return fn.apply(null, _arguments);
+ }, threshold - (now - timestamp));
+ }
+ };
+ }
+
+ var progressEventReducer = (function (listener, isDownloadStream) {
+ var freq = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 3;
+ var bytesNotified = 0;
+ var _speedometer = speedometer(50, 250);
+ return throttle(function (e) {
+ var loaded = e.loaded;
+ var total = e.lengthComputable ? e.total : undefined;
+ var progressBytes = loaded - bytesNotified;
+ var rate = _speedometer(progressBytes);
+ var inRange = loaded <= total;
+ bytesNotified = loaded;
+ var data = {
+ loaded: loaded,
+ total: total,
+ progress: total ? loaded / total : undefined,
+ bytes: progressBytes,
+ rate: rate ? rate : undefined,
+ estimated: rate && total && inRange ? (total - loaded) / rate : undefined,
+ event: e,
+ lengthComputable: total != null
+ };
+ data[isDownloadStream ? 'download' : 'upload'] = true;
+ listener(data);
+ }, freq);
+ });
+
+ var isURLSameOrigin = platform.hasStandardBrowserEnv ?
+ // Standard browser envs have full support of the APIs needed to test
+ // whether the request URL is of the same origin as current location.
+ function standardBrowserEnv() {
+ var msie = /(msie|trident)/i.test(navigator.userAgent);
+ var urlParsingNode = document.createElement('a');
+ var originURL;
+
+ /**
+ * Parse a URL to discover its components
+ *
+ * @param {String} url The URL to be parsed
+ * @returns {Object}
+ */
+ function resolveURL(url) {
+ var href = url;
+ if (msie) {
+ // IE needs attribute set twice to normalize properties
+ urlParsingNode.setAttribute('href', href);
+ href = urlParsingNode.href;
+ }
+ urlParsingNode.setAttribute('href', href);
+
+ // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils
+ return {
+ href: urlParsingNode.href,
+ protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',
+ host: urlParsingNode.host,
+ search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '',
+ hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',
+ hostname: urlParsingNode.hostname,
+ port: urlParsingNode.port,
+ pathname: urlParsingNode.pathname.charAt(0) === '/' ? urlParsingNode.pathname : '/' + urlParsingNode.pathname
+ };
+ }
+ originURL = resolveURL(window.location.href);
+
+ /**
+ * Determine if a URL shares the same origin as the current location
+ *
+ * @param {String} requestURL The URL to test
+ * @returns {boolean} True if URL shares the same origin, otherwise false
+ */
+ return function isURLSameOrigin(requestURL) {
+ var parsed = utils$1.isString(requestURL) ? resolveURL(requestURL) : requestURL;
+ return parsed.protocol === originURL.protocol && parsed.host === originURL.host;
+ };
+ }() :
+ // Non standard browser envs (web workers, react-native) lack needed support.
+ function nonStandardBrowserEnv() {
+ return function isURLSameOrigin() {
+ return true;
+ };
+ }();
+
+ var cookies = platform.hasStandardBrowserEnv ?
+ // Standard browser envs support document.cookie
+ {
+ write: function write(name, value, expires, path, domain, secure) {
+ var cookie = [name + '=' + encodeURIComponent(value)];
+ utils$1.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());
+ utils$1.isString(path) && cookie.push('path=' + path);
+ utils$1.isString(domain) && cookie.push('domain=' + domain);
+ secure === true && cookie.push('secure');
+ document.cookie = cookie.join('; ');
+ },
+ read: function read(name) {
+ var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)'));
+ return match ? decodeURIComponent(match[3]) : null;
+ },
+ remove: function remove(name) {
+ this.write(name, '', Date.now() - 86400000);
+ }
+ } :
+ // Non-standard browser env (web workers, react-native) lack needed support.
+ {
+ write: function write() {},
+ read: function read() {
+ return null;
+ },
+ remove: function remove() {}
+ };
+
+ /**
+ * Determines whether the specified URL is absolute
+ *
+ * @param {string} url The URL to test
+ *
+ * @returns {boolean} True if the specified URL is absolute, otherwise false
+ */
+ function isAbsoluteURL(url) {
+ // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL).
+ // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed
+ // by any combination of letters, digits, plus, period, or hyphen.
+ return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url);
+ }
+
+ /**
+ * Creates a new URL by combining the specified URLs
+ *
+ * @param {string} baseURL The base URL
+ * @param {string} relativeURL The relative URL
+ *
+ * @returns {string} The combined URL
+ */
+ function combineURLs(baseURL, relativeURL) {
+ return relativeURL ? baseURL.replace(/\/?\/$/, '') + '/' + relativeURL.replace(/^\/+/, '') : baseURL;
+ }
+
+ /**
+ * Creates a new URL by combining the baseURL with the requestedURL,
+ * only when the requestedURL is not already an absolute URL.
+ * If the requestURL is absolute, this function returns the requestedURL untouched.
+ *
+ * @param {string} baseURL The base URL
+ * @param {string} requestedURL Absolute or relative URL to combine
+ *
+ * @returns {string} The combined full path
+ */
+ function buildFullPath(baseURL, requestedURL) {
+ if (baseURL && !isAbsoluteURL(requestedURL)) {
+ return combineURLs(baseURL, requestedURL);
+ }
+ return requestedURL;
+ }
+
+ var headersToObject = function headersToObject(thing) {
+ return thing instanceof AxiosHeaders$1 ? _objectSpread2({}, thing) : thing;
+ };
+
+ /**
+ * Config-specific merge-function which creates a new config-object
+ * by merging two configuration objects together.
+ *
+ * @param {Object} config1
+ * @param {Object} config2
+ *
+ * @returns {Object} New object resulting from merging config2 to config1
+ */
+ function mergeConfig(config1, config2) {
+ // eslint-disable-next-line no-param-reassign
+ config2 = config2 || {};
+ var config = {};
+ function getMergedValue(target, source, caseless) {
+ if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) {
+ return utils$1.merge.call({
+ caseless: caseless
+ }, target, source);
+ } else if (utils$1.isPlainObject(source)) {
+ return utils$1.merge({}, source);
+ } else if (utils$1.isArray(source)) {
+ return source.slice();
+ }
+ return source;
+ }
+
+ // eslint-disable-next-line consistent-return
+ function mergeDeepProperties(a, b, caseless) {
+ if (!utils$1.isUndefined(b)) {
+ return getMergedValue(a, b, caseless);
+ } else if (!utils$1.isUndefined(a)) {
+ return getMergedValue(undefined, a, caseless);
+ }
+ }
+
+ // eslint-disable-next-line consistent-return
+ function valueFromConfig2(a, b) {
+ if (!utils$1.isUndefined(b)) {
+ return getMergedValue(undefined, b);
+ }
+ }
+
+ // eslint-disable-next-line consistent-return
+ function defaultToConfig2(a, b) {
+ if (!utils$1.isUndefined(b)) {
+ return getMergedValue(undefined, b);
+ } else if (!utils$1.isUndefined(a)) {
+ return getMergedValue(undefined, a);
+ }
+ }
+
+ // eslint-disable-next-line consistent-return
+ function mergeDirectKeys(a, b, prop) {
+ if (prop in config2) {
+ return getMergedValue(a, b);
+ } else if (prop in config1) {
+ return getMergedValue(undefined, a);
+ }
+ }
+ var mergeMap = {
+ url: valueFromConfig2,
+ method: valueFromConfig2,
+ data: valueFromConfig2,
+ baseURL: defaultToConfig2,
+ transformRequest: defaultToConfig2,
+ transformResponse: defaultToConfig2,
+ paramsSerializer: defaultToConfig2,
+ timeout: defaultToConfig2,
+ timeoutMessage: defaultToConfig2,
+ withCredentials: defaultToConfig2,
+ withXSRFToken: defaultToConfig2,
+ adapter: defaultToConfig2,
+ responseType: defaultToConfig2,
+ xsrfCookieName: defaultToConfig2,
+ xsrfHeaderName: defaultToConfig2,
+ onUploadProgress: defaultToConfig2,
+ onDownloadProgress: defaultToConfig2,
+ decompress: defaultToConfig2,
+ maxContentLength: defaultToConfig2,
+ maxBodyLength: defaultToConfig2,
+ beforeRedirect: defaultToConfig2,
+ transport: defaultToConfig2,
+ httpAgent: defaultToConfig2,
+ httpsAgent: defaultToConfig2,
+ cancelToken: defaultToConfig2,
+ socketPath: defaultToConfig2,
+ responseEncoding: defaultToConfig2,
+ validateStatus: mergeDirectKeys,
+ headers: function headers(a, b) {
+ return mergeDeepProperties(headersToObject(a), headersToObject(b), true);
+ }
+ };
+ utils$1.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {
+ var merge = mergeMap[prop] || mergeDeepProperties;
+ var configValue = merge(config1[prop], config2[prop], prop);
+ utils$1.isUndefined(configValue) && merge !== mergeDirectKeys || (config[prop] = configValue);
+ });
+ return config;
+ }
+
+ var resolveConfig = (function (config) {
+ var newConfig = mergeConfig({}, config);
+ var data = newConfig.data,
+ withXSRFToken = newConfig.withXSRFToken,
+ xsrfHeaderName = newConfig.xsrfHeaderName,
+ xsrfCookieName = newConfig.xsrfCookieName,
+ headers = newConfig.headers,
+ auth = newConfig.auth;
+ newConfig.headers = headers = AxiosHeaders$1.from(headers);
+ newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url), config.params, config.paramsSerializer);
+
+ // HTTP basic authentication
+ if (auth) {
+ headers.set('Authorization', 'Basic ' + btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : '')));
+ }
+ var contentType;
+ if (utils$1.isFormData(data)) {
+ if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {
+ headers.setContentType(undefined); // Let the browser set it
+ } else if ((contentType = headers.getContentType()) !== false) {
+ // fix semicolon duplication issue for ReactNative FormData implementation
+ var _ref = contentType ? contentType.split(';').map(function (token) {
+ return token.trim();
+ }).filter(Boolean) : [],
+ _ref2 = _toArray(_ref),
+ type = _ref2[0],
+ tokens = _ref2.slice(1);
+ headers.setContentType([type || 'multipart/form-data'].concat(_toConsumableArray(tokens)).join('; '));
+ }
+ }
+
+ // Add xsrf header
+ // This is only done if running in a standard browser environment.
+ // Specifically not if we're in a web worker, or react-native.
+
+ if (platform.hasStandardBrowserEnv) {
+ withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));
+ if (withXSRFToken || withXSRFToken !== false && isURLSameOrigin(newConfig.url)) {
+ // Add xsrf header
+ var xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);
+ if (xsrfValue) {
+ headers.set(xsrfHeaderName, xsrfValue);
+ }
+ }
+ }
+ return newConfig;
+ });
+
+ var isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';
+ var xhrAdapter = isXHRAdapterSupported && function (config) {
+ return new Promise(function dispatchXhrRequest(resolve, reject) {
+ var _config = resolveConfig(config);
+ var requestData = _config.data;
+ var requestHeaders = AxiosHeaders$1.from(_config.headers).normalize();
+ var responseType = _config.responseType;
+ var onCanceled;
+ function done() {
+ if (_config.cancelToken) {
+ _config.cancelToken.unsubscribe(onCanceled);
+ }
+ if (_config.signal) {
+ _config.signal.removeEventListener('abort', onCanceled);
+ }
+ }
+ var request = new XMLHttpRequest();
+ request.open(_config.method.toUpperCase(), _config.url, true);
+
+ // Set the request timeout in MS
+ request.timeout = _config.timeout;
+ function onloadend() {
+ if (!request) {
+ return;
+ }
+ // Prepare the response
+ var responseHeaders = AxiosHeaders$1.from('getAllResponseHeaders' in request && request.getAllResponseHeaders());
+ var responseData = !responseType || responseType === 'text' || responseType === 'json' ? request.responseText : request.response;
+ var response = {
+ data: responseData,
+ status: request.status,
+ statusText: request.statusText,
+ headers: responseHeaders,
+ config: config,
+ request: request
+ };
+ settle(function _resolve(value) {
+ resolve(value);
+ done();
+ }, function _reject(err) {
+ reject(err);
+ done();
+ }, response);
+
+ // Clean up request
+ request = null;
+ }
+ if ('onloadend' in request) {
+ // Use onloadend if available
+ request.onloadend = onloadend;
+ } else {
+ // Listen for ready state to emulate onloadend
+ request.onreadystatechange = function handleLoad() {
+ if (!request || request.readyState !== 4) {
+ return;
+ }
+
+ // The request errored out and we didn't get a response, this will be
+ // handled by onerror instead
+ // With one exception: request that using file: protocol, most browsers
+ // will return status as 0 even though it's a successful request
+ if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {
+ return;
+ }
+ // readystate handler is calling before onerror or ontimeout handlers,
+ // so we should call onloadend on the next 'tick'
+ setTimeout(onloadend);
+ };
+ }
+
+ // Handle browser request cancellation (as opposed to a manual cancellation)
+ request.onabort = function handleAbort() {
+ if (!request) {
+ return;
+ }
+ reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, _config, request));
+
+ // Clean up request
+ request = null;
+ };
+
+ // Handle low level network errors
+ request.onerror = function handleError() {
+ // Real errors are hidden from us by the browser
+ // onerror should only fire if it's a network error
+ reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, _config, request));
+
+ // Clean up request
+ request = null;
+ };
+
+ // Handle timeout
+ request.ontimeout = function handleTimeout() {
+ var timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';
+ var transitional = _config.transitional || transitionalDefaults;
+ if (_config.timeoutErrorMessage) {
+ timeoutErrorMessage = _config.timeoutErrorMessage;
+ }
+ reject(new AxiosError(timeoutErrorMessage, transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, _config, request));
+
+ // Clean up request
+ request = null;
+ };
+
+ // Remove Content-Type if data is undefined
+ requestData === undefined && requestHeaders.setContentType(null);
+
+ // Add headers to the request
+ if ('setRequestHeader' in request) {
+ utils$1.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {
+ request.setRequestHeader(key, val);
+ });
+ }
+
+ // Add withCredentials to request if needed
+ if (!utils$1.isUndefined(_config.withCredentials)) {
+ request.withCredentials = !!_config.withCredentials;
+ }
+
+ // Add responseType to request if needed
+ if (responseType && responseType !== 'json') {
+ request.responseType = _config.responseType;
+ }
+
+ // Handle progress if needed
+ if (typeof _config.onDownloadProgress === 'function') {
+ request.addEventListener('progress', progressEventReducer(_config.onDownloadProgress, true));
+ }
+
+ // Not all browsers support upload events
+ if (typeof _config.onUploadProgress === 'function' && request.upload) {
+ request.upload.addEventListener('progress', progressEventReducer(_config.onUploadProgress));
+ }
+ if (_config.cancelToken || _config.signal) {
+ // Handle cancellation
+ // eslint-disable-next-line func-names
+ onCanceled = function onCanceled(cancel) {
+ if (!request) {
+ return;
+ }
+ reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);
+ request.abort();
+ request = null;
+ };
+ _config.cancelToken && _config.cancelToken.subscribe(onCanceled);
+ if (_config.signal) {
+ _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);
+ }
+ }
+ var protocol = parseProtocol(_config.url);
+ if (protocol && platform.protocols.indexOf(protocol) === -1) {
+ reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));
+ return;
+ }
+
+ // Send the request
+ request.send(requestData || null);
+ });
+ };
+
+ var composeSignals = function composeSignals(signals, timeout) {
+ var controller = new AbortController();
+ var aborted;
+ var onabort = function onabort(cancel) {
+ if (!aborted) {
+ aborted = true;
+ unsubscribe();
+ var err = cancel instanceof Error ? cancel : this.reason;
+ controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));
+ }
+ };
+ var timer = timeout && setTimeout(function () {
+ onabort(new AxiosError("timeout ".concat(timeout, " of ms exceeded"), AxiosError.ETIMEDOUT));
+ }, timeout);
+ var unsubscribe = function unsubscribe() {
+ if (signals) {
+ timer && clearTimeout(timer);
+ timer = null;
+ signals.forEach(function (signal) {
+ signal && (signal.removeEventListener ? signal.removeEventListener('abort', onabort) : signal.unsubscribe(onabort));
+ });
+ signals = null;
+ }
+ };
+ signals.forEach(function (signal) {
+ return signal && signal.addEventListener && signal.addEventListener('abort', onabort);
+ });
+ var signal = controller.signal;
+ signal.unsubscribe = unsubscribe;
+ return [signal, function () {
+ timer && clearTimeout(timer);
+ timer = null;
+ }];
+ };
+ var composeSignals$1 = composeSignals;
+
+ var streamChunk = /*#__PURE__*/_regeneratorRuntime().mark(function streamChunk(chunk, chunkSize) {
+ var len, pos, end;
+ return _regeneratorRuntime().wrap(function streamChunk$(_context) {
+ while (1) switch (_context.prev = _context.next) {
+ case 0:
+ len = chunk.byteLength;
+ if (!(!chunkSize || len < chunkSize)) {
+ _context.next = 5;
+ break;
+ }
+ _context.next = 4;
+ return chunk;
+ case 4:
+ return _context.abrupt("return");
+ case 5:
+ pos = 0;
+ case 6:
+ if (!(pos < len)) {
+ _context.next = 13;
+ break;
+ }
+ end = pos + chunkSize;
+ _context.next = 10;
+ return chunk.slice(pos, end);
+ case 10:
+ pos = end;
+ _context.next = 6;
+ break;
+ case 13:
+ case "end":
+ return _context.stop();
+ }
+ }, streamChunk);
+ });
+ var readBytes = /*#__PURE__*/function () {
+ var _ref = _wrapAsyncGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(iterable, chunkSize, encode) {
+ var _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _iterator, _step, chunk;
+ return _regeneratorRuntime().wrap(function _callee$(_context2) {
+ while (1) switch (_context2.prev = _context2.next) {
+ case 0:
+ _iteratorAbruptCompletion = false;
+ _didIteratorError = false;
+ _context2.prev = 2;
+ _iterator = _asyncIterator(iterable);
+ case 4:
+ _context2.next = 6;
+ return _awaitAsyncGenerator(_iterator.next());
+ case 6:
+ if (!(_iteratorAbruptCompletion = !(_step = _context2.sent).done)) {
+ _context2.next = 27;
+ break;
+ }
+ chunk = _step.value;
+ _context2.t0 = _asyncGeneratorDelegate;
+ _context2.t1 = _asyncIterator;
+ _context2.t2 = streamChunk;
+ if (!ArrayBuffer.isView(chunk)) {
+ _context2.next = 15;
+ break;
+ }
+ _context2.t3 = chunk;
+ _context2.next = 18;
+ break;
+ case 15:
+ _context2.next = 17;
+ return _awaitAsyncGenerator(encode(String(chunk)));
+ case 17:
+ _context2.t3 = _context2.sent;
+ case 18:
+ _context2.t4 = _context2.t3;
+ _context2.t5 = chunkSize;
+ _context2.t6 = (0, _context2.t2)(_context2.t4, _context2.t5);
+ _context2.t7 = (0, _context2.t1)(_context2.t6);
+ _context2.t8 = _awaitAsyncGenerator;
+ return _context2.delegateYield((0, _context2.t0)(_context2.t7, _context2.t8), "t9", 24);
+ case 24:
+ _iteratorAbruptCompletion = false;
+ _context2.next = 4;
+ break;
+ case 27:
+ _context2.next = 33;
+ break;
+ case 29:
+ _context2.prev = 29;
+ _context2.t10 = _context2["catch"](2);
+ _didIteratorError = true;
+ _iteratorError = _context2.t10;
+ case 33:
+ _context2.prev = 33;
+ _context2.prev = 34;
+ if (!(_iteratorAbruptCompletion && _iterator["return"] != null)) {
+ _context2.next = 38;
+ break;
+ }
+ _context2.next = 38;
+ return _awaitAsyncGenerator(_iterator["return"]());
+ case 38:
+ _context2.prev = 38;
+ if (!_didIteratorError) {
+ _context2.next = 41;
+ break;
+ }
+ throw _iteratorError;
+ case 41:
+ return _context2.finish(38);
+ case 42:
+ return _context2.finish(33);
+ case 43:
+ case "end":
+ return _context2.stop();
+ }
+ }, _callee, null, [[2, 29, 33, 43], [34,, 38, 42]]);
+ }));
+ return function readBytes(_x, _x2, _x3) {
+ return _ref.apply(this, arguments);
+ };
+ }();
+ var trackStream = function trackStream(stream, chunkSize, onProgress, onFinish, encode) {
+ var iterator = readBytes(stream, chunkSize, encode);
+ var bytes = 0;
+ return new ReadableStream({
+ type: 'bytes',
+ pull: function pull(controller) {
+ return _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
+ var _yield$iterator$next, done, value, len;
+ return _regeneratorRuntime().wrap(function _callee2$(_context3) {
+ while (1) switch (_context3.prev = _context3.next) {
+ case 0:
+ _context3.next = 2;
+ return iterator.next();
+ case 2:
+ _yield$iterator$next = _context3.sent;
+ done = _yield$iterator$next.done;
+ value = _yield$iterator$next.value;
+ if (!done) {
+ _context3.next = 9;
+ break;
+ }
+ controller.close();
+ onFinish();
+ return _context3.abrupt("return");
+ case 9:
+ len = value.byteLength;
+ onProgress && onProgress(bytes += len);
+ controller.enqueue(new Uint8Array(value));
+ case 12:
+ case "end":
+ return _context3.stop();
+ }
+ }, _callee2);
+ }))();
+ },
+ cancel: function cancel(reason) {
+ onFinish(reason);
+ return iterator["return"]();
+ }
+ }, {
+ highWaterMark: 2
+ });
+ };
+
+ var fetchProgressDecorator = function fetchProgressDecorator(total, fn) {
+ var lengthComputable = total != null;
+ return function (loaded) {
+ return setTimeout(function () {
+ return fn({
+ lengthComputable: lengthComputable,
+ total: total,
+ loaded: loaded
+ });
+ });
+ };
+ };
+ var isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';
+ var isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';
+
+ // used only inside the fetch adapter
+ var encodeText = isFetchSupported && (typeof TextEncoder === 'function' ? function (encoder) {
+ return function (str) {
+ return encoder.encode(str);
+ };
+ }(new TextEncoder()) : ( /*#__PURE__*/function () {
+ var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(str) {
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
+ while (1) switch (_context.prev = _context.next) {
+ case 0:
+ _context.t0 = Uint8Array;
+ _context.next = 3;
+ return new Response(str).arrayBuffer();
+ case 3:
+ _context.t1 = _context.sent;
+ return _context.abrupt("return", new _context.t0(_context.t1));
+ case 5:
+ case "end":
+ return _context.stop();
+ }
+ }, _callee);
+ }));
+ return function (_x) {
+ return _ref.apply(this, arguments);
+ };
+ }()));
+ var supportsRequestStream = isReadableStreamSupported && function () {
+ var duplexAccessed = false;
+ var hasContentType = new Request(platform.origin, {
+ body: new ReadableStream(),
+ method: 'POST',
+ get duplex() {
+ duplexAccessed = true;
+ return 'half';
+ }
+ }).headers.has('Content-Type');
+ return duplexAccessed && !hasContentType;
+ }();
+ var DEFAULT_CHUNK_SIZE = 64 * 1024;
+ var supportsResponseStream = isReadableStreamSupported && !!function () {
+ try {
+ return utils$1.isReadableStream(new Response('').body);
+ } catch (err) {
+ // return undefined
+ }
+ }();
+ var resolvers = {
+ stream: supportsResponseStream && function (res) {
+ return res.body;
+ }
+ };
+ isFetchSupported && function (res) {
+ ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(function (type) {
+ !resolvers[type] && (resolvers[type] = utils$1.isFunction(res[type]) ? function (res) {
+ return res[type]();
+ } : function (_, config) {
+ throw new AxiosError("Response type '".concat(type, "' is not supported"), AxiosError.ERR_NOT_SUPPORT, config);
+ });
+ });
+ }(new Response());
+ var getBodyLength = /*#__PURE__*/function () {
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(body) {
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
+ while (1) switch (_context2.prev = _context2.next) {
+ case 0:
+ if (!(body == null)) {
+ _context2.next = 2;
+ break;
+ }
+ return _context2.abrupt("return", 0);
+ case 2:
+ if (!utils$1.isBlob(body)) {
+ _context2.next = 4;
+ break;
+ }
+ return _context2.abrupt("return", body.size);
+ case 4:
+ if (!utils$1.isSpecCompliantForm(body)) {
+ _context2.next = 8;
+ break;
+ }
+ _context2.next = 7;
+ return new Request(body).arrayBuffer();
+ case 7:
+ return _context2.abrupt("return", _context2.sent.byteLength);
+ case 8:
+ if (!utils$1.isArrayBufferView(body)) {
+ _context2.next = 10;
+ break;
+ }
+ return _context2.abrupt("return", body.byteLength);
+ case 10:
+ if (utils$1.isURLSearchParams(body)) {
+ body = body + '';
+ }
+ if (!utils$1.isString(body)) {
+ _context2.next = 15;
+ break;
+ }
+ _context2.next = 14;
+ return encodeText(body);
+ case 14:
+ return _context2.abrupt("return", _context2.sent.byteLength);
+ case 15:
+ case "end":
+ return _context2.stop();
+ }
+ }, _callee2);
+ }));
+ return function getBodyLength(_x2) {
+ return _ref2.apply(this, arguments);
+ };
+ }();
+ var resolveBodyLength = /*#__PURE__*/function () {
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(headers, body) {
+ var length;
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
+ while (1) switch (_context3.prev = _context3.next) {
+ case 0:
+ length = utils$1.toFiniteNumber(headers.getContentLength());
+ return _context3.abrupt("return", length == null ? getBodyLength(body) : length);
+ case 2:
+ case "end":
+ return _context3.stop();
+ }
+ }, _callee3);
+ }));
+ return function resolveBodyLength(_x3, _x4) {
+ return _ref3.apply(this, arguments);
+ };
+ }();
+ var fetchAdapter = isFetchSupported && ( /*#__PURE__*/function () {
+ var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(config) {
+ var _resolveConfig, url, method, data, signal, cancelToken, timeout, onDownloadProgress, onUploadProgress, responseType, headers, _resolveConfig$withCr, withCredentials, fetchOptions, _ref5, _ref6, composedSignal, stopTimeout, finished, request, onFinish, requestContentLength, _request, contentTypeHeader, response, isStreamResponse, options, responseContentLength, responseData;
+ return _regeneratorRuntime().wrap(function _callee4$(_context4) {
+ while (1) switch (_context4.prev = _context4.next) {
+ case 0:
+ _resolveConfig = resolveConfig(config), url = _resolveConfig.url, method = _resolveConfig.method, data = _resolveConfig.data, signal = _resolveConfig.signal, cancelToken = _resolveConfig.cancelToken, timeout = _resolveConfig.timeout, onDownloadProgress = _resolveConfig.onDownloadProgress, onUploadProgress = _resolveConfig.onUploadProgress, responseType = _resolveConfig.responseType, headers = _resolveConfig.headers, _resolveConfig$withCr = _resolveConfig.withCredentials, withCredentials = _resolveConfig$withCr === void 0 ? 'same-origin' : _resolveConfig$withCr, fetchOptions = _resolveConfig.fetchOptions;
+ responseType = responseType ? (responseType + '').toLowerCase() : 'text';
+ _ref5 = signal || cancelToken || timeout ? composeSignals$1([signal, cancelToken], timeout) : [], _ref6 = _slicedToArray(_ref5, 2), composedSignal = _ref6[0], stopTimeout = _ref6[1];
+ onFinish = function onFinish() {
+ !finished && setTimeout(function () {
+ composedSignal && composedSignal.unsubscribe();
+ });
+ finished = true;
+ };
+ _context4.prev = 4;
+ _context4.t0 = onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head';
+ if (!_context4.t0) {
+ _context4.next = 11;
+ break;
+ }
+ _context4.next = 9;
+ return resolveBodyLength(headers, data);
+ case 9:
+ _context4.t1 = requestContentLength = _context4.sent;
+ _context4.t0 = _context4.t1 !== 0;
+ case 11:
+ if (!_context4.t0) {
+ _context4.next = 15;
+ break;
+ }
+ _request = new Request(url, {
+ method: 'POST',
+ body: data,
+ duplex: "half"
+ });
+ if (utils$1.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {
+ headers.setContentType(contentTypeHeader);
+ }
+ if (_request.body) {
+ data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, fetchProgressDecorator(requestContentLength, progressEventReducer(onUploadProgress)), null, encodeText);
+ }
+ case 15:
+ if (!utils$1.isString(withCredentials)) {
+ withCredentials = withCredentials ? 'cors' : 'omit';
+ }
+ request = new Request(url, _objectSpread2(_objectSpread2({}, fetchOptions), {}, {
+ signal: composedSignal,
+ method: method.toUpperCase(),
+ headers: headers.normalize().toJSON(),
+ body: data,
+ duplex: "half",
+ withCredentials: withCredentials
+ }));
+ _context4.next = 19;
+ return fetch(request);
+ case 19:
+ response = _context4.sent;
+ isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');
+ if (supportsResponseStream && (onDownloadProgress || isStreamResponse)) {
+ options = {};
+ ['status', 'statusText', 'headers'].forEach(function (prop) {
+ options[prop] = response[prop];
+ });
+ responseContentLength = utils$1.toFiniteNumber(response.headers.get('content-length'));
+ response = new Response(trackStream(response.body, DEFAULT_CHUNK_SIZE, onDownloadProgress && fetchProgressDecorator(responseContentLength, progressEventReducer(onDownloadProgress, true)), isStreamResponse && onFinish, encodeText), options);
+ }
+ responseType = responseType || 'text';
+ _context4.next = 25;
+ return resolvers[utils$1.findKey(resolvers, responseType) || 'text'](response, config);
+ case 25:
+ responseData = _context4.sent;
+ !isStreamResponse && onFinish();
+ stopTimeout && stopTimeout();
+ _context4.next = 30;
+ return new Promise(function (resolve, reject) {
+ settle(resolve, reject, {
+ data: responseData,
+ headers: AxiosHeaders$1.from(response.headers),
+ status: response.status,
+ statusText: response.statusText,
+ config: config,
+ request: request
+ });
+ });
+ case 30:
+ return _context4.abrupt("return", _context4.sent);
+ case 33:
+ _context4.prev = 33;
+ _context4.t2 = _context4["catch"](4);
+ onFinish();
+ if (!(_context4.t2 && _context4.t2.name === 'TypeError' && /fetch/i.test(_context4.t2.message))) {
+ _context4.next = 38;
+ break;
+ }
+ throw Object.assign(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request), {
+ cause: _context4.t2.cause || _context4.t2
+ });
+ case 38:
+ throw AxiosError.from(_context4.t2, _context4.t2 && _context4.t2.code, config, request);
+ case 39:
+ case "end":
+ return _context4.stop();
+ }
+ }, _callee4, null, [[4, 33]]);
+ }));
+ return function (_x5) {
+ return _ref4.apply(this, arguments);
+ };
+ }());
+
+ var knownAdapters = {
+ http: httpAdapter,
+ xhr: xhrAdapter,
+ fetch: fetchAdapter
+ };
+ utils$1.forEach(knownAdapters, function (fn, value) {
+ if (fn) {
+ try {
+ Object.defineProperty(fn, 'name', {
+ value: value
+ });
+ } catch (e) {
+ // eslint-disable-next-line no-empty
+ }
+ Object.defineProperty(fn, 'adapterName', {
+ value: value
+ });
+ }
+ });
+ var renderReason = function renderReason(reason) {
+ return "- ".concat(reason);
+ };
+ var isResolvedHandle = function isResolvedHandle(adapter) {
+ return utils$1.isFunction(adapter) || adapter === null || adapter === false;
+ };
+ var adapters = {
+ getAdapter: function getAdapter(adapters) {
+ adapters = utils$1.isArray(adapters) ? adapters : [adapters];
+ var _adapters = adapters,
+ length = _adapters.length;
+ var nameOrAdapter;
+ var adapter;
+ var rejectedReasons = {};
+ for (var i = 0; i < length; i++) {
+ nameOrAdapter = adapters[i];
+ var id = void 0;
+ adapter = nameOrAdapter;
+ if (!isResolvedHandle(nameOrAdapter)) {
+ adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];
+ if (adapter === undefined) {
+ throw new AxiosError("Unknown adapter '".concat(id, "'"));
+ }
+ }
+ if (adapter) {
+ break;
+ }
+ rejectedReasons[id || '#' + i] = adapter;
+ }
+ if (!adapter) {
+ var reasons = Object.entries(rejectedReasons).map(function (_ref) {
+ var _ref2 = _slicedToArray(_ref, 2),
+ id = _ref2[0],
+ state = _ref2[1];
+ return "adapter ".concat(id, " ") + (state === false ? 'is not supported by the environment' : 'is not available in the build');
+ });
+ var s = length ? reasons.length > 1 ? 'since :\n' + reasons.map(renderReason).join('\n') : ' ' + renderReason(reasons[0]) : 'as no adapter specified';
+ throw new AxiosError("There is no suitable adapter to dispatch the request " + s, 'ERR_NOT_SUPPORT');
+ }
+ return adapter;
+ },
+ adapters: knownAdapters
+ };
+
+ /**
+ * Throws a `CanceledError` if cancellation has been requested.
+ *
+ * @param {Object} config The config that is to be used for the request
+ *
+ * @returns {void}
+ */
+ function throwIfCancellationRequested(config) {
+ if (config.cancelToken) {
+ config.cancelToken.throwIfRequested();
+ }
+ if (config.signal && config.signal.aborted) {
+ throw new CanceledError(null, config);
+ }
+ }
+
+ /**
+ * Dispatch a request to the server using the configured adapter.
+ *
+ * @param {object} config The config that is to be used for the request
+ *
+ * @returns {Promise} The Promise to be fulfilled
+ */
+ function dispatchRequest(config) {
+ throwIfCancellationRequested(config);
+ config.headers = AxiosHeaders$1.from(config.headers);
+
+ // Transform request data
+ config.data = transformData.call(config, config.transformRequest);
+ if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {
+ config.headers.setContentType('application/x-www-form-urlencoded', false);
+ }
+ var adapter = adapters.getAdapter(config.adapter || defaults$1.adapter);
+ return adapter(config).then(function onAdapterResolution(response) {
+ throwIfCancellationRequested(config);
+
+ // Transform response data
+ response.data = transformData.call(config, config.transformResponse, response);
+ response.headers = AxiosHeaders$1.from(response.headers);
+ return response;
+ }, function onAdapterRejection(reason) {
+ if (!isCancel(reason)) {
+ throwIfCancellationRequested(config);
+
+ // Transform response data
+ if (reason && reason.response) {
+ reason.response.data = transformData.call(config, config.transformResponse, reason.response);
+ reason.response.headers = AxiosHeaders$1.from(reason.response.headers);
+ }
+ }
+ return Promise.reject(reason);
+ });
+ }
+
+ var VERSION = "1.7.2";
+
+ var validators$1 = {};
+
+ // eslint-disable-next-line func-names
+ ['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function (type, i) {
+ validators$1[type] = function validator(thing) {
+ return _typeof(thing) === type || 'a' + (i < 1 ? 'n ' : ' ') + type;
+ };
+ });
+ var deprecatedWarnings = {};
+
+ /**
+ * Transitional option validator
+ *
+ * @param {function|boolean?} validator - set to false if the transitional option has been removed
+ * @param {string?} version - deprecated version / removed since version
+ * @param {string?} message - some message with additional info
+ *
+ * @returns {function}
+ */
+ validators$1.transitional = function transitional(validator, version, message) {
+ function formatMessage(opt, desc) {
+ return '[Axios v' + VERSION + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : '');
+ }
+
+ // eslint-disable-next-line func-names
+ return function (value, opt, opts) {
+ if (validator === false) {
+ throw new AxiosError(formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')), AxiosError.ERR_DEPRECATED);
+ }
+ if (version && !deprecatedWarnings[opt]) {
+ deprecatedWarnings[opt] = true;
+ // eslint-disable-next-line no-console
+ console.warn(formatMessage(opt, ' has been deprecated since v' + version + ' and will be removed in the near future'));
+ }
+ return validator ? validator(value, opt, opts) : true;
+ };
+ };
+
+ /**
+ * Assert object's properties type
+ *
+ * @param {object} options
+ * @param {object} schema
+ * @param {boolean?} allowUnknown
+ *
+ * @returns {object}
+ */
+
+ function assertOptions(options, schema, allowUnknown) {
+ if (_typeof(options) !== 'object') {
+ throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);
+ }
+ var keys = Object.keys(options);
+ var i = keys.length;
+ while (i-- > 0) {
+ var opt = keys[i];
+ var validator = schema[opt];
+ if (validator) {
+ var value = options[opt];
+ var result = value === undefined || validator(value, opt, options);
+ if (result !== true) {
+ throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);
+ }
+ continue;
+ }
+ if (allowUnknown !== true) {
+ throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);
+ }
+ }
+ }
+ var validator = {
+ assertOptions: assertOptions,
+ validators: validators$1
+ };
+
+ var validators = validator.validators;
+
+ /**
+ * Create a new instance of Axios
+ *
+ * @param {Object} instanceConfig The default config for the instance
+ *
+ * @return {Axios} A new instance of Axios
+ */
+ var Axios = /*#__PURE__*/function () {
+ function Axios(instanceConfig) {
+ _classCallCheck(this, Axios);
+ this.defaults = instanceConfig;
+ this.interceptors = {
+ request: new InterceptorManager$1(),
+ response: new InterceptorManager$1()
+ };
+ }
+
+ /**
+ * Dispatch a request
+ *
+ * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)
+ * @param {?Object} config
+ *
+ * @returns {Promise} The Promise to be fulfilled
+ */
+ _createClass(Axios, [{
+ key: "request",
+ value: (function () {
+ var _request2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(configOrUrl, config) {
+ var dummy, stack;
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
+ while (1) switch (_context.prev = _context.next) {
+ case 0:
+ _context.prev = 0;
+ _context.next = 3;
+ return this._request(configOrUrl, config);
+ case 3:
+ return _context.abrupt("return", _context.sent);
+ case 6:
+ _context.prev = 6;
+ _context.t0 = _context["catch"](0);
+ if (_context.t0 instanceof Error) {
+ Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : dummy = new Error();
+
+ // slice off the Error: ... line
+ stack = dummy.stack ? dummy.stack.replace(/^.+\n/, '') : '';
+ try {
+ if (!_context.t0.stack) {
+ _context.t0.stack = stack;
+ // match without the 2 top stack lines
+ } else if (stack && !String(_context.t0.stack).endsWith(stack.replace(/^.+\n.+\n/, ''))) {
+ _context.t0.stack += '\n' + stack;
+ }
+ } catch (e) {
+ // ignore the case where "stack" is an un-writable property
+ }
+ }
+ throw _context.t0;
+ case 10:
+ case "end":
+ return _context.stop();
+ }
+ }, _callee, this, [[0, 6]]);
+ }));
+ function request(_x, _x2) {
+ return _request2.apply(this, arguments);
+ }
+ return request;
+ }())
+ }, {
+ key: "_request",
+ value: function _request(configOrUrl, config) {
+ /*eslint no-param-reassign:0*/
+ // Allow for axios('example/url'[, config]) a la fetch API
+ if (typeof configOrUrl === 'string') {
+ config = config || {};
+ config.url = configOrUrl;
+ } else {
+ config = configOrUrl || {};
+ }
+ config = mergeConfig(this.defaults, config);
+ var _config = config,
+ transitional = _config.transitional,
+ paramsSerializer = _config.paramsSerializer,
+ headers = _config.headers;
+ if (transitional !== undefined) {
+ validator.assertOptions(transitional, {
+ silentJSONParsing: validators.transitional(validators["boolean"]),
+ forcedJSONParsing: validators.transitional(validators["boolean"]),
+ clarifyTimeoutError: validators.transitional(validators["boolean"])
+ }, false);
+ }
+ if (paramsSerializer != null) {
+ if (utils$1.isFunction(paramsSerializer)) {
+ config.paramsSerializer = {
+ serialize: paramsSerializer
+ };
+ } else {
+ validator.assertOptions(paramsSerializer, {
+ encode: validators["function"],
+ serialize: validators["function"]
+ }, true);
+ }
+ }
+
+ // Set config.method
+ config.method = (config.method || this.defaults.method || 'get').toLowerCase();
+
+ // Flatten headers
+ var contextHeaders = headers && utils$1.merge(headers.common, headers[config.method]);
+ headers && utils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], function (method) {
+ delete headers[method];
+ });
+ config.headers = AxiosHeaders$1.concat(contextHeaders, headers);
+
+ // filter out skipped interceptors
+ var requestInterceptorChain = [];
+ var synchronousRequestInterceptors = true;
+ this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {
+ if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {
+ return;
+ }
+ synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;
+ requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);
+ });
+ var responseInterceptorChain = [];
+ this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {
+ responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);
+ });
+ var promise;
+ var i = 0;
+ var len;
+ if (!synchronousRequestInterceptors) {
+ var chain = [dispatchRequest.bind(this), undefined];
+ chain.unshift.apply(chain, requestInterceptorChain);
+ chain.push.apply(chain, responseInterceptorChain);
+ len = chain.length;
+ promise = Promise.resolve(config);
+ while (i < len) {
+ promise = promise.then(chain[i++], chain[i++]);
+ }
+ return promise;
+ }
+ len = requestInterceptorChain.length;
+ var newConfig = config;
+ i = 0;
+ while (i < len) {
+ var onFulfilled = requestInterceptorChain[i++];
+ var onRejected = requestInterceptorChain[i++];
+ try {
+ newConfig = onFulfilled(newConfig);
+ } catch (error) {
+ onRejected.call(this, error);
+ break;
+ }
+ }
+ try {
+ promise = dispatchRequest.call(this, newConfig);
+ } catch (error) {
+ return Promise.reject(error);
+ }
+ i = 0;
+ len = responseInterceptorChain.length;
+ while (i < len) {
+ promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);
+ }
+ return promise;
+ }
+ }, {
+ key: "getUri",
+ value: function getUri(config) {
+ config = mergeConfig(this.defaults, config);
+ var fullPath = buildFullPath(config.baseURL, config.url);
+ return buildURL(fullPath, config.params, config.paramsSerializer);
+ }
+ }]);
+ return Axios;
+ }(); // Provide aliases for supported request methods
+ utils$1.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {
+ /*eslint func-names:0*/
+ Axios.prototype[method] = function (url, config) {
+ return this.request(mergeConfig(config || {}, {
+ method: method,
+ url: url,
+ data: (config || {}).data
+ }));
+ };
+ });
+ utils$1.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {
+ /*eslint func-names:0*/
+
+ function generateHTTPMethod(isForm) {
+ return function httpMethod(url, data, config) {
+ return this.request(mergeConfig(config || {}, {
+ method: method,
+ headers: isForm ? {
+ 'Content-Type': 'multipart/form-data'
+ } : {},
+ url: url,
+ data: data
+ }));
+ };
+ }
+ Axios.prototype[method] = generateHTTPMethod();
+ Axios.prototype[method + 'Form'] = generateHTTPMethod(true);
+ });
+ var Axios$1 = Axios;
+
+ /**
+ * A `CancelToken` is an object that can be used to request cancellation of an operation.
+ *
+ * @param {Function} executor The executor function.
+ *
+ * @returns {CancelToken}
+ */
+ var CancelToken = /*#__PURE__*/function () {
+ function CancelToken(executor) {
+ _classCallCheck(this, CancelToken);
+ if (typeof executor !== 'function') {
+ throw new TypeError('executor must be a function.');
+ }
+ var resolvePromise;
+ this.promise = new Promise(function promiseExecutor(resolve) {
+ resolvePromise = resolve;
+ });
+ var token = this;
+
+ // eslint-disable-next-line func-names
+ this.promise.then(function (cancel) {
+ if (!token._listeners) return;
+ var i = token._listeners.length;
+ while (i-- > 0) {
+ token._listeners[i](cancel);
+ }
+ token._listeners = null;
+ });
+
+ // eslint-disable-next-line func-names
+ this.promise.then = function (onfulfilled) {
+ var _resolve;
+ // eslint-disable-next-line func-names
+ var promise = new Promise(function (resolve) {
+ token.subscribe(resolve);
+ _resolve = resolve;
+ }).then(onfulfilled);
+ promise.cancel = function reject() {
+ token.unsubscribe(_resolve);
+ };
+ return promise;
+ };
+ executor(function cancel(message, config, request) {
+ if (token.reason) {
+ // Cancellation has already been requested
+ return;
+ }
+ token.reason = new CanceledError(message, config, request);
+ resolvePromise(token.reason);
+ });
+ }
+
+ /**
+ * Throws a `CanceledError` if cancellation has been requested.
+ */
+ _createClass(CancelToken, [{
+ key: "throwIfRequested",
+ value: function throwIfRequested() {
+ if (this.reason) {
+ throw this.reason;
+ }
+ }
+
+ /**
+ * Subscribe to the cancel signal
+ */
+ }, {
+ key: "subscribe",
+ value: function subscribe(listener) {
+ if (this.reason) {
+ listener(this.reason);
+ return;
+ }
+ if (this._listeners) {
+ this._listeners.push(listener);
+ } else {
+ this._listeners = [listener];
+ }
+ }
+
+ /**
+ * Unsubscribe from the cancel signal
+ */
+ }, {
+ key: "unsubscribe",
+ value: function unsubscribe(listener) {
+ if (!this._listeners) {
+ return;
+ }
+ var index = this._listeners.indexOf(listener);
+ if (index !== -1) {
+ this._listeners.splice(index, 1);
+ }
+ }
+
+ /**
+ * Returns an object that contains a new `CancelToken` and a function that, when called,
+ * cancels the `CancelToken`.
+ */
+ }], [{
+ key: "source",
+ value: function source() {
+ var cancel;
+ var token = new CancelToken(function executor(c) {
+ cancel = c;
+ });
+ return {
+ token: token,
+ cancel: cancel
+ };
+ }
+ }]);
+ return CancelToken;
+ }();
+ var CancelToken$1 = CancelToken;
+
+ /**
+ * Syntactic sugar for invoking a function and expanding an array for arguments.
+ *
+ * Common use case would be to use `Function.prototype.apply`.
+ *
+ * ```js
+ * function f(x, y, z) {}
+ * var args = [1, 2, 3];
+ * f.apply(null, args);
+ * ```
+ *
+ * With `spread` this example can be re-written.
+ *
+ * ```js
+ * spread(function(x, y, z) {})([1, 2, 3]);
+ * ```
+ *
+ * @param {Function} callback
+ *
+ * @returns {Function}
+ */
+ function spread(callback) {
+ return function wrap(arr) {
+ return callback.apply(null, arr);
+ };
+ }
+
+ /**
+ * Determines whether the payload is an error thrown by Axios
+ *
+ * @param {*} payload The value to test
+ *
+ * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false
+ */
+ function isAxiosError(payload) {
+ return utils$1.isObject(payload) && payload.isAxiosError === true;
+ }
+
+ var HttpStatusCode = {
+ Continue: 100,
+ SwitchingProtocols: 101,
+ Processing: 102,
+ EarlyHints: 103,
+ Ok: 200,
+ Created: 201,
+ Accepted: 202,
+ NonAuthoritativeInformation: 203,
+ NoContent: 204,
+ ResetContent: 205,
+ PartialContent: 206,
+ MultiStatus: 207,
+ AlreadyReported: 208,
+ ImUsed: 226,
+ MultipleChoices: 300,
+ MovedPermanently: 301,
+ Found: 302,
+ SeeOther: 303,
+ NotModified: 304,
+ UseProxy: 305,
+ Unused: 306,
+ TemporaryRedirect: 307,
+ PermanentRedirect: 308,
+ BadRequest: 400,
+ Unauthorized: 401,
+ PaymentRequired: 402,
+ Forbidden: 403,
+ NotFound: 404,
+ MethodNotAllowed: 405,
+ NotAcceptable: 406,
+ ProxyAuthenticationRequired: 407,
+ RequestTimeout: 408,
+ Conflict: 409,
+ Gone: 410,
+ LengthRequired: 411,
+ PreconditionFailed: 412,
+ PayloadTooLarge: 413,
+ UriTooLong: 414,
+ UnsupportedMediaType: 415,
+ RangeNotSatisfiable: 416,
+ ExpectationFailed: 417,
+ ImATeapot: 418,
+ MisdirectedRequest: 421,
+ UnprocessableEntity: 422,
+ Locked: 423,
+ FailedDependency: 424,
+ TooEarly: 425,
+ UpgradeRequired: 426,
+ PreconditionRequired: 428,
+ TooManyRequests: 429,
+ RequestHeaderFieldsTooLarge: 431,
+ UnavailableForLegalReasons: 451,
+ InternalServerError: 500,
+ NotImplemented: 501,
+ BadGateway: 502,
+ ServiceUnavailable: 503,
+ GatewayTimeout: 504,
+ HttpVersionNotSupported: 505,
+ VariantAlsoNegotiates: 506,
+ InsufficientStorage: 507,
+ LoopDetected: 508,
+ NotExtended: 510,
+ NetworkAuthenticationRequired: 511
+ };
+ Object.entries(HttpStatusCode).forEach(function (_ref) {
+ var _ref2 = _slicedToArray(_ref, 2),
+ key = _ref2[0],
+ value = _ref2[1];
+ HttpStatusCode[value] = key;
+ });
+ var HttpStatusCode$1 = HttpStatusCode;
+
+ /**
+ * Create an instance of Axios
+ *
+ * @param {Object} defaultConfig The default config for the instance
+ *
+ * @returns {Axios} A new instance of Axios
+ */
+ function createInstance(defaultConfig) {
+ var context = new Axios$1(defaultConfig);
+ var instance = bind(Axios$1.prototype.request, context);
+
+ // Copy axios.prototype to instance
+ utils$1.extend(instance, Axios$1.prototype, context, {
+ allOwnKeys: true
+ });
+
+ // Copy context to instance
+ utils$1.extend(instance, context, null, {
+ allOwnKeys: true
+ });
+
+ // Factory for creating new instances
+ instance.create = function create(instanceConfig) {
+ return createInstance(mergeConfig(defaultConfig, instanceConfig));
+ };
+ return instance;
+ }
+
+ // Create the default instance to be exported
+ var axios = createInstance(defaults$1);
+
+ // Expose Axios class to allow class inheritance
+ axios.Axios = Axios$1;
+
+ // Expose Cancel & CancelToken
+ axios.CanceledError = CanceledError;
+ axios.CancelToken = CancelToken$1;
+ axios.isCancel = isCancel;
+ axios.VERSION = VERSION;
+ axios.toFormData = toFormData;
+
+ // Expose AxiosError class
+ axios.AxiosError = AxiosError;
+
+ // alias for CanceledError for backward compatibility
+ axios.Cancel = axios.CanceledError;
+
+ // Expose all/spread
+ axios.all = function all(promises) {
+ return Promise.all(promises);
+ };
+ axios.spread = spread;
+
+ // Expose isAxiosError
+ axios.isAxiosError = isAxiosError;
+
+ // Expose mergeConfig
+ axios.mergeConfig = mergeConfig;
+ axios.AxiosHeaders = AxiosHeaders$1;
+ axios.formToJSON = function (thing) {
+ return formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing);
+ };
+ axios.getAdapter = adapters.getAdapter;
+ axios.HttpStatusCode = HttpStatusCode$1;
+ axios["default"] = axios;
+
+ return axios;
+
+}));
+//# sourceMappingURL=axios.js.map
diff --git a/node_modules/axios/dist/axios.js.map b/node_modules/axios/dist/axios.js.map
new file mode 100644
index 00000000..5e2fa06e
--- /dev/null
+++ b/node_modules/axios/dist/axios.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"axios.js","sources":["../lib/helpers/bind.js","../lib/utils.js","../lib/core/AxiosError.js","../lib/helpers/null.js","../lib/helpers/toFormData.js","../lib/helpers/AxiosURLSearchParams.js","../lib/helpers/buildURL.js","../lib/core/InterceptorManager.js","../lib/defaults/transitional.js","../lib/platform/browser/classes/URLSearchParams.js","../lib/platform/browser/classes/FormData.js","../lib/platform/browser/classes/Blob.js","../lib/platform/browser/index.js","../lib/platform/common/utils.js","../lib/platform/index.js","../lib/helpers/toURLEncodedForm.js","../lib/helpers/formDataToJSON.js","../lib/defaults/index.js","../lib/helpers/parseHeaders.js","../lib/core/AxiosHeaders.js","../lib/core/transformData.js","../lib/cancel/isCancel.js","../lib/cancel/CanceledError.js","../lib/core/settle.js","../lib/helpers/parseProtocol.js","../lib/helpers/speedometer.js","../lib/helpers/throttle.js","../lib/helpers/progressEventReducer.js","../lib/helpers/isURLSameOrigin.js","../lib/helpers/cookies.js","../lib/helpers/isAbsoluteURL.js","../lib/helpers/combineURLs.js","../lib/core/buildFullPath.js","../lib/core/mergeConfig.js","../lib/helpers/resolveConfig.js","../lib/adapters/xhr.js","../lib/helpers/composeSignals.js","../lib/helpers/trackStream.js","../lib/adapters/fetch.js","../lib/adapters/adapters.js","../lib/core/dispatchRequest.js","../lib/env/data.js","../lib/helpers/validator.js","../lib/core/Axios.js","../lib/cancel/CancelToken.js","../lib/helpers/spread.js","../lib/helpers/isAxiosError.js","../lib/helpers/HttpStatusCode.js","../lib/axios.js"],"sourcesContent":["'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = (\n (product) => {\n return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0\n })(typeof navigator !== 'undefined' && navigator.product);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isHeaders(header)) {\n for (const [key, value] of header.entries()) {\n setHeader(value, key, rewrite);\n }\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","'use strict';\n\n/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n const threshold = 1000 / freq;\n let timer = null;\n return function throttled() {\n const force = this === true;\n\n const now = Date.now();\n if (force || now - timestamp > threshold) {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n timestamp = now;\n return fn.apply(null, arguments);\n }\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n timestamp = Date.now();\n return fn.apply(null, arguments);\n }, threshold - (now - timestamp));\n }\n };\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\n\nexport default (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n }, freq);\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n let contentType;\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // Let the browser set it\n } else if ((contentType = headers.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport progressEventReducer from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType} = _config;\n let onCanceled;\n function done() {\n if (_config.cancelToken) {\n _config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (_config.signal) {\n _config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, _config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, _config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n _config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (typeof _config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(_config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof _config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(_config.onUploadProgress));\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst composeSignals = (signals, timeout) => {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (cancel) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = cancel instanceof Error ? cancel : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal &&\n (signal.removeEventListener ? signal.removeEventListener('abort', onabort) : signal.unsubscribe(onabort));\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal && signal.addEventListener && signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = unsubscribe;\n\n return [signal, () => {\n timer && clearTimeout(timer);\n timer = null;\n }];\n}\n\nexport default composeSignals;\n","\n\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize, encode) {\n for await (const chunk of iterable) {\n yield* streamChunk(ArrayBuffer.isView(chunk) ? chunk : (await encode(String(chunk))), chunkSize);\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish, encode) => {\n const iterator = readBytes(stream, chunkSize, encode);\n\n let bytes = 0;\n\n return new ReadableStream({\n type: 'bytes',\n\n async pull(controller) {\n const {done, value} = await iterator.next();\n\n if (done) {\n controller.close();\n onFinish();\n return;\n }\n\n let len = value.byteLength;\n onProgress && onProgress(bytes += len);\n controller.enqueue(new Uint8Array(value));\n },\n cancel(reason) {\n onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport progressEventReducer from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst fetchProgressDecorator = (total, fn) => {\n const lengthComputable = total != null;\n return (loaded) => setTimeout(() => fn({\n lengthComputable,\n total,\n loaded\n }));\n}\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst supportsRequestStream = isReadableStreamSupported && (() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n})();\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported && !!(()=> {\n try {\n return utils.isReadableStream(new Response('').body);\n } catch(err) {\n // return undefined\n }\n})();\n\nconst resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\n (_, config) => {\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if(utils.isBlob(body)) {\n return body.size;\n }\n\n if(utils.isSpecCompliantForm(body)) {\n return (await new Request(body).arrayBuffer()).byteLength;\n }\n\n if(utils.isArrayBufferView(body)) {\n return body.byteLength;\n }\n\n if(utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if(utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n}\n\nconst resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n}\n\nexport default isFetchSupported && (async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let [composedSignal, stopTimeout] = (signal || cancelToken || timeout) ?\n composeSignals([signal, cancelToken], timeout) : [];\n\n let finished, request;\n\n const onFinish = () => {\n !finished && setTimeout(() => {\n composedSignal && composedSignal.unsubscribe();\n });\n\n finished = true;\n }\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, fetchProgressDecorator(\n requestContentLength,\n progressEventReducer(onUploadProgress)\n ), null, encodeText);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'cors' : 'omit';\n }\n\n request = new Request(url, {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n withCredentials\n });\n\n let response = await fetch(request);\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || isStreamResponse)) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onDownloadProgress && fetchProgressDecorator(\n responseContentLength,\n progressEventReducer(onDownloadProgress, true)\n ), isStreamResponse && onFinish, encodeText),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && onFinish();\n\n stopTimeout && stopTimeout();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n onFinish();\n\n if (err && err.name === 'TypeError' && /fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n});\n\n\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: fetchAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","export const VERSION = \"1.7.2\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n"],"names":["bind","fn","thisArg","wrap","apply","arguments","toString","Object","prototype","getPrototypeOf","kindOf","cache","thing","str","call","slice","toLowerCase","create","kindOfTest","type","typeOfTest","_typeof","isArray","Array","isUndefined","isBuffer","val","constructor","isFunction","isArrayBuffer","isArrayBufferView","result","ArrayBuffer","isView","buffer","isString","isNumber","isObject","isBoolean","isPlainObject","Symbol","toStringTag","iterator","isDate","isFile","isBlob","isFileList","isStream","pipe","isFormData","kind","FormData","append","isURLSearchParams","_map","map","_map2","_slicedToArray","isReadableStream","isRequest","isResponse","isHeaders","trim","replace","forEach","obj","_ref","length","undefined","_ref$allOwnKeys","allOwnKeys","i","l","keys","getOwnPropertyNames","len","key","findKey","_key","_global","globalThis","self","window","global","isContextDefined","context","merge","_ref2","caseless","assignValue","targetKey","extend","a","b","_ref3","stripBOM","content","charCodeAt","inherits","superConstructor","props","descriptors","defineProperty","value","assign","toFlatObject","sourceObj","destObj","filter","propFilter","prop","merged","endsWith","searchString","position","String","lastIndex","indexOf","toArray","arr","isTypedArray","TypedArray","Uint8Array","forEachEntry","generator","next","done","pair","matchAll","regExp","matches","exec","push","isHTMLForm","toCamelCase","replacer","m","p1","p2","toUpperCase","hasOwnProperty","_ref4","isRegExp","reduceDescriptors","reducer","getOwnPropertyDescriptors","reducedDescriptors","descriptor","name","ret","defineProperties","freezeMethods","enumerable","writable","set","Error","toObjectSet","arrayOrString","delimiter","define","split","noop","toFiniteNumber","defaultValue","Number","isFinite","ALPHA","DIGIT","ALPHABET","ALPHA_DIGIT","generateString","size","alphabet","Math","random","isSpecCompliantForm","toJSONObject","stack","visit","source","target","reducedValue","isAsyncFn","isThenable","then","hasOwnProp","AxiosError","message","code","config","request","response","captureStackTrace","utils","toJSON","description","number","fileName","lineNumber","columnNumber","status","from","error","customProps","axiosError","cause","isVisitable","removeBrackets","renderKey","path","dots","concat","each","token","join","isFlatArray","some","predicates","test","toFormData","formData","options","TypeError","metaTokens","indexes","defined","option","visitor","defaultVisitor","_Blob","Blob","useBlob","convertValue","toISOString","Buffer","JSON","stringify","el","index","exposedHelpers","build","pop","encode","charMap","encodeURIComponent","match","AxiosURLSearchParams","params","_pairs","encoder","_encode","buildURL","url","serializeFn","serialize","serializedParams","hashmarkIndex","InterceptorManager","_classCallCheck","handlers","_createClass","use","fulfilled","rejected","synchronous","runWhen","eject","id","clear","forEachHandler","h","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","URLSearchParams","isBrowser","classes","protocols","hasBrowserEnv","document","hasStandardBrowserEnv","product","navigator","hasStandardBrowserWebWorkerEnv","WorkerGlobalScope","importScripts","origin","location","href","_objectSpread","platform","toURLEncodedForm","data","helpers","isNode","parsePropPath","arrayToObject","formDataToJSON","buildPath","isNumericKey","isLast","entries","stringifySafely","rawValue","parser","parse","e","defaults","transitional","transitionalDefaults","adapter","transformRequest","headers","contentType","getContentType","hasJSONContentType","isObjectPayload","setContentType","formSerializer","_FormData","env","transformResponse","JSONRequested","responseType","strictJSONParsing","ERR_BAD_RESPONSE","timeout","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","common","method","ignoreDuplicateOf","rawHeaders","parsed","line","substring","$internals","normalizeHeader","header","normalizeValue","parseTokens","tokens","tokensRE","isValidHeaderName","matchHeaderValue","isHeaderNameFilter","formatHeader","w","char","buildAccessors","accessorName","methodName","arg1","arg2","arg3","configurable","AxiosHeaders","_Symbol$iterator","_Symbol$toStringTag","valueOrRewrite","rewrite","setHeader","_value","_header","_rewrite","lHeader","setHeaders","parseHeaders","_iterator","_createForOfIteratorHelper","_step","s","n","_step$value","err","f","get","has","matcher","_delete","deleted","deleteHeader","normalize","format","normalized","_this$constructor","_len","targets","asStrings","first","computed","_len2","_key2","accessor","internals","accessors","defineAccessor","mapped","headerValue","transformData","fns","transform","isCancel","__CANCEL__","CanceledError","ERR_CANCELED","settle","resolve","reject","ERR_BAD_REQUEST","floor","parseProtocol","speedometer","samplesCount","min","bytes","timestamps","head","tail","firstSampleTS","chunkLength","now","Date","startedAt","bytesCount","passed","round","throttle","freq","timestamp","threshold","timer","throttled","_arguments","force","clearTimeout","setTimeout","listener","isDownloadStream","bytesNotified","_speedometer","loaded","total","lengthComputable","progressBytes","rate","inRange","progress","estimated","event","standardBrowserEnv","msie","userAgent","urlParsingNode","createElement","originURL","resolveURL","setAttribute","protocol","host","search","hash","hostname","port","pathname","charAt","isURLSameOrigin","requestURL","nonStandardBrowserEnv","write","expires","domain","secure","cookie","toGMTString","read","RegExp","decodeURIComponent","remove","isAbsoluteURL","combineURLs","baseURL","relativeURL","buildFullPath","requestedURL","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","paramsSerializer","timeoutMessage","withCredentials","withXSRFToken","onUploadProgress","onDownloadProgress","decompress","beforeRedirect","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding","computeConfigValue","configValue","newConfig","auth","btoa","username","password","unescape","Boolean","_toArray","_toConsumableArray","xsrfValue","cookies","isXHRAdapterSupported","XMLHttpRequest","Promise","dispatchXhrRequest","_config","resolveConfig","requestData","requestHeaders","onCanceled","unsubscribe","signal","removeEventListener","open","onloadend","responseHeaders","getAllResponseHeaders","responseData","responseText","statusText","_resolve","_reject","onreadystatechange","handleLoad","readyState","responseURL","onabort","handleAbort","ECONNABORTED","onerror","handleError","ERR_NETWORK","ontimeout","handleTimeout","timeoutErrorMessage","ETIMEDOUT","setRequestHeader","addEventListener","progressEventReducer","upload","cancel","abort","subscribe","aborted","send","composeSignals","signals","controller","AbortController","reason","streamChunk","_regeneratorRuntime","mark","chunk","chunkSize","pos","end","streamChunk$","_context","prev","byteLength","abrupt","stop","readBytes","_wrapAsyncGenerator","_callee","iterable","_iteratorAbruptCompletion","_didIteratorError","_iteratorError","_callee$","_context2","_asyncIterator","_awaitAsyncGenerator","sent","t0","_asyncGeneratorDelegate","t1","t2","t3","t4","t5","t6","t7","t8","delegateYield","t10","finish","_x","_x2","_x3","trackStream","stream","onProgress","onFinish","ReadableStream","pull","_asyncToGenerator","_callee2","_yield$iterator$next","_callee2$","_context3","close","enqueue","highWaterMark","fetchProgressDecorator","isFetchSupported","fetch","Request","Response","isReadableStreamSupported","encodeText","TextEncoder","arrayBuffer","supportsRequestStream","duplexAccessed","hasContentType","body","duplex","DEFAULT_CHUNK_SIZE","supportsResponseStream","resolvers","res","_","ERR_NOT_SUPPORT","getBodyLength","resolveBodyLength","_callee3","_callee3$","getContentLength","_x4","_callee4","_resolveConfig","_resolveConfig$withCr","fetchOptions","_ref5","_ref6","composedSignal","stopTimeout","finished","requestContentLength","_request","contentTypeHeader","isStreamResponse","responseContentLength","_callee4$","_context4","_x5","knownAdapters","http","httpAdapter","xhr","xhrAdapter","fetchAdapter","renderReason","isResolvedHandle","getAdapter","adapters","_adapters","nameOrAdapter","rejectedReasons","reasons","state","throwIfCancellationRequested","throwIfRequested","dispatchRequest","onAdapterResolution","onAdapterRejection","VERSION","validators","validator","deprecatedWarnings","version","formatMessage","opt","desc","opts","ERR_DEPRECATED","console","warn","assertOptions","schema","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","Axios","instanceConfig","interceptors","_request2","configOrUrl","dummy","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","unshiftRequestInterceptors","interceptor","unshift","responseInterceptorChain","pushResponseInterceptors","promise","chain","onFulfilled","onRejected","getUri","fullPath","forEachMethodNoData","forEachMethodWithData","generateHTTPMethod","isForm","httpMethod","CancelToken","executor","resolvePromise","promiseExecutor","_listeners","onfulfilled","splice","c","spread","callback","isAxiosError","payload","HttpStatusCode","Continue","SwitchingProtocols","Processing","EarlyHints","Ok","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","createInstance","defaultConfig","instance","axios","Cancel","all","promises","formToJSON"],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/axios/dist/axios.min.js b/node_modules/axios/dist/axios.min.js
new file mode 100644
index 00000000..8da3e5f2
--- /dev/null
+++ b/node_modules/axios/dist/axios.min.js
@@ -0,0 +1,2 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).axios=t()}(this,(function(){"use strict";function e(e){var r,n;function o(r,n){try{var a=e[r](n),s=a.value,u=s instanceof t;Promise.resolve(u?s.v:s).then((function(t){if(u){var n="return"===r?"return":"next";if(!s.k||t.done)return o(n,t);t=e[n](t).value}i(a.done?"return":"normal",t)}),(function(e){o("throw",e)}))}catch(e){i("throw",e)}}function i(e,t){switch(e){case"return":r.resolve({value:t,done:!0});break;case"throw":r.reject(t);break;default:r.resolve({value:t,done:!1})}(r=r.next)?o(r.key,r.arg):n=null}this._invoke=function(e,t){return new Promise((function(i,a){var s={key:e,arg:t,resolve:i,reject:a,next:null};n?n=n.next=s:(r=n=s,o(e,t))}))},"function"!=typeof e.return&&(this.return=void 0)}function t(e,t){this.v=e,this.k=t}function r(e){var r={},n=!1;function o(r,o){return n=!0,o=new Promise((function(t){t(e[r](o))})),{done:!1,value:new t(o,1)}}return r["undefined"!=typeof Symbol&&Symbol.iterator||"@@iterator"]=function(){return this},r.next=function(e){return n?(n=!1,e):o("next",e)},"function"==typeof e.throw&&(r.throw=function(e){if(n)throw n=!1,e;return o("throw",e)}),"function"==typeof e.return&&(r.return=function(e){return n?(n=!1,e):o("return",e)}),r}function n(e){var t,r,n,i=2;for("undefined"!=typeof Symbol&&(r=Symbol.asyncIterator,n=Symbol.iterator);i--;){if(r&&null!=(t=e[r]))return t.call(e);if(n&&null!=(t=e[n]))return new o(t.call(e));r="@@asyncIterator",n="@@iterator"}throw new TypeError("Object is not async iterable")}function o(e){function t(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+" is not an object."));var t=e.done;return Promise.resolve(e.value).then((function(e){return{value:e,done:t}}))}return o=function(e){this.s=e,this.n=e.next},o.prototype={s:null,n:null,next:function(){return t(this.n.apply(this.s,arguments))},return:function(e){var r=this.s.return;return void 0===r?Promise.resolve({value:e,done:!0}):t(r.apply(this.s,arguments))},throw:function(e){var r=this.s.return;return void 0===r?Promise.reject(e):t(r.apply(this.s,arguments))}},new o(e)}function i(e){return new t(e,0)}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function s(e){for(var t=1;t=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var u=n.call(a,"catchLoc"),c=n.call(a,"finallyLoc");if(u&&c){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),A(r),v}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;A(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:L(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),v}},t}function c(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}function f(e){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},f(e)}function l(e,t,r,n,o,i,a){try{var s=e[i](a),u=s.value}catch(e){return void r(e)}s.done?t(u):Promise.resolve(u).then(n,o)}function h(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){l(i,n,o,a,s,"next",e)}function s(e){l(i,n,o,a,s,"throw",e)}a(void 0)}))}}function p(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function d(e,t){for(var r=0;re.length)&&(t=e.length);for(var r=0,n=new Array(t);r2&&void 0!==arguments[2]?arguments[2]:{},i=o.allOwnKeys,a=void 0!==i&&i;if(null!=e)if("object"!==f(e)&&(e=[e]),L(e))for(r=0,n=e.length;r0;)if(t===(r=n[o]).toLowerCase())return r;return null}var Y="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,Q=function(e){return!N(e)&&e!==Y};var Z,ee=(Z="undefined"!=typeof Uint8Array&&j(Uint8Array),function(e){return Z&&e instanceof Z}),te=A("HTMLFormElement"),re=function(e){var t=Object.prototype.hasOwnProperty;return function(e,r){return t.call(e,r)}}(),ne=A("RegExp"),oe=function(e,t){var r=Object.getOwnPropertyDescriptors(e),n={};X(r,(function(r,o){var i;!1!==(i=t(r,o,e))&&(n[o]=i||r)})),Object.defineProperties(e,n)},ie="abcdefghijklmnopqrstuvwxyz",ae="0123456789",se={DIGIT:ae,ALPHA:ie,ALPHA_DIGIT:ie+ie.toUpperCase()+ae};var ue=A("AsyncFunction"),ce={isArray:L,isArrayBuffer:_,isBuffer:function(e){return null!==e&&!N(e)&&null!==e.constructor&&!N(e.constructor)&&F(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:function(e){var t;return e&&("function"==typeof FormData&&e instanceof FormData||F(e.append)&&("formdata"===(t=k(e))||"object"===t&&F(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&_(e.buffer)},isString:C,isNumber:U,isBoolean:function(e){return!0===e||!1===e},isObject:D,isPlainObject:B,isReadableStream:W,isRequest:G,isResponse:K,isHeaders:V,isUndefined:N,isDate:I,isFile:q,isBlob:z,isRegExp:ne,isFunction:F,isStream:function(e){return D(e)&&F(e.pipe)},isURLSearchParams:H,isTypedArray:ee,isFileList:M,forEach:X,merge:function e(){for(var t=Q(this)&&this||{},r=t.caseless,n={},o=function(t,o){var i=r&&$(n,o)||o;B(n[i])&&B(t)?n[i]=e(n[i],t):B(t)?n[i]=e({},t):L(t)?n[i]=t.slice():n[i]=t},i=0,a=arguments.length;i3&&void 0!==arguments[3]?arguments[3]:{},o=n.allOwnKeys;return X(t,(function(t,n){r&&F(t)?e[n]=x(t,r):e[n]=t}),{allOwnKeys:o}),e},trim:function(e){return e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e},inherits:function(e,t,r,n){e.prototype=Object.create(t.prototype,n),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),r&&Object.assign(e.prototype,r)},toFlatObject:function(e,t,r,n){var o,i,a,s={};if(t=t||{},null==e)return t;do{for(i=(o=Object.getOwnPropertyNames(e)).length;i-- >0;)a=o[i],n&&!n(a,e,t)||s[a]||(t[a]=e[a],s[a]=!0);e=!1!==r&&j(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},kindOf:k,kindOfTest:A,endsWith:function(e,t,r){e=String(e),(void 0===r||r>e.length)&&(r=e.length),r-=t.length;var n=e.indexOf(t,r);return-1!==n&&n===r},toArray:function(e){if(!e)return null;if(L(e))return e;var t=e.length;if(!U(t))return null;for(var r=new Array(t);t-- >0;)r[t]=e[t];return r},forEachEntry:function(e,t){for(var r,n=(e&&e[Symbol.iterator]).call(e);(r=n.next())&&!r.done;){var o=r.value;t.call(e,o[0],o[1])}},matchAll:function(e,t){for(var r,n=[];null!==(r=e.exec(t));)n.push(r);return n},isHTMLForm:te,hasOwnProperty:re,hasOwnProp:re,reduceDescriptors:oe,freezeMethods:function(e){oe(e,(function(t,r){if(F(e)&&-1!==["arguments","caller","callee"].indexOf(r))return!1;var n=e[r];F(n)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=function(){throw Error("Can not rewrite read-only method '"+r+"'")}))}))},toObjectSet:function(e,t){var r={},n=function(e){e.forEach((function(e){r[e]=!0}))};return L(e)?n(e):n(String(e).split(t)),r},toCamelCase:function(e){return e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,r){return t.toUpperCase()+r}))},noop:function(){},toFiniteNumber:function(e,t){return null!=e&&Number.isFinite(e=+e)?e:t},findKey:$,global:Y,isContextDefined:Q,ALPHABET:se,generateString:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:16,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:se.ALPHA_DIGIT,r="",n=t.length;e--;)r+=t[Math.random()*n|0];return r},isSpecCompliantForm:function(e){return!!(e&&F(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:function(e){var t=new Array(10);return function e(r,n){if(D(r)){if(t.indexOf(r)>=0)return;if(!("toJSON"in r)){t[n]=r;var o=L(r)?[]:{};return X(r,(function(t,r){var i=e(t,n+1);!N(i)&&(o[r]=i)})),t[n]=void 0,o}}return r}(e,0)},isAsyncFn:ue,isThenable:function(e){return e&&(D(e)||F(e))&&F(e.then)&&F(e.catch)}};function fe(e,t,r,n,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),r&&(this.config=r),n&&(this.request=n),o&&(this.response=o)}ce.inherits(fe,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:ce.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});var le=fe.prototype,he={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((function(e){he[e]={value:e}})),Object.defineProperties(fe,he),Object.defineProperty(le,"isAxiosError",{value:!0}),fe.from=function(e,t,r,n,o,i){var a=Object.create(le);return ce.toFlatObject(e,a,(function(e){return e!==Error.prototype}),(function(e){return"isAxiosError"!==e})),fe.call(a,e.message,t,r,n,o),a.cause=e,a.name=e.name,i&&Object.assign(a,i),a};function pe(e){return ce.isPlainObject(e)||ce.isArray(e)}function de(e){return ce.endsWith(e,"[]")?e.slice(0,-2):e}function ye(e,t,r){return e?e.concat(t).map((function(e,t){return e=de(e),!r&&t?"["+e+"]":e})).join(r?".":""):t}var ve=ce.toFlatObject(ce,{},null,(function(e){return/^is[A-Z]/.test(e)}));function me(e,t,r){if(!ce.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;var n=(r=ce.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!ce.isUndefined(t[e])}))).metaTokens,o=r.visitor||c,i=r.dots,a=r.indexes,s=(r.Blob||"undefined"!=typeof Blob&&Blob)&&ce.isSpecCompliantForm(t);if(!ce.isFunction(o))throw new TypeError("visitor must be a function");function u(e){if(null===e)return"";if(ce.isDate(e))return e.toISOString();if(!s&&ce.isBlob(e))throw new fe("Blob is not supported. Use a Buffer instead.");return ce.isArrayBuffer(e)||ce.isTypedArray(e)?s&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function c(e,r,o){var s=e;if(e&&!o&&"object"===f(e))if(ce.endsWith(r,"{}"))r=n?r:r.slice(0,-2),e=JSON.stringify(e);else if(ce.isArray(e)&&function(e){return ce.isArray(e)&&!e.some(pe)}(e)||(ce.isFileList(e)||ce.endsWith(r,"[]"))&&(s=ce.toArray(e)))return r=de(r),s.forEach((function(e,n){!ce.isUndefined(e)&&null!==e&&t.append(!0===a?ye([r],n,i):null===a?r:r+"[]",u(e))})),!1;return!!pe(e)||(t.append(ye(o,r,i),u(e)),!1)}var l=[],h=Object.assign(ve,{defaultVisitor:c,convertValue:u,isVisitable:pe});if(!ce.isObject(e))throw new TypeError("data must be an object");return function e(r,n){if(!ce.isUndefined(r)){if(-1!==l.indexOf(r))throw Error("Circular reference detected in "+n.join("."));l.push(r),ce.forEach(r,(function(r,i){!0===(!(ce.isUndefined(r)||null===r)&&o.call(t,r,ce.isString(i)?i.trim():i,n,h))&&e(r,n?n.concat(i):[i])})),l.pop()}}(e),t}function be(e){var t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function ge(e,t){this._pairs=[],e&&me(e,this,t)}var we=ge.prototype;function Ee(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function Oe(e,t,r){if(!t)return e;var n,o=r&&r.encode||Ee,i=r&&r.serialize;if(n=i?i(t,r):ce.isURLSearchParams(t)?t.toString():new ge(t,r).toString(o)){var a=e.indexOf("#");-1!==a&&(e=e.slice(0,a)),e+=(-1===e.indexOf("?")?"?":"&")+n}return e}we.append=function(e,t){this._pairs.push([e,t])},we.toString=function(e){var t=e?function(t){return e.call(this,t,be)}:be;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};var Se,xe=function(){function e(){p(this,e),this.handlers=[]}return y(e,[{key:"use",value:function(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1}},{key:"eject",value:function(e){this.handlers[e]&&(this.handlers[e]=null)}},{key:"clear",value:function(){this.handlers&&(this.handlers=[])}},{key:"forEach",value:function(e){ce.forEach(this.handlers,(function(t){null!==t&&e(t)}))}}]),e}(),Re={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Te={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:ge,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]},je="undefined"!=typeof window&&"undefined"!=typeof document,ke=(Se="undefined"!=typeof navigator&&navigator.product,je&&["ReactNative","NativeScript","NS"].indexOf(Se)<0),Ae="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,Pe=je&&window.location.href||"http://localhost",Le=s(s({},Object.freeze({__proto__:null,hasBrowserEnv:je,hasStandardBrowserWebWorkerEnv:Ae,hasStandardBrowserEnv:ke,origin:Pe})),Te);function Ne(e){function t(e,r,n,o){var i=e[o++];if("__proto__"===i)return!0;var a=Number.isFinite(+i),s=o>=e.length;return i=!i&&ce.isArray(n)?n.length:i,s?(ce.hasOwnProp(n,i)?n[i]=[n[i],r]:n[i]=r,!a):(n[i]&&ce.isObject(n[i])||(n[i]=[]),t(e,r,n[i],o)&&ce.isArray(n[i])&&(n[i]=function(e){var t,r,n={},o=Object.keys(e),i=o.length;for(t=0;t-1,i=ce.isObject(e);if(i&&ce.isHTMLForm(e)&&(e=new FormData(e)),ce.isFormData(e))return o?JSON.stringify(Ne(e)):e;if(ce.isArrayBuffer(e)||ce.isBuffer(e)||ce.isStream(e)||ce.isFile(e)||ce.isBlob(e)||ce.isReadableStream(e))return e;if(ce.isArrayBufferView(e))return e.buffer;if(ce.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();if(i){if(n.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return me(e,new Le.classes.URLSearchParams,Object.assign({visitor:function(e,t,r,n){return Le.isNode&&ce.isBuffer(e)?(this.append(t,e.toString("base64")),!1):n.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((r=ce.isFileList(e))||n.indexOf("multipart/form-data")>-1){var a=this.env&&this.env.FormData;return me(r?{"files[]":e}:e,a&&new a,this.formSerializer)}}return i||o?(t.setContentType("application/json",!1),function(e,t,r){if(ce.isString(e))try{return(t||JSON.parse)(e),ce.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(r||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional||_e.transitional,r=t&&t.forcedJSONParsing,n="json"===this.responseType;if(ce.isResponse(e)||ce.isReadableStream(e))return e;if(e&&ce.isString(e)&&(r&&!this.responseType||n)){var o=!(t&&t.silentJSONParsing)&&n;try{return JSON.parse(e)}catch(e){if(o){if("SyntaxError"===e.name)throw fe.from(e,fe.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Le.classes.FormData,Blob:Le.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};ce.forEach(["delete","get","head","post","put","patch"],(function(e){_e.headers[e]={}}));var Ce=_e,Fe=ce.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),Ue=Symbol("internals");function De(e){return e&&String(e).trim().toLowerCase()}function Be(e){return!1===e||null==e?e:ce.isArray(e)?e.map(Be):String(e)}function Ie(e,t,r,n,o){return ce.isFunction(n)?n.call(this,t,r):(o&&(t=r),ce.isString(t)?ce.isString(n)?-1!==t.indexOf(n):ce.isRegExp(n)?n.test(t):void 0:void 0)}var qe=function(e,t){function r(e){p(this,r),e&&this.set(e)}return y(r,[{key:"set",value:function(e,t,r){var n=this;function o(e,t,r){var o=De(t);if(!o)throw new Error("header name must be a non-empty string");var i=ce.findKey(n,o);(!i||void 0===n[i]||!0===r||void 0===r&&!1!==n[i])&&(n[i||t]=Be(e))}var i=function(e,t){return ce.forEach(e,(function(e,r){return o(e,r,t)}))};if(ce.isPlainObject(e)||e instanceof this.constructor)i(e,t);else if(ce.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim()))i(function(e){var t,r,n,o={};return e&&e.split("\n").forEach((function(e){n=e.indexOf(":"),t=e.substring(0,n).trim().toLowerCase(),r=e.substring(n+1).trim(),!t||o[t]&&Fe[t]||("set-cookie"===t?o[t]?o[t].push(r):o[t]=[r]:o[t]=o[t]?o[t]+", "+r:r)})),o}(e),t);else if(ce.isHeaders(e)){var a,s=function(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=E(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}(e.entries());try{for(s.s();!(a=s.n()).done;){var u=m(a.value,2),c=u[0];o(u[1],c,r)}}catch(e){s.e(e)}finally{s.f()}}else null!=e&&o(t,e,r);return this}},{key:"get",value:function(e,t){if(e=De(e)){var r=ce.findKey(this,e);if(r){var n=this[r];if(!t)return n;if(!0===t)return function(e){for(var t,r=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;t=n.exec(e);)r[t[1]]=t[2];return r}(n);if(ce.isFunction(t))return t.call(this,n,r);if(ce.isRegExp(t))return t.exec(n);throw new TypeError("parser must be boolean|regexp|function")}}}},{key:"has",value:function(e,t){if(e=De(e)){var r=ce.findKey(this,e);return!(!r||void 0===this[r]||t&&!Ie(0,this[r],r,t))}return!1}},{key:"delete",value:function(e,t){var r=this,n=!1;function o(e){if(e=De(e)){var o=ce.findKey(r,e);!o||t&&!Ie(0,r[o],o,t)||(delete r[o],n=!0)}}return ce.isArray(e)?e.forEach(o):o(e),n}},{key:"clear",value:function(e){for(var t=Object.keys(this),r=t.length,n=!1;r--;){var o=t[r];e&&!Ie(0,this[o],o,e,!0)||(delete this[o],n=!0)}return n}},{key:"normalize",value:function(e){var t=this,r={};return ce.forEach(this,(function(n,o){var i=ce.findKey(r,o);if(i)return t[i]=Be(n),void delete t[o];var a=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(function(e,t,r){return t.toUpperCase()+r}))}(o):String(o).trim();a!==o&&delete t[o],t[a]=Be(n),r[a]=!0})),this}},{key:"concat",value:function(){for(var e,t=arguments.length,r=new Array(t),n=0;n1?r-1:0),o=1;on)return o&&(clearTimeout(o),o=null),r=a,e.apply(null,arguments);o||(o=setTimeout((function(){return o=null,r=Date.now(),e.apply(null,t)}),n-(a-r)))}}ce.inherits(Je,fe,{__CANCEL__:!0});var Ve=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:3,n=0,o=Ge(50,250);return Ke((function(r){var i=r.loaded,a=r.lengthComputable?r.total:void 0,s=i-n,u=o(s);n=i;var c={loaded:i,total:a,progress:a?i/a:void 0,bytes:s,rate:u||void 0,estimated:u&&a&&i<=a?(a-i)/u:void 0,event:r,lengthComputable:null!=a};c[t?"download":"upload"]=!0,e(c)}),r)},Xe=Le.hasStandardBrowserEnv?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),r=document.createElement("a");function n(e){var n=e;return t&&(r.setAttribute("href",n),n=r.href),r.setAttribute("href",n),{href:r.href,protocol:r.protocol?r.protocol.replace(/:$/,""):"",host:r.host,search:r.search?r.search.replace(/^\?/,""):"",hash:r.hash?r.hash.replace(/^#/,""):"",hostname:r.hostname,port:r.port,pathname:"/"===r.pathname.charAt(0)?r.pathname:"/"+r.pathname}}return e=n(window.location.href),function(t){var r=ce.isString(t)?n(t):t;return r.protocol===e.protocol&&r.host===e.host}}():function(){return!0},$e=Le.hasStandardBrowserEnv?{write:function(e,t,r,n,o,i){var a=[e+"="+encodeURIComponent(t)];ce.isNumber(r)&&a.push("expires="+new Date(r).toGMTString()),ce.isString(n)&&a.push("path="+n),ce.isString(o)&&a.push("domain="+o),!0===i&&a.push("secure"),document.cookie=a.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}};function Ye(e,t){return e&&!/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)?function(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}var Qe=function(e){return e instanceof ze?s({},e):e};function Ze(e,t){t=t||{};var r={};function n(e,t,r){return ce.isPlainObject(e)&&ce.isPlainObject(t)?ce.merge.call({caseless:r},e,t):ce.isPlainObject(t)?ce.merge({},t):ce.isArray(t)?t.slice():t}function o(e,t,r){return ce.isUndefined(t)?ce.isUndefined(e)?void 0:n(void 0,e,r):n(e,t,r)}function i(e,t){if(!ce.isUndefined(t))return n(void 0,t)}function a(e,t){return ce.isUndefined(t)?ce.isUndefined(e)?void 0:n(void 0,e):n(void 0,t)}function s(r,o,i){return i in t?n(r,o):i in e?n(void 0,r):void 0}var u={url:i,method:i,data:i,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,withXSRFToken:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:s,headers:function(e,t){return o(Qe(e),Qe(t),!0)}};return ce.forEach(Object.keys(Object.assign({},e,t)),(function(n){var i=u[n]||o,a=i(e[n],t[n],n);ce.isUndefined(a)&&i!==s||(r[n]=a)})),r}var et,tt,rt,nt,ot=function(e){var t,r,n=Ze({},e),o=n.data,i=n.withXSRFToken,a=n.xsrfHeaderName,s=n.xsrfCookieName,u=n.headers,c=n.auth;if(n.headers=u=ze.from(u),n.url=Oe(Ye(n.baseURL,n.url),e.params,e.paramsSerializer),c&&u.set("Authorization","Basic "+btoa((c.username||"")+":"+(c.password?unescape(encodeURIComponent(c.password)):""))),ce.isFormData(o))if(Le.hasStandardBrowserEnv||Le.hasStandardBrowserWebWorkerEnv)u.setContentType(void 0);else if(!1!==(t=u.getContentType())){var f=t?t.split(";").map((function(e){return e.trim()})).filter(Boolean):[],l=g(r=f)||w(r)||E(r)||S(),h=l[0],p=l.slice(1);u.setContentType([h||"multipart/form-data"].concat(b(p)).join("; "))}if(Le.hasStandardBrowserEnv&&(i&&ce.isFunction(i)&&(i=i(n)),i||!1!==i&&Xe(n.url))){var d=a&&s&&$e.read(s);d&&u.set(a,d)}return n},it="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise((function(t,r){var n,o=ot(e),i=o.data,a=ze.from(o.headers).normalize(),s=o.responseType;function u(){o.cancelToken&&o.cancelToken.unsubscribe(n),o.signal&&o.signal.removeEventListener("abort",n)}var c=new XMLHttpRequest;function f(){if(c){var n=ze.from("getAllResponseHeaders"in c&&c.getAllResponseHeaders());We((function(e){t(e),u()}),(function(e){r(e),u()}),{data:s&&"text"!==s&&"json"!==s?c.response:c.responseText,status:c.status,statusText:c.statusText,headers:n,config:e,request:c}),c=null}}c.open(o.method.toUpperCase(),o.url,!0),c.timeout=o.timeout,"onloadend"in c?c.onloadend=f:c.onreadystatechange=function(){c&&4===c.readyState&&(0!==c.status||c.responseURL&&0===c.responseURL.indexOf("file:"))&&setTimeout(f)},c.onabort=function(){c&&(r(new fe("Request aborted",fe.ECONNABORTED,o,c)),c=null)},c.onerror=function(){r(new fe("Network Error",fe.ERR_NETWORK,o,c)),c=null},c.ontimeout=function(){var e=o.timeout?"timeout of "+o.timeout+"ms exceeded":"timeout exceeded",t=o.transitional||Re;o.timeoutErrorMessage&&(e=o.timeoutErrorMessage),r(new fe(e,t.clarifyTimeoutError?fe.ETIMEDOUT:fe.ECONNABORTED,o,c)),c=null},void 0===i&&a.setContentType(null),"setRequestHeader"in c&&ce.forEach(a.toJSON(),(function(e,t){c.setRequestHeader(t,e)})),ce.isUndefined(o.withCredentials)||(c.withCredentials=!!o.withCredentials),s&&"json"!==s&&(c.responseType=o.responseType),"function"==typeof o.onDownloadProgress&&c.addEventListener("progress",Ve(o.onDownloadProgress,!0)),"function"==typeof o.onUploadProgress&&c.upload&&c.upload.addEventListener("progress",Ve(o.onUploadProgress)),(o.cancelToken||o.signal)&&(n=function(t){c&&(r(!t||t.type?new Je(null,e,c):t),c.abort(),c=null)},o.cancelToken&&o.cancelToken.subscribe(n),o.signal&&(o.signal.aborted?n():o.signal.addEventListener("abort",n)));var l,h,p=(l=o.url,(h=/^([-+\w]{1,25})(:?\/\/|:)/.exec(l))&&h[1]||"");p&&-1===Le.protocols.indexOf(p)?r(new fe("Unsupported protocol "+p+":",fe.ERR_BAD_REQUEST,e)):c.send(i||null)}))},at=function(e,t){var r,n=new AbortController,o=function(e){if(!r){r=!0,a();var t=e instanceof Error?e:this.reason;n.abort(t instanceof fe?t:new Je(t instanceof Error?t.message:t))}},i=t&&setTimeout((function(){o(new fe("timeout ".concat(t," of ms exceeded"),fe.ETIMEDOUT))}),t),a=function(){e&&(i&&clearTimeout(i),i=null,e.forEach((function(e){e&&(e.removeEventListener?e.removeEventListener("abort",o):e.unsubscribe(o))})),e=null)};e.forEach((function(e){return e&&e.addEventListener&&e.addEventListener("abort",o)}));var s=n.signal;return s.unsubscribe=a,[s,function(){i&&clearTimeout(i),i=null}]},st=u().mark((function e(t,r){var n,o,i;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.byteLength,r&&!(n1?"since :\n"+s.map(Et).join("\n"):" "+Et(s[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return r};function xt(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Je(null,e)}function Rt(e){return xt(e),e.headers=ze.from(e.headers),e.data=Me.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1),St(e.adapter||Ce.adapter)(e).then((function(t){return xt(e),t.data=Me.call(e,e.transformResponse,t),t.headers=ze.from(t.headers),t}),(function(t){return He(t)||(xt(e),t&&t.response&&(t.response.data=Me.call(e,e.transformResponse,t.response),t.response.headers=ze.from(t.response.headers))),Promise.reject(t)}))}var Tt="1.7.2",jt={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){jt[e]=function(r){return f(r)===e||"a"+(t<1?"n ":" ")+e}}));var kt={};jt.transitional=function(e,t,r){function n(e,t){return"[Axios v1.7.2] Transitional option '"+e+"'"+t+(r?". "+r:"")}return function(r,o,i){if(!1===e)throw new fe(n(o," has been removed"+(t?" in "+t:"")),fe.ERR_DEPRECATED);return t&&!kt[o]&&(kt[o]=!0,console.warn(n(o," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,o,i)}};var At={assertOptions:function(e,t,r){if("object"!==f(e))throw new fe("options must be an object",fe.ERR_BAD_OPTION_VALUE);for(var n=Object.keys(e),o=n.length;o-- >0;){var i=n[o],a=t[i];if(a){var s=e[i],u=void 0===s||a(s,i,e);if(!0!==u)throw new fe("option "+i+" must be "+u,fe.ERR_BAD_OPTION_VALUE)}else if(!0!==r)throw new fe("Unknown option "+i,fe.ERR_BAD_OPTION)}},validators:jt},Pt=At.validators,Lt=function(){function e(t){p(this,e),this.defaults=t,this.interceptors={request:new xe,response:new xe}}var t;return y(e,[{key:"request",value:(t=h(u().mark((function e(t,r){var n,o;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this._request(t,r);case 3:return e.abrupt("return",e.sent);case 6:if(e.prev=6,e.t0=e.catch(0),e.t0 instanceof Error){Error.captureStackTrace?Error.captureStackTrace(n={}):n=new Error,o=n.stack?n.stack.replace(/^.+\n/,""):"";try{e.t0.stack?o&&!String(e.t0.stack).endsWith(o.replace(/^.+\n.+\n/,""))&&(e.t0.stack+="\n"+o):e.t0.stack=o}catch(e){}}throw e.t0;case 10:case"end":return e.stop()}}),e,this,[[0,6]])}))),function(e,r){return t.apply(this,arguments)})},{key:"_request",value:function(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{};var r=t=Ze(this.defaults,t),n=r.transitional,o=r.paramsSerializer,i=r.headers;void 0!==n&&At.assertOptions(n,{silentJSONParsing:Pt.transitional(Pt.boolean),forcedJSONParsing:Pt.transitional(Pt.boolean),clarifyTimeoutError:Pt.transitional(Pt.boolean)},!1),null!=o&&(ce.isFunction(o)?t.paramsSerializer={serialize:o}:At.assertOptions(o,{encode:Pt.function,serialize:Pt.function},!0)),t.method=(t.method||this.defaults.method||"get").toLowerCase();var a=i&&ce.merge(i.common,i[t.method]);i&&ce.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete i[e]})),t.headers=ze.concat(a,i);var s=[],u=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(u=u&&e.synchronous,s.unshift(e.fulfilled,e.rejected))}));var c,f=[];this.interceptors.response.forEach((function(e){f.push(e.fulfilled,e.rejected)}));var l,h=0;if(!u){var p=[Rt.bind(this),void 0];for(p.unshift.apply(p,s),p.push.apply(p,f),l=p.length,c=Promise.resolve(t);h0;)n._listeners[t](e);n._listeners=null}})),this.promise.then=function(e){var t,r=new Promise((function(e){n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},t((function(e,t,o){n.reason||(n.reason=new Je(e,t,o),r(n.reason))}))}return y(e,[{key:"throwIfRequested",value:function(){if(this.reason)throw this.reason}},{key:"subscribe",value:function(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}},{key:"unsubscribe",value:function(e){if(this._listeners){var t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}}}],[{key:"source",value:function(){var t;return{token:new e((function(e){t=e})),cancel:t}}}]),e}();var Ct={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Ct).forEach((function(e){var t=m(e,2),r=t[0],n=t[1];Ct[n]=r}));var Ft=Ct;var Ut=function e(t){var r=new Nt(t),n=x(Nt.prototype.request,r);return ce.extend(n,Nt.prototype,r,{allOwnKeys:!0}),ce.extend(n,r,null,{allOwnKeys:!0}),n.create=function(r){return e(Ze(t,r))},n}(Ce);return Ut.Axios=Nt,Ut.CanceledError=Je,Ut.CancelToken=_t,Ut.isCancel=He,Ut.VERSION=Tt,Ut.toFormData=me,Ut.AxiosError=fe,Ut.Cancel=Ut.CanceledError,Ut.all=function(e){return Promise.all(e)},Ut.spread=function(e){return function(t){return e.apply(null,t)}},Ut.isAxiosError=function(e){return ce.isObject(e)&&!0===e.isAxiosError},Ut.mergeConfig=Ze,Ut.AxiosHeaders=ze,Ut.formToJSON=function(e){return Ne(ce.isHTMLForm(e)?new FormData(e):e)},Ut.getAdapter=St,Ut.HttpStatusCode=Ft,Ut.default=Ut,Ut}));
+//# sourceMappingURL=axios.min.js.map
diff --git a/node_modules/axios/dist/axios.min.js.map b/node_modules/axios/dist/axios.min.js.map
new file mode 100644
index 00000000..870e70f5
--- /dev/null
+++ b/node_modules/axios/dist/axios.min.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"axios.min.js","sources":["../lib/helpers/bind.js","../lib/utils.js","../lib/core/AxiosError.js","../lib/helpers/toFormData.js","../lib/helpers/AxiosURLSearchParams.js","../lib/helpers/buildURL.js","../lib/core/InterceptorManager.js","../lib/platform/common/utils.js","../lib/defaults/transitional.js","../lib/platform/browser/index.js","../lib/platform/browser/classes/URLSearchParams.js","../lib/platform/browser/classes/FormData.js","../lib/platform/browser/classes/Blob.js","../lib/platform/index.js","../lib/helpers/formDataToJSON.js","../lib/defaults/index.js","../lib/helpers/toURLEncodedForm.js","../lib/helpers/parseHeaders.js","../lib/core/AxiosHeaders.js","../lib/core/transformData.js","../lib/cancel/isCancel.js","../lib/cancel/CanceledError.js","../lib/core/settle.js","../lib/helpers/speedometer.js","../lib/helpers/throttle.js","../lib/helpers/progressEventReducer.js","../lib/helpers/isURLSameOrigin.js","../lib/helpers/cookies.js","../lib/core/buildFullPath.js","../lib/helpers/isAbsoluteURL.js","../lib/helpers/combineURLs.js","../lib/core/mergeConfig.js","../lib/helpers/resolveConfig.js","../lib/adapters/fetch.js","../lib/adapters/xhr.js","../lib/helpers/parseProtocol.js","../lib/helpers/composeSignals.js","../lib/helpers/trackStream.js","../lib/adapters/adapters.js","../lib/helpers/null.js","../lib/core/dispatchRequest.js","../lib/env/data.js","../lib/helpers/validator.js","../lib/core/Axios.js","../lib/cancel/CancelToken.js","../lib/helpers/HttpStatusCode.js","../lib/axios.js","../lib/helpers/spread.js","../lib/helpers/isAxiosError.js"],"sourcesContent":["'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = (\n (product) => {\n return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0\n })(typeof navigator !== 'undefined' && navigator.product);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n origin\n}\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isHeaders(header)) {\n for (const [key, value] of header.entries()) {\n setHeader(value, key, rewrite);\n }\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","'use strict';\n\n/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n const threshold = 1000 / freq;\n let timer = null;\n return function throttled() {\n const force = this === true;\n\n const now = Date.now();\n if (force || now - timestamp > threshold) {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n timestamp = now;\n return fn.apply(null, arguments);\n }\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n timestamp = Date.now();\n return fn.apply(null, arguments);\n }, threshold - (now - timestamp));\n }\n };\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\n\nexport default (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n }, freq);\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n let contentType;\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // Let the browser set it\n } else if ((contentType = headers.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport progressEventReducer from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst fetchProgressDecorator = (total, fn) => {\n const lengthComputable = total != null;\n return (loaded) => setTimeout(() => fn({\n lengthComputable,\n total,\n loaded\n }));\n}\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst supportsRequestStream = isReadableStreamSupported && (() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n})();\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported && !!(()=> {\n try {\n return utils.isReadableStream(new Response('').body);\n } catch(err) {\n // return undefined\n }\n})();\n\nconst resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\n (_, config) => {\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if(utils.isBlob(body)) {\n return body.size;\n }\n\n if(utils.isSpecCompliantForm(body)) {\n return (await new Request(body).arrayBuffer()).byteLength;\n }\n\n if(utils.isArrayBufferView(body)) {\n return body.byteLength;\n }\n\n if(utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if(utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n}\n\nconst resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n}\n\nexport default isFetchSupported && (async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let [composedSignal, stopTimeout] = (signal || cancelToken || timeout) ?\n composeSignals([signal, cancelToken], timeout) : [];\n\n let finished, request;\n\n const onFinish = () => {\n !finished && setTimeout(() => {\n composedSignal && composedSignal.unsubscribe();\n });\n\n finished = true;\n }\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, fetchProgressDecorator(\n requestContentLength,\n progressEventReducer(onUploadProgress)\n ), null, encodeText);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'cors' : 'omit';\n }\n\n request = new Request(url, {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n withCredentials\n });\n\n let response = await fetch(request);\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || isStreamResponse)) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onDownloadProgress && fetchProgressDecorator(\n responseContentLength,\n progressEventReducer(onDownloadProgress, true)\n ), isStreamResponse && onFinish, encodeText),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && onFinish();\n\n stopTimeout && stopTimeout();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n onFinish();\n\n if (err && err.name === 'TypeError' && /fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n});\n\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport progressEventReducer from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType} = _config;\n let onCanceled;\n function done() {\n if (_config.cancelToken) {\n _config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (_config.signal) {\n _config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, _config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, _config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n _config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (typeof _config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(_config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof _config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(_config.onUploadProgress));\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst composeSignals = (signals, timeout) => {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (cancel) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = cancel instanceof Error ? cancel : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal &&\n (signal.removeEventListener ? signal.removeEventListener('abort', onabort) : signal.unsubscribe(onabort));\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal && signal.addEventListener && signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = unsubscribe;\n\n return [signal, () => {\n timer && clearTimeout(timer);\n timer = null;\n }];\n}\n\nexport default composeSignals;\n","\n\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize, encode) {\n for await (const chunk of iterable) {\n yield* streamChunk(ArrayBuffer.isView(chunk) ? chunk : (await encode(String(chunk))), chunkSize);\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish, encode) => {\n const iterator = readBytes(stream, chunkSize, encode);\n\n let bytes = 0;\n\n return new ReadableStream({\n type: 'bytes',\n\n async pull(controller) {\n const {done, value} = await iterator.next();\n\n if (done) {\n controller.close();\n onFinish();\n return;\n }\n\n let len = value.byteLength;\n onProgress && onProgress(bytes += len);\n controller.enqueue(new Uint8Array(value));\n },\n cancel(reason) {\n onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: fetchAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","export const VERSION = \"1.7.2\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n"],"names":["bind","fn","thisArg","apply","arguments","cache","toString","Object","prototype","getPrototypeOf","kindOf","create","thing","str","call","slice","toLowerCase","kindOfTest","type","typeOfTest","_typeof","isArray","Array","isUndefined","isArrayBuffer","isString","isFunction","isNumber","isObject","isPlainObject","val","Symbol","toStringTag","iterator","isDate","isFile","isBlob","isFileList","isURLSearchParams","_map2","_slicedToArray","map","isReadableStream","isRequest","isResponse","isHeaders","forEach","obj","i","l","_ref","length","undefined","_ref$allOwnKeys","allOwnKeys","key","keys","getOwnPropertyNames","len","findKey","_key","_global","globalThis","self","window","global","isContextDefined","context","TypedArray","isTypedArray","Uint8Array","isHTMLForm","hasOwnProperty","_ref4","prop","isRegExp","reduceDescriptors","reducer","descriptors","getOwnPropertyDescriptors","reducedDescriptors","descriptor","name","ret","defineProperties","ALPHA","DIGIT","ALPHABET","ALPHA_DIGIT","toUpperCase","isAsyncFn","utils$1","isBuffer","constructor","isFormData","kind","FormData","append","isArrayBufferView","ArrayBuffer","isView","buffer","isBoolean","isStream","pipe","merge","_ref2","this","caseless","result","assignValue","targetKey","extend","a","b","_ref3","trim","replace","stripBOM","content","charCodeAt","inherits","superConstructor","props","defineProperty","value","assign","toFlatObject","sourceObj","destObj","filter","propFilter","merged","endsWith","searchString","position","String","lastIndex","indexOf","toArray","arr","forEachEntry","next","done","pair","matchAll","regExp","matches","exec","push","hasOwnProp","freezeMethods","enumerable","writable","set","Error","toObjectSet","arrayOrString","delimiter","define","split","toCamelCase","m","p1","p2","noop","toFiniteNumber","defaultValue","Number","isFinite","generateString","size","alphabet","Math","random","isSpecCompliantForm","toJSONObject","stack","visit","source","target","reducedValue","isThenable","then","AxiosError","message","code","config","request","response","captureStackTrace","utils","toJSON","description","number","fileName","lineNumber","columnNumber","status","from","error","customProps","axiosError","cause","isVisitable","removeBrackets","renderKey","path","dots","concat","token","join","predicates","test","toFormData","formData","options","TypeError","metaTokens","indexes","option","visitor","defaultVisitor","useBlob","Blob","convertValue","toISOString","Buffer","JSON","stringify","some","isFlatArray","el","index","exposedHelpers","build","pop","encode","charMap","encodeURIComponent","match","AxiosURLSearchParams","params","_pairs","buildURL","url","serializedParams","_encode","serializeFn","serialize","hashmarkIndex","encoder","product","InterceptorManager$1","InterceptorManager","_classCallCheck","handlers","_createClass","fulfilled","rejected","synchronous","runWhen","id","h","transitionalDefaults","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","platform$1","isBrowser","classes","URLSearchParams","protocols","hasBrowserEnv","document","hasStandardBrowserEnv","navigator","hasStandardBrowserWebWorkerEnv","WorkerGlobalScope","importScripts","origin","location","href","_objectSpread","platform","formDataToJSON","buildPath","isNumericKey","isLast","arrayToObject","entries","parsePropPath","defaults","transitional","adapter","transformRequest","data","headers","contentType","getContentType","hasJSONContentType","isObjectPayload","setContentType","helpers","isNode","toURLEncodedForm","formSerializer","_FormData","env","rawValue","parser","parse","e","stringifySafely","transformResponse","JSONRequested","responseType","strictJSONParsing","ERR_BAD_RESPONSE","timeout","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","common","Accept","method","defaults$1","ignoreDuplicateOf","$internals","normalizeHeader","header","normalizeValue","matchHeaderValue","isHeaderNameFilter","AxiosHeaders","_Symbol$iterator","_Symbol$toStringTag","valueOrRewrite","rewrite","setHeader","_value","_header","_rewrite","lHeader","setHeaders","rawHeaders","parsed","line","substring","parseHeaders","_step","_iterator","_createForOfIteratorHelper","s","n","_step$value","err","f","tokens","tokensRE","parseTokens","matcher","deleted","deleteHeader","format","normalized","w","char","formatHeader","_this$constructor","_len","targets","asStrings","get","first","computed","_len2","_key2","accessors","defineAccessor","accessorName","methodName","arg1","arg2","arg3","configurable","buildAccessors","accessor","mapped","headerValue","AxiosHeaders$1","transformData","fns","normalize","isCancel","__CANCEL__","CanceledError","ERR_CANCELED","settle","resolve","reject","ERR_BAD_REQUEST","floor","speedometer","samplesCount","min","firstSampleTS","bytes","timestamps","head","tail","chunkLength","now","Date","startedAt","bytesCount","passed","round","throttle","freq","timestamp","threshold","timer","_arguments","force","clearTimeout","setTimeout","progressEventReducer","listener","isDownloadStream","bytesNotified","_speedometer","loaded","total","lengthComputable","progressBytes","rate","progress","estimated","event","originURL","msie","userAgent","urlParsingNode","createElement","resolveURL","setAttribute","protocol","host","search","hash","hostname","port","pathname","charAt","requestURL","write","expires","domain","secure","cookie","toGMTString","read","RegExp","decodeURIComponent","remove","buildFullPath","baseURL","requestedURL","relativeURL","combineURLs","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","paramsSerializer","timeoutMessage","withCredentials","withXSRFToken","onUploadProgress","onDownloadProgress","decompress","beforeRedirect","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding","configValue","duplexAccessed","hasContentType","res","resolveConfig","newConfig","auth","btoa","username","password","unescape","Boolean","_toConsumableArray","isURLSameOrigin","xsrfValue","cookies","xhrAdapter","XMLHttpRequest","Promise","onCanceled","_config","requestData","requestHeaders","unsubscribe","signal","removeEventListener","onloadend","responseHeaders","getAllResponseHeaders","responseText","statusText","open","onreadystatechange","readyState","responseURL","onabort","ECONNABORTED","onerror","ERR_NETWORK","ontimeout","timeoutErrorMessage","ETIMEDOUT","setRequestHeader","addEventListener","upload","cancel","abort","subscribe","aborted","send","composeSignals$1","signals","controller","AbortController","reason","streamChunk","_regeneratorRuntime","mark","chunk","chunkSize","pos","end","wrap","_context","prev","byteLength","abrupt","stop","readBytes","_callee","iterable","_iteratorAbruptCompletion","_didIteratorError","_iteratorError","_context2","_asyncIterator","_awaitAsyncGenerator","sent","t0","_asyncGeneratorDelegate","t1","t2","t3","t4","t5","t6","t7","t8","delegateYield","t10","finish","_x","_x2","_x3","trackStream","stream","onProgress","onFinish","ReadableStream","pull","_asyncToGenerator","_callee2","_yield$iterator$next","_context3","close","enqueue","highWaterMark","fetchProgressDecorator","isFetchSupported","fetch","Request","Response","isReadableStreamSupported","encodeText","TextEncoder","arrayBuffer","supportsRequestStream","body","duplex","has","supportsResponseStream","resolvers","_","ERR_NOT_SUPPORT","getBodyLength","resolveBodyLength","_callee3","getContentLength","_x4","_callee4","_resolveConfig","_resolveConfig$withCr","fetchOptions","_ref5","_ref6","composedSignal","stopTimeout","finished","requestContentLength","_request","contentTypeHeader","isStreamResponse","responseContentLength","responseData","_context4","composeSignals","_x5","knownAdapters","http","xhr","fetchAdapter","renderReason","isResolvedHandle","adapters","nameOrAdapter","rejectedReasons","reasons","state","throwIfCancellationRequested","throwIfRequested","dispatchRequest","VERSION","validators","deprecatedWarnings","validators$1","validator","version","formatMessage","opt","desc","opts","ERR_DEPRECATED","console","warn","assertOptions","schema","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","Axios","instanceConfig","interceptors","_request2","configOrUrl","dummy","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","unshift","promise","responseInterceptorChain","chain","onFulfilled","onRejected","generateHTTPMethod","isForm","Axios$1","CancelToken$1","CancelToken","executor","resolvePromise","_listeners","onfulfilled","_resolve","splice","c","HttpStatusCode","Continue","SwitchingProtocols","Processing","EarlyHints","Ok","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","HttpStatusCode$1","axios","createInstance","defaultConfig","instance","Cancel","all","promises","spread","callback","isAxiosError","payload","formToJSON","getAdapter"],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/axios/dist/browser/axios.cjs b/node_modules/axios/dist/browser/axios.cjs
new file mode 100644
index 00000000..6936d242
--- /dev/null
+++ b/node_modules/axios/dist/browser/axios.cjs
@@ -0,0 +1,3638 @@
+// Axios v1.7.2 Copyright (c) 2024 Matt Zabriskie and contributors
+'use strict';
+
+function bind(fn, thisArg) {
+ return function wrap() {
+ return fn.apply(thisArg, arguments);
+ };
+}
+
+// utils is a library of generic helper functions non-specific to axios
+
+const {toString} = Object.prototype;
+const {getPrototypeOf} = Object;
+
+const kindOf = (cache => thing => {
+ const str = toString.call(thing);
+ return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());
+})(Object.create(null));
+
+const kindOfTest = (type) => {
+ type = type.toLowerCase();
+ return (thing) => kindOf(thing) === type
+};
+
+const typeOfTest = type => thing => typeof thing === type;
+
+/**
+ * Determine if a value is an Array
+ *
+ * @param {Object} val The value to test
+ *
+ * @returns {boolean} True if value is an Array, otherwise false
+ */
+const {isArray} = Array;
+
+/**
+ * Determine if a value is undefined
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if the value is undefined, otherwise false
+ */
+const isUndefined = typeOfTest('undefined');
+
+/**
+ * Determine if a value is a Buffer
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a Buffer, otherwise false
+ */
+function isBuffer(val) {
+ return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)
+ && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);
+}
+
+/**
+ * Determine if a value is an ArrayBuffer
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is an ArrayBuffer, otherwise false
+ */
+const isArrayBuffer = kindOfTest('ArrayBuffer');
+
+
+/**
+ * Determine if a value is a view on an ArrayBuffer
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false
+ */
+function isArrayBufferView(val) {
+ let result;
+ if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {
+ result = ArrayBuffer.isView(val);
+ } else {
+ result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));
+ }
+ return result;
+}
+
+/**
+ * Determine if a value is a String
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a String, otherwise false
+ */
+const isString = typeOfTest('string');
+
+/**
+ * Determine if a value is a Function
+ *
+ * @param {*} val The value to test
+ * @returns {boolean} True if value is a Function, otherwise false
+ */
+const isFunction = typeOfTest('function');
+
+/**
+ * Determine if a value is a Number
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a Number, otherwise false
+ */
+const isNumber = typeOfTest('number');
+
+/**
+ * Determine if a value is an Object
+ *
+ * @param {*} thing The value to test
+ *
+ * @returns {boolean} True if value is an Object, otherwise false
+ */
+const isObject = (thing) => thing !== null && typeof thing === 'object';
+
+/**
+ * Determine if a value is a Boolean
+ *
+ * @param {*} thing The value to test
+ * @returns {boolean} True if value is a Boolean, otherwise false
+ */
+const isBoolean = thing => thing === true || thing === false;
+
+/**
+ * Determine if a value is a plain Object
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a plain Object, otherwise false
+ */
+const isPlainObject = (val) => {
+ if (kindOf(val) !== 'object') {
+ return false;
+ }
+
+ const prototype = getPrototypeOf(val);
+ return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);
+};
+
+/**
+ * Determine if a value is a Date
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a Date, otherwise false
+ */
+const isDate = kindOfTest('Date');
+
+/**
+ * Determine if a value is a File
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a File, otherwise false
+ */
+const isFile = kindOfTest('File');
+
+/**
+ * Determine if a value is a Blob
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a Blob, otherwise false
+ */
+const isBlob = kindOfTest('Blob');
+
+/**
+ * Determine if a value is a FileList
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a File, otherwise false
+ */
+const isFileList = kindOfTest('FileList');
+
+/**
+ * Determine if a value is a Stream
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a Stream, otherwise false
+ */
+const isStream = (val) => isObject(val) && isFunction(val.pipe);
+
+/**
+ * Determine if a value is a FormData
+ *
+ * @param {*} thing The value to test
+ *
+ * @returns {boolean} True if value is an FormData, otherwise false
+ */
+const isFormData = (thing) => {
+ let kind;
+ return thing && (
+ (typeof FormData === 'function' && thing instanceof FormData) || (
+ isFunction(thing.append) && (
+ (kind = kindOf(thing)) === 'formdata' ||
+ // detect form-data instance
+ (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')
+ )
+ )
+ )
+};
+
+/**
+ * Determine if a value is a URLSearchParams object
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a URLSearchParams object, otherwise false
+ */
+const isURLSearchParams = kindOfTest('URLSearchParams');
+
+const [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);
+
+/**
+ * Trim excess whitespace off the beginning and end of a string
+ *
+ * @param {String} str The String to trim
+ *
+ * @returns {String} The String freed of excess whitespace
+ */
+const trim = (str) => str.trim ?
+ str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
+
+/**
+ * Iterate over an Array or an Object invoking a function for each item.
+ *
+ * If `obj` is an Array callback will be called passing
+ * the value, index, and complete array for each item.
+ *
+ * If 'obj' is an Object callback will be called passing
+ * the value, key, and complete object for each property.
+ *
+ * @param {Object|Array} obj The object to iterate
+ * @param {Function} fn The callback to invoke for each item
+ *
+ * @param {Boolean} [allOwnKeys = false]
+ * @returns {any}
+ */
+function forEach(obj, fn, {allOwnKeys = false} = {}) {
+ // Don't bother if no value provided
+ if (obj === null || typeof obj === 'undefined') {
+ return;
+ }
+
+ let i;
+ let l;
+
+ // Force an array if not already something iterable
+ if (typeof obj !== 'object') {
+ /*eslint no-param-reassign:0*/
+ obj = [obj];
+ }
+
+ if (isArray(obj)) {
+ // Iterate over array values
+ for (i = 0, l = obj.length; i < l; i++) {
+ fn.call(null, obj[i], i, obj);
+ }
+ } else {
+ // Iterate over object keys
+ const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);
+ const len = keys.length;
+ let key;
+
+ for (i = 0; i < len; i++) {
+ key = keys[i];
+ fn.call(null, obj[key], key, obj);
+ }
+ }
+}
+
+function findKey(obj, key) {
+ key = key.toLowerCase();
+ const keys = Object.keys(obj);
+ let i = keys.length;
+ let _key;
+ while (i-- > 0) {
+ _key = keys[i];
+ if (key === _key.toLowerCase()) {
+ return _key;
+ }
+ }
+ return null;
+}
+
+const _global = (() => {
+ /*eslint no-undef:0*/
+ if (typeof globalThis !== "undefined") return globalThis;
+ return typeof self !== "undefined" ? self : (typeof window !== 'undefined' ? window : global)
+})();
+
+const isContextDefined = (context) => !isUndefined(context) && context !== _global;
+
+/**
+ * Accepts varargs expecting each argument to be an object, then
+ * immutably merges the properties of each object and returns result.
+ *
+ * When multiple objects contain the same key the later object in
+ * the arguments list will take precedence.
+ *
+ * Example:
+ *
+ * ```js
+ * var result = merge({foo: 123}, {foo: 456});
+ * console.log(result.foo); // outputs 456
+ * ```
+ *
+ * @param {Object} obj1 Object to merge
+ *
+ * @returns {Object} Result of all merge properties
+ */
+function merge(/* obj1, obj2, obj3, ... */) {
+ const {caseless} = isContextDefined(this) && this || {};
+ const result = {};
+ const assignValue = (val, key) => {
+ const targetKey = caseless && findKey(result, key) || key;
+ if (isPlainObject(result[targetKey]) && isPlainObject(val)) {
+ result[targetKey] = merge(result[targetKey], val);
+ } else if (isPlainObject(val)) {
+ result[targetKey] = merge({}, val);
+ } else if (isArray(val)) {
+ result[targetKey] = val.slice();
+ } else {
+ result[targetKey] = val;
+ }
+ };
+
+ for (let i = 0, l = arguments.length; i < l; i++) {
+ arguments[i] && forEach(arguments[i], assignValue);
+ }
+ return result;
+}
+
+/**
+ * Extends object a by mutably adding to it the properties of object b.
+ *
+ * @param {Object} a The object to be extended
+ * @param {Object} b The object to copy properties from
+ * @param {Object} thisArg The object to bind function to
+ *
+ * @param {Boolean} [allOwnKeys]
+ * @returns {Object} The resulting value of object a
+ */
+const extend = (a, b, thisArg, {allOwnKeys}= {}) => {
+ forEach(b, (val, key) => {
+ if (thisArg && isFunction(val)) {
+ a[key] = bind(val, thisArg);
+ } else {
+ a[key] = val;
+ }
+ }, {allOwnKeys});
+ return a;
+};
+
+/**
+ * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)
+ *
+ * @param {string} content with BOM
+ *
+ * @returns {string} content value without BOM
+ */
+const stripBOM = (content) => {
+ if (content.charCodeAt(0) === 0xFEFF) {
+ content = content.slice(1);
+ }
+ return content;
+};
+
+/**
+ * Inherit the prototype methods from one constructor into another
+ * @param {function} constructor
+ * @param {function} superConstructor
+ * @param {object} [props]
+ * @param {object} [descriptors]
+ *
+ * @returns {void}
+ */
+const inherits = (constructor, superConstructor, props, descriptors) => {
+ constructor.prototype = Object.create(superConstructor.prototype, descriptors);
+ constructor.prototype.constructor = constructor;
+ Object.defineProperty(constructor, 'super', {
+ value: superConstructor.prototype
+ });
+ props && Object.assign(constructor.prototype, props);
+};
+
+/**
+ * Resolve object with deep prototype chain to a flat object
+ * @param {Object} sourceObj source object
+ * @param {Object} [destObj]
+ * @param {Function|Boolean} [filter]
+ * @param {Function} [propFilter]
+ *
+ * @returns {Object}
+ */
+const toFlatObject = (sourceObj, destObj, filter, propFilter) => {
+ let props;
+ let i;
+ let prop;
+ const merged = {};
+
+ destObj = destObj || {};
+ // eslint-disable-next-line no-eq-null,eqeqeq
+ if (sourceObj == null) return destObj;
+
+ do {
+ props = Object.getOwnPropertyNames(sourceObj);
+ i = props.length;
+ while (i-- > 0) {
+ prop = props[i];
+ if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {
+ destObj[prop] = sourceObj[prop];
+ merged[prop] = true;
+ }
+ }
+ sourceObj = filter !== false && getPrototypeOf(sourceObj);
+ } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);
+
+ return destObj;
+};
+
+/**
+ * Determines whether a string ends with the characters of a specified string
+ *
+ * @param {String} str
+ * @param {String} searchString
+ * @param {Number} [position= 0]
+ *
+ * @returns {boolean}
+ */
+const endsWith = (str, searchString, position) => {
+ str = String(str);
+ if (position === undefined || position > str.length) {
+ position = str.length;
+ }
+ position -= searchString.length;
+ const lastIndex = str.indexOf(searchString, position);
+ return lastIndex !== -1 && lastIndex === position;
+};
+
+
+/**
+ * Returns new array from array like object or null if failed
+ *
+ * @param {*} [thing]
+ *
+ * @returns {?Array}
+ */
+const toArray = (thing) => {
+ if (!thing) return null;
+ if (isArray(thing)) return thing;
+ let i = thing.length;
+ if (!isNumber(i)) return null;
+ const arr = new Array(i);
+ while (i-- > 0) {
+ arr[i] = thing[i];
+ }
+ return arr;
+};
+
+/**
+ * Checking if the Uint8Array exists and if it does, it returns a function that checks if the
+ * thing passed in is an instance of Uint8Array
+ *
+ * @param {TypedArray}
+ *
+ * @returns {Array}
+ */
+// eslint-disable-next-line func-names
+const isTypedArray = (TypedArray => {
+ // eslint-disable-next-line func-names
+ return thing => {
+ return TypedArray && thing instanceof TypedArray;
+ };
+})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));
+
+/**
+ * For each entry in the object, call the function with the key and value.
+ *
+ * @param {Object} obj - The object to iterate over.
+ * @param {Function} fn - The function to call for each entry.
+ *
+ * @returns {void}
+ */
+const forEachEntry = (obj, fn) => {
+ const generator = obj && obj[Symbol.iterator];
+
+ const iterator = generator.call(obj);
+
+ let result;
+
+ while ((result = iterator.next()) && !result.done) {
+ const pair = result.value;
+ fn.call(obj, pair[0], pair[1]);
+ }
+};
+
+/**
+ * It takes a regular expression and a string, and returns an array of all the matches
+ *
+ * @param {string} regExp - The regular expression to match against.
+ * @param {string} str - The string to search.
+ *
+ * @returns {Array}
+ */
+const matchAll = (regExp, str) => {
+ let matches;
+ const arr = [];
+
+ while ((matches = regExp.exec(str)) !== null) {
+ arr.push(matches);
+ }
+
+ return arr;
+};
+
+/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */
+const isHTMLForm = kindOfTest('HTMLFormElement');
+
+const toCamelCase = str => {
+ return str.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,
+ function replacer(m, p1, p2) {
+ return p1.toUpperCase() + p2;
+ }
+ );
+};
+
+/* Creating a function that will check if an object has a property. */
+const hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);
+
+/**
+ * Determine if a value is a RegExp object
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a RegExp object, otherwise false
+ */
+const isRegExp = kindOfTest('RegExp');
+
+const reduceDescriptors = (obj, reducer) => {
+ const descriptors = Object.getOwnPropertyDescriptors(obj);
+ const reducedDescriptors = {};
+
+ forEach(descriptors, (descriptor, name) => {
+ let ret;
+ if ((ret = reducer(descriptor, name, obj)) !== false) {
+ reducedDescriptors[name] = ret || descriptor;
+ }
+ });
+
+ Object.defineProperties(obj, reducedDescriptors);
+};
+
+/**
+ * Makes all methods read-only
+ * @param {Object} obj
+ */
+
+const freezeMethods = (obj) => {
+ reduceDescriptors(obj, (descriptor, name) => {
+ // skip restricted props in strict mode
+ if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {
+ return false;
+ }
+
+ const value = obj[name];
+
+ if (!isFunction(value)) return;
+
+ descriptor.enumerable = false;
+
+ if ('writable' in descriptor) {
+ descriptor.writable = false;
+ return;
+ }
+
+ if (!descriptor.set) {
+ descriptor.set = () => {
+ throw Error('Can not rewrite read-only method \'' + name + '\'');
+ };
+ }
+ });
+};
+
+const toObjectSet = (arrayOrString, delimiter) => {
+ const obj = {};
+
+ const define = (arr) => {
+ arr.forEach(value => {
+ obj[value] = true;
+ });
+ };
+
+ isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));
+
+ return obj;
+};
+
+const noop = () => {};
+
+const toFiniteNumber = (value, defaultValue) => {
+ return value != null && Number.isFinite(value = +value) ? value : defaultValue;
+};
+
+const ALPHA = 'abcdefghijklmnopqrstuvwxyz';
+
+const DIGIT = '0123456789';
+
+const ALPHABET = {
+ DIGIT,
+ ALPHA,
+ ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT
+};
+
+const generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {
+ let str = '';
+ const {length} = alphabet;
+ while (size--) {
+ str += alphabet[Math.random() * length|0];
+ }
+
+ return str;
+};
+
+/**
+ * If the thing is a FormData object, return true, otherwise return false.
+ *
+ * @param {unknown} thing - The thing to check.
+ *
+ * @returns {boolean}
+ */
+function isSpecCompliantForm(thing) {
+ return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);
+}
+
+const toJSONObject = (obj) => {
+ const stack = new Array(10);
+
+ const visit = (source, i) => {
+
+ if (isObject(source)) {
+ if (stack.indexOf(source) >= 0) {
+ return;
+ }
+
+ if(!('toJSON' in source)) {
+ stack[i] = source;
+ const target = isArray(source) ? [] : {};
+
+ forEach(source, (value, key) => {
+ const reducedValue = visit(value, i + 1);
+ !isUndefined(reducedValue) && (target[key] = reducedValue);
+ });
+
+ stack[i] = undefined;
+
+ return target;
+ }
+ }
+
+ return source;
+ };
+
+ return visit(obj, 0);
+};
+
+const isAsyncFn = kindOfTest('AsyncFunction');
+
+const isThenable = (thing) =>
+ thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);
+
+var utils$1 = {
+ isArray,
+ isArrayBuffer,
+ isBuffer,
+ isFormData,
+ isArrayBufferView,
+ isString,
+ isNumber,
+ isBoolean,
+ isObject,
+ isPlainObject,
+ isReadableStream,
+ isRequest,
+ isResponse,
+ isHeaders,
+ isUndefined,
+ isDate,
+ isFile,
+ isBlob,
+ isRegExp,
+ isFunction,
+ isStream,
+ isURLSearchParams,
+ isTypedArray,
+ isFileList,
+ forEach,
+ merge,
+ extend,
+ trim,
+ stripBOM,
+ inherits,
+ toFlatObject,
+ kindOf,
+ kindOfTest,
+ endsWith,
+ toArray,
+ forEachEntry,
+ matchAll,
+ isHTMLForm,
+ hasOwnProperty,
+ hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection
+ reduceDescriptors,
+ freezeMethods,
+ toObjectSet,
+ toCamelCase,
+ noop,
+ toFiniteNumber,
+ findKey,
+ global: _global,
+ isContextDefined,
+ ALPHABET,
+ generateString,
+ isSpecCompliantForm,
+ toJSONObject,
+ isAsyncFn,
+ isThenable
+};
+
+/**
+ * Create an Error with the specified message, config, error code, request and response.
+ *
+ * @param {string} message The error message.
+ * @param {string} [code] The error code (for example, 'ECONNABORTED').
+ * @param {Object} [config] The config.
+ * @param {Object} [request] The request.
+ * @param {Object} [response] The response.
+ *
+ * @returns {Error} The created error.
+ */
+function AxiosError(message, code, config, request, response) {
+ Error.call(this);
+
+ if (Error.captureStackTrace) {
+ Error.captureStackTrace(this, this.constructor);
+ } else {
+ this.stack = (new Error()).stack;
+ }
+
+ this.message = message;
+ this.name = 'AxiosError';
+ code && (this.code = code);
+ config && (this.config = config);
+ request && (this.request = request);
+ response && (this.response = response);
+}
+
+utils$1.inherits(AxiosError, Error, {
+ toJSON: function toJSON() {
+ return {
+ // Standard
+ message: this.message,
+ name: this.name,
+ // Microsoft
+ description: this.description,
+ number: this.number,
+ // Mozilla
+ fileName: this.fileName,
+ lineNumber: this.lineNumber,
+ columnNumber: this.columnNumber,
+ stack: this.stack,
+ // Axios
+ config: utils$1.toJSONObject(this.config),
+ code: this.code,
+ status: this.response && this.response.status ? this.response.status : null
+ };
+ }
+});
+
+const prototype$1 = AxiosError.prototype;
+const descriptors = {};
+
+[
+ 'ERR_BAD_OPTION_VALUE',
+ 'ERR_BAD_OPTION',
+ 'ECONNABORTED',
+ 'ETIMEDOUT',
+ 'ERR_NETWORK',
+ 'ERR_FR_TOO_MANY_REDIRECTS',
+ 'ERR_DEPRECATED',
+ 'ERR_BAD_RESPONSE',
+ 'ERR_BAD_REQUEST',
+ 'ERR_CANCELED',
+ 'ERR_NOT_SUPPORT',
+ 'ERR_INVALID_URL'
+// eslint-disable-next-line func-names
+].forEach(code => {
+ descriptors[code] = {value: code};
+});
+
+Object.defineProperties(AxiosError, descriptors);
+Object.defineProperty(prototype$1, 'isAxiosError', {value: true});
+
+// eslint-disable-next-line func-names
+AxiosError.from = (error, code, config, request, response, customProps) => {
+ const axiosError = Object.create(prototype$1);
+
+ utils$1.toFlatObject(error, axiosError, function filter(obj) {
+ return obj !== Error.prototype;
+ }, prop => {
+ return prop !== 'isAxiosError';
+ });
+
+ AxiosError.call(axiosError, error.message, code, config, request, response);
+
+ axiosError.cause = error;
+
+ axiosError.name = error.name;
+
+ customProps && Object.assign(axiosError, customProps);
+
+ return axiosError;
+};
+
+// eslint-disable-next-line strict
+var httpAdapter = null;
+
+/**
+ * Determines if the given thing is a array or js object.
+ *
+ * @param {string} thing - The object or array to be visited.
+ *
+ * @returns {boolean}
+ */
+function isVisitable(thing) {
+ return utils$1.isPlainObject(thing) || utils$1.isArray(thing);
+}
+
+/**
+ * It removes the brackets from the end of a string
+ *
+ * @param {string} key - The key of the parameter.
+ *
+ * @returns {string} the key without the brackets.
+ */
+function removeBrackets(key) {
+ return utils$1.endsWith(key, '[]') ? key.slice(0, -2) : key;
+}
+
+/**
+ * It takes a path, a key, and a boolean, and returns a string
+ *
+ * @param {string} path - The path to the current key.
+ * @param {string} key - The key of the current object being iterated over.
+ * @param {string} dots - If true, the key will be rendered with dots instead of brackets.
+ *
+ * @returns {string} The path to the current key.
+ */
+function renderKey(path, key, dots) {
+ if (!path) return key;
+ return path.concat(key).map(function each(token, i) {
+ // eslint-disable-next-line no-param-reassign
+ token = removeBrackets(token);
+ return !dots && i ? '[' + token + ']' : token;
+ }).join(dots ? '.' : '');
+}
+
+/**
+ * If the array is an array and none of its elements are visitable, then it's a flat array.
+ *
+ * @param {Array} arr - The array to check
+ *
+ * @returns {boolean}
+ */
+function isFlatArray(arr) {
+ return utils$1.isArray(arr) && !arr.some(isVisitable);
+}
+
+const predicates = utils$1.toFlatObject(utils$1, {}, null, function filter(prop) {
+ return /^is[A-Z]/.test(prop);
+});
+
+/**
+ * Convert a data object to FormData
+ *
+ * @param {Object} obj
+ * @param {?Object} [formData]
+ * @param {?Object} [options]
+ * @param {Function} [options.visitor]
+ * @param {Boolean} [options.metaTokens = true]
+ * @param {Boolean} [options.dots = false]
+ * @param {?Boolean} [options.indexes = false]
+ *
+ * @returns {Object}
+ **/
+
+/**
+ * It converts an object into a FormData object
+ *
+ * @param {Object} obj - The object to convert to form data.
+ * @param {string} formData - The FormData object to append to.
+ * @param {Object} options
+ *
+ * @returns
+ */
+function toFormData(obj, formData, options) {
+ if (!utils$1.isObject(obj)) {
+ throw new TypeError('target must be an object');
+ }
+
+ // eslint-disable-next-line no-param-reassign
+ formData = formData || new (FormData)();
+
+ // eslint-disable-next-line no-param-reassign
+ options = utils$1.toFlatObject(options, {
+ metaTokens: true,
+ dots: false,
+ indexes: false
+ }, false, function defined(option, source) {
+ // eslint-disable-next-line no-eq-null,eqeqeq
+ return !utils$1.isUndefined(source[option]);
+ });
+
+ const metaTokens = options.metaTokens;
+ // eslint-disable-next-line no-use-before-define
+ const visitor = options.visitor || defaultVisitor;
+ const dots = options.dots;
+ const indexes = options.indexes;
+ const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;
+ const useBlob = _Blob && utils$1.isSpecCompliantForm(formData);
+
+ if (!utils$1.isFunction(visitor)) {
+ throw new TypeError('visitor must be a function');
+ }
+
+ function convertValue(value) {
+ if (value === null) return '';
+
+ if (utils$1.isDate(value)) {
+ return value.toISOString();
+ }
+
+ if (!useBlob && utils$1.isBlob(value)) {
+ throw new AxiosError('Blob is not supported. Use a Buffer instead.');
+ }
+
+ if (utils$1.isArrayBuffer(value) || utils$1.isTypedArray(value)) {
+ return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);
+ }
+
+ return value;
+ }
+
+ /**
+ * Default visitor.
+ *
+ * @param {*} value
+ * @param {String|Number} key
+ * @param {Array} path
+ * @this {FormData}
+ *
+ * @returns {boolean} return true to visit the each prop of the value recursively
+ */
+ function defaultVisitor(value, key, path) {
+ let arr = value;
+
+ if (value && !path && typeof value === 'object') {
+ if (utils$1.endsWith(key, '{}')) {
+ // eslint-disable-next-line no-param-reassign
+ key = metaTokens ? key : key.slice(0, -2);
+ // eslint-disable-next-line no-param-reassign
+ value = JSON.stringify(value);
+ } else if (
+ (utils$1.isArray(value) && isFlatArray(value)) ||
+ ((utils$1.isFileList(value) || utils$1.endsWith(key, '[]')) && (arr = utils$1.toArray(value))
+ )) {
+ // eslint-disable-next-line no-param-reassign
+ key = removeBrackets(key);
+
+ arr.forEach(function each(el, index) {
+ !(utils$1.isUndefined(el) || el === null) && formData.append(
+ // eslint-disable-next-line no-nested-ternary
+ indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),
+ convertValue(el)
+ );
+ });
+ return false;
+ }
+ }
+
+ if (isVisitable(value)) {
+ return true;
+ }
+
+ formData.append(renderKey(path, key, dots), convertValue(value));
+
+ return false;
+ }
+
+ const stack = [];
+
+ const exposedHelpers = Object.assign(predicates, {
+ defaultVisitor,
+ convertValue,
+ isVisitable
+ });
+
+ function build(value, path) {
+ if (utils$1.isUndefined(value)) return;
+
+ if (stack.indexOf(value) !== -1) {
+ throw Error('Circular reference detected in ' + path.join('.'));
+ }
+
+ stack.push(value);
+
+ utils$1.forEach(value, function each(el, key) {
+ const result = !(utils$1.isUndefined(el) || el === null) && visitor.call(
+ formData, el, utils$1.isString(key) ? key.trim() : key, path, exposedHelpers
+ );
+
+ if (result === true) {
+ build(el, path ? path.concat(key) : [key]);
+ }
+ });
+
+ stack.pop();
+ }
+
+ if (!utils$1.isObject(obj)) {
+ throw new TypeError('data must be an object');
+ }
+
+ build(obj);
+
+ return formData;
+}
+
+/**
+ * It encodes a string by replacing all characters that are not in the unreserved set with
+ * their percent-encoded equivalents
+ *
+ * @param {string} str - The string to encode.
+ *
+ * @returns {string} The encoded string.
+ */
+function encode$1(str) {
+ const charMap = {
+ '!': '%21',
+ "'": '%27',
+ '(': '%28',
+ ')': '%29',
+ '~': '%7E',
+ '%20': '+',
+ '%00': '\x00'
+ };
+ return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {
+ return charMap[match];
+ });
+}
+
+/**
+ * It takes a params object and converts it to a FormData object
+ *
+ * @param {Object} params - The parameters to be converted to a FormData object.
+ * @param {Object} options - The options object passed to the Axios constructor.
+ *
+ * @returns {void}
+ */
+function AxiosURLSearchParams(params, options) {
+ this._pairs = [];
+
+ params && toFormData(params, this, options);
+}
+
+const prototype = AxiosURLSearchParams.prototype;
+
+prototype.append = function append(name, value) {
+ this._pairs.push([name, value]);
+};
+
+prototype.toString = function toString(encoder) {
+ const _encode = encoder ? function(value) {
+ return encoder.call(this, value, encode$1);
+ } : encode$1;
+
+ return this._pairs.map(function each(pair) {
+ return _encode(pair[0]) + '=' + _encode(pair[1]);
+ }, '').join('&');
+};
+
+/**
+ * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their
+ * URI encoded counterparts
+ *
+ * @param {string} val The value to be encoded.
+ *
+ * @returns {string} The encoded value.
+ */
+function encode(val) {
+ return encodeURIComponent(val).
+ replace(/%3A/gi, ':').
+ replace(/%24/g, '$').
+ replace(/%2C/gi, ',').
+ replace(/%20/g, '+').
+ replace(/%5B/gi, '[').
+ replace(/%5D/gi, ']');
+}
+
+/**
+ * Build a URL by appending params to the end
+ *
+ * @param {string} url The base of the url (e.g., http://www.google.com)
+ * @param {object} [params] The params to be appended
+ * @param {?object} options
+ *
+ * @returns {string} The formatted url
+ */
+function buildURL(url, params, options) {
+ /*eslint no-param-reassign:0*/
+ if (!params) {
+ return url;
+ }
+
+ const _encode = options && options.encode || encode;
+
+ const serializeFn = options && options.serialize;
+
+ let serializedParams;
+
+ if (serializeFn) {
+ serializedParams = serializeFn(params, options);
+ } else {
+ serializedParams = utils$1.isURLSearchParams(params) ?
+ params.toString() :
+ new AxiosURLSearchParams(params, options).toString(_encode);
+ }
+
+ if (serializedParams) {
+ const hashmarkIndex = url.indexOf("#");
+
+ if (hashmarkIndex !== -1) {
+ url = url.slice(0, hashmarkIndex);
+ }
+ url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;
+ }
+
+ return url;
+}
+
+class InterceptorManager {
+ constructor() {
+ this.handlers = [];
+ }
+
+ /**
+ * Add a new interceptor to the stack
+ *
+ * @param {Function} fulfilled The function to handle `then` for a `Promise`
+ * @param {Function} rejected The function to handle `reject` for a `Promise`
+ *
+ * @return {Number} An ID used to remove interceptor later
+ */
+ use(fulfilled, rejected, options) {
+ this.handlers.push({
+ fulfilled,
+ rejected,
+ synchronous: options ? options.synchronous : false,
+ runWhen: options ? options.runWhen : null
+ });
+ return this.handlers.length - 1;
+ }
+
+ /**
+ * Remove an interceptor from the stack
+ *
+ * @param {Number} id The ID that was returned by `use`
+ *
+ * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise
+ */
+ eject(id) {
+ if (this.handlers[id]) {
+ this.handlers[id] = null;
+ }
+ }
+
+ /**
+ * Clear all interceptors from the stack
+ *
+ * @returns {void}
+ */
+ clear() {
+ if (this.handlers) {
+ this.handlers = [];
+ }
+ }
+
+ /**
+ * Iterate over all the registered interceptors
+ *
+ * This method is particularly useful for skipping over any
+ * interceptors that may have become `null` calling `eject`.
+ *
+ * @param {Function} fn The function to call for each interceptor
+ *
+ * @returns {void}
+ */
+ forEach(fn) {
+ utils$1.forEach(this.handlers, function forEachHandler(h) {
+ if (h !== null) {
+ fn(h);
+ }
+ });
+ }
+}
+
+var InterceptorManager$1 = InterceptorManager;
+
+var transitionalDefaults = {
+ silentJSONParsing: true,
+ forcedJSONParsing: true,
+ clarifyTimeoutError: false
+};
+
+var URLSearchParams$1 = typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;
+
+var FormData$1 = typeof FormData !== 'undefined' ? FormData : null;
+
+var Blob$1 = typeof Blob !== 'undefined' ? Blob : null;
+
+var platform$1 = {
+ isBrowser: true,
+ classes: {
+ URLSearchParams: URLSearchParams$1,
+ FormData: FormData$1,
+ Blob: Blob$1
+ },
+ protocols: ['http', 'https', 'file', 'blob', 'url', 'data']
+};
+
+const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';
+
+/**
+ * Determine if we're running in a standard browser environment
+ *
+ * This allows axios to run in a web worker, and react-native.
+ * Both environments support XMLHttpRequest, but not fully standard globals.
+ *
+ * web workers:
+ * typeof window -> undefined
+ * typeof document -> undefined
+ *
+ * react-native:
+ * navigator.product -> 'ReactNative'
+ * nativescript
+ * navigator.product -> 'NativeScript' or 'NS'
+ *
+ * @returns {boolean}
+ */
+const hasStandardBrowserEnv = (
+ (product) => {
+ return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0
+ })(typeof navigator !== 'undefined' && navigator.product);
+
+/**
+ * Determine if we're running in a standard browser webWorker environment
+ *
+ * Although the `isStandardBrowserEnv` method indicates that
+ * `allows axios to run in a web worker`, the WebWorker will still be
+ * filtered out due to its judgment standard
+ * `typeof window !== 'undefined' && typeof document !== 'undefined'`.
+ * This leads to a problem when axios post `FormData` in webWorker
+ */
+const hasStandardBrowserWebWorkerEnv = (() => {
+ return (
+ typeof WorkerGlobalScope !== 'undefined' &&
+ // eslint-disable-next-line no-undef
+ self instanceof WorkerGlobalScope &&
+ typeof self.importScripts === 'function'
+ );
+})();
+
+const origin = hasBrowserEnv && window.location.href || 'http://localhost';
+
+var utils = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ hasBrowserEnv: hasBrowserEnv,
+ hasStandardBrowserWebWorkerEnv: hasStandardBrowserWebWorkerEnv,
+ hasStandardBrowserEnv: hasStandardBrowserEnv,
+ origin: origin
+});
+
+var platform = {
+ ...utils,
+ ...platform$1
+};
+
+function toURLEncodedForm(data, options) {
+ return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({
+ visitor: function(value, key, path, helpers) {
+ if (platform.isNode && utils$1.isBuffer(value)) {
+ this.append(key, value.toString('base64'));
+ return false;
+ }
+
+ return helpers.defaultVisitor.apply(this, arguments);
+ }
+ }, options));
+}
+
+/**
+ * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']
+ *
+ * @param {string} name - The name of the property to get.
+ *
+ * @returns An array of strings.
+ */
+function parsePropPath(name) {
+ // foo[x][y][z]
+ // foo.x.y.z
+ // foo-x-y-z
+ // foo x y z
+ return utils$1.matchAll(/\w+|\[(\w*)]/g, name).map(match => {
+ return match[0] === '[]' ? '' : match[1] || match[0];
+ });
+}
+
+/**
+ * Convert an array to an object.
+ *
+ * @param {Array} arr - The array to convert to an object.
+ *
+ * @returns An object with the same keys and values as the array.
+ */
+function arrayToObject(arr) {
+ const obj = {};
+ const keys = Object.keys(arr);
+ let i;
+ const len = keys.length;
+ let key;
+ for (i = 0; i < len; i++) {
+ key = keys[i];
+ obj[key] = arr[key];
+ }
+ return obj;
+}
+
+/**
+ * It takes a FormData object and returns a JavaScript object
+ *
+ * @param {string} formData The FormData object to convert to JSON.
+ *
+ * @returns {Object | null} The converted object.
+ */
+function formDataToJSON(formData) {
+ function buildPath(path, value, target, index) {
+ let name = path[index++];
+
+ if (name === '__proto__') return true;
+
+ const isNumericKey = Number.isFinite(+name);
+ const isLast = index >= path.length;
+ name = !name && utils$1.isArray(target) ? target.length : name;
+
+ if (isLast) {
+ if (utils$1.hasOwnProp(target, name)) {
+ target[name] = [target[name], value];
+ } else {
+ target[name] = value;
+ }
+
+ return !isNumericKey;
+ }
+
+ if (!target[name] || !utils$1.isObject(target[name])) {
+ target[name] = [];
+ }
+
+ const result = buildPath(path, value, target[name], index);
+
+ if (result && utils$1.isArray(target[name])) {
+ target[name] = arrayToObject(target[name]);
+ }
+
+ return !isNumericKey;
+ }
+
+ if (utils$1.isFormData(formData) && utils$1.isFunction(formData.entries)) {
+ const obj = {};
+
+ utils$1.forEachEntry(formData, (name, value) => {
+ buildPath(parsePropPath(name), value, obj, 0);
+ });
+
+ return obj;
+ }
+
+ return null;
+}
+
+/**
+ * It takes a string, tries to parse it, and if it fails, it returns the stringified version
+ * of the input
+ *
+ * @param {any} rawValue - The value to be stringified.
+ * @param {Function} parser - A function that parses a string into a JavaScript object.
+ * @param {Function} encoder - A function that takes a value and returns a string.
+ *
+ * @returns {string} A stringified version of the rawValue.
+ */
+function stringifySafely(rawValue, parser, encoder) {
+ if (utils$1.isString(rawValue)) {
+ try {
+ (parser || JSON.parse)(rawValue);
+ return utils$1.trim(rawValue);
+ } catch (e) {
+ if (e.name !== 'SyntaxError') {
+ throw e;
+ }
+ }
+ }
+
+ return (encoder || JSON.stringify)(rawValue);
+}
+
+const defaults = {
+
+ transitional: transitionalDefaults,
+
+ adapter: ['xhr', 'http', 'fetch'],
+
+ transformRequest: [function transformRequest(data, headers) {
+ const contentType = headers.getContentType() || '';
+ const hasJSONContentType = contentType.indexOf('application/json') > -1;
+ const isObjectPayload = utils$1.isObject(data);
+
+ if (isObjectPayload && utils$1.isHTMLForm(data)) {
+ data = new FormData(data);
+ }
+
+ const isFormData = utils$1.isFormData(data);
+
+ if (isFormData) {
+ return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;
+ }
+
+ if (utils$1.isArrayBuffer(data) ||
+ utils$1.isBuffer(data) ||
+ utils$1.isStream(data) ||
+ utils$1.isFile(data) ||
+ utils$1.isBlob(data) ||
+ utils$1.isReadableStream(data)
+ ) {
+ return data;
+ }
+ if (utils$1.isArrayBufferView(data)) {
+ return data.buffer;
+ }
+ if (utils$1.isURLSearchParams(data)) {
+ headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);
+ return data.toString();
+ }
+
+ let isFileList;
+
+ if (isObjectPayload) {
+ if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {
+ return toURLEncodedForm(data, this.formSerializer).toString();
+ }
+
+ if ((isFileList = utils$1.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {
+ const _FormData = this.env && this.env.FormData;
+
+ return toFormData(
+ isFileList ? {'files[]': data} : data,
+ _FormData && new _FormData(),
+ this.formSerializer
+ );
+ }
+ }
+
+ if (isObjectPayload || hasJSONContentType ) {
+ headers.setContentType('application/json', false);
+ return stringifySafely(data);
+ }
+
+ return data;
+ }],
+
+ transformResponse: [function transformResponse(data) {
+ const transitional = this.transitional || defaults.transitional;
+ const forcedJSONParsing = transitional && transitional.forcedJSONParsing;
+ const JSONRequested = this.responseType === 'json';
+
+ if (utils$1.isResponse(data) || utils$1.isReadableStream(data)) {
+ return data;
+ }
+
+ if (data && utils$1.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {
+ const silentJSONParsing = transitional && transitional.silentJSONParsing;
+ const strictJSONParsing = !silentJSONParsing && JSONRequested;
+
+ try {
+ return JSON.parse(data);
+ } catch (e) {
+ if (strictJSONParsing) {
+ if (e.name === 'SyntaxError') {
+ throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);
+ }
+ throw e;
+ }
+ }
+ }
+
+ return data;
+ }],
+
+ /**
+ * A timeout in milliseconds to abort a request. If set to 0 (default) a
+ * timeout is not created.
+ */
+ timeout: 0,
+
+ xsrfCookieName: 'XSRF-TOKEN',
+ xsrfHeaderName: 'X-XSRF-TOKEN',
+
+ maxContentLength: -1,
+ maxBodyLength: -1,
+
+ env: {
+ FormData: platform.classes.FormData,
+ Blob: platform.classes.Blob
+ },
+
+ validateStatus: function validateStatus(status) {
+ return status >= 200 && status < 300;
+ },
+
+ headers: {
+ common: {
+ 'Accept': 'application/json, text/plain, */*',
+ 'Content-Type': undefined
+ }
+ }
+};
+
+utils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {
+ defaults.headers[method] = {};
+});
+
+var defaults$1 = defaults;
+
+// RawAxiosHeaders whose duplicates are ignored by node
+// c.f. https://nodejs.org/api/http.html#http_message_headers
+const ignoreDuplicateOf = utils$1.toObjectSet([
+ 'age', 'authorization', 'content-length', 'content-type', 'etag',
+ 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',
+ 'last-modified', 'location', 'max-forwards', 'proxy-authorization',
+ 'referer', 'retry-after', 'user-agent'
+]);
+
+/**
+ * Parse headers into an object
+ *
+ * ```
+ * Date: Wed, 27 Aug 2014 08:58:49 GMT
+ * Content-Type: application/json
+ * Connection: keep-alive
+ * Transfer-Encoding: chunked
+ * ```
+ *
+ * @param {String} rawHeaders Headers needing to be parsed
+ *
+ * @returns {Object} Headers parsed into an object
+ */
+var parseHeaders = rawHeaders => {
+ const parsed = {};
+ let key;
+ let val;
+ let i;
+
+ rawHeaders && rawHeaders.split('\n').forEach(function parser(line) {
+ i = line.indexOf(':');
+ key = line.substring(0, i).trim().toLowerCase();
+ val = line.substring(i + 1).trim();
+
+ if (!key || (parsed[key] && ignoreDuplicateOf[key])) {
+ return;
+ }
+
+ if (key === 'set-cookie') {
+ if (parsed[key]) {
+ parsed[key].push(val);
+ } else {
+ parsed[key] = [val];
+ }
+ } else {
+ parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;
+ }
+ });
+
+ return parsed;
+};
+
+const $internals = Symbol('internals');
+
+function normalizeHeader(header) {
+ return header && String(header).trim().toLowerCase();
+}
+
+function normalizeValue(value) {
+ if (value === false || value == null) {
+ return value;
+ }
+
+ return utils$1.isArray(value) ? value.map(normalizeValue) : String(value);
+}
+
+function parseTokens(str) {
+ const tokens = Object.create(null);
+ const tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;
+ let match;
+
+ while ((match = tokensRE.exec(str))) {
+ tokens[match[1]] = match[2];
+ }
+
+ return tokens;
+}
+
+const isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());
+
+function matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {
+ if (utils$1.isFunction(filter)) {
+ return filter.call(this, value, header);
+ }
+
+ if (isHeaderNameFilter) {
+ value = header;
+ }
+
+ if (!utils$1.isString(value)) return;
+
+ if (utils$1.isString(filter)) {
+ return value.indexOf(filter) !== -1;
+ }
+
+ if (utils$1.isRegExp(filter)) {
+ return filter.test(value);
+ }
+}
+
+function formatHeader(header) {
+ return header.trim()
+ .toLowerCase().replace(/([a-z\d])(\w*)/g, (w, char, str) => {
+ return char.toUpperCase() + str;
+ });
+}
+
+function buildAccessors(obj, header) {
+ const accessorName = utils$1.toCamelCase(' ' + header);
+
+ ['get', 'set', 'has'].forEach(methodName => {
+ Object.defineProperty(obj, methodName + accessorName, {
+ value: function(arg1, arg2, arg3) {
+ return this[methodName].call(this, header, arg1, arg2, arg3);
+ },
+ configurable: true
+ });
+ });
+}
+
+class AxiosHeaders {
+ constructor(headers) {
+ headers && this.set(headers);
+ }
+
+ set(header, valueOrRewrite, rewrite) {
+ const self = this;
+
+ function setHeader(_value, _header, _rewrite) {
+ const lHeader = normalizeHeader(_header);
+
+ if (!lHeader) {
+ throw new Error('header name must be a non-empty string');
+ }
+
+ const key = utils$1.findKey(self, lHeader);
+
+ if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {
+ self[key || _header] = normalizeValue(_value);
+ }
+ }
+
+ const setHeaders = (headers, _rewrite) =>
+ utils$1.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));
+
+ if (utils$1.isPlainObject(header) || header instanceof this.constructor) {
+ setHeaders(header, valueOrRewrite);
+ } else if(utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {
+ setHeaders(parseHeaders(header), valueOrRewrite);
+ } else if (utils$1.isHeaders(header)) {
+ for (const [key, value] of header.entries()) {
+ setHeader(value, key, rewrite);
+ }
+ } else {
+ header != null && setHeader(valueOrRewrite, header, rewrite);
+ }
+
+ return this;
+ }
+
+ get(header, parser) {
+ header = normalizeHeader(header);
+
+ if (header) {
+ const key = utils$1.findKey(this, header);
+
+ if (key) {
+ const value = this[key];
+
+ if (!parser) {
+ return value;
+ }
+
+ if (parser === true) {
+ return parseTokens(value);
+ }
+
+ if (utils$1.isFunction(parser)) {
+ return parser.call(this, value, key);
+ }
+
+ if (utils$1.isRegExp(parser)) {
+ return parser.exec(value);
+ }
+
+ throw new TypeError('parser must be boolean|regexp|function');
+ }
+ }
+ }
+
+ has(header, matcher) {
+ header = normalizeHeader(header);
+
+ if (header) {
+ const key = utils$1.findKey(this, header);
+
+ return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));
+ }
+
+ return false;
+ }
+
+ delete(header, matcher) {
+ const self = this;
+ let deleted = false;
+
+ function deleteHeader(_header) {
+ _header = normalizeHeader(_header);
+
+ if (_header) {
+ const key = utils$1.findKey(self, _header);
+
+ if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {
+ delete self[key];
+
+ deleted = true;
+ }
+ }
+ }
+
+ if (utils$1.isArray(header)) {
+ header.forEach(deleteHeader);
+ } else {
+ deleteHeader(header);
+ }
+
+ return deleted;
+ }
+
+ clear(matcher) {
+ const keys = Object.keys(this);
+ let i = keys.length;
+ let deleted = false;
+
+ while (i--) {
+ const key = keys[i];
+ if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {
+ delete this[key];
+ deleted = true;
+ }
+ }
+
+ return deleted;
+ }
+
+ normalize(format) {
+ const self = this;
+ const headers = {};
+
+ utils$1.forEach(this, (value, header) => {
+ const key = utils$1.findKey(headers, header);
+
+ if (key) {
+ self[key] = normalizeValue(value);
+ delete self[header];
+ return;
+ }
+
+ const normalized = format ? formatHeader(header) : String(header).trim();
+
+ if (normalized !== header) {
+ delete self[header];
+ }
+
+ self[normalized] = normalizeValue(value);
+
+ headers[normalized] = true;
+ });
+
+ return this;
+ }
+
+ concat(...targets) {
+ return this.constructor.concat(this, ...targets);
+ }
+
+ toJSON(asStrings) {
+ const obj = Object.create(null);
+
+ utils$1.forEach(this, (value, header) => {
+ value != null && value !== false && (obj[header] = asStrings && utils$1.isArray(value) ? value.join(', ') : value);
+ });
+
+ return obj;
+ }
+
+ [Symbol.iterator]() {
+ return Object.entries(this.toJSON())[Symbol.iterator]();
+ }
+
+ toString() {
+ return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\n');
+ }
+
+ get [Symbol.toStringTag]() {
+ return 'AxiosHeaders';
+ }
+
+ static from(thing) {
+ return thing instanceof this ? thing : new this(thing);
+ }
+
+ static concat(first, ...targets) {
+ const computed = new this(first);
+
+ targets.forEach((target) => computed.set(target));
+
+ return computed;
+ }
+
+ static accessor(header) {
+ const internals = this[$internals] = (this[$internals] = {
+ accessors: {}
+ });
+
+ const accessors = internals.accessors;
+ const prototype = this.prototype;
+
+ function defineAccessor(_header) {
+ const lHeader = normalizeHeader(_header);
+
+ if (!accessors[lHeader]) {
+ buildAccessors(prototype, _header);
+ accessors[lHeader] = true;
+ }
+ }
+
+ utils$1.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);
+
+ return this;
+ }
+}
+
+AxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);
+
+// reserved names hotfix
+utils$1.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {
+ let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`
+ return {
+ get: () => value,
+ set(headerValue) {
+ this[mapped] = headerValue;
+ }
+ }
+});
+
+utils$1.freezeMethods(AxiosHeaders);
+
+var AxiosHeaders$1 = AxiosHeaders;
+
+/**
+ * Transform the data for a request or a response
+ *
+ * @param {Array|Function} fns A single function or Array of functions
+ * @param {?Object} response The response object
+ *
+ * @returns {*} The resulting transformed data
+ */
+function transformData(fns, response) {
+ const config = this || defaults$1;
+ const context = response || config;
+ const headers = AxiosHeaders$1.from(context.headers);
+ let data = context.data;
+
+ utils$1.forEach(fns, function transform(fn) {
+ data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);
+ });
+
+ headers.normalize();
+
+ return data;
+}
+
+function isCancel(value) {
+ return !!(value && value.__CANCEL__);
+}
+
+/**
+ * A `CanceledError` is an object that is thrown when an operation is canceled.
+ *
+ * @param {string=} message The message.
+ * @param {Object=} config The config.
+ * @param {Object=} request The request.
+ *
+ * @returns {CanceledError} The created error.
+ */
+function CanceledError(message, config, request) {
+ // eslint-disable-next-line no-eq-null,eqeqeq
+ AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);
+ this.name = 'CanceledError';
+}
+
+utils$1.inherits(CanceledError, AxiosError, {
+ __CANCEL__: true
+});
+
+/**
+ * Resolve or reject a Promise based on response status.
+ *
+ * @param {Function} resolve A function that resolves the promise.
+ * @param {Function} reject A function that rejects the promise.
+ * @param {object} response The response.
+ *
+ * @returns {object} The response.
+ */
+function settle(resolve, reject, response) {
+ const validateStatus = response.config.validateStatus;
+ if (!response.status || !validateStatus || validateStatus(response.status)) {
+ resolve(response);
+ } else {
+ reject(new AxiosError(
+ 'Request failed with status code ' + response.status,
+ [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],
+ response.config,
+ response.request,
+ response
+ ));
+ }
+}
+
+function parseProtocol(url) {
+ const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url);
+ return match && match[1] || '';
+}
+
+/**
+ * Calculate data maxRate
+ * @param {Number} [samplesCount= 10]
+ * @param {Number} [min= 1000]
+ * @returns {Function}
+ */
+function speedometer(samplesCount, min) {
+ samplesCount = samplesCount || 10;
+ const bytes = new Array(samplesCount);
+ const timestamps = new Array(samplesCount);
+ let head = 0;
+ let tail = 0;
+ let firstSampleTS;
+
+ min = min !== undefined ? min : 1000;
+
+ return function push(chunkLength) {
+ const now = Date.now();
+
+ const startedAt = timestamps[tail];
+
+ if (!firstSampleTS) {
+ firstSampleTS = now;
+ }
+
+ bytes[head] = chunkLength;
+ timestamps[head] = now;
+
+ let i = tail;
+ let bytesCount = 0;
+
+ while (i !== head) {
+ bytesCount += bytes[i++];
+ i = i % samplesCount;
+ }
+
+ head = (head + 1) % samplesCount;
+
+ if (head === tail) {
+ tail = (tail + 1) % samplesCount;
+ }
+
+ if (now - firstSampleTS < min) {
+ return;
+ }
+
+ const passed = startedAt && now - startedAt;
+
+ return passed ? Math.round(bytesCount * 1000 / passed) : undefined;
+ };
+}
+
+/**
+ * Throttle decorator
+ * @param {Function} fn
+ * @param {Number} freq
+ * @return {Function}
+ */
+function throttle(fn, freq) {
+ let timestamp = 0;
+ const threshold = 1000 / freq;
+ let timer = null;
+ return function throttled() {
+ const force = this === true;
+
+ const now = Date.now();
+ if (force || now - timestamp > threshold) {
+ if (timer) {
+ clearTimeout(timer);
+ timer = null;
+ }
+ timestamp = now;
+ return fn.apply(null, arguments);
+ }
+ if (!timer) {
+ timer = setTimeout(() => {
+ timer = null;
+ timestamp = Date.now();
+ return fn.apply(null, arguments);
+ }, threshold - (now - timestamp));
+ }
+ };
+}
+
+var progressEventReducer = (listener, isDownloadStream, freq = 3) => {
+ let bytesNotified = 0;
+ const _speedometer = speedometer(50, 250);
+
+ return throttle(e => {
+ const loaded = e.loaded;
+ const total = e.lengthComputable ? e.total : undefined;
+ const progressBytes = loaded - bytesNotified;
+ const rate = _speedometer(progressBytes);
+ const inRange = loaded <= total;
+
+ bytesNotified = loaded;
+
+ const data = {
+ loaded,
+ total,
+ progress: total ? (loaded / total) : undefined,
+ bytes: progressBytes,
+ rate: rate ? rate : undefined,
+ estimated: rate && total && inRange ? (total - loaded) / rate : undefined,
+ event: e,
+ lengthComputable: total != null
+ };
+
+ data[isDownloadStream ? 'download' : 'upload'] = true;
+
+ listener(data);
+ }, freq);
+};
+
+var isURLSameOrigin = platform.hasStandardBrowserEnv ?
+
+// Standard browser envs have full support of the APIs needed to test
+// whether the request URL is of the same origin as current location.
+ (function standardBrowserEnv() {
+ const msie = /(msie|trident)/i.test(navigator.userAgent);
+ const urlParsingNode = document.createElement('a');
+ let originURL;
+
+ /**
+ * Parse a URL to discover its components
+ *
+ * @param {String} url The URL to be parsed
+ * @returns {Object}
+ */
+ function resolveURL(url) {
+ let href = url;
+
+ if (msie) {
+ // IE needs attribute set twice to normalize properties
+ urlParsingNode.setAttribute('href', href);
+ href = urlParsingNode.href;
+ }
+
+ urlParsingNode.setAttribute('href', href);
+
+ // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils
+ return {
+ href: urlParsingNode.href,
+ protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',
+ host: urlParsingNode.host,
+ search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '',
+ hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',
+ hostname: urlParsingNode.hostname,
+ port: urlParsingNode.port,
+ pathname: (urlParsingNode.pathname.charAt(0) === '/') ?
+ urlParsingNode.pathname :
+ '/' + urlParsingNode.pathname
+ };
+ }
+
+ originURL = resolveURL(window.location.href);
+
+ /**
+ * Determine if a URL shares the same origin as the current location
+ *
+ * @param {String} requestURL The URL to test
+ * @returns {boolean} True if URL shares the same origin, otherwise false
+ */
+ return function isURLSameOrigin(requestURL) {
+ const parsed = (utils$1.isString(requestURL)) ? resolveURL(requestURL) : requestURL;
+ return (parsed.protocol === originURL.protocol &&
+ parsed.host === originURL.host);
+ };
+ })() :
+
+ // Non standard browser envs (web workers, react-native) lack needed support.
+ (function nonStandardBrowserEnv() {
+ return function isURLSameOrigin() {
+ return true;
+ };
+ })();
+
+var cookies = platform.hasStandardBrowserEnv ?
+
+ // Standard browser envs support document.cookie
+ {
+ write(name, value, expires, path, domain, secure) {
+ const cookie = [name + '=' + encodeURIComponent(value)];
+
+ utils$1.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());
+
+ utils$1.isString(path) && cookie.push('path=' + path);
+
+ utils$1.isString(domain) && cookie.push('domain=' + domain);
+
+ secure === true && cookie.push('secure');
+
+ document.cookie = cookie.join('; ');
+ },
+
+ read(name) {
+ const match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)'));
+ return (match ? decodeURIComponent(match[3]) : null);
+ },
+
+ remove(name) {
+ this.write(name, '', Date.now() - 86400000);
+ }
+ }
+
+ :
+
+ // Non-standard browser env (web workers, react-native) lack needed support.
+ {
+ write() {},
+ read() {
+ return null;
+ },
+ remove() {}
+ };
+
+/**
+ * Determines whether the specified URL is absolute
+ *
+ * @param {string} url The URL to test
+ *
+ * @returns {boolean} True if the specified URL is absolute, otherwise false
+ */
+function isAbsoluteURL(url) {
+ // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL).
+ // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed
+ // by any combination of letters, digits, plus, period, or hyphen.
+ return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url);
+}
+
+/**
+ * Creates a new URL by combining the specified URLs
+ *
+ * @param {string} baseURL The base URL
+ * @param {string} relativeURL The relative URL
+ *
+ * @returns {string} The combined URL
+ */
+function combineURLs(baseURL, relativeURL) {
+ return relativeURL
+ ? baseURL.replace(/\/?\/$/, '') + '/' + relativeURL.replace(/^\/+/, '')
+ : baseURL;
+}
+
+/**
+ * Creates a new URL by combining the baseURL with the requestedURL,
+ * only when the requestedURL is not already an absolute URL.
+ * If the requestURL is absolute, this function returns the requestedURL untouched.
+ *
+ * @param {string} baseURL The base URL
+ * @param {string} requestedURL Absolute or relative URL to combine
+ *
+ * @returns {string} The combined full path
+ */
+function buildFullPath(baseURL, requestedURL) {
+ if (baseURL && !isAbsoluteURL(requestedURL)) {
+ return combineURLs(baseURL, requestedURL);
+ }
+ return requestedURL;
+}
+
+const headersToObject = (thing) => thing instanceof AxiosHeaders$1 ? { ...thing } : thing;
+
+/**
+ * Config-specific merge-function which creates a new config-object
+ * by merging two configuration objects together.
+ *
+ * @param {Object} config1
+ * @param {Object} config2
+ *
+ * @returns {Object} New object resulting from merging config2 to config1
+ */
+function mergeConfig(config1, config2) {
+ // eslint-disable-next-line no-param-reassign
+ config2 = config2 || {};
+ const config = {};
+
+ function getMergedValue(target, source, caseless) {
+ if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) {
+ return utils$1.merge.call({caseless}, target, source);
+ } else if (utils$1.isPlainObject(source)) {
+ return utils$1.merge({}, source);
+ } else if (utils$1.isArray(source)) {
+ return source.slice();
+ }
+ return source;
+ }
+
+ // eslint-disable-next-line consistent-return
+ function mergeDeepProperties(a, b, caseless) {
+ if (!utils$1.isUndefined(b)) {
+ return getMergedValue(a, b, caseless);
+ } else if (!utils$1.isUndefined(a)) {
+ return getMergedValue(undefined, a, caseless);
+ }
+ }
+
+ // eslint-disable-next-line consistent-return
+ function valueFromConfig2(a, b) {
+ if (!utils$1.isUndefined(b)) {
+ return getMergedValue(undefined, b);
+ }
+ }
+
+ // eslint-disable-next-line consistent-return
+ function defaultToConfig2(a, b) {
+ if (!utils$1.isUndefined(b)) {
+ return getMergedValue(undefined, b);
+ } else if (!utils$1.isUndefined(a)) {
+ return getMergedValue(undefined, a);
+ }
+ }
+
+ // eslint-disable-next-line consistent-return
+ function mergeDirectKeys(a, b, prop) {
+ if (prop in config2) {
+ return getMergedValue(a, b);
+ } else if (prop in config1) {
+ return getMergedValue(undefined, a);
+ }
+ }
+
+ const mergeMap = {
+ url: valueFromConfig2,
+ method: valueFromConfig2,
+ data: valueFromConfig2,
+ baseURL: defaultToConfig2,
+ transformRequest: defaultToConfig2,
+ transformResponse: defaultToConfig2,
+ paramsSerializer: defaultToConfig2,
+ timeout: defaultToConfig2,
+ timeoutMessage: defaultToConfig2,
+ withCredentials: defaultToConfig2,
+ withXSRFToken: defaultToConfig2,
+ adapter: defaultToConfig2,
+ responseType: defaultToConfig2,
+ xsrfCookieName: defaultToConfig2,
+ xsrfHeaderName: defaultToConfig2,
+ onUploadProgress: defaultToConfig2,
+ onDownloadProgress: defaultToConfig2,
+ decompress: defaultToConfig2,
+ maxContentLength: defaultToConfig2,
+ maxBodyLength: defaultToConfig2,
+ beforeRedirect: defaultToConfig2,
+ transport: defaultToConfig2,
+ httpAgent: defaultToConfig2,
+ httpsAgent: defaultToConfig2,
+ cancelToken: defaultToConfig2,
+ socketPath: defaultToConfig2,
+ responseEncoding: defaultToConfig2,
+ validateStatus: mergeDirectKeys,
+ headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)
+ };
+
+ utils$1.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {
+ const merge = mergeMap[prop] || mergeDeepProperties;
+ const configValue = merge(config1[prop], config2[prop], prop);
+ (utils$1.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);
+ });
+
+ return config;
+}
+
+var resolveConfig = (config) => {
+ const newConfig = mergeConfig({}, config);
+
+ let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;
+
+ newConfig.headers = headers = AxiosHeaders$1.from(headers);
+
+ newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url), config.params, config.paramsSerializer);
+
+ // HTTP basic authentication
+ if (auth) {
+ headers.set('Authorization', 'Basic ' +
+ btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))
+ );
+ }
+
+ let contentType;
+
+ if (utils$1.isFormData(data)) {
+ if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {
+ headers.setContentType(undefined); // Let the browser set it
+ } else if ((contentType = headers.getContentType()) !== false) {
+ // fix semicolon duplication issue for ReactNative FormData implementation
+ const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];
+ headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));
+ }
+ }
+
+ // Add xsrf header
+ // This is only done if running in a standard browser environment.
+ // Specifically not if we're in a web worker, or react-native.
+
+ if (platform.hasStandardBrowserEnv) {
+ withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));
+
+ if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {
+ // Add xsrf header
+ const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);
+
+ if (xsrfValue) {
+ headers.set(xsrfHeaderName, xsrfValue);
+ }
+ }
+ }
+
+ return newConfig;
+};
+
+const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';
+
+var xhrAdapter = isXHRAdapterSupported && function (config) {
+ return new Promise(function dispatchXhrRequest(resolve, reject) {
+ const _config = resolveConfig(config);
+ let requestData = _config.data;
+ const requestHeaders = AxiosHeaders$1.from(_config.headers).normalize();
+ let {responseType} = _config;
+ let onCanceled;
+ function done() {
+ if (_config.cancelToken) {
+ _config.cancelToken.unsubscribe(onCanceled);
+ }
+
+ if (_config.signal) {
+ _config.signal.removeEventListener('abort', onCanceled);
+ }
+ }
+
+ let request = new XMLHttpRequest();
+
+ request.open(_config.method.toUpperCase(), _config.url, true);
+
+ // Set the request timeout in MS
+ request.timeout = _config.timeout;
+
+ function onloadend() {
+ if (!request) {
+ return;
+ }
+ // Prepare the response
+ const responseHeaders = AxiosHeaders$1.from(
+ 'getAllResponseHeaders' in request && request.getAllResponseHeaders()
+ );
+ const responseData = !responseType || responseType === 'text' || responseType === 'json' ?
+ request.responseText : request.response;
+ const response = {
+ data: responseData,
+ status: request.status,
+ statusText: request.statusText,
+ headers: responseHeaders,
+ config,
+ request
+ };
+
+ settle(function _resolve(value) {
+ resolve(value);
+ done();
+ }, function _reject(err) {
+ reject(err);
+ done();
+ }, response);
+
+ // Clean up request
+ request = null;
+ }
+
+ if ('onloadend' in request) {
+ // Use onloadend if available
+ request.onloadend = onloadend;
+ } else {
+ // Listen for ready state to emulate onloadend
+ request.onreadystatechange = function handleLoad() {
+ if (!request || request.readyState !== 4) {
+ return;
+ }
+
+ // The request errored out and we didn't get a response, this will be
+ // handled by onerror instead
+ // With one exception: request that using file: protocol, most browsers
+ // will return status as 0 even though it's a successful request
+ if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {
+ return;
+ }
+ // readystate handler is calling before onerror or ontimeout handlers,
+ // so we should call onloadend on the next 'tick'
+ setTimeout(onloadend);
+ };
+ }
+
+ // Handle browser request cancellation (as opposed to a manual cancellation)
+ request.onabort = function handleAbort() {
+ if (!request) {
+ return;
+ }
+
+ reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, _config, request));
+
+ // Clean up request
+ request = null;
+ };
+
+ // Handle low level network errors
+ request.onerror = function handleError() {
+ // Real errors are hidden from us by the browser
+ // onerror should only fire if it's a network error
+ reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, _config, request));
+
+ // Clean up request
+ request = null;
+ };
+
+ // Handle timeout
+ request.ontimeout = function handleTimeout() {
+ let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';
+ const transitional = _config.transitional || transitionalDefaults;
+ if (_config.timeoutErrorMessage) {
+ timeoutErrorMessage = _config.timeoutErrorMessage;
+ }
+ reject(new AxiosError(
+ timeoutErrorMessage,
+ transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,
+ _config,
+ request));
+
+ // Clean up request
+ request = null;
+ };
+
+ // Remove Content-Type if data is undefined
+ requestData === undefined && requestHeaders.setContentType(null);
+
+ // Add headers to the request
+ if ('setRequestHeader' in request) {
+ utils$1.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {
+ request.setRequestHeader(key, val);
+ });
+ }
+
+ // Add withCredentials to request if needed
+ if (!utils$1.isUndefined(_config.withCredentials)) {
+ request.withCredentials = !!_config.withCredentials;
+ }
+
+ // Add responseType to request if needed
+ if (responseType && responseType !== 'json') {
+ request.responseType = _config.responseType;
+ }
+
+ // Handle progress if needed
+ if (typeof _config.onDownloadProgress === 'function') {
+ request.addEventListener('progress', progressEventReducer(_config.onDownloadProgress, true));
+ }
+
+ // Not all browsers support upload events
+ if (typeof _config.onUploadProgress === 'function' && request.upload) {
+ request.upload.addEventListener('progress', progressEventReducer(_config.onUploadProgress));
+ }
+
+ if (_config.cancelToken || _config.signal) {
+ // Handle cancellation
+ // eslint-disable-next-line func-names
+ onCanceled = cancel => {
+ if (!request) {
+ return;
+ }
+ reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);
+ request.abort();
+ request = null;
+ };
+
+ _config.cancelToken && _config.cancelToken.subscribe(onCanceled);
+ if (_config.signal) {
+ _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);
+ }
+ }
+
+ const protocol = parseProtocol(_config.url);
+
+ if (protocol && platform.protocols.indexOf(protocol) === -1) {
+ reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));
+ return;
+ }
+
+
+ // Send the request
+ request.send(requestData || null);
+ });
+};
+
+const composeSignals = (signals, timeout) => {
+ let controller = new AbortController();
+
+ let aborted;
+
+ const onabort = function (cancel) {
+ if (!aborted) {
+ aborted = true;
+ unsubscribe();
+ const err = cancel instanceof Error ? cancel : this.reason;
+ controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));
+ }
+ };
+
+ let timer = timeout && setTimeout(() => {
+ onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT));
+ }, timeout);
+
+ const unsubscribe = () => {
+ if (signals) {
+ timer && clearTimeout(timer);
+ timer = null;
+ signals.forEach(signal => {
+ signal &&
+ (signal.removeEventListener ? signal.removeEventListener('abort', onabort) : signal.unsubscribe(onabort));
+ });
+ signals = null;
+ }
+ };
+
+ signals.forEach((signal) => signal && signal.addEventListener && signal.addEventListener('abort', onabort));
+
+ const {signal} = controller;
+
+ signal.unsubscribe = unsubscribe;
+
+ return [signal, () => {
+ timer && clearTimeout(timer);
+ timer = null;
+ }];
+};
+
+var composeSignals$1 = composeSignals;
+
+const streamChunk = function* (chunk, chunkSize) {
+ let len = chunk.byteLength;
+
+ if (!chunkSize || len < chunkSize) {
+ yield chunk;
+ return;
+ }
+
+ let pos = 0;
+ let end;
+
+ while (pos < len) {
+ end = pos + chunkSize;
+ yield chunk.slice(pos, end);
+ pos = end;
+ }
+};
+
+const readBytes = async function* (iterable, chunkSize, encode) {
+ for await (const chunk of iterable) {
+ yield* streamChunk(ArrayBuffer.isView(chunk) ? chunk : (await encode(String(chunk))), chunkSize);
+ }
+};
+
+const trackStream = (stream, chunkSize, onProgress, onFinish, encode) => {
+ const iterator = readBytes(stream, chunkSize, encode);
+
+ let bytes = 0;
+
+ return new ReadableStream({
+ type: 'bytes',
+
+ async pull(controller) {
+ const {done, value} = await iterator.next();
+
+ if (done) {
+ controller.close();
+ onFinish();
+ return;
+ }
+
+ let len = value.byteLength;
+ onProgress && onProgress(bytes += len);
+ controller.enqueue(new Uint8Array(value));
+ },
+ cancel(reason) {
+ onFinish(reason);
+ return iterator.return();
+ }
+ }, {
+ highWaterMark: 2
+ })
+};
+
+const fetchProgressDecorator = (total, fn) => {
+ const lengthComputable = total != null;
+ return (loaded) => setTimeout(() => fn({
+ lengthComputable,
+ total,
+ loaded
+ }));
+};
+
+const isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';
+const isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';
+
+// used only inside the fetch adapter
+const encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?
+ ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :
+ async (str) => new Uint8Array(await new Response(str).arrayBuffer())
+);
+
+const supportsRequestStream = isReadableStreamSupported && (() => {
+ let duplexAccessed = false;
+
+ const hasContentType = new Request(platform.origin, {
+ body: new ReadableStream(),
+ method: 'POST',
+ get duplex() {
+ duplexAccessed = true;
+ return 'half';
+ },
+ }).headers.has('Content-Type');
+
+ return duplexAccessed && !hasContentType;
+})();
+
+const DEFAULT_CHUNK_SIZE = 64 * 1024;
+
+const supportsResponseStream = isReadableStreamSupported && !!(()=> {
+ try {
+ return utils$1.isReadableStream(new Response('').body);
+ } catch(err) {
+ // return undefined
+ }
+})();
+
+const resolvers = {
+ stream: supportsResponseStream && ((res) => res.body)
+};
+
+isFetchSupported && (((res) => {
+ ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {
+ !resolvers[type] && (resolvers[type] = utils$1.isFunction(res[type]) ? (res) => res[type]() :
+ (_, config) => {
+ throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);
+ });
+ });
+})(new Response));
+
+const getBodyLength = async (body) => {
+ if (body == null) {
+ return 0;
+ }
+
+ if(utils$1.isBlob(body)) {
+ return body.size;
+ }
+
+ if(utils$1.isSpecCompliantForm(body)) {
+ return (await new Request(body).arrayBuffer()).byteLength;
+ }
+
+ if(utils$1.isArrayBufferView(body)) {
+ return body.byteLength;
+ }
+
+ if(utils$1.isURLSearchParams(body)) {
+ body = body + '';
+ }
+
+ if(utils$1.isString(body)) {
+ return (await encodeText(body)).byteLength;
+ }
+};
+
+const resolveBodyLength = async (headers, body) => {
+ const length = utils$1.toFiniteNumber(headers.getContentLength());
+
+ return length == null ? getBodyLength(body) : length;
+};
+
+var fetchAdapter = isFetchSupported && (async (config) => {
+ let {
+ url,
+ method,
+ data,
+ signal,
+ cancelToken,
+ timeout,
+ onDownloadProgress,
+ onUploadProgress,
+ responseType,
+ headers,
+ withCredentials = 'same-origin',
+ fetchOptions
+ } = resolveConfig(config);
+
+ responseType = responseType ? (responseType + '').toLowerCase() : 'text';
+
+ let [composedSignal, stopTimeout] = (signal || cancelToken || timeout) ?
+ composeSignals$1([signal, cancelToken], timeout) : [];
+
+ let finished, request;
+
+ const onFinish = () => {
+ !finished && setTimeout(() => {
+ composedSignal && composedSignal.unsubscribe();
+ });
+
+ finished = true;
+ };
+
+ let requestContentLength;
+
+ try {
+ if (
+ onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&
+ (requestContentLength = await resolveBodyLength(headers, data)) !== 0
+ ) {
+ let _request = new Request(url, {
+ method: 'POST',
+ body: data,
+ duplex: "half"
+ });
+
+ let contentTypeHeader;
+
+ if (utils$1.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {
+ headers.setContentType(contentTypeHeader);
+ }
+
+ if (_request.body) {
+ data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, fetchProgressDecorator(
+ requestContentLength,
+ progressEventReducer(onUploadProgress)
+ ), null, encodeText);
+ }
+ }
+
+ if (!utils$1.isString(withCredentials)) {
+ withCredentials = withCredentials ? 'cors' : 'omit';
+ }
+
+ request = new Request(url, {
+ ...fetchOptions,
+ signal: composedSignal,
+ method: method.toUpperCase(),
+ headers: headers.normalize().toJSON(),
+ body: data,
+ duplex: "half",
+ withCredentials
+ });
+
+ let response = await fetch(request);
+
+ const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');
+
+ if (supportsResponseStream && (onDownloadProgress || isStreamResponse)) {
+ const options = {};
+
+ ['status', 'statusText', 'headers'].forEach(prop => {
+ options[prop] = response[prop];
+ });
+
+ const responseContentLength = utils$1.toFiniteNumber(response.headers.get('content-length'));
+
+ response = new Response(
+ trackStream(response.body, DEFAULT_CHUNK_SIZE, onDownloadProgress && fetchProgressDecorator(
+ responseContentLength,
+ progressEventReducer(onDownloadProgress, true)
+ ), isStreamResponse && onFinish, encodeText),
+ options
+ );
+ }
+
+ responseType = responseType || 'text';
+
+ let responseData = await resolvers[utils$1.findKey(resolvers, responseType) || 'text'](response, config);
+
+ !isStreamResponse && onFinish();
+
+ stopTimeout && stopTimeout();
+
+ return await new Promise((resolve, reject) => {
+ settle(resolve, reject, {
+ data: responseData,
+ headers: AxiosHeaders$1.from(response.headers),
+ status: response.status,
+ statusText: response.statusText,
+ config,
+ request
+ });
+ })
+ } catch (err) {
+ onFinish();
+
+ if (err && err.name === 'TypeError' && /fetch/i.test(err.message)) {
+ throw Object.assign(
+ new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),
+ {
+ cause: err.cause || err
+ }
+ )
+ }
+
+ throw AxiosError.from(err, err && err.code, config, request);
+ }
+});
+
+const knownAdapters = {
+ http: httpAdapter,
+ xhr: xhrAdapter,
+ fetch: fetchAdapter
+};
+
+utils$1.forEach(knownAdapters, (fn, value) => {
+ if (fn) {
+ try {
+ Object.defineProperty(fn, 'name', {value});
+ } catch (e) {
+ // eslint-disable-next-line no-empty
+ }
+ Object.defineProperty(fn, 'adapterName', {value});
+ }
+});
+
+const renderReason = (reason) => `- ${reason}`;
+
+const isResolvedHandle = (adapter) => utils$1.isFunction(adapter) || adapter === null || adapter === false;
+
+var adapters = {
+ getAdapter: (adapters) => {
+ adapters = utils$1.isArray(adapters) ? adapters : [adapters];
+
+ const {length} = adapters;
+ let nameOrAdapter;
+ let adapter;
+
+ const rejectedReasons = {};
+
+ for (let i = 0; i < length; i++) {
+ nameOrAdapter = adapters[i];
+ let id;
+
+ adapter = nameOrAdapter;
+
+ if (!isResolvedHandle(nameOrAdapter)) {
+ adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];
+
+ if (adapter === undefined) {
+ throw new AxiosError(`Unknown adapter '${id}'`);
+ }
+ }
+
+ if (adapter) {
+ break;
+ }
+
+ rejectedReasons[id || '#' + i] = adapter;
+ }
+
+ if (!adapter) {
+
+ const reasons = Object.entries(rejectedReasons)
+ .map(([id, state]) => `adapter ${id} ` +
+ (state === false ? 'is not supported by the environment' : 'is not available in the build')
+ );
+
+ let s = length ?
+ (reasons.length > 1 ? 'since :\n' + reasons.map(renderReason).join('\n') : ' ' + renderReason(reasons[0])) :
+ 'as no adapter specified';
+
+ throw new AxiosError(
+ `There is no suitable adapter to dispatch the request ` + s,
+ 'ERR_NOT_SUPPORT'
+ );
+ }
+
+ return adapter;
+ },
+ adapters: knownAdapters
+};
+
+/**
+ * Throws a `CanceledError` if cancellation has been requested.
+ *
+ * @param {Object} config The config that is to be used for the request
+ *
+ * @returns {void}
+ */
+function throwIfCancellationRequested(config) {
+ if (config.cancelToken) {
+ config.cancelToken.throwIfRequested();
+ }
+
+ if (config.signal && config.signal.aborted) {
+ throw new CanceledError(null, config);
+ }
+}
+
+/**
+ * Dispatch a request to the server using the configured adapter.
+ *
+ * @param {object} config The config that is to be used for the request
+ *
+ * @returns {Promise} The Promise to be fulfilled
+ */
+function dispatchRequest(config) {
+ throwIfCancellationRequested(config);
+
+ config.headers = AxiosHeaders$1.from(config.headers);
+
+ // Transform request data
+ config.data = transformData.call(
+ config,
+ config.transformRequest
+ );
+
+ if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {
+ config.headers.setContentType('application/x-www-form-urlencoded', false);
+ }
+
+ const adapter = adapters.getAdapter(config.adapter || defaults$1.adapter);
+
+ return adapter(config).then(function onAdapterResolution(response) {
+ throwIfCancellationRequested(config);
+
+ // Transform response data
+ response.data = transformData.call(
+ config,
+ config.transformResponse,
+ response
+ );
+
+ response.headers = AxiosHeaders$1.from(response.headers);
+
+ return response;
+ }, function onAdapterRejection(reason) {
+ if (!isCancel(reason)) {
+ throwIfCancellationRequested(config);
+
+ // Transform response data
+ if (reason && reason.response) {
+ reason.response.data = transformData.call(
+ config,
+ config.transformResponse,
+ reason.response
+ );
+ reason.response.headers = AxiosHeaders$1.from(reason.response.headers);
+ }
+ }
+
+ return Promise.reject(reason);
+ });
+}
+
+const VERSION = "1.7.2";
+
+const validators$1 = {};
+
+// eslint-disable-next-line func-names
+['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {
+ validators$1[type] = function validator(thing) {
+ return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;
+ };
+});
+
+const deprecatedWarnings = {};
+
+/**
+ * Transitional option validator
+ *
+ * @param {function|boolean?} validator - set to false if the transitional option has been removed
+ * @param {string?} version - deprecated version / removed since version
+ * @param {string?} message - some message with additional info
+ *
+ * @returns {function}
+ */
+validators$1.transitional = function transitional(validator, version, message) {
+ function formatMessage(opt, desc) {
+ return '[Axios v' + VERSION + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : '');
+ }
+
+ // eslint-disable-next-line func-names
+ return (value, opt, opts) => {
+ if (validator === false) {
+ throw new AxiosError(
+ formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),
+ AxiosError.ERR_DEPRECATED
+ );
+ }
+
+ if (version && !deprecatedWarnings[opt]) {
+ deprecatedWarnings[opt] = true;
+ // eslint-disable-next-line no-console
+ console.warn(
+ formatMessage(
+ opt,
+ ' has been deprecated since v' + version + ' and will be removed in the near future'
+ )
+ );
+ }
+
+ return validator ? validator(value, opt, opts) : true;
+ };
+};
+
+/**
+ * Assert object's properties type
+ *
+ * @param {object} options
+ * @param {object} schema
+ * @param {boolean?} allowUnknown
+ *
+ * @returns {object}
+ */
+
+function assertOptions(options, schema, allowUnknown) {
+ if (typeof options !== 'object') {
+ throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);
+ }
+ const keys = Object.keys(options);
+ let i = keys.length;
+ while (i-- > 0) {
+ const opt = keys[i];
+ const validator = schema[opt];
+ if (validator) {
+ const value = options[opt];
+ const result = value === undefined || validator(value, opt, options);
+ if (result !== true) {
+ throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);
+ }
+ continue;
+ }
+ if (allowUnknown !== true) {
+ throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);
+ }
+ }
+}
+
+var validator = {
+ assertOptions,
+ validators: validators$1
+};
+
+const validators = validator.validators;
+
+/**
+ * Create a new instance of Axios
+ *
+ * @param {Object} instanceConfig The default config for the instance
+ *
+ * @return {Axios} A new instance of Axios
+ */
+class Axios {
+ constructor(instanceConfig) {
+ this.defaults = instanceConfig;
+ this.interceptors = {
+ request: new InterceptorManager$1(),
+ response: new InterceptorManager$1()
+ };
+ }
+
+ /**
+ * Dispatch a request
+ *
+ * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)
+ * @param {?Object} config
+ *
+ * @returns {Promise} The Promise to be fulfilled
+ */
+ async request(configOrUrl, config) {
+ try {
+ return await this._request(configOrUrl, config);
+ } catch (err) {
+ if (err instanceof Error) {
+ let dummy;
+
+ Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());
+
+ // slice off the Error: ... line
+ const stack = dummy.stack ? dummy.stack.replace(/^.+\n/, '') : '';
+ try {
+ if (!err.stack) {
+ err.stack = stack;
+ // match without the 2 top stack lines
+ } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\n.+\n/, ''))) {
+ err.stack += '\n' + stack;
+ }
+ } catch (e) {
+ // ignore the case where "stack" is an un-writable property
+ }
+ }
+
+ throw err;
+ }
+ }
+
+ _request(configOrUrl, config) {
+ /*eslint no-param-reassign:0*/
+ // Allow for axios('example/url'[, config]) a la fetch API
+ if (typeof configOrUrl === 'string') {
+ config = config || {};
+ config.url = configOrUrl;
+ } else {
+ config = configOrUrl || {};
+ }
+
+ config = mergeConfig(this.defaults, config);
+
+ const {transitional, paramsSerializer, headers} = config;
+
+ if (transitional !== undefined) {
+ validator.assertOptions(transitional, {
+ silentJSONParsing: validators.transitional(validators.boolean),
+ forcedJSONParsing: validators.transitional(validators.boolean),
+ clarifyTimeoutError: validators.transitional(validators.boolean)
+ }, false);
+ }
+
+ if (paramsSerializer != null) {
+ if (utils$1.isFunction(paramsSerializer)) {
+ config.paramsSerializer = {
+ serialize: paramsSerializer
+ };
+ } else {
+ validator.assertOptions(paramsSerializer, {
+ encode: validators.function,
+ serialize: validators.function
+ }, true);
+ }
+ }
+
+ // Set config.method
+ config.method = (config.method || this.defaults.method || 'get').toLowerCase();
+
+ // Flatten headers
+ let contextHeaders = headers && utils$1.merge(
+ headers.common,
+ headers[config.method]
+ );
+
+ headers && utils$1.forEach(
+ ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],
+ (method) => {
+ delete headers[method];
+ }
+ );
+
+ config.headers = AxiosHeaders$1.concat(contextHeaders, headers);
+
+ // filter out skipped interceptors
+ const requestInterceptorChain = [];
+ let synchronousRequestInterceptors = true;
+ this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {
+ if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {
+ return;
+ }
+
+ synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;
+
+ requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);
+ });
+
+ const responseInterceptorChain = [];
+ this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {
+ responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);
+ });
+
+ let promise;
+ let i = 0;
+ let len;
+
+ if (!synchronousRequestInterceptors) {
+ const chain = [dispatchRequest.bind(this), undefined];
+ chain.unshift.apply(chain, requestInterceptorChain);
+ chain.push.apply(chain, responseInterceptorChain);
+ len = chain.length;
+
+ promise = Promise.resolve(config);
+
+ while (i < len) {
+ promise = promise.then(chain[i++], chain[i++]);
+ }
+
+ return promise;
+ }
+
+ len = requestInterceptorChain.length;
+
+ let newConfig = config;
+
+ i = 0;
+
+ while (i < len) {
+ const onFulfilled = requestInterceptorChain[i++];
+ const onRejected = requestInterceptorChain[i++];
+ try {
+ newConfig = onFulfilled(newConfig);
+ } catch (error) {
+ onRejected.call(this, error);
+ break;
+ }
+ }
+
+ try {
+ promise = dispatchRequest.call(this, newConfig);
+ } catch (error) {
+ return Promise.reject(error);
+ }
+
+ i = 0;
+ len = responseInterceptorChain.length;
+
+ while (i < len) {
+ promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);
+ }
+
+ return promise;
+ }
+
+ getUri(config) {
+ config = mergeConfig(this.defaults, config);
+ const fullPath = buildFullPath(config.baseURL, config.url);
+ return buildURL(fullPath, config.params, config.paramsSerializer);
+ }
+}
+
+// Provide aliases for supported request methods
+utils$1.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {
+ /*eslint func-names:0*/
+ Axios.prototype[method] = function(url, config) {
+ return this.request(mergeConfig(config || {}, {
+ method,
+ url,
+ data: (config || {}).data
+ }));
+ };
+});
+
+utils$1.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {
+ /*eslint func-names:0*/
+
+ function generateHTTPMethod(isForm) {
+ return function httpMethod(url, data, config) {
+ return this.request(mergeConfig(config || {}, {
+ method,
+ headers: isForm ? {
+ 'Content-Type': 'multipart/form-data'
+ } : {},
+ url,
+ data
+ }));
+ };
+ }
+
+ Axios.prototype[method] = generateHTTPMethod();
+
+ Axios.prototype[method + 'Form'] = generateHTTPMethod(true);
+});
+
+var Axios$1 = Axios;
+
+/**
+ * A `CancelToken` is an object that can be used to request cancellation of an operation.
+ *
+ * @param {Function} executor The executor function.
+ *
+ * @returns {CancelToken}
+ */
+class CancelToken {
+ constructor(executor) {
+ if (typeof executor !== 'function') {
+ throw new TypeError('executor must be a function.');
+ }
+
+ let resolvePromise;
+
+ this.promise = new Promise(function promiseExecutor(resolve) {
+ resolvePromise = resolve;
+ });
+
+ const token = this;
+
+ // eslint-disable-next-line func-names
+ this.promise.then(cancel => {
+ if (!token._listeners) return;
+
+ let i = token._listeners.length;
+
+ while (i-- > 0) {
+ token._listeners[i](cancel);
+ }
+ token._listeners = null;
+ });
+
+ // eslint-disable-next-line func-names
+ this.promise.then = onfulfilled => {
+ let _resolve;
+ // eslint-disable-next-line func-names
+ const promise = new Promise(resolve => {
+ token.subscribe(resolve);
+ _resolve = resolve;
+ }).then(onfulfilled);
+
+ promise.cancel = function reject() {
+ token.unsubscribe(_resolve);
+ };
+
+ return promise;
+ };
+
+ executor(function cancel(message, config, request) {
+ if (token.reason) {
+ // Cancellation has already been requested
+ return;
+ }
+
+ token.reason = new CanceledError(message, config, request);
+ resolvePromise(token.reason);
+ });
+ }
+
+ /**
+ * Throws a `CanceledError` if cancellation has been requested.
+ */
+ throwIfRequested() {
+ if (this.reason) {
+ throw this.reason;
+ }
+ }
+
+ /**
+ * Subscribe to the cancel signal
+ */
+
+ subscribe(listener) {
+ if (this.reason) {
+ listener(this.reason);
+ return;
+ }
+
+ if (this._listeners) {
+ this._listeners.push(listener);
+ } else {
+ this._listeners = [listener];
+ }
+ }
+
+ /**
+ * Unsubscribe from the cancel signal
+ */
+
+ unsubscribe(listener) {
+ if (!this._listeners) {
+ return;
+ }
+ const index = this._listeners.indexOf(listener);
+ if (index !== -1) {
+ this._listeners.splice(index, 1);
+ }
+ }
+
+ /**
+ * Returns an object that contains a new `CancelToken` and a function that, when called,
+ * cancels the `CancelToken`.
+ */
+ static source() {
+ let cancel;
+ const token = new CancelToken(function executor(c) {
+ cancel = c;
+ });
+ return {
+ token,
+ cancel
+ };
+ }
+}
+
+var CancelToken$1 = CancelToken;
+
+/**
+ * Syntactic sugar for invoking a function and expanding an array for arguments.
+ *
+ * Common use case would be to use `Function.prototype.apply`.
+ *
+ * ```js
+ * function f(x, y, z) {}
+ * var args = [1, 2, 3];
+ * f.apply(null, args);
+ * ```
+ *
+ * With `spread` this example can be re-written.
+ *
+ * ```js
+ * spread(function(x, y, z) {})([1, 2, 3]);
+ * ```
+ *
+ * @param {Function} callback
+ *
+ * @returns {Function}
+ */
+function spread(callback) {
+ return function wrap(arr) {
+ return callback.apply(null, arr);
+ };
+}
+
+/**
+ * Determines whether the payload is an error thrown by Axios
+ *
+ * @param {*} payload The value to test
+ *
+ * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false
+ */
+function isAxiosError(payload) {
+ return utils$1.isObject(payload) && (payload.isAxiosError === true);
+}
+
+const HttpStatusCode = {
+ Continue: 100,
+ SwitchingProtocols: 101,
+ Processing: 102,
+ EarlyHints: 103,
+ Ok: 200,
+ Created: 201,
+ Accepted: 202,
+ NonAuthoritativeInformation: 203,
+ NoContent: 204,
+ ResetContent: 205,
+ PartialContent: 206,
+ MultiStatus: 207,
+ AlreadyReported: 208,
+ ImUsed: 226,
+ MultipleChoices: 300,
+ MovedPermanently: 301,
+ Found: 302,
+ SeeOther: 303,
+ NotModified: 304,
+ UseProxy: 305,
+ Unused: 306,
+ TemporaryRedirect: 307,
+ PermanentRedirect: 308,
+ BadRequest: 400,
+ Unauthorized: 401,
+ PaymentRequired: 402,
+ Forbidden: 403,
+ NotFound: 404,
+ MethodNotAllowed: 405,
+ NotAcceptable: 406,
+ ProxyAuthenticationRequired: 407,
+ RequestTimeout: 408,
+ Conflict: 409,
+ Gone: 410,
+ LengthRequired: 411,
+ PreconditionFailed: 412,
+ PayloadTooLarge: 413,
+ UriTooLong: 414,
+ UnsupportedMediaType: 415,
+ RangeNotSatisfiable: 416,
+ ExpectationFailed: 417,
+ ImATeapot: 418,
+ MisdirectedRequest: 421,
+ UnprocessableEntity: 422,
+ Locked: 423,
+ FailedDependency: 424,
+ TooEarly: 425,
+ UpgradeRequired: 426,
+ PreconditionRequired: 428,
+ TooManyRequests: 429,
+ RequestHeaderFieldsTooLarge: 431,
+ UnavailableForLegalReasons: 451,
+ InternalServerError: 500,
+ NotImplemented: 501,
+ BadGateway: 502,
+ ServiceUnavailable: 503,
+ GatewayTimeout: 504,
+ HttpVersionNotSupported: 505,
+ VariantAlsoNegotiates: 506,
+ InsufficientStorage: 507,
+ LoopDetected: 508,
+ NotExtended: 510,
+ NetworkAuthenticationRequired: 511,
+};
+
+Object.entries(HttpStatusCode).forEach(([key, value]) => {
+ HttpStatusCode[value] = key;
+});
+
+var HttpStatusCode$1 = HttpStatusCode;
+
+/**
+ * Create an instance of Axios
+ *
+ * @param {Object} defaultConfig The default config for the instance
+ *
+ * @returns {Axios} A new instance of Axios
+ */
+function createInstance(defaultConfig) {
+ const context = new Axios$1(defaultConfig);
+ const instance = bind(Axios$1.prototype.request, context);
+
+ // Copy axios.prototype to instance
+ utils$1.extend(instance, Axios$1.prototype, context, {allOwnKeys: true});
+
+ // Copy context to instance
+ utils$1.extend(instance, context, null, {allOwnKeys: true});
+
+ // Factory for creating new instances
+ instance.create = function create(instanceConfig) {
+ return createInstance(mergeConfig(defaultConfig, instanceConfig));
+ };
+
+ return instance;
+}
+
+// Create the default instance to be exported
+const axios = createInstance(defaults$1);
+
+// Expose Axios class to allow class inheritance
+axios.Axios = Axios$1;
+
+// Expose Cancel & CancelToken
+axios.CanceledError = CanceledError;
+axios.CancelToken = CancelToken$1;
+axios.isCancel = isCancel;
+axios.VERSION = VERSION;
+axios.toFormData = toFormData;
+
+// Expose AxiosError class
+axios.AxiosError = AxiosError;
+
+// alias for CanceledError for backward compatibility
+axios.Cancel = axios.CanceledError;
+
+// Expose all/spread
+axios.all = function all(promises) {
+ return Promise.all(promises);
+};
+
+axios.spread = spread;
+
+// Expose isAxiosError
+axios.isAxiosError = isAxiosError;
+
+// Expose mergeConfig
+axios.mergeConfig = mergeConfig;
+
+axios.AxiosHeaders = AxiosHeaders$1;
+
+axios.formToJSON = thing => formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing);
+
+axios.getAdapter = adapters.getAdapter;
+
+axios.HttpStatusCode = HttpStatusCode$1;
+
+axios.default = axios;
+
+module.exports = axios;
+//# sourceMappingURL=axios.cjs.map
diff --git a/node_modules/axios/dist/browser/axios.cjs.map b/node_modules/axios/dist/browser/axios.cjs.map
new file mode 100644
index 00000000..b27fbf23
--- /dev/null
+++ b/node_modules/axios/dist/browser/axios.cjs.map
@@ -0,0 +1 @@
+{"version":3,"file":"axios.cjs","sources":["../../lib/helpers/bind.js","../../lib/utils.js","../../lib/core/AxiosError.js","../../lib/helpers/null.js","../../lib/helpers/toFormData.js","../../lib/helpers/AxiosURLSearchParams.js","../../lib/helpers/buildURL.js","../../lib/core/InterceptorManager.js","../../lib/defaults/transitional.js","../../lib/platform/browser/classes/URLSearchParams.js","../../lib/platform/browser/classes/FormData.js","../../lib/platform/browser/classes/Blob.js","../../lib/platform/browser/index.js","../../lib/platform/common/utils.js","../../lib/platform/index.js","../../lib/helpers/toURLEncodedForm.js","../../lib/helpers/formDataToJSON.js","../../lib/defaults/index.js","../../lib/helpers/parseHeaders.js","../../lib/core/AxiosHeaders.js","../../lib/core/transformData.js","../../lib/cancel/isCancel.js","../../lib/cancel/CanceledError.js","../../lib/core/settle.js","../../lib/helpers/parseProtocol.js","../../lib/helpers/speedometer.js","../../lib/helpers/throttle.js","../../lib/helpers/progressEventReducer.js","../../lib/helpers/isURLSameOrigin.js","../../lib/helpers/cookies.js","../../lib/helpers/isAbsoluteURL.js","../../lib/helpers/combineURLs.js","../../lib/core/buildFullPath.js","../../lib/core/mergeConfig.js","../../lib/helpers/resolveConfig.js","../../lib/adapters/xhr.js","../../lib/helpers/composeSignals.js","../../lib/helpers/trackStream.js","../../lib/adapters/fetch.js","../../lib/adapters/adapters.js","../../lib/core/dispatchRequest.js","../../lib/env/data.js","../../lib/helpers/validator.js","../../lib/core/Axios.js","../../lib/cancel/CancelToken.js","../../lib/helpers/spread.js","../../lib/helpers/isAxiosError.js","../../lib/helpers/HttpStatusCode.js","../../lib/axios.js"],"sourcesContent":["'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = (\n (product) => {\n return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0\n })(typeof navigator !== 'undefined' && navigator.product);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isHeaders(header)) {\n for (const [key, value] of header.entries()) {\n setHeader(value, key, rewrite);\n }\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","'use strict';\n\n/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n const threshold = 1000 / freq;\n let timer = null;\n return function throttled() {\n const force = this === true;\n\n const now = Date.now();\n if (force || now - timestamp > threshold) {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n timestamp = now;\n return fn.apply(null, arguments);\n }\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n timestamp = Date.now();\n return fn.apply(null, arguments);\n }, threshold - (now - timestamp));\n }\n };\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\n\nexport default (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n }, freq);\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n let contentType;\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // Let the browser set it\n } else if ((contentType = headers.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport progressEventReducer from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType} = _config;\n let onCanceled;\n function done() {\n if (_config.cancelToken) {\n _config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (_config.signal) {\n _config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, _config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, _config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n _config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (typeof _config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(_config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof _config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(_config.onUploadProgress));\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst composeSignals = (signals, timeout) => {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (cancel) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = cancel instanceof Error ? cancel : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal &&\n (signal.removeEventListener ? signal.removeEventListener('abort', onabort) : signal.unsubscribe(onabort));\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal && signal.addEventListener && signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = unsubscribe;\n\n return [signal, () => {\n timer && clearTimeout(timer);\n timer = null;\n }];\n}\n\nexport default composeSignals;\n","\n\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize, encode) {\n for await (const chunk of iterable) {\n yield* streamChunk(ArrayBuffer.isView(chunk) ? chunk : (await encode(String(chunk))), chunkSize);\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish, encode) => {\n const iterator = readBytes(stream, chunkSize, encode);\n\n let bytes = 0;\n\n return new ReadableStream({\n type: 'bytes',\n\n async pull(controller) {\n const {done, value} = await iterator.next();\n\n if (done) {\n controller.close();\n onFinish();\n return;\n }\n\n let len = value.byteLength;\n onProgress && onProgress(bytes += len);\n controller.enqueue(new Uint8Array(value));\n },\n cancel(reason) {\n onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport progressEventReducer from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst fetchProgressDecorator = (total, fn) => {\n const lengthComputable = total != null;\n return (loaded) => setTimeout(() => fn({\n lengthComputable,\n total,\n loaded\n }));\n}\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst supportsRequestStream = isReadableStreamSupported && (() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n})();\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported && !!(()=> {\n try {\n return utils.isReadableStream(new Response('').body);\n } catch(err) {\n // return undefined\n }\n})();\n\nconst resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\n (_, config) => {\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if(utils.isBlob(body)) {\n return body.size;\n }\n\n if(utils.isSpecCompliantForm(body)) {\n return (await new Request(body).arrayBuffer()).byteLength;\n }\n\n if(utils.isArrayBufferView(body)) {\n return body.byteLength;\n }\n\n if(utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if(utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n}\n\nconst resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n}\n\nexport default isFetchSupported && (async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let [composedSignal, stopTimeout] = (signal || cancelToken || timeout) ?\n composeSignals([signal, cancelToken], timeout) : [];\n\n let finished, request;\n\n const onFinish = () => {\n !finished && setTimeout(() => {\n composedSignal && composedSignal.unsubscribe();\n });\n\n finished = true;\n }\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, fetchProgressDecorator(\n requestContentLength,\n progressEventReducer(onUploadProgress)\n ), null, encodeText);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'cors' : 'omit';\n }\n\n request = new Request(url, {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n withCredentials\n });\n\n let response = await fetch(request);\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || isStreamResponse)) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onDownloadProgress && fetchProgressDecorator(\n responseContentLength,\n progressEventReducer(onDownloadProgress, true)\n ), isStreamResponse && onFinish, encodeText),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && onFinish();\n\n stopTimeout && stopTimeout();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n onFinish();\n\n if (err && err.name === 'TypeError' && /fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n});\n\n\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: fetchAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","export const VERSION = \"1.7.2\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n"],"names":["utils","prototype","encode","URLSearchParams","FormData","Blob","platform","defaults","AxiosHeaders","composeSignals","validators","InterceptorManager","Axios","CancelToken","HttpStatusCode"],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/axios/dist/esm/axios.js b/node_modules/axios/dist/esm/axios.js
new file mode 100644
index 00000000..c29e4a71
--- /dev/null
+++ b/node_modules/axios/dist/esm/axios.js
@@ -0,0 +1,3661 @@
+// Axios v1.7.2 Copyright (c) 2024 Matt Zabriskie and contributors
+function bind(fn, thisArg) {
+ return function wrap() {
+ return fn.apply(thisArg, arguments);
+ };
+}
+
+// utils is a library of generic helper functions non-specific to axios
+
+const {toString} = Object.prototype;
+const {getPrototypeOf} = Object;
+
+const kindOf = (cache => thing => {
+ const str = toString.call(thing);
+ return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());
+})(Object.create(null));
+
+const kindOfTest = (type) => {
+ type = type.toLowerCase();
+ return (thing) => kindOf(thing) === type
+};
+
+const typeOfTest = type => thing => typeof thing === type;
+
+/**
+ * Determine if a value is an Array
+ *
+ * @param {Object} val The value to test
+ *
+ * @returns {boolean} True if value is an Array, otherwise false
+ */
+const {isArray} = Array;
+
+/**
+ * Determine if a value is undefined
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if the value is undefined, otherwise false
+ */
+const isUndefined = typeOfTest('undefined');
+
+/**
+ * Determine if a value is a Buffer
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a Buffer, otherwise false
+ */
+function isBuffer(val) {
+ return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)
+ && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);
+}
+
+/**
+ * Determine if a value is an ArrayBuffer
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is an ArrayBuffer, otherwise false
+ */
+const isArrayBuffer = kindOfTest('ArrayBuffer');
+
+
+/**
+ * Determine if a value is a view on an ArrayBuffer
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false
+ */
+function isArrayBufferView(val) {
+ let result;
+ if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {
+ result = ArrayBuffer.isView(val);
+ } else {
+ result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));
+ }
+ return result;
+}
+
+/**
+ * Determine if a value is a String
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a String, otherwise false
+ */
+const isString = typeOfTest('string');
+
+/**
+ * Determine if a value is a Function
+ *
+ * @param {*} val The value to test
+ * @returns {boolean} True if value is a Function, otherwise false
+ */
+const isFunction = typeOfTest('function');
+
+/**
+ * Determine if a value is a Number
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a Number, otherwise false
+ */
+const isNumber = typeOfTest('number');
+
+/**
+ * Determine if a value is an Object
+ *
+ * @param {*} thing The value to test
+ *
+ * @returns {boolean} True if value is an Object, otherwise false
+ */
+const isObject = (thing) => thing !== null && typeof thing === 'object';
+
+/**
+ * Determine if a value is a Boolean
+ *
+ * @param {*} thing The value to test
+ * @returns {boolean} True if value is a Boolean, otherwise false
+ */
+const isBoolean = thing => thing === true || thing === false;
+
+/**
+ * Determine if a value is a plain Object
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a plain Object, otherwise false
+ */
+const isPlainObject = (val) => {
+ if (kindOf(val) !== 'object') {
+ return false;
+ }
+
+ const prototype = getPrototypeOf(val);
+ return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);
+};
+
+/**
+ * Determine if a value is a Date
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a Date, otherwise false
+ */
+const isDate = kindOfTest('Date');
+
+/**
+ * Determine if a value is a File
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a File, otherwise false
+ */
+const isFile = kindOfTest('File');
+
+/**
+ * Determine if a value is a Blob
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a Blob, otherwise false
+ */
+const isBlob = kindOfTest('Blob');
+
+/**
+ * Determine if a value is a FileList
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a File, otherwise false
+ */
+const isFileList = kindOfTest('FileList');
+
+/**
+ * Determine if a value is a Stream
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a Stream, otherwise false
+ */
+const isStream = (val) => isObject(val) && isFunction(val.pipe);
+
+/**
+ * Determine if a value is a FormData
+ *
+ * @param {*} thing The value to test
+ *
+ * @returns {boolean} True if value is an FormData, otherwise false
+ */
+const isFormData = (thing) => {
+ let kind;
+ return thing && (
+ (typeof FormData === 'function' && thing instanceof FormData) || (
+ isFunction(thing.append) && (
+ (kind = kindOf(thing)) === 'formdata' ||
+ // detect form-data instance
+ (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')
+ )
+ )
+ )
+};
+
+/**
+ * Determine if a value is a URLSearchParams object
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a URLSearchParams object, otherwise false
+ */
+const isURLSearchParams = kindOfTest('URLSearchParams');
+
+const [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);
+
+/**
+ * Trim excess whitespace off the beginning and end of a string
+ *
+ * @param {String} str The String to trim
+ *
+ * @returns {String} The String freed of excess whitespace
+ */
+const trim = (str) => str.trim ?
+ str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
+
+/**
+ * Iterate over an Array or an Object invoking a function for each item.
+ *
+ * If `obj` is an Array callback will be called passing
+ * the value, index, and complete array for each item.
+ *
+ * If 'obj' is an Object callback will be called passing
+ * the value, key, and complete object for each property.
+ *
+ * @param {Object|Array} obj The object to iterate
+ * @param {Function} fn The callback to invoke for each item
+ *
+ * @param {Boolean} [allOwnKeys = false]
+ * @returns {any}
+ */
+function forEach(obj, fn, {allOwnKeys = false} = {}) {
+ // Don't bother if no value provided
+ if (obj === null || typeof obj === 'undefined') {
+ return;
+ }
+
+ let i;
+ let l;
+
+ // Force an array if not already something iterable
+ if (typeof obj !== 'object') {
+ /*eslint no-param-reassign:0*/
+ obj = [obj];
+ }
+
+ if (isArray(obj)) {
+ // Iterate over array values
+ for (i = 0, l = obj.length; i < l; i++) {
+ fn.call(null, obj[i], i, obj);
+ }
+ } else {
+ // Iterate over object keys
+ const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);
+ const len = keys.length;
+ let key;
+
+ for (i = 0; i < len; i++) {
+ key = keys[i];
+ fn.call(null, obj[key], key, obj);
+ }
+ }
+}
+
+function findKey(obj, key) {
+ key = key.toLowerCase();
+ const keys = Object.keys(obj);
+ let i = keys.length;
+ let _key;
+ while (i-- > 0) {
+ _key = keys[i];
+ if (key === _key.toLowerCase()) {
+ return _key;
+ }
+ }
+ return null;
+}
+
+const _global = (() => {
+ /*eslint no-undef:0*/
+ if (typeof globalThis !== "undefined") return globalThis;
+ return typeof self !== "undefined" ? self : (typeof window !== 'undefined' ? window : global)
+})();
+
+const isContextDefined = (context) => !isUndefined(context) && context !== _global;
+
+/**
+ * Accepts varargs expecting each argument to be an object, then
+ * immutably merges the properties of each object and returns result.
+ *
+ * When multiple objects contain the same key the later object in
+ * the arguments list will take precedence.
+ *
+ * Example:
+ *
+ * ```js
+ * var result = merge({foo: 123}, {foo: 456});
+ * console.log(result.foo); // outputs 456
+ * ```
+ *
+ * @param {Object} obj1 Object to merge
+ *
+ * @returns {Object} Result of all merge properties
+ */
+function merge(/* obj1, obj2, obj3, ... */) {
+ const {caseless} = isContextDefined(this) && this || {};
+ const result = {};
+ const assignValue = (val, key) => {
+ const targetKey = caseless && findKey(result, key) || key;
+ if (isPlainObject(result[targetKey]) && isPlainObject(val)) {
+ result[targetKey] = merge(result[targetKey], val);
+ } else if (isPlainObject(val)) {
+ result[targetKey] = merge({}, val);
+ } else if (isArray(val)) {
+ result[targetKey] = val.slice();
+ } else {
+ result[targetKey] = val;
+ }
+ };
+
+ for (let i = 0, l = arguments.length; i < l; i++) {
+ arguments[i] && forEach(arguments[i], assignValue);
+ }
+ return result;
+}
+
+/**
+ * Extends object a by mutably adding to it the properties of object b.
+ *
+ * @param {Object} a The object to be extended
+ * @param {Object} b The object to copy properties from
+ * @param {Object} thisArg The object to bind function to
+ *
+ * @param {Boolean} [allOwnKeys]
+ * @returns {Object} The resulting value of object a
+ */
+const extend = (a, b, thisArg, {allOwnKeys}= {}) => {
+ forEach(b, (val, key) => {
+ if (thisArg && isFunction(val)) {
+ a[key] = bind(val, thisArg);
+ } else {
+ a[key] = val;
+ }
+ }, {allOwnKeys});
+ return a;
+};
+
+/**
+ * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)
+ *
+ * @param {string} content with BOM
+ *
+ * @returns {string} content value without BOM
+ */
+const stripBOM = (content) => {
+ if (content.charCodeAt(0) === 0xFEFF) {
+ content = content.slice(1);
+ }
+ return content;
+};
+
+/**
+ * Inherit the prototype methods from one constructor into another
+ * @param {function} constructor
+ * @param {function} superConstructor
+ * @param {object} [props]
+ * @param {object} [descriptors]
+ *
+ * @returns {void}
+ */
+const inherits = (constructor, superConstructor, props, descriptors) => {
+ constructor.prototype = Object.create(superConstructor.prototype, descriptors);
+ constructor.prototype.constructor = constructor;
+ Object.defineProperty(constructor, 'super', {
+ value: superConstructor.prototype
+ });
+ props && Object.assign(constructor.prototype, props);
+};
+
+/**
+ * Resolve object with deep prototype chain to a flat object
+ * @param {Object} sourceObj source object
+ * @param {Object} [destObj]
+ * @param {Function|Boolean} [filter]
+ * @param {Function} [propFilter]
+ *
+ * @returns {Object}
+ */
+const toFlatObject = (sourceObj, destObj, filter, propFilter) => {
+ let props;
+ let i;
+ let prop;
+ const merged = {};
+
+ destObj = destObj || {};
+ // eslint-disable-next-line no-eq-null,eqeqeq
+ if (sourceObj == null) return destObj;
+
+ do {
+ props = Object.getOwnPropertyNames(sourceObj);
+ i = props.length;
+ while (i-- > 0) {
+ prop = props[i];
+ if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {
+ destObj[prop] = sourceObj[prop];
+ merged[prop] = true;
+ }
+ }
+ sourceObj = filter !== false && getPrototypeOf(sourceObj);
+ } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);
+
+ return destObj;
+};
+
+/**
+ * Determines whether a string ends with the characters of a specified string
+ *
+ * @param {String} str
+ * @param {String} searchString
+ * @param {Number} [position= 0]
+ *
+ * @returns {boolean}
+ */
+const endsWith = (str, searchString, position) => {
+ str = String(str);
+ if (position === undefined || position > str.length) {
+ position = str.length;
+ }
+ position -= searchString.length;
+ const lastIndex = str.indexOf(searchString, position);
+ return lastIndex !== -1 && lastIndex === position;
+};
+
+
+/**
+ * Returns new array from array like object or null if failed
+ *
+ * @param {*} [thing]
+ *
+ * @returns {?Array}
+ */
+const toArray = (thing) => {
+ if (!thing) return null;
+ if (isArray(thing)) return thing;
+ let i = thing.length;
+ if (!isNumber(i)) return null;
+ const arr = new Array(i);
+ while (i-- > 0) {
+ arr[i] = thing[i];
+ }
+ return arr;
+};
+
+/**
+ * Checking if the Uint8Array exists and if it does, it returns a function that checks if the
+ * thing passed in is an instance of Uint8Array
+ *
+ * @param {TypedArray}
+ *
+ * @returns {Array}
+ */
+// eslint-disable-next-line func-names
+const isTypedArray = (TypedArray => {
+ // eslint-disable-next-line func-names
+ return thing => {
+ return TypedArray && thing instanceof TypedArray;
+ };
+})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));
+
+/**
+ * For each entry in the object, call the function with the key and value.
+ *
+ * @param {Object} obj - The object to iterate over.
+ * @param {Function} fn - The function to call for each entry.
+ *
+ * @returns {void}
+ */
+const forEachEntry = (obj, fn) => {
+ const generator = obj && obj[Symbol.iterator];
+
+ const iterator = generator.call(obj);
+
+ let result;
+
+ while ((result = iterator.next()) && !result.done) {
+ const pair = result.value;
+ fn.call(obj, pair[0], pair[1]);
+ }
+};
+
+/**
+ * It takes a regular expression and a string, and returns an array of all the matches
+ *
+ * @param {string} regExp - The regular expression to match against.
+ * @param {string} str - The string to search.
+ *
+ * @returns {Array}
+ */
+const matchAll = (regExp, str) => {
+ let matches;
+ const arr = [];
+
+ while ((matches = regExp.exec(str)) !== null) {
+ arr.push(matches);
+ }
+
+ return arr;
+};
+
+/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */
+const isHTMLForm = kindOfTest('HTMLFormElement');
+
+const toCamelCase = str => {
+ return str.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,
+ function replacer(m, p1, p2) {
+ return p1.toUpperCase() + p2;
+ }
+ );
+};
+
+/* Creating a function that will check if an object has a property. */
+const hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);
+
+/**
+ * Determine if a value is a RegExp object
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a RegExp object, otherwise false
+ */
+const isRegExp = kindOfTest('RegExp');
+
+const reduceDescriptors = (obj, reducer) => {
+ const descriptors = Object.getOwnPropertyDescriptors(obj);
+ const reducedDescriptors = {};
+
+ forEach(descriptors, (descriptor, name) => {
+ let ret;
+ if ((ret = reducer(descriptor, name, obj)) !== false) {
+ reducedDescriptors[name] = ret || descriptor;
+ }
+ });
+
+ Object.defineProperties(obj, reducedDescriptors);
+};
+
+/**
+ * Makes all methods read-only
+ * @param {Object} obj
+ */
+
+const freezeMethods = (obj) => {
+ reduceDescriptors(obj, (descriptor, name) => {
+ // skip restricted props in strict mode
+ if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {
+ return false;
+ }
+
+ const value = obj[name];
+
+ if (!isFunction(value)) return;
+
+ descriptor.enumerable = false;
+
+ if ('writable' in descriptor) {
+ descriptor.writable = false;
+ return;
+ }
+
+ if (!descriptor.set) {
+ descriptor.set = () => {
+ throw Error('Can not rewrite read-only method \'' + name + '\'');
+ };
+ }
+ });
+};
+
+const toObjectSet = (arrayOrString, delimiter) => {
+ const obj = {};
+
+ const define = (arr) => {
+ arr.forEach(value => {
+ obj[value] = true;
+ });
+ };
+
+ isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));
+
+ return obj;
+};
+
+const noop = () => {};
+
+const toFiniteNumber = (value, defaultValue) => {
+ return value != null && Number.isFinite(value = +value) ? value : defaultValue;
+};
+
+const ALPHA = 'abcdefghijklmnopqrstuvwxyz';
+
+const DIGIT = '0123456789';
+
+const ALPHABET = {
+ DIGIT,
+ ALPHA,
+ ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT
+};
+
+const generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {
+ let str = '';
+ const {length} = alphabet;
+ while (size--) {
+ str += alphabet[Math.random() * length|0];
+ }
+
+ return str;
+};
+
+/**
+ * If the thing is a FormData object, return true, otherwise return false.
+ *
+ * @param {unknown} thing - The thing to check.
+ *
+ * @returns {boolean}
+ */
+function isSpecCompliantForm(thing) {
+ return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);
+}
+
+const toJSONObject = (obj) => {
+ const stack = new Array(10);
+
+ const visit = (source, i) => {
+
+ if (isObject(source)) {
+ if (stack.indexOf(source) >= 0) {
+ return;
+ }
+
+ if(!('toJSON' in source)) {
+ stack[i] = source;
+ const target = isArray(source) ? [] : {};
+
+ forEach(source, (value, key) => {
+ const reducedValue = visit(value, i + 1);
+ !isUndefined(reducedValue) && (target[key] = reducedValue);
+ });
+
+ stack[i] = undefined;
+
+ return target;
+ }
+ }
+
+ return source;
+ };
+
+ return visit(obj, 0);
+};
+
+const isAsyncFn = kindOfTest('AsyncFunction');
+
+const isThenable = (thing) =>
+ thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);
+
+const utils$1 = {
+ isArray,
+ isArrayBuffer,
+ isBuffer,
+ isFormData,
+ isArrayBufferView,
+ isString,
+ isNumber,
+ isBoolean,
+ isObject,
+ isPlainObject,
+ isReadableStream,
+ isRequest,
+ isResponse,
+ isHeaders,
+ isUndefined,
+ isDate,
+ isFile,
+ isBlob,
+ isRegExp,
+ isFunction,
+ isStream,
+ isURLSearchParams,
+ isTypedArray,
+ isFileList,
+ forEach,
+ merge,
+ extend,
+ trim,
+ stripBOM,
+ inherits,
+ toFlatObject,
+ kindOf,
+ kindOfTest,
+ endsWith,
+ toArray,
+ forEachEntry,
+ matchAll,
+ isHTMLForm,
+ hasOwnProperty,
+ hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection
+ reduceDescriptors,
+ freezeMethods,
+ toObjectSet,
+ toCamelCase,
+ noop,
+ toFiniteNumber,
+ findKey,
+ global: _global,
+ isContextDefined,
+ ALPHABET,
+ generateString,
+ isSpecCompliantForm,
+ toJSONObject,
+ isAsyncFn,
+ isThenable
+};
+
+/**
+ * Create an Error with the specified message, config, error code, request and response.
+ *
+ * @param {string} message The error message.
+ * @param {string} [code] The error code (for example, 'ECONNABORTED').
+ * @param {Object} [config] The config.
+ * @param {Object} [request] The request.
+ * @param {Object} [response] The response.
+ *
+ * @returns {Error} The created error.
+ */
+function AxiosError$1(message, code, config, request, response) {
+ Error.call(this);
+
+ if (Error.captureStackTrace) {
+ Error.captureStackTrace(this, this.constructor);
+ } else {
+ this.stack = (new Error()).stack;
+ }
+
+ this.message = message;
+ this.name = 'AxiosError';
+ code && (this.code = code);
+ config && (this.config = config);
+ request && (this.request = request);
+ response && (this.response = response);
+}
+
+utils$1.inherits(AxiosError$1, Error, {
+ toJSON: function toJSON() {
+ return {
+ // Standard
+ message: this.message,
+ name: this.name,
+ // Microsoft
+ description: this.description,
+ number: this.number,
+ // Mozilla
+ fileName: this.fileName,
+ lineNumber: this.lineNumber,
+ columnNumber: this.columnNumber,
+ stack: this.stack,
+ // Axios
+ config: utils$1.toJSONObject(this.config),
+ code: this.code,
+ status: this.response && this.response.status ? this.response.status : null
+ };
+ }
+});
+
+const prototype$1 = AxiosError$1.prototype;
+const descriptors = {};
+
+[
+ 'ERR_BAD_OPTION_VALUE',
+ 'ERR_BAD_OPTION',
+ 'ECONNABORTED',
+ 'ETIMEDOUT',
+ 'ERR_NETWORK',
+ 'ERR_FR_TOO_MANY_REDIRECTS',
+ 'ERR_DEPRECATED',
+ 'ERR_BAD_RESPONSE',
+ 'ERR_BAD_REQUEST',
+ 'ERR_CANCELED',
+ 'ERR_NOT_SUPPORT',
+ 'ERR_INVALID_URL'
+// eslint-disable-next-line func-names
+].forEach(code => {
+ descriptors[code] = {value: code};
+});
+
+Object.defineProperties(AxiosError$1, descriptors);
+Object.defineProperty(prototype$1, 'isAxiosError', {value: true});
+
+// eslint-disable-next-line func-names
+AxiosError$1.from = (error, code, config, request, response, customProps) => {
+ const axiosError = Object.create(prototype$1);
+
+ utils$1.toFlatObject(error, axiosError, function filter(obj) {
+ return obj !== Error.prototype;
+ }, prop => {
+ return prop !== 'isAxiosError';
+ });
+
+ AxiosError$1.call(axiosError, error.message, code, config, request, response);
+
+ axiosError.cause = error;
+
+ axiosError.name = error.name;
+
+ customProps && Object.assign(axiosError, customProps);
+
+ return axiosError;
+};
+
+// eslint-disable-next-line strict
+const httpAdapter = null;
+
+/**
+ * Determines if the given thing is a array or js object.
+ *
+ * @param {string} thing - The object or array to be visited.
+ *
+ * @returns {boolean}
+ */
+function isVisitable(thing) {
+ return utils$1.isPlainObject(thing) || utils$1.isArray(thing);
+}
+
+/**
+ * It removes the brackets from the end of a string
+ *
+ * @param {string} key - The key of the parameter.
+ *
+ * @returns {string} the key without the brackets.
+ */
+function removeBrackets(key) {
+ return utils$1.endsWith(key, '[]') ? key.slice(0, -2) : key;
+}
+
+/**
+ * It takes a path, a key, and a boolean, and returns a string
+ *
+ * @param {string} path - The path to the current key.
+ * @param {string} key - The key of the current object being iterated over.
+ * @param {string} dots - If true, the key will be rendered with dots instead of brackets.
+ *
+ * @returns {string} The path to the current key.
+ */
+function renderKey(path, key, dots) {
+ if (!path) return key;
+ return path.concat(key).map(function each(token, i) {
+ // eslint-disable-next-line no-param-reassign
+ token = removeBrackets(token);
+ return !dots && i ? '[' + token + ']' : token;
+ }).join(dots ? '.' : '');
+}
+
+/**
+ * If the array is an array and none of its elements are visitable, then it's a flat array.
+ *
+ * @param {Array} arr - The array to check
+ *
+ * @returns {boolean}
+ */
+function isFlatArray(arr) {
+ return utils$1.isArray(arr) && !arr.some(isVisitable);
+}
+
+const predicates = utils$1.toFlatObject(utils$1, {}, null, function filter(prop) {
+ return /^is[A-Z]/.test(prop);
+});
+
+/**
+ * Convert a data object to FormData
+ *
+ * @param {Object} obj
+ * @param {?Object} [formData]
+ * @param {?Object} [options]
+ * @param {Function} [options.visitor]
+ * @param {Boolean} [options.metaTokens = true]
+ * @param {Boolean} [options.dots = false]
+ * @param {?Boolean} [options.indexes = false]
+ *
+ * @returns {Object}
+ **/
+
+/**
+ * It converts an object into a FormData object
+ *
+ * @param {Object} obj - The object to convert to form data.
+ * @param {string} formData - The FormData object to append to.
+ * @param {Object} options
+ *
+ * @returns
+ */
+function toFormData$1(obj, formData, options) {
+ if (!utils$1.isObject(obj)) {
+ throw new TypeError('target must be an object');
+ }
+
+ // eslint-disable-next-line no-param-reassign
+ formData = formData || new (FormData)();
+
+ // eslint-disable-next-line no-param-reassign
+ options = utils$1.toFlatObject(options, {
+ metaTokens: true,
+ dots: false,
+ indexes: false
+ }, false, function defined(option, source) {
+ // eslint-disable-next-line no-eq-null,eqeqeq
+ return !utils$1.isUndefined(source[option]);
+ });
+
+ const metaTokens = options.metaTokens;
+ // eslint-disable-next-line no-use-before-define
+ const visitor = options.visitor || defaultVisitor;
+ const dots = options.dots;
+ const indexes = options.indexes;
+ const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;
+ const useBlob = _Blob && utils$1.isSpecCompliantForm(formData);
+
+ if (!utils$1.isFunction(visitor)) {
+ throw new TypeError('visitor must be a function');
+ }
+
+ function convertValue(value) {
+ if (value === null) return '';
+
+ if (utils$1.isDate(value)) {
+ return value.toISOString();
+ }
+
+ if (!useBlob && utils$1.isBlob(value)) {
+ throw new AxiosError$1('Blob is not supported. Use a Buffer instead.');
+ }
+
+ if (utils$1.isArrayBuffer(value) || utils$1.isTypedArray(value)) {
+ return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);
+ }
+
+ return value;
+ }
+
+ /**
+ * Default visitor.
+ *
+ * @param {*} value
+ * @param {String|Number} key
+ * @param {Array} path
+ * @this {FormData}
+ *
+ * @returns {boolean} return true to visit the each prop of the value recursively
+ */
+ function defaultVisitor(value, key, path) {
+ let arr = value;
+
+ if (value && !path && typeof value === 'object') {
+ if (utils$1.endsWith(key, '{}')) {
+ // eslint-disable-next-line no-param-reassign
+ key = metaTokens ? key : key.slice(0, -2);
+ // eslint-disable-next-line no-param-reassign
+ value = JSON.stringify(value);
+ } else if (
+ (utils$1.isArray(value) && isFlatArray(value)) ||
+ ((utils$1.isFileList(value) || utils$1.endsWith(key, '[]')) && (arr = utils$1.toArray(value))
+ )) {
+ // eslint-disable-next-line no-param-reassign
+ key = removeBrackets(key);
+
+ arr.forEach(function each(el, index) {
+ !(utils$1.isUndefined(el) || el === null) && formData.append(
+ // eslint-disable-next-line no-nested-ternary
+ indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),
+ convertValue(el)
+ );
+ });
+ return false;
+ }
+ }
+
+ if (isVisitable(value)) {
+ return true;
+ }
+
+ formData.append(renderKey(path, key, dots), convertValue(value));
+
+ return false;
+ }
+
+ const stack = [];
+
+ const exposedHelpers = Object.assign(predicates, {
+ defaultVisitor,
+ convertValue,
+ isVisitable
+ });
+
+ function build(value, path) {
+ if (utils$1.isUndefined(value)) return;
+
+ if (stack.indexOf(value) !== -1) {
+ throw Error('Circular reference detected in ' + path.join('.'));
+ }
+
+ stack.push(value);
+
+ utils$1.forEach(value, function each(el, key) {
+ const result = !(utils$1.isUndefined(el) || el === null) && visitor.call(
+ formData, el, utils$1.isString(key) ? key.trim() : key, path, exposedHelpers
+ );
+
+ if (result === true) {
+ build(el, path ? path.concat(key) : [key]);
+ }
+ });
+
+ stack.pop();
+ }
+
+ if (!utils$1.isObject(obj)) {
+ throw new TypeError('data must be an object');
+ }
+
+ build(obj);
+
+ return formData;
+}
+
+/**
+ * It encodes a string by replacing all characters that are not in the unreserved set with
+ * their percent-encoded equivalents
+ *
+ * @param {string} str - The string to encode.
+ *
+ * @returns {string} The encoded string.
+ */
+function encode$1(str) {
+ const charMap = {
+ '!': '%21',
+ "'": '%27',
+ '(': '%28',
+ ')': '%29',
+ '~': '%7E',
+ '%20': '+',
+ '%00': '\x00'
+ };
+ return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {
+ return charMap[match];
+ });
+}
+
+/**
+ * It takes a params object and converts it to a FormData object
+ *
+ * @param {Object} params - The parameters to be converted to a FormData object.
+ * @param {Object} options - The options object passed to the Axios constructor.
+ *
+ * @returns {void}
+ */
+function AxiosURLSearchParams(params, options) {
+ this._pairs = [];
+
+ params && toFormData$1(params, this, options);
+}
+
+const prototype = AxiosURLSearchParams.prototype;
+
+prototype.append = function append(name, value) {
+ this._pairs.push([name, value]);
+};
+
+prototype.toString = function toString(encoder) {
+ const _encode = encoder ? function(value) {
+ return encoder.call(this, value, encode$1);
+ } : encode$1;
+
+ return this._pairs.map(function each(pair) {
+ return _encode(pair[0]) + '=' + _encode(pair[1]);
+ }, '').join('&');
+};
+
+/**
+ * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their
+ * URI encoded counterparts
+ *
+ * @param {string} val The value to be encoded.
+ *
+ * @returns {string} The encoded value.
+ */
+function encode(val) {
+ return encodeURIComponent(val).
+ replace(/%3A/gi, ':').
+ replace(/%24/g, '$').
+ replace(/%2C/gi, ',').
+ replace(/%20/g, '+').
+ replace(/%5B/gi, '[').
+ replace(/%5D/gi, ']');
+}
+
+/**
+ * Build a URL by appending params to the end
+ *
+ * @param {string} url The base of the url (e.g., http://www.google.com)
+ * @param {object} [params] The params to be appended
+ * @param {?object} options
+ *
+ * @returns {string} The formatted url
+ */
+function buildURL(url, params, options) {
+ /*eslint no-param-reassign:0*/
+ if (!params) {
+ return url;
+ }
+
+ const _encode = options && options.encode || encode;
+
+ const serializeFn = options && options.serialize;
+
+ let serializedParams;
+
+ if (serializeFn) {
+ serializedParams = serializeFn(params, options);
+ } else {
+ serializedParams = utils$1.isURLSearchParams(params) ?
+ params.toString() :
+ new AxiosURLSearchParams(params, options).toString(_encode);
+ }
+
+ if (serializedParams) {
+ const hashmarkIndex = url.indexOf("#");
+
+ if (hashmarkIndex !== -1) {
+ url = url.slice(0, hashmarkIndex);
+ }
+ url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;
+ }
+
+ return url;
+}
+
+class InterceptorManager {
+ constructor() {
+ this.handlers = [];
+ }
+
+ /**
+ * Add a new interceptor to the stack
+ *
+ * @param {Function} fulfilled The function to handle `then` for a `Promise`
+ * @param {Function} rejected The function to handle `reject` for a `Promise`
+ *
+ * @return {Number} An ID used to remove interceptor later
+ */
+ use(fulfilled, rejected, options) {
+ this.handlers.push({
+ fulfilled,
+ rejected,
+ synchronous: options ? options.synchronous : false,
+ runWhen: options ? options.runWhen : null
+ });
+ return this.handlers.length - 1;
+ }
+
+ /**
+ * Remove an interceptor from the stack
+ *
+ * @param {Number} id The ID that was returned by `use`
+ *
+ * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise
+ */
+ eject(id) {
+ if (this.handlers[id]) {
+ this.handlers[id] = null;
+ }
+ }
+
+ /**
+ * Clear all interceptors from the stack
+ *
+ * @returns {void}
+ */
+ clear() {
+ if (this.handlers) {
+ this.handlers = [];
+ }
+ }
+
+ /**
+ * Iterate over all the registered interceptors
+ *
+ * This method is particularly useful for skipping over any
+ * interceptors that may have become `null` calling `eject`.
+ *
+ * @param {Function} fn The function to call for each interceptor
+ *
+ * @returns {void}
+ */
+ forEach(fn) {
+ utils$1.forEach(this.handlers, function forEachHandler(h) {
+ if (h !== null) {
+ fn(h);
+ }
+ });
+ }
+}
+
+const InterceptorManager$1 = InterceptorManager;
+
+const transitionalDefaults = {
+ silentJSONParsing: true,
+ forcedJSONParsing: true,
+ clarifyTimeoutError: false
+};
+
+const URLSearchParams$1 = typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;
+
+const FormData$1 = typeof FormData !== 'undefined' ? FormData : null;
+
+const Blob$1 = typeof Blob !== 'undefined' ? Blob : null;
+
+const platform$1 = {
+ isBrowser: true,
+ classes: {
+ URLSearchParams: URLSearchParams$1,
+ FormData: FormData$1,
+ Blob: Blob$1
+ },
+ protocols: ['http', 'https', 'file', 'blob', 'url', 'data']
+};
+
+const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';
+
+/**
+ * Determine if we're running in a standard browser environment
+ *
+ * This allows axios to run in a web worker, and react-native.
+ * Both environments support XMLHttpRequest, but not fully standard globals.
+ *
+ * web workers:
+ * typeof window -> undefined
+ * typeof document -> undefined
+ *
+ * react-native:
+ * navigator.product -> 'ReactNative'
+ * nativescript
+ * navigator.product -> 'NativeScript' or 'NS'
+ *
+ * @returns {boolean}
+ */
+const hasStandardBrowserEnv = (
+ (product) => {
+ return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0
+ })(typeof navigator !== 'undefined' && navigator.product);
+
+/**
+ * Determine if we're running in a standard browser webWorker environment
+ *
+ * Although the `isStandardBrowserEnv` method indicates that
+ * `allows axios to run in a web worker`, the WebWorker will still be
+ * filtered out due to its judgment standard
+ * `typeof window !== 'undefined' && typeof document !== 'undefined'`.
+ * This leads to a problem when axios post `FormData` in webWorker
+ */
+const hasStandardBrowserWebWorkerEnv = (() => {
+ return (
+ typeof WorkerGlobalScope !== 'undefined' &&
+ // eslint-disable-next-line no-undef
+ self instanceof WorkerGlobalScope &&
+ typeof self.importScripts === 'function'
+ );
+})();
+
+const origin = hasBrowserEnv && window.location.href || 'http://localhost';
+
+const utils = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ hasBrowserEnv: hasBrowserEnv,
+ hasStandardBrowserWebWorkerEnv: hasStandardBrowserWebWorkerEnv,
+ hasStandardBrowserEnv: hasStandardBrowserEnv,
+ origin: origin
+});
+
+const platform = {
+ ...utils,
+ ...platform$1
+};
+
+function toURLEncodedForm(data, options) {
+ return toFormData$1(data, new platform.classes.URLSearchParams(), Object.assign({
+ visitor: function(value, key, path, helpers) {
+ if (platform.isNode && utils$1.isBuffer(value)) {
+ this.append(key, value.toString('base64'));
+ return false;
+ }
+
+ return helpers.defaultVisitor.apply(this, arguments);
+ }
+ }, options));
+}
+
+/**
+ * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']
+ *
+ * @param {string} name - The name of the property to get.
+ *
+ * @returns An array of strings.
+ */
+function parsePropPath(name) {
+ // foo[x][y][z]
+ // foo.x.y.z
+ // foo-x-y-z
+ // foo x y z
+ return utils$1.matchAll(/\w+|\[(\w*)]/g, name).map(match => {
+ return match[0] === '[]' ? '' : match[1] || match[0];
+ });
+}
+
+/**
+ * Convert an array to an object.
+ *
+ * @param {Array} arr - The array to convert to an object.
+ *
+ * @returns An object with the same keys and values as the array.
+ */
+function arrayToObject(arr) {
+ const obj = {};
+ const keys = Object.keys(arr);
+ let i;
+ const len = keys.length;
+ let key;
+ for (i = 0; i < len; i++) {
+ key = keys[i];
+ obj[key] = arr[key];
+ }
+ return obj;
+}
+
+/**
+ * It takes a FormData object and returns a JavaScript object
+ *
+ * @param {string} formData The FormData object to convert to JSON.
+ *
+ * @returns {Object | null} The converted object.
+ */
+function formDataToJSON(formData) {
+ function buildPath(path, value, target, index) {
+ let name = path[index++];
+
+ if (name === '__proto__') return true;
+
+ const isNumericKey = Number.isFinite(+name);
+ const isLast = index >= path.length;
+ name = !name && utils$1.isArray(target) ? target.length : name;
+
+ if (isLast) {
+ if (utils$1.hasOwnProp(target, name)) {
+ target[name] = [target[name], value];
+ } else {
+ target[name] = value;
+ }
+
+ return !isNumericKey;
+ }
+
+ if (!target[name] || !utils$1.isObject(target[name])) {
+ target[name] = [];
+ }
+
+ const result = buildPath(path, value, target[name], index);
+
+ if (result && utils$1.isArray(target[name])) {
+ target[name] = arrayToObject(target[name]);
+ }
+
+ return !isNumericKey;
+ }
+
+ if (utils$1.isFormData(formData) && utils$1.isFunction(formData.entries)) {
+ const obj = {};
+
+ utils$1.forEachEntry(formData, (name, value) => {
+ buildPath(parsePropPath(name), value, obj, 0);
+ });
+
+ return obj;
+ }
+
+ return null;
+}
+
+/**
+ * It takes a string, tries to parse it, and if it fails, it returns the stringified version
+ * of the input
+ *
+ * @param {any} rawValue - The value to be stringified.
+ * @param {Function} parser - A function that parses a string into a JavaScript object.
+ * @param {Function} encoder - A function that takes a value and returns a string.
+ *
+ * @returns {string} A stringified version of the rawValue.
+ */
+function stringifySafely(rawValue, parser, encoder) {
+ if (utils$1.isString(rawValue)) {
+ try {
+ (parser || JSON.parse)(rawValue);
+ return utils$1.trim(rawValue);
+ } catch (e) {
+ if (e.name !== 'SyntaxError') {
+ throw e;
+ }
+ }
+ }
+
+ return (encoder || JSON.stringify)(rawValue);
+}
+
+const defaults = {
+
+ transitional: transitionalDefaults,
+
+ adapter: ['xhr', 'http', 'fetch'],
+
+ transformRequest: [function transformRequest(data, headers) {
+ const contentType = headers.getContentType() || '';
+ const hasJSONContentType = contentType.indexOf('application/json') > -1;
+ const isObjectPayload = utils$1.isObject(data);
+
+ if (isObjectPayload && utils$1.isHTMLForm(data)) {
+ data = new FormData(data);
+ }
+
+ const isFormData = utils$1.isFormData(data);
+
+ if (isFormData) {
+ return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;
+ }
+
+ if (utils$1.isArrayBuffer(data) ||
+ utils$1.isBuffer(data) ||
+ utils$1.isStream(data) ||
+ utils$1.isFile(data) ||
+ utils$1.isBlob(data) ||
+ utils$1.isReadableStream(data)
+ ) {
+ return data;
+ }
+ if (utils$1.isArrayBufferView(data)) {
+ return data.buffer;
+ }
+ if (utils$1.isURLSearchParams(data)) {
+ headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);
+ return data.toString();
+ }
+
+ let isFileList;
+
+ if (isObjectPayload) {
+ if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {
+ return toURLEncodedForm(data, this.formSerializer).toString();
+ }
+
+ if ((isFileList = utils$1.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {
+ const _FormData = this.env && this.env.FormData;
+
+ return toFormData$1(
+ isFileList ? {'files[]': data} : data,
+ _FormData && new _FormData(),
+ this.formSerializer
+ );
+ }
+ }
+
+ if (isObjectPayload || hasJSONContentType ) {
+ headers.setContentType('application/json', false);
+ return stringifySafely(data);
+ }
+
+ return data;
+ }],
+
+ transformResponse: [function transformResponse(data) {
+ const transitional = this.transitional || defaults.transitional;
+ const forcedJSONParsing = transitional && transitional.forcedJSONParsing;
+ const JSONRequested = this.responseType === 'json';
+
+ if (utils$1.isResponse(data) || utils$1.isReadableStream(data)) {
+ return data;
+ }
+
+ if (data && utils$1.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {
+ const silentJSONParsing = transitional && transitional.silentJSONParsing;
+ const strictJSONParsing = !silentJSONParsing && JSONRequested;
+
+ try {
+ return JSON.parse(data);
+ } catch (e) {
+ if (strictJSONParsing) {
+ if (e.name === 'SyntaxError') {
+ throw AxiosError$1.from(e, AxiosError$1.ERR_BAD_RESPONSE, this, null, this.response);
+ }
+ throw e;
+ }
+ }
+ }
+
+ return data;
+ }],
+
+ /**
+ * A timeout in milliseconds to abort a request. If set to 0 (default) a
+ * timeout is not created.
+ */
+ timeout: 0,
+
+ xsrfCookieName: 'XSRF-TOKEN',
+ xsrfHeaderName: 'X-XSRF-TOKEN',
+
+ maxContentLength: -1,
+ maxBodyLength: -1,
+
+ env: {
+ FormData: platform.classes.FormData,
+ Blob: platform.classes.Blob
+ },
+
+ validateStatus: function validateStatus(status) {
+ return status >= 200 && status < 300;
+ },
+
+ headers: {
+ common: {
+ 'Accept': 'application/json, text/plain, */*',
+ 'Content-Type': undefined
+ }
+ }
+};
+
+utils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {
+ defaults.headers[method] = {};
+});
+
+const defaults$1 = defaults;
+
+// RawAxiosHeaders whose duplicates are ignored by node
+// c.f. https://nodejs.org/api/http.html#http_message_headers
+const ignoreDuplicateOf = utils$1.toObjectSet([
+ 'age', 'authorization', 'content-length', 'content-type', 'etag',
+ 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',
+ 'last-modified', 'location', 'max-forwards', 'proxy-authorization',
+ 'referer', 'retry-after', 'user-agent'
+]);
+
+/**
+ * Parse headers into an object
+ *
+ * ```
+ * Date: Wed, 27 Aug 2014 08:58:49 GMT
+ * Content-Type: application/json
+ * Connection: keep-alive
+ * Transfer-Encoding: chunked
+ * ```
+ *
+ * @param {String} rawHeaders Headers needing to be parsed
+ *
+ * @returns {Object} Headers parsed into an object
+ */
+const parseHeaders = rawHeaders => {
+ const parsed = {};
+ let key;
+ let val;
+ let i;
+
+ rawHeaders && rawHeaders.split('\n').forEach(function parser(line) {
+ i = line.indexOf(':');
+ key = line.substring(0, i).trim().toLowerCase();
+ val = line.substring(i + 1).trim();
+
+ if (!key || (parsed[key] && ignoreDuplicateOf[key])) {
+ return;
+ }
+
+ if (key === 'set-cookie') {
+ if (parsed[key]) {
+ parsed[key].push(val);
+ } else {
+ parsed[key] = [val];
+ }
+ } else {
+ parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;
+ }
+ });
+
+ return parsed;
+};
+
+const $internals = Symbol('internals');
+
+function normalizeHeader(header) {
+ return header && String(header).trim().toLowerCase();
+}
+
+function normalizeValue(value) {
+ if (value === false || value == null) {
+ return value;
+ }
+
+ return utils$1.isArray(value) ? value.map(normalizeValue) : String(value);
+}
+
+function parseTokens(str) {
+ const tokens = Object.create(null);
+ const tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;
+ let match;
+
+ while ((match = tokensRE.exec(str))) {
+ tokens[match[1]] = match[2];
+ }
+
+ return tokens;
+}
+
+const isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());
+
+function matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {
+ if (utils$1.isFunction(filter)) {
+ return filter.call(this, value, header);
+ }
+
+ if (isHeaderNameFilter) {
+ value = header;
+ }
+
+ if (!utils$1.isString(value)) return;
+
+ if (utils$1.isString(filter)) {
+ return value.indexOf(filter) !== -1;
+ }
+
+ if (utils$1.isRegExp(filter)) {
+ return filter.test(value);
+ }
+}
+
+function formatHeader(header) {
+ return header.trim()
+ .toLowerCase().replace(/([a-z\d])(\w*)/g, (w, char, str) => {
+ return char.toUpperCase() + str;
+ });
+}
+
+function buildAccessors(obj, header) {
+ const accessorName = utils$1.toCamelCase(' ' + header);
+
+ ['get', 'set', 'has'].forEach(methodName => {
+ Object.defineProperty(obj, methodName + accessorName, {
+ value: function(arg1, arg2, arg3) {
+ return this[methodName].call(this, header, arg1, arg2, arg3);
+ },
+ configurable: true
+ });
+ });
+}
+
+class AxiosHeaders$1 {
+ constructor(headers) {
+ headers && this.set(headers);
+ }
+
+ set(header, valueOrRewrite, rewrite) {
+ const self = this;
+
+ function setHeader(_value, _header, _rewrite) {
+ const lHeader = normalizeHeader(_header);
+
+ if (!lHeader) {
+ throw new Error('header name must be a non-empty string');
+ }
+
+ const key = utils$1.findKey(self, lHeader);
+
+ if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {
+ self[key || _header] = normalizeValue(_value);
+ }
+ }
+
+ const setHeaders = (headers, _rewrite) =>
+ utils$1.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));
+
+ if (utils$1.isPlainObject(header) || header instanceof this.constructor) {
+ setHeaders(header, valueOrRewrite);
+ } else if(utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {
+ setHeaders(parseHeaders(header), valueOrRewrite);
+ } else if (utils$1.isHeaders(header)) {
+ for (const [key, value] of header.entries()) {
+ setHeader(value, key, rewrite);
+ }
+ } else {
+ header != null && setHeader(valueOrRewrite, header, rewrite);
+ }
+
+ return this;
+ }
+
+ get(header, parser) {
+ header = normalizeHeader(header);
+
+ if (header) {
+ const key = utils$1.findKey(this, header);
+
+ if (key) {
+ const value = this[key];
+
+ if (!parser) {
+ return value;
+ }
+
+ if (parser === true) {
+ return parseTokens(value);
+ }
+
+ if (utils$1.isFunction(parser)) {
+ return parser.call(this, value, key);
+ }
+
+ if (utils$1.isRegExp(parser)) {
+ return parser.exec(value);
+ }
+
+ throw new TypeError('parser must be boolean|regexp|function');
+ }
+ }
+ }
+
+ has(header, matcher) {
+ header = normalizeHeader(header);
+
+ if (header) {
+ const key = utils$1.findKey(this, header);
+
+ return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));
+ }
+
+ return false;
+ }
+
+ delete(header, matcher) {
+ const self = this;
+ let deleted = false;
+
+ function deleteHeader(_header) {
+ _header = normalizeHeader(_header);
+
+ if (_header) {
+ const key = utils$1.findKey(self, _header);
+
+ if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {
+ delete self[key];
+
+ deleted = true;
+ }
+ }
+ }
+
+ if (utils$1.isArray(header)) {
+ header.forEach(deleteHeader);
+ } else {
+ deleteHeader(header);
+ }
+
+ return deleted;
+ }
+
+ clear(matcher) {
+ const keys = Object.keys(this);
+ let i = keys.length;
+ let deleted = false;
+
+ while (i--) {
+ const key = keys[i];
+ if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {
+ delete this[key];
+ deleted = true;
+ }
+ }
+
+ return deleted;
+ }
+
+ normalize(format) {
+ const self = this;
+ const headers = {};
+
+ utils$1.forEach(this, (value, header) => {
+ const key = utils$1.findKey(headers, header);
+
+ if (key) {
+ self[key] = normalizeValue(value);
+ delete self[header];
+ return;
+ }
+
+ const normalized = format ? formatHeader(header) : String(header).trim();
+
+ if (normalized !== header) {
+ delete self[header];
+ }
+
+ self[normalized] = normalizeValue(value);
+
+ headers[normalized] = true;
+ });
+
+ return this;
+ }
+
+ concat(...targets) {
+ return this.constructor.concat(this, ...targets);
+ }
+
+ toJSON(asStrings) {
+ const obj = Object.create(null);
+
+ utils$1.forEach(this, (value, header) => {
+ value != null && value !== false && (obj[header] = asStrings && utils$1.isArray(value) ? value.join(', ') : value);
+ });
+
+ return obj;
+ }
+
+ [Symbol.iterator]() {
+ return Object.entries(this.toJSON())[Symbol.iterator]();
+ }
+
+ toString() {
+ return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\n');
+ }
+
+ get [Symbol.toStringTag]() {
+ return 'AxiosHeaders';
+ }
+
+ static from(thing) {
+ return thing instanceof this ? thing : new this(thing);
+ }
+
+ static concat(first, ...targets) {
+ const computed = new this(first);
+
+ targets.forEach((target) => computed.set(target));
+
+ return computed;
+ }
+
+ static accessor(header) {
+ const internals = this[$internals] = (this[$internals] = {
+ accessors: {}
+ });
+
+ const accessors = internals.accessors;
+ const prototype = this.prototype;
+
+ function defineAccessor(_header) {
+ const lHeader = normalizeHeader(_header);
+
+ if (!accessors[lHeader]) {
+ buildAccessors(prototype, _header);
+ accessors[lHeader] = true;
+ }
+ }
+
+ utils$1.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);
+
+ return this;
+ }
+}
+
+AxiosHeaders$1.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);
+
+// reserved names hotfix
+utils$1.reduceDescriptors(AxiosHeaders$1.prototype, ({value}, key) => {
+ let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`
+ return {
+ get: () => value,
+ set(headerValue) {
+ this[mapped] = headerValue;
+ }
+ }
+});
+
+utils$1.freezeMethods(AxiosHeaders$1);
+
+const AxiosHeaders$2 = AxiosHeaders$1;
+
+/**
+ * Transform the data for a request or a response
+ *
+ * @param {Array|Function} fns A single function or Array of functions
+ * @param {?Object} response The response object
+ *
+ * @returns {*} The resulting transformed data
+ */
+function transformData(fns, response) {
+ const config = this || defaults$1;
+ const context = response || config;
+ const headers = AxiosHeaders$2.from(context.headers);
+ let data = context.data;
+
+ utils$1.forEach(fns, function transform(fn) {
+ data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);
+ });
+
+ headers.normalize();
+
+ return data;
+}
+
+function isCancel$1(value) {
+ return !!(value && value.__CANCEL__);
+}
+
+/**
+ * A `CanceledError` is an object that is thrown when an operation is canceled.
+ *
+ * @param {string=} message The message.
+ * @param {Object=} config The config.
+ * @param {Object=} request The request.
+ *
+ * @returns {CanceledError} The created error.
+ */
+function CanceledError$1(message, config, request) {
+ // eslint-disable-next-line no-eq-null,eqeqeq
+ AxiosError$1.call(this, message == null ? 'canceled' : message, AxiosError$1.ERR_CANCELED, config, request);
+ this.name = 'CanceledError';
+}
+
+utils$1.inherits(CanceledError$1, AxiosError$1, {
+ __CANCEL__: true
+});
+
+/**
+ * Resolve or reject a Promise based on response status.
+ *
+ * @param {Function} resolve A function that resolves the promise.
+ * @param {Function} reject A function that rejects the promise.
+ * @param {object} response The response.
+ *
+ * @returns {object} The response.
+ */
+function settle(resolve, reject, response) {
+ const validateStatus = response.config.validateStatus;
+ if (!response.status || !validateStatus || validateStatus(response.status)) {
+ resolve(response);
+ } else {
+ reject(new AxiosError$1(
+ 'Request failed with status code ' + response.status,
+ [AxiosError$1.ERR_BAD_REQUEST, AxiosError$1.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],
+ response.config,
+ response.request,
+ response
+ ));
+ }
+}
+
+function parseProtocol(url) {
+ const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url);
+ return match && match[1] || '';
+}
+
+/**
+ * Calculate data maxRate
+ * @param {Number} [samplesCount= 10]
+ * @param {Number} [min= 1000]
+ * @returns {Function}
+ */
+function speedometer(samplesCount, min) {
+ samplesCount = samplesCount || 10;
+ const bytes = new Array(samplesCount);
+ const timestamps = new Array(samplesCount);
+ let head = 0;
+ let tail = 0;
+ let firstSampleTS;
+
+ min = min !== undefined ? min : 1000;
+
+ return function push(chunkLength) {
+ const now = Date.now();
+
+ const startedAt = timestamps[tail];
+
+ if (!firstSampleTS) {
+ firstSampleTS = now;
+ }
+
+ bytes[head] = chunkLength;
+ timestamps[head] = now;
+
+ let i = tail;
+ let bytesCount = 0;
+
+ while (i !== head) {
+ bytesCount += bytes[i++];
+ i = i % samplesCount;
+ }
+
+ head = (head + 1) % samplesCount;
+
+ if (head === tail) {
+ tail = (tail + 1) % samplesCount;
+ }
+
+ if (now - firstSampleTS < min) {
+ return;
+ }
+
+ const passed = startedAt && now - startedAt;
+
+ return passed ? Math.round(bytesCount * 1000 / passed) : undefined;
+ };
+}
+
+/**
+ * Throttle decorator
+ * @param {Function} fn
+ * @param {Number} freq
+ * @return {Function}
+ */
+function throttle(fn, freq) {
+ let timestamp = 0;
+ const threshold = 1000 / freq;
+ let timer = null;
+ return function throttled() {
+ const force = this === true;
+
+ const now = Date.now();
+ if (force || now - timestamp > threshold) {
+ if (timer) {
+ clearTimeout(timer);
+ timer = null;
+ }
+ timestamp = now;
+ return fn.apply(null, arguments);
+ }
+ if (!timer) {
+ timer = setTimeout(() => {
+ timer = null;
+ timestamp = Date.now();
+ return fn.apply(null, arguments);
+ }, threshold - (now - timestamp));
+ }
+ };
+}
+
+const progressEventReducer = (listener, isDownloadStream, freq = 3) => {
+ let bytesNotified = 0;
+ const _speedometer = speedometer(50, 250);
+
+ return throttle(e => {
+ const loaded = e.loaded;
+ const total = e.lengthComputable ? e.total : undefined;
+ const progressBytes = loaded - bytesNotified;
+ const rate = _speedometer(progressBytes);
+ const inRange = loaded <= total;
+
+ bytesNotified = loaded;
+
+ const data = {
+ loaded,
+ total,
+ progress: total ? (loaded / total) : undefined,
+ bytes: progressBytes,
+ rate: rate ? rate : undefined,
+ estimated: rate && total && inRange ? (total - loaded) / rate : undefined,
+ event: e,
+ lengthComputable: total != null
+ };
+
+ data[isDownloadStream ? 'download' : 'upload'] = true;
+
+ listener(data);
+ }, freq);
+};
+
+const isURLSameOrigin = platform.hasStandardBrowserEnv ?
+
+// Standard browser envs have full support of the APIs needed to test
+// whether the request URL is of the same origin as current location.
+ (function standardBrowserEnv() {
+ const msie = /(msie|trident)/i.test(navigator.userAgent);
+ const urlParsingNode = document.createElement('a');
+ let originURL;
+
+ /**
+ * Parse a URL to discover its components
+ *
+ * @param {String} url The URL to be parsed
+ * @returns {Object}
+ */
+ function resolveURL(url) {
+ let href = url;
+
+ if (msie) {
+ // IE needs attribute set twice to normalize properties
+ urlParsingNode.setAttribute('href', href);
+ href = urlParsingNode.href;
+ }
+
+ urlParsingNode.setAttribute('href', href);
+
+ // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils
+ return {
+ href: urlParsingNode.href,
+ protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',
+ host: urlParsingNode.host,
+ search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '',
+ hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',
+ hostname: urlParsingNode.hostname,
+ port: urlParsingNode.port,
+ pathname: (urlParsingNode.pathname.charAt(0) === '/') ?
+ urlParsingNode.pathname :
+ '/' + urlParsingNode.pathname
+ };
+ }
+
+ originURL = resolveURL(window.location.href);
+
+ /**
+ * Determine if a URL shares the same origin as the current location
+ *
+ * @param {String} requestURL The URL to test
+ * @returns {boolean} True if URL shares the same origin, otherwise false
+ */
+ return function isURLSameOrigin(requestURL) {
+ const parsed = (utils$1.isString(requestURL)) ? resolveURL(requestURL) : requestURL;
+ return (parsed.protocol === originURL.protocol &&
+ parsed.host === originURL.host);
+ };
+ })() :
+
+ // Non standard browser envs (web workers, react-native) lack needed support.
+ (function nonStandardBrowserEnv() {
+ return function isURLSameOrigin() {
+ return true;
+ };
+ })();
+
+const cookies = platform.hasStandardBrowserEnv ?
+
+ // Standard browser envs support document.cookie
+ {
+ write(name, value, expires, path, domain, secure) {
+ const cookie = [name + '=' + encodeURIComponent(value)];
+
+ utils$1.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());
+
+ utils$1.isString(path) && cookie.push('path=' + path);
+
+ utils$1.isString(domain) && cookie.push('domain=' + domain);
+
+ secure === true && cookie.push('secure');
+
+ document.cookie = cookie.join('; ');
+ },
+
+ read(name) {
+ const match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)'));
+ return (match ? decodeURIComponent(match[3]) : null);
+ },
+
+ remove(name) {
+ this.write(name, '', Date.now() - 86400000);
+ }
+ }
+
+ :
+
+ // Non-standard browser env (web workers, react-native) lack needed support.
+ {
+ write() {},
+ read() {
+ return null;
+ },
+ remove() {}
+ };
+
+/**
+ * Determines whether the specified URL is absolute
+ *
+ * @param {string} url The URL to test
+ *
+ * @returns {boolean} True if the specified URL is absolute, otherwise false
+ */
+function isAbsoluteURL(url) {
+ // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL).
+ // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed
+ // by any combination of letters, digits, plus, period, or hyphen.
+ return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url);
+}
+
+/**
+ * Creates a new URL by combining the specified URLs
+ *
+ * @param {string} baseURL The base URL
+ * @param {string} relativeURL The relative URL
+ *
+ * @returns {string} The combined URL
+ */
+function combineURLs(baseURL, relativeURL) {
+ return relativeURL
+ ? baseURL.replace(/\/?\/$/, '') + '/' + relativeURL.replace(/^\/+/, '')
+ : baseURL;
+}
+
+/**
+ * Creates a new URL by combining the baseURL with the requestedURL,
+ * only when the requestedURL is not already an absolute URL.
+ * If the requestURL is absolute, this function returns the requestedURL untouched.
+ *
+ * @param {string} baseURL The base URL
+ * @param {string} requestedURL Absolute or relative URL to combine
+ *
+ * @returns {string} The combined full path
+ */
+function buildFullPath(baseURL, requestedURL) {
+ if (baseURL && !isAbsoluteURL(requestedURL)) {
+ return combineURLs(baseURL, requestedURL);
+ }
+ return requestedURL;
+}
+
+const headersToObject = (thing) => thing instanceof AxiosHeaders$2 ? { ...thing } : thing;
+
+/**
+ * Config-specific merge-function which creates a new config-object
+ * by merging two configuration objects together.
+ *
+ * @param {Object} config1
+ * @param {Object} config2
+ *
+ * @returns {Object} New object resulting from merging config2 to config1
+ */
+function mergeConfig$1(config1, config2) {
+ // eslint-disable-next-line no-param-reassign
+ config2 = config2 || {};
+ const config = {};
+
+ function getMergedValue(target, source, caseless) {
+ if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) {
+ return utils$1.merge.call({caseless}, target, source);
+ } else if (utils$1.isPlainObject(source)) {
+ return utils$1.merge({}, source);
+ } else if (utils$1.isArray(source)) {
+ return source.slice();
+ }
+ return source;
+ }
+
+ // eslint-disable-next-line consistent-return
+ function mergeDeepProperties(a, b, caseless) {
+ if (!utils$1.isUndefined(b)) {
+ return getMergedValue(a, b, caseless);
+ } else if (!utils$1.isUndefined(a)) {
+ return getMergedValue(undefined, a, caseless);
+ }
+ }
+
+ // eslint-disable-next-line consistent-return
+ function valueFromConfig2(a, b) {
+ if (!utils$1.isUndefined(b)) {
+ return getMergedValue(undefined, b);
+ }
+ }
+
+ // eslint-disable-next-line consistent-return
+ function defaultToConfig2(a, b) {
+ if (!utils$1.isUndefined(b)) {
+ return getMergedValue(undefined, b);
+ } else if (!utils$1.isUndefined(a)) {
+ return getMergedValue(undefined, a);
+ }
+ }
+
+ // eslint-disable-next-line consistent-return
+ function mergeDirectKeys(a, b, prop) {
+ if (prop in config2) {
+ return getMergedValue(a, b);
+ } else if (prop in config1) {
+ return getMergedValue(undefined, a);
+ }
+ }
+
+ const mergeMap = {
+ url: valueFromConfig2,
+ method: valueFromConfig2,
+ data: valueFromConfig2,
+ baseURL: defaultToConfig2,
+ transformRequest: defaultToConfig2,
+ transformResponse: defaultToConfig2,
+ paramsSerializer: defaultToConfig2,
+ timeout: defaultToConfig2,
+ timeoutMessage: defaultToConfig2,
+ withCredentials: defaultToConfig2,
+ withXSRFToken: defaultToConfig2,
+ adapter: defaultToConfig2,
+ responseType: defaultToConfig2,
+ xsrfCookieName: defaultToConfig2,
+ xsrfHeaderName: defaultToConfig2,
+ onUploadProgress: defaultToConfig2,
+ onDownloadProgress: defaultToConfig2,
+ decompress: defaultToConfig2,
+ maxContentLength: defaultToConfig2,
+ maxBodyLength: defaultToConfig2,
+ beforeRedirect: defaultToConfig2,
+ transport: defaultToConfig2,
+ httpAgent: defaultToConfig2,
+ httpsAgent: defaultToConfig2,
+ cancelToken: defaultToConfig2,
+ socketPath: defaultToConfig2,
+ responseEncoding: defaultToConfig2,
+ validateStatus: mergeDirectKeys,
+ headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)
+ };
+
+ utils$1.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {
+ const merge = mergeMap[prop] || mergeDeepProperties;
+ const configValue = merge(config1[prop], config2[prop], prop);
+ (utils$1.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);
+ });
+
+ return config;
+}
+
+const resolveConfig = (config) => {
+ const newConfig = mergeConfig$1({}, config);
+
+ let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;
+
+ newConfig.headers = headers = AxiosHeaders$2.from(headers);
+
+ newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url), config.params, config.paramsSerializer);
+
+ // HTTP basic authentication
+ if (auth) {
+ headers.set('Authorization', 'Basic ' +
+ btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))
+ );
+ }
+
+ let contentType;
+
+ if (utils$1.isFormData(data)) {
+ if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {
+ headers.setContentType(undefined); // Let the browser set it
+ } else if ((contentType = headers.getContentType()) !== false) {
+ // fix semicolon duplication issue for ReactNative FormData implementation
+ const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];
+ headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));
+ }
+ }
+
+ // Add xsrf header
+ // This is only done if running in a standard browser environment.
+ // Specifically not if we're in a web worker, or react-native.
+
+ if (platform.hasStandardBrowserEnv) {
+ withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));
+
+ if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {
+ // Add xsrf header
+ const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);
+
+ if (xsrfValue) {
+ headers.set(xsrfHeaderName, xsrfValue);
+ }
+ }
+ }
+
+ return newConfig;
+};
+
+const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';
+
+const xhrAdapter = isXHRAdapterSupported && function (config) {
+ return new Promise(function dispatchXhrRequest(resolve, reject) {
+ const _config = resolveConfig(config);
+ let requestData = _config.data;
+ const requestHeaders = AxiosHeaders$2.from(_config.headers).normalize();
+ let {responseType} = _config;
+ let onCanceled;
+ function done() {
+ if (_config.cancelToken) {
+ _config.cancelToken.unsubscribe(onCanceled);
+ }
+
+ if (_config.signal) {
+ _config.signal.removeEventListener('abort', onCanceled);
+ }
+ }
+
+ let request = new XMLHttpRequest();
+
+ request.open(_config.method.toUpperCase(), _config.url, true);
+
+ // Set the request timeout in MS
+ request.timeout = _config.timeout;
+
+ function onloadend() {
+ if (!request) {
+ return;
+ }
+ // Prepare the response
+ const responseHeaders = AxiosHeaders$2.from(
+ 'getAllResponseHeaders' in request && request.getAllResponseHeaders()
+ );
+ const responseData = !responseType || responseType === 'text' || responseType === 'json' ?
+ request.responseText : request.response;
+ const response = {
+ data: responseData,
+ status: request.status,
+ statusText: request.statusText,
+ headers: responseHeaders,
+ config,
+ request
+ };
+
+ settle(function _resolve(value) {
+ resolve(value);
+ done();
+ }, function _reject(err) {
+ reject(err);
+ done();
+ }, response);
+
+ // Clean up request
+ request = null;
+ }
+
+ if ('onloadend' in request) {
+ // Use onloadend if available
+ request.onloadend = onloadend;
+ } else {
+ // Listen for ready state to emulate onloadend
+ request.onreadystatechange = function handleLoad() {
+ if (!request || request.readyState !== 4) {
+ return;
+ }
+
+ // The request errored out and we didn't get a response, this will be
+ // handled by onerror instead
+ // With one exception: request that using file: protocol, most browsers
+ // will return status as 0 even though it's a successful request
+ if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {
+ return;
+ }
+ // readystate handler is calling before onerror or ontimeout handlers,
+ // so we should call onloadend on the next 'tick'
+ setTimeout(onloadend);
+ };
+ }
+
+ // Handle browser request cancellation (as opposed to a manual cancellation)
+ request.onabort = function handleAbort() {
+ if (!request) {
+ return;
+ }
+
+ reject(new AxiosError$1('Request aborted', AxiosError$1.ECONNABORTED, _config, request));
+
+ // Clean up request
+ request = null;
+ };
+
+ // Handle low level network errors
+ request.onerror = function handleError() {
+ // Real errors are hidden from us by the browser
+ // onerror should only fire if it's a network error
+ reject(new AxiosError$1('Network Error', AxiosError$1.ERR_NETWORK, _config, request));
+
+ // Clean up request
+ request = null;
+ };
+
+ // Handle timeout
+ request.ontimeout = function handleTimeout() {
+ let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';
+ const transitional = _config.transitional || transitionalDefaults;
+ if (_config.timeoutErrorMessage) {
+ timeoutErrorMessage = _config.timeoutErrorMessage;
+ }
+ reject(new AxiosError$1(
+ timeoutErrorMessage,
+ transitional.clarifyTimeoutError ? AxiosError$1.ETIMEDOUT : AxiosError$1.ECONNABORTED,
+ _config,
+ request));
+
+ // Clean up request
+ request = null;
+ };
+
+ // Remove Content-Type if data is undefined
+ requestData === undefined && requestHeaders.setContentType(null);
+
+ // Add headers to the request
+ if ('setRequestHeader' in request) {
+ utils$1.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {
+ request.setRequestHeader(key, val);
+ });
+ }
+
+ // Add withCredentials to request if needed
+ if (!utils$1.isUndefined(_config.withCredentials)) {
+ request.withCredentials = !!_config.withCredentials;
+ }
+
+ // Add responseType to request if needed
+ if (responseType && responseType !== 'json') {
+ request.responseType = _config.responseType;
+ }
+
+ // Handle progress if needed
+ if (typeof _config.onDownloadProgress === 'function') {
+ request.addEventListener('progress', progressEventReducer(_config.onDownloadProgress, true));
+ }
+
+ // Not all browsers support upload events
+ if (typeof _config.onUploadProgress === 'function' && request.upload) {
+ request.upload.addEventListener('progress', progressEventReducer(_config.onUploadProgress));
+ }
+
+ if (_config.cancelToken || _config.signal) {
+ // Handle cancellation
+ // eslint-disable-next-line func-names
+ onCanceled = cancel => {
+ if (!request) {
+ return;
+ }
+ reject(!cancel || cancel.type ? new CanceledError$1(null, config, request) : cancel);
+ request.abort();
+ request = null;
+ };
+
+ _config.cancelToken && _config.cancelToken.subscribe(onCanceled);
+ if (_config.signal) {
+ _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);
+ }
+ }
+
+ const protocol = parseProtocol(_config.url);
+
+ if (protocol && platform.protocols.indexOf(protocol) === -1) {
+ reject(new AxiosError$1('Unsupported protocol ' + protocol + ':', AxiosError$1.ERR_BAD_REQUEST, config));
+ return;
+ }
+
+
+ // Send the request
+ request.send(requestData || null);
+ });
+};
+
+const composeSignals = (signals, timeout) => {
+ let controller = new AbortController();
+
+ let aborted;
+
+ const onabort = function (cancel) {
+ if (!aborted) {
+ aborted = true;
+ unsubscribe();
+ const err = cancel instanceof Error ? cancel : this.reason;
+ controller.abort(err instanceof AxiosError$1 ? err : new CanceledError$1(err instanceof Error ? err.message : err));
+ }
+ };
+
+ let timer = timeout && setTimeout(() => {
+ onabort(new AxiosError$1(`timeout ${timeout} of ms exceeded`, AxiosError$1.ETIMEDOUT));
+ }, timeout);
+
+ const unsubscribe = () => {
+ if (signals) {
+ timer && clearTimeout(timer);
+ timer = null;
+ signals.forEach(signal => {
+ signal &&
+ (signal.removeEventListener ? signal.removeEventListener('abort', onabort) : signal.unsubscribe(onabort));
+ });
+ signals = null;
+ }
+ };
+
+ signals.forEach((signal) => signal && signal.addEventListener && signal.addEventListener('abort', onabort));
+
+ const {signal} = controller;
+
+ signal.unsubscribe = unsubscribe;
+
+ return [signal, () => {
+ timer && clearTimeout(timer);
+ timer = null;
+ }];
+};
+
+const composeSignals$1 = composeSignals;
+
+const streamChunk = function* (chunk, chunkSize) {
+ let len = chunk.byteLength;
+
+ if (!chunkSize || len < chunkSize) {
+ yield chunk;
+ return;
+ }
+
+ let pos = 0;
+ let end;
+
+ while (pos < len) {
+ end = pos + chunkSize;
+ yield chunk.slice(pos, end);
+ pos = end;
+ }
+};
+
+const readBytes = async function* (iterable, chunkSize, encode) {
+ for await (const chunk of iterable) {
+ yield* streamChunk(ArrayBuffer.isView(chunk) ? chunk : (await encode(String(chunk))), chunkSize);
+ }
+};
+
+const trackStream = (stream, chunkSize, onProgress, onFinish, encode) => {
+ const iterator = readBytes(stream, chunkSize, encode);
+
+ let bytes = 0;
+
+ return new ReadableStream({
+ type: 'bytes',
+
+ async pull(controller) {
+ const {done, value} = await iterator.next();
+
+ if (done) {
+ controller.close();
+ onFinish();
+ return;
+ }
+
+ let len = value.byteLength;
+ onProgress && onProgress(bytes += len);
+ controller.enqueue(new Uint8Array(value));
+ },
+ cancel(reason) {
+ onFinish(reason);
+ return iterator.return();
+ }
+ }, {
+ highWaterMark: 2
+ })
+};
+
+const fetchProgressDecorator = (total, fn) => {
+ const lengthComputable = total != null;
+ return (loaded) => setTimeout(() => fn({
+ lengthComputable,
+ total,
+ loaded
+ }));
+};
+
+const isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';
+const isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';
+
+// used only inside the fetch adapter
+const encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?
+ ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :
+ async (str) => new Uint8Array(await new Response(str).arrayBuffer())
+);
+
+const supportsRequestStream = isReadableStreamSupported && (() => {
+ let duplexAccessed = false;
+
+ const hasContentType = new Request(platform.origin, {
+ body: new ReadableStream(),
+ method: 'POST',
+ get duplex() {
+ duplexAccessed = true;
+ return 'half';
+ },
+ }).headers.has('Content-Type');
+
+ return duplexAccessed && !hasContentType;
+})();
+
+const DEFAULT_CHUNK_SIZE = 64 * 1024;
+
+const supportsResponseStream = isReadableStreamSupported && !!(()=> {
+ try {
+ return utils$1.isReadableStream(new Response('').body);
+ } catch(err) {
+ // return undefined
+ }
+})();
+
+const resolvers = {
+ stream: supportsResponseStream && ((res) => res.body)
+};
+
+isFetchSupported && (((res) => {
+ ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {
+ !resolvers[type] && (resolvers[type] = utils$1.isFunction(res[type]) ? (res) => res[type]() :
+ (_, config) => {
+ throw new AxiosError$1(`Response type '${type}' is not supported`, AxiosError$1.ERR_NOT_SUPPORT, config);
+ });
+ });
+})(new Response));
+
+const getBodyLength = async (body) => {
+ if (body == null) {
+ return 0;
+ }
+
+ if(utils$1.isBlob(body)) {
+ return body.size;
+ }
+
+ if(utils$1.isSpecCompliantForm(body)) {
+ return (await new Request(body).arrayBuffer()).byteLength;
+ }
+
+ if(utils$1.isArrayBufferView(body)) {
+ return body.byteLength;
+ }
+
+ if(utils$1.isURLSearchParams(body)) {
+ body = body + '';
+ }
+
+ if(utils$1.isString(body)) {
+ return (await encodeText(body)).byteLength;
+ }
+};
+
+const resolveBodyLength = async (headers, body) => {
+ const length = utils$1.toFiniteNumber(headers.getContentLength());
+
+ return length == null ? getBodyLength(body) : length;
+};
+
+const fetchAdapter = isFetchSupported && (async (config) => {
+ let {
+ url,
+ method,
+ data,
+ signal,
+ cancelToken,
+ timeout,
+ onDownloadProgress,
+ onUploadProgress,
+ responseType,
+ headers,
+ withCredentials = 'same-origin',
+ fetchOptions
+ } = resolveConfig(config);
+
+ responseType = responseType ? (responseType + '').toLowerCase() : 'text';
+
+ let [composedSignal, stopTimeout] = (signal || cancelToken || timeout) ?
+ composeSignals$1([signal, cancelToken], timeout) : [];
+
+ let finished, request;
+
+ const onFinish = () => {
+ !finished && setTimeout(() => {
+ composedSignal && composedSignal.unsubscribe();
+ });
+
+ finished = true;
+ };
+
+ let requestContentLength;
+
+ try {
+ if (
+ onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&
+ (requestContentLength = await resolveBodyLength(headers, data)) !== 0
+ ) {
+ let _request = new Request(url, {
+ method: 'POST',
+ body: data,
+ duplex: "half"
+ });
+
+ let contentTypeHeader;
+
+ if (utils$1.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {
+ headers.setContentType(contentTypeHeader);
+ }
+
+ if (_request.body) {
+ data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, fetchProgressDecorator(
+ requestContentLength,
+ progressEventReducer(onUploadProgress)
+ ), null, encodeText);
+ }
+ }
+
+ if (!utils$1.isString(withCredentials)) {
+ withCredentials = withCredentials ? 'cors' : 'omit';
+ }
+
+ request = new Request(url, {
+ ...fetchOptions,
+ signal: composedSignal,
+ method: method.toUpperCase(),
+ headers: headers.normalize().toJSON(),
+ body: data,
+ duplex: "half",
+ withCredentials
+ });
+
+ let response = await fetch(request);
+
+ const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');
+
+ if (supportsResponseStream && (onDownloadProgress || isStreamResponse)) {
+ const options = {};
+
+ ['status', 'statusText', 'headers'].forEach(prop => {
+ options[prop] = response[prop];
+ });
+
+ const responseContentLength = utils$1.toFiniteNumber(response.headers.get('content-length'));
+
+ response = new Response(
+ trackStream(response.body, DEFAULT_CHUNK_SIZE, onDownloadProgress && fetchProgressDecorator(
+ responseContentLength,
+ progressEventReducer(onDownloadProgress, true)
+ ), isStreamResponse && onFinish, encodeText),
+ options
+ );
+ }
+
+ responseType = responseType || 'text';
+
+ let responseData = await resolvers[utils$1.findKey(resolvers, responseType) || 'text'](response, config);
+
+ !isStreamResponse && onFinish();
+
+ stopTimeout && stopTimeout();
+
+ return await new Promise((resolve, reject) => {
+ settle(resolve, reject, {
+ data: responseData,
+ headers: AxiosHeaders$2.from(response.headers),
+ status: response.status,
+ statusText: response.statusText,
+ config,
+ request
+ });
+ })
+ } catch (err) {
+ onFinish();
+
+ if (err && err.name === 'TypeError' && /fetch/i.test(err.message)) {
+ throw Object.assign(
+ new AxiosError$1('Network Error', AxiosError$1.ERR_NETWORK, config, request),
+ {
+ cause: err.cause || err
+ }
+ )
+ }
+
+ throw AxiosError$1.from(err, err && err.code, config, request);
+ }
+});
+
+const knownAdapters = {
+ http: httpAdapter,
+ xhr: xhrAdapter,
+ fetch: fetchAdapter
+};
+
+utils$1.forEach(knownAdapters, (fn, value) => {
+ if (fn) {
+ try {
+ Object.defineProperty(fn, 'name', {value});
+ } catch (e) {
+ // eslint-disable-next-line no-empty
+ }
+ Object.defineProperty(fn, 'adapterName', {value});
+ }
+});
+
+const renderReason = (reason) => `- ${reason}`;
+
+const isResolvedHandle = (adapter) => utils$1.isFunction(adapter) || adapter === null || adapter === false;
+
+const adapters = {
+ getAdapter: (adapters) => {
+ adapters = utils$1.isArray(adapters) ? adapters : [adapters];
+
+ const {length} = adapters;
+ let nameOrAdapter;
+ let adapter;
+
+ const rejectedReasons = {};
+
+ for (let i = 0; i < length; i++) {
+ nameOrAdapter = adapters[i];
+ let id;
+
+ adapter = nameOrAdapter;
+
+ if (!isResolvedHandle(nameOrAdapter)) {
+ adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];
+
+ if (adapter === undefined) {
+ throw new AxiosError$1(`Unknown adapter '${id}'`);
+ }
+ }
+
+ if (adapter) {
+ break;
+ }
+
+ rejectedReasons[id || '#' + i] = adapter;
+ }
+
+ if (!adapter) {
+
+ const reasons = Object.entries(rejectedReasons)
+ .map(([id, state]) => `adapter ${id} ` +
+ (state === false ? 'is not supported by the environment' : 'is not available in the build')
+ );
+
+ let s = length ?
+ (reasons.length > 1 ? 'since :\n' + reasons.map(renderReason).join('\n') : ' ' + renderReason(reasons[0])) :
+ 'as no adapter specified';
+
+ throw new AxiosError$1(
+ `There is no suitable adapter to dispatch the request ` + s,
+ 'ERR_NOT_SUPPORT'
+ );
+ }
+
+ return adapter;
+ },
+ adapters: knownAdapters
+};
+
+/**
+ * Throws a `CanceledError` if cancellation has been requested.
+ *
+ * @param {Object} config The config that is to be used for the request
+ *
+ * @returns {void}
+ */
+function throwIfCancellationRequested(config) {
+ if (config.cancelToken) {
+ config.cancelToken.throwIfRequested();
+ }
+
+ if (config.signal && config.signal.aborted) {
+ throw new CanceledError$1(null, config);
+ }
+}
+
+/**
+ * Dispatch a request to the server using the configured adapter.
+ *
+ * @param {object} config The config that is to be used for the request
+ *
+ * @returns {Promise} The Promise to be fulfilled
+ */
+function dispatchRequest(config) {
+ throwIfCancellationRequested(config);
+
+ config.headers = AxiosHeaders$2.from(config.headers);
+
+ // Transform request data
+ config.data = transformData.call(
+ config,
+ config.transformRequest
+ );
+
+ if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {
+ config.headers.setContentType('application/x-www-form-urlencoded', false);
+ }
+
+ const adapter = adapters.getAdapter(config.adapter || defaults$1.adapter);
+
+ return adapter(config).then(function onAdapterResolution(response) {
+ throwIfCancellationRequested(config);
+
+ // Transform response data
+ response.data = transformData.call(
+ config,
+ config.transformResponse,
+ response
+ );
+
+ response.headers = AxiosHeaders$2.from(response.headers);
+
+ return response;
+ }, function onAdapterRejection(reason) {
+ if (!isCancel$1(reason)) {
+ throwIfCancellationRequested(config);
+
+ // Transform response data
+ if (reason && reason.response) {
+ reason.response.data = transformData.call(
+ config,
+ config.transformResponse,
+ reason.response
+ );
+ reason.response.headers = AxiosHeaders$2.from(reason.response.headers);
+ }
+ }
+
+ return Promise.reject(reason);
+ });
+}
+
+const VERSION$1 = "1.7.2";
+
+const validators$1 = {};
+
+// eslint-disable-next-line func-names
+['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {
+ validators$1[type] = function validator(thing) {
+ return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;
+ };
+});
+
+const deprecatedWarnings = {};
+
+/**
+ * Transitional option validator
+ *
+ * @param {function|boolean?} validator - set to false if the transitional option has been removed
+ * @param {string?} version - deprecated version / removed since version
+ * @param {string?} message - some message with additional info
+ *
+ * @returns {function}
+ */
+validators$1.transitional = function transitional(validator, version, message) {
+ function formatMessage(opt, desc) {
+ return '[Axios v' + VERSION$1 + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : '');
+ }
+
+ // eslint-disable-next-line func-names
+ return (value, opt, opts) => {
+ if (validator === false) {
+ throw new AxiosError$1(
+ formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),
+ AxiosError$1.ERR_DEPRECATED
+ );
+ }
+
+ if (version && !deprecatedWarnings[opt]) {
+ deprecatedWarnings[opt] = true;
+ // eslint-disable-next-line no-console
+ console.warn(
+ formatMessage(
+ opt,
+ ' has been deprecated since v' + version + ' and will be removed in the near future'
+ )
+ );
+ }
+
+ return validator ? validator(value, opt, opts) : true;
+ };
+};
+
+/**
+ * Assert object's properties type
+ *
+ * @param {object} options
+ * @param {object} schema
+ * @param {boolean?} allowUnknown
+ *
+ * @returns {object}
+ */
+
+function assertOptions(options, schema, allowUnknown) {
+ if (typeof options !== 'object') {
+ throw new AxiosError$1('options must be an object', AxiosError$1.ERR_BAD_OPTION_VALUE);
+ }
+ const keys = Object.keys(options);
+ let i = keys.length;
+ while (i-- > 0) {
+ const opt = keys[i];
+ const validator = schema[opt];
+ if (validator) {
+ const value = options[opt];
+ const result = value === undefined || validator(value, opt, options);
+ if (result !== true) {
+ throw new AxiosError$1('option ' + opt + ' must be ' + result, AxiosError$1.ERR_BAD_OPTION_VALUE);
+ }
+ continue;
+ }
+ if (allowUnknown !== true) {
+ throw new AxiosError$1('Unknown option ' + opt, AxiosError$1.ERR_BAD_OPTION);
+ }
+ }
+}
+
+const validator = {
+ assertOptions,
+ validators: validators$1
+};
+
+const validators = validator.validators;
+
+/**
+ * Create a new instance of Axios
+ *
+ * @param {Object} instanceConfig The default config for the instance
+ *
+ * @return {Axios} A new instance of Axios
+ */
+class Axios$1 {
+ constructor(instanceConfig) {
+ this.defaults = instanceConfig;
+ this.interceptors = {
+ request: new InterceptorManager$1(),
+ response: new InterceptorManager$1()
+ };
+ }
+
+ /**
+ * Dispatch a request
+ *
+ * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)
+ * @param {?Object} config
+ *
+ * @returns {Promise} The Promise to be fulfilled
+ */
+ async request(configOrUrl, config) {
+ try {
+ return await this._request(configOrUrl, config);
+ } catch (err) {
+ if (err instanceof Error) {
+ let dummy;
+
+ Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());
+
+ // slice off the Error: ... line
+ const stack = dummy.stack ? dummy.stack.replace(/^.+\n/, '') : '';
+ try {
+ if (!err.stack) {
+ err.stack = stack;
+ // match without the 2 top stack lines
+ } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\n.+\n/, ''))) {
+ err.stack += '\n' + stack;
+ }
+ } catch (e) {
+ // ignore the case where "stack" is an un-writable property
+ }
+ }
+
+ throw err;
+ }
+ }
+
+ _request(configOrUrl, config) {
+ /*eslint no-param-reassign:0*/
+ // Allow for axios('example/url'[, config]) a la fetch API
+ if (typeof configOrUrl === 'string') {
+ config = config || {};
+ config.url = configOrUrl;
+ } else {
+ config = configOrUrl || {};
+ }
+
+ config = mergeConfig$1(this.defaults, config);
+
+ const {transitional, paramsSerializer, headers} = config;
+
+ if (transitional !== undefined) {
+ validator.assertOptions(transitional, {
+ silentJSONParsing: validators.transitional(validators.boolean),
+ forcedJSONParsing: validators.transitional(validators.boolean),
+ clarifyTimeoutError: validators.transitional(validators.boolean)
+ }, false);
+ }
+
+ if (paramsSerializer != null) {
+ if (utils$1.isFunction(paramsSerializer)) {
+ config.paramsSerializer = {
+ serialize: paramsSerializer
+ };
+ } else {
+ validator.assertOptions(paramsSerializer, {
+ encode: validators.function,
+ serialize: validators.function
+ }, true);
+ }
+ }
+
+ // Set config.method
+ config.method = (config.method || this.defaults.method || 'get').toLowerCase();
+
+ // Flatten headers
+ let contextHeaders = headers && utils$1.merge(
+ headers.common,
+ headers[config.method]
+ );
+
+ headers && utils$1.forEach(
+ ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],
+ (method) => {
+ delete headers[method];
+ }
+ );
+
+ config.headers = AxiosHeaders$2.concat(contextHeaders, headers);
+
+ // filter out skipped interceptors
+ const requestInterceptorChain = [];
+ let synchronousRequestInterceptors = true;
+ this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {
+ if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {
+ return;
+ }
+
+ synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;
+
+ requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);
+ });
+
+ const responseInterceptorChain = [];
+ this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {
+ responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);
+ });
+
+ let promise;
+ let i = 0;
+ let len;
+
+ if (!synchronousRequestInterceptors) {
+ const chain = [dispatchRequest.bind(this), undefined];
+ chain.unshift.apply(chain, requestInterceptorChain);
+ chain.push.apply(chain, responseInterceptorChain);
+ len = chain.length;
+
+ promise = Promise.resolve(config);
+
+ while (i < len) {
+ promise = promise.then(chain[i++], chain[i++]);
+ }
+
+ return promise;
+ }
+
+ len = requestInterceptorChain.length;
+
+ let newConfig = config;
+
+ i = 0;
+
+ while (i < len) {
+ const onFulfilled = requestInterceptorChain[i++];
+ const onRejected = requestInterceptorChain[i++];
+ try {
+ newConfig = onFulfilled(newConfig);
+ } catch (error) {
+ onRejected.call(this, error);
+ break;
+ }
+ }
+
+ try {
+ promise = dispatchRequest.call(this, newConfig);
+ } catch (error) {
+ return Promise.reject(error);
+ }
+
+ i = 0;
+ len = responseInterceptorChain.length;
+
+ while (i < len) {
+ promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);
+ }
+
+ return promise;
+ }
+
+ getUri(config) {
+ config = mergeConfig$1(this.defaults, config);
+ const fullPath = buildFullPath(config.baseURL, config.url);
+ return buildURL(fullPath, config.params, config.paramsSerializer);
+ }
+}
+
+// Provide aliases for supported request methods
+utils$1.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {
+ /*eslint func-names:0*/
+ Axios$1.prototype[method] = function(url, config) {
+ return this.request(mergeConfig$1(config || {}, {
+ method,
+ url,
+ data: (config || {}).data
+ }));
+ };
+});
+
+utils$1.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {
+ /*eslint func-names:0*/
+
+ function generateHTTPMethod(isForm) {
+ return function httpMethod(url, data, config) {
+ return this.request(mergeConfig$1(config || {}, {
+ method,
+ headers: isForm ? {
+ 'Content-Type': 'multipart/form-data'
+ } : {},
+ url,
+ data
+ }));
+ };
+ }
+
+ Axios$1.prototype[method] = generateHTTPMethod();
+
+ Axios$1.prototype[method + 'Form'] = generateHTTPMethod(true);
+});
+
+const Axios$2 = Axios$1;
+
+/**
+ * A `CancelToken` is an object that can be used to request cancellation of an operation.
+ *
+ * @param {Function} executor The executor function.
+ *
+ * @returns {CancelToken}
+ */
+class CancelToken$1 {
+ constructor(executor) {
+ if (typeof executor !== 'function') {
+ throw new TypeError('executor must be a function.');
+ }
+
+ let resolvePromise;
+
+ this.promise = new Promise(function promiseExecutor(resolve) {
+ resolvePromise = resolve;
+ });
+
+ const token = this;
+
+ // eslint-disable-next-line func-names
+ this.promise.then(cancel => {
+ if (!token._listeners) return;
+
+ let i = token._listeners.length;
+
+ while (i-- > 0) {
+ token._listeners[i](cancel);
+ }
+ token._listeners = null;
+ });
+
+ // eslint-disable-next-line func-names
+ this.promise.then = onfulfilled => {
+ let _resolve;
+ // eslint-disable-next-line func-names
+ const promise = new Promise(resolve => {
+ token.subscribe(resolve);
+ _resolve = resolve;
+ }).then(onfulfilled);
+
+ promise.cancel = function reject() {
+ token.unsubscribe(_resolve);
+ };
+
+ return promise;
+ };
+
+ executor(function cancel(message, config, request) {
+ if (token.reason) {
+ // Cancellation has already been requested
+ return;
+ }
+
+ token.reason = new CanceledError$1(message, config, request);
+ resolvePromise(token.reason);
+ });
+ }
+
+ /**
+ * Throws a `CanceledError` if cancellation has been requested.
+ */
+ throwIfRequested() {
+ if (this.reason) {
+ throw this.reason;
+ }
+ }
+
+ /**
+ * Subscribe to the cancel signal
+ */
+
+ subscribe(listener) {
+ if (this.reason) {
+ listener(this.reason);
+ return;
+ }
+
+ if (this._listeners) {
+ this._listeners.push(listener);
+ } else {
+ this._listeners = [listener];
+ }
+ }
+
+ /**
+ * Unsubscribe from the cancel signal
+ */
+
+ unsubscribe(listener) {
+ if (!this._listeners) {
+ return;
+ }
+ const index = this._listeners.indexOf(listener);
+ if (index !== -1) {
+ this._listeners.splice(index, 1);
+ }
+ }
+
+ /**
+ * Returns an object that contains a new `CancelToken` and a function that, when called,
+ * cancels the `CancelToken`.
+ */
+ static source() {
+ let cancel;
+ const token = new CancelToken$1(function executor(c) {
+ cancel = c;
+ });
+ return {
+ token,
+ cancel
+ };
+ }
+}
+
+const CancelToken$2 = CancelToken$1;
+
+/**
+ * Syntactic sugar for invoking a function and expanding an array for arguments.
+ *
+ * Common use case would be to use `Function.prototype.apply`.
+ *
+ * ```js
+ * function f(x, y, z) {}
+ * var args = [1, 2, 3];
+ * f.apply(null, args);
+ * ```
+ *
+ * With `spread` this example can be re-written.
+ *
+ * ```js
+ * spread(function(x, y, z) {})([1, 2, 3]);
+ * ```
+ *
+ * @param {Function} callback
+ *
+ * @returns {Function}
+ */
+function spread$1(callback) {
+ return function wrap(arr) {
+ return callback.apply(null, arr);
+ };
+}
+
+/**
+ * Determines whether the payload is an error thrown by Axios
+ *
+ * @param {*} payload The value to test
+ *
+ * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false
+ */
+function isAxiosError$1(payload) {
+ return utils$1.isObject(payload) && (payload.isAxiosError === true);
+}
+
+const HttpStatusCode$1 = {
+ Continue: 100,
+ SwitchingProtocols: 101,
+ Processing: 102,
+ EarlyHints: 103,
+ Ok: 200,
+ Created: 201,
+ Accepted: 202,
+ NonAuthoritativeInformation: 203,
+ NoContent: 204,
+ ResetContent: 205,
+ PartialContent: 206,
+ MultiStatus: 207,
+ AlreadyReported: 208,
+ ImUsed: 226,
+ MultipleChoices: 300,
+ MovedPermanently: 301,
+ Found: 302,
+ SeeOther: 303,
+ NotModified: 304,
+ UseProxy: 305,
+ Unused: 306,
+ TemporaryRedirect: 307,
+ PermanentRedirect: 308,
+ BadRequest: 400,
+ Unauthorized: 401,
+ PaymentRequired: 402,
+ Forbidden: 403,
+ NotFound: 404,
+ MethodNotAllowed: 405,
+ NotAcceptable: 406,
+ ProxyAuthenticationRequired: 407,
+ RequestTimeout: 408,
+ Conflict: 409,
+ Gone: 410,
+ LengthRequired: 411,
+ PreconditionFailed: 412,
+ PayloadTooLarge: 413,
+ UriTooLong: 414,
+ UnsupportedMediaType: 415,
+ RangeNotSatisfiable: 416,
+ ExpectationFailed: 417,
+ ImATeapot: 418,
+ MisdirectedRequest: 421,
+ UnprocessableEntity: 422,
+ Locked: 423,
+ FailedDependency: 424,
+ TooEarly: 425,
+ UpgradeRequired: 426,
+ PreconditionRequired: 428,
+ TooManyRequests: 429,
+ RequestHeaderFieldsTooLarge: 431,
+ UnavailableForLegalReasons: 451,
+ InternalServerError: 500,
+ NotImplemented: 501,
+ BadGateway: 502,
+ ServiceUnavailable: 503,
+ GatewayTimeout: 504,
+ HttpVersionNotSupported: 505,
+ VariantAlsoNegotiates: 506,
+ InsufficientStorage: 507,
+ LoopDetected: 508,
+ NotExtended: 510,
+ NetworkAuthenticationRequired: 511,
+};
+
+Object.entries(HttpStatusCode$1).forEach(([key, value]) => {
+ HttpStatusCode$1[value] = key;
+});
+
+const HttpStatusCode$2 = HttpStatusCode$1;
+
+/**
+ * Create an instance of Axios
+ *
+ * @param {Object} defaultConfig The default config for the instance
+ *
+ * @returns {Axios} A new instance of Axios
+ */
+function createInstance(defaultConfig) {
+ const context = new Axios$2(defaultConfig);
+ const instance = bind(Axios$2.prototype.request, context);
+
+ // Copy axios.prototype to instance
+ utils$1.extend(instance, Axios$2.prototype, context, {allOwnKeys: true});
+
+ // Copy context to instance
+ utils$1.extend(instance, context, null, {allOwnKeys: true});
+
+ // Factory for creating new instances
+ instance.create = function create(instanceConfig) {
+ return createInstance(mergeConfig$1(defaultConfig, instanceConfig));
+ };
+
+ return instance;
+}
+
+// Create the default instance to be exported
+const axios = createInstance(defaults$1);
+
+// Expose Axios class to allow class inheritance
+axios.Axios = Axios$2;
+
+// Expose Cancel & CancelToken
+axios.CanceledError = CanceledError$1;
+axios.CancelToken = CancelToken$2;
+axios.isCancel = isCancel$1;
+axios.VERSION = VERSION$1;
+axios.toFormData = toFormData$1;
+
+// Expose AxiosError class
+axios.AxiosError = AxiosError$1;
+
+// alias for CanceledError for backward compatibility
+axios.Cancel = axios.CanceledError;
+
+// Expose all/spread
+axios.all = function all(promises) {
+ return Promise.all(promises);
+};
+
+axios.spread = spread$1;
+
+// Expose isAxiosError
+axios.isAxiosError = isAxiosError$1;
+
+// Expose mergeConfig
+axios.mergeConfig = mergeConfig$1;
+
+axios.AxiosHeaders = AxiosHeaders$2;
+
+axios.formToJSON = thing => formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing);
+
+axios.getAdapter = adapters.getAdapter;
+
+axios.HttpStatusCode = HttpStatusCode$2;
+
+axios.default = axios;
+
+// this module should only have a default export
+const axios$1 = axios;
+
+// This module is intended to unwrap Axios default export as named.
+// Keep top-level export same with static properties
+// so that it can keep same with es module or cjs
+const {
+ Axios,
+ AxiosError,
+ CanceledError,
+ isCancel,
+ CancelToken,
+ VERSION,
+ all,
+ Cancel,
+ isAxiosError,
+ spread,
+ toFormData,
+ AxiosHeaders,
+ HttpStatusCode,
+ formToJSON,
+ getAdapter,
+ mergeConfig
+} = axios$1;
+
+export { Axios, AxiosError, AxiosHeaders, Cancel, CancelToken, CanceledError, HttpStatusCode, VERSION, all, axios$1 as default, formToJSON, getAdapter, isAxiosError, isCancel, mergeConfig, spread, toFormData };
+//# sourceMappingURL=axios.js.map
diff --git a/node_modules/axios/dist/esm/axios.js.map b/node_modules/axios/dist/esm/axios.js.map
new file mode 100644
index 00000000..ea2ab215
--- /dev/null
+++ b/node_modules/axios/dist/esm/axios.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"axios.js","sources":["../../lib/helpers/bind.js","../../lib/utils.js","../../lib/core/AxiosError.js","../../lib/helpers/null.js","../../lib/helpers/toFormData.js","../../lib/helpers/AxiosURLSearchParams.js","../../lib/helpers/buildURL.js","../../lib/core/InterceptorManager.js","../../lib/defaults/transitional.js","../../lib/platform/browser/classes/URLSearchParams.js","../../lib/platform/browser/classes/FormData.js","../../lib/platform/browser/classes/Blob.js","../../lib/platform/browser/index.js","../../lib/platform/common/utils.js","../../lib/platform/index.js","../../lib/helpers/toURLEncodedForm.js","../../lib/helpers/formDataToJSON.js","../../lib/defaults/index.js","../../lib/helpers/parseHeaders.js","../../lib/core/AxiosHeaders.js","../../lib/core/transformData.js","../../lib/cancel/isCancel.js","../../lib/cancel/CanceledError.js","../../lib/core/settle.js","../../lib/helpers/parseProtocol.js","../../lib/helpers/speedometer.js","../../lib/helpers/throttle.js","../../lib/helpers/progressEventReducer.js","../../lib/helpers/isURLSameOrigin.js","../../lib/helpers/cookies.js","../../lib/helpers/isAbsoluteURL.js","../../lib/helpers/combineURLs.js","../../lib/core/buildFullPath.js","../../lib/core/mergeConfig.js","../../lib/helpers/resolveConfig.js","../../lib/adapters/xhr.js","../../lib/helpers/composeSignals.js","../../lib/helpers/trackStream.js","../../lib/adapters/fetch.js","../../lib/adapters/adapters.js","../../lib/core/dispatchRequest.js","../../lib/env/data.js","../../lib/helpers/validator.js","../../lib/core/Axios.js","../../lib/cancel/CancelToken.js","../../lib/helpers/spread.js","../../lib/helpers/isAxiosError.js","../../lib/helpers/HttpStatusCode.js","../../lib/axios.js","../../index.js"],"sourcesContent":["'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = (\n (product) => {\n return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0\n })(typeof navigator !== 'undefined' && navigator.product);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isHeaders(header)) {\n for (const [key, value] of header.entries()) {\n setHeader(value, key, rewrite);\n }\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","'use strict';\n\n/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n const threshold = 1000 / freq;\n let timer = null;\n return function throttled() {\n const force = this === true;\n\n const now = Date.now();\n if (force || now - timestamp > threshold) {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n timestamp = now;\n return fn.apply(null, arguments);\n }\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n timestamp = Date.now();\n return fn.apply(null, arguments);\n }, threshold - (now - timestamp));\n }\n };\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\n\nexport default (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n }, freq);\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n let contentType;\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // Let the browser set it\n } else if ((contentType = headers.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport progressEventReducer from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType} = _config;\n let onCanceled;\n function done() {\n if (_config.cancelToken) {\n _config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (_config.signal) {\n _config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, _config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, _config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n _config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (typeof _config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(_config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof _config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(_config.onUploadProgress));\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst composeSignals = (signals, timeout) => {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (cancel) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = cancel instanceof Error ? cancel : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal &&\n (signal.removeEventListener ? signal.removeEventListener('abort', onabort) : signal.unsubscribe(onabort));\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal && signal.addEventListener && signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = unsubscribe;\n\n return [signal, () => {\n timer && clearTimeout(timer);\n timer = null;\n }];\n}\n\nexport default composeSignals;\n","\n\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize, encode) {\n for await (const chunk of iterable) {\n yield* streamChunk(ArrayBuffer.isView(chunk) ? chunk : (await encode(String(chunk))), chunkSize);\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish, encode) => {\n const iterator = readBytes(stream, chunkSize, encode);\n\n let bytes = 0;\n\n return new ReadableStream({\n type: 'bytes',\n\n async pull(controller) {\n const {done, value} = await iterator.next();\n\n if (done) {\n controller.close();\n onFinish();\n return;\n }\n\n let len = value.byteLength;\n onProgress && onProgress(bytes += len);\n controller.enqueue(new Uint8Array(value));\n },\n cancel(reason) {\n onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport progressEventReducer from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst fetchProgressDecorator = (total, fn) => {\n const lengthComputable = total != null;\n return (loaded) => setTimeout(() => fn({\n lengthComputable,\n total,\n loaded\n }));\n}\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst supportsRequestStream = isReadableStreamSupported && (() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n})();\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported && !!(()=> {\n try {\n return utils.isReadableStream(new Response('').body);\n } catch(err) {\n // return undefined\n }\n})();\n\nconst resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\n (_, config) => {\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if(utils.isBlob(body)) {\n return body.size;\n }\n\n if(utils.isSpecCompliantForm(body)) {\n return (await new Request(body).arrayBuffer()).byteLength;\n }\n\n if(utils.isArrayBufferView(body)) {\n return body.byteLength;\n }\n\n if(utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if(utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n}\n\nconst resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n}\n\nexport default isFetchSupported && (async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let [composedSignal, stopTimeout] = (signal || cancelToken || timeout) ?\n composeSignals([signal, cancelToken], timeout) : [];\n\n let finished, request;\n\n const onFinish = () => {\n !finished && setTimeout(() => {\n composedSignal && composedSignal.unsubscribe();\n });\n\n finished = true;\n }\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, fetchProgressDecorator(\n requestContentLength,\n progressEventReducer(onUploadProgress)\n ), null, encodeText);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'cors' : 'omit';\n }\n\n request = new Request(url, {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n withCredentials\n });\n\n let response = await fetch(request);\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || isStreamResponse)) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onDownloadProgress && fetchProgressDecorator(\n responseContentLength,\n progressEventReducer(onDownloadProgress, true)\n ), isStreamResponse && onFinish, encodeText),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && onFinish();\n\n stopTimeout && stopTimeout();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n onFinish();\n\n if (err && err.name === 'TypeError' && /fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n});\n\n\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: fetchAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","export const VERSION = \"1.7.2\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n} = axios;\n\nexport {\n axios as default,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n}\n"],"names":["AxiosError","utils","prototype","toFormData","encode","URLSearchParams","FormData","Blob","platform","AxiosHeaders","defaults","isCancel","CanceledError","mergeConfig","composeSignals","VERSION","validators","Axios","InterceptorManager","CancelToken","spread","isAxiosError","HttpStatusCode","axios"],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/axios/dist/esm/axios.min.js b/node_modules/axios/dist/esm/axios.min.js
new file mode 100644
index 00000000..6373f437
--- /dev/null
+++ b/node_modules/axios/dist/esm/axios.min.js
@@ -0,0 +1,2 @@
+function e(e,t){return function(){return e.apply(t,arguments)}}const{toString:t}=Object.prototype,{getPrototypeOf:n}=Object,r=(o=Object.create(null),e=>{const n=t.call(e);return o[n]||(o[n]=n.slice(8,-1).toLowerCase())});var o;const s=e=>(e=e.toLowerCase(),t=>r(t)===e),i=e=>t=>typeof t===e,{isArray:a}=Array,c=i("undefined");const u=s("ArrayBuffer");const l=i("string"),f=i("function"),d=i("number"),h=e=>null!==e&&"object"==typeof e,p=e=>{if("object"!==r(e))return!1;const t=n(e);return!(null!==t&&t!==Object.prototype&&null!==Object.getPrototypeOf(t)||Symbol.toStringTag in e||Symbol.iterator in e)},m=s("Date"),y=s("File"),b=s("Blob"),g=s("FileList"),w=s("URLSearchParams"),[E,O,R,S]=["ReadableStream","Request","Response","Headers"].map(s);function T(e,t,{allOwnKeys:n=!1}={}){if(null==e)return;let r,o;if("object"!=typeof e&&(e=[e]),a(e))for(r=0,o=e.length;r0;)if(r=n[o],t===r.toLowerCase())return r;return null}const v="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,C=e=>!c(e)&&e!==v;const x=(N="undefined"!=typeof Uint8Array&&n(Uint8Array),e=>N&&e instanceof N);var N;const j=s("HTMLFormElement"),P=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),_=s("RegExp"),F=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};T(n,((n,o)=>{let s;!1!==(s=t(n,o,e))&&(r[o]=s||n)})),Object.defineProperties(e,r)},L="abcdefghijklmnopqrstuvwxyz",U={DIGIT:"0123456789",ALPHA:L,ALPHA_DIGIT:L+L.toUpperCase()+"0123456789"};const B=s("AsyncFunction"),D={isArray:a,isArrayBuffer:u,isBuffer:function(e){return null!==e&&!c(e)&&null!==e.constructor&&!c(e.constructor)&&f(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:e=>{let t;return e&&("function"==typeof FormData&&e instanceof FormData||f(e.append)&&("formdata"===(t=r(e))||"object"===t&&f(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let t;return t="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&u(e.buffer),t},isString:l,isNumber:d,isBoolean:e=>!0===e||!1===e,isObject:h,isPlainObject:p,isReadableStream:E,isRequest:O,isResponse:R,isHeaders:S,isUndefined:c,isDate:m,isFile:y,isBlob:b,isRegExp:_,isFunction:f,isStream:e=>h(e)&&f(e.pipe),isURLSearchParams:w,isTypedArray:x,isFileList:g,forEach:T,merge:function e(){const{caseless:t}=C(this)&&this||{},n={},r=(r,o)=>{const s=t&&A(n,o)||o;p(n[s])&&p(r)?n[s]=e(n[s],r):p(r)?n[s]=e({},r):a(r)?n[s]=r.slice():n[s]=r};for(let e=0,t=arguments.length;e(T(n,((n,o)=>{r&&f(n)?t[o]=e(n,r):t[o]=n}),{allOwnKeys:o}),t),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},toFlatObject:(e,t,r,o)=>{let s,i,a;const c={};if(t=t||{},null==e)return t;do{for(s=Object.getOwnPropertyNames(e),i=s.length;i-- >0;)a=s[i],o&&!o(a,e,t)||c[a]||(t[a]=e[a],c[a]=!0);e=!1!==r&&n(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},kindOf:r,kindOfTest:s,endsWith:(e,t,n)=>{e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return-1!==r&&r===n},toArray:e=>{if(!e)return null;if(a(e))return e;let t=e.length;if(!d(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},forEachEntry:(e,t)=>{const n=(e&&e[Symbol.iterator]).call(e);let r;for(;(r=n.next())&&!r.done;){const n=r.value;t.call(e,n[0],n[1])}},matchAll:(e,t)=>{let n;const r=[];for(;null!==(n=e.exec(t));)r.push(n);return r},isHTMLForm:j,hasOwnProperty:P,hasOwnProp:P,reduceDescriptors:F,freezeMethods:e=>{F(e,((t,n)=>{if(f(e)&&-1!==["arguments","caller","callee"].indexOf(n))return!1;const r=e[n];f(r)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")}))}))},toObjectSet:(e,t)=>{const n={},r=e=>{e.forEach((e=>{n[e]=!0}))};return a(e)?r(e):r(String(e).split(t)),n},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,n){return t.toUpperCase()+n})),noop:()=>{},toFiniteNumber:(e,t)=>null!=e&&Number.isFinite(e=+e)?e:t,findKey:A,global:v,isContextDefined:C,ALPHABET:U,generateString:(e=16,t=U.ALPHA_DIGIT)=>{let n="";const{length:r}=t;for(;e--;)n+=t[Math.random()*r|0];return n},isSpecCompliantForm:function(e){return!!(e&&f(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:e=>{const t=new Array(10),n=(e,r)=>{if(h(e)){if(t.indexOf(e)>=0)return;if(!("toJSON"in e)){t[r]=e;const o=a(e)?[]:{};return T(e,((e,t)=>{const s=n(e,r+1);!c(s)&&(o[t]=s)})),t[r]=void 0,o}}return e};return n(e,0)},isAsyncFn:B,isThenable:e=>e&&(h(e)||f(e))&&f(e.then)&&f(e.catch)};function k(e,t,n,r,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),o&&(this.response=o)}D.inherits(k,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:D.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const q=k.prototype,I={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((e=>{I[e]={value:e}})),Object.defineProperties(k,I),Object.defineProperty(q,"isAxiosError",{value:!0}),k.from=(e,t,n,r,o,s)=>{const i=Object.create(q);return D.toFlatObject(e,i,(function(e){return e!==Error.prototype}),(e=>"isAxiosError"!==e)),k.call(i,e.message,t,n,r,o),i.cause=e,i.name=e.name,s&&Object.assign(i,s),i};function z(e){return D.isPlainObject(e)||D.isArray(e)}function M(e){return D.endsWith(e,"[]")?e.slice(0,-2):e}function H(e,t,n){return e?e.concat(t).map((function(e,t){return e=M(e),!n&&t?"["+e+"]":e})).join(n?".":""):t}const J=D.toFlatObject(D,{},null,(function(e){return/^is[A-Z]/.test(e)}));function W(e,t,n){if(!D.isObject(e))throw new TypeError("target must be an object");t=t||new FormData;const r=(n=D.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!D.isUndefined(t[e])}))).metaTokens,o=n.visitor||u,s=n.dots,i=n.indexes,a=(n.Blob||"undefined"!=typeof Blob&&Blob)&&D.isSpecCompliantForm(t);if(!D.isFunction(o))throw new TypeError("visitor must be a function");function c(e){if(null===e)return"";if(D.isDate(e))return e.toISOString();if(!a&&D.isBlob(e))throw new k("Blob is not supported. Use a Buffer instead.");return D.isArrayBuffer(e)||D.isTypedArray(e)?a&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function u(e,n,o){let a=e;if(e&&!o&&"object"==typeof e)if(D.endsWith(n,"{}"))n=r?n:n.slice(0,-2),e=JSON.stringify(e);else if(D.isArray(e)&&function(e){return D.isArray(e)&&!e.some(z)}(e)||(D.isFileList(e)||D.endsWith(n,"[]"))&&(a=D.toArray(e)))return n=M(n),a.forEach((function(e,r){!D.isUndefined(e)&&null!==e&&t.append(!0===i?H([n],r,s):null===i?n:n+"[]",c(e))})),!1;return!!z(e)||(t.append(H(o,n,s),c(e)),!1)}const l=[],f=Object.assign(J,{defaultVisitor:u,convertValue:c,isVisitable:z});if(!D.isObject(e))throw new TypeError("data must be an object");return function e(n,r){if(!D.isUndefined(n)){if(-1!==l.indexOf(n))throw Error("Circular reference detected in "+r.join("."));l.push(n),D.forEach(n,(function(n,s){!0===(!(D.isUndefined(n)||null===n)&&o.call(t,n,D.isString(s)?s.trim():s,r,f))&&e(n,r?r.concat(s):[s])})),l.pop()}}(e),t}function V(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function K(e,t){this._pairs=[],e&&W(e,this,t)}const $=K.prototype;function G(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function X(e,t,n){if(!t)return e;const r=n&&n.encode||G,o=n&&n.serialize;let s;if(s=o?o(t,n):D.isURLSearchParams(t)?t.toString():new K(t,n).toString(r),s){const t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+s}return e}$.append=function(e,t){this._pairs.push([e,t])},$.toString=function(e){const t=e?function(t){return e.call(this,t,V)}:V;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};const Q=class{constructor(){this.handlers=[]}use(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){D.forEach(this.handlers,(function(t){null!==t&&e(t)}))}},Z={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Y={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:K,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]},ee="undefined"!=typeof window&&"undefined"!=typeof document,te=(ne="undefined"!=typeof navigator&&navigator.product,ee&&["ReactNative","NativeScript","NS"].indexOf(ne)<0);var ne;const re="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,oe=ee&&window.location.href||"http://localhost",se={...Object.freeze({__proto__:null,hasBrowserEnv:ee,hasStandardBrowserWebWorkerEnv:re,hasStandardBrowserEnv:te,origin:oe}),...Y};function ie(e){function t(e,n,r,o){let s=e[o++];if("__proto__"===s)return!0;const i=Number.isFinite(+s),a=o>=e.length;if(s=!s&&D.isArray(r)?r.length:s,a)return D.hasOwnProp(r,s)?r[s]=[r[s],n]:r[s]=n,!i;r[s]&&D.isObject(r[s])||(r[s]=[]);return t(e,n,r[s],o)&&D.isArray(r[s])&&(r[s]=function(e){const t={},n=Object.keys(e);let r;const o=n.length;let s;for(r=0;r{t(function(e){return D.matchAll(/\w+|\[(\w*)]/g,e).map((e=>"[]"===e[0]?"":e[1]||e[0]))}(e),r,n,0)})),n}return null}const ae={transitional:Z,adapter:["xhr","http","fetch"],transformRequest:[function(e,t){const n=t.getContentType()||"",r=n.indexOf("application/json")>-1,o=D.isObject(e);o&&D.isHTMLForm(e)&&(e=new FormData(e));if(D.isFormData(e))return r?JSON.stringify(ie(e)):e;if(D.isArrayBuffer(e)||D.isBuffer(e)||D.isStream(e)||D.isFile(e)||D.isBlob(e)||D.isReadableStream(e))return e;if(D.isArrayBufferView(e))return e.buffer;if(D.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let s;if(o){if(n.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return W(e,new se.classes.URLSearchParams,Object.assign({visitor:function(e,t,n,r){return se.isNode&&D.isBuffer(e)?(this.append(t,e.toString("base64")),!1):r.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((s=D.isFileList(e))||n.indexOf("multipart/form-data")>-1){const t=this.env&&this.env.FormData;return W(s?{"files[]":e}:e,t&&new t,this.formSerializer)}}return o||r?(t.setContentType("application/json",!1),function(e,t,n){if(D.isString(e))try{return(t||JSON.parse)(e),D.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){const t=this.transitional||ae.transitional,n=t&&t.forcedJSONParsing,r="json"===this.responseType;if(D.isResponse(e)||D.isReadableStream(e))return e;if(e&&D.isString(e)&&(n&&!this.responseType||r)){const n=!(t&&t.silentJSONParsing)&&r;try{return JSON.parse(e)}catch(e){if(n){if("SyntaxError"===e.name)throw k.from(e,k.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:se.classes.FormData,Blob:se.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};D.forEach(["delete","get","head","post","put","patch"],(e=>{ae.headers[e]={}}));const ce=ae,ue=D.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),le=Symbol("internals");function fe(e){return e&&String(e).trim().toLowerCase()}function de(e){return!1===e||null==e?e:D.isArray(e)?e.map(de):String(e)}function he(e,t,n,r,o){return D.isFunction(r)?r.call(this,t,n):(o&&(t=n),D.isString(t)?D.isString(r)?-1!==t.indexOf(r):D.isRegExp(r)?r.test(t):void 0:void 0)}class pe{constructor(e){e&&this.set(e)}set(e,t,n){const r=this;function o(e,t,n){const o=fe(t);if(!o)throw new Error("header name must be a non-empty string");const s=D.findKey(r,o);(!s||void 0===r[s]||!0===n||void 0===n&&!1!==r[s])&&(r[s||t]=de(e))}const s=(e,t)=>D.forEach(e,((e,n)=>o(e,n,t)));if(D.isPlainObject(e)||e instanceof this.constructor)s(e,t);else if(D.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim()))s((e=>{const t={};let n,r,o;return e&&e.split("\n").forEach((function(e){o=e.indexOf(":"),n=e.substring(0,o).trim().toLowerCase(),r=e.substring(o+1).trim(),!n||t[n]&&ue[n]||("set-cookie"===n?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)})),t})(e),t);else if(D.isHeaders(e))for(const[t,r]of e.entries())o(r,t,n);else null!=e&&o(t,e,n);return this}get(e,t){if(e=fe(e)){const n=D.findKey(this,e);if(n){const e=this[n];if(!t)return e;if(!0===t)return function(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}(e);if(D.isFunction(t))return t.call(this,e,n);if(D.isRegExp(t))return t.exec(e);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=fe(e)){const n=D.findKey(this,e);return!(!n||void 0===this[n]||t&&!he(0,this[n],n,t))}return!1}delete(e,t){const n=this;let r=!1;function o(e){if(e=fe(e)){const o=D.findKey(n,e);!o||t&&!he(0,n[o],o,t)||(delete n[o],r=!0)}}return D.isArray(e)?e.forEach(o):o(e),r}clear(e){const t=Object.keys(this);let n=t.length,r=!1;for(;n--;){const o=t[n];e&&!he(0,this[o],o,e,!0)||(delete this[o],r=!0)}return r}normalize(e){const t=this,n={};return D.forEach(this,((r,o)=>{const s=D.findKey(n,o);if(s)return t[s]=de(r),void delete t[o];const i=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,((e,t,n)=>t.toUpperCase()+n))}(o):String(o).trim();i!==o&&delete t[o],t[i]=de(r),n[i]=!0})),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const t=Object.create(null);return D.forEach(this,((n,r)=>{null!=n&&!1!==n&&(t[r]=e&&D.isArray(n)?n.join(", "):n)})),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map((([e,t])=>e+": "+t)).join("\n")}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){const n=new this(e);return t.forEach((e=>n.set(e))),n}static accessor(e){const t=(this[le]=this[le]={accessors:{}}).accessors,n=this.prototype;function r(e){const r=fe(e);t[r]||(!function(e,t){const n=D.toCamelCase(" "+t);["get","set","has"].forEach((r=>{Object.defineProperty(e,r+n,{value:function(e,n,o){return this[r].call(this,t,e,n,o)},configurable:!0})}))}(n,e),t[r]=!0)}return D.isArray(e)?e.forEach(r):r(e),this}}pe.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),D.reduceDescriptors(pe.prototype,(({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[n]=e}}})),D.freezeMethods(pe);const me=pe;function ye(e,t){const n=this||ce,r=t||n,o=me.from(r.headers);let s=r.data;return D.forEach(e,(function(e){s=e.call(n,s,o.normalize(),t?t.status:void 0)})),o.normalize(),s}function be(e){return!(!e||!e.__CANCEL__)}function ge(e,t,n){k.call(this,null==e?"canceled":e,k.ERR_CANCELED,t,n),this.name="CanceledError"}function we(e,t,n){const r=n.config.validateStatus;n.status&&r&&!r(n.status)?t(new k("Request failed with status code "+n.status,[k.ERR_BAD_REQUEST,k.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n)):e(n)}D.inherits(ge,k,{__CANCEL__:!0});const Ee=(e,t,n=3)=>{let r=0;const o=function(e,t){e=e||10;const n=new Array(e),r=new Array(e);let o,s=0,i=0;return t=void 0!==t?t:1e3,function(a){const c=Date.now(),u=r[i];o||(o=c),n[s]=a,r[s]=c;let l=i,f=0;for(;l!==s;)f+=n[l++],l%=e;if(s=(s+1)%e,s===i&&(i=(i+1)%e),c-or)return o&&(clearTimeout(o),o=null),n=s,e.apply(null,arguments);o||(o=setTimeout((()=>(o=null,n=Date.now(),e.apply(null,arguments))),r-(s-n)))}}((n=>{const s=n.loaded,i=n.lengthComputable?n.total:void 0,a=s-r,c=o(a);r=s;const u={loaded:s,total:i,progress:i?s/i:void 0,bytes:a,rate:c||void 0,estimated:c&&i&&s<=i?(i-s)/c:void 0,event:n,lengthComputable:null!=i};u[t?"download":"upload"]=!0,e(u)}),n)},Oe=se.hasStandardBrowserEnv?function(){const e=/(msie|trident)/i.test(navigator.userAgent),t=document.createElement("a");let n;function r(n){let r=n;return e&&(t.setAttribute("href",r),r=t.href),t.setAttribute("href",r),{href:t.href,protocol:t.protocol?t.protocol.replace(/:$/,""):"",host:t.host,search:t.search?t.search.replace(/^\?/,""):"",hash:t.hash?t.hash.replace(/^#/,""):"",hostname:t.hostname,port:t.port,pathname:"/"===t.pathname.charAt(0)?t.pathname:"/"+t.pathname}}return n=r(window.location.href),function(e){const t=D.isString(e)?r(e):e;return t.protocol===n.protocol&&t.host===n.host}}():function(){return!0},Re=se.hasStandardBrowserEnv?{write(e,t,n,r,o,s){const i=[e+"="+encodeURIComponent(t)];D.isNumber(n)&&i.push("expires="+new Date(n).toGMTString()),D.isString(r)&&i.push("path="+r),D.isString(o)&&i.push("domain="+o),!0===s&&i.push("secure"),document.cookie=i.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read:()=>null,remove(){}};function Se(e,t){return e&&!/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)?function(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}(e,t):t}const Te=e=>e instanceof me?{...e}:e;function Ae(e,t){t=t||{};const n={};function r(e,t,n){return D.isPlainObject(e)&&D.isPlainObject(t)?D.merge.call({caseless:n},e,t):D.isPlainObject(t)?D.merge({},t):D.isArray(t)?t.slice():t}function o(e,t,n){return D.isUndefined(t)?D.isUndefined(e)?void 0:r(void 0,e,n):r(e,t,n)}function s(e,t){if(!D.isUndefined(t))return r(void 0,t)}function i(e,t){return D.isUndefined(t)?D.isUndefined(e)?void 0:r(void 0,e):r(void 0,t)}function a(n,o,s){return s in t?r(n,o):s in e?r(void 0,n):void 0}const c={url:s,method:s,data:s,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,withXSRFToken:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:a,headers:(e,t)=>o(Te(e),Te(t),!0)};return D.forEach(Object.keys(Object.assign({},e,t)),(function(r){const s=c[r]||o,i=s(e[r],t[r],r);D.isUndefined(i)&&s!==a||(n[r]=i)})),n}const ve=e=>{const t=Ae({},e);let n,{data:r,withXSRFToken:o,xsrfHeaderName:s,xsrfCookieName:i,headers:a,auth:c}=t;if(t.headers=a=me.from(a),t.url=X(Se(t.baseURL,t.url),e.params,e.paramsSerializer),c&&a.set("Authorization","Basic "+btoa((c.username||"")+":"+(c.password?unescape(encodeURIComponent(c.password)):""))),D.isFormData(r))if(se.hasStandardBrowserEnv||se.hasStandardBrowserWebWorkerEnv)a.setContentType(void 0);else if(!1!==(n=a.getContentType())){const[e,...t]=n?n.split(";").map((e=>e.trim())).filter(Boolean):[];a.setContentType([e||"multipart/form-data",...t].join("; "))}if(se.hasStandardBrowserEnv&&(o&&D.isFunction(o)&&(o=o(t)),o||!1!==o&&Oe(t.url))){const e=s&&i&&Re.read(i);e&&a.set(s,e)}return t},Ce="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise((function(t,n){const r=ve(e);let o=r.data;const s=me.from(r.headers).normalize();let i,{responseType:a}=r;function c(){r.cancelToken&&r.cancelToken.unsubscribe(i),r.signal&&r.signal.removeEventListener("abort",i)}let u=new XMLHttpRequest;function l(){if(!u)return;const r=me.from("getAllResponseHeaders"in u&&u.getAllResponseHeaders());we((function(e){t(e),c()}),(function(e){n(e),c()}),{data:a&&"text"!==a&&"json"!==a?u.response:u.responseText,status:u.status,statusText:u.statusText,headers:r,config:e,request:u}),u=null}u.open(r.method.toUpperCase(),r.url,!0),u.timeout=r.timeout,"onloadend"in u?u.onloadend=l:u.onreadystatechange=function(){u&&4===u.readyState&&(0!==u.status||u.responseURL&&0===u.responseURL.indexOf("file:"))&&setTimeout(l)},u.onabort=function(){u&&(n(new k("Request aborted",k.ECONNABORTED,r,u)),u=null)},u.onerror=function(){n(new k("Network Error",k.ERR_NETWORK,r,u)),u=null},u.ontimeout=function(){let e=r.timeout?"timeout of "+r.timeout+"ms exceeded":"timeout exceeded";const t=r.transitional||Z;r.timeoutErrorMessage&&(e=r.timeoutErrorMessage),n(new k(e,t.clarifyTimeoutError?k.ETIMEDOUT:k.ECONNABORTED,r,u)),u=null},void 0===o&&s.setContentType(null),"setRequestHeader"in u&&D.forEach(s.toJSON(),(function(e,t){u.setRequestHeader(t,e)})),D.isUndefined(r.withCredentials)||(u.withCredentials=!!r.withCredentials),a&&"json"!==a&&(u.responseType=r.responseType),"function"==typeof r.onDownloadProgress&&u.addEventListener("progress",Ee(r.onDownloadProgress,!0)),"function"==typeof r.onUploadProgress&&u.upload&&u.upload.addEventListener("progress",Ee(r.onUploadProgress)),(r.cancelToken||r.signal)&&(i=t=>{u&&(n(!t||t.type?new ge(null,e,u):t),u.abort(),u=null)},r.cancelToken&&r.cancelToken.subscribe(i),r.signal&&(r.signal.aborted?i():r.signal.addEventListener("abort",i)));const f=function(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(r.url);f&&-1===se.protocols.indexOf(f)?n(new k("Unsupported protocol "+f+":",k.ERR_BAD_REQUEST,e)):u.send(o||null)}))},xe=(e,t)=>{let n,r=new AbortController;const o=function(e){if(!n){n=!0,i();const t=e instanceof Error?e:this.reason;r.abort(t instanceof k?t:new ge(t instanceof Error?t.message:t))}};let s=t&&setTimeout((()=>{o(new k(`timeout ${t} of ms exceeded`,k.ETIMEDOUT))}),t);const i=()=>{e&&(s&&clearTimeout(s),s=null,e.forEach((e=>{e&&(e.removeEventListener?e.removeEventListener("abort",o):e.unsubscribe(o))})),e=null)};e.forEach((e=>e&&e.addEventListener&&e.addEventListener("abort",o)));const{signal:a}=r;return a.unsubscribe=i,[a,()=>{s&&clearTimeout(s),s=null}]},Ne=function*(e,t){let n=e.byteLength;if(!t||n{const s=async function*(e,t,n){for await(const r of e)yield*Ne(ArrayBuffer.isView(r)?r:await n(String(r)),t)}(e,t,o);let i=0;return new ReadableStream({type:"bytes",async pull(e){const{done:t,value:o}=await s.next();if(t)return e.close(),void r();let a=o.byteLength;n&&n(i+=a),e.enqueue(new Uint8Array(o))},cancel:e=>(r(e),s.return())},{highWaterMark:2})},Pe=(e,t)=>{const n=null!=e;return r=>setTimeout((()=>t({lengthComputable:n,total:e,loaded:r})))},_e="function"==typeof fetch&&"function"==typeof Request&&"function"==typeof Response,Fe=_e&&"function"==typeof ReadableStream,Le=_e&&("function"==typeof TextEncoder?(Ue=new TextEncoder,e=>Ue.encode(e)):async e=>new Uint8Array(await new Response(e).arrayBuffer()));var Ue;const Be=Fe&&(()=>{let e=!1;const t=new Request(se.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t})(),De=Fe&&!!(()=>{try{return D.isReadableStream(new Response("").body)}catch(e){}})(),ke={stream:De&&(e=>e.body)};var qe;_e&&(qe=new Response,["text","arrayBuffer","blob","formData","stream"].forEach((e=>{!ke[e]&&(ke[e]=D.isFunction(qe[e])?t=>t[e]():(t,n)=>{throw new k(`Response type '${e}' is not supported`,k.ERR_NOT_SUPPORT,n)})})));const Ie=async(e,t)=>{const n=D.toFiniteNumber(e.getContentLength());return null==n?(async e=>null==e?0:D.isBlob(e)?e.size:D.isSpecCompliantForm(e)?(await new Request(e).arrayBuffer()).byteLength:D.isArrayBufferView(e)?e.byteLength:(D.isURLSearchParams(e)&&(e+=""),D.isString(e)?(await Le(e)).byteLength:void 0))(t):n},ze={http:null,xhr:Ce,fetch:_e&&(async e=>{let{url:t,method:n,data:r,signal:o,cancelToken:s,timeout:i,onDownloadProgress:a,onUploadProgress:c,responseType:u,headers:l,withCredentials:f="same-origin",fetchOptions:d}=ve(e);u=u?(u+"").toLowerCase():"text";let h,p,[m,y]=o||s||i?xe([o,s],i):[];const b=()=>{!h&&setTimeout((()=>{m&&m.unsubscribe()})),h=!0};let g;try{if(c&&Be&&"get"!==n&&"head"!==n&&0!==(g=await Ie(l,r))){let e,n=new Request(t,{method:"POST",body:r,duplex:"half"});D.isFormData(r)&&(e=n.headers.get("content-type"))&&l.setContentType(e),n.body&&(r=je(n.body,65536,Pe(g,Ee(c)),null,Le))}D.isString(f)||(f=f?"cors":"omit"),p=new Request(t,{...d,signal:m,method:n.toUpperCase(),headers:l.normalize().toJSON(),body:r,duplex:"half",withCredentials:f});let o=await fetch(p);const s=De&&("stream"===u||"response"===u);if(De&&(a||s)){const e={};["status","statusText","headers"].forEach((t=>{e[t]=o[t]}));const t=D.toFiniteNumber(o.headers.get("content-length"));o=new Response(je(o.body,65536,a&&Pe(t,Ee(a,!0)),s&&b,Le),e)}u=u||"text";let i=await ke[D.findKey(ke,u)||"text"](o,e);return!s&&b(),y&&y(),await new Promise(((t,n)=>{we(t,n,{data:i,headers:me.from(o.headers),status:o.status,statusText:o.statusText,config:e,request:p})}))}catch(t){if(b(),t&&"TypeError"===t.name&&/fetch/i.test(t.message))throw Object.assign(new k("Network Error",k.ERR_NETWORK,e,p),{cause:t.cause||t});throw k.from(t,t&&t.code,e,p)}})};D.forEach(ze,((e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(e){}Object.defineProperty(e,"adapterName",{value:t})}}));const Me=e=>`- ${e}`,He=e=>D.isFunction(e)||null===e||!1===e,Je=e=>{e=D.isArray(e)?e:[e];const{length:t}=e;let n,r;const o={};for(let s=0;s`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build")));throw new k("There is no suitable adapter to dispatch the request "+(t?e.length>1?"since :\n"+e.map(Me).join("\n"):" "+Me(e[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return r};function We(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new ge(null,e)}function Ve(e){We(e),e.headers=me.from(e.headers),e.data=ye.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1);return Je(e.adapter||ce.adapter)(e).then((function(t){return We(e),t.data=ye.call(e,e.transformResponse,t),t.headers=me.from(t.headers),t}),(function(t){return be(t)||(We(e),t&&t.response&&(t.response.data=ye.call(e,e.transformResponse,t.response),t.response.headers=me.from(t.response.headers))),Promise.reject(t)}))}const Ke={};["object","boolean","number","function","string","symbol"].forEach(((e,t)=>{Ke[e]=function(n){return typeof n===e||"a"+(t<1?"n ":" ")+e}}));const $e={};Ke.transitional=function(e,t,n){function r(e,t){return"[Axios v1.7.2] Transitional option '"+e+"'"+t+(n?". "+n:"")}return(n,o,s)=>{if(!1===e)throw new k(r(o," has been removed"+(t?" in "+t:"")),k.ERR_DEPRECATED);return t&&!$e[o]&&($e[o]=!0,console.warn(r(o," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(n,o,s)}};const Ge={assertOptions:function(e,t,n){if("object"!=typeof e)throw new k("options must be an object",k.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let o=r.length;for(;o-- >0;){const s=r[o],i=t[s];if(i){const t=e[s],n=void 0===t||i(t,s,e);if(!0!==n)throw new k("option "+s+" must be "+n,k.ERR_BAD_OPTION_VALUE)}else if(!0!==n)throw new k("Unknown option "+s,k.ERR_BAD_OPTION)}},validators:Ke},Xe=Ge.validators;class Qe{constructor(e){this.defaults=e,this.interceptors={request:new Q,response:new Q}}async request(e,t){try{return await this._request(e,t)}catch(e){if(e instanceof Error){let t;Error.captureStackTrace?Error.captureStackTrace(t={}):t=new Error;const n=t.stack?t.stack.replace(/^.+\n/,""):"";try{e.stack?n&&!String(e.stack).endsWith(n.replace(/^.+\n.+\n/,""))&&(e.stack+="\n"+n):e.stack=n}catch(e){}}throw e}}_request(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{},t=Ae(this.defaults,t);const{transitional:n,paramsSerializer:r,headers:o}=t;void 0!==n&&Ge.assertOptions(n,{silentJSONParsing:Xe.transitional(Xe.boolean),forcedJSONParsing:Xe.transitional(Xe.boolean),clarifyTimeoutError:Xe.transitional(Xe.boolean)},!1),null!=r&&(D.isFunction(r)?t.paramsSerializer={serialize:r}:Ge.assertOptions(r,{encode:Xe.function,serialize:Xe.function},!0)),t.method=(t.method||this.defaults.method||"get").toLowerCase();let s=o&&D.merge(o.common,o[t.method]);o&&D.forEach(["delete","get","head","post","put","patch","common"],(e=>{delete o[e]})),t.headers=me.concat(s,o);const i=[];let a=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(a=a&&e.synchronous,i.unshift(e.fulfilled,e.rejected))}));const c=[];let u;this.interceptors.response.forEach((function(e){c.push(e.fulfilled,e.rejected)}));let l,f=0;if(!a){const e=[Ve.bind(this),void 0];for(e.unshift.apply(e,i),e.push.apply(e,c),l=e.length,u=Promise.resolve(t);f{if(!n._listeners)return;let t=n._listeners.length;for(;t-- >0;)n._listeners[t](e);n._listeners=null})),this.promise.then=e=>{let t;const r=new Promise((e=>{n.subscribe(e),t=e})).then(e);return r.cancel=function(){n.unsubscribe(t)},r},e((function(e,r,o){n.reason||(n.reason=new ge(e,r,o),t(n.reason))}))}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}static source(){let e;return{token:new Ye((function(t){e=t})),cancel:e}}}const et=Ye;const tt={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(tt).forEach((([e,t])=>{tt[t]=e}));const nt=tt;const rt=function t(n){const r=new Ze(n),o=e(Ze.prototype.request,r);return D.extend(o,Ze.prototype,r,{allOwnKeys:!0}),D.extend(o,r,null,{allOwnKeys:!0}),o.create=function(e){return t(Ae(n,e))},o}(ce);rt.Axios=Ze,rt.CanceledError=ge,rt.CancelToken=et,rt.isCancel=be,rt.VERSION="1.7.2",rt.toFormData=W,rt.AxiosError=k,rt.Cancel=rt.CanceledError,rt.all=function(e){return Promise.all(e)},rt.spread=function(e){return function(t){return e.apply(null,t)}},rt.isAxiosError=function(e){return D.isObject(e)&&!0===e.isAxiosError},rt.mergeConfig=Ae,rt.AxiosHeaders=me,rt.formToJSON=e=>ie(D.isHTMLForm(e)?new FormData(e):e),rt.getAdapter=Je,rt.HttpStatusCode=nt,rt.default=rt;const ot=rt,{Axios:st,AxiosError:it,CanceledError:at,isCancel:ct,CancelToken:ut,VERSION:lt,all:ft,Cancel:dt,isAxiosError:ht,spread:pt,toFormData:mt,AxiosHeaders:yt,HttpStatusCode:bt,formToJSON:gt,getAdapter:wt,mergeConfig:Et}=ot;export{st as Axios,it as AxiosError,yt as AxiosHeaders,dt as Cancel,ut as CancelToken,at as CanceledError,bt as HttpStatusCode,lt as VERSION,ft as all,ot as default,gt as formToJSON,wt as getAdapter,ht as isAxiosError,ct as isCancel,Et as mergeConfig,pt as spread,mt as toFormData};
+//# sourceMappingURL=axios.min.js.map
diff --git a/node_modules/axios/dist/esm/axios.min.js.map b/node_modules/axios/dist/esm/axios.min.js.map
new file mode 100644
index 00000000..0901b22d
--- /dev/null
+++ b/node_modules/axios/dist/esm/axios.min.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"axios.min.js","sources":["../../lib/helpers/bind.js","../../lib/utils.js","../../lib/core/AxiosError.js","../../lib/helpers/toFormData.js","../../lib/helpers/AxiosURLSearchParams.js","../../lib/helpers/buildURL.js","../../lib/core/InterceptorManager.js","../../lib/defaults/transitional.js","../../lib/platform/browser/index.js","../../lib/platform/browser/classes/URLSearchParams.js","../../lib/platform/browser/classes/FormData.js","../../lib/platform/browser/classes/Blob.js","../../lib/platform/common/utils.js","../../lib/platform/index.js","../../lib/helpers/formDataToJSON.js","../../lib/defaults/index.js","../../lib/helpers/toURLEncodedForm.js","../../lib/helpers/parseHeaders.js","../../lib/core/AxiosHeaders.js","../../lib/core/transformData.js","../../lib/cancel/isCancel.js","../../lib/cancel/CanceledError.js","../../lib/core/settle.js","../../lib/helpers/progressEventReducer.js","../../lib/helpers/speedometer.js","../../lib/helpers/throttle.js","../../lib/helpers/isURLSameOrigin.js","../../lib/helpers/cookies.js","../../lib/core/buildFullPath.js","../../lib/helpers/isAbsoluteURL.js","../../lib/helpers/combineURLs.js","../../lib/core/mergeConfig.js","../../lib/helpers/resolveConfig.js","../../lib/adapters/xhr.js","../../lib/helpers/parseProtocol.js","../../lib/helpers/composeSignals.js","../../lib/helpers/trackStream.js","../../lib/adapters/fetch.js","../../lib/adapters/adapters.js","../../lib/helpers/null.js","../../lib/core/dispatchRequest.js","../../lib/env/data.js","../../lib/helpers/validator.js","../../lib/core/Axios.js","../../lib/cancel/CancelToken.js","../../lib/helpers/HttpStatusCode.js","../../lib/axios.js","../../lib/helpers/spread.js","../../lib/helpers/isAxiosError.js","../../index.js"],"sourcesContent":["'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = (\n (product) => {\n return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0\n })(typeof navigator !== 'undefined' && navigator.product);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isHeaders(header)) {\n for (const [key, value] of header.entries()) {\n setHeader(value, key, rewrite);\n }\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\n\nexport default (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n }, freq);\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","'use strict';\n\n/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n const threshold = 1000 / freq;\n let timer = null;\n return function throttled() {\n const force = this === true;\n\n const now = Date.now();\n if (force || now - timestamp > threshold) {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n timestamp = now;\n return fn.apply(null, arguments);\n }\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n timestamp = Date.now();\n return fn.apply(null, arguments);\n }, threshold - (now - timestamp));\n }\n };\n}\n\nexport default throttle;\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n let contentType;\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // Let the browser set it\n } else if ((contentType = headers.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport progressEventReducer from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType} = _config;\n let onCanceled;\n function done() {\n if (_config.cancelToken) {\n _config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (_config.signal) {\n _config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, _config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, _config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n _config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (typeof _config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(_config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof _config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(_config.onUploadProgress));\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst composeSignals = (signals, timeout) => {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (cancel) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = cancel instanceof Error ? cancel : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal &&\n (signal.removeEventListener ? signal.removeEventListener('abort', onabort) : signal.unsubscribe(onabort));\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal && signal.addEventListener && signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = unsubscribe;\n\n return [signal, () => {\n timer && clearTimeout(timer);\n timer = null;\n }];\n}\n\nexport default composeSignals;\n","\n\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize, encode) {\n for await (const chunk of iterable) {\n yield* streamChunk(ArrayBuffer.isView(chunk) ? chunk : (await encode(String(chunk))), chunkSize);\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish, encode) => {\n const iterator = readBytes(stream, chunkSize, encode);\n\n let bytes = 0;\n\n return new ReadableStream({\n type: 'bytes',\n\n async pull(controller) {\n const {done, value} = await iterator.next();\n\n if (done) {\n controller.close();\n onFinish();\n return;\n }\n\n let len = value.byteLength;\n onProgress && onProgress(bytes += len);\n controller.enqueue(new Uint8Array(value));\n },\n cancel(reason) {\n onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport progressEventReducer from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst fetchProgressDecorator = (total, fn) => {\n const lengthComputable = total != null;\n return (loaded) => setTimeout(() => fn({\n lengthComputable,\n total,\n loaded\n }));\n}\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst supportsRequestStream = isReadableStreamSupported && (() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n})();\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported && !!(()=> {\n try {\n return utils.isReadableStream(new Response('').body);\n } catch(err) {\n // return undefined\n }\n})();\n\nconst resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\n (_, config) => {\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if(utils.isBlob(body)) {\n return body.size;\n }\n\n if(utils.isSpecCompliantForm(body)) {\n return (await new Request(body).arrayBuffer()).byteLength;\n }\n\n if(utils.isArrayBufferView(body)) {\n return body.byteLength;\n }\n\n if(utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if(utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n}\n\nconst resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n}\n\nexport default isFetchSupported && (async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let [composedSignal, stopTimeout] = (signal || cancelToken || timeout) ?\n composeSignals([signal, cancelToken], timeout) : [];\n\n let finished, request;\n\n const onFinish = () => {\n !finished && setTimeout(() => {\n composedSignal && composedSignal.unsubscribe();\n });\n\n finished = true;\n }\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, fetchProgressDecorator(\n requestContentLength,\n progressEventReducer(onUploadProgress)\n ), null, encodeText);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'cors' : 'omit';\n }\n\n request = new Request(url, {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n withCredentials\n });\n\n let response = await fetch(request);\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || isStreamResponse)) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onDownloadProgress && fetchProgressDecorator(\n responseContentLength,\n progressEventReducer(onDownloadProgress, true)\n ), isStreamResponse && onFinish, encodeText),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && onFinish();\n\n stopTimeout && stopTimeout();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n onFinish();\n\n if (err && err.name === 'TypeError' && /fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n});\n\n\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: fetchAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","export const VERSION = \"1.7.2\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n} = axios;\n\nexport {\n axios as default,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n}\n"],"names":["bind","fn","thisArg","apply","arguments","toString","Object","prototype","getPrototypeOf","kindOf","cache","create","thing","str","call","slice","toLowerCase","kindOfTest","type","typeOfTest","isArray","Array","isUndefined","isArrayBuffer","isString","isFunction","isNumber","isObject","isPlainObject","val","Symbol","toStringTag","iterator","isDate","isFile","isBlob","isFileList","isURLSearchParams","isReadableStream","isRequest","isResponse","isHeaders","map","forEach","obj","allOwnKeys","i","l","length","keys","getOwnPropertyNames","len","key","findKey","_key","_global","globalThis","self","window","global","isContextDefined","context","isTypedArray","TypedArray","Uint8Array","isHTMLForm","hasOwnProperty","prop","isRegExp","reduceDescriptors","reducer","descriptors","getOwnPropertyDescriptors","reducedDescriptors","descriptor","name","ret","defineProperties","ALPHA","ALPHABET","DIGIT","ALPHA_DIGIT","toUpperCase","isAsyncFn","utils$1","isBuffer","constructor","isFormData","kind","FormData","append","isArrayBufferView","result","ArrayBuffer","isView","buffer","isBoolean","isStream","pipe","merge","caseless","this","assignValue","targetKey","extend","a","b","trim","replace","stripBOM","content","charCodeAt","inherits","superConstructor","props","defineProperty","value","assign","toFlatObject","sourceObj","destObj","filter","propFilter","merged","endsWith","searchString","position","String","undefined","lastIndex","indexOf","toArray","arr","forEachEntry","next","done","pair","matchAll","regExp","matches","exec","push","hasOwnProp","freezeMethods","enumerable","writable","set","Error","toObjectSet","arrayOrString","delimiter","define","split","toCamelCase","m","p1","p2","noop","toFiniteNumber","defaultValue","Number","isFinite","generateString","size","alphabet","Math","random","isSpecCompliantForm","toJSONObject","stack","visit","source","target","reducedValue","isThenable","then","catch","AxiosError","message","code","config","request","response","captureStackTrace","utils","toJSON","description","number","fileName","lineNumber","columnNumber","status","from","error","customProps","axiosError","cause","isVisitable","removeBrackets","renderKey","path","dots","concat","token","join","predicates","test","toFormData","formData","options","TypeError","metaTokens","indexes","option","visitor","defaultVisitor","useBlob","Blob","convertValue","toISOString","Buffer","JSON","stringify","some","isFlatArray","el","index","exposedHelpers","build","pop","encode","charMap","encodeURIComponent","match","AxiosURLSearchParams","params","_pairs","buildURL","url","_encode","serializeFn","serialize","serializedParams","hashmarkIndex","encoder","InterceptorManager$1","handlers","use","fulfilled","rejected","synchronous","runWhen","eject","id","clear","h","transitionalDefaults","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","platform$1","isBrowser","classes","URLSearchParams","protocols","hasBrowserEnv","document","hasStandardBrowserEnv","product","navigator","hasStandardBrowserWebWorkerEnv","WorkerGlobalScope","importScripts","origin","location","href","platform","formDataToJSON","buildPath","isNumericKey","isLast","arrayToObject","entries","parsePropPath","defaults","transitional","adapter","transformRequest","data","headers","contentType","getContentType","hasJSONContentType","isObjectPayload","setContentType","helpers","isNode","toURLEncodedForm","formSerializer","_FormData","env","rawValue","parser","parse","e","stringifySafely","transformResponse","JSONRequested","responseType","strictJSONParsing","ERR_BAD_RESPONSE","timeout","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","common","Accept","method","defaults$1","ignoreDuplicateOf","$internals","normalizeHeader","header","normalizeValue","matchHeaderValue","isHeaderNameFilter","AxiosHeaders","valueOrRewrite","rewrite","setHeader","_value","_header","_rewrite","lHeader","setHeaders","rawHeaders","parsed","line","substring","parseHeaders","get","tokens","tokensRE","parseTokens","has","matcher","delete","deleted","deleteHeader","normalize","format","normalized","w","char","formatHeader","targets","asStrings","static","first","computed","accessors","defineAccessor","accessorName","methodName","arg1","arg2","arg3","configurable","buildAccessors","accessor","mapped","headerValue","AxiosHeaders$2","transformData","fns","isCancel","__CANCEL__","CanceledError","ERR_CANCELED","settle","resolve","reject","ERR_BAD_REQUEST","floor","progressEventReducer","listener","isDownloadStream","freq","bytesNotified","_speedometer","samplesCount","min","bytes","timestamps","firstSampleTS","head","tail","chunkLength","now","Date","startedAt","bytesCount","passed","round","speedometer","timestamp","threshold","timer","force","clearTimeout","setTimeout","throttle","loaded","total","lengthComputable","progressBytes","rate","progress","estimated","event","isURLSameOrigin","msie","userAgent","urlParsingNode","createElement","originURL","resolveURL","setAttribute","protocol","host","search","hash","hostname","port","pathname","charAt","requestURL","cookies","write","expires","domain","secure","cookie","toGMTString","read","RegExp","decodeURIComponent","remove","buildFullPath","baseURL","requestedURL","relativeURL","combineURLs","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","paramsSerializer","timeoutMessage","withCredentials","withXSRFToken","onUploadProgress","onDownloadProgress","decompress","beforeRedirect","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding","configValue","resolveConfig","newConfig","auth","btoa","username","password","unescape","Boolean","xsrfValue","xhrAdapter","XMLHttpRequest","Promise","_config","requestData","requestHeaders","onCanceled","unsubscribe","signal","removeEventListener","onloadend","responseHeaders","getAllResponseHeaders","err","responseText","statusText","open","onreadystatechange","readyState","responseURL","onabort","ECONNABORTED","onerror","ERR_NETWORK","ontimeout","timeoutErrorMessage","ETIMEDOUT","setRequestHeader","addEventListener","upload","cancel","abort","subscribe","aborted","parseProtocol","send","composeSignals$1","signals","controller","AbortController","reason","streamChunk","chunk","chunkSize","byteLength","end","pos","trackStream","stream","onProgress","onFinish","async","iterable","readBytes","ReadableStream","close","enqueue","return","highWaterMark","fetchProgressDecorator","isFetchSupported","fetch","Request","Response","isReadableStreamSupported","encodeText","TextEncoder","arrayBuffer","supportsRequestStream","duplexAccessed","hasContentType","body","duplex","supportsResponseStream","resolvers","res","_","ERR_NOT_SUPPORT","resolveBodyLength","getContentLength","getBodyLength","knownAdapters","http","xhr","fetchOptions","finished","composedSignal","stopTimeout","composeSignals","requestContentLength","contentTypeHeader","_request","isStreamResponse","responseContentLength","responseData","renderReason","isResolvedHandle","adapters","nameOrAdapter","rejectedReasons","reasons","state","throwIfCancellationRequested","throwIfRequested","dispatchRequest","validators","deprecatedWarnings","validator","version","formatMessage","opt","desc","opts","ERR_DEPRECATED","console","warn","assertOptions","schema","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","Axios","instanceConfig","interceptors","InterceptorManager","configOrUrl","dummy","boolean","function","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","unshift","responseInterceptorChain","promise","chain","onFulfilled","onRejected","getUri","generateHTTPMethod","isForm","Axios$2","CancelToken","executor","resolvePromise","_listeners","onfulfilled","_resolve","splice","c","CancelToken$2","HttpStatusCode","Continue","SwitchingProtocols","Processing","EarlyHints","Ok","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","HttpStatusCode$2","axios","createInstance","defaultConfig","instance","VERSION","Cancel","all","promises","spread","callback","isAxiosError","payload","formToJSON","getAdapter","default","axios$1"],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/axios/dist/node/axios.cjs b/node_modules/axios/dist/node/axios.cjs
new file mode 100644
index 00000000..a2edf8c2
--- /dev/null
+++ b/node_modules/axios/dist/node/axios.cjs
@@ -0,0 +1,4705 @@
+// Axios v1.7.2 Copyright (c) 2024 Matt Zabriskie and contributors
+'use strict';
+
+const FormData$1 = require('form-data');
+const url = require('url');
+const proxyFromEnv = require('proxy-from-env');
+const http = require('http');
+const https = require('https');
+const util = require('util');
+const followRedirects = require('follow-redirects');
+const zlib = require('zlib');
+const stream = require('stream');
+const events = require('events');
+
+function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
+
+const FormData__default = /*#__PURE__*/_interopDefaultLegacy(FormData$1);
+const url__default = /*#__PURE__*/_interopDefaultLegacy(url);
+const http__default = /*#__PURE__*/_interopDefaultLegacy(http);
+const https__default = /*#__PURE__*/_interopDefaultLegacy(https);
+const util__default = /*#__PURE__*/_interopDefaultLegacy(util);
+const followRedirects__default = /*#__PURE__*/_interopDefaultLegacy(followRedirects);
+const zlib__default = /*#__PURE__*/_interopDefaultLegacy(zlib);
+const stream__default = /*#__PURE__*/_interopDefaultLegacy(stream);
+
+function bind(fn, thisArg) {
+ return function wrap() {
+ return fn.apply(thisArg, arguments);
+ };
+}
+
+// utils is a library of generic helper functions non-specific to axios
+
+const {toString} = Object.prototype;
+const {getPrototypeOf} = Object;
+
+const kindOf = (cache => thing => {
+ const str = toString.call(thing);
+ return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());
+})(Object.create(null));
+
+const kindOfTest = (type) => {
+ type = type.toLowerCase();
+ return (thing) => kindOf(thing) === type
+};
+
+const typeOfTest = type => thing => typeof thing === type;
+
+/**
+ * Determine if a value is an Array
+ *
+ * @param {Object} val The value to test
+ *
+ * @returns {boolean} True if value is an Array, otherwise false
+ */
+const {isArray} = Array;
+
+/**
+ * Determine if a value is undefined
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if the value is undefined, otherwise false
+ */
+const isUndefined = typeOfTest('undefined');
+
+/**
+ * Determine if a value is a Buffer
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a Buffer, otherwise false
+ */
+function isBuffer(val) {
+ return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)
+ && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);
+}
+
+/**
+ * Determine if a value is an ArrayBuffer
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is an ArrayBuffer, otherwise false
+ */
+const isArrayBuffer = kindOfTest('ArrayBuffer');
+
+
+/**
+ * Determine if a value is a view on an ArrayBuffer
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false
+ */
+function isArrayBufferView(val) {
+ let result;
+ if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {
+ result = ArrayBuffer.isView(val);
+ } else {
+ result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));
+ }
+ return result;
+}
+
+/**
+ * Determine if a value is a String
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a String, otherwise false
+ */
+const isString = typeOfTest('string');
+
+/**
+ * Determine if a value is a Function
+ *
+ * @param {*} val The value to test
+ * @returns {boolean} True if value is a Function, otherwise false
+ */
+const isFunction = typeOfTest('function');
+
+/**
+ * Determine if a value is a Number
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a Number, otherwise false
+ */
+const isNumber = typeOfTest('number');
+
+/**
+ * Determine if a value is an Object
+ *
+ * @param {*} thing The value to test
+ *
+ * @returns {boolean} True if value is an Object, otherwise false
+ */
+const isObject = (thing) => thing !== null && typeof thing === 'object';
+
+/**
+ * Determine if a value is a Boolean
+ *
+ * @param {*} thing The value to test
+ * @returns {boolean} True if value is a Boolean, otherwise false
+ */
+const isBoolean = thing => thing === true || thing === false;
+
+/**
+ * Determine if a value is a plain Object
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a plain Object, otherwise false
+ */
+const isPlainObject = (val) => {
+ if (kindOf(val) !== 'object') {
+ return false;
+ }
+
+ const prototype = getPrototypeOf(val);
+ return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);
+};
+
+/**
+ * Determine if a value is a Date
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a Date, otherwise false
+ */
+const isDate = kindOfTest('Date');
+
+/**
+ * Determine if a value is a File
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a File, otherwise false
+ */
+const isFile = kindOfTest('File');
+
+/**
+ * Determine if a value is a Blob
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a Blob, otherwise false
+ */
+const isBlob = kindOfTest('Blob');
+
+/**
+ * Determine if a value is a FileList
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a File, otherwise false
+ */
+const isFileList = kindOfTest('FileList');
+
+/**
+ * Determine if a value is a Stream
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a Stream, otherwise false
+ */
+const isStream = (val) => isObject(val) && isFunction(val.pipe);
+
+/**
+ * Determine if a value is a FormData
+ *
+ * @param {*} thing The value to test
+ *
+ * @returns {boolean} True if value is an FormData, otherwise false
+ */
+const isFormData = (thing) => {
+ let kind;
+ return thing && (
+ (typeof FormData === 'function' && thing instanceof FormData) || (
+ isFunction(thing.append) && (
+ (kind = kindOf(thing)) === 'formdata' ||
+ // detect form-data instance
+ (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')
+ )
+ )
+ )
+};
+
+/**
+ * Determine if a value is a URLSearchParams object
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a URLSearchParams object, otherwise false
+ */
+const isURLSearchParams = kindOfTest('URLSearchParams');
+
+const [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);
+
+/**
+ * Trim excess whitespace off the beginning and end of a string
+ *
+ * @param {String} str The String to trim
+ *
+ * @returns {String} The String freed of excess whitespace
+ */
+const trim = (str) => str.trim ?
+ str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
+
+/**
+ * Iterate over an Array or an Object invoking a function for each item.
+ *
+ * If `obj` is an Array callback will be called passing
+ * the value, index, and complete array for each item.
+ *
+ * If 'obj' is an Object callback will be called passing
+ * the value, key, and complete object for each property.
+ *
+ * @param {Object|Array} obj The object to iterate
+ * @param {Function} fn The callback to invoke for each item
+ *
+ * @param {Boolean} [allOwnKeys = false]
+ * @returns {any}
+ */
+function forEach(obj, fn, {allOwnKeys = false} = {}) {
+ // Don't bother if no value provided
+ if (obj === null || typeof obj === 'undefined') {
+ return;
+ }
+
+ let i;
+ let l;
+
+ // Force an array if not already something iterable
+ if (typeof obj !== 'object') {
+ /*eslint no-param-reassign:0*/
+ obj = [obj];
+ }
+
+ if (isArray(obj)) {
+ // Iterate over array values
+ for (i = 0, l = obj.length; i < l; i++) {
+ fn.call(null, obj[i], i, obj);
+ }
+ } else {
+ // Iterate over object keys
+ const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);
+ const len = keys.length;
+ let key;
+
+ for (i = 0; i < len; i++) {
+ key = keys[i];
+ fn.call(null, obj[key], key, obj);
+ }
+ }
+}
+
+function findKey(obj, key) {
+ key = key.toLowerCase();
+ const keys = Object.keys(obj);
+ let i = keys.length;
+ let _key;
+ while (i-- > 0) {
+ _key = keys[i];
+ if (key === _key.toLowerCase()) {
+ return _key;
+ }
+ }
+ return null;
+}
+
+const _global = (() => {
+ /*eslint no-undef:0*/
+ if (typeof globalThis !== "undefined") return globalThis;
+ return typeof self !== "undefined" ? self : (typeof window !== 'undefined' ? window : global)
+})();
+
+const isContextDefined = (context) => !isUndefined(context) && context !== _global;
+
+/**
+ * Accepts varargs expecting each argument to be an object, then
+ * immutably merges the properties of each object and returns result.
+ *
+ * When multiple objects contain the same key the later object in
+ * the arguments list will take precedence.
+ *
+ * Example:
+ *
+ * ```js
+ * var result = merge({foo: 123}, {foo: 456});
+ * console.log(result.foo); // outputs 456
+ * ```
+ *
+ * @param {Object} obj1 Object to merge
+ *
+ * @returns {Object} Result of all merge properties
+ */
+function merge(/* obj1, obj2, obj3, ... */) {
+ const {caseless} = isContextDefined(this) && this || {};
+ const result = {};
+ const assignValue = (val, key) => {
+ const targetKey = caseless && findKey(result, key) || key;
+ if (isPlainObject(result[targetKey]) && isPlainObject(val)) {
+ result[targetKey] = merge(result[targetKey], val);
+ } else if (isPlainObject(val)) {
+ result[targetKey] = merge({}, val);
+ } else if (isArray(val)) {
+ result[targetKey] = val.slice();
+ } else {
+ result[targetKey] = val;
+ }
+ };
+
+ for (let i = 0, l = arguments.length; i < l; i++) {
+ arguments[i] && forEach(arguments[i], assignValue);
+ }
+ return result;
+}
+
+/**
+ * Extends object a by mutably adding to it the properties of object b.
+ *
+ * @param {Object} a The object to be extended
+ * @param {Object} b The object to copy properties from
+ * @param {Object} thisArg The object to bind function to
+ *
+ * @param {Boolean} [allOwnKeys]
+ * @returns {Object} The resulting value of object a
+ */
+const extend = (a, b, thisArg, {allOwnKeys}= {}) => {
+ forEach(b, (val, key) => {
+ if (thisArg && isFunction(val)) {
+ a[key] = bind(val, thisArg);
+ } else {
+ a[key] = val;
+ }
+ }, {allOwnKeys});
+ return a;
+};
+
+/**
+ * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)
+ *
+ * @param {string} content with BOM
+ *
+ * @returns {string} content value without BOM
+ */
+const stripBOM = (content) => {
+ if (content.charCodeAt(0) === 0xFEFF) {
+ content = content.slice(1);
+ }
+ return content;
+};
+
+/**
+ * Inherit the prototype methods from one constructor into another
+ * @param {function} constructor
+ * @param {function} superConstructor
+ * @param {object} [props]
+ * @param {object} [descriptors]
+ *
+ * @returns {void}
+ */
+const inherits = (constructor, superConstructor, props, descriptors) => {
+ constructor.prototype = Object.create(superConstructor.prototype, descriptors);
+ constructor.prototype.constructor = constructor;
+ Object.defineProperty(constructor, 'super', {
+ value: superConstructor.prototype
+ });
+ props && Object.assign(constructor.prototype, props);
+};
+
+/**
+ * Resolve object with deep prototype chain to a flat object
+ * @param {Object} sourceObj source object
+ * @param {Object} [destObj]
+ * @param {Function|Boolean} [filter]
+ * @param {Function} [propFilter]
+ *
+ * @returns {Object}
+ */
+const toFlatObject = (sourceObj, destObj, filter, propFilter) => {
+ let props;
+ let i;
+ let prop;
+ const merged = {};
+
+ destObj = destObj || {};
+ // eslint-disable-next-line no-eq-null,eqeqeq
+ if (sourceObj == null) return destObj;
+
+ do {
+ props = Object.getOwnPropertyNames(sourceObj);
+ i = props.length;
+ while (i-- > 0) {
+ prop = props[i];
+ if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {
+ destObj[prop] = sourceObj[prop];
+ merged[prop] = true;
+ }
+ }
+ sourceObj = filter !== false && getPrototypeOf(sourceObj);
+ } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);
+
+ return destObj;
+};
+
+/**
+ * Determines whether a string ends with the characters of a specified string
+ *
+ * @param {String} str
+ * @param {String} searchString
+ * @param {Number} [position= 0]
+ *
+ * @returns {boolean}
+ */
+const endsWith = (str, searchString, position) => {
+ str = String(str);
+ if (position === undefined || position > str.length) {
+ position = str.length;
+ }
+ position -= searchString.length;
+ const lastIndex = str.indexOf(searchString, position);
+ return lastIndex !== -1 && lastIndex === position;
+};
+
+
+/**
+ * Returns new array from array like object or null if failed
+ *
+ * @param {*} [thing]
+ *
+ * @returns {?Array}
+ */
+const toArray = (thing) => {
+ if (!thing) return null;
+ if (isArray(thing)) return thing;
+ let i = thing.length;
+ if (!isNumber(i)) return null;
+ const arr = new Array(i);
+ while (i-- > 0) {
+ arr[i] = thing[i];
+ }
+ return arr;
+};
+
+/**
+ * Checking if the Uint8Array exists and if it does, it returns a function that checks if the
+ * thing passed in is an instance of Uint8Array
+ *
+ * @param {TypedArray}
+ *
+ * @returns {Array}
+ */
+// eslint-disable-next-line func-names
+const isTypedArray = (TypedArray => {
+ // eslint-disable-next-line func-names
+ return thing => {
+ return TypedArray && thing instanceof TypedArray;
+ };
+})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));
+
+/**
+ * For each entry in the object, call the function with the key and value.
+ *
+ * @param {Object} obj - The object to iterate over.
+ * @param {Function} fn - The function to call for each entry.
+ *
+ * @returns {void}
+ */
+const forEachEntry = (obj, fn) => {
+ const generator = obj && obj[Symbol.iterator];
+
+ const iterator = generator.call(obj);
+
+ let result;
+
+ while ((result = iterator.next()) && !result.done) {
+ const pair = result.value;
+ fn.call(obj, pair[0], pair[1]);
+ }
+};
+
+/**
+ * It takes a regular expression and a string, and returns an array of all the matches
+ *
+ * @param {string} regExp - The regular expression to match against.
+ * @param {string} str - The string to search.
+ *
+ * @returns {Array}
+ */
+const matchAll = (regExp, str) => {
+ let matches;
+ const arr = [];
+
+ while ((matches = regExp.exec(str)) !== null) {
+ arr.push(matches);
+ }
+
+ return arr;
+};
+
+/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */
+const isHTMLForm = kindOfTest('HTMLFormElement');
+
+const toCamelCase = str => {
+ return str.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,
+ function replacer(m, p1, p2) {
+ return p1.toUpperCase() + p2;
+ }
+ );
+};
+
+/* Creating a function that will check if an object has a property. */
+const hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);
+
+/**
+ * Determine if a value is a RegExp object
+ *
+ * @param {*} val The value to test
+ *
+ * @returns {boolean} True if value is a RegExp object, otherwise false
+ */
+const isRegExp = kindOfTest('RegExp');
+
+const reduceDescriptors = (obj, reducer) => {
+ const descriptors = Object.getOwnPropertyDescriptors(obj);
+ const reducedDescriptors = {};
+
+ forEach(descriptors, (descriptor, name) => {
+ let ret;
+ if ((ret = reducer(descriptor, name, obj)) !== false) {
+ reducedDescriptors[name] = ret || descriptor;
+ }
+ });
+
+ Object.defineProperties(obj, reducedDescriptors);
+};
+
+/**
+ * Makes all methods read-only
+ * @param {Object} obj
+ */
+
+const freezeMethods = (obj) => {
+ reduceDescriptors(obj, (descriptor, name) => {
+ // skip restricted props in strict mode
+ if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {
+ return false;
+ }
+
+ const value = obj[name];
+
+ if (!isFunction(value)) return;
+
+ descriptor.enumerable = false;
+
+ if ('writable' in descriptor) {
+ descriptor.writable = false;
+ return;
+ }
+
+ if (!descriptor.set) {
+ descriptor.set = () => {
+ throw Error('Can not rewrite read-only method \'' + name + '\'');
+ };
+ }
+ });
+};
+
+const toObjectSet = (arrayOrString, delimiter) => {
+ const obj = {};
+
+ const define = (arr) => {
+ arr.forEach(value => {
+ obj[value] = true;
+ });
+ };
+
+ isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));
+
+ return obj;
+};
+
+const noop = () => {};
+
+const toFiniteNumber = (value, defaultValue) => {
+ return value != null && Number.isFinite(value = +value) ? value : defaultValue;
+};
+
+const ALPHA = 'abcdefghijklmnopqrstuvwxyz';
+
+const DIGIT = '0123456789';
+
+const ALPHABET = {
+ DIGIT,
+ ALPHA,
+ ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT
+};
+
+const generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {
+ let str = '';
+ const {length} = alphabet;
+ while (size--) {
+ str += alphabet[Math.random() * length|0];
+ }
+
+ return str;
+};
+
+/**
+ * If the thing is a FormData object, return true, otherwise return false.
+ *
+ * @param {unknown} thing - The thing to check.
+ *
+ * @returns {boolean}
+ */
+function isSpecCompliantForm(thing) {
+ return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);
+}
+
+const toJSONObject = (obj) => {
+ const stack = new Array(10);
+
+ const visit = (source, i) => {
+
+ if (isObject(source)) {
+ if (stack.indexOf(source) >= 0) {
+ return;
+ }
+
+ if(!('toJSON' in source)) {
+ stack[i] = source;
+ const target = isArray(source) ? [] : {};
+
+ forEach(source, (value, key) => {
+ const reducedValue = visit(value, i + 1);
+ !isUndefined(reducedValue) && (target[key] = reducedValue);
+ });
+
+ stack[i] = undefined;
+
+ return target;
+ }
+ }
+
+ return source;
+ };
+
+ return visit(obj, 0);
+};
+
+const isAsyncFn = kindOfTest('AsyncFunction');
+
+const isThenable = (thing) =>
+ thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);
+
+const utils$1 = {
+ isArray,
+ isArrayBuffer,
+ isBuffer,
+ isFormData,
+ isArrayBufferView,
+ isString,
+ isNumber,
+ isBoolean,
+ isObject,
+ isPlainObject,
+ isReadableStream,
+ isRequest,
+ isResponse,
+ isHeaders,
+ isUndefined,
+ isDate,
+ isFile,
+ isBlob,
+ isRegExp,
+ isFunction,
+ isStream,
+ isURLSearchParams,
+ isTypedArray,
+ isFileList,
+ forEach,
+ merge,
+ extend,
+ trim,
+ stripBOM,
+ inherits,
+ toFlatObject,
+ kindOf,
+ kindOfTest,
+ endsWith,
+ toArray,
+ forEachEntry,
+ matchAll,
+ isHTMLForm,
+ hasOwnProperty,
+ hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection
+ reduceDescriptors,
+ freezeMethods,
+ toObjectSet,
+ toCamelCase,
+ noop,
+ toFiniteNumber,
+ findKey,
+ global: _global,
+ isContextDefined,
+ ALPHABET,
+ generateString,
+ isSpecCompliantForm,
+ toJSONObject,
+ isAsyncFn,
+ isThenable
+};
+
+/**
+ * Create an Error with the specified message, config, error code, request and response.
+ *
+ * @param {string} message The error message.
+ * @param {string} [code] The error code (for example, 'ECONNABORTED').
+ * @param {Object} [config] The config.
+ * @param {Object} [request] The request.
+ * @param {Object} [response] The response.
+ *
+ * @returns {Error} The created error.
+ */
+function AxiosError(message, code, config, request, response) {
+ Error.call(this);
+
+ if (Error.captureStackTrace) {
+ Error.captureStackTrace(this, this.constructor);
+ } else {
+ this.stack = (new Error()).stack;
+ }
+
+ this.message = message;
+ this.name = 'AxiosError';
+ code && (this.code = code);
+ config && (this.config = config);
+ request && (this.request = request);
+ response && (this.response = response);
+}
+
+utils$1.inherits(AxiosError, Error, {
+ toJSON: function toJSON() {
+ return {
+ // Standard
+ message: this.message,
+ name: this.name,
+ // Microsoft
+ description: this.description,
+ number: this.number,
+ // Mozilla
+ fileName: this.fileName,
+ lineNumber: this.lineNumber,
+ columnNumber: this.columnNumber,
+ stack: this.stack,
+ // Axios
+ config: utils$1.toJSONObject(this.config),
+ code: this.code,
+ status: this.response && this.response.status ? this.response.status : null
+ };
+ }
+});
+
+const prototype$1 = AxiosError.prototype;
+const descriptors = {};
+
+[
+ 'ERR_BAD_OPTION_VALUE',
+ 'ERR_BAD_OPTION',
+ 'ECONNABORTED',
+ 'ETIMEDOUT',
+ 'ERR_NETWORK',
+ 'ERR_FR_TOO_MANY_REDIRECTS',
+ 'ERR_DEPRECATED',
+ 'ERR_BAD_RESPONSE',
+ 'ERR_BAD_REQUEST',
+ 'ERR_CANCELED',
+ 'ERR_NOT_SUPPORT',
+ 'ERR_INVALID_URL'
+// eslint-disable-next-line func-names
+].forEach(code => {
+ descriptors[code] = {value: code};
+});
+
+Object.defineProperties(AxiosError, descriptors);
+Object.defineProperty(prototype$1, 'isAxiosError', {value: true});
+
+// eslint-disable-next-line func-names
+AxiosError.from = (error, code, config, request, response, customProps) => {
+ const axiosError = Object.create(prototype$1);
+
+ utils$1.toFlatObject(error, axiosError, function filter(obj) {
+ return obj !== Error.prototype;
+ }, prop => {
+ return prop !== 'isAxiosError';
+ });
+
+ AxiosError.call(axiosError, error.message, code, config, request, response);
+
+ axiosError.cause = error;
+
+ axiosError.name = error.name;
+
+ customProps && Object.assign(axiosError, customProps);
+
+ return axiosError;
+};
+
+/**
+ * Determines if the given thing is a array or js object.
+ *
+ * @param {string} thing - The object or array to be visited.
+ *
+ * @returns {boolean}
+ */
+function isVisitable(thing) {
+ return utils$1.isPlainObject(thing) || utils$1.isArray(thing);
+}
+
+/**
+ * It removes the brackets from the end of a string
+ *
+ * @param {string} key - The key of the parameter.
+ *
+ * @returns {string} the key without the brackets.
+ */
+function removeBrackets(key) {
+ return utils$1.endsWith(key, '[]') ? key.slice(0, -2) : key;
+}
+
+/**
+ * It takes a path, a key, and a boolean, and returns a string
+ *
+ * @param {string} path - The path to the current key.
+ * @param {string} key - The key of the current object being iterated over.
+ * @param {string} dots - If true, the key will be rendered with dots instead of brackets.
+ *
+ * @returns {string} The path to the current key.
+ */
+function renderKey(path, key, dots) {
+ if (!path) return key;
+ return path.concat(key).map(function each(token, i) {
+ // eslint-disable-next-line no-param-reassign
+ token = removeBrackets(token);
+ return !dots && i ? '[' + token + ']' : token;
+ }).join(dots ? '.' : '');
+}
+
+/**
+ * If the array is an array and none of its elements are visitable, then it's a flat array.
+ *
+ * @param {Array} arr - The array to check
+ *
+ * @returns {boolean}
+ */
+function isFlatArray(arr) {
+ return utils$1.isArray(arr) && !arr.some(isVisitable);
+}
+
+const predicates = utils$1.toFlatObject(utils$1, {}, null, function filter(prop) {
+ return /^is[A-Z]/.test(prop);
+});
+
+/**
+ * Convert a data object to FormData
+ *
+ * @param {Object} obj
+ * @param {?Object} [formData]
+ * @param {?Object} [options]
+ * @param {Function} [options.visitor]
+ * @param {Boolean} [options.metaTokens = true]
+ * @param {Boolean} [options.dots = false]
+ * @param {?Boolean} [options.indexes = false]
+ *
+ * @returns {Object}
+ **/
+
+/**
+ * It converts an object into a FormData object
+ *
+ * @param {Object} obj - The object to convert to form data.
+ * @param {string} formData - The FormData object to append to.
+ * @param {Object} options
+ *
+ * @returns
+ */
+function toFormData(obj, formData, options) {
+ if (!utils$1.isObject(obj)) {
+ throw new TypeError('target must be an object');
+ }
+
+ // eslint-disable-next-line no-param-reassign
+ formData = formData || new (FormData__default["default"] || FormData)();
+
+ // eslint-disable-next-line no-param-reassign
+ options = utils$1.toFlatObject(options, {
+ metaTokens: true,
+ dots: false,
+ indexes: false
+ }, false, function defined(option, source) {
+ // eslint-disable-next-line no-eq-null,eqeqeq
+ return !utils$1.isUndefined(source[option]);
+ });
+
+ const metaTokens = options.metaTokens;
+ // eslint-disable-next-line no-use-before-define
+ const visitor = options.visitor || defaultVisitor;
+ const dots = options.dots;
+ const indexes = options.indexes;
+ const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;
+ const useBlob = _Blob && utils$1.isSpecCompliantForm(formData);
+
+ if (!utils$1.isFunction(visitor)) {
+ throw new TypeError('visitor must be a function');
+ }
+
+ function convertValue(value) {
+ if (value === null) return '';
+
+ if (utils$1.isDate(value)) {
+ return value.toISOString();
+ }
+
+ if (!useBlob && utils$1.isBlob(value)) {
+ throw new AxiosError('Blob is not supported. Use a Buffer instead.');
+ }
+
+ if (utils$1.isArrayBuffer(value) || utils$1.isTypedArray(value)) {
+ return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);
+ }
+
+ return value;
+ }
+
+ /**
+ * Default visitor.
+ *
+ * @param {*} value
+ * @param {String|Number} key
+ * @param {Array} path
+ * @this {FormData}
+ *
+ * @returns {boolean} return true to visit the each prop of the value recursively
+ */
+ function defaultVisitor(value, key, path) {
+ let arr = value;
+
+ if (value && !path && typeof value === 'object') {
+ if (utils$1.endsWith(key, '{}')) {
+ // eslint-disable-next-line no-param-reassign
+ key = metaTokens ? key : key.slice(0, -2);
+ // eslint-disable-next-line no-param-reassign
+ value = JSON.stringify(value);
+ } else if (
+ (utils$1.isArray(value) && isFlatArray(value)) ||
+ ((utils$1.isFileList(value) || utils$1.endsWith(key, '[]')) && (arr = utils$1.toArray(value))
+ )) {
+ // eslint-disable-next-line no-param-reassign
+ key = removeBrackets(key);
+
+ arr.forEach(function each(el, index) {
+ !(utils$1.isUndefined(el) || el === null) && formData.append(
+ // eslint-disable-next-line no-nested-ternary
+ indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),
+ convertValue(el)
+ );
+ });
+ return false;
+ }
+ }
+
+ if (isVisitable(value)) {
+ return true;
+ }
+
+ formData.append(renderKey(path, key, dots), convertValue(value));
+
+ return false;
+ }
+
+ const stack = [];
+
+ const exposedHelpers = Object.assign(predicates, {
+ defaultVisitor,
+ convertValue,
+ isVisitable
+ });
+
+ function build(value, path) {
+ if (utils$1.isUndefined(value)) return;
+
+ if (stack.indexOf(value) !== -1) {
+ throw Error('Circular reference detected in ' + path.join('.'));
+ }
+
+ stack.push(value);
+
+ utils$1.forEach(value, function each(el, key) {
+ const result = !(utils$1.isUndefined(el) || el === null) && visitor.call(
+ formData, el, utils$1.isString(key) ? key.trim() : key, path, exposedHelpers
+ );
+
+ if (result === true) {
+ build(el, path ? path.concat(key) : [key]);
+ }
+ });
+
+ stack.pop();
+ }
+
+ if (!utils$1.isObject(obj)) {
+ throw new TypeError('data must be an object');
+ }
+
+ build(obj);
+
+ return formData;
+}
+
+/**
+ * It encodes a string by replacing all characters that are not in the unreserved set with
+ * their percent-encoded equivalents
+ *
+ * @param {string} str - The string to encode.
+ *
+ * @returns {string} The encoded string.
+ */
+function encode$1(str) {
+ const charMap = {
+ '!': '%21',
+ "'": '%27',
+ '(': '%28',
+ ')': '%29',
+ '~': '%7E',
+ '%20': '+',
+ '%00': '\x00'
+ };
+ return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {
+ return charMap[match];
+ });
+}
+
+/**
+ * It takes a params object and converts it to a FormData object
+ *
+ * @param {Object} params - The parameters to be converted to a FormData object.
+ * @param {Object} options - The options object passed to the Axios constructor.
+ *
+ * @returns {void}
+ */
+function AxiosURLSearchParams(params, options) {
+ this._pairs = [];
+
+ params && toFormData(params, this, options);
+}
+
+const prototype = AxiosURLSearchParams.prototype;
+
+prototype.append = function append(name, value) {
+ this._pairs.push([name, value]);
+};
+
+prototype.toString = function toString(encoder) {
+ const _encode = encoder ? function(value) {
+ return encoder.call(this, value, encode$1);
+ } : encode$1;
+
+ return this._pairs.map(function each(pair) {
+ return _encode(pair[0]) + '=' + _encode(pair[1]);
+ }, '').join('&');
+};
+
+/**
+ * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their
+ * URI encoded counterparts
+ *
+ * @param {string} val The value to be encoded.
+ *
+ * @returns {string} The encoded value.
+ */
+function encode(val) {
+ return encodeURIComponent(val).
+ replace(/%3A/gi, ':').
+ replace(/%24/g, '$').
+ replace(/%2C/gi, ',').
+ replace(/%20/g, '+').
+ replace(/%5B/gi, '[').
+ replace(/%5D/gi, ']');
+}
+
+/**
+ * Build a URL by appending params to the end
+ *
+ * @param {string} url The base of the url (e.g., http://www.google.com)
+ * @param {object} [params] The params to be appended
+ * @param {?object} options
+ *
+ * @returns {string} The formatted url
+ */
+function buildURL(url, params, options) {
+ /*eslint no-param-reassign:0*/
+ if (!params) {
+ return url;
+ }
+
+ const _encode = options && options.encode || encode;
+
+ const serializeFn = options && options.serialize;
+
+ let serializedParams;
+
+ if (serializeFn) {
+ serializedParams = serializeFn(params, options);
+ } else {
+ serializedParams = utils$1.isURLSearchParams(params) ?
+ params.toString() :
+ new AxiosURLSearchParams(params, options).toString(_encode);
+ }
+
+ if (serializedParams) {
+ const hashmarkIndex = url.indexOf("#");
+
+ if (hashmarkIndex !== -1) {
+ url = url.slice(0, hashmarkIndex);
+ }
+ url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;
+ }
+
+ return url;
+}
+
+class InterceptorManager {
+ constructor() {
+ this.handlers = [];
+ }
+
+ /**
+ * Add a new interceptor to the stack
+ *
+ * @param {Function} fulfilled The function to handle `then` for a `Promise`
+ * @param {Function} rejected The function to handle `reject` for a `Promise`
+ *
+ * @return {Number} An ID used to remove interceptor later
+ */
+ use(fulfilled, rejected, options) {
+ this.handlers.push({
+ fulfilled,
+ rejected,
+ synchronous: options ? options.synchronous : false,
+ runWhen: options ? options.runWhen : null
+ });
+ return this.handlers.length - 1;
+ }
+
+ /**
+ * Remove an interceptor from the stack
+ *
+ * @param {Number} id The ID that was returned by `use`
+ *
+ * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise
+ */
+ eject(id) {
+ if (this.handlers[id]) {
+ this.handlers[id] = null;
+ }
+ }
+
+ /**
+ * Clear all interceptors from the stack
+ *
+ * @returns {void}
+ */
+ clear() {
+ if (this.handlers) {
+ this.handlers = [];
+ }
+ }
+
+ /**
+ * Iterate over all the registered interceptors
+ *
+ * This method is particularly useful for skipping over any
+ * interceptors that may have become `null` calling `eject`.
+ *
+ * @param {Function} fn The function to call for each interceptor
+ *
+ * @returns {void}
+ */
+ forEach(fn) {
+ utils$1.forEach(this.handlers, function forEachHandler(h) {
+ if (h !== null) {
+ fn(h);
+ }
+ });
+ }
+}
+
+const InterceptorManager$1 = InterceptorManager;
+
+const transitionalDefaults = {
+ silentJSONParsing: true,
+ forcedJSONParsing: true,
+ clarifyTimeoutError: false
+};
+
+const URLSearchParams = url__default["default"].URLSearchParams;
+
+const platform$1 = {
+ isNode: true,
+ classes: {
+ URLSearchParams,
+ FormData: FormData__default["default"],
+ Blob: typeof Blob !== 'undefined' && Blob || null
+ },
+ protocols: [ 'http', 'https', 'file', 'data' ]
+};
+
+const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';
+
+/**
+ * Determine if we're running in a standard browser environment
+ *
+ * This allows axios to run in a web worker, and react-native.
+ * Both environments support XMLHttpRequest, but not fully standard globals.
+ *
+ * web workers:
+ * typeof window -> undefined
+ * typeof document -> undefined
+ *
+ * react-native:
+ * navigator.product -> 'ReactNative'
+ * nativescript
+ * navigator.product -> 'NativeScript' or 'NS'
+ *
+ * @returns {boolean}
+ */
+const hasStandardBrowserEnv = (
+ (product) => {
+ return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0
+ })(typeof navigator !== 'undefined' && navigator.product);
+
+/**
+ * Determine if we're running in a standard browser webWorker environment
+ *
+ * Although the `isStandardBrowserEnv` method indicates that
+ * `allows axios to run in a web worker`, the WebWorker will still be
+ * filtered out due to its judgment standard
+ * `typeof window !== 'undefined' && typeof document !== 'undefined'`.
+ * This leads to a problem when axios post `FormData` in webWorker
+ */
+const hasStandardBrowserWebWorkerEnv = (() => {
+ return (
+ typeof WorkerGlobalScope !== 'undefined' &&
+ // eslint-disable-next-line no-undef
+ self instanceof WorkerGlobalScope &&
+ typeof self.importScripts === 'function'
+ );
+})();
+
+const origin = hasBrowserEnv && window.location.href || 'http://localhost';
+
+const utils = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ hasBrowserEnv: hasBrowserEnv,
+ hasStandardBrowserWebWorkerEnv: hasStandardBrowserWebWorkerEnv,
+ hasStandardBrowserEnv: hasStandardBrowserEnv,
+ origin: origin
+});
+
+const platform = {
+ ...utils,
+ ...platform$1
+};
+
+function toURLEncodedForm(data, options) {
+ return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({
+ visitor: function(value, key, path, helpers) {
+ if (platform.isNode && utils$1.isBuffer(value)) {
+ this.append(key, value.toString('base64'));
+ return false;
+ }
+
+ return helpers.defaultVisitor.apply(this, arguments);
+ }
+ }, options));
+}
+
+/**
+ * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']
+ *
+ * @param {string} name - The name of the property to get.
+ *
+ * @returns An array of strings.
+ */
+function parsePropPath(name) {
+ // foo[x][y][z]
+ // foo.x.y.z
+ // foo-x-y-z
+ // foo x y z
+ return utils$1.matchAll(/\w+|\[(\w*)]/g, name).map(match => {
+ return match[0] === '[]' ? '' : match[1] || match[0];
+ });
+}
+
+/**
+ * Convert an array to an object.
+ *
+ * @param {Array} arr - The array to convert to an object.
+ *
+ * @returns An object with the same keys and values as the array.
+ */
+function arrayToObject(arr) {
+ const obj = {};
+ const keys = Object.keys(arr);
+ let i;
+ const len = keys.length;
+ let key;
+ for (i = 0; i < len; i++) {
+ key = keys[i];
+ obj[key] = arr[key];
+ }
+ return obj;
+}
+
+/**
+ * It takes a FormData object and returns a JavaScript object
+ *
+ * @param {string} formData The FormData object to convert to JSON.
+ *
+ * @returns {Object | null} The converted object.
+ */
+function formDataToJSON(formData) {
+ function buildPath(path, value, target, index) {
+ let name = path[index++];
+
+ if (name === '__proto__') return true;
+
+ const isNumericKey = Number.isFinite(+name);
+ const isLast = index >= path.length;
+ name = !name && utils$1.isArray(target) ? target.length : name;
+
+ if (isLast) {
+ if (utils$1.hasOwnProp(target, name)) {
+ target[name] = [target[name], value];
+ } else {
+ target[name] = value;
+ }
+
+ return !isNumericKey;
+ }
+
+ if (!target[name] || !utils$1.isObject(target[name])) {
+ target[name] = [];
+ }
+
+ const result = buildPath(path, value, target[name], index);
+
+ if (result && utils$1.isArray(target[name])) {
+ target[name] = arrayToObject(target[name]);
+ }
+
+ return !isNumericKey;
+ }
+
+ if (utils$1.isFormData(formData) && utils$1.isFunction(formData.entries)) {
+ const obj = {};
+
+ utils$1.forEachEntry(formData, (name, value) => {
+ buildPath(parsePropPath(name), value, obj, 0);
+ });
+
+ return obj;
+ }
+
+ return null;
+}
+
+/**
+ * It takes a string, tries to parse it, and if it fails, it returns the stringified version
+ * of the input
+ *
+ * @param {any} rawValue - The value to be stringified.
+ * @param {Function} parser - A function that parses a string into a JavaScript object.
+ * @param {Function} encoder - A function that takes a value and returns a string.
+ *
+ * @returns {string} A stringified version of the rawValue.
+ */
+function stringifySafely(rawValue, parser, encoder) {
+ if (utils$1.isString(rawValue)) {
+ try {
+ (parser || JSON.parse)(rawValue);
+ return utils$1.trim(rawValue);
+ } catch (e) {
+ if (e.name !== 'SyntaxError') {
+ throw e;
+ }
+ }
+ }
+
+ return (encoder || JSON.stringify)(rawValue);
+}
+
+const defaults = {
+
+ transitional: transitionalDefaults,
+
+ adapter: ['xhr', 'http', 'fetch'],
+
+ transformRequest: [function transformRequest(data, headers) {
+ const contentType = headers.getContentType() || '';
+ const hasJSONContentType = contentType.indexOf('application/json') > -1;
+ const isObjectPayload = utils$1.isObject(data);
+
+ if (isObjectPayload && utils$1.isHTMLForm(data)) {
+ data = new FormData(data);
+ }
+
+ const isFormData = utils$1.isFormData(data);
+
+ if (isFormData) {
+ return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;
+ }
+
+ if (utils$1.isArrayBuffer(data) ||
+ utils$1.isBuffer(data) ||
+ utils$1.isStream(data) ||
+ utils$1.isFile(data) ||
+ utils$1.isBlob(data) ||
+ utils$1.isReadableStream(data)
+ ) {
+ return data;
+ }
+ if (utils$1.isArrayBufferView(data)) {
+ return data.buffer;
+ }
+ if (utils$1.isURLSearchParams(data)) {
+ headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);
+ return data.toString();
+ }
+
+ let isFileList;
+
+ if (isObjectPayload) {
+ if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {
+ return toURLEncodedForm(data, this.formSerializer).toString();
+ }
+
+ if ((isFileList = utils$1.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {
+ const _FormData = this.env && this.env.FormData;
+
+ return toFormData(
+ isFileList ? {'files[]': data} : data,
+ _FormData && new _FormData(),
+ this.formSerializer
+ );
+ }
+ }
+
+ if (isObjectPayload || hasJSONContentType ) {
+ headers.setContentType('application/json', false);
+ return stringifySafely(data);
+ }
+
+ return data;
+ }],
+
+ transformResponse: [function transformResponse(data) {
+ const transitional = this.transitional || defaults.transitional;
+ const forcedJSONParsing = transitional && transitional.forcedJSONParsing;
+ const JSONRequested = this.responseType === 'json';
+
+ if (utils$1.isResponse(data) || utils$1.isReadableStream(data)) {
+ return data;
+ }
+
+ if (data && utils$1.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {
+ const silentJSONParsing = transitional && transitional.silentJSONParsing;
+ const strictJSONParsing = !silentJSONParsing && JSONRequested;
+
+ try {
+ return JSON.parse(data);
+ } catch (e) {
+ if (strictJSONParsing) {
+ if (e.name === 'SyntaxError') {
+ throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);
+ }
+ throw e;
+ }
+ }
+ }
+
+ return data;
+ }],
+
+ /**
+ * A timeout in milliseconds to abort a request. If set to 0 (default) a
+ * timeout is not created.
+ */
+ timeout: 0,
+
+ xsrfCookieName: 'XSRF-TOKEN',
+ xsrfHeaderName: 'X-XSRF-TOKEN',
+
+ maxContentLength: -1,
+ maxBodyLength: -1,
+
+ env: {
+ FormData: platform.classes.FormData,
+ Blob: platform.classes.Blob
+ },
+
+ validateStatus: function validateStatus(status) {
+ return status >= 200 && status < 300;
+ },
+
+ headers: {
+ common: {
+ 'Accept': 'application/json, text/plain, */*',
+ 'Content-Type': undefined
+ }
+ }
+};
+
+utils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {
+ defaults.headers[method] = {};
+});
+
+const defaults$1 = defaults;
+
+// RawAxiosHeaders whose duplicates are ignored by node
+// c.f. https://nodejs.org/api/http.html#http_message_headers
+const ignoreDuplicateOf = utils$1.toObjectSet([
+ 'age', 'authorization', 'content-length', 'content-type', 'etag',
+ 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',
+ 'last-modified', 'location', 'max-forwards', 'proxy-authorization',
+ 'referer', 'retry-after', 'user-agent'
+]);
+
+/**
+ * Parse headers into an object
+ *
+ * ```
+ * Date: Wed, 27 Aug 2014 08:58:49 GMT
+ * Content-Type: application/json
+ * Connection: keep-alive
+ * Transfer-Encoding: chunked
+ * ```
+ *
+ * @param {String} rawHeaders Headers needing to be parsed
+ *
+ * @returns {Object} Headers parsed into an object
+ */
+const parseHeaders = rawHeaders => {
+ const parsed = {};
+ let key;
+ let val;
+ let i;
+
+ rawHeaders && rawHeaders.split('\n').forEach(function parser(line) {
+ i = line.indexOf(':');
+ key = line.substring(0, i).trim().toLowerCase();
+ val = line.substring(i + 1).trim();
+
+ if (!key || (parsed[key] && ignoreDuplicateOf[key])) {
+ return;
+ }
+
+ if (key === 'set-cookie') {
+ if (parsed[key]) {
+ parsed[key].push(val);
+ } else {
+ parsed[key] = [val];
+ }
+ } else {
+ parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;
+ }
+ });
+
+ return parsed;
+};
+
+const $internals = Symbol('internals');
+
+function normalizeHeader(header) {
+ return header && String(header).trim().toLowerCase();
+}
+
+function normalizeValue(value) {
+ if (value === false || value == null) {
+ return value;
+ }
+
+ return utils$1.isArray(value) ? value.map(normalizeValue) : String(value);
+}
+
+function parseTokens(str) {
+ const tokens = Object.create(null);
+ const tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;
+ let match;
+
+ while ((match = tokensRE.exec(str))) {
+ tokens[match[1]] = match[2];
+ }
+
+ return tokens;
+}
+
+const isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());
+
+function matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {
+ if (utils$1.isFunction(filter)) {
+ return filter.call(this, value, header);
+ }
+
+ if (isHeaderNameFilter) {
+ value = header;
+ }
+
+ if (!utils$1.isString(value)) return;
+
+ if (utils$1.isString(filter)) {
+ return value.indexOf(filter) !== -1;
+ }
+
+ if (utils$1.isRegExp(filter)) {
+ return filter.test(value);
+ }
+}
+
+function formatHeader(header) {
+ return header.trim()
+ .toLowerCase().replace(/([a-z\d])(\w*)/g, (w, char, str) => {
+ return char.toUpperCase() + str;
+ });
+}
+
+function buildAccessors(obj, header) {
+ const accessorName = utils$1.toCamelCase(' ' + header);
+
+ ['get', 'set', 'has'].forEach(methodName => {
+ Object.defineProperty(obj, methodName + accessorName, {
+ value: function(arg1, arg2, arg3) {
+ return this[methodName].call(this, header, arg1, arg2, arg3);
+ },
+ configurable: true
+ });
+ });
+}
+
+class AxiosHeaders {
+ constructor(headers) {
+ headers && this.set(headers);
+ }
+
+ set(header, valueOrRewrite, rewrite) {
+ const self = this;
+
+ function setHeader(_value, _header, _rewrite) {
+ const lHeader = normalizeHeader(_header);
+
+ if (!lHeader) {
+ throw new Error('header name must be a non-empty string');
+ }
+
+ const key = utils$1.findKey(self, lHeader);
+
+ if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {
+ self[key || _header] = normalizeValue(_value);
+ }
+ }
+
+ const setHeaders = (headers, _rewrite) =>
+ utils$1.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));
+
+ if (utils$1.isPlainObject(header) || header instanceof this.constructor) {
+ setHeaders(header, valueOrRewrite);
+ } else if(utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {
+ setHeaders(parseHeaders(header), valueOrRewrite);
+ } else if (utils$1.isHeaders(header)) {
+ for (const [key, value] of header.entries()) {
+ setHeader(value, key, rewrite);
+ }
+ } else {
+ header != null && setHeader(valueOrRewrite, header, rewrite);
+ }
+
+ return this;
+ }
+
+ get(header, parser) {
+ header = normalizeHeader(header);
+
+ if (header) {
+ const key = utils$1.findKey(this, header);
+
+ if (key) {
+ const value = this[key];
+
+ if (!parser) {
+ return value;
+ }
+
+ if (parser === true) {
+ return parseTokens(value);
+ }
+
+ if (utils$1.isFunction(parser)) {
+ return parser.call(this, value, key);
+ }
+
+ if (utils$1.isRegExp(parser)) {
+ return parser.exec(value);
+ }
+
+ throw new TypeError('parser must be boolean|regexp|function');
+ }
+ }
+ }
+
+ has(header, matcher) {
+ header = normalizeHeader(header);
+
+ if (header) {
+ const key = utils$1.findKey(this, header);
+
+ return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));
+ }
+
+ return false;
+ }
+
+ delete(header, matcher) {
+ const self = this;
+ let deleted = false;
+
+ function deleteHeader(_header) {
+ _header = normalizeHeader(_header);
+
+ if (_header) {
+ const key = utils$1.findKey(self, _header);
+
+ if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {
+ delete self[key];
+
+ deleted = true;
+ }
+ }
+ }
+
+ if (utils$1.isArray(header)) {
+ header.forEach(deleteHeader);
+ } else {
+ deleteHeader(header);
+ }
+
+ return deleted;
+ }
+
+ clear(matcher) {
+ const keys = Object.keys(this);
+ let i = keys.length;
+ let deleted = false;
+
+ while (i--) {
+ const key = keys[i];
+ if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {
+ delete this[key];
+ deleted = true;
+ }
+ }
+
+ return deleted;
+ }
+
+ normalize(format) {
+ const self = this;
+ const headers = {};
+
+ utils$1.forEach(this, (value, header) => {
+ const key = utils$1.findKey(headers, header);
+
+ if (key) {
+ self[key] = normalizeValue(value);
+ delete self[header];
+ return;
+ }
+
+ const normalized = format ? formatHeader(header) : String(header).trim();
+
+ if (normalized !== header) {
+ delete self[header];
+ }
+
+ self[normalized] = normalizeValue(value);
+
+ headers[normalized] = true;
+ });
+
+ return this;
+ }
+
+ concat(...targets) {
+ return this.constructor.concat(this, ...targets);
+ }
+
+ toJSON(asStrings) {
+ const obj = Object.create(null);
+
+ utils$1.forEach(this, (value, header) => {
+ value != null && value !== false && (obj[header] = asStrings && utils$1.isArray(value) ? value.join(', ') : value);
+ });
+
+ return obj;
+ }
+
+ [Symbol.iterator]() {
+ return Object.entries(this.toJSON())[Symbol.iterator]();
+ }
+
+ toString() {
+ return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\n');
+ }
+
+ get [Symbol.toStringTag]() {
+ return 'AxiosHeaders';
+ }
+
+ static from(thing) {
+ return thing instanceof this ? thing : new this(thing);
+ }
+
+ static concat(first, ...targets) {
+ const computed = new this(first);
+
+ targets.forEach((target) => computed.set(target));
+
+ return computed;
+ }
+
+ static accessor(header) {
+ const internals = this[$internals] = (this[$internals] = {
+ accessors: {}
+ });
+
+ const accessors = internals.accessors;
+ const prototype = this.prototype;
+
+ function defineAccessor(_header) {
+ const lHeader = normalizeHeader(_header);
+
+ if (!accessors[lHeader]) {
+ buildAccessors(prototype, _header);
+ accessors[lHeader] = true;
+ }
+ }
+
+ utils$1.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);
+
+ return this;
+ }
+}
+
+AxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);
+
+// reserved names hotfix
+utils$1.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {
+ let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`
+ return {
+ get: () => value,
+ set(headerValue) {
+ this[mapped] = headerValue;
+ }
+ }
+});
+
+utils$1.freezeMethods(AxiosHeaders);
+
+const AxiosHeaders$1 = AxiosHeaders;
+
+/**
+ * Transform the data for a request or a response
+ *
+ * @param {Array|Function} fns A single function or Array of functions
+ * @param {?Object} response The response object
+ *
+ * @returns {*} The resulting transformed data
+ */
+function transformData(fns, response) {
+ const config = this || defaults$1;
+ const context = response || config;
+ const headers = AxiosHeaders$1.from(context.headers);
+ let data = context.data;
+
+ utils$1.forEach(fns, function transform(fn) {
+ data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);
+ });
+
+ headers.normalize();
+
+ return data;
+}
+
+function isCancel(value) {
+ return !!(value && value.__CANCEL__);
+}
+
+/**
+ * A `CanceledError` is an object that is thrown when an operation is canceled.
+ *
+ * @param {string=} message The message.
+ * @param {Object=} config The config.
+ * @param {Object=} request The request.
+ *
+ * @returns {CanceledError} The created error.
+ */
+function CanceledError(message, config, request) {
+ // eslint-disable-next-line no-eq-null,eqeqeq
+ AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);
+ this.name = 'CanceledError';
+}
+
+utils$1.inherits(CanceledError, AxiosError, {
+ __CANCEL__: true
+});
+
+/**
+ * Resolve or reject a Promise based on response status.
+ *
+ * @param {Function} resolve A function that resolves the promise.
+ * @param {Function} reject A function that rejects the promise.
+ * @param {object} response The response.
+ *
+ * @returns {object} The response.
+ */
+function settle(resolve, reject, response) {
+ const validateStatus = response.config.validateStatus;
+ if (!response.status || !validateStatus || validateStatus(response.status)) {
+ resolve(response);
+ } else {
+ reject(new AxiosError(
+ 'Request failed with status code ' + response.status,
+ [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],
+ response.config,
+ response.request,
+ response
+ ));
+ }
+}
+
+/**
+ * Determines whether the specified URL is absolute
+ *
+ * @param {string} url The URL to test
+ *
+ * @returns {boolean} True if the specified URL is absolute, otherwise false
+ */
+function isAbsoluteURL(url) {
+ // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL).
+ // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed
+ // by any combination of letters, digits, plus, period, or hyphen.
+ return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url);
+}
+
+/**
+ * Creates a new URL by combining the specified URLs
+ *
+ * @param {string} baseURL The base URL
+ * @param {string} relativeURL The relative URL
+ *
+ * @returns {string} The combined URL
+ */
+function combineURLs(baseURL, relativeURL) {
+ return relativeURL
+ ? baseURL.replace(/\/?\/$/, '') + '/' + relativeURL.replace(/^\/+/, '')
+ : baseURL;
+}
+
+/**
+ * Creates a new URL by combining the baseURL with the requestedURL,
+ * only when the requestedURL is not already an absolute URL.
+ * If the requestURL is absolute, this function returns the requestedURL untouched.
+ *
+ * @param {string} baseURL The base URL
+ * @param {string} requestedURL Absolute or relative URL to combine
+ *
+ * @returns {string} The combined full path
+ */
+function buildFullPath(baseURL, requestedURL) {
+ if (baseURL && !isAbsoluteURL(requestedURL)) {
+ return combineURLs(baseURL, requestedURL);
+ }
+ return requestedURL;
+}
+
+const VERSION = "1.7.2";
+
+function parseProtocol(url) {
+ const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url);
+ return match && match[1] || '';
+}
+
+const DATA_URL_PATTERN = /^(?:([^;]+);)?(?:[^;]+;)?(base64|),([\s\S]*)$/;
+
+/**
+ * Parse data uri to a Buffer or Blob
+ *
+ * @param {String} uri
+ * @param {?Boolean} asBlob
+ * @param {?Object} options
+ * @param {?Function} options.Blob
+ *
+ * @returns {Buffer|Blob}
+ */
+function fromDataURI(uri, asBlob, options) {
+ const _Blob = options && options.Blob || platform.classes.Blob;
+ const protocol = parseProtocol(uri);
+
+ if (asBlob === undefined && _Blob) {
+ asBlob = true;
+ }
+
+ if (protocol === 'data') {
+ uri = protocol.length ? uri.slice(protocol.length + 1) : uri;
+
+ const match = DATA_URL_PATTERN.exec(uri);
+
+ if (!match) {
+ throw new AxiosError('Invalid URL', AxiosError.ERR_INVALID_URL);
+ }
+
+ const mime = match[1];
+ const isBase64 = match[2];
+ const body = match[3];
+ const buffer = Buffer.from(decodeURIComponent(body), isBase64 ? 'base64' : 'utf8');
+
+ if (asBlob) {
+ if (!_Blob) {
+ throw new AxiosError('Blob is not supported', AxiosError.ERR_NOT_SUPPORT);
+ }
+
+ return new _Blob([buffer], {type: mime});
+ }
+
+ return buffer;
+ }
+
+ throw new AxiosError('Unsupported protocol ' + protocol, AxiosError.ERR_NOT_SUPPORT);
+}
+
+/**
+ * Throttle decorator
+ * @param {Function} fn
+ * @param {Number} freq
+ * @return {Function}
+ */
+function throttle(fn, freq) {
+ let timestamp = 0;
+ const threshold = 1000 / freq;
+ let timer = null;
+ return function throttled() {
+ const force = this === true;
+
+ const now = Date.now();
+ if (force || now - timestamp > threshold) {
+ if (timer) {
+ clearTimeout(timer);
+ timer = null;
+ }
+ timestamp = now;
+ return fn.apply(null, arguments);
+ }
+ if (!timer) {
+ timer = setTimeout(() => {
+ timer = null;
+ timestamp = Date.now();
+ return fn.apply(null, arguments);
+ }, threshold - (now - timestamp));
+ }
+ };
+}
+
+/**
+ * Calculate data maxRate
+ * @param {Number} [samplesCount= 10]
+ * @param {Number} [min= 1000]
+ * @returns {Function}
+ */
+function speedometer(samplesCount, min) {
+ samplesCount = samplesCount || 10;
+ const bytes = new Array(samplesCount);
+ const timestamps = new Array(samplesCount);
+ let head = 0;
+ let tail = 0;
+ let firstSampleTS;
+
+ min = min !== undefined ? min : 1000;
+
+ return function push(chunkLength) {
+ const now = Date.now();
+
+ const startedAt = timestamps[tail];
+
+ if (!firstSampleTS) {
+ firstSampleTS = now;
+ }
+
+ bytes[head] = chunkLength;
+ timestamps[head] = now;
+
+ let i = tail;
+ let bytesCount = 0;
+
+ while (i !== head) {
+ bytesCount += bytes[i++];
+ i = i % samplesCount;
+ }
+
+ head = (head + 1) % samplesCount;
+
+ if (head === tail) {
+ tail = (tail + 1) % samplesCount;
+ }
+
+ if (now - firstSampleTS < min) {
+ return;
+ }
+
+ const passed = startedAt && now - startedAt;
+
+ return passed ? Math.round(bytesCount * 1000 / passed) : undefined;
+ };
+}
+
+const kInternals = Symbol('internals');
+
+class AxiosTransformStream extends stream__default["default"].Transform{
+ constructor(options) {
+ options = utils$1.toFlatObject(options, {
+ maxRate: 0,
+ chunkSize: 64 * 1024,
+ minChunkSize: 100,
+ timeWindow: 500,
+ ticksRate: 2,
+ samplesCount: 15
+ }, null, (prop, source) => {
+ return !utils$1.isUndefined(source[prop]);
+ });
+
+ super({
+ readableHighWaterMark: options.chunkSize
+ });
+
+ const self = this;
+
+ const internals = this[kInternals] = {
+ length: options.length,
+ timeWindow: options.timeWindow,
+ ticksRate: options.ticksRate,
+ chunkSize: options.chunkSize,
+ maxRate: options.maxRate,
+ minChunkSize: options.minChunkSize,
+ bytesSeen: 0,
+ isCaptured: false,
+ notifiedBytesLoaded: 0,
+ ts: Date.now(),
+ bytes: 0,
+ onReadCallback: null
+ };
+
+ const _speedometer = speedometer(internals.ticksRate * options.samplesCount, internals.timeWindow);
+
+ this.on('newListener', event => {
+ if (event === 'progress') {
+ if (!internals.isCaptured) {
+ internals.isCaptured = true;
+ }
+ }
+ });
+
+ let bytesNotified = 0;
+
+ internals.updateProgress = throttle(function throttledHandler() {
+ const totalBytes = internals.length;
+ const bytesTransferred = internals.bytesSeen;
+ const progressBytes = bytesTransferred - bytesNotified;
+ if (!progressBytes || self.destroyed) return;
+
+ const rate = _speedometer(progressBytes);
+
+ bytesNotified = bytesTransferred;
+
+ process.nextTick(() => {
+ self.emit('progress', {
+ loaded: bytesTransferred,
+ total: totalBytes,
+ progress: totalBytes ? (bytesTransferred / totalBytes) : undefined,
+ bytes: progressBytes,
+ rate: rate ? rate : undefined,
+ estimated: rate && totalBytes && bytesTransferred <= totalBytes ?
+ (totalBytes - bytesTransferred) / rate : undefined,
+ lengthComputable: totalBytes != null
+ });
+ });
+ }, internals.ticksRate);
+
+ const onFinish = () => {
+ internals.updateProgress.call(true);
+ };
+
+ this.once('end', onFinish);
+ this.once('error', onFinish);
+ }
+
+ _read(size) {
+ const internals = this[kInternals];
+
+ if (internals.onReadCallback) {
+ internals.onReadCallback();
+ }
+
+ return super._read(size);
+ }
+
+ _transform(chunk, encoding, callback) {
+ const self = this;
+ const internals = this[kInternals];
+ const maxRate = internals.maxRate;
+
+ const readableHighWaterMark = this.readableHighWaterMark;
+
+ const timeWindow = internals.timeWindow;
+
+ const divider = 1000 / timeWindow;
+ const bytesThreshold = (maxRate / divider);
+ const minChunkSize = internals.minChunkSize !== false ? Math.max(internals.minChunkSize, bytesThreshold * 0.01) : 0;
+
+ function pushChunk(_chunk, _callback) {
+ const bytes = Buffer.byteLength(_chunk);
+ internals.bytesSeen += bytes;
+ internals.bytes += bytes;
+
+ if (internals.isCaptured) {
+ internals.updateProgress();
+ }
+
+ if (self.push(_chunk)) {
+ process.nextTick(_callback);
+ } else {
+ internals.onReadCallback = () => {
+ internals.onReadCallback = null;
+ process.nextTick(_callback);
+ };
+ }
+ }
+
+ const transformChunk = (_chunk, _callback) => {
+ const chunkSize = Buffer.byteLength(_chunk);
+ let chunkRemainder = null;
+ let maxChunkSize = readableHighWaterMark;
+ let bytesLeft;
+ let passed = 0;
+
+ if (maxRate) {
+ const now = Date.now();
+
+ if (!internals.ts || (passed = (now - internals.ts)) >= timeWindow) {
+ internals.ts = now;
+ bytesLeft = bytesThreshold - internals.bytes;
+ internals.bytes = bytesLeft < 0 ? -bytesLeft : 0;
+ passed = 0;
+ }
+
+ bytesLeft = bytesThreshold - internals.bytes;
+ }
+
+ if (maxRate) {
+ if (bytesLeft <= 0) {
+ // next time window
+ return setTimeout(() => {
+ _callback(null, _chunk);
+ }, timeWindow - passed);
+ }
+
+ if (bytesLeft < maxChunkSize) {
+ maxChunkSize = bytesLeft;
+ }
+ }
+
+ if (maxChunkSize && chunkSize > maxChunkSize && (chunkSize - maxChunkSize) > minChunkSize) {
+ chunkRemainder = _chunk.subarray(maxChunkSize);
+ _chunk = _chunk.subarray(0, maxChunkSize);
+ }
+
+ pushChunk(_chunk, chunkRemainder ? () => {
+ process.nextTick(_callback, null, chunkRemainder);
+ } : _callback);
+ };
+
+ transformChunk(chunk, function transformNextChunk(err, _chunk) {
+ if (err) {
+ return callback(err);
+ }
+
+ if (_chunk) {
+ transformChunk(_chunk, transformNextChunk);
+ } else {
+ callback(null);
+ }
+ });
+ }
+
+ setLength(length) {
+ this[kInternals].length = +length;
+ return this;
+ }
+}
+
+const AxiosTransformStream$1 = AxiosTransformStream;
+
+const {asyncIterator} = Symbol;
+
+const readBlob = async function* (blob) {
+ if (blob.stream) {
+ yield* blob.stream();
+ } else if (blob.arrayBuffer) {
+ yield await blob.arrayBuffer();
+ } else if (blob[asyncIterator]) {
+ yield* blob[asyncIterator]();
+ } else {
+ yield blob;
+ }
+};
+
+const readBlob$1 = readBlob;
+
+const BOUNDARY_ALPHABET = utils$1.ALPHABET.ALPHA_DIGIT + '-_';
+
+const textEncoder = new util.TextEncoder();
+
+const CRLF = '\r\n';
+const CRLF_BYTES = textEncoder.encode(CRLF);
+const CRLF_BYTES_COUNT = 2;
+
+class FormDataPart {
+ constructor(name, value) {
+ const {escapeName} = this.constructor;
+ const isStringValue = utils$1.isString(value);
+
+ let headers = `Content-Disposition: form-data; name="${escapeName(name)}"${
+ !isStringValue && value.name ? `; filename="${escapeName(value.name)}"` : ''
+ }${CRLF}`;
+
+ if (isStringValue) {
+ value = textEncoder.encode(String(value).replace(/\r?\n|\r\n?/g, CRLF));
+ } else {
+ headers += `Content-Type: ${value.type || "application/octet-stream"}${CRLF}`;
+ }
+
+ this.headers = textEncoder.encode(headers + CRLF);
+
+ this.contentLength = isStringValue ? value.byteLength : value.size;
+
+ this.size = this.headers.byteLength + this.contentLength + CRLF_BYTES_COUNT;
+
+ this.name = name;
+ this.value = value;
+ }
+
+ async *encode(){
+ yield this.headers;
+
+ const {value} = this;
+
+ if(utils$1.isTypedArray(value)) {
+ yield value;
+ } else {
+ yield* readBlob$1(value);
+ }
+
+ yield CRLF_BYTES;
+ }
+
+ static escapeName(name) {
+ return String(name).replace(/[\r\n"]/g, (match) => ({
+ '\r' : '%0D',
+ '\n' : '%0A',
+ '"' : '%22',
+ }[match]));
+ }
+}
+
+const formDataToStream = (form, headersHandler, options) => {
+ const {
+ tag = 'form-data-boundary',
+ size = 25,
+ boundary = tag + '-' + utils$1.generateString(size, BOUNDARY_ALPHABET)
+ } = options || {};
+
+ if(!utils$1.isFormData(form)) {
+ throw TypeError('FormData instance required');
+ }
+
+ if (boundary.length < 1 || boundary.length > 70) {
+ throw Error('boundary must be 10-70 characters long')
+ }
+
+ const boundaryBytes = textEncoder.encode('--' + boundary + CRLF);
+ const footerBytes = textEncoder.encode('--' + boundary + '--' + CRLF + CRLF);
+ let contentLength = footerBytes.byteLength;
+
+ const parts = Array.from(form.entries()).map(([name, value]) => {
+ const part = new FormDataPart(name, value);
+ contentLength += part.size;
+ return part;
+ });
+
+ contentLength += boundaryBytes.byteLength * parts.length;
+
+ contentLength = utils$1.toFiniteNumber(contentLength);
+
+ const computedHeaders = {
+ 'Content-Type': `multipart/form-data; boundary=${boundary}`
+ };
+
+ if (Number.isFinite(contentLength)) {
+ computedHeaders['Content-Length'] = contentLength;
+ }
+
+ headersHandler && headersHandler(computedHeaders);
+
+ return stream.Readable.from((async function *() {
+ for(const part of parts) {
+ yield boundaryBytes;
+ yield* part.encode();
+ }
+
+ yield footerBytes;
+ })());
+};
+
+const formDataToStream$1 = formDataToStream;
+
+class ZlibHeaderTransformStream extends stream__default["default"].Transform {
+ __transform(chunk, encoding, callback) {
+ this.push(chunk);
+ callback();
+ }
+
+ _transform(chunk, encoding, callback) {
+ if (chunk.length !== 0) {
+ this._transform = this.__transform;
+
+ // Add Default Compression headers if no zlib headers are present
+ if (chunk[0] !== 120) { // Hex: 78
+ const header = Buffer.alloc(2);
+ header[0] = 120; // Hex: 78
+ header[1] = 156; // Hex: 9C
+ this.push(header, encoding);
+ }
+ }
+
+ this.__transform(chunk, encoding, callback);
+ }
+}
+
+const ZlibHeaderTransformStream$1 = ZlibHeaderTransformStream;
+
+const callbackify = (fn, reducer) => {
+ return utils$1.isAsyncFn(fn) ? function (...args) {
+ const cb = args.pop();
+ fn.apply(this, args).then((value) => {
+ try {
+ reducer ? cb(null, ...reducer(value)) : cb(null, value);
+ } catch (err) {
+ cb(err);
+ }
+ }, cb);
+ } : fn;
+};
+
+const callbackify$1 = callbackify;
+
+const zlibOptions = {
+ flush: zlib__default["default"].constants.Z_SYNC_FLUSH,
+ finishFlush: zlib__default["default"].constants.Z_SYNC_FLUSH
+};
+
+const brotliOptions = {
+ flush: zlib__default["default"].constants.BROTLI_OPERATION_FLUSH,
+ finishFlush: zlib__default["default"].constants.BROTLI_OPERATION_FLUSH
+};
+
+const isBrotliSupported = utils$1.isFunction(zlib__default["default"].createBrotliDecompress);
+
+const {http: httpFollow, https: httpsFollow} = followRedirects__default["default"];
+
+const isHttps = /https:?/;
+
+const supportedProtocols = platform.protocols.map(protocol => {
+ return protocol + ':';
+});
+
+/**
+ * If the proxy or config beforeRedirects functions are defined, call them with the options
+ * object.
+ *
+ * @param {Object} options - The options object that was passed to the request.
+ *
+ * @returns {Object}
+ */
+function dispatchBeforeRedirect(options, responseDetails) {
+ if (options.beforeRedirects.proxy) {
+ options.beforeRedirects.proxy(options);
+ }
+ if (options.beforeRedirects.config) {
+ options.beforeRedirects.config(options, responseDetails);
+ }
+}
+
+/**
+ * If the proxy or config afterRedirects functions are defined, call them with the options
+ *
+ * @param {http.ClientRequestArgs} options
+ * @param {AxiosProxyConfig} configProxy configuration from Axios options object
+ * @param {string} location
+ *
+ * @returns {http.ClientRequestArgs}
+ */
+function setProxy(options, configProxy, location) {
+ let proxy = configProxy;
+ if (!proxy && proxy !== false) {
+ const proxyUrl = proxyFromEnv.getProxyForUrl(location);
+ if (proxyUrl) {
+ proxy = new URL(proxyUrl);
+ }
+ }
+ if (proxy) {
+ // Basic proxy authorization
+ if (proxy.username) {
+ proxy.auth = (proxy.username || '') + ':' + (proxy.password || '');
+ }
+
+ if (proxy.auth) {
+ // Support proxy auth object form
+ if (proxy.auth.username || proxy.auth.password) {
+ proxy.auth = (proxy.auth.username || '') + ':' + (proxy.auth.password || '');
+ }
+ const base64 = Buffer
+ .from(proxy.auth, 'utf8')
+ .toString('base64');
+ options.headers['Proxy-Authorization'] = 'Basic ' + base64;
+ }
+
+ options.headers.host = options.hostname + (options.port ? ':' + options.port : '');
+ const proxyHost = proxy.hostname || proxy.host;
+ options.hostname = proxyHost;
+ // Replace 'host' since options is not a URL object
+ options.host = proxyHost;
+ options.port = proxy.port;
+ options.path = location;
+ if (proxy.protocol) {
+ options.protocol = proxy.protocol.includes(':') ? proxy.protocol : `${proxy.protocol}:`;
+ }
+ }
+
+ options.beforeRedirects.proxy = function beforeRedirect(redirectOptions) {
+ // Configure proxy for redirected request, passing the original config proxy to apply
+ // the exact same logic as if the redirected request was performed by axios directly.
+ setProxy(redirectOptions, configProxy, redirectOptions.href);
+ };
+}
+
+const isHttpAdapterSupported = typeof process !== 'undefined' && utils$1.kindOf(process) === 'process';
+
+// temporary hotfix
+
+const wrapAsync = (asyncExecutor) => {
+ return new Promise((resolve, reject) => {
+ let onDone;
+ let isDone;
+
+ const done = (value, isRejected) => {
+ if (isDone) return;
+ isDone = true;
+ onDone && onDone(value, isRejected);
+ };
+
+ const _resolve = (value) => {
+ done(value);
+ resolve(value);
+ };
+
+ const _reject = (reason) => {
+ done(reason, true);
+ reject(reason);
+ };
+
+ asyncExecutor(_resolve, _reject, (onDoneHandler) => (onDone = onDoneHandler)).catch(_reject);
+ })
+};
+
+const resolveFamily = ({address, family}) => {
+ if (!utils$1.isString(address)) {
+ throw TypeError('address must be a string');
+ }
+ return ({
+ address,
+ family: family || (address.indexOf('.') < 0 ? 6 : 4)
+ });
+};
+
+const buildAddressEntry = (address, family) => resolveFamily(utils$1.isObject(address) ? address : {address, family});
+
+/*eslint consistent-return:0*/
+const httpAdapter = isHttpAdapterSupported && function httpAdapter(config) {
+ return wrapAsync(async function dispatchHttpRequest(resolve, reject, onDone) {
+ let {data, lookup, family} = config;
+ const {responseType, responseEncoding} = config;
+ const method = config.method.toUpperCase();
+ let isDone;
+ let rejected = false;
+ let req;
+
+ if (lookup) {
+ const _lookup = callbackify$1(lookup, (value) => utils$1.isArray(value) ? value : [value]);
+ // hotfix to support opt.all option which is required for node 20.x
+ lookup = (hostname, opt, cb) => {
+ _lookup(hostname, opt, (err, arg0, arg1) => {
+ if (err) {
+ return cb(err);
+ }
+
+ const addresses = utils$1.isArray(arg0) ? arg0.map(addr => buildAddressEntry(addr)) : [buildAddressEntry(arg0, arg1)];
+
+ opt.all ? cb(err, addresses) : cb(err, addresses[0].address, addresses[0].family);
+ });
+ };
+ }
+
+ // temporary internal emitter until the AxiosRequest class will be implemented
+ const emitter = new events.EventEmitter();
+
+ const onFinished = () => {
+ if (config.cancelToken) {
+ config.cancelToken.unsubscribe(abort);
+ }
+
+ if (config.signal) {
+ config.signal.removeEventListener('abort', abort);
+ }
+
+ emitter.removeAllListeners();
+ };
+
+ onDone((value, isRejected) => {
+ isDone = true;
+ if (isRejected) {
+ rejected = true;
+ onFinished();
+ }
+ });
+
+ function abort(reason) {
+ emitter.emit('abort', !reason || reason.type ? new CanceledError(null, config, req) : reason);
+ }
+
+ emitter.once('abort', reject);
+
+ if (config.cancelToken || config.signal) {
+ config.cancelToken && config.cancelToken.subscribe(abort);
+ if (config.signal) {
+ config.signal.aborted ? abort() : config.signal.addEventListener('abort', abort);
+ }
+ }
+
+ // Parse url
+ const fullPath = buildFullPath(config.baseURL, config.url);
+ const parsed = new URL(fullPath, 'http://localhost');
+ const protocol = parsed.protocol || supportedProtocols[0];
+
+ if (protocol === 'data:') {
+ let convertedData;
+
+ if (method !== 'GET') {
+ return settle(resolve, reject, {
+ status: 405,
+ statusText: 'method not allowed',
+ headers: {},
+ config
+ });
+ }
+
+ try {
+ convertedData = fromDataURI(config.url, responseType === 'blob', {
+ Blob: config.env && config.env.Blob
+ });
+ } catch (err) {
+ throw AxiosError.from(err, AxiosError.ERR_BAD_REQUEST, config);
+ }
+
+ if (responseType === 'text') {
+ convertedData = convertedData.toString(responseEncoding);
+
+ if (!responseEncoding || responseEncoding === 'utf8') {
+ convertedData = utils$1.stripBOM(convertedData);
+ }
+ } else if (responseType === 'stream') {
+ convertedData = stream__default["default"].Readable.from(convertedData);
+ }
+
+ return settle(resolve, reject, {
+ data: convertedData,
+ status: 200,
+ statusText: 'OK',
+ headers: new AxiosHeaders$1(),
+ config
+ });
+ }
+
+ if (supportedProtocols.indexOf(protocol) === -1) {
+ return reject(new AxiosError(
+ 'Unsupported protocol ' + protocol,
+ AxiosError.ERR_BAD_REQUEST,
+ config
+ ));
+ }
+
+ const headers = AxiosHeaders$1.from(config.headers).normalize();
+
+ // Set User-Agent (required by some servers)
+ // See https://github.com/axios/axios/issues/69
+ // User-Agent is specified; handle case where no UA header is desired
+ // Only set header if it hasn't been set in config
+ headers.set('User-Agent', 'axios/' + VERSION, false);
+
+ const onDownloadProgress = config.onDownloadProgress;
+ const onUploadProgress = config.onUploadProgress;
+ const maxRate = config.maxRate;
+ let maxUploadRate = undefined;
+ let maxDownloadRate = undefined;
+
+ // support for spec compliant FormData objects
+ if (utils$1.isSpecCompliantForm(data)) {
+ const userBoundary = headers.getContentType(/boundary=([-_\w\d]{10,70})/i);
+
+ data = formDataToStream$1(data, (formHeaders) => {
+ headers.set(formHeaders);
+ }, {
+ tag: `axios-${VERSION}-boundary`,
+ boundary: userBoundary && userBoundary[1] || undefined
+ });
+ // support for https://www.npmjs.com/package/form-data api
+ } else if (utils$1.isFormData(data) && utils$1.isFunction(data.getHeaders)) {
+ headers.set(data.getHeaders());
+
+ if (!headers.hasContentLength()) {
+ try {
+ const knownLength = await util__default["default"].promisify(data.getLength).call(data);
+ Number.isFinite(knownLength) && knownLength >= 0 && headers.setContentLength(knownLength);
+ /*eslint no-empty:0*/
+ } catch (e) {
+ }
+ }
+ } else if (utils$1.isBlob(data)) {
+ data.size && headers.setContentType(data.type || 'application/octet-stream');
+ headers.setContentLength(data.size || 0);
+ data = stream__default["default"].Readable.from(readBlob$1(data));
+ } else if (data && !utils$1.isStream(data)) {
+ if (Buffer.isBuffer(data)) ; else if (utils$1.isArrayBuffer(data)) {
+ data = Buffer.from(new Uint8Array(data));
+ } else if (utils$1.isString(data)) {
+ data = Buffer.from(data, 'utf-8');
+ } else {
+ return reject(new AxiosError(
+ 'Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream',
+ AxiosError.ERR_BAD_REQUEST,
+ config
+ ));
+ }
+
+ // Add Content-Length header if data exists
+ headers.setContentLength(data.length, false);
+
+ if (config.maxBodyLength > -1 && data.length > config.maxBodyLength) {
+ return reject(new AxiosError(
+ 'Request body larger than maxBodyLength limit',
+ AxiosError.ERR_BAD_REQUEST,
+ config
+ ));
+ }
+ }
+
+ const contentLength = utils$1.toFiniteNumber(headers.getContentLength());
+
+ if (utils$1.isArray(maxRate)) {
+ maxUploadRate = maxRate[0];
+ maxDownloadRate = maxRate[1];
+ } else {
+ maxUploadRate = maxDownloadRate = maxRate;
+ }
+
+ if (data && (onUploadProgress || maxUploadRate)) {
+ if (!utils$1.isStream(data)) {
+ data = stream__default["default"].Readable.from(data, {objectMode: false});
+ }
+
+ data = stream__default["default"].pipeline([data, new AxiosTransformStream$1({
+ length: contentLength,
+ maxRate: utils$1.toFiniteNumber(maxUploadRate)
+ })], utils$1.noop);
+
+ onUploadProgress && data.on('progress', progress => {
+ onUploadProgress(Object.assign(progress, {
+ upload: true
+ }));
+ });
+ }
+
+ // HTTP basic authentication
+ let auth = undefined;
+ if (config.auth) {
+ const username = config.auth.username || '';
+ const password = config.auth.password || '';
+ auth = username + ':' + password;
+ }
+
+ if (!auth && parsed.username) {
+ const urlUsername = parsed.username;
+ const urlPassword = parsed.password;
+ auth = urlUsername + ':' + urlPassword;
+ }
+
+ auth && headers.delete('authorization');
+
+ let path;
+
+ try {
+ path = buildURL(
+ parsed.pathname + parsed.search,
+ config.params,
+ config.paramsSerializer
+ ).replace(/^\?/, '');
+ } catch (err) {
+ const customErr = new Error(err.message);
+ customErr.config = config;
+ customErr.url = config.url;
+ customErr.exists = true;
+ return reject(customErr);
+ }
+
+ headers.set(
+ 'Accept-Encoding',
+ 'gzip, compress, deflate' + (isBrotliSupported ? ', br' : ''), false
+ );
+
+ const options = {
+ path,
+ method: method,
+ headers: headers.toJSON(),
+ agents: { http: config.httpAgent, https: config.httpsAgent },
+ auth,
+ protocol,
+ family,
+ beforeRedirect: dispatchBeforeRedirect,
+ beforeRedirects: {}
+ };
+
+ // cacheable-lookup integration hotfix
+ !utils$1.isUndefined(lookup) && (options.lookup = lookup);
+
+ if (config.socketPath) {
+ options.socketPath = config.socketPath;
+ } else {
+ options.hostname = parsed.hostname;
+ options.port = parsed.port;
+ setProxy(options, config.proxy, protocol + '//' + parsed.hostname + (parsed.port ? ':' + parsed.port : '') + options.path);
+ }
+
+ let transport;
+ const isHttpsRequest = isHttps.test(options.protocol);
+ options.agent = isHttpsRequest ? config.httpsAgent : config.httpAgent;
+ if (config.transport) {
+ transport = config.transport;
+ } else if (config.maxRedirects === 0) {
+ transport = isHttpsRequest ? https__default["default"] : http__default["default"];
+ } else {
+ if (config.maxRedirects) {
+ options.maxRedirects = config.maxRedirects;
+ }
+ if (config.beforeRedirect) {
+ options.beforeRedirects.config = config.beforeRedirect;
+ }
+ transport = isHttpsRequest ? httpsFollow : httpFollow;
+ }
+
+ if (config.maxBodyLength > -1) {
+ options.maxBodyLength = config.maxBodyLength;
+ } else {
+ // follow-redirects does not skip comparison, so it should always succeed for axios -1 unlimited
+ options.maxBodyLength = Infinity;
+ }
+
+ if (config.insecureHTTPParser) {
+ options.insecureHTTPParser = config.insecureHTTPParser;
+ }
+
+ // Create the request
+ req = transport.request(options, function handleResponse(res) {
+ if (req.destroyed) return;
+
+ const streams = [res];
+
+ const responseLength = +res.headers['content-length'];
+
+ if (onDownloadProgress) {
+ const transformStream = new AxiosTransformStream$1({
+ length: utils$1.toFiniteNumber(responseLength),
+ maxRate: utils$1.toFiniteNumber(maxDownloadRate)
+ });
+
+ onDownloadProgress && transformStream.on('progress', progress => {
+ onDownloadProgress(Object.assign(progress, {
+ download: true
+ }));
+ });
+
+ streams.push(transformStream);
+ }
+
+ // decompress the response body transparently if required
+ let responseStream = res;
+
+ // return the last request in case of redirects
+ const lastRequest = res.req || req;
+
+ // if decompress disabled we should not decompress
+ if (config.decompress !== false && res.headers['content-encoding']) {
+ // if no content, but headers still say that it is encoded,
+ // remove the header not confuse downstream operations
+ if (method === 'HEAD' || res.statusCode === 204) {
+ delete res.headers['content-encoding'];
+ }
+
+ switch ((res.headers['content-encoding'] || '').toLowerCase()) {
+ /*eslint default-case:0*/
+ case 'gzip':
+ case 'x-gzip':
+ case 'compress':
+ case 'x-compress':
+ // add the unzipper to the body stream processing pipeline
+ streams.push(zlib__default["default"].createUnzip(zlibOptions));
+
+ // remove the content-encoding in order to not confuse downstream operations
+ delete res.headers['content-encoding'];
+ break;
+ case 'deflate':
+ streams.push(new ZlibHeaderTransformStream$1());
+
+ // add the unzipper to the body stream processing pipeline
+ streams.push(zlib__default["default"].createUnzip(zlibOptions));
+
+ // remove the content-encoding in order to not confuse downstream operations
+ delete res.headers['content-encoding'];
+ break;
+ case 'br':
+ if (isBrotliSupported) {
+ streams.push(zlib__default["default"].createBrotliDecompress(brotliOptions));
+ delete res.headers['content-encoding'];
+ }
+ }
+ }
+
+ responseStream = streams.length > 1 ? stream__default["default"].pipeline(streams, utils$1.noop) : streams[0];
+
+ const offListeners = stream__default["default"].finished(responseStream, () => {
+ offListeners();
+ onFinished();
+ });
+
+ const response = {
+ status: res.statusCode,
+ statusText: res.statusMessage,
+ headers: new AxiosHeaders$1(res.headers),
+ config,
+ request: lastRequest
+ };
+
+ if (responseType === 'stream') {
+ response.data = responseStream;
+ settle(resolve, reject, response);
+ } else {
+ const responseBuffer = [];
+ let totalResponseBytes = 0;
+
+ responseStream.on('data', function handleStreamData(chunk) {
+ responseBuffer.push(chunk);
+ totalResponseBytes += chunk.length;
+
+ // make sure the content length is not over the maxContentLength if specified
+ if (config.maxContentLength > -1 && totalResponseBytes > config.maxContentLength) {
+ // stream.destroy() emit aborted event before calling reject() on Node.js v16
+ rejected = true;
+ responseStream.destroy();
+ reject(new AxiosError('maxContentLength size of ' + config.maxContentLength + ' exceeded',
+ AxiosError.ERR_BAD_RESPONSE, config, lastRequest));
+ }
+ });
+
+ responseStream.on('aborted', function handlerStreamAborted() {
+ if (rejected) {
+ return;
+ }
+
+ const err = new AxiosError(
+ 'maxContentLength size of ' + config.maxContentLength + ' exceeded',
+ AxiosError.ERR_BAD_RESPONSE,
+ config,
+ lastRequest
+ );
+ responseStream.destroy(err);
+ reject(err);
+ });
+
+ responseStream.on('error', function handleStreamError(err) {
+ if (req.destroyed) return;
+ reject(AxiosError.from(err, null, config, lastRequest));
+ });
+
+ responseStream.on('end', function handleStreamEnd() {
+ try {
+ let responseData = responseBuffer.length === 1 ? responseBuffer[0] : Buffer.concat(responseBuffer);
+ if (responseType !== 'arraybuffer') {
+ responseData = responseData.toString(responseEncoding);
+ if (!responseEncoding || responseEncoding === 'utf8') {
+ responseData = utils$1.stripBOM(responseData);
+ }
+ }
+ response.data = responseData;
+ } catch (err) {
+ return reject(AxiosError.from(err, null, config, response.request, response));
+ }
+ settle(resolve, reject, response);
+ });
+ }
+
+ emitter.once('abort', err => {
+ if (!responseStream.destroyed) {
+ responseStream.emit('error', err);
+ responseStream.destroy();
+ }
+ });
+ });
+
+ emitter.once('abort', err => {
+ reject(err);
+ req.destroy(err);
+ });
+
+ // Handle errors
+ req.on('error', function handleRequestError(err) {
+ // @todo remove
+ // if (req.aborted && err.code !== AxiosError.ERR_FR_TOO_MANY_REDIRECTS) return;
+ reject(AxiosError.from(err, null, config, req));
+ });
+
+ // set tcp keep alive to prevent drop connection by peer
+ req.on('socket', function handleRequestSocket(socket) {
+ // default interval of sending ack packet is 1 minute
+ socket.setKeepAlive(true, 1000 * 60);
+ });
+
+ // Handle request timeout
+ if (config.timeout) {
+ // This is forcing a int timeout to avoid problems if the `req` interface doesn't handle other types.
+ const timeout = parseInt(config.timeout, 10);
+
+ if (Number.isNaN(timeout)) {
+ reject(new AxiosError(
+ 'error trying to parse `config.timeout` to int',
+ AxiosError.ERR_BAD_OPTION_VALUE,
+ config,
+ req
+ ));
+
+ return;
+ }
+
+ // Sometime, the response will be very slow, and does not respond, the connect event will be block by event loop system.
+ // And timer callback will be fired, and abort() will be invoked before connection, then get "socket hang up" and code ECONNRESET.
+ // At this time, if we have a large number of request, nodejs will hang up some socket on background. and the number will up and up.
+ // And then these socket which be hang up will devouring CPU little by little.
+ // ClientRequest.setTimeout will be fired on the specify milliseconds, and can make sure that abort() will be fired after connect.
+ req.setTimeout(timeout, function handleRequestTimeout() {
+ if (isDone) return;
+ let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';
+ const transitional = config.transitional || transitionalDefaults;
+ if (config.timeoutErrorMessage) {
+ timeoutErrorMessage = config.timeoutErrorMessage;
+ }
+ reject(new AxiosError(
+ timeoutErrorMessage,
+ transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,
+ config,
+ req
+ ));
+ abort();
+ });
+ }
+
+
+ // Send the request
+ if (utils$1.isStream(data)) {
+ let ended = false;
+ let errored = false;
+
+ data.on('end', () => {
+ ended = true;
+ });
+
+ data.once('error', err => {
+ errored = true;
+ req.destroy(err);
+ });
+
+ data.on('close', () => {
+ if (!ended && !errored) {
+ abort(new CanceledError('Request stream has been aborted', config, req));
+ }
+ });
+
+ data.pipe(req);
+ } else {
+ req.end(data);
+ }
+ });
+};
+
+const progressEventReducer = (listener, isDownloadStream, freq = 3) => {
+ let bytesNotified = 0;
+ const _speedometer = speedometer(50, 250);
+
+ return throttle(e => {
+ const loaded = e.loaded;
+ const total = e.lengthComputable ? e.total : undefined;
+ const progressBytes = loaded - bytesNotified;
+ const rate = _speedometer(progressBytes);
+ const inRange = loaded <= total;
+
+ bytesNotified = loaded;
+
+ const data = {
+ loaded,
+ total,
+ progress: total ? (loaded / total) : undefined,
+ bytes: progressBytes,
+ rate: rate ? rate : undefined,
+ estimated: rate && total && inRange ? (total - loaded) / rate : undefined,
+ event: e,
+ lengthComputable: total != null
+ };
+
+ data[isDownloadStream ? 'download' : 'upload'] = true;
+
+ listener(data);
+ }, freq);
+};
+
+const isURLSameOrigin = platform.hasStandardBrowserEnv ?
+
+// Standard browser envs have full support of the APIs needed to test
+// whether the request URL is of the same origin as current location.
+ (function standardBrowserEnv() {
+ const msie = /(msie|trident)/i.test(navigator.userAgent);
+ const urlParsingNode = document.createElement('a');
+ let originURL;
+
+ /**
+ * Parse a URL to discover its components
+ *
+ * @param {String} url The URL to be parsed
+ * @returns {Object}
+ */
+ function resolveURL(url) {
+ let href = url;
+
+ if (msie) {
+ // IE needs attribute set twice to normalize properties
+ urlParsingNode.setAttribute('href', href);
+ href = urlParsingNode.href;
+ }
+
+ urlParsingNode.setAttribute('href', href);
+
+ // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils
+ return {
+ href: urlParsingNode.href,
+ protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',
+ host: urlParsingNode.host,
+ search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '',
+ hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',
+ hostname: urlParsingNode.hostname,
+ port: urlParsingNode.port,
+ pathname: (urlParsingNode.pathname.charAt(0) === '/') ?
+ urlParsingNode.pathname :
+ '/' + urlParsingNode.pathname
+ };
+ }
+
+ originURL = resolveURL(window.location.href);
+
+ /**
+ * Determine if a URL shares the same origin as the current location
+ *
+ * @param {String} requestURL The URL to test
+ * @returns {boolean} True if URL shares the same origin, otherwise false
+ */
+ return function isURLSameOrigin(requestURL) {
+ const parsed = (utils$1.isString(requestURL)) ? resolveURL(requestURL) : requestURL;
+ return (parsed.protocol === originURL.protocol &&
+ parsed.host === originURL.host);
+ };
+ })() :
+
+ // Non standard browser envs (web workers, react-native) lack needed support.
+ (function nonStandardBrowserEnv() {
+ return function isURLSameOrigin() {
+ return true;
+ };
+ })();
+
+const cookies = platform.hasStandardBrowserEnv ?
+
+ // Standard browser envs support document.cookie
+ {
+ write(name, value, expires, path, domain, secure) {
+ const cookie = [name + '=' + encodeURIComponent(value)];
+
+ utils$1.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());
+
+ utils$1.isString(path) && cookie.push('path=' + path);
+
+ utils$1.isString(domain) && cookie.push('domain=' + domain);
+
+ secure === true && cookie.push('secure');
+
+ document.cookie = cookie.join('; ');
+ },
+
+ read(name) {
+ const match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)'));
+ return (match ? decodeURIComponent(match[3]) : null);
+ },
+
+ remove(name) {
+ this.write(name, '', Date.now() - 86400000);
+ }
+ }
+
+ :
+
+ // Non-standard browser env (web workers, react-native) lack needed support.
+ {
+ write() {},
+ read() {
+ return null;
+ },
+ remove() {}
+ };
+
+const headersToObject = (thing) => thing instanceof AxiosHeaders$1 ? { ...thing } : thing;
+
+/**
+ * Config-specific merge-function which creates a new config-object
+ * by merging two configuration objects together.
+ *
+ * @param {Object} config1
+ * @param {Object} config2
+ *
+ * @returns {Object} New object resulting from merging config2 to config1
+ */
+function mergeConfig(config1, config2) {
+ // eslint-disable-next-line no-param-reassign
+ config2 = config2 || {};
+ const config = {};
+
+ function getMergedValue(target, source, caseless) {
+ if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) {
+ return utils$1.merge.call({caseless}, target, source);
+ } else if (utils$1.isPlainObject(source)) {
+ return utils$1.merge({}, source);
+ } else if (utils$1.isArray(source)) {
+ return source.slice();
+ }
+ return source;
+ }
+
+ // eslint-disable-next-line consistent-return
+ function mergeDeepProperties(a, b, caseless) {
+ if (!utils$1.isUndefined(b)) {
+ return getMergedValue(a, b, caseless);
+ } else if (!utils$1.isUndefined(a)) {
+ return getMergedValue(undefined, a, caseless);
+ }
+ }
+
+ // eslint-disable-next-line consistent-return
+ function valueFromConfig2(a, b) {
+ if (!utils$1.isUndefined(b)) {
+ return getMergedValue(undefined, b);
+ }
+ }
+
+ // eslint-disable-next-line consistent-return
+ function defaultToConfig2(a, b) {
+ if (!utils$1.isUndefined(b)) {
+ return getMergedValue(undefined, b);
+ } else if (!utils$1.isUndefined(a)) {
+ return getMergedValue(undefined, a);
+ }
+ }
+
+ // eslint-disable-next-line consistent-return
+ function mergeDirectKeys(a, b, prop) {
+ if (prop in config2) {
+ return getMergedValue(a, b);
+ } else if (prop in config1) {
+ return getMergedValue(undefined, a);
+ }
+ }
+
+ const mergeMap = {
+ url: valueFromConfig2,
+ method: valueFromConfig2,
+ data: valueFromConfig2,
+ baseURL: defaultToConfig2,
+ transformRequest: defaultToConfig2,
+ transformResponse: defaultToConfig2,
+ paramsSerializer: defaultToConfig2,
+ timeout: defaultToConfig2,
+ timeoutMessage: defaultToConfig2,
+ withCredentials: defaultToConfig2,
+ withXSRFToken: defaultToConfig2,
+ adapter: defaultToConfig2,
+ responseType: defaultToConfig2,
+ xsrfCookieName: defaultToConfig2,
+ xsrfHeaderName: defaultToConfig2,
+ onUploadProgress: defaultToConfig2,
+ onDownloadProgress: defaultToConfig2,
+ decompress: defaultToConfig2,
+ maxContentLength: defaultToConfig2,
+ maxBodyLength: defaultToConfig2,
+ beforeRedirect: defaultToConfig2,
+ transport: defaultToConfig2,
+ httpAgent: defaultToConfig2,
+ httpsAgent: defaultToConfig2,
+ cancelToken: defaultToConfig2,
+ socketPath: defaultToConfig2,
+ responseEncoding: defaultToConfig2,
+ validateStatus: mergeDirectKeys,
+ headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)
+ };
+
+ utils$1.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {
+ const merge = mergeMap[prop] || mergeDeepProperties;
+ const configValue = merge(config1[prop], config2[prop], prop);
+ (utils$1.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);
+ });
+
+ return config;
+}
+
+const resolveConfig = (config) => {
+ const newConfig = mergeConfig({}, config);
+
+ let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;
+
+ newConfig.headers = headers = AxiosHeaders$1.from(headers);
+
+ newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url), config.params, config.paramsSerializer);
+
+ // HTTP basic authentication
+ if (auth) {
+ headers.set('Authorization', 'Basic ' +
+ btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))
+ );
+ }
+
+ let contentType;
+
+ if (utils$1.isFormData(data)) {
+ if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {
+ headers.setContentType(undefined); // Let the browser set it
+ } else if ((contentType = headers.getContentType()) !== false) {
+ // fix semicolon duplication issue for ReactNative FormData implementation
+ const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];
+ headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));
+ }
+ }
+
+ // Add xsrf header
+ // This is only done if running in a standard browser environment.
+ // Specifically not if we're in a web worker, or react-native.
+
+ if (platform.hasStandardBrowserEnv) {
+ withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));
+
+ if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {
+ // Add xsrf header
+ const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);
+
+ if (xsrfValue) {
+ headers.set(xsrfHeaderName, xsrfValue);
+ }
+ }
+ }
+
+ return newConfig;
+};
+
+const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';
+
+const xhrAdapter = isXHRAdapterSupported && function (config) {
+ return new Promise(function dispatchXhrRequest(resolve, reject) {
+ const _config = resolveConfig(config);
+ let requestData = _config.data;
+ const requestHeaders = AxiosHeaders$1.from(_config.headers).normalize();
+ let {responseType} = _config;
+ let onCanceled;
+ function done() {
+ if (_config.cancelToken) {
+ _config.cancelToken.unsubscribe(onCanceled);
+ }
+
+ if (_config.signal) {
+ _config.signal.removeEventListener('abort', onCanceled);
+ }
+ }
+
+ let request = new XMLHttpRequest();
+
+ request.open(_config.method.toUpperCase(), _config.url, true);
+
+ // Set the request timeout in MS
+ request.timeout = _config.timeout;
+
+ function onloadend() {
+ if (!request) {
+ return;
+ }
+ // Prepare the response
+ const responseHeaders = AxiosHeaders$1.from(
+ 'getAllResponseHeaders' in request && request.getAllResponseHeaders()
+ );
+ const responseData = !responseType || responseType === 'text' || responseType === 'json' ?
+ request.responseText : request.response;
+ const response = {
+ data: responseData,
+ status: request.status,
+ statusText: request.statusText,
+ headers: responseHeaders,
+ config,
+ request
+ };
+
+ settle(function _resolve(value) {
+ resolve(value);
+ done();
+ }, function _reject(err) {
+ reject(err);
+ done();
+ }, response);
+
+ // Clean up request
+ request = null;
+ }
+
+ if ('onloadend' in request) {
+ // Use onloadend if available
+ request.onloadend = onloadend;
+ } else {
+ // Listen for ready state to emulate onloadend
+ request.onreadystatechange = function handleLoad() {
+ if (!request || request.readyState !== 4) {
+ return;
+ }
+
+ // The request errored out and we didn't get a response, this will be
+ // handled by onerror instead
+ // With one exception: request that using file: protocol, most browsers
+ // will return status as 0 even though it's a successful request
+ if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {
+ return;
+ }
+ // readystate handler is calling before onerror or ontimeout handlers,
+ // so we should call onloadend on the next 'tick'
+ setTimeout(onloadend);
+ };
+ }
+
+ // Handle browser request cancellation (as opposed to a manual cancellation)
+ request.onabort = function handleAbort() {
+ if (!request) {
+ return;
+ }
+
+ reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, _config, request));
+
+ // Clean up request
+ request = null;
+ };
+
+ // Handle low level network errors
+ request.onerror = function handleError() {
+ // Real errors are hidden from us by the browser
+ // onerror should only fire if it's a network error
+ reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, _config, request));
+
+ // Clean up request
+ request = null;
+ };
+
+ // Handle timeout
+ request.ontimeout = function handleTimeout() {
+ let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';
+ const transitional = _config.transitional || transitionalDefaults;
+ if (_config.timeoutErrorMessage) {
+ timeoutErrorMessage = _config.timeoutErrorMessage;
+ }
+ reject(new AxiosError(
+ timeoutErrorMessage,
+ transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,
+ _config,
+ request));
+
+ // Clean up request
+ request = null;
+ };
+
+ // Remove Content-Type if data is undefined
+ requestData === undefined && requestHeaders.setContentType(null);
+
+ // Add headers to the request
+ if ('setRequestHeader' in request) {
+ utils$1.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {
+ request.setRequestHeader(key, val);
+ });
+ }
+
+ // Add withCredentials to request if needed
+ if (!utils$1.isUndefined(_config.withCredentials)) {
+ request.withCredentials = !!_config.withCredentials;
+ }
+
+ // Add responseType to request if needed
+ if (responseType && responseType !== 'json') {
+ request.responseType = _config.responseType;
+ }
+
+ // Handle progress if needed
+ if (typeof _config.onDownloadProgress === 'function') {
+ request.addEventListener('progress', progressEventReducer(_config.onDownloadProgress, true));
+ }
+
+ // Not all browsers support upload events
+ if (typeof _config.onUploadProgress === 'function' && request.upload) {
+ request.upload.addEventListener('progress', progressEventReducer(_config.onUploadProgress));
+ }
+
+ if (_config.cancelToken || _config.signal) {
+ // Handle cancellation
+ // eslint-disable-next-line func-names
+ onCanceled = cancel => {
+ if (!request) {
+ return;
+ }
+ reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);
+ request.abort();
+ request = null;
+ };
+
+ _config.cancelToken && _config.cancelToken.subscribe(onCanceled);
+ if (_config.signal) {
+ _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);
+ }
+ }
+
+ const protocol = parseProtocol(_config.url);
+
+ if (protocol && platform.protocols.indexOf(protocol) === -1) {
+ reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));
+ return;
+ }
+
+
+ // Send the request
+ request.send(requestData || null);
+ });
+};
+
+const composeSignals = (signals, timeout) => {
+ let controller = new AbortController();
+
+ let aborted;
+
+ const onabort = function (cancel) {
+ if (!aborted) {
+ aborted = true;
+ unsubscribe();
+ const err = cancel instanceof Error ? cancel : this.reason;
+ controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));
+ }
+ };
+
+ let timer = timeout && setTimeout(() => {
+ onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT));
+ }, timeout);
+
+ const unsubscribe = () => {
+ if (signals) {
+ timer && clearTimeout(timer);
+ timer = null;
+ signals.forEach(signal => {
+ signal &&
+ (signal.removeEventListener ? signal.removeEventListener('abort', onabort) : signal.unsubscribe(onabort));
+ });
+ signals = null;
+ }
+ };
+
+ signals.forEach((signal) => signal && signal.addEventListener && signal.addEventListener('abort', onabort));
+
+ const {signal} = controller;
+
+ signal.unsubscribe = unsubscribe;
+
+ return [signal, () => {
+ timer && clearTimeout(timer);
+ timer = null;
+ }];
+};
+
+const composeSignals$1 = composeSignals;
+
+const streamChunk = function* (chunk, chunkSize) {
+ let len = chunk.byteLength;
+
+ if (!chunkSize || len < chunkSize) {
+ yield chunk;
+ return;
+ }
+
+ let pos = 0;
+ let end;
+
+ while (pos < len) {
+ end = pos + chunkSize;
+ yield chunk.slice(pos, end);
+ pos = end;
+ }
+};
+
+const readBytes = async function* (iterable, chunkSize, encode) {
+ for await (const chunk of iterable) {
+ yield* streamChunk(ArrayBuffer.isView(chunk) ? chunk : (await encode(String(chunk))), chunkSize);
+ }
+};
+
+const trackStream = (stream, chunkSize, onProgress, onFinish, encode) => {
+ const iterator = readBytes(stream, chunkSize, encode);
+
+ let bytes = 0;
+
+ return new ReadableStream({
+ type: 'bytes',
+
+ async pull(controller) {
+ const {done, value} = await iterator.next();
+
+ if (done) {
+ controller.close();
+ onFinish();
+ return;
+ }
+
+ let len = value.byteLength;
+ onProgress && onProgress(bytes += len);
+ controller.enqueue(new Uint8Array(value));
+ },
+ cancel(reason) {
+ onFinish(reason);
+ return iterator.return();
+ }
+ }, {
+ highWaterMark: 2
+ })
+};
+
+const fetchProgressDecorator = (total, fn) => {
+ const lengthComputable = total != null;
+ return (loaded) => setTimeout(() => fn({
+ lengthComputable,
+ total,
+ loaded
+ }));
+};
+
+const isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';
+const isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';
+
+// used only inside the fetch adapter
+const encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?
+ ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :
+ async (str) => new Uint8Array(await new Response(str).arrayBuffer())
+);
+
+const supportsRequestStream = isReadableStreamSupported && (() => {
+ let duplexAccessed = false;
+
+ const hasContentType = new Request(platform.origin, {
+ body: new ReadableStream(),
+ method: 'POST',
+ get duplex() {
+ duplexAccessed = true;
+ return 'half';
+ },
+ }).headers.has('Content-Type');
+
+ return duplexAccessed && !hasContentType;
+})();
+
+const DEFAULT_CHUNK_SIZE = 64 * 1024;
+
+const supportsResponseStream = isReadableStreamSupported && !!(()=> {
+ try {
+ return utils$1.isReadableStream(new Response('').body);
+ } catch(err) {
+ // return undefined
+ }
+})();
+
+const resolvers = {
+ stream: supportsResponseStream && ((res) => res.body)
+};
+
+isFetchSupported && (((res) => {
+ ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {
+ !resolvers[type] && (resolvers[type] = utils$1.isFunction(res[type]) ? (res) => res[type]() :
+ (_, config) => {
+ throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);
+ });
+ });
+})(new Response));
+
+const getBodyLength = async (body) => {
+ if (body == null) {
+ return 0;
+ }
+
+ if(utils$1.isBlob(body)) {
+ return body.size;
+ }
+
+ if(utils$1.isSpecCompliantForm(body)) {
+ return (await new Request(body).arrayBuffer()).byteLength;
+ }
+
+ if(utils$1.isArrayBufferView(body)) {
+ return body.byteLength;
+ }
+
+ if(utils$1.isURLSearchParams(body)) {
+ body = body + '';
+ }
+
+ if(utils$1.isString(body)) {
+ return (await encodeText(body)).byteLength;
+ }
+};
+
+const resolveBodyLength = async (headers, body) => {
+ const length = utils$1.toFiniteNumber(headers.getContentLength());
+
+ return length == null ? getBodyLength(body) : length;
+};
+
+const fetchAdapter = isFetchSupported && (async (config) => {
+ let {
+ url,
+ method,
+ data,
+ signal,
+ cancelToken,
+ timeout,
+ onDownloadProgress,
+ onUploadProgress,
+ responseType,
+ headers,
+ withCredentials = 'same-origin',
+ fetchOptions
+ } = resolveConfig(config);
+
+ responseType = responseType ? (responseType + '').toLowerCase() : 'text';
+
+ let [composedSignal, stopTimeout] = (signal || cancelToken || timeout) ?
+ composeSignals$1([signal, cancelToken], timeout) : [];
+
+ let finished, request;
+
+ const onFinish = () => {
+ !finished && setTimeout(() => {
+ composedSignal && composedSignal.unsubscribe();
+ });
+
+ finished = true;
+ };
+
+ let requestContentLength;
+
+ try {
+ if (
+ onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&
+ (requestContentLength = await resolveBodyLength(headers, data)) !== 0
+ ) {
+ let _request = new Request(url, {
+ method: 'POST',
+ body: data,
+ duplex: "half"
+ });
+
+ let contentTypeHeader;
+
+ if (utils$1.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {
+ headers.setContentType(contentTypeHeader);
+ }
+
+ if (_request.body) {
+ data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, fetchProgressDecorator(
+ requestContentLength,
+ progressEventReducer(onUploadProgress)
+ ), null, encodeText);
+ }
+ }
+
+ if (!utils$1.isString(withCredentials)) {
+ withCredentials = withCredentials ? 'cors' : 'omit';
+ }
+
+ request = new Request(url, {
+ ...fetchOptions,
+ signal: composedSignal,
+ method: method.toUpperCase(),
+ headers: headers.normalize().toJSON(),
+ body: data,
+ duplex: "half",
+ withCredentials
+ });
+
+ let response = await fetch(request);
+
+ const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');
+
+ if (supportsResponseStream && (onDownloadProgress || isStreamResponse)) {
+ const options = {};
+
+ ['status', 'statusText', 'headers'].forEach(prop => {
+ options[prop] = response[prop];
+ });
+
+ const responseContentLength = utils$1.toFiniteNumber(response.headers.get('content-length'));
+
+ response = new Response(
+ trackStream(response.body, DEFAULT_CHUNK_SIZE, onDownloadProgress && fetchProgressDecorator(
+ responseContentLength,
+ progressEventReducer(onDownloadProgress, true)
+ ), isStreamResponse && onFinish, encodeText),
+ options
+ );
+ }
+
+ responseType = responseType || 'text';
+
+ let responseData = await resolvers[utils$1.findKey(resolvers, responseType) || 'text'](response, config);
+
+ !isStreamResponse && onFinish();
+
+ stopTimeout && stopTimeout();
+
+ return await new Promise((resolve, reject) => {
+ settle(resolve, reject, {
+ data: responseData,
+ headers: AxiosHeaders$1.from(response.headers),
+ status: response.status,
+ statusText: response.statusText,
+ config,
+ request
+ });
+ })
+ } catch (err) {
+ onFinish();
+
+ if (err && err.name === 'TypeError' && /fetch/i.test(err.message)) {
+ throw Object.assign(
+ new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),
+ {
+ cause: err.cause || err
+ }
+ )
+ }
+
+ throw AxiosError.from(err, err && err.code, config, request);
+ }
+});
+
+const knownAdapters = {
+ http: httpAdapter,
+ xhr: xhrAdapter,
+ fetch: fetchAdapter
+};
+
+utils$1.forEach(knownAdapters, (fn, value) => {
+ if (fn) {
+ try {
+ Object.defineProperty(fn, 'name', {value});
+ } catch (e) {
+ // eslint-disable-next-line no-empty
+ }
+ Object.defineProperty(fn, 'adapterName', {value});
+ }
+});
+
+const renderReason = (reason) => `- ${reason}`;
+
+const isResolvedHandle = (adapter) => utils$1.isFunction(adapter) || adapter === null || adapter === false;
+
+const adapters = {
+ getAdapter: (adapters) => {
+ adapters = utils$1.isArray(adapters) ? adapters : [adapters];
+
+ const {length} = adapters;
+ let nameOrAdapter;
+ let adapter;
+
+ const rejectedReasons = {};
+
+ for (let i = 0; i < length; i++) {
+ nameOrAdapter = adapters[i];
+ let id;
+
+ adapter = nameOrAdapter;
+
+ if (!isResolvedHandle(nameOrAdapter)) {
+ adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];
+
+ if (adapter === undefined) {
+ throw new AxiosError(`Unknown adapter '${id}'`);
+ }
+ }
+
+ if (adapter) {
+ break;
+ }
+
+ rejectedReasons[id || '#' + i] = adapter;
+ }
+
+ if (!adapter) {
+
+ const reasons = Object.entries(rejectedReasons)
+ .map(([id, state]) => `adapter ${id} ` +
+ (state === false ? 'is not supported by the environment' : 'is not available in the build')
+ );
+
+ let s = length ?
+ (reasons.length > 1 ? 'since :\n' + reasons.map(renderReason).join('\n') : ' ' + renderReason(reasons[0])) :
+ 'as no adapter specified';
+
+ throw new AxiosError(
+ `There is no suitable adapter to dispatch the request ` + s,
+ 'ERR_NOT_SUPPORT'
+ );
+ }
+
+ return adapter;
+ },
+ adapters: knownAdapters
+};
+
+/**
+ * Throws a `CanceledError` if cancellation has been requested.
+ *
+ * @param {Object} config The config that is to be used for the request
+ *
+ * @returns {void}
+ */
+function throwIfCancellationRequested(config) {
+ if (config.cancelToken) {
+ config.cancelToken.throwIfRequested();
+ }
+
+ if (config.signal && config.signal.aborted) {
+ throw new CanceledError(null, config);
+ }
+}
+
+/**
+ * Dispatch a request to the server using the configured adapter.
+ *
+ * @param {object} config The config that is to be used for the request
+ *
+ * @returns {Promise} The Promise to be fulfilled
+ */
+function dispatchRequest(config) {
+ throwIfCancellationRequested(config);
+
+ config.headers = AxiosHeaders$1.from(config.headers);
+
+ // Transform request data
+ config.data = transformData.call(
+ config,
+ config.transformRequest
+ );
+
+ if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {
+ config.headers.setContentType('application/x-www-form-urlencoded', false);
+ }
+
+ const adapter = adapters.getAdapter(config.adapter || defaults$1.adapter);
+
+ return adapter(config).then(function onAdapterResolution(response) {
+ throwIfCancellationRequested(config);
+
+ // Transform response data
+ response.data = transformData.call(
+ config,
+ config.transformResponse,
+ response
+ );
+
+ response.headers = AxiosHeaders$1.from(response.headers);
+
+ return response;
+ }, function onAdapterRejection(reason) {
+ if (!isCancel(reason)) {
+ throwIfCancellationRequested(config);
+
+ // Transform response data
+ if (reason && reason.response) {
+ reason.response.data = transformData.call(
+ config,
+ config.transformResponse,
+ reason.response
+ );
+ reason.response.headers = AxiosHeaders$1.from(reason.response.headers);
+ }
+ }
+
+ return Promise.reject(reason);
+ });
+}
+
+const validators$1 = {};
+
+// eslint-disable-next-line func-names
+['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {
+ validators$1[type] = function validator(thing) {
+ return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;
+ };
+});
+
+const deprecatedWarnings = {};
+
+/**
+ * Transitional option validator
+ *
+ * @param {function|boolean?} validator - set to false if the transitional option has been removed
+ * @param {string?} version - deprecated version / removed since version
+ * @param {string?} message - some message with additional info
+ *
+ * @returns {function}
+ */
+validators$1.transitional = function transitional(validator, version, message) {
+ function formatMessage(opt, desc) {
+ return '[Axios v' + VERSION + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : '');
+ }
+
+ // eslint-disable-next-line func-names
+ return (value, opt, opts) => {
+ if (validator === false) {
+ throw new AxiosError(
+ formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),
+ AxiosError.ERR_DEPRECATED
+ );
+ }
+
+ if (version && !deprecatedWarnings[opt]) {
+ deprecatedWarnings[opt] = true;
+ // eslint-disable-next-line no-console
+ console.warn(
+ formatMessage(
+ opt,
+ ' has been deprecated since v' + version + ' and will be removed in the near future'
+ )
+ );
+ }
+
+ return validator ? validator(value, opt, opts) : true;
+ };
+};
+
+/**
+ * Assert object's properties type
+ *
+ * @param {object} options
+ * @param {object} schema
+ * @param {boolean?} allowUnknown
+ *
+ * @returns {object}
+ */
+
+function assertOptions(options, schema, allowUnknown) {
+ if (typeof options !== 'object') {
+ throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);
+ }
+ const keys = Object.keys(options);
+ let i = keys.length;
+ while (i-- > 0) {
+ const opt = keys[i];
+ const validator = schema[opt];
+ if (validator) {
+ const value = options[opt];
+ const result = value === undefined || validator(value, opt, options);
+ if (result !== true) {
+ throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);
+ }
+ continue;
+ }
+ if (allowUnknown !== true) {
+ throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);
+ }
+ }
+}
+
+const validator = {
+ assertOptions,
+ validators: validators$1
+};
+
+const validators = validator.validators;
+
+/**
+ * Create a new instance of Axios
+ *
+ * @param {Object} instanceConfig The default config for the instance
+ *
+ * @return {Axios} A new instance of Axios
+ */
+class Axios {
+ constructor(instanceConfig) {
+ this.defaults = instanceConfig;
+ this.interceptors = {
+ request: new InterceptorManager$1(),
+ response: new InterceptorManager$1()
+ };
+ }
+
+ /**
+ * Dispatch a request
+ *
+ * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)
+ * @param {?Object} config
+ *
+ * @returns {Promise} The Promise to be fulfilled
+ */
+ async request(configOrUrl, config) {
+ try {
+ return await this._request(configOrUrl, config);
+ } catch (err) {
+ if (err instanceof Error) {
+ let dummy;
+
+ Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());
+
+ // slice off the Error: ... line
+ const stack = dummy.stack ? dummy.stack.replace(/^.+\n/, '') : '';
+ try {
+ if (!err.stack) {
+ err.stack = stack;
+ // match without the 2 top stack lines
+ } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\n.+\n/, ''))) {
+ err.stack += '\n' + stack;
+ }
+ } catch (e) {
+ // ignore the case where "stack" is an un-writable property
+ }
+ }
+
+ throw err;
+ }
+ }
+
+ _request(configOrUrl, config) {
+ /*eslint no-param-reassign:0*/
+ // Allow for axios('example/url'[, config]) a la fetch API
+ if (typeof configOrUrl === 'string') {
+ config = config || {};
+ config.url = configOrUrl;
+ } else {
+ config = configOrUrl || {};
+ }
+
+ config = mergeConfig(this.defaults, config);
+
+ const {transitional, paramsSerializer, headers} = config;
+
+ if (transitional !== undefined) {
+ validator.assertOptions(transitional, {
+ silentJSONParsing: validators.transitional(validators.boolean),
+ forcedJSONParsing: validators.transitional(validators.boolean),
+ clarifyTimeoutError: validators.transitional(validators.boolean)
+ }, false);
+ }
+
+ if (paramsSerializer != null) {
+ if (utils$1.isFunction(paramsSerializer)) {
+ config.paramsSerializer = {
+ serialize: paramsSerializer
+ };
+ } else {
+ validator.assertOptions(paramsSerializer, {
+ encode: validators.function,
+ serialize: validators.function
+ }, true);
+ }
+ }
+
+ // Set config.method
+ config.method = (config.method || this.defaults.method || 'get').toLowerCase();
+
+ // Flatten headers
+ let contextHeaders = headers && utils$1.merge(
+ headers.common,
+ headers[config.method]
+ );
+
+ headers && utils$1.forEach(
+ ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],
+ (method) => {
+ delete headers[method];
+ }
+ );
+
+ config.headers = AxiosHeaders$1.concat(contextHeaders, headers);
+
+ // filter out skipped interceptors
+ const requestInterceptorChain = [];
+ let synchronousRequestInterceptors = true;
+ this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {
+ if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {
+ return;
+ }
+
+ synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;
+
+ requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);
+ });
+
+ const responseInterceptorChain = [];
+ this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {
+ responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);
+ });
+
+ let promise;
+ let i = 0;
+ let len;
+
+ if (!synchronousRequestInterceptors) {
+ const chain = [dispatchRequest.bind(this), undefined];
+ chain.unshift.apply(chain, requestInterceptorChain);
+ chain.push.apply(chain, responseInterceptorChain);
+ len = chain.length;
+
+ promise = Promise.resolve(config);
+
+ while (i < len) {
+ promise = promise.then(chain[i++], chain[i++]);
+ }
+
+ return promise;
+ }
+
+ len = requestInterceptorChain.length;
+
+ let newConfig = config;
+
+ i = 0;
+
+ while (i < len) {
+ const onFulfilled = requestInterceptorChain[i++];
+ const onRejected = requestInterceptorChain[i++];
+ try {
+ newConfig = onFulfilled(newConfig);
+ } catch (error) {
+ onRejected.call(this, error);
+ break;
+ }
+ }
+
+ try {
+ promise = dispatchRequest.call(this, newConfig);
+ } catch (error) {
+ return Promise.reject(error);
+ }
+
+ i = 0;
+ len = responseInterceptorChain.length;
+
+ while (i < len) {
+ promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);
+ }
+
+ return promise;
+ }
+
+ getUri(config) {
+ config = mergeConfig(this.defaults, config);
+ const fullPath = buildFullPath(config.baseURL, config.url);
+ return buildURL(fullPath, config.params, config.paramsSerializer);
+ }
+}
+
+// Provide aliases for supported request methods
+utils$1.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {
+ /*eslint func-names:0*/
+ Axios.prototype[method] = function(url, config) {
+ return this.request(mergeConfig(config || {}, {
+ method,
+ url,
+ data: (config || {}).data
+ }));
+ };
+});
+
+utils$1.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {
+ /*eslint func-names:0*/
+
+ function generateHTTPMethod(isForm) {
+ return function httpMethod(url, data, config) {
+ return this.request(mergeConfig(config || {}, {
+ method,
+ headers: isForm ? {
+ 'Content-Type': 'multipart/form-data'
+ } : {},
+ url,
+ data
+ }));
+ };
+ }
+
+ Axios.prototype[method] = generateHTTPMethod();
+
+ Axios.prototype[method + 'Form'] = generateHTTPMethod(true);
+});
+
+const Axios$1 = Axios;
+
+/**
+ * A `CancelToken` is an object that can be used to request cancellation of an operation.
+ *
+ * @param {Function} executor The executor function.
+ *
+ * @returns {CancelToken}
+ */
+class CancelToken {
+ constructor(executor) {
+ if (typeof executor !== 'function') {
+ throw new TypeError('executor must be a function.');
+ }
+
+ let resolvePromise;
+
+ this.promise = new Promise(function promiseExecutor(resolve) {
+ resolvePromise = resolve;
+ });
+
+ const token = this;
+
+ // eslint-disable-next-line func-names
+ this.promise.then(cancel => {
+ if (!token._listeners) return;
+
+ let i = token._listeners.length;
+
+ while (i-- > 0) {
+ token._listeners[i](cancel);
+ }
+ token._listeners = null;
+ });
+
+ // eslint-disable-next-line func-names
+ this.promise.then = onfulfilled => {
+ let _resolve;
+ // eslint-disable-next-line func-names
+ const promise = new Promise(resolve => {
+ token.subscribe(resolve);
+ _resolve = resolve;
+ }).then(onfulfilled);
+
+ promise.cancel = function reject() {
+ token.unsubscribe(_resolve);
+ };
+
+ return promise;
+ };
+
+ executor(function cancel(message, config, request) {
+ if (token.reason) {
+ // Cancellation has already been requested
+ return;
+ }
+
+ token.reason = new CanceledError(message, config, request);
+ resolvePromise(token.reason);
+ });
+ }
+
+ /**
+ * Throws a `CanceledError` if cancellation has been requested.
+ */
+ throwIfRequested() {
+ if (this.reason) {
+ throw this.reason;
+ }
+ }
+
+ /**
+ * Subscribe to the cancel signal
+ */
+
+ subscribe(listener) {
+ if (this.reason) {
+ listener(this.reason);
+ return;
+ }
+
+ if (this._listeners) {
+ this._listeners.push(listener);
+ } else {
+ this._listeners = [listener];
+ }
+ }
+
+ /**
+ * Unsubscribe from the cancel signal
+ */
+
+ unsubscribe(listener) {
+ if (!this._listeners) {
+ return;
+ }
+ const index = this._listeners.indexOf(listener);
+ if (index !== -1) {
+ this._listeners.splice(index, 1);
+ }
+ }
+
+ /**
+ * Returns an object that contains a new `CancelToken` and a function that, when called,
+ * cancels the `CancelToken`.
+ */
+ static source() {
+ let cancel;
+ const token = new CancelToken(function executor(c) {
+ cancel = c;
+ });
+ return {
+ token,
+ cancel
+ };
+ }
+}
+
+const CancelToken$1 = CancelToken;
+
+/**
+ * Syntactic sugar for invoking a function and expanding an array for arguments.
+ *
+ * Common use case would be to use `Function.prototype.apply`.
+ *
+ * ```js
+ * function f(x, y, z) {}
+ * var args = [1, 2, 3];
+ * f.apply(null, args);
+ * ```
+ *
+ * With `spread` this example can be re-written.
+ *
+ * ```js
+ * spread(function(x, y, z) {})([1, 2, 3]);
+ * ```
+ *
+ * @param {Function} callback
+ *
+ * @returns {Function}
+ */
+function spread(callback) {
+ return function wrap(arr) {
+ return callback.apply(null, arr);
+ };
+}
+
+/**
+ * Determines whether the payload is an error thrown by Axios
+ *
+ * @param {*} payload The value to test
+ *
+ * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false
+ */
+function isAxiosError(payload) {
+ return utils$1.isObject(payload) && (payload.isAxiosError === true);
+}
+
+const HttpStatusCode = {
+ Continue: 100,
+ SwitchingProtocols: 101,
+ Processing: 102,
+ EarlyHints: 103,
+ Ok: 200,
+ Created: 201,
+ Accepted: 202,
+ NonAuthoritativeInformation: 203,
+ NoContent: 204,
+ ResetContent: 205,
+ PartialContent: 206,
+ MultiStatus: 207,
+ AlreadyReported: 208,
+ ImUsed: 226,
+ MultipleChoices: 300,
+ MovedPermanently: 301,
+ Found: 302,
+ SeeOther: 303,
+ NotModified: 304,
+ UseProxy: 305,
+ Unused: 306,
+ TemporaryRedirect: 307,
+ PermanentRedirect: 308,
+ BadRequest: 400,
+ Unauthorized: 401,
+ PaymentRequired: 402,
+ Forbidden: 403,
+ NotFound: 404,
+ MethodNotAllowed: 405,
+ NotAcceptable: 406,
+ ProxyAuthenticationRequired: 407,
+ RequestTimeout: 408,
+ Conflict: 409,
+ Gone: 410,
+ LengthRequired: 411,
+ PreconditionFailed: 412,
+ PayloadTooLarge: 413,
+ UriTooLong: 414,
+ UnsupportedMediaType: 415,
+ RangeNotSatisfiable: 416,
+ ExpectationFailed: 417,
+ ImATeapot: 418,
+ MisdirectedRequest: 421,
+ UnprocessableEntity: 422,
+ Locked: 423,
+ FailedDependency: 424,
+ TooEarly: 425,
+ UpgradeRequired: 426,
+ PreconditionRequired: 428,
+ TooManyRequests: 429,
+ RequestHeaderFieldsTooLarge: 431,
+ UnavailableForLegalReasons: 451,
+ InternalServerError: 500,
+ NotImplemented: 501,
+ BadGateway: 502,
+ ServiceUnavailable: 503,
+ GatewayTimeout: 504,
+ HttpVersionNotSupported: 505,
+ VariantAlsoNegotiates: 506,
+ InsufficientStorage: 507,
+ LoopDetected: 508,
+ NotExtended: 510,
+ NetworkAuthenticationRequired: 511,
+};
+
+Object.entries(HttpStatusCode).forEach(([key, value]) => {
+ HttpStatusCode[value] = key;
+});
+
+const HttpStatusCode$1 = HttpStatusCode;
+
+/**
+ * Create an instance of Axios
+ *
+ * @param {Object} defaultConfig The default config for the instance
+ *
+ * @returns {Axios} A new instance of Axios
+ */
+function createInstance(defaultConfig) {
+ const context = new Axios$1(defaultConfig);
+ const instance = bind(Axios$1.prototype.request, context);
+
+ // Copy axios.prototype to instance
+ utils$1.extend(instance, Axios$1.prototype, context, {allOwnKeys: true});
+
+ // Copy context to instance
+ utils$1.extend(instance, context, null, {allOwnKeys: true});
+
+ // Factory for creating new instances
+ instance.create = function create(instanceConfig) {
+ return createInstance(mergeConfig(defaultConfig, instanceConfig));
+ };
+
+ return instance;
+}
+
+// Create the default instance to be exported
+const axios = createInstance(defaults$1);
+
+// Expose Axios class to allow class inheritance
+axios.Axios = Axios$1;
+
+// Expose Cancel & CancelToken
+axios.CanceledError = CanceledError;
+axios.CancelToken = CancelToken$1;
+axios.isCancel = isCancel;
+axios.VERSION = VERSION;
+axios.toFormData = toFormData;
+
+// Expose AxiosError class
+axios.AxiosError = AxiosError;
+
+// alias for CanceledError for backward compatibility
+axios.Cancel = axios.CanceledError;
+
+// Expose all/spread
+axios.all = function all(promises) {
+ return Promise.all(promises);
+};
+
+axios.spread = spread;
+
+// Expose isAxiosError
+axios.isAxiosError = isAxiosError;
+
+// Expose mergeConfig
+axios.mergeConfig = mergeConfig;
+
+axios.AxiosHeaders = AxiosHeaders$1;
+
+axios.formToJSON = thing => formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing);
+
+axios.getAdapter = adapters.getAdapter;
+
+axios.HttpStatusCode = HttpStatusCode$1;
+
+axios.default = axios;
+
+module.exports = axios;
+//# sourceMappingURL=axios.cjs.map
diff --git a/node_modules/axios/dist/node/axios.cjs.map b/node_modules/axios/dist/node/axios.cjs.map
new file mode 100644
index 00000000..825edd67
--- /dev/null
+++ b/node_modules/axios/dist/node/axios.cjs.map
@@ -0,0 +1 @@
+{"version":3,"file":"axios.cjs","sources":["../../lib/helpers/bind.js","../../lib/utils.js","../../lib/core/AxiosError.js","../../lib/helpers/toFormData.js","../../lib/helpers/AxiosURLSearchParams.js","../../lib/helpers/buildURL.js","../../lib/core/InterceptorManager.js","../../lib/defaults/transitional.js","../../lib/platform/node/classes/URLSearchParams.js","../../lib/platform/node/index.js","../../lib/platform/common/utils.js","../../lib/platform/index.js","../../lib/helpers/toURLEncodedForm.js","../../lib/helpers/formDataToJSON.js","../../lib/defaults/index.js","../../lib/helpers/parseHeaders.js","../../lib/core/AxiosHeaders.js","../../lib/core/transformData.js","../../lib/cancel/isCancel.js","../../lib/cancel/CanceledError.js","../../lib/core/settle.js","../../lib/helpers/isAbsoluteURL.js","../../lib/helpers/combineURLs.js","../../lib/core/buildFullPath.js","../../lib/env/data.js","../../lib/helpers/parseProtocol.js","../../lib/helpers/fromDataURI.js","../../lib/helpers/throttle.js","../../lib/helpers/speedometer.js","../../lib/helpers/AxiosTransformStream.js","../../lib/helpers/readBlob.js","../../lib/helpers/formDataToStream.js","../../lib/helpers/ZlibHeaderTransformStream.js","../../lib/helpers/callbackify.js","../../lib/adapters/http.js","../../lib/helpers/progressEventReducer.js","../../lib/helpers/isURLSameOrigin.js","../../lib/helpers/cookies.js","../../lib/core/mergeConfig.js","../../lib/helpers/resolveConfig.js","../../lib/adapters/xhr.js","../../lib/helpers/composeSignals.js","../../lib/helpers/trackStream.js","../../lib/adapters/fetch.js","../../lib/adapters/adapters.js","../../lib/core/dispatchRequest.js","../../lib/helpers/validator.js","../../lib/core/Axios.js","../../lib/cancel/CancelToken.js","../../lib/helpers/spread.js","../../lib/helpers/isAxiosError.js","../../lib/helpers/HttpStatusCode.js","../../lib/axios.js"],"sourcesContent":["'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nimport url from 'url';\nexport default url.URLSearchParams;\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\n\nexport default {\n isNode: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob: typeof Blob !== 'undefined' && Blob || null\n },\n protocols: [ 'http', 'https', 'file', 'data' ]\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = (\n (product) => {\n return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0\n })(typeof navigator !== 'undefined' && navigator.product);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isHeaders(header)) {\n for (const [key, value] of header.entries()) {\n setHeader(value, key, rewrite);\n }\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","export const VERSION = \"1.7.2\";","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport parseProtocol from './parseProtocol.js';\nimport platform from '../platform/index.js';\n\nconst DATA_URL_PATTERN = /^(?:([^;]+);)?(?:[^;]+;)?(base64|),([\\s\\S]*)$/;\n\n/**\n * Parse data uri to a Buffer or Blob\n *\n * @param {String} uri\n * @param {?Boolean} asBlob\n * @param {?Object} options\n * @param {?Function} options.Blob\n *\n * @returns {Buffer|Blob}\n */\nexport default function fromDataURI(uri, asBlob, options) {\n const _Blob = options && options.Blob || platform.classes.Blob;\n const protocol = parseProtocol(uri);\n\n if (asBlob === undefined && _Blob) {\n asBlob = true;\n }\n\n if (protocol === 'data') {\n uri = protocol.length ? uri.slice(protocol.length + 1) : uri;\n\n const match = DATA_URL_PATTERN.exec(uri);\n\n if (!match) {\n throw new AxiosError('Invalid URL', AxiosError.ERR_INVALID_URL);\n }\n\n const mime = match[1];\n const isBase64 = match[2];\n const body = match[3];\n const buffer = Buffer.from(decodeURIComponent(body), isBase64 ? 'base64' : 'utf8');\n\n if (asBlob) {\n if (!_Blob) {\n throw new AxiosError('Blob is not supported', AxiosError.ERR_NOT_SUPPORT);\n }\n\n return new _Blob([buffer], {type: mime});\n }\n\n return buffer;\n }\n\n throw new AxiosError('Unsupported protocol ' + protocol, AxiosError.ERR_NOT_SUPPORT);\n}\n","'use strict';\n\n/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n const threshold = 1000 / freq;\n let timer = null;\n return function throttled() {\n const force = this === true;\n\n const now = Date.now();\n if (force || now - timestamp > threshold) {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n timestamp = now;\n return fn.apply(null, arguments);\n }\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n timestamp = Date.now();\n return fn.apply(null, arguments);\n }, threshold - (now - timestamp));\n }\n };\n}\n\nexport default throttle;\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","'use strict';\n\nimport stream from 'stream';\nimport utils from '../utils.js';\nimport throttle from './throttle.js';\nimport speedometer from './speedometer.js';\n\nconst kInternals = Symbol('internals');\n\nclass AxiosTransformStream extends stream.Transform{\n constructor(options) {\n options = utils.toFlatObject(options, {\n maxRate: 0,\n chunkSize: 64 * 1024,\n minChunkSize: 100,\n timeWindow: 500,\n ticksRate: 2,\n samplesCount: 15\n }, null, (prop, source) => {\n return !utils.isUndefined(source[prop]);\n });\n\n super({\n readableHighWaterMark: options.chunkSize\n });\n\n const self = this;\n\n const internals = this[kInternals] = {\n length: options.length,\n timeWindow: options.timeWindow,\n ticksRate: options.ticksRate,\n chunkSize: options.chunkSize,\n maxRate: options.maxRate,\n minChunkSize: options.minChunkSize,\n bytesSeen: 0,\n isCaptured: false,\n notifiedBytesLoaded: 0,\n ts: Date.now(),\n bytes: 0,\n onReadCallback: null\n };\n\n const _speedometer = speedometer(internals.ticksRate * options.samplesCount, internals.timeWindow);\n\n this.on('newListener', event => {\n if (event === 'progress') {\n if (!internals.isCaptured) {\n internals.isCaptured = true;\n }\n }\n });\n\n let bytesNotified = 0;\n\n internals.updateProgress = throttle(function throttledHandler() {\n const totalBytes = internals.length;\n const bytesTransferred = internals.bytesSeen;\n const progressBytes = bytesTransferred - bytesNotified;\n if (!progressBytes || self.destroyed) return;\n\n const rate = _speedometer(progressBytes);\n\n bytesNotified = bytesTransferred;\n\n process.nextTick(() => {\n self.emit('progress', {\n loaded: bytesTransferred,\n total: totalBytes,\n progress: totalBytes ? (bytesTransferred / totalBytes) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && totalBytes && bytesTransferred <= totalBytes ?\n (totalBytes - bytesTransferred) / rate : undefined,\n lengthComputable: totalBytes != null\n });\n });\n }, internals.ticksRate);\n\n const onFinish = () => {\n internals.updateProgress.call(true);\n };\n\n this.once('end', onFinish);\n this.once('error', onFinish);\n }\n\n _read(size) {\n const internals = this[kInternals];\n\n if (internals.onReadCallback) {\n internals.onReadCallback();\n }\n\n return super._read(size);\n }\n\n _transform(chunk, encoding, callback) {\n const self = this;\n const internals = this[kInternals];\n const maxRate = internals.maxRate;\n\n const readableHighWaterMark = this.readableHighWaterMark;\n\n const timeWindow = internals.timeWindow;\n\n const divider = 1000 / timeWindow;\n const bytesThreshold = (maxRate / divider);\n const minChunkSize = internals.minChunkSize !== false ? Math.max(internals.minChunkSize, bytesThreshold * 0.01) : 0;\n\n function pushChunk(_chunk, _callback) {\n const bytes = Buffer.byteLength(_chunk);\n internals.bytesSeen += bytes;\n internals.bytes += bytes;\n\n if (internals.isCaptured) {\n internals.updateProgress();\n }\n\n if (self.push(_chunk)) {\n process.nextTick(_callback);\n } else {\n internals.onReadCallback = () => {\n internals.onReadCallback = null;\n process.nextTick(_callback);\n };\n }\n }\n\n const transformChunk = (_chunk, _callback) => {\n const chunkSize = Buffer.byteLength(_chunk);\n let chunkRemainder = null;\n let maxChunkSize = readableHighWaterMark;\n let bytesLeft;\n let passed = 0;\n\n if (maxRate) {\n const now = Date.now();\n\n if (!internals.ts || (passed = (now - internals.ts)) >= timeWindow) {\n internals.ts = now;\n bytesLeft = bytesThreshold - internals.bytes;\n internals.bytes = bytesLeft < 0 ? -bytesLeft : 0;\n passed = 0;\n }\n\n bytesLeft = bytesThreshold - internals.bytes;\n }\n\n if (maxRate) {\n if (bytesLeft <= 0) {\n // next time window\n return setTimeout(() => {\n _callback(null, _chunk);\n }, timeWindow - passed);\n }\n\n if (bytesLeft < maxChunkSize) {\n maxChunkSize = bytesLeft;\n }\n }\n\n if (maxChunkSize && chunkSize > maxChunkSize && (chunkSize - maxChunkSize) > minChunkSize) {\n chunkRemainder = _chunk.subarray(maxChunkSize);\n _chunk = _chunk.subarray(0, maxChunkSize);\n }\n\n pushChunk(_chunk, chunkRemainder ? () => {\n process.nextTick(_callback, null, chunkRemainder);\n } : _callback);\n };\n\n transformChunk(chunk, function transformNextChunk(err, _chunk) {\n if (err) {\n return callback(err);\n }\n\n if (_chunk) {\n transformChunk(_chunk, transformNextChunk);\n } else {\n callback(null);\n }\n });\n }\n\n setLength(length) {\n this[kInternals].length = +length;\n return this;\n }\n}\n\nexport default AxiosTransformStream;\n","const {asyncIterator} = Symbol;\n\nconst readBlob = async function* (blob) {\n if (blob.stream) {\n yield* blob.stream()\n } else if (blob.arrayBuffer) {\n yield await blob.arrayBuffer()\n } else if (blob[asyncIterator]) {\n yield* blob[asyncIterator]();\n } else {\n yield blob;\n }\n}\n\nexport default readBlob;\n","import {TextEncoder} from 'util';\nimport {Readable} from 'stream';\nimport utils from \"../utils.js\";\nimport readBlob from \"./readBlob.js\";\n\nconst BOUNDARY_ALPHABET = utils.ALPHABET.ALPHA_DIGIT + '-_';\n\nconst textEncoder = new TextEncoder();\n\nconst CRLF = '\\r\\n';\nconst CRLF_BYTES = textEncoder.encode(CRLF);\nconst CRLF_BYTES_COUNT = 2;\n\nclass FormDataPart {\n constructor(name, value) {\n const {escapeName} = this.constructor;\n const isStringValue = utils.isString(value);\n\n let headers = `Content-Disposition: form-data; name=\"${escapeName(name)}\"${\n !isStringValue && value.name ? `; filename=\"${escapeName(value.name)}\"` : ''\n }${CRLF}`;\n\n if (isStringValue) {\n value = textEncoder.encode(String(value).replace(/\\r?\\n|\\r\\n?/g, CRLF));\n } else {\n headers += `Content-Type: ${value.type || \"application/octet-stream\"}${CRLF}`\n }\n\n this.headers = textEncoder.encode(headers + CRLF);\n\n this.contentLength = isStringValue ? value.byteLength : value.size;\n\n this.size = this.headers.byteLength + this.contentLength + CRLF_BYTES_COUNT;\n\n this.name = name;\n this.value = value;\n }\n\n async *encode(){\n yield this.headers;\n\n const {value} = this;\n\n if(utils.isTypedArray(value)) {\n yield value;\n } else {\n yield* readBlob(value);\n }\n\n yield CRLF_BYTES;\n }\n\n static escapeName(name) {\n return String(name).replace(/[\\r\\n\"]/g, (match) => ({\n '\\r' : '%0D',\n '\\n' : '%0A',\n '\"' : '%22',\n }[match]));\n }\n}\n\nconst formDataToStream = (form, headersHandler, options) => {\n const {\n tag = 'form-data-boundary',\n size = 25,\n boundary = tag + '-' + utils.generateString(size, BOUNDARY_ALPHABET)\n } = options || {};\n\n if(!utils.isFormData(form)) {\n throw TypeError('FormData instance required');\n }\n\n if (boundary.length < 1 || boundary.length > 70) {\n throw Error('boundary must be 10-70 characters long')\n }\n\n const boundaryBytes = textEncoder.encode('--' + boundary + CRLF);\n const footerBytes = textEncoder.encode('--' + boundary + '--' + CRLF + CRLF);\n let contentLength = footerBytes.byteLength;\n\n const parts = Array.from(form.entries()).map(([name, value]) => {\n const part = new FormDataPart(name, value);\n contentLength += part.size;\n return part;\n });\n\n contentLength += boundaryBytes.byteLength * parts.length;\n\n contentLength = utils.toFiniteNumber(contentLength);\n\n const computedHeaders = {\n 'Content-Type': `multipart/form-data; boundary=${boundary}`\n }\n\n if (Number.isFinite(contentLength)) {\n computedHeaders['Content-Length'] = contentLength;\n }\n\n headersHandler && headersHandler(computedHeaders);\n\n return Readable.from((async function *() {\n for(const part of parts) {\n yield boundaryBytes;\n yield* part.encode();\n }\n\n yield footerBytes;\n })());\n};\n\nexport default formDataToStream;\n","\"use strict\";\n\nimport stream from \"stream\";\n\nclass ZlibHeaderTransformStream extends stream.Transform {\n __transform(chunk, encoding, callback) {\n this.push(chunk);\n callback();\n }\n\n _transform(chunk, encoding, callback) {\n if (chunk.length !== 0) {\n this._transform = this.__transform;\n\n // Add Default Compression headers if no zlib headers are present\n if (chunk[0] !== 120) { // Hex: 78\n const header = Buffer.alloc(2);\n header[0] = 120; // Hex: 78\n header[1] = 156; // Hex: 9C \n this.push(header, encoding);\n }\n }\n\n this.__transform(chunk, encoding, callback);\n }\n}\n\nexport default ZlibHeaderTransformStream;\n","import utils from \"../utils.js\";\n\nconst callbackify = (fn, reducer) => {\n return utils.isAsyncFn(fn) ? function (...args) {\n const cb = args.pop();\n fn.apply(this, args).then((value) => {\n try {\n reducer ? cb(null, ...reducer(value)) : cb(null, value);\n } catch (err) {\n cb(err);\n }\n }, cb);\n } : fn;\n}\n\nexport default callbackify;\n","'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport buildURL from './../helpers/buildURL.js';\nimport {getProxyForUrl} from 'proxy-from-env';\nimport http from 'http';\nimport https from 'https';\nimport util from 'util';\nimport followRedirects from 'follow-redirects';\nimport zlib from 'zlib';\nimport {VERSION} from '../env/data.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport platform from '../platform/index.js';\nimport fromDataURI from '../helpers/fromDataURI.js';\nimport stream from 'stream';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport AxiosTransformStream from '../helpers/AxiosTransformStream.js';\nimport {EventEmitter} from 'events';\nimport formDataToStream from \"../helpers/formDataToStream.js\";\nimport readBlob from \"../helpers/readBlob.js\";\nimport ZlibHeaderTransformStream from '../helpers/ZlibHeaderTransformStream.js';\nimport callbackify from \"../helpers/callbackify.js\";\n\nconst zlibOptions = {\n flush: zlib.constants.Z_SYNC_FLUSH,\n finishFlush: zlib.constants.Z_SYNC_FLUSH\n};\n\nconst brotliOptions = {\n flush: zlib.constants.BROTLI_OPERATION_FLUSH,\n finishFlush: zlib.constants.BROTLI_OPERATION_FLUSH\n}\n\nconst isBrotliSupported = utils.isFunction(zlib.createBrotliDecompress);\n\nconst {http: httpFollow, https: httpsFollow} = followRedirects;\n\nconst isHttps = /https:?/;\n\nconst supportedProtocols = platform.protocols.map(protocol => {\n return protocol + ':';\n});\n\n/**\n * If the proxy or config beforeRedirects functions are defined, call them with the options\n * object.\n *\n * @param {Object} options - The options object that was passed to the request.\n *\n * @returns {Object}\n */\nfunction dispatchBeforeRedirect(options, responseDetails) {\n if (options.beforeRedirects.proxy) {\n options.beforeRedirects.proxy(options);\n }\n if (options.beforeRedirects.config) {\n options.beforeRedirects.config(options, responseDetails);\n }\n}\n\n/**\n * If the proxy or config afterRedirects functions are defined, call them with the options\n *\n * @param {http.ClientRequestArgs} options\n * @param {AxiosProxyConfig} configProxy configuration from Axios options object\n * @param {string} location\n *\n * @returns {http.ClientRequestArgs}\n */\nfunction setProxy(options, configProxy, location) {\n let proxy = configProxy;\n if (!proxy && proxy !== false) {\n const proxyUrl = getProxyForUrl(location);\n if (proxyUrl) {\n proxy = new URL(proxyUrl);\n }\n }\n if (proxy) {\n // Basic proxy authorization\n if (proxy.username) {\n proxy.auth = (proxy.username || '') + ':' + (proxy.password || '');\n }\n\n if (proxy.auth) {\n // Support proxy auth object form\n if (proxy.auth.username || proxy.auth.password) {\n proxy.auth = (proxy.auth.username || '') + ':' + (proxy.auth.password || '');\n }\n const base64 = Buffer\n .from(proxy.auth, 'utf8')\n .toString('base64');\n options.headers['Proxy-Authorization'] = 'Basic ' + base64;\n }\n\n options.headers.host = options.hostname + (options.port ? ':' + options.port : '');\n const proxyHost = proxy.hostname || proxy.host;\n options.hostname = proxyHost;\n // Replace 'host' since options is not a URL object\n options.host = proxyHost;\n options.port = proxy.port;\n options.path = location;\n if (proxy.protocol) {\n options.protocol = proxy.protocol.includes(':') ? proxy.protocol : `${proxy.protocol}:`;\n }\n }\n\n options.beforeRedirects.proxy = function beforeRedirect(redirectOptions) {\n // Configure proxy for redirected request, passing the original config proxy to apply\n // the exact same logic as if the redirected request was performed by axios directly.\n setProxy(redirectOptions, configProxy, redirectOptions.href);\n };\n}\n\nconst isHttpAdapterSupported = typeof process !== 'undefined' && utils.kindOf(process) === 'process';\n\n// temporary hotfix\n\nconst wrapAsync = (asyncExecutor) => {\n return new Promise((resolve, reject) => {\n let onDone;\n let isDone;\n\n const done = (value, isRejected) => {\n if (isDone) return;\n isDone = true;\n onDone && onDone(value, isRejected);\n }\n\n const _resolve = (value) => {\n done(value);\n resolve(value);\n };\n\n const _reject = (reason) => {\n done(reason, true);\n reject(reason);\n }\n\n asyncExecutor(_resolve, _reject, (onDoneHandler) => (onDone = onDoneHandler)).catch(_reject);\n })\n};\n\nconst resolveFamily = ({address, family}) => {\n if (!utils.isString(address)) {\n throw TypeError('address must be a string');\n }\n return ({\n address,\n family: family || (address.indexOf('.') < 0 ? 6 : 4)\n });\n}\n\nconst buildAddressEntry = (address, family) => resolveFamily(utils.isObject(address) ? address : {address, family});\n\n/*eslint consistent-return:0*/\nexport default isHttpAdapterSupported && function httpAdapter(config) {\n return wrapAsync(async function dispatchHttpRequest(resolve, reject, onDone) {\n let {data, lookup, family} = config;\n const {responseType, responseEncoding} = config;\n const method = config.method.toUpperCase();\n let isDone;\n let rejected = false;\n let req;\n\n if (lookup) {\n const _lookup = callbackify(lookup, (value) => utils.isArray(value) ? value : [value]);\n // hotfix to support opt.all option which is required for node 20.x\n lookup = (hostname, opt, cb) => {\n _lookup(hostname, opt, (err, arg0, arg1) => {\n if (err) {\n return cb(err);\n }\n\n const addresses = utils.isArray(arg0) ? arg0.map(addr => buildAddressEntry(addr)) : [buildAddressEntry(arg0, arg1)];\n\n opt.all ? cb(err, addresses) : cb(err, addresses[0].address, addresses[0].family);\n });\n }\n }\n\n // temporary internal emitter until the AxiosRequest class will be implemented\n const emitter = new EventEmitter();\n\n const onFinished = () => {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(abort);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', abort);\n }\n\n emitter.removeAllListeners();\n }\n\n onDone((value, isRejected) => {\n isDone = true;\n if (isRejected) {\n rejected = true;\n onFinished();\n }\n });\n\n function abort(reason) {\n emitter.emit('abort', !reason || reason.type ? new CanceledError(null, config, req) : reason);\n }\n\n emitter.once('abort', reject);\n\n if (config.cancelToken || config.signal) {\n config.cancelToken && config.cancelToken.subscribe(abort);\n if (config.signal) {\n config.signal.aborted ? abort() : config.signal.addEventListener('abort', abort);\n }\n }\n\n // Parse url\n const fullPath = buildFullPath(config.baseURL, config.url);\n const parsed = new URL(fullPath, 'http://localhost');\n const protocol = parsed.protocol || supportedProtocols[0];\n\n if (protocol === 'data:') {\n let convertedData;\n\n if (method !== 'GET') {\n return settle(resolve, reject, {\n status: 405,\n statusText: 'method not allowed',\n headers: {},\n config\n });\n }\n\n try {\n convertedData = fromDataURI(config.url, responseType === 'blob', {\n Blob: config.env && config.env.Blob\n });\n } catch (err) {\n throw AxiosError.from(err, AxiosError.ERR_BAD_REQUEST, config);\n }\n\n if (responseType === 'text') {\n convertedData = convertedData.toString(responseEncoding);\n\n if (!responseEncoding || responseEncoding === 'utf8') {\n convertedData = utils.stripBOM(convertedData);\n }\n } else if (responseType === 'stream') {\n convertedData = stream.Readable.from(convertedData);\n }\n\n return settle(resolve, reject, {\n data: convertedData,\n status: 200,\n statusText: 'OK',\n headers: new AxiosHeaders(),\n config\n });\n }\n\n if (supportedProtocols.indexOf(protocol) === -1) {\n return reject(new AxiosError(\n 'Unsupported protocol ' + protocol,\n AxiosError.ERR_BAD_REQUEST,\n config\n ));\n }\n\n const headers = AxiosHeaders.from(config.headers).normalize();\n\n // Set User-Agent (required by some servers)\n // See https://github.com/axios/axios/issues/69\n // User-Agent is specified; handle case where no UA header is desired\n // Only set header if it hasn't been set in config\n headers.set('User-Agent', 'axios/' + VERSION, false);\n\n const onDownloadProgress = config.onDownloadProgress;\n const onUploadProgress = config.onUploadProgress;\n const maxRate = config.maxRate;\n let maxUploadRate = undefined;\n let maxDownloadRate = undefined;\n\n // support for spec compliant FormData objects\n if (utils.isSpecCompliantForm(data)) {\n const userBoundary = headers.getContentType(/boundary=([-_\\w\\d]{10,70})/i);\n\n data = formDataToStream(data, (formHeaders) => {\n headers.set(formHeaders);\n }, {\n tag: `axios-${VERSION}-boundary`,\n boundary: userBoundary && userBoundary[1] || undefined\n });\n // support for https://www.npmjs.com/package/form-data api\n } else if (utils.isFormData(data) && utils.isFunction(data.getHeaders)) {\n headers.set(data.getHeaders());\n\n if (!headers.hasContentLength()) {\n try {\n const knownLength = await util.promisify(data.getLength).call(data);\n Number.isFinite(knownLength) && knownLength >= 0 && headers.setContentLength(knownLength);\n /*eslint no-empty:0*/\n } catch (e) {\n }\n }\n } else if (utils.isBlob(data)) {\n data.size && headers.setContentType(data.type || 'application/octet-stream');\n headers.setContentLength(data.size || 0);\n data = stream.Readable.from(readBlob(data));\n } else if (data && !utils.isStream(data)) {\n if (Buffer.isBuffer(data)) {\n // Nothing to do...\n } else if (utils.isArrayBuffer(data)) {\n data = Buffer.from(new Uint8Array(data));\n } else if (utils.isString(data)) {\n data = Buffer.from(data, 'utf-8');\n } else {\n return reject(new AxiosError(\n 'Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream',\n AxiosError.ERR_BAD_REQUEST,\n config\n ));\n }\n\n // Add Content-Length header if data exists\n headers.setContentLength(data.length, false);\n\n if (config.maxBodyLength > -1 && data.length > config.maxBodyLength) {\n return reject(new AxiosError(\n 'Request body larger than maxBodyLength limit',\n AxiosError.ERR_BAD_REQUEST,\n config\n ));\n }\n }\n\n const contentLength = utils.toFiniteNumber(headers.getContentLength());\n\n if (utils.isArray(maxRate)) {\n maxUploadRate = maxRate[0];\n maxDownloadRate = maxRate[1];\n } else {\n maxUploadRate = maxDownloadRate = maxRate;\n }\n\n if (data && (onUploadProgress || maxUploadRate)) {\n if (!utils.isStream(data)) {\n data = stream.Readable.from(data, {objectMode: false});\n }\n\n data = stream.pipeline([data, new AxiosTransformStream({\n length: contentLength,\n maxRate: utils.toFiniteNumber(maxUploadRate)\n })], utils.noop);\n\n onUploadProgress && data.on('progress', progress => {\n onUploadProgress(Object.assign(progress, {\n upload: true\n }));\n });\n }\n\n // HTTP basic authentication\n let auth = undefined;\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password || '';\n auth = username + ':' + password;\n }\n\n if (!auth && parsed.username) {\n const urlUsername = parsed.username;\n const urlPassword = parsed.password;\n auth = urlUsername + ':' + urlPassword;\n }\n\n auth && headers.delete('authorization');\n\n let path;\n\n try {\n path = buildURL(\n parsed.pathname + parsed.search,\n config.params,\n config.paramsSerializer\n ).replace(/^\\?/, '');\n } catch (err) {\n const customErr = new Error(err.message);\n customErr.config = config;\n customErr.url = config.url;\n customErr.exists = true;\n return reject(customErr);\n }\n\n headers.set(\n 'Accept-Encoding',\n 'gzip, compress, deflate' + (isBrotliSupported ? ', br' : ''), false\n );\n\n const options = {\n path,\n method: method,\n headers: headers.toJSON(),\n agents: { http: config.httpAgent, https: config.httpsAgent },\n auth,\n protocol,\n family,\n beforeRedirect: dispatchBeforeRedirect,\n beforeRedirects: {}\n };\n\n // cacheable-lookup integration hotfix\n !utils.isUndefined(lookup) && (options.lookup = lookup);\n\n if (config.socketPath) {\n options.socketPath = config.socketPath;\n } else {\n options.hostname = parsed.hostname;\n options.port = parsed.port;\n setProxy(options, config.proxy, protocol + '//' + parsed.hostname + (parsed.port ? ':' + parsed.port : '') + options.path);\n }\n\n let transport;\n const isHttpsRequest = isHttps.test(options.protocol);\n options.agent = isHttpsRequest ? config.httpsAgent : config.httpAgent;\n if (config.transport) {\n transport = config.transport;\n } else if (config.maxRedirects === 0) {\n transport = isHttpsRequest ? https : http;\n } else {\n if (config.maxRedirects) {\n options.maxRedirects = config.maxRedirects;\n }\n if (config.beforeRedirect) {\n options.beforeRedirects.config = config.beforeRedirect;\n }\n transport = isHttpsRequest ? httpsFollow : httpFollow;\n }\n\n if (config.maxBodyLength > -1) {\n options.maxBodyLength = config.maxBodyLength;\n } else {\n // follow-redirects does not skip comparison, so it should always succeed for axios -1 unlimited\n options.maxBodyLength = Infinity;\n }\n\n if (config.insecureHTTPParser) {\n options.insecureHTTPParser = config.insecureHTTPParser;\n }\n\n // Create the request\n req = transport.request(options, function handleResponse(res) {\n if (req.destroyed) return;\n\n const streams = [res];\n\n const responseLength = +res.headers['content-length'];\n\n if (onDownloadProgress) {\n const transformStream = new AxiosTransformStream({\n length: utils.toFiniteNumber(responseLength),\n maxRate: utils.toFiniteNumber(maxDownloadRate)\n });\n\n onDownloadProgress && transformStream.on('progress', progress => {\n onDownloadProgress(Object.assign(progress, {\n download: true\n }));\n });\n\n streams.push(transformStream);\n }\n\n // decompress the response body transparently if required\n let responseStream = res;\n\n // return the last request in case of redirects\n const lastRequest = res.req || req;\n\n // if decompress disabled we should not decompress\n if (config.decompress !== false && res.headers['content-encoding']) {\n // if no content, but headers still say that it is encoded,\n // remove the header not confuse downstream operations\n if (method === 'HEAD' || res.statusCode === 204) {\n delete res.headers['content-encoding'];\n }\n\n switch ((res.headers['content-encoding'] || '').toLowerCase()) {\n /*eslint default-case:0*/\n case 'gzip':\n case 'x-gzip':\n case 'compress':\n case 'x-compress':\n // add the unzipper to the body stream processing pipeline\n streams.push(zlib.createUnzip(zlibOptions));\n\n // remove the content-encoding in order to not confuse downstream operations\n delete res.headers['content-encoding'];\n break;\n case 'deflate':\n streams.push(new ZlibHeaderTransformStream());\n\n // add the unzipper to the body stream processing pipeline\n streams.push(zlib.createUnzip(zlibOptions));\n\n // remove the content-encoding in order to not confuse downstream operations\n delete res.headers['content-encoding'];\n break;\n case 'br':\n if (isBrotliSupported) {\n streams.push(zlib.createBrotliDecompress(brotliOptions));\n delete res.headers['content-encoding'];\n }\n }\n }\n\n responseStream = streams.length > 1 ? stream.pipeline(streams, utils.noop) : streams[0];\n\n const offListeners = stream.finished(responseStream, () => {\n offListeners();\n onFinished();\n });\n\n const response = {\n status: res.statusCode,\n statusText: res.statusMessage,\n headers: new AxiosHeaders(res.headers),\n config,\n request: lastRequest\n };\n\n if (responseType === 'stream') {\n response.data = responseStream;\n settle(resolve, reject, response);\n } else {\n const responseBuffer = [];\n let totalResponseBytes = 0;\n\n responseStream.on('data', function handleStreamData(chunk) {\n responseBuffer.push(chunk);\n totalResponseBytes += chunk.length;\n\n // make sure the content length is not over the maxContentLength if specified\n if (config.maxContentLength > -1 && totalResponseBytes > config.maxContentLength) {\n // stream.destroy() emit aborted event before calling reject() on Node.js v16\n rejected = true;\n responseStream.destroy();\n reject(new AxiosError('maxContentLength size of ' + config.maxContentLength + ' exceeded',\n AxiosError.ERR_BAD_RESPONSE, config, lastRequest));\n }\n });\n\n responseStream.on('aborted', function handlerStreamAborted() {\n if (rejected) {\n return;\n }\n\n const err = new AxiosError(\n 'maxContentLength size of ' + config.maxContentLength + ' exceeded',\n AxiosError.ERR_BAD_RESPONSE,\n config,\n lastRequest\n );\n responseStream.destroy(err);\n reject(err);\n });\n\n responseStream.on('error', function handleStreamError(err) {\n if (req.destroyed) return;\n reject(AxiosError.from(err, null, config, lastRequest));\n });\n\n responseStream.on('end', function handleStreamEnd() {\n try {\n let responseData = responseBuffer.length === 1 ? responseBuffer[0] : Buffer.concat(responseBuffer);\n if (responseType !== 'arraybuffer') {\n responseData = responseData.toString(responseEncoding);\n if (!responseEncoding || responseEncoding === 'utf8') {\n responseData = utils.stripBOM(responseData);\n }\n }\n response.data = responseData;\n } catch (err) {\n return reject(AxiosError.from(err, null, config, response.request, response));\n }\n settle(resolve, reject, response);\n });\n }\n\n emitter.once('abort', err => {\n if (!responseStream.destroyed) {\n responseStream.emit('error', err);\n responseStream.destroy();\n }\n });\n });\n\n emitter.once('abort', err => {\n reject(err);\n req.destroy(err);\n });\n\n // Handle errors\n req.on('error', function handleRequestError(err) {\n // @todo remove\n // if (req.aborted && err.code !== AxiosError.ERR_FR_TOO_MANY_REDIRECTS) return;\n reject(AxiosError.from(err, null, config, req));\n });\n\n // set tcp keep alive to prevent drop connection by peer\n req.on('socket', function handleRequestSocket(socket) {\n // default interval of sending ack packet is 1 minute\n socket.setKeepAlive(true, 1000 * 60);\n });\n\n // Handle request timeout\n if (config.timeout) {\n // This is forcing a int timeout to avoid problems if the `req` interface doesn't handle other types.\n const timeout = parseInt(config.timeout, 10);\n\n if (Number.isNaN(timeout)) {\n reject(new AxiosError(\n 'error trying to parse `config.timeout` to int',\n AxiosError.ERR_BAD_OPTION_VALUE,\n config,\n req\n ));\n\n return;\n }\n\n // Sometime, the response will be very slow, and does not respond, the connect event will be block by event loop system.\n // And timer callback will be fired, and abort() will be invoked before connection, then get \"socket hang up\" and code ECONNRESET.\n // At this time, if we have a large number of request, nodejs will hang up some socket on background. and the number will up and up.\n // And then these socket which be hang up will devouring CPU little by little.\n // ClientRequest.setTimeout will be fired on the specify milliseconds, and can make sure that abort() will be fired after connect.\n req.setTimeout(timeout, function handleRequestTimeout() {\n if (isDone) return;\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n req\n ));\n abort();\n });\n }\n\n\n // Send the request\n if (utils.isStream(data)) {\n let ended = false;\n let errored = false;\n\n data.on('end', () => {\n ended = true;\n });\n\n data.once('error', err => {\n errored = true;\n req.destroy(err);\n });\n\n data.on('close', () => {\n if (!ended && !errored) {\n abort(new CanceledError('Request stream has been aborted', config, req));\n }\n });\n\n data.pipe(req);\n } else {\n req.end(data);\n }\n });\n}\n\nexport const __setProxy = setProxy;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\n\nexport default (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n }, freq);\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n let contentType;\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // Let the browser set it\n } else if ((contentType = headers.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport progressEventReducer from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType} = _config;\n let onCanceled;\n function done() {\n if (_config.cancelToken) {\n _config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (_config.signal) {\n _config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, _config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, _config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n _config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (typeof _config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(_config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof _config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(_config.onUploadProgress));\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst composeSignals = (signals, timeout) => {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (cancel) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = cancel instanceof Error ? cancel : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal &&\n (signal.removeEventListener ? signal.removeEventListener('abort', onabort) : signal.unsubscribe(onabort));\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal && signal.addEventListener && signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = unsubscribe;\n\n return [signal, () => {\n timer && clearTimeout(timer);\n timer = null;\n }];\n}\n\nexport default composeSignals;\n","\n\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize, encode) {\n for await (const chunk of iterable) {\n yield* streamChunk(ArrayBuffer.isView(chunk) ? chunk : (await encode(String(chunk))), chunkSize);\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish, encode) => {\n const iterator = readBytes(stream, chunkSize, encode);\n\n let bytes = 0;\n\n return new ReadableStream({\n type: 'bytes',\n\n async pull(controller) {\n const {done, value} = await iterator.next();\n\n if (done) {\n controller.close();\n onFinish();\n return;\n }\n\n let len = value.byteLength;\n onProgress && onProgress(bytes += len);\n controller.enqueue(new Uint8Array(value));\n },\n cancel(reason) {\n onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport progressEventReducer from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst fetchProgressDecorator = (total, fn) => {\n const lengthComputable = total != null;\n return (loaded) => setTimeout(() => fn({\n lengthComputable,\n total,\n loaded\n }));\n}\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst supportsRequestStream = isReadableStreamSupported && (() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n})();\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported && !!(()=> {\n try {\n return utils.isReadableStream(new Response('').body);\n } catch(err) {\n // return undefined\n }\n})();\n\nconst resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\n (_, config) => {\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if(utils.isBlob(body)) {\n return body.size;\n }\n\n if(utils.isSpecCompliantForm(body)) {\n return (await new Request(body).arrayBuffer()).byteLength;\n }\n\n if(utils.isArrayBufferView(body)) {\n return body.byteLength;\n }\n\n if(utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if(utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n}\n\nconst resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n}\n\nexport default isFetchSupported && (async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let [composedSignal, stopTimeout] = (signal || cancelToken || timeout) ?\n composeSignals([signal, cancelToken], timeout) : [];\n\n let finished, request;\n\n const onFinish = () => {\n !finished && setTimeout(() => {\n composedSignal && composedSignal.unsubscribe();\n });\n\n finished = true;\n }\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, fetchProgressDecorator(\n requestContentLength,\n progressEventReducer(onUploadProgress)\n ), null, encodeText);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'cors' : 'omit';\n }\n\n request = new Request(url, {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n withCredentials\n });\n\n let response = await fetch(request);\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || isStreamResponse)) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onDownloadProgress && fetchProgressDecorator(\n responseContentLength,\n progressEventReducer(onDownloadProgress, true)\n ), isStreamResponse && onFinish, encodeText),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && onFinish();\n\n stopTimeout && stopTimeout();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n onFinish();\n\n if (err && err.name === 'TypeError' && /fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n});\n\n\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: fetchAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n"],"names":["utils","prototype","PlatformFormData","encode","url","FormData","platform","defaults","AxiosHeaders","stream","TextEncoder","readBlob","Readable","zlib","followRedirects","getProxyForUrl","callbackify","EventEmitter","formDataToStream","util","AxiosTransformStream","https","http","ZlibHeaderTransformStream","composeSignals","validators","InterceptorManager","Axios","CancelToken","HttpStatusCode"],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/axios/index.d.cts b/node_modules/axios/index.d.cts
new file mode 100644
index 00000000..7d12dd32
--- /dev/null
+++ b/node_modules/axios/index.d.cts
@@ -0,0 +1,545 @@
+interface RawAxiosHeaders {
+ [key: string]: axios.AxiosHeaderValue;
+}
+
+type MethodsHeaders = Partial<{
+ [Key in axios.Method as Lowercase]: AxiosHeaders;
+} & {common: AxiosHeaders}>;
+
+type AxiosHeaderMatcher = (this: AxiosHeaders, value: string, name: string, headers: RawAxiosHeaders) => boolean;
+
+type AxiosHeaderParser = (this: AxiosHeaders, value: axios.AxiosHeaderValue, header: string) => any;
+
+type CommonRequestHeadersList = 'Accept' | 'Content-Length' | 'User-Agent'| 'Content-Encoding' | 'Authorization';
+
+type ContentType = axios.AxiosHeaderValue | 'text/html' | 'text/plain' | 'multipart/form-data' | 'application/json' | 'application/x-www-form-urlencoded' | 'application/octet-stream';
+
+type CommonResponseHeadersList = 'Server' | 'Content-Type' | 'Content-Length' | 'Cache-Control'| 'Content-Encoding';
+
+declare class AxiosHeaders {
+ constructor(
+ headers?: RawAxiosHeaders | AxiosHeaders | string
+ );
+
+ [key: string]: any;
+
+ set(headerName?: string, value?: axios.AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders;
+ set(headers?: RawAxiosHeaders | AxiosHeaders | string, rewrite?: boolean): AxiosHeaders;
+
+ get(headerName: string, parser: RegExp): RegExpExecArray | null;
+ get(headerName: string, matcher?: true | AxiosHeaderParser): axios.AxiosHeaderValue;
+
+ has(header: string, matcher?: AxiosHeaderMatcher): boolean;
+
+ delete(header: string | string[], matcher?: AxiosHeaderMatcher): boolean;
+
+ clear(matcher?: AxiosHeaderMatcher): boolean;
+
+ normalize(format: boolean): AxiosHeaders;
+
+ concat(...targets: Array): AxiosHeaders;
+
+ toJSON(asStrings?: boolean): RawAxiosHeaders;
+
+ static from(thing?: AxiosHeaders | RawAxiosHeaders | string): AxiosHeaders;
+
+ static accessor(header: string | string[]): AxiosHeaders;
+
+ static concat(...targets: Array): AxiosHeaders;
+
+ setContentType(value: ContentType, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders;
+ getContentType(parser?: RegExp): RegExpExecArray | null;
+ getContentType(matcher?: AxiosHeaderMatcher): axios.AxiosHeaderValue;
+ hasContentType(matcher?: AxiosHeaderMatcher): boolean;
+
+ setContentLength(value: axios.AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders;
+ getContentLength(parser?: RegExp): RegExpExecArray | null;
+ getContentLength(matcher?: AxiosHeaderMatcher): axios.AxiosHeaderValue;
+ hasContentLength(matcher?: AxiosHeaderMatcher): boolean;
+
+ setAccept(value: axios.AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders;
+ getAccept(parser?: RegExp): RegExpExecArray | null;
+ getAccept(matcher?: AxiosHeaderMatcher): axios.AxiosHeaderValue;
+ hasAccept(matcher?: AxiosHeaderMatcher): boolean;
+
+ setUserAgent(value: axios.AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders;
+ getUserAgent(parser?: RegExp): RegExpExecArray | null;
+ getUserAgent(matcher?: AxiosHeaderMatcher): axios.AxiosHeaderValue;
+ hasUserAgent(matcher?: AxiosHeaderMatcher): boolean;
+
+ setContentEncoding(value: axios.AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders;
+ getContentEncoding(parser?: RegExp): RegExpExecArray | null;
+ getContentEncoding(matcher?: AxiosHeaderMatcher): axios.AxiosHeaderValue;
+ hasContentEncoding(matcher?: AxiosHeaderMatcher): boolean;
+
+ setAuthorization(value: axios.AxiosHeaderValue, rewrite?: boolean | AxiosHeaderMatcher): AxiosHeaders;
+ getAuthorization(parser?: RegExp): RegExpExecArray | null;
+ getAuthorization(matcher?: AxiosHeaderMatcher): axios.AxiosHeaderValue;
+ hasAuthorization(matcher?: AxiosHeaderMatcher): boolean;
+
+ [Symbol.iterator](): IterableIterator<[string, axios.AxiosHeaderValue]>;
+}
+
+declare class AxiosError extends Error {
+ constructor(
+ message?: string,
+ code?: string,
+ config?: axios.InternalAxiosRequestConfig,
+ request?: any,
+ response?: axios.AxiosResponse
+ );
+
+ config?: axios.InternalAxiosRequestConfig;
+ code?: string;
+ request?: any;
+ response?: axios.AxiosResponse;
+ isAxiosError: boolean;
+ status?: number;
+ toJSON: () => object;
+ cause?: Error;
+ static readonly ERR_FR_TOO_MANY_REDIRECTS = "ERR_FR_TOO_MANY_REDIRECTS";
+ static readonly ERR_BAD_OPTION_VALUE = "ERR_BAD_OPTION_VALUE";
+ static readonly ERR_BAD_OPTION = "ERR_BAD_OPTION";
+ static readonly ERR_NETWORK = "ERR_NETWORK";
+ static readonly ERR_DEPRECATED = "ERR_DEPRECATED";
+ static readonly ERR_BAD_RESPONSE = "ERR_BAD_RESPONSE";
+ static readonly ERR_BAD_REQUEST = "ERR_BAD_REQUEST";
+ static readonly ERR_NOT_SUPPORT = "ERR_NOT_SUPPORT";
+ static readonly ERR_INVALID_URL = "ERR_INVALID_URL";
+ static readonly ERR_CANCELED = "ERR_CANCELED";
+ static readonly ECONNABORTED = "ECONNABORTED";
+ static readonly ETIMEDOUT = "ETIMEDOUT";
+}
+
+declare class CanceledError extends AxiosError {
+}
+
+declare class Axios {
+ constructor(config?: axios.AxiosRequestConfig);
+ defaults: axios.AxiosDefaults;
+ interceptors: {
+ request: axios.AxiosInterceptorManager;
+ response: axios.AxiosInterceptorManager;
+ };
+ getUri(config?: axios.AxiosRequestConfig): string;
+ request, D = any>(config: axios.AxiosRequestConfig): Promise;
+ get, D = any>(url: string, config?: axios.AxiosRequestConfig): Promise;
+ delete, D = any>(url: string, config?: axios.AxiosRequestConfig): Promise;
+ head, D = any>(url: string, config?: axios.AxiosRequestConfig): Promise;
+ options, D = any>(url: string, config?: axios.AxiosRequestConfig): Promise;
+ post, D = any>(url: string, data?: D, config?: axios.AxiosRequestConfig): Promise;
+ put, D = any>(url: string, data?: D, config?: axios.AxiosRequestConfig): Promise;
+ patch, D = any>(url: string, data?: D, config?: axios.AxiosRequestConfig): Promise;
+ postForm, D = any>(url: string, data?: D, config?: axios.AxiosRequestConfig): Promise;
+ putForm, D = any>(url: string, data?: D, config?: axios.AxiosRequestConfig): Promise;
+ patchForm, D = any>(url: string, data?: D, config?: axios.AxiosRequestConfig): Promise;
+}
+
+declare enum HttpStatusCode {
+ Continue = 100,
+ SwitchingProtocols = 101,
+ Processing = 102,
+ EarlyHints = 103,
+ Ok = 200,
+ Created = 201,
+ Accepted = 202,
+ NonAuthoritativeInformation = 203,
+ NoContent = 204,
+ ResetContent = 205,
+ PartialContent = 206,
+ MultiStatus = 207,
+ AlreadyReported = 208,
+ ImUsed = 226,
+ MultipleChoices = 300,
+ MovedPermanently = 301,
+ Found = 302,
+ SeeOther = 303,
+ NotModified = 304,
+ UseProxy = 305,
+ Unused = 306,
+ TemporaryRedirect = 307,
+ PermanentRedirect = 308,
+ BadRequest = 400,
+ Unauthorized = 401,
+ PaymentRequired = 402,
+ Forbidden = 403,
+ NotFound = 404,
+ MethodNotAllowed = 405,
+ NotAcceptable = 406,
+ ProxyAuthenticationRequired = 407,
+ RequestTimeout = 408,
+ Conflict = 409,
+ Gone = 410,
+ LengthRequired = 411,
+ PreconditionFailed = 412,
+ PayloadTooLarge = 413,
+ UriTooLong = 414,
+ UnsupportedMediaType = 415,
+ RangeNotSatisfiable = 416,
+ ExpectationFailed = 417,
+ ImATeapot = 418,
+ MisdirectedRequest = 421,
+ UnprocessableEntity = 422,
+ Locked = 423,
+ FailedDependency = 424,
+ TooEarly = 425,
+ UpgradeRequired = 426,
+ PreconditionRequired = 428,
+ TooManyRequests = 429,
+ RequestHeaderFieldsTooLarge = 431,
+ UnavailableForLegalReasons = 451,
+ InternalServerError = 500,
+ NotImplemented = 501,
+ BadGateway = 502,
+ ServiceUnavailable = 503,
+ GatewayTimeout = 504,
+ HttpVersionNotSupported = 505,
+ VariantAlsoNegotiates = 506,
+ InsufficientStorage = 507,
+ LoopDetected = 508,
+ NotExtended = 510,
+ NetworkAuthenticationRequired = 511,
+}
+
+type InternalAxiosError = AxiosError;
+
+declare namespace axios {
+ type AxiosError = InternalAxiosError;
+
+ type RawAxiosRequestHeaders = Partial;
+
+ type AxiosRequestHeaders = RawAxiosRequestHeaders & AxiosHeaders;
+
+ type AxiosHeaderValue = AxiosHeaders | string | string[] | number | boolean | null;
+
+ type RawCommonResponseHeaders = {
+ [Key in CommonResponseHeadersList]: AxiosHeaderValue;
+ } & {
+ "set-cookie": string[];
+ };
+
+ type RawAxiosResponseHeaders = Partial;
+
+ type AxiosResponseHeaders = RawAxiosResponseHeaders & AxiosHeaders;
+
+ interface AxiosRequestTransformer {
+ (this: InternalAxiosRequestConfig, data: any, headers: AxiosRequestHeaders): any;
+ }
+
+ interface AxiosResponseTransformer {
+ (this: InternalAxiosRequestConfig, data: any, headers: AxiosResponseHeaders, status?: number): any;
+ }
+
+ interface AxiosAdapter {
+ (config: InternalAxiosRequestConfig): AxiosPromise;
+ }
+
+ interface AxiosBasicCredentials {
+ username: string;
+ password: string;
+ }
+
+ interface AxiosProxyConfig {
+ host: string;
+ port: number;
+ auth?: AxiosBasicCredentials;
+ protocol?: string;
+ }
+
+ type Method =
+ | 'get' | 'GET'
+ | 'delete' | 'DELETE'
+ | 'head' | 'HEAD'
+ | 'options' | 'OPTIONS'
+ | 'post' | 'POST'
+ | 'put' | 'PUT'
+ | 'patch' | 'PATCH'
+ | 'purge' | 'PURGE'
+ | 'link' | 'LINK'
+ | 'unlink' | 'UNLINK';
+
+ type ResponseType =
+ | 'arraybuffer'
+ | 'blob'
+ | 'document'
+ | 'json'
+ | 'text'
+ | 'stream'
+ | 'formdata';
+
+ type responseEncoding =
+ | 'ascii' | 'ASCII'
+ | 'ansi' | 'ANSI'
+ | 'binary' | 'BINARY'
+ | 'base64' | 'BASE64'
+ | 'base64url' | 'BASE64URL'
+ | 'hex' | 'HEX'
+ | 'latin1' | 'LATIN1'
+ | 'ucs-2' | 'UCS-2'
+ | 'ucs2' | 'UCS2'
+ | 'utf-8' | 'UTF-8'
+ | 'utf8' | 'UTF8'
+ | 'utf16le' | 'UTF16LE';
+
+ interface TransitionalOptions {
+ silentJSONParsing?: boolean;
+ forcedJSONParsing?: boolean;
+ clarifyTimeoutError?: boolean;
+ }
+
+ interface GenericAbortSignal {
+ readonly aborted: boolean;
+ onabort?: ((...args: any) => any) | null;
+ addEventListener?: (...args: any) => any;
+ removeEventListener?: (...args: any) => any;
+ }
+
+ interface FormDataVisitorHelpers {
+ defaultVisitor: SerializerVisitor;
+ convertValue: (value: any) => any;
+ isVisitable: (value: any) => boolean;
+ }
+
+ interface SerializerVisitor {
+ (
+ this: GenericFormData,
+ value: any,
+ key: string | number,
+ path: null | Array,
+ helpers: FormDataVisitorHelpers
+ ): boolean;
+ }
+
+ interface SerializerOptions {
+ visitor?: SerializerVisitor;
+ dots?: boolean;
+ metaTokens?: boolean;
+ indexes?: boolean | null;
+ }
+
+ // tslint:disable-next-line
+ interface FormSerializerOptions extends SerializerOptions {
+ }
+
+ interface ParamEncoder {
+ (value: any, defaultEncoder: (value: any) => any): any;
+ }
+
+ interface CustomParamsSerializer {
+ (params: Record, options?: ParamsSerializerOptions): string;
+ }
+
+ interface ParamsSerializerOptions extends SerializerOptions {
+ encode?: ParamEncoder;
+ serialize?: CustomParamsSerializer;
+ }
+
+ type MaxUploadRate = number;
+
+ type MaxDownloadRate = number;
+
+ type BrowserProgressEvent = any;
+
+ interface AxiosProgressEvent {
+ loaded: number;
+ total?: number;
+ progress?: number;
+ bytes: number;
+ rate?: number;
+ estimated?: number;
+ upload?: boolean;
+ download?: boolean;
+ event?: BrowserProgressEvent;
+ lengthComputable: boolean;
+ }
+
+ type Milliseconds = number;
+
+ type AxiosAdapterName = 'fetch' | 'xhr' | 'http' | string;
+
+ type AxiosAdapterConfig = AxiosAdapter | AxiosAdapterName;
+
+ type AddressFamily = 4 | 6 | undefined;
+
+ interface LookupAddressEntry {
+ address: string;
+ family?: AddressFamily;
+ }
+
+ type LookupAddress = string | LookupAddressEntry;
+
+ interface AxiosRequestConfig {
+ url?: string;
+ method?: Method | string;
+ baseURL?: string;
+ transformRequest?: AxiosRequestTransformer | AxiosRequestTransformer[];
+ transformResponse?: AxiosResponseTransformer | AxiosResponseTransformer[];
+ headers?: (RawAxiosRequestHeaders & MethodsHeaders) | AxiosHeaders;
+ params?: any;
+ paramsSerializer?: ParamsSerializerOptions | CustomParamsSerializer;
+ data?: D;
+ timeout?: Milliseconds;
+ timeoutErrorMessage?: string;
+ withCredentials?: boolean;
+ adapter?: AxiosAdapterConfig | AxiosAdapterConfig[];
+ auth?: AxiosBasicCredentials;
+ responseType?: ResponseType;
+ responseEncoding?: responseEncoding | string;
+ xsrfCookieName?: string;
+ xsrfHeaderName?: string;
+ onUploadProgress?: (progressEvent: AxiosProgressEvent) => void;
+ onDownloadProgress?: (progressEvent: AxiosProgressEvent) => void;
+ maxContentLength?: number;
+ validateStatus?: ((status: number) => boolean) | null;
+ maxBodyLength?: number;
+ maxRedirects?: number;
+ maxRate?: number | [MaxUploadRate, MaxDownloadRate];
+ beforeRedirect?: (options: Record, responseDetails: {headers: Record, statusCode: HttpStatusCode}) => void;
+ socketPath?: string | null;
+ transport?: any;
+ httpAgent?: any;
+ httpsAgent?: any;
+ proxy?: AxiosProxyConfig | false;
+ cancelToken?: CancelToken;
+ decompress?: boolean;
+ transitional?: TransitionalOptions;
+ signal?: GenericAbortSignal;
+ insecureHTTPParser?: boolean;
+ env?: {
+ FormData?: new (...args: any[]) => object;
+ };
+ formSerializer?: FormSerializerOptions;
+ family?: AddressFamily;
+ lookup?: ((hostname: string, options: object, cb: (err: Error | null, address: LookupAddress | LookupAddress[], family?: AddressFamily) => void) => void) |
+ ((hostname: string, options: object) => Promise<[address: LookupAddressEntry | LookupAddressEntry[], family?: AddressFamily] | LookupAddress>);
+ withXSRFToken?: boolean | ((config: InternalAxiosRequestConfig) => boolean | undefined);
+ fetchOptions?: Record;
+ }
+
+ // Alias
+ type RawAxiosRequestConfig = AxiosRequestConfig;
+
+ interface InternalAxiosRequestConfig extends AxiosRequestConfig {
+ headers: AxiosRequestHeaders;
+ }
+
+ interface HeadersDefaults {
+ common: RawAxiosRequestHeaders;
+ delete: RawAxiosRequestHeaders;
+ get: RawAxiosRequestHeaders;
+ head: RawAxiosRequestHeaders;
+ post: RawAxiosRequestHeaders;
+ put: RawAxiosRequestHeaders;
+ patch: RawAxiosRequestHeaders;
+ options?: RawAxiosRequestHeaders;
+ purge?: RawAxiosRequestHeaders;
+ link?: RawAxiosRequestHeaders;
+ unlink?: RawAxiosRequestHeaders;
+ }
+
+ interface AxiosDefaults extends Omit, 'headers'> {
+ headers: HeadersDefaults;
+ }
+
+ interface CreateAxiosDefaults extends Omit, 'headers'> {
+ headers?: RawAxiosRequestHeaders | AxiosHeaders | Partial;
+ }
+
+ interface AxiosResponse {
+ data: T;
+ status: number;
+ statusText: string;
+ headers: RawAxiosResponseHeaders | AxiosResponseHeaders;
+ config: InternalAxiosRequestConfig;
+ request?: any;
+ }
+
+ type AxiosPromise = Promise>;
+
+ interface CancelStatic {
+ new (message?: string): Cancel;
+ }
+
+ interface Cancel {
+ message: string | undefined;
+ }
+
+ interface Canceler {
+ (message?: string, config?: AxiosRequestConfig, request?: any): void;
+ }
+
+ interface CancelTokenStatic {
+ new (executor: (cancel: Canceler) => void): CancelToken;
+ source(): CancelTokenSource;
+ }
+
+ interface CancelToken {
+ promise: Promise;
+ reason?: Cancel;
+ throwIfRequested(): void;
+ }
+
+ interface CancelTokenSource {
+ token: CancelToken;
+ cancel: Canceler;
+ }
+
+ interface AxiosInterceptorOptions {
+ synchronous?: boolean;
+ runWhen?: (config: InternalAxiosRequestConfig) => boolean;
+ }
+
+ interface AxiosInterceptorManager {
+ use(onFulfilled?: (value: V) => V | Promise