The response has been limited to 50k tokens of the smallest files in the repo. You can remove this limitation by removing the max tokens filter.
├── .github
    └── workflows
    │   └── test.yml
├── LICENSE
├── README.md
├── package-lock.json
├── package.json
├── suncalc.js
└── test.js


/.github/workflows/test.yml:
--------------------------------------------------------------------------------
 1 | name: Test
 2 | 
 3 | on:
 4 |   push:
 5 |     branches: ['*']
 6 |   pull_request:
 7 |     branches: [master]
 8 | 
 9 | jobs:
10 |   test:
11 |     runs-on: ubuntu-latest
12 |     steps:
13 |     - name: Checkout
14 |       uses: actions/checkout@v2
15 | 
16 |     - name: Setup Node
17 |       uses: actions/setup-node@v1
18 |       with:
19 |         node-version: 14.x
20 | 
21 |     - name: Install dependencies
22 |       run: npm ci
23 | 
24 |     - name: Run tests
25 |       run: npm test
26 | 


--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
 1 | Copyright (c) 2014, Vladimir Agafonkin
 2 | All rights reserved.
 3 | 
 4 | Redistribution and use in source and binary forms, with or without modification, are
 5 | permitted provided that the following conditions are met:
 6 | 
 7 |    1. Redistributions of source code must retain the above copyright notice, this list of
 8 |       conditions and the following disclaimer.
 9 | 
10 |    2. Redistributions in binary form must reproduce the above copyright notice, this list
11 |       of conditions and the following disclaimer in the documentation and/or other materials
12 |       provided with the distribution.
13 | 
14 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
15 | EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
16 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
17 | COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20 | HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
21 | TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
22 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23 | 


--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
  1 | 
  2 | SunCalc
  3 | =======
  4 | 
  5 | [![Build Status](https://travis-ci.org/mourner/suncalc.svg?branch=master)](https://travis-ci.org/mourner/suncalc)
  6 | 
  7 | SunCalc is a tiny BSD-licensed JavaScript library for calculating sun position,
  8 | sunlight phases (times for sunrise, sunset, dusk, etc.),
  9 | moon position and lunar phase for the given location and time,
 10 | created by [Vladimir Agafonkin](http://agafonkin.com/en) ([@mourner](https://github.com/mourner))
 11 | as a part of the [SunCalc.net project](http://suncalc.net).
 12 | 
 13 | Most calculations are based on the formulas given in the excellent Astronomy Answers articles
 14 | about [position of the sun](http://aa.quae.nl/en/reken/zonpositie.html)
 15 | and [the planets](http://aa.quae.nl/en/reken/hemelpositie.html).
 16 | You can read about different twilight phases calculated by SunCalc
 17 | in the [Twilight article on Wikipedia](http://en.wikipedia.org/wiki/Twilight).
 18 | 
 19 | 
 20 | ## Usage example
 21 | 
 22 | ```javascript
 23 | // get today's sunlight times for London
 24 | var times = SunCalc.getTimes(new Date(), 51.5, -0.1);
 25 | 
 26 | // format sunrise time from the Date object
 27 | var sunriseStr = times.sunrise.getHours() + ':' + times.sunrise.getMinutes();
 28 | 
 29 | // get position of the sun (azimuth and altitude) at today's sunrise
 30 | var sunrisePos = SunCalc.getPosition(times.sunrise, 51.5, -0.1);
 31 | 
 32 | // get sunrise azimuth in degrees
 33 | var sunriseAzimuth = sunrisePos.azimuth * 180 / Math.PI;
 34 | ```
 35 | 
 36 | SunCalc is also available as an NPM package:
 37 | 
 38 | ```bash
 39 | $ npm install suncalc
 40 | ```
 41 | 
 42 | ```js
 43 | var SunCalc = require('suncalc');
 44 | ```
 45 | 
 46 | 
 47 | ## Reference
 48 | 
 49 | ### Sunlight times
 50 | 
 51 | ```javascript
 52 | SunCalc.getTimes(/*Date*/ date, /*Number*/ latitude, /*Number*/ longitude, /*Number (default=0)*/ height)
 53 | ```
 54 | 
 55 | Returns an object with the following properties (each is a `Date` object):
 56 | 
 57 | | Property        | Description                                                              |
 58 | | --------------- | ------------------------------------------------------------------------ |
 59 | | `sunrise`       | sunrise (top edge of the sun appears on the horizon)                     |
 60 | | `sunriseEnd`    | sunrise ends (bottom edge of the sun touches the horizon)                |
 61 | | `goldenHourEnd` | morning golden hour (soft light, best time for photography) ends         |
 62 | | `solarNoon`     | solar noon (sun is in the highest position)                              |
 63 | | `goldenHour`    | evening golden hour starts                                               |
 64 | | `sunsetStart`   | sunset starts (bottom edge of the sun touches the horizon)               |
 65 | | `sunset`        | sunset (sun disappears below the horizon, evening civil twilight starts) |
 66 | | `dusk`          | dusk (evening nautical twilight starts)                                  |
 67 | | `nauticalDusk`  | nautical dusk (evening astronomical twilight starts)                     |
 68 | | `night`         | night starts (dark enough for astronomical observations)                 |
 69 | | `nadir`         | nadir (darkest moment of the night, sun is in the lowest position)       |
 70 | | `nightEnd`      | night ends (morning astronomical twilight starts)                        |
 71 | | `nauticalDawn`  | nautical dawn (morning nautical twilight starts)                         |
 72 | | `dawn`          | dawn (morning nautical twilight ends, morning civil twilight starts)     |
 73 | 
 74 | ```javascript
 75 | SunCalc.addTime(/*Number*/ angleInDegrees, /*String*/ morningName, /*String*/ eveningName)
 76 | ```
 77 | 
 78 | Adds a custom time when the sun reaches the given angle to results returned by `SunCalc.getTimes`.
 79 | 
 80 | `SunCalc.times` property contains all currently defined times.
 81 | 
 82 | 
 83 | ### Sun position
 84 | 
 85 | ```javascript
 86 | SunCalc.getPosition(/*Date*/ timeAndDate, /*Number*/ latitude, /*Number*/ longitude)
 87 | ```
 88 | 
 89 | Returns an object with the following properties:
 90 | 
 91 |  * `altitude`: sun altitude above the horizon in radians,
 92 |  e.g. `0` at the horizon and `PI/2` at the zenith (straight over your head)
 93 |  * `azimuth`: sun azimuth in radians (direction along the horizon, measured from south to west),
 94 |  e.g. `0` is south and `Math.PI * 3/4` is northwest
 95 | 
 96 | 
 97 | ### Moon position
 98 | 
 99 | ```javascript
100 | SunCalc.getMoonPosition(/*Date*/ timeAndDate, /*Number*/ latitude, /*Number*/ longitude)
101 | ```
102 | 
103 | Returns an object with the following properties:
104 | 
105 |  * `altitude`: moon altitude above the horizon in radians
106 |  * `azimuth`: moon azimuth in radians
107 |  * `distance`: distance to moon in kilometers
108 |  * `parallacticAngle`: parallactic angle of the moon in radians
109 | 
110 | 
111 | ### Moon illumination
112 | 
113 | ```javascript
114 | SunCalc.getMoonIllumination(/*Date*/ timeAndDate)
115 | ```
116 | 
117 | Returns an object with the following properties:
118 | 
119 |  * `fraction`: illuminated fraction of the moon; varies from `0.0` (new moon) to `1.0` (full moon)
120 |  * `phase`: moon phase; varies from `0.0` to `1.0`, described below
121 |  * `angle`: midpoint angle in radians of the illuminated limb of the moon reckoned eastward from the north point of the disk;
122 |  the moon is waxing if the angle is negative, and waning if positive
123 | 
124 | Moon phase value should be interpreted like this:
125 | 
126 | | Phase | Name            |
127 | | -----:| --------------- |
128 | | 0     | New Moon        |
129 | |       | Waxing Crescent |
130 | | 0.25  | First Quarter   |
131 | |       | Waxing Gibbous  |
132 | | 0.5   | Full Moon       |
133 | |       | Waning Gibbous  |
134 | | 0.75  | Last Quarter    |
135 | |       | Waning Crescent |
136 | 
137 | By subtracting the `parallacticAngle` from the `angle` one can get the zenith angle of the moons bright limb (anticlockwise).
138 | The zenith angle can be used do draw the moon shape from the observers perspective (e.g. moon lying on its back).
139 | 
140 | ### Moon rise and set times
141 | 
142 | ```js
143 | SunCalc.getMoonTimes(/*Date*/ date, /*Number*/ latitude, /*Number*/ longitude[, inUTC])
144 | ```
145 | 
146 | Returns an object with the following properties:
147 | 
148 |  * `rise`: moonrise time as `Date`
149 |  * `set`: moonset time as `Date`
150 |  * `alwaysUp`: `true` if the moon never rises/sets and is always _above_ the horizon during the day
151 |  * `alwaysDown`: `true` if the moon is always _below_ the horizon
152 | 
153 | By default, it will search for moon rise and set during local user's day (frou 0 to 24 hours).
154 | If `inUTC` is set to true, it will instead search the specified date from 0 to 24 UTC hours.
155 | 
156 | ## Changelog
157 | 
158 | #### 1.8.0 — Dec 22, 2016
159 | 
160 | - Improved precision of moonrise/moonset calculations.
161 | - Added `parallacticAngle` calculation to `getMoonPosition`.
162 | - Default to today's date in `getMoonIllumination`.
163 | - Fixed incompatibility when using Browserify/Webpack together with a global AMD loader.
164 | 
165 | #### 1.7.0 — Nov 11, 2015
166 | 
167 | - Added `inUTC` argument to `getMoonTimes`.
168 | 
169 | #### 1.6.0 — Oct 27, 2014
170 | 
171 | - Added `SunCalc.getMoonTimes` for calculating moon rise and set times.
172 | 
173 | #### 1.5.1 — May 16, 2014
174 | 
175 | - Exposed `SunCalc.times` property with defined daylight times.
176 | - Slightly improved `SunCalc.getTimes` performance.
177 | 
178 | #### 1.4.0 — Apr 10, 2014
179 | 
180 | - Added `phase` to `SunCalc.getMoonIllumination` results (moon phase).
181 | - Switched from mocha to tape for tests.
182 | 
183 | #### 1.3.0 — Feb 21, 2014
184 | 
185 | - Added `SunCalc.getMoonIllumination` (in place of `getMoonFraction`) that returns an object with `fraction` and `angle`
186 | (angle of illuminated limb of the moon).
187 | 
188 | #### 1.2.0 — Mar 07, 2013
189 | 
190 | - Added `SunCalc.getMoonFraction` function that returns illuminated fraction of the moon.
191 | 
192 | #### 1.1.0 — Mar 06, 2013
193 | 
194 | - Added `SunCalc.getMoonPosition` function.
195 | - Added nadir (darkest time of the day, middle of the night).
196 | - Added tests.
197 | 
198 | #### 1.0.0 — Dec 07, 2011
199 | 
200 | - Published to NPM.
201 | - Added `SunCalc.addTime` function.
202 | 
203 | #### 0.0.0 — Aug 25, 2011
204 | 
205 | - First commit.
206 | 


--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
   1 | {
   2 |   "name": "suncalc",
   3 |   "version": "1.9.0",
   4 |   "lockfileVersion": 2,
   5 |   "requires": true,
   6 |   "packages": {
   7 |     "": {
   8 |       "name": "suncalc",
   9 |       "version": "1.9.0",
  10 |       "devDependencies": {
  11 |         "eslint": "^8.8.0",
  12 |         "eslint-config-mourner": "^2.0.1",
  13 |         "tape": "^5.5.0"
  14 |       }
  15 |     },
  16 |     "node_modules/@eslint/eslintrc": {
  17 |       "version": "1.0.5",
  18 |       "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz",
  19 |       "integrity": "sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==",
  20 |       "dev": true,
  21 |       "dependencies": {
  22 |         "ajv": "^6.12.4",
  23 |         "debug": "^4.3.2",
  24 |         "espree": "^9.2.0",
  25 |         "globals": "^13.9.0",
  26 |         "ignore": "^4.0.6",
  27 |         "import-fresh": "^3.2.1",
  28 |         "js-yaml": "^4.1.0",
  29 |         "minimatch": "^3.0.4",
  30 |         "strip-json-comments": "^3.1.1"
  31 |       },
  32 |       "engines": {
  33 |         "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
  34 |       }
  35 |     },
  36 |     "node_modules/@eslint/eslintrc/node_modules/ignore": {
  37 |       "version": "4.0.6",
  38 |       "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
  39 |       "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
  40 |       "dev": true,
  41 |       "engines": {
  42 |         "node": ">= 4"
  43 |       }
  44 |     },
  45 |     "node_modules/@humanwhocodes/config-array": {
  46 |       "version": "0.9.3",
  47 |       "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.3.tgz",
  48 |       "integrity": "sha512-3xSMlXHh03hCcCmFc0rbKp3Ivt2PFEJnQUJDDMTJQ2wkECZWdq4GePs2ctc5H8zV+cHPaq8k2vU8mrQjA6iHdQ==",
  49 |       "dev": true,
  50 |       "dependencies": {
  51 |         "@humanwhocodes/object-schema": "^1.2.1",
  52 |         "debug": "^4.1.1",
  53 |         "minimatch": "^3.0.4"
  54 |       },
  55 |       "engines": {
  56 |         "node": ">=10.10.0"
  57 |       }
  58 |     },
  59 |     "node_modules/@humanwhocodes/object-schema": {
  60 |       "version": "1.2.1",
  61 |       "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
  62 |       "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
  63 |       "dev": true
  64 |     },
  65 |     "node_modules/acorn": {
  66 |       "version": "8.7.0",
  67 |       "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz",
  68 |       "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==",
  69 |       "dev": true,
  70 |       "bin": {
  71 |         "acorn": "bin/acorn"
  72 |       },
  73 |       "engines": {
  74 |         "node": ">=0.4.0"
  75 |       }
  76 |     },
  77 |     "node_modules/acorn-jsx": {
  78 |       "version": "5.3.2",
  79 |       "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
  80 |       "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
  81 |       "dev": true,
  82 |       "peerDependencies": {
  83 |         "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
  84 |       }
  85 |     },
  86 |     "node_modules/ajv": {
  87 |       "version": "6.12.6",
  88 |       "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
  89 |       "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
  90 |       "dev": true,
  91 |       "dependencies": {
  92 |         "fast-deep-equal": "^3.1.1",
  93 |         "fast-json-stable-stringify": "^2.0.0",
  94 |         "json-schema-traverse": "^0.4.1",
  95 |         "uri-js": "^4.2.2"
  96 |       },
  97 |       "funding": {
  98 |         "type": "github",
  99 |         "url": "https://github.com/sponsors/epoberezkin"
 100 |       }
 101 |     },
 102 |     "node_modules/ansi-regex": {
 103 |       "version": "5.0.1",
 104 |       "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
 105 |       "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
 106 |       "dev": true,
 107 |       "engines": {
 108 |         "node": ">=8"
 109 |       }
 110 |     },
 111 |     "node_modules/ansi-styles": {
 112 |       "version": "4.3.0",
 113 |       "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
 114 |       "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
 115 |       "dev": true,
 116 |       "dependencies": {
 117 |         "color-convert": "^2.0.1"
 118 |       },
 119 |       "engines": {
 120 |         "node": ">=8"
 121 |       },
 122 |       "funding": {
 123 |         "url": "https://github.com/chalk/ansi-styles?sponsor=1"
 124 |       }
 125 |     },
 126 |     "node_modules/argparse": {
 127 |       "version": "2.0.1",
 128 |       "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
 129 |       "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
 130 |       "dev": true
 131 |     },
 132 |     "node_modules/array.prototype.every": {
 133 |       "version": "1.1.3",
 134 |       "resolved": "https://registry.npmjs.org/array.prototype.every/-/array.prototype.every-1.1.3.tgz",
 135 |       "integrity": "sha512-vWnriJI//SOMOWtXbU/VXhJ/InfnNHPF6BLKn5WfY8xXy+NWql0fUy20GO3sdqBhCAO+qw8S/E5nJiZX+QFdCA==",
 136 |       "dev": true,
 137 |       "dependencies": {
 138 |         "call-bind": "^1.0.2",
 139 |         "define-properties": "^1.1.3",
 140 |         "es-abstract": "^1.19.0",
 141 |         "is-string": "^1.0.7"
 142 |       },
 143 |       "engines": {
 144 |         "node": ">= 0.4"
 145 |       },
 146 |       "funding": {
 147 |         "url": "https://github.com/sponsors/ljharb"
 148 |       }
 149 |     },
 150 |     "node_modules/available-typed-arrays": {
 151 |       "version": "1.0.5",
 152 |       "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
 153 |       "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
 154 |       "dev": true,
 155 |       "engines": {
 156 |         "node": ">= 0.4"
 157 |       },
 158 |       "funding": {
 159 |         "url": "https://github.com/sponsors/ljharb"
 160 |       }
 161 |     },
 162 |     "node_modules/balanced-match": {
 163 |       "version": "1.0.2",
 164 |       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
 165 |       "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
 166 |       "dev": true
 167 |     },
 168 |     "node_modules/brace-expansion": {
 169 |       "version": "1.1.11",
 170 |       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
 171 |       "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
 172 |       "dev": true,
 173 |       "dependencies": {
 174 |         "balanced-match": "^1.0.0",
 175 |         "concat-map": "0.0.1"
 176 |       }
 177 |     },
 178 |     "node_modules/call-bind": {
 179 |       "version": "1.0.2",
 180 |       "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
 181 |       "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
 182 |       "dev": true,
 183 |       "dependencies": {
 184 |         "function-bind": "^1.1.1",
 185 |         "get-intrinsic": "^1.0.2"
 186 |       },
 187 |       "funding": {
 188 |         "url": "https://github.com/sponsors/ljharb"
 189 |       }
 190 |     },
 191 |     "node_modules/callsites": {
 192 |       "version": "3.1.0",
 193 |       "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
 194 |       "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
 195 |       "dev": true,
 196 |       "engines": {
 197 |         "node": ">=6"
 198 |       }
 199 |     },
 200 |     "node_modules/chalk": {
 201 |       "version": "4.1.2",
 202 |       "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
 203 |       "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
 204 |       "dev": true,
 205 |       "dependencies": {
 206 |         "ansi-styles": "^4.1.0",
 207 |         "supports-color": "^7.1.0"
 208 |       },
 209 |       "engines": {
 210 |         "node": ">=10"
 211 |       },
 212 |       "funding": {
 213 |         "url": "https://github.com/chalk/chalk?sponsor=1"
 214 |       }
 215 |     },
 216 |     "node_modules/color-convert": {
 217 |       "version": "2.0.1",
 218 |       "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
 219 |       "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
 220 |       "dev": true,
 221 |       "dependencies": {
 222 |         "color-name": "~1.1.4"
 223 |       },
 224 |       "engines": {
 225 |         "node": ">=7.0.0"
 226 |       }
 227 |     },
 228 |     "node_modules/color-name": {
 229 |       "version": "1.1.4",
 230 |       "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
 231 |       "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
 232 |       "dev": true
 233 |     },
 234 |     "node_modules/concat-map": {
 235 |       "version": "0.0.1",
 236 |       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
 237 |       "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
 238 |       "dev": true
 239 |     },
 240 |     "node_modules/cross-spawn": {
 241 |       "version": "7.0.3",
 242 |       "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
 243 |       "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
 244 |       "dev": true,
 245 |       "dependencies": {
 246 |         "path-key": "^3.1.0",
 247 |         "shebang-command": "^2.0.0",
 248 |         "which": "^2.0.1"
 249 |       },
 250 |       "engines": {
 251 |         "node": ">= 8"
 252 |       }
 253 |     },
 254 |     "node_modules/debug": {
 255 |       "version": "4.3.3",
 256 |       "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
 257 |       "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
 258 |       "dev": true,
 259 |       "dependencies": {
 260 |         "ms": "2.1.2"
 261 |       },
 262 |       "engines": {
 263 |         "node": ">=6.0"
 264 |       },
 265 |       "peerDependenciesMeta": {
 266 |         "supports-color": {
 267 |           "optional": true
 268 |         }
 269 |       }
 270 |     },
 271 |     "node_modules/deep-equal": {
 272 |       "version": "2.0.5",
 273 |       "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz",
 274 |       "integrity": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==",
 275 |       "dev": true,
 276 |       "dependencies": {
 277 |         "call-bind": "^1.0.0",
 278 |         "es-get-iterator": "^1.1.1",
 279 |         "get-intrinsic": "^1.0.1",
 280 |         "is-arguments": "^1.0.4",
 281 |         "is-date-object": "^1.0.2",
 282 |         "is-regex": "^1.1.1",
 283 |         "isarray": "^2.0.5",
 284 |         "object-is": "^1.1.4",
 285 |         "object-keys": "^1.1.1",
 286 |         "object.assign": "^4.1.2",
 287 |         "regexp.prototype.flags": "^1.3.0",
 288 |         "side-channel": "^1.0.3",
 289 |         "which-boxed-primitive": "^1.0.1",
 290 |         "which-collection": "^1.0.1",
 291 |         "which-typed-array": "^1.1.2"
 292 |       },
 293 |       "funding": {
 294 |         "url": "https://github.com/sponsors/ljharb"
 295 |       }
 296 |     },
 297 |     "node_modules/deep-is": {
 298 |       "version": "0.1.4",
 299 |       "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
 300 |       "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
 301 |       "dev": true
 302 |     },
 303 |     "node_modules/define-properties": {
 304 |       "version": "1.1.3",
 305 |       "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
 306 |       "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
 307 |       "dev": true,
 308 |       "dependencies": {
 309 |         "object-keys": "^1.0.12"
 310 |       },
 311 |       "engines": {
 312 |         "node": ">= 0.4"
 313 |       }
 314 |     },
 315 |     "node_modules/defined": {
 316 |       "version": "1.0.0",
 317 |       "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
 318 |       "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=",
 319 |       "dev": true
 320 |     },
 321 |     "node_modules/doctrine": {
 322 |       "version": "3.0.0",
 323 |       "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
 324 |       "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
 325 |       "dev": true,
 326 |       "dependencies": {
 327 |         "esutils": "^2.0.2"
 328 |       },
 329 |       "engines": {
 330 |         "node": ">=6.0.0"
 331 |       }
 332 |     },
 333 |     "node_modules/dotignore": {
 334 |       "version": "0.1.2",
 335 |       "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz",
 336 |       "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==",
 337 |       "dev": true,
 338 |       "dependencies": {
 339 |         "minimatch": "^3.0.4"
 340 |       },
 341 |       "bin": {
 342 |         "ignored": "bin/ignored"
 343 |       }
 344 |     },
 345 |     "node_modules/es-abstract": {
 346 |       "version": "1.19.1",
 347 |       "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz",
 348 |       "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==",
 349 |       "dev": true,
 350 |       "dependencies": {
 351 |         "call-bind": "^1.0.2",
 352 |         "es-to-primitive": "^1.2.1",
 353 |         "function-bind": "^1.1.1",
 354 |         "get-intrinsic": "^1.1.1",
 355 |         "get-symbol-description": "^1.0.0",
 356 |         "has": "^1.0.3",
 357 |         "has-symbols": "^1.0.2",
 358 |         "internal-slot": "^1.0.3",
 359 |         "is-callable": "^1.2.4",
 360 |         "is-negative-zero": "^2.0.1",
 361 |         "is-regex": "^1.1.4",
 362 |         "is-shared-array-buffer": "^1.0.1",
 363 |         "is-string": "^1.0.7",
 364 |         "is-weakref": "^1.0.1",
 365 |         "object-inspect": "^1.11.0",
 366 |         "object-keys": "^1.1.1",
 367 |         "object.assign": "^4.1.2",
 368 |         "string.prototype.trimend": "^1.0.4",
 369 |         "string.prototype.trimstart": "^1.0.4",
 370 |         "unbox-primitive": "^1.0.1"
 371 |       },
 372 |       "engines": {
 373 |         "node": ">= 0.4"
 374 |       },
 375 |       "funding": {
 376 |         "url": "https://github.com/sponsors/ljharb"
 377 |       }
 378 |     },
 379 |     "node_modules/es-get-iterator": {
 380 |       "version": "1.1.2",
 381 |       "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz",
 382 |       "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==",
 383 |       "dev": true,
 384 |       "dependencies": {
 385 |         "call-bind": "^1.0.2",
 386 |         "get-intrinsic": "^1.1.0",
 387 |         "has-symbols": "^1.0.1",
 388 |         "is-arguments": "^1.1.0",
 389 |         "is-map": "^2.0.2",
 390 |         "is-set": "^2.0.2",
 391 |         "is-string": "^1.0.5",
 392 |         "isarray": "^2.0.5"
 393 |       },
 394 |       "funding": {
 395 |         "url": "https://github.com/sponsors/ljharb"
 396 |       }
 397 |     },
 398 |     "node_modules/es-to-primitive": {
 399 |       "version": "1.2.1",
 400 |       "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
 401 |       "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
 402 |       "dev": true,
 403 |       "dependencies": {
 404 |         "is-callable": "^1.1.4",
 405 |         "is-date-object": "^1.0.1",
 406 |         "is-symbol": "^1.0.2"
 407 |       },
 408 |       "engines": {
 409 |         "node": ">= 0.4"
 410 |       },
 411 |       "funding": {
 412 |         "url": "https://github.com/sponsors/ljharb"
 413 |       }
 414 |     },
 415 |     "node_modules/escape-string-regexp": {
 416 |       "version": "4.0.0",
 417 |       "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
 418 |       "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
 419 |       "dev": true,
 420 |       "engines": {
 421 |         "node": ">=10"
 422 |       },
 423 |       "funding": {
 424 |         "url": "https://github.com/sponsors/sindresorhus"
 425 |       }
 426 |     },
 427 |     "node_modules/eslint": {
 428 |       "version": "8.8.0",
 429 |       "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.8.0.tgz",
 430 |       "integrity": "sha512-H3KXAzQGBH1plhYS3okDix2ZthuYJlQQEGE5k0IKuEqUSiyu4AmxxlJ2MtTYeJ3xB4jDhcYCwGOg2TXYdnDXlQ==",
 431 |       "dev": true,
 432 |       "dependencies": {
 433 |         "@eslint/eslintrc": "^1.0.5",
 434 |         "@humanwhocodes/config-array": "^0.9.2",
 435 |         "ajv": "^6.10.0",
 436 |         "chalk": "^4.0.0",
 437 |         "cross-spawn": "^7.0.2",
 438 |         "debug": "^4.3.2",
 439 |         "doctrine": "^3.0.0",
 440 |         "escape-string-regexp": "^4.0.0",
 441 |         "eslint-scope": "^7.1.0",
 442 |         "eslint-utils": "^3.0.0",
 443 |         "eslint-visitor-keys": "^3.2.0",
 444 |         "espree": "^9.3.0",
 445 |         "esquery": "^1.4.0",
 446 |         "esutils": "^2.0.2",
 447 |         "fast-deep-equal": "^3.1.3",
 448 |         "file-entry-cache": "^6.0.1",
 449 |         "functional-red-black-tree": "^1.0.1",
 450 |         "glob-parent": "^6.0.1",
 451 |         "globals": "^13.6.0",
 452 |         "ignore": "^5.2.0",
 453 |         "import-fresh": "^3.0.0",
 454 |         "imurmurhash": "^0.1.4",
 455 |         "is-glob": "^4.0.0",
 456 |         "js-yaml": "^4.1.0",
 457 |         "json-stable-stringify-without-jsonify": "^1.0.1",
 458 |         "levn": "^0.4.1",
 459 |         "lodash.merge": "^4.6.2",
 460 |         "minimatch": "^3.0.4",
 461 |         "natural-compare": "^1.4.0",
 462 |         "optionator": "^0.9.1",
 463 |         "regexpp": "^3.2.0",
 464 |         "strip-ansi": "^6.0.1",
 465 |         "strip-json-comments": "^3.1.0",
 466 |         "text-table": "^0.2.0",
 467 |         "v8-compile-cache": "^2.0.3"
 468 |       },
 469 |       "bin": {
 470 |         "eslint": "bin/eslint.js"
 471 |       },
 472 |       "engines": {
 473 |         "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
 474 |       },
 475 |       "funding": {
 476 |         "url": "https://opencollective.com/eslint"
 477 |       }
 478 |     },
 479 |     "node_modules/eslint-config-mourner": {
 480 |       "version": "2.0.1",
 481 |       "dev": true,
 482 |       "license": "ISC"
 483 |     },
 484 |     "node_modules/eslint-scope": {
 485 |       "version": "7.1.0",
 486 |       "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz",
 487 |       "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==",
 488 |       "dev": true,
 489 |       "dependencies": {
 490 |         "esrecurse": "^4.3.0",
 491 |         "estraverse": "^5.2.0"
 492 |       },
 493 |       "engines": {
 494 |         "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
 495 |       }
 496 |     },
 497 |     "node_modules/eslint-utils": {
 498 |       "version": "3.0.0",
 499 |       "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
 500 |       "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
 501 |       "dev": true,
 502 |       "dependencies": {
 503 |         "eslint-visitor-keys": "^2.0.0"
 504 |       },
 505 |       "engines": {
 506 |         "node": "^10.0.0 || ^12.0.0 || >= 14.0.0"
 507 |       },
 508 |       "funding": {
 509 |         "url": "https://github.com/sponsors/mysticatea"
 510 |       },
 511 |       "peerDependencies": {
 512 |         "eslint": ">=5"
 513 |       }
 514 |     },
 515 |     "node_modules/eslint-utils/node_modules/eslint-visitor-keys": {
 516 |       "version": "2.1.0",
 517 |       "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
 518 |       "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
 519 |       "dev": true,
 520 |       "engines": {
 521 |         "node": ">=10"
 522 |       }
 523 |     },
 524 |     "node_modules/eslint-visitor-keys": {
 525 |       "version": "3.2.0",
 526 |       "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz",
 527 |       "integrity": "sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ==",
 528 |       "dev": true,
 529 |       "engines": {
 530 |         "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
 531 |       }
 532 |     },
 533 |     "node_modules/espree": {
 534 |       "version": "9.3.0",
 535 |       "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.0.tgz",
 536 |       "integrity": "sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ==",
 537 |       "dev": true,
 538 |       "dependencies": {
 539 |         "acorn": "^8.7.0",
 540 |         "acorn-jsx": "^5.3.1",
 541 |         "eslint-visitor-keys": "^3.1.0"
 542 |       },
 543 |       "engines": {
 544 |         "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
 545 |       }
 546 |     },
 547 |     "node_modules/esquery": {
 548 |       "version": "1.4.0",
 549 |       "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
 550 |       "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
 551 |       "dev": true,
 552 |       "dependencies": {
 553 |         "estraverse": "^5.1.0"
 554 |       },
 555 |       "engines": {
 556 |         "node": ">=0.10"
 557 |       }
 558 |     },
 559 |     "node_modules/esrecurse": {
 560 |       "version": "4.3.0",
 561 |       "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
 562 |       "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
 563 |       "dev": true,
 564 |       "dependencies": {
 565 |         "estraverse": "^5.2.0"
 566 |       },
 567 |       "engines": {
 568 |         "node": ">=4.0"
 569 |       }
 570 |     },
 571 |     "node_modules/estraverse": {
 572 |       "version": "5.3.0",
 573 |       "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
 574 |       "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
 575 |       "dev": true,
 576 |       "engines": {
 577 |         "node": ">=4.0"
 578 |       }
 579 |     },
 580 |     "node_modules/esutils": {
 581 |       "version": "2.0.3",
 582 |       "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
 583 |       "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
 584 |       "dev": true,
 585 |       "engines": {
 586 |         "node": ">=0.10.0"
 587 |       }
 588 |     },
 589 |     "node_modules/fast-deep-equal": {
 590 |       "version": "3.1.3",
 591 |       "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
 592 |       "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
 593 |       "dev": true
 594 |     },
 595 |     "node_modules/fast-json-stable-stringify": {
 596 |       "version": "2.1.0",
 597 |       "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
 598 |       "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
 599 |       "dev": true
 600 |     },
 601 |     "node_modules/fast-levenshtein": {
 602 |       "version": "2.0.6",
 603 |       "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
 604 |       "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
 605 |       "dev": true
 606 |     },
 607 |     "node_modules/file-entry-cache": {
 608 |       "version": "6.0.1",
 609 |       "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
 610 |       "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
 611 |       "dev": true,
 612 |       "dependencies": {
 613 |         "flat-cache": "^3.0.4"
 614 |       },
 615 |       "engines": {
 616 |         "node": "^10.12.0 || >=12.0.0"
 617 |       }
 618 |     },
 619 |     "node_modules/flat-cache": {
 620 |       "version": "3.0.4",
 621 |       "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
 622 |       "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
 623 |       "dev": true,
 624 |       "dependencies": {
 625 |         "flatted": "^3.1.0",
 626 |         "rimraf": "^3.0.2"
 627 |       },
 628 |       "engines": {
 629 |         "node": "^10.12.0 || >=12.0.0"
 630 |       }
 631 |     },
 632 |     "node_modules/flatted": {
 633 |       "version": "3.2.5",
 634 |       "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz",
 635 |       "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==",
 636 |       "dev": true
 637 |     },
 638 |     "node_modules/for-each": {
 639 |       "version": "0.3.3",
 640 |       "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
 641 |       "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
 642 |       "dev": true,
 643 |       "dependencies": {
 644 |         "is-callable": "^1.1.3"
 645 |       }
 646 |     },
 647 |     "node_modules/foreach": {
 648 |       "version": "2.0.5",
 649 |       "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
 650 |       "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=",
 651 |       "dev": true
 652 |     },
 653 |     "node_modules/fs.realpath": {
 654 |       "version": "1.0.0",
 655 |       "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
 656 |       "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
 657 |       "dev": true
 658 |     },
 659 |     "node_modules/function-bind": {
 660 |       "version": "1.1.1",
 661 |       "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
 662 |       "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
 663 |       "dev": true
 664 |     },
 665 |     "node_modules/functional-red-black-tree": {
 666 |       "version": "1.0.1",
 667 |       "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
 668 |       "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
 669 |       "dev": true
 670 |     },
 671 |     "node_modules/get-intrinsic": {
 672 |       "version": "1.1.1",
 673 |       "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
 674 |       "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
 675 |       "dev": true,
 676 |       "dependencies": {
 677 |         "function-bind": "^1.1.1",
 678 |         "has": "^1.0.3",
 679 |         "has-symbols": "^1.0.1"
 680 |       },
 681 |       "funding": {
 682 |         "url": "https://github.com/sponsors/ljharb"
 683 |       }
 684 |     },
 685 |     "node_modules/get-package-type": {
 686 |       "version": "0.1.0",
 687 |       "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
 688 |       "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
 689 |       "dev": true,
 690 |       "engines": {
 691 |         "node": ">=8.0.0"
 692 |       }
 693 |     },
 694 |     "node_modules/get-symbol-description": {
 695 |       "version": "1.0.0",
 696 |       "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
 697 |       "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
 698 |       "dev": true,
 699 |       "dependencies": {
 700 |         "call-bind": "^1.0.2",
 701 |         "get-intrinsic": "^1.1.1"
 702 |       },
 703 |       "engines": {
 704 |         "node": ">= 0.4"
 705 |       },
 706 |       "funding": {
 707 |         "url": "https://github.com/sponsors/ljharb"
 708 |       }
 709 |     },
 710 |     "node_modules/glob": {
 711 |       "version": "7.2.0",
 712 |       "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
 713 |       "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
 714 |       "dev": true,
 715 |       "dependencies": {
 716 |         "fs.realpath": "^1.0.0",
 717 |         "inflight": "^1.0.4",
 718 |         "inherits": "2",
 719 |         "minimatch": "^3.0.4",
 720 |         "once": "^1.3.0",
 721 |         "path-is-absolute": "^1.0.0"
 722 |       },
 723 |       "engines": {
 724 |         "node": "*"
 725 |       },
 726 |       "funding": {
 727 |         "url": "https://github.com/sponsors/isaacs"
 728 |       }
 729 |     },
 730 |     "node_modules/glob-parent": {
 731 |       "version": "6.0.2",
 732 |       "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
 733 |       "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
 734 |       "dev": true,
 735 |       "dependencies": {
 736 |         "is-glob": "^4.0.3"
 737 |       },
 738 |       "engines": {
 739 |         "node": ">=10.13.0"
 740 |       }
 741 |     },
 742 |     "node_modules/globals": {
 743 |       "version": "13.12.1",
 744 |       "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz",
 745 |       "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==",
 746 |       "dev": true,
 747 |       "dependencies": {
 748 |         "type-fest": "^0.20.2"
 749 |       },
 750 |       "engines": {
 751 |         "node": ">=8"
 752 |       },
 753 |       "funding": {
 754 |         "url": "https://github.com/sponsors/sindresorhus"
 755 |       }
 756 |     },
 757 |     "node_modules/has": {
 758 |       "version": "1.0.3",
 759 |       "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
 760 |       "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
 761 |       "dev": true,
 762 |       "dependencies": {
 763 |         "function-bind": "^1.1.1"
 764 |       },
 765 |       "engines": {
 766 |         "node": ">= 0.4.0"
 767 |       }
 768 |     },
 769 |     "node_modules/has-bigints": {
 770 |       "version": "1.0.1",
 771 |       "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz",
 772 |       "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==",
 773 |       "dev": true,
 774 |       "funding": {
 775 |         "url": "https://github.com/sponsors/ljharb"
 776 |       }
 777 |     },
 778 |     "node_modules/has-dynamic-import": {
 779 |       "version": "2.0.1",
 780 |       "resolved": "https://registry.npmjs.org/has-dynamic-import/-/has-dynamic-import-2.0.1.tgz",
 781 |       "integrity": "sha512-X3fbtsZmwb6W7fJGR9o7x65fZoodygCrZ3TVycvghP62yYQfS0t4RS0Qcz+j5tQYUKeSWS09tHkWW6WhFV3XhQ==",
 782 |       "dev": true,
 783 |       "dependencies": {
 784 |         "call-bind": "^1.0.2",
 785 |         "get-intrinsic": "^1.1.1"
 786 |       },
 787 |       "funding": {
 788 |         "url": "https://github.com/sponsors/ljharb"
 789 |       }
 790 |     },
 791 |     "node_modules/has-flag": {
 792 |       "version": "4.0.0",
 793 |       "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
 794 |       "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
 795 |       "dev": true,
 796 |       "engines": {
 797 |         "node": ">=8"
 798 |       }
 799 |     },
 800 |     "node_modules/has-symbols": {
 801 |       "version": "1.0.2",
 802 |       "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
 803 |       "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==",
 804 |       "dev": true,
 805 |       "engines": {
 806 |         "node": ">= 0.4"
 807 |       },
 808 |       "funding": {
 809 |         "url": "https://github.com/sponsors/ljharb"
 810 |       }
 811 |     },
 812 |     "node_modules/has-tostringtag": {
 813 |       "version": "1.0.0",
 814 |       "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
 815 |       "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
 816 |       "dev": true,
 817 |       "dependencies": {
 818 |         "has-symbols": "^1.0.2"
 819 |       },
 820 |       "engines": {
 821 |         "node": ">= 0.4"
 822 |       },
 823 |       "funding": {
 824 |         "url": "https://github.com/sponsors/ljharb"
 825 |       }
 826 |     },
 827 |     "node_modules/ignore": {
 828 |       "version": "5.2.0",
 829 |       "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
 830 |       "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
 831 |       "dev": true,
 832 |       "engines": {
 833 |         "node": ">= 4"
 834 |       }
 835 |     },
 836 |     "node_modules/import-fresh": {
 837 |       "version": "3.3.0",
 838 |       "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
 839 |       "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
 840 |       "dev": true,
 841 |       "dependencies": {
 842 |         "parent-module": "^1.0.0",
 843 |         "resolve-from": "^4.0.0"
 844 |       },
 845 |       "engines": {
 846 |         "node": ">=6"
 847 |       },
 848 |       "funding": {
 849 |         "url": "https://github.com/sponsors/sindresorhus"
 850 |       }
 851 |     },
 852 |     "node_modules/imurmurhash": {
 853 |       "version": "0.1.4",
 854 |       "dev": true,
 855 |       "license": "MIT",
 856 |       "engines": {
 857 |         "node": ">=0.8.19"
 858 |       }
 859 |     },
 860 |     "node_modules/inflight": {
 861 |       "version": "1.0.6",
 862 |       "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
 863 |       "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
 864 |       "dev": true,
 865 |       "dependencies": {
 866 |         "once": "^1.3.0",
 867 |         "wrappy": "1"
 868 |       }
 869 |     },
 870 |     "node_modules/inherits": {
 871 |       "version": "2.0.4",
 872 |       "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
 873 |       "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
 874 |       "dev": true
 875 |     },
 876 |     "node_modules/internal-slot": {
 877 |       "version": "1.0.3",
 878 |       "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz",
 879 |       "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==",
 880 |       "dev": true,
 881 |       "dependencies": {
 882 |         "get-intrinsic": "^1.1.0",
 883 |         "has": "^1.0.3",
 884 |         "side-channel": "^1.0.4"
 885 |       },
 886 |       "engines": {
 887 |         "node": ">= 0.4"
 888 |       }
 889 |     },
 890 |     "node_modules/is-arguments": {
 891 |       "version": "1.1.1",
 892 |       "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
 893 |       "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
 894 |       "dev": true,
 895 |       "dependencies": {
 896 |         "call-bind": "^1.0.2",
 897 |         "has-tostringtag": "^1.0.0"
 898 |       },
 899 |       "engines": {
 900 |         "node": ">= 0.4"
 901 |       },
 902 |       "funding": {
 903 |         "url": "https://github.com/sponsors/ljharb"
 904 |       }
 905 |     },
 906 |     "node_modules/is-bigint": {
 907 |       "version": "1.0.4",
 908 |       "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
 909 |       "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
 910 |       "dev": true,
 911 |       "dependencies": {
 912 |         "has-bigints": "^1.0.1"
 913 |       },
 914 |       "funding": {
 915 |         "url": "https://github.com/sponsors/ljharb"
 916 |       }
 917 |     },
 918 |     "node_modules/is-boolean-object": {
 919 |       "version": "1.1.2",
 920 |       "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
 921 |       "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
 922 |       "dev": true,
 923 |       "dependencies": {
 924 |         "call-bind": "^1.0.2",
 925 |         "has-tostringtag": "^1.0.0"
 926 |       },
 927 |       "engines": {
 928 |         "node": ">= 0.4"
 929 |       },
 930 |       "funding": {
 931 |         "url": "https://github.com/sponsors/ljharb"
 932 |       }
 933 |     },
 934 |     "node_modules/is-callable": {
 935 |       "version": "1.2.4",
 936 |       "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz",
 937 |       "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==",
 938 |       "dev": true,
 939 |       "engines": {
 940 |         "node": ">= 0.4"
 941 |       },
 942 |       "funding": {
 943 |         "url": "https://github.com/sponsors/ljharb"
 944 |       }
 945 |     },
 946 |     "node_modules/is-core-module": {
 947 |       "version": "2.8.1",
 948 |       "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz",
 949 |       "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==",
 950 |       "dev": true,
 951 |       "dependencies": {
 952 |         "has": "^1.0.3"
 953 |       },
 954 |       "funding": {
 955 |         "url": "https://github.com/sponsors/ljharb"
 956 |       }
 957 |     },
 958 |     "node_modules/is-date-object": {
 959 |       "version": "1.0.5",
 960 |       "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
 961 |       "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
 962 |       "dev": true,
 963 |       "dependencies": {
 964 |         "has-tostringtag": "^1.0.0"
 965 |       },
 966 |       "engines": {
 967 |         "node": ">= 0.4"
 968 |       },
 969 |       "funding": {
 970 |         "url": "https://github.com/sponsors/ljharb"
 971 |       }
 972 |     },
 973 |     "node_modules/is-extglob": {
 974 |       "version": "2.1.1",
 975 |       "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
 976 |       "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
 977 |       "dev": true,
 978 |       "engines": {
 979 |         "node": ">=0.10.0"
 980 |       }
 981 |     },
 982 |     "node_modules/is-glob": {
 983 |       "version": "4.0.3",
 984 |       "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
 985 |       "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
 986 |       "dev": true,
 987 |       "dependencies": {
 988 |         "is-extglob": "^2.1.1"
 989 |       },
 990 |       "engines": {
 991 |         "node": ">=0.10.0"
 992 |       }
 993 |     },
 994 |     "node_modules/is-map": {
 995 |       "version": "2.0.2",
 996 |       "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz",
 997 |       "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==",
 998 |       "dev": true,
 999 |       "funding": {
1000 |         "url": "https://github.com/sponsors/ljharb"
1001 |       }
1002 |     },
1003 |     "node_modules/is-negative-zero": {
1004 |       "version": "2.0.2",
1005 |       "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
1006 |       "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
1007 |       "dev": true,
1008 |       "engines": {
1009 |         "node": ">= 0.4"
1010 |       },
1011 |       "funding": {
1012 |         "url": "https://github.com/sponsors/ljharb"
1013 |       }
1014 |     },
1015 |     "node_modules/is-number-object": {
1016 |       "version": "1.0.6",
1017 |       "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz",
1018 |       "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==",
1019 |       "dev": true,
1020 |       "dependencies": {
1021 |         "has-tostringtag": "^1.0.0"
1022 |       },
1023 |       "engines": {
1024 |         "node": ">= 0.4"
1025 |       },
1026 |       "funding": {
1027 |         "url": "https://github.com/sponsors/ljharb"
1028 |       }
1029 |     },
1030 |     "node_modules/is-regex": {
1031 |       "version": "1.1.4",
1032 |       "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
1033 |       "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
1034 |       "dev": true,
1035 |       "dependencies": {
1036 |         "call-bind": "^1.0.2",
1037 |         "has-tostringtag": "^1.0.0"
1038 |       },
1039 |       "engines": {
1040 |         "node": ">= 0.4"
1041 |       },
1042 |       "funding": {
1043 |         "url": "https://github.com/sponsors/ljharb"
1044 |       }
1045 |     },
1046 |     "node_modules/is-set": {
1047 |       "version": "2.0.2",
1048 |       "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz",
1049 |       "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==",
1050 |       "dev": true,
1051 |       "funding": {
1052 |         "url": "https://github.com/sponsors/ljharb"
1053 |       }
1054 |     },
1055 |     "node_modules/is-shared-array-buffer": {
1056 |       "version": "1.0.1",
1057 |       "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz",
1058 |       "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==",
1059 |       "dev": true,
1060 |       "funding": {
1061 |         "url": "https://github.com/sponsors/ljharb"
1062 |       }
1063 |     },
1064 |     "node_modules/is-string": {
1065 |       "version": "1.0.7",
1066 |       "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
1067 |       "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
1068 |       "dev": true,
1069 |       "dependencies": {
1070 |         "has-tostringtag": "^1.0.0"
1071 |       },
1072 |       "engines": {
1073 |         "node": ">= 0.4"
1074 |       },
1075 |       "funding": {
1076 |         "url": "https://github.com/sponsors/ljharb"
1077 |       }
1078 |     },
1079 |     "node_modules/is-symbol": {
1080 |       "version": "1.0.4",
1081 |       "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
1082 |       "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
1083 |       "dev": true,
1084 |       "dependencies": {
1085 |         "has-symbols": "^1.0.2"
1086 |       },
1087 |       "engines": {
1088 |         "node": ">= 0.4"
1089 |       },
1090 |       "funding": {
1091 |         "url": "https://github.com/sponsors/ljharb"
1092 |       }
1093 |     },
1094 |     "node_modules/is-typed-array": {
1095 |       "version": "1.1.8",
1096 |       "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz",
1097 |       "integrity": "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==",
1098 |       "dev": true,
1099 |       "dependencies": {
1100 |         "available-typed-arrays": "^1.0.5",
1101 |         "call-bind": "^1.0.2",
1102 |         "es-abstract": "^1.18.5",
1103 |         "foreach": "^2.0.5",
1104 |         "has-tostringtag": "^1.0.0"
1105 |       },
1106 |       "engines": {
1107 |         "node": ">= 0.4"
1108 |       },
1109 |       "funding": {
1110 |         "url": "https://github.com/sponsors/ljharb"
1111 |       }
1112 |     },
1113 |     "node_modules/is-weakmap": {
1114 |       "version": "2.0.1",
1115 |       "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz",
1116 |       "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==",
1117 |       "dev": true,
1118 |       "funding": {
1119 |         "url": "https://github.com/sponsors/ljharb"
1120 |       }
1121 |     },
1122 |     "node_modules/is-weakref": {
1123 |       "version": "1.0.2",
1124 |       "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
1125 |       "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
1126 |       "dev": true,
1127 |       "dependencies": {
1128 |         "call-bind": "^1.0.2"
1129 |       },
1130 |       "funding": {
1131 |         "url": "https://github.com/sponsors/ljharb"
1132 |       }
1133 |     },
1134 |     "node_modules/is-weakset": {
1135 |       "version": "2.0.2",
1136 |       "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz",
1137 |       "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==",
1138 |       "dev": true,
1139 |       "dependencies": {
1140 |         "call-bind": "^1.0.2",
1141 |         "get-intrinsic": "^1.1.1"
1142 |       },
1143 |       "funding": {
1144 |         "url": "https://github.com/sponsors/ljharb"
1145 |       }
1146 |     },
1147 |     "node_modules/isarray": {
1148 |       "version": "2.0.5",
1149 |       "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
1150 |       "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
1151 |       "dev": true
1152 |     },
1153 |     "node_modules/isexe": {
1154 |       "version": "2.0.0",
1155 |       "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1156 |       "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
1157 |       "dev": true
1158 |     },
1159 |     "node_modules/js-yaml": {
1160 |       "version": "4.1.0",
1161 |       "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
1162 |       "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
1163 |       "dev": true,
1164 |       "dependencies": {
1165 |         "argparse": "^2.0.1"
1166 |       },
1167 |       "bin": {
1168 |         "js-yaml": "bin/js-yaml.js"
1169 |       }
1170 |     },
1171 |     "node_modules/json-schema-traverse": {
1172 |       "version": "0.4.1",
1173 |       "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
1174 |       "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
1175 |       "dev": true
1176 |     },
1177 |     "node_modules/json-stable-stringify-without-jsonify": {
1178 |       "version": "1.0.1",
1179 |       "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
1180 |       "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
1181 |       "dev": true
1182 |     },
1183 |     "node_modules/levn": {
1184 |       "version": "0.4.1",
1185 |       "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
1186 |       "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
1187 |       "dev": true,
1188 |       "dependencies": {
1189 |         "prelude-ls": "^1.2.1",
1190 |         "type-check": "~0.4.0"
1191 |       },
1192 |       "engines": {
1193 |         "node": ">= 0.8.0"
1194 |       }
1195 |     },
1196 |     "node_modules/lodash.merge": {
1197 |       "version": "4.6.2",
1198 |       "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
1199 |       "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
1200 |       "dev": true
1201 |     },
1202 |     "node_modules/minimatch": {
1203 |       "version": "3.0.5",
1204 |       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz",
1205 |       "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==",
1206 |       "dev": true,
1207 |       "dependencies": {
1208 |         "brace-expansion": "^1.1.7"
1209 |       },
1210 |       "engines": {
1211 |         "node": "*"
1212 |       }
1213 |     },
1214 |     "node_modules/minimist": {
1215 |       "version": "1.2.5",
1216 |       "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
1217 |       "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
1218 |       "dev": true
1219 |     },
1220 |     "node_modules/ms": {
1221 |       "version": "2.1.2",
1222 |       "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1223 |       "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
1224 |       "dev": true
1225 |     },
1226 |     "node_modules/natural-compare": {
1227 |       "version": "1.4.0",
1228 |       "dev": true,
1229 |       "license": "MIT"
1230 |     },
1231 |     "node_modules/object-inspect": {
1232 |       "version": "1.12.0",
1233 |       "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz",
1234 |       "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==",
1235 |       "dev": true,
1236 |       "funding": {
1237 |         "url": "https://github.com/sponsors/ljharb"
1238 |       }
1239 |     },
1240 |     "node_modules/object-is": {
1241 |       "version": "1.1.5",
1242 |       "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
1243 |       "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
1244 |       "dev": true,
1245 |       "dependencies": {
1246 |         "call-bind": "^1.0.2",
1247 |         "define-properties": "^1.1.3"
1248 |       },
1249 |       "engines": {
1250 |         "node": ">= 0.4"
1251 |       },
1252 |       "funding": {
1253 |         "url": "https://github.com/sponsors/ljharb"
1254 |       }
1255 |     },
1256 |     "node_modules/object-keys": {
1257 |       "version": "1.1.1",
1258 |       "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
1259 |       "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
1260 |       "dev": true,
1261 |       "engines": {
1262 |         "node": ">= 0.4"
1263 |       }
1264 |     },
1265 |     "node_modules/object.assign": {
1266 |       "version": "4.1.2",
1267 |       "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
1268 |       "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
1269 |       "dev": true,
1270 |       "dependencies": {
1271 |         "call-bind": "^1.0.0",
1272 |         "define-properties": "^1.1.3",
1273 |         "has-symbols": "^1.0.1",
1274 |         "object-keys": "^1.1.1"
1275 |       },
1276 |       "engines": {
1277 |         "node": ">= 0.4"
1278 |       },
1279 |       "funding": {
1280 |         "url": "https://github.com/sponsors/ljharb"
1281 |       }
1282 |     },
1283 |     "node_modules/once": {
1284 |       "version": "1.4.0",
1285 |       "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1286 |       "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
1287 |       "dev": true,
1288 |       "dependencies": {
1289 |         "wrappy": "1"
1290 |       }
1291 |     },
1292 |     "node_modules/optionator": {
1293 |       "version": "0.9.1",
1294 |       "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
1295 |       "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
1296 |       "dev": true,
1297 |       "dependencies": {
1298 |         "deep-is": "^0.1.3",
1299 |         "fast-levenshtein": "^2.0.6",
1300 |         "levn": "^0.4.1",
1301 |         "prelude-ls": "^1.2.1",
1302 |         "type-check": "^0.4.0",
1303 |         "word-wrap": "^1.2.3"
1304 |       },
1305 |       "engines": {
1306 |         "node": ">= 0.8.0"
1307 |       }
1308 |     },
1309 |     "node_modules/parent-module": {
1310 |       "version": "1.0.1",
1311 |       "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
1312 |       "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
1313 |       "dev": true,
1314 |       "dependencies": {
1315 |         "callsites": "^3.0.0"
1316 |       },
1317 |       "engines": {
1318 |         "node": ">=6"
1319 |       }
1320 |     },
1321 |     "node_modules/path-is-absolute": {
1322 |       "version": "1.0.1",
1323 |       "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
1324 |       "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
1325 |       "dev": true,
1326 |       "engines": {
1327 |         "node": ">=0.10.0"
1328 |       }
1329 |     },
1330 |     "node_modules/path-key": {
1331 |       "version": "3.1.1",
1332 |       "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
1333 |       "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
1334 |       "dev": true,
1335 |       "engines": {
1336 |         "node": ">=8"
1337 |       }
1338 |     },
1339 |     "node_modules/path-parse": {
1340 |       "version": "1.0.7",
1341 |       "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
1342 |       "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
1343 |       "dev": true
1344 |     },
1345 |     "node_modules/prelude-ls": {
1346 |       "version": "1.2.1",
1347 |       "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
1348 |       "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
1349 |       "dev": true,
1350 |       "engines": {
1351 |         "node": ">= 0.8.0"
1352 |       }
1353 |     },
1354 |     "node_modules/punycode": {
1355 |       "version": "2.1.1",
1356 |       "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
1357 |       "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
1358 |       "dev": true,
1359 |       "engines": {
1360 |         "node": ">=6"
1361 |       }
1362 |     },
1363 |     "node_modules/regexp.prototype.flags": {
1364 |       "version": "1.4.1",
1365 |       "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz",
1366 |       "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==",
1367 |       "dev": true,
1368 |       "dependencies": {
1369 |         "call-bind": "^1.0.2",
1370 |         "define-properties": "^1.1.3"
1371 |       },
1372 |       "engines": {
1373 |         "node": ">= 0.4"
1374 |       },
1375 |       "funding": {
1376 |         "url": "https://github.com/sponsors/ljharb"
1377 |       }
1378 |     },
1379 |     "node_modules/regexpp": {
1380 |       "version": "3.2.0",
1381 |       "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
1382 |       "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
1383 |       "dev": true,
1384 |       "engines": {
1385 |         "node": ">=8"
1386 |       },
1387 |       "funding": {
1388 |         "url": "https://github.com/sponsors/mysticatea"
1389 |       }
1390 |     },
1391 |     "node_modules/resolve": {
1392 |       "version": "2.0.0-next.3",
1393 |       "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz",
1394 |       "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==",
1395 |       "dev": true,
1396 |       "dependencies": {
1397 |         "is-core-module": "^2.2.0",
1398 |         "path-parse": "^1.0.6"
1399 |       },
1400 |       "funding": {
1401 |         "url": "https://github.com/sponsors/ljharb"
1402 |       }
1403 |     },
1404 |     "node_modules/resolve-from": {
1405 |       "version": "4.0.0",
1406 |       "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
1407 |       "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
1408 |       "dev": true,
1409 |       "engines": {
1410 |         "node": ">=4"
1411 |       }
1412 |     },
1413 |     "node_modules/resumer": {
1414 |       "version": "0.0.0",
1415 |       "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz",
1416 |       "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=",
1417 |       "dev": true,
1418 |       "dependencies": {
1419 |         "through": "~2.3.4"
1420 |       }
1421 |     },
1422 |     "node_modules/rimraf": {
1423 |       "version": "3.0.2",
1424 |       "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
1425 |       "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
1426 |       "dev": true,
1427 |       "dependencies": {
1428 |         "glob": "^7.1.3"
1429 |       },
1430 |       "bin": {
1431 |         "rimraf": "bin.js"
1432 |       },
1433 |       "funding": {
1434 |         "url": "https://github.com/sponsors/isaacs"
1435 |       }
1436 |     },
1437 |     "node_modules/shebang-command": {
1438 |       "version": "2.0.0",
1439 |       "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
1440 |       "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
1441 |       "dev": true,
1442 |       "dependencies": {
1443 |         "shebang-regex": "^3.0.0"
1444 |       },
1445 |       "engines": {
1446 |         "node": ">=8"
1447 |       }
1448 |     },
1449 |     "node_modules/shebang-regex": {
1450 |       "version": "3.0.0",
1451 |       "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
1452 |       "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
1453 |       "dev": true,
1454 |       "engines": {
1455 |         "node": ">=8"
1456 |       }
1457 |     },
1458 |     "node_modules/side-channel": {
1459 |       "version": "1.0.4",
1460 |       "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
1461 |       "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
1462 |       "dev": true,
1463 |       "dependencies": {
1464 |         "call-bind": "^1.0.0",
1465 |         "get-intrinsic": "^1.0.2",
1466 |         "object-inspect": "^1.9.0"
1467 |       },
1468 |       "funding": {
1469 |         "url": "https://github.com/sponsors/ljharb"
1470 |       }
1471 |     },
1472 |     "node_modules/string.prototype.trim": {
1473 |       "version": "1.2.5",
1474 |       "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz",
1475 |       "integrity": "sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg==",
1476 |       "dev": true,
1477 |       "dependencies": {
1478 |         "call-bind": "^1.0.2",
1479 |         "define-properties": "^1.1.3",
1480 |         "es-abstract": "^1.19.1"
1481 |       },
1482 |       "engines": {
1483 |         "node": ">= 0.4"
1484 |       },
1485 |       "funding": {
1486 |         "url": "https://github.com/sponsors/ljharb"
1487 |       }
1488 |     },
1489 |     "node_modules/string.prototype.trimend": {
1490 |       "version": "1.0.4",
1491 |       "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz",
1492 |       "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==",
1493 |       "dev": true,
1494 |       "dependencies": {
1495 |         "call-bind": "^1.0.2",
1496 |         "define-properties": "^1.1.3"
1497 |       },
1498 |       "funding": {
1499 |         "url": "https://github.com/sponsors/ljharb"
1500 |       }
1501 |     },
1502 |     "node_modules/string.prototype.trimstart": {
1503 |       "version": "1.0.4",
1504 |       "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz",
1505 |       "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==",
1506 |       "dev": true,
1507 |       "dependencies": {
1508 |         "call-bind": "^1.0.2",
1509 |         "define-properties": "^1.1.3"
1510 |       },
1511 |       "funding": {
1512 |         "url": "https://github.com/sponsors/ljharb"
1513 |       }
1514 |     },
1515 |     "node_modules/strip-ansi": {
1516 |       "version": "6.0.1",
1517 |       "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
1518 |       "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
1519 |       "dev": true,
1520 |       "dependencies": {
1521 |         "ansi-regex": "^5.0.1"
1522 |       },
1523 |       "engines": {
1524 |         "node": ">=8"
1525 |       }
1526 |     },
1527 |     "node_modules/strip-json-comments": {
1528 |       "version": "3.1.1",
1529 |       "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
1530 |       "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
1531 |       "dev": true,
1532 |       "engines": {
1533 |         "node": ">=8"
1534 |       },
1535 |       "funding": {
1536 |         "url": "https://github.com/sponsors/sindresorhus"
1537 |       }
1538 |     },
1539 |     "node_modules/supports-color": {
1540 |       "version": "7.2.0",
1541 |       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
1542 |       "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
1543 |       "dev": true,
1544 |       "dependencies": {
1545 |         "has-flag": "^4.0.0"
1546 |       },
1547 |       "engines": {
1548 |         "node": ">=8"
1549 |       }
1550 |     },
1551 |     "node_modules/tape": {
1552 |       "version": "5.5.0",
1553 |       "resolved": "https://registry.npmjs.org/tape/-/tape-5.5.0.tgz",
1554 |       "integrity": "sha512-hmsc9J+07tM+evk2Rkv7pkbj70Uoy9k0w1yhnN8Sza8kmjhtUTVNltsjywQjC+4grB+EBMKXiJPTkftX8IrbSA==",
1555 |       "dev": true,
1556 |       "dependencies": {
1557 |         "array.prototype.every": "^1.1.3",
1558 |         "call-bind": "^1.0.2",
1559 |         "deep-equal": "^2.0.5",
1560 |         "defined": "^1.0.0",
1561 |         "dotignore": "^0.1.2",
1562 |         "for-each": "^0.3.3",
1563 |         "get-package-type": "^0.1.0",
1564 |         "glob": "^7.2.0",
1565 |         "has": "^1.0.3",
1566 |         "has-dynamic-import": "^2.0.1",
1567 |         "inherits": "^2.0.4",
1568 |         "is-regex": "^1.1.4",
1569 |         "minimist": "^1.2.5",
1570 |         "object-inspect": "^1.12.0",
1571 |         "object-is": "^1.1.5",
1572 |         "object-keys": "^1.1.1",
1573 |         "object.assign": "^4.1.2",
1574 |         "resolve": "^2.0.0-next.3",
1575 |         "resumer": "^0.0.0",
1576 |         "string.prototype.trim": "^1.2.5",
1577 |         "through": "^2.3.8"
1578 |       },
1579 |       "bin": {
1580 |         "tape": "bin/tape"
1581 |       }
1582 |     },
1583 |     "node_modules/text-table": {
1584 |       "version": "0.2.0",
1585 |       "dev": true,
1586 |       "license": "MIT"
1587 |     },
1588 |     "node_modules/through": {
1589 |       "version": "2.3.8",
1590 |       "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
1591 |       "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
1592 |       "dev": true
1593 |     },
1594 |     "node_modules/type-check": {
1595 |       "version": "0.4.0",
1596 |       "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
1597 |       "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
1598 |       "dev": true,
1599 |       "dependencies": {
1600 |         "prelude-ls": "^1.2.1"
1601 |       },
1602 |       "engines": {
1603 |         "node": ">= 0.8.0"
1604 |       }
1605 |     },
1606 |     "node_modules/type-fest": {
1607 |       "version": "0.20.2",
1608 |       "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
1609 |       "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
1610 |       "dev": true,
1611 |       "engines": {
1612 |         "node": ">=10"
1613 |       },
1614 |       "funding": {
1615 |         "url": "https://github.com/sponsors/sindresorhus"
1616 |       }
1617 |     },
1618 |     "node_modules/unbox-primitive": {
1619 |       "version": "1.0.1",
1620 |       "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz",
1621 |       "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==",
1622 |       "dev": true,
1623 |       "dependencies": {
1624 |         "function-bind": "^1.1.1",
1625 |         "has-bigints": "^1.0.1",
1626 |         "has-symbols": "^1.0.2",
1627 |         "which-boxed-primitive": "^1.0.2"
1628 |       },
1629 |       "funding": {
1630 |         "url": "https://github.com/sponsors/ljharb"
1631 |       }
1632 |     },
1633 |     "node_modules/uri-js": {
1634 |       "version": "4.4.1",
1635 |       "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
1636 |       "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
1637 |       "dev": true,
1638 |       "dependencies": {
1639 |         "punycode": "^2.1.0"
1640 |       }
1641 |     },
1642 |     "node_modules/v8-compile-cache": {
1643 |       "version": "2.3.0",
1644 |       "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
1645 |       "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
1646 |       "dev": true
1647 |     },
1648 |     "node_modules/which": {
1649 |       "version": "2.0.2",
1650 |       "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
1651 |       "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
1652 |       "dev": true,
1653 |       "dependencies": {
1654 |         "isexe": "^2.0.0"
1655 |       },
1656 |       "bin": {
1657 |         "node-which": "bin/node-which"
1658 |       },
1659 |       "engines": {
1660 |         "node": ">= 8"
1661 |       }
1662 |     },
1663 |     "node_modules/which-boxed-primitive": {
1664 |       "version": "1.0.2",
1665 |       "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
1666 |       "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
1667 |       "dev": true,
1668 |       "dependencies": {
1669 |         "is-bigint": "^1.0.1",
1670 |         "is-boolean-object": "^1.1.0",
1671 |         "is-number-object": "^1.0.4",
1672 |         "is-string": "^1.0.5",
1673 |         "is-symbol": "^1.0.3"
1674 |       },
1675 |       "funding": {
1676 |         "url": "https://github.com/sponsors/ljharb"
1677 |       }
1678 |     },
1679 |     "node_modules/which-collection": {
1680 |       "version": "1.0.1",
1681 |       "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz",
1682 |       "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==",
1683 |       "dev": true,
1684 |       "dependencies": {
1685 |         "is-map": "^2.0.1",
1686 |         "is-set": "^2.0.1",
1687 |         "is-weakmap": "^2.0.1",
1688 |         "is-weakset": "^2.0.1"
1689 |       },
1690 |       "funding": {
1691 |         "url": "https://github.com/sponsors/ljharb"
1692 |       }
1693 |     },
1694 |     "node_modules/which-typed-array": {
1695 |       "version": "1.1.7",
1696 |       "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz",
1697 |       "integrity": "sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==",
1698 |       "dev": true,
1699 |       "dependencies": {
1700 |         "available-typed-arrays": "^1.0.5",
1701 |         "call-bind": "^1.0.2",
1702 |         "es-abstract": "^1.18.5",
1703 |         "foreach": "^2.0.5",
1704 |         "has-tostringtag": "^1.0.0",
1705 |         "is-typed-array": "^1.1.7"
1706 |       },
1707 |       "engines": {
1708 |         "node": ">= 0.4"
1709 |       },
1710 |       "funding": {
1711 |         "url": "https://github.com/sponsors/ljharb"
1712 |       }
1713 |     },
1714 |     "node_modules/word-wrap": {
1715 |       "version": "1.2.3",
1716 |       "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
1717 |       "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
1718 |       "dev": true,
1719 |       "engines": {
1720 |         "node": ">=0.10.0"
1721 |       }
1722 |     },
1723 |     "node_modules/wrappy": {
1724 |       "version": "1.0.2",
1725 |       "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
1726 |       "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
1727 |       "dev": true
1728 |     }
1729 |   },
1730 |   "dependencies": {
1731 |     "@eslint/eslintrc": {
1732 |       "version": "1.0.5",
1733 |       "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz",
1734 |       "integrity": "sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==",
1735 |       "dev": true,
1736 |       "requires": {
1737 |         "ajv": "^6.12.4",
1738 |         "debug": "^4.3.2",
1739 |         "espree": "^9.2.0",
1740 |         "globals": "^13.9.0",
1741 |         "ignore": "^4.0.6",
1742 |         "import-fresh": "^3.2.1",
1743 |         "js-yaml": "^4.1.0",
1744 |         "minimatch": "^3.0.4",
1745 |         "strip-json-comments": "^3.1.1"
1746 |       },
1747 |       "dependencies": {
1748 |         "ignore": {
1749 |           "version": "4.0.6",
1750 |           "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
1751 |           "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
1752 |           "dev": true
1753 |         }
1754 |       }
1755 |     },
1756 |     "@humanwhocodes/config-array": {
1757 |       "version": "0.9.3",
1758 |       "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.3.tgz",
1759 |       "integrity": "sha512-3xSMlXHh03hCcCmFc0rbKp3Ivt2PFEJnQUJDDMTJQ2wkECZWdq4GePs2ctc5H8zV+cHPaq8k2vU8mrQjA6iHdQ==",
1760 |       "dev": true,
1761 |       "requires": {
1762 |         "@humanwhocodes/object-schema": "^1.2.1",
1763 |         "debug": "^4.1.1",
1764 |         "minimatch": "^3.0.4"
1765 |       }
1766 |     },
1767 |     "@humanwhocodes/object-schema": {
1768 |       "version": "1.2.1",
1769 |       "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
1770 |       "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
1771 |       "dev": true
1772 |     },
1773 |     "acorn": {
1774 |       "version": "8.7.0",
1775 |       "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz",
1776 |       "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==",
1777 |       "dev": true
1778 |     },
1779 |     "acorn-jsx": {
1780 |       "version": "5.3.2",
1781 |       "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
1782 |       "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
1783 |       "dev": true,
1784 |       "requires": {}
1785 |     },
1786 |     "ajv": {
1787 |       "version": "6.12.6",
1788 |       "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
1789 |       "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
1790 |       "dev": true,
1791 |       "requires": {
1792 |         "fast-deep-equal": "^3.1.1",
1793 |         "fast-json-stable-stringify": "^2.0.0",
1794 |         "json-schema-traverse": "^0.4.1",
1795 |         "uri-js": "^4.2.2"
1796 |       }
1797 |     },
1798 |     "ansi-regex": {
1799 |       "version": "5.0.1",
1800 |       "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
1801 |       "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
1802 |       "dev": true
1803 |     },
1804 |     "ansi-styles": {
1805 |       "version": "4.3.0",
1806 |       "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
1807 |       "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
1808 |       "dev": true,
1809 |       "requires": {
1810 |         "color-convert": "^2.0.1"
1811 |       }
1812 |     },
1813 |     "argparse": {
1814 |       "version": "2.0.1",
1815 |       "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
1816 |       "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
1817 |       "dev": true
1818 |     },
1819 |     "array.prototype.every": {
1820 |       "version": "1.1.3",
1821 |       "resolved": "https://registry.npmjs.org/array.prototype.every/-/array.prototype.every-1.1.3.tgz",
1822 |       "integrity": "sha512-vWnriJI//SOMOWtXbU/VXhJ/InfnNHPF6BLKn5WfY8xXy+NWql0fUy20GO3sdqBhCAO+qw8S/E5nJiZX+QFdCA==",
1823 |       "dev": true,
1824 |       "requires": {
1825 |         "call-bind": "^1.0.2",
1826 |         "define-properties": "^1.1.3",
1827 |         "es-abstract": "^1.19.0",
1828 |         "is-string": "^1.0.7"
1829 |       }
1830 |     },
1831 |     "available-typed-arrays": {
1832 |       "version": "1.0.5",
1833 |       "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
1834 |       "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
1835 |       "dev": true
1836 |     },
1837 |     "balanced-match": {
1838 |       "version": "1.0.2",
1839 |       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
1840 |       "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
1841 |       "dev": true
1842 |     },
1843 |     "brace-expansion": {
1844 |       "version": "1.1.11",
1845 |       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
1846 |       "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
1847 |       "dev": true,
1848 |       "requires": {
1849 |         "balanced-match": "^1.0.0",
1850 |         "concat-map": "0.0.1"
1851 |       }
1852 |     },
1853 |     "call-bind": {
1854 |       "version": "1.0.2",
1855 |       "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
1856 |       "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
1857 |       "dev": true,
1858 |       "requires": {
1859 |         "function-bind": "^1.1.1",
1860 |         "get-intrinsic": "^1.0.2"
1861 |       }
1862 |     },
1863 |     "callsites": {
1864 |       "version": "3.1.0",
1865 |       "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
1866 |       "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
1867 |       "dev": true
1868 |     },
1869 |     "chalk": {
1870 |       "version": "4.1.2",
1871 |       "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
1872 |       "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
1873 |       "dev": true,
1874 |       "requires": {
1875 |         "ansi-styles": "^4.1.0",
1876 |         "supports-color": "^7.1.0"
1877 |       }
1878 |     },
1879 |     "color-convert": {
1880 |       "version": "2.0.1",
1881 |       "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
1882 |       "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
1883 |       "dev": true,
1884 |       "requires": {
1885 |         "color-name": "~1.1.4"
1886 |       }
1887 |     },
1888 |     "color-name": {
1889 |       "version": "1.1.4",
1890 |       "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
1891 |       "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
1892 |       "dev": true
1893 |     },
1894 |     "concat-map": {
1895 |       "version": "0.0.1",
1896 |       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
1897 |       "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
1898 |       "dev": true
1899 |     },
1900 |     "cross-spawn": {
1901 |       "version": "7.0.3",
1902 |       "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
1903 |       "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
1904 |       "dev": true,
1905 |       "requires": {
1906 |         "path-key": "^3.1.0",
1907 |         "shebang-command": "^2.0.0",
1908 |         "which": "^2.0.1"
1909 |       }
1910 |     },
1911 |     "debug": {
1912 |       "version": "4.3.3",
1913 |       "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
1914 |       "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
1915 |       "dev": true,
1916 |       "requires": {
1917 |         "ms": "2.1.2"
1918 |       }
1919 |     },
1920 |     "deep-equal": {
1921 |       "version": "2.0.5",
1922 |       "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz",
1923 |       "integrity": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==",
1924 |       "dev": true,
1925 |       "requires": {
1926 |         "call-bind": "^1.0.0",
1927 |         "es-get-iterator": "^1.1.1",
1928 |         "get-intrinsic": "^1.0.1",
1929 |         "is-arguments": "^1.0.4",
1930 |         "is-date-object": "^1.0.2",
1931 |         "is-regex": "^1.1.1",
1932 |         "isarray": "^2.0.5",
1933 |         "object-is": "^1.1.4",
1934 |         "object-keys": "^1.1.1",
1935 |         "object.assign": "^4.1.2",
1936 |         "regexp.prototype.flags": "^1.3.0",
1937 |         "side-channel": "^1.0.3",
1938 |         "which-boxed-primitive": "^1.0.1",
1939 |         "which-collection": "^1.0.1",
1940 |         "which-typed-array": "^1.1.2"
1941 |       }
1942 |     },
1943 |     "deep-is": {
1944 |       "version": "0.1.4",
1945 |       "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
1946 |       "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
1947 |       "dev": true
1948 |     },
1949 |     "define-properties": {
1950 |       "version": "1.1.3",
1951 |       "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
1952 |       "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
1953 |       "dev": true,
1954 |       "requires": {
1955 |         "object-keys": "^1.0.12"
1956 |       }
1957 |     },
1958 |     "defined": {
1959 |       "version": "1.0.0",
1960 |       "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
1961 |       "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=",
1962 |       "dev": true
1963 |     },
1964 |     "doctrine": {
1965 |       "version": "3.0.0",
1966 |       "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
1967 |       "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
1968 |       "dev": true,
1969 |       "requires": {
1970 |         "esutils": "^2.0.2"
1971 |       }
1972 |     },
1973 |     "dotignore": {
1974 |       "version": "0.1.2",
1975 |       "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz",
1976 |       "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==",
1977 |       "dev": true,
1978 |       "requires": {
1979 |         "minimatch": "^3.0.4"
1980 |       }
1981 |     },
1982 |     "es-abstract": {
1983 |       "version": "1.19.1",
1984 |       "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz",
1985 |       "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==",
1986 |       "dev": true,
1987 |       "requires": {
1988 |         "call-bind": "^1.0.2",
1989 |         "es-to-primitive": "^1.2.1",
1990 |         "function-bind": "^1.1.1",
1991 |         "get-intrinsic": "^1.1.1",
1992 |         "get-symbol-description": "^1.0.0",
1993 |         "has": "^1.0.3",
1994 |         "has-symbols": "^1.0.2",
1995 |         "internal-slot": "^1.0.3",
1996 |         "is-callable": "^1.2.4",
1997 |         "is-negative-zero": "^2.0.1",
1998 |         "is-regex": "^1.1.4",
1999 |         "is-shared-array-buffer": "^1.0.1",
2000 |         "is-string": "^1.0.7",
2001 |         "is-weakref": "^1.0.1",
2002 |         "object-inspect": "^1.11.0",
2003 |         "object-keys": "^1.1.1",
2004 |         "object.assign": "^4.1.2",
2005 |         "string.prototype.trimend": "^1.0.4",
2006 |         "string.prototype.trimstart": "^1.0.4",
2007 |         "unbox-primitive": "^1.0.1"
2008 |       }
2009 |     },
2010 |     "es-get-iterator": {
2011 |       "version": "1.1.2",
2012 |       "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz",
2013 |       "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==",
2014 |       "dev": true,
2015 |       "requires": {
2016 |         "call-bind": "^1.0.2",
2017 |         "get-intrinsic": "^1.1.0",
2018 |         "has-symbols": "^1.0.1",
2019 |         "is-arguments": "^1.1.0",
2020 |         "is-map": "^2.0.2",
2021 |         "is-set": "^2.0.2",
2022 |         "is-string": "^1.0.5",
2023 |         "isarray": "^2.0.5"
2024 |       }
2025 |     },
2026 |     "es-to-primitive": {
2027 |       "version": "1.2.1",
2028 |       "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
2029 |       "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
2030 |       "dev": true,
2031 |       "requires": {
2032 |         "is-callable": "^1.1.4",
2033 |         "is-date-object": "^1.0.1",
2034 |         "is-symbol": "^1.0.2"
2035 |       }
2036 |     },
2037 |     "escape-string-regexp": {
2038 |       "version": "4.0.0",
2039 |       "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
2040 |       "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
2041 |       "dev": true
2042 |     },
2043 |     "eslint": {
2044 |       "version": "8.8.0",
2045 |       "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.8.0.tgz",
2046 |       "integrity": "sha512-H3KXAzQGBH1plhYS3okDix2ZthuYJlQQEGE5k0IKuEqUSiyu4AmxxlJ2MtTYeJ3xB4jDhcYCwGOg2TXYdnDXlQ==",
2047 |       "dev": true,
2048 |       "requires": {
2049 |         "@eslint/eslintrc": "^1.0.5",
2050 |         "@humanwhocodes/config-array": "^0.9.2",
2051 |         "ajv": "^6.10.0",
2052 |         "chalk": "^4.0.0",
2053 |         "cross-spawn": "^7.0.2",
2054 |         "debug": "^4.3.2",
2055 |         "doctrine": "^3.0.0",
2056 |         "escape-string-regexp": "^4.0.0",
2057 |         "eslint-scope": "^7.1.0",
2058 |         "eslint-utils": "^3.0.0",
2059 |         "eslint-visitor-keys": "^3.2.0",
2060 |         "espree": "^9.3.0",
2061 |         "esquery": "^1.4.0",
2062 |         "esutils": "^2.0.2",
2063 |         "fast-deep-equal": "^3.1.3",
2064 |         "file-entry-cache": "^6.0.1",
2065 |         "functional-red-black-tree": "^1.0.1",
2066 |         "glob-parent": "^6.0.1",
2067 |         "globals": "^13.6.0",
2068 |         "ignore": "^5.2.0",
2069 |         "import-fresh": "^3.0.0",
2070 |         "imurmurhash": "^0.1.4",
2071 |         "is-glob": "^4.0.0",
2072 |         "js-yaml": "^4.1.0",
2073 |         "json-stable-stringify-without-jsonify": "^1.0.1",
2074 |         "levn": "^0.4.1",
2075 |         "lodash.merge": "^4.6.2",
2076 |         "minimatch": "^3.0.4",
2077 |         "natural-compare": "^1.4.0",
2078 |         "optionator": "^0.9.1",
2079 |         "regexpp": "^3.2.0",
2080 |         "strip-ansi": "^6.0.1",
2081 |         "strip-json-comments": "^3.1.0",
2082 |         "text-table": "^0.2.0",
2083 |         "v8-compile-cache": "^2.0.3"
2084 |       }
2085 |     },
2086 |     "eslint-config-mourner": {
2087 |       "version": "2.0.1",
2088 |       "dev": true
2089 |     },
2090 |     "eslint-scope": {
2091 |       "version": "7.1.0",
2092 |       "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz",
2093 |       "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==",
2094 |       "dev": true,
2095 |       "requires": {
2096 |         "esrecurse": "^4.3.0",
2097 |         "estraverse": "^5.2.0"
2098 |       }
2099 |     },
2100 |     "eslint-utils": {
2101 |       "version": "3.0.0",
2102 |       "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
2103 |       "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
2104 |       "dev": true,
2105 |       "requires": {
2106 |         "eslint-visitor-keys": "^2.0.0"
2107 |       },
2108 |       "dependencies": {
2109 |         "eslint-visitor-keys": {
2110 |           "version": "2.1.0",
2111 |           "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
2112 |           "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
2113 |           "dev": true
2114 |         }
2115 |       }
2116 |     },
2117 |     "eslint-visitor-keys": {
2118 |       "version": "3.2.0",
2119 |       "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.2.0.tgz",
2120 |       "integrity": "sha512-IOzT0X126zn7ALX0dwFiUQEdsfzrm4+ISsQS8nukaJXwEyYKRSnEIIDULYg1mCtGp7UUXgfGl7BIolXREQK+XQ==",
2121 |       "dev": true
2122 |     },
2123 |     "espree": {
2124 |       "version": "9.3.0",
2125 |       "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.0.tgz",
2126 |       "integrity": "sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ==",
2127 |       "dev": true,
2128 |       "requires": {
2129 |         "acorn": "^8.7.0",
2130 |         "acorn-jsx": "^5.3.1",
2131 |         "eslint-visitor-keys": "^3.1.0"
2132 |       }
2133 |     },
2134 |     "esquery": {
2135 |       "version": "1.4.0",
2136 |       "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
2137 |       "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
2138 |       "dev": true,
2139 |       "requires": {
2140 |         "estraverse": "^5.1.0"
2141 |       }
2142 |     },
2143 |     "esrecurse": {
2144 |       "version": "4.3.0",
2145 |       "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
2146 |       "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
2147 |       "dev": true,
2148 |       "requires": {
2149 |         "estraverse": "^5.2.0"
2150 |       }
2151 |     },
2152 |     "estraverse": {
2153 |       "version": "5.3.0",
2154 |       "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
2155 |       "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
2156 |       "dev": true
2157 |     },
2158 |     "esutils": {
2159 |       "version": "2.0.3",
2160 |       "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
2161 |       "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
2162 |       "dev": true
2163 |     },
2164 |     "fast-deep-equal": {
2165 |       "version": "3.1.3",
2166 |       "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
2167 |       "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
2168 |       "dev": true
2169 |     },
2170 |     "fast-json-stable-stringify": {
2171 |       "version": "2.1.0",
2172 |       "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
2173 |       "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
2174 |       "dev": true
2175 |     },
2176 |     "fast-levenshtein": {
2177 |       "version": "2.0.6",
2178 |       "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
2179 |       "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
2180 |       "dev": true
2181 |     },
2182 |     "file-entry-cache": {
2183 |       "version": "6.0.1",
2184 |       "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
2185 |       "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
2186 |       "dev": true,
2187 |       "requires": {
2188 |         "flat-cache": "^3.0.4"
2189 |       }
2190 |     },
2191 |     "flat-cache": {
2192 |       "version": "3.0.4",
2193 |       "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
2194 |       "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
2195 |       "dev": true,
2196 |       "requires": {
2197 |         "flatted": "^3.1.0",
2198 |         "rimraf": "^3.0.2"
2199 |       }
2200 |     },
2201 |     "flatted": {
2202 |       "version": "3.2.5",
2203 |       "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz",
2204 |       "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==",
2205 |       "dev": true
2206 |     },
2207 |     "for-each": {
2208 |       "version": "0.3.3",
2209 |       "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
2210 |       "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
2211 |       "dev": true,
2212 |       "requires": {
2213 |         "is-callable": "^1.1.3"
2214 |       }
2215 |     },
2216 |     "foreach": {
2217 |       "version": "2.0.5",
2218 |       "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
2219 |       "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=",
2220 |       "dev": true
2221 |     },
2222 |     "fs.realpath": {
2223 |       "version": "1.0.0",
2224 |       "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
2225 |       "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
2226 |       "dev": true
2227 |     },
2228 |     "function-bind": {
2229 |       "version": "1.1.1",
2230 |       "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
2231 |       "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
2232 |       "dev": true
2233 |     },
2234 |     "functional-red-black-tree": {
2235 |       "version": "1.0.1",
2236 |       "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
2237 |       "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
2238 |       "dev": true
2239 |     },
2240 |     "get-intrinsic": {
2241 |       "version": "1.1.1",
2242 |       "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
2243 |       "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
2244 |       "dev": true,
2245 |       "requires": {
2246 |         "function-bind": "^1.1.1",
2247 |         "has": "^1.0.3",
2248 |         "has-symbols": "^1.0.1"
2249 |       }
2250 |     },
2251 |     "get-package-type": {
2252 |       "version": "0.1.0",
2253 |       "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
2254 |       "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
2255 |       "dev": true
2256 |     },
2257 |     "get-symbol-description": {
2258 |       "version": "1.0.0",
2259 |       "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
2260 |       "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
2261 |       "dev": true,
2262 |       "requires": {
2263 |         "call-bind": "^1.0.2",
2264 |         "get-intrinsic": "^1.1.1"
2265 |       }
2266 |     },
2267 |     "glob": {
2268 |       "version": "7.2.0",
2269 |       "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
2270 |       "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
2271 |       "dev": true,
2272 |       "requires": {
2273 |         "fs.realpath": "^1.0.0",
2274 |         "inflight": "^1.0.4",
2275 |         "inherits": "2",
2276 |         "minimatch": "^3.0.4",
2277 |         "once": "^1.3.0",
2278 |         "path-is-absolute": "^1.0.0"
2279 |       }
2280 |     },
2281 |     "glob-parent": {
2282 |       "version": "6.0.2",
2283 |       "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
2284 |       "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
2285 |       "dev": true,
2286 |       "requires": {
2287 |         "is-glob": "^4.0.3"
2288 |       }
2289 |     },
2290 |     "globals": {
2291 |       "version": "13.12.1",
2292 |       "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.1.tgz",
2293 |       "integrity": "sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw==",
2294 |       "dev": true,
2295 |       "requires": {
2296 |         "type-fest": "^0.20.2"
2297 |       }
2298 |     },
2299 |     "has": {
2300 |       "version": "1.0.3",
2301 |       "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
2302 |       "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
2303 |       "dev": true,
2304 |       "requires": {
2305 |         "function-bind": "^1.1.1"
2306 |       }
2307 |     },
2308 |     "has-bigints": {
2309 |       "version": "1.0.1",
2310 |       "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz",
2311 |       "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==",
2312 |       "dev": true
2313 |     },
2314 |     "has-dynamic-import": {
2315 |       "version": "2.0.1",
2316 |       "resolved": "https://registry.npmjs.org/has-dynamic-import/-/has-dynamic-import-2.0.1.tgz",
2317 |       "integrity": "sha512-X3fbtsZmwb6W7fJGR9o7x65fZoodygCrZ3TVycvghP62yYQfS0t4RS0Qcz+j5tQYUKeSWS09tHkWW6WhFV3XhQ==",
2318 |       "dev": true,
2319 |       "requires": {
2320 |         "call-bind": "^1.0.2",
2321 |         "get-intrinsic": "^1.1.1"
2322 |       }
2323 |     },
2324 |     "has-flag": {
2325 |       "version": "4.0.0",
2326 |       "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
2327 |       "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
2328 |       "dev": true
2329 |     },
2330 |     "has-symbols": {
2331 |       "version": "1.0.2",
2332 |       "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
2333 |       "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==",
2334 |       "dev": true
2335 |     },
2336 |     "has-tostringtag": {
2337 |       "version": "1.0.0",
2338 |       "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
2339 |       "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
2340 |       "dev": true,
2341 |       "requires": {
2342 |         "has-symbols": "^1.0.2"
2343 |       }
2344 |     },
2345 |     "ignore": {
2346 |       "version": "5.2.0",
2347 |       "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
2348 |       "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
2349 |       "dev": true
2350 |     },
2351 |     "import-fresh": {
2352 |       "version": "3.3.0",
2353 |       "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
2354 |       "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
2355 |       "dev": true,
2356 |       "requires": {
2357 |         "parent-module": "^1.0.0",
2358 |         "resolve-from": "^4.0.0"
2359 |       }
2360 |     },
2361 |     "imurmurhash": {
2362 |       "version": "0.1.4",
2363 |       "dev": true
2364 |     },
2365 |     "inflight": {
2366 |       "version": "1.0.6",
2367 |       "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
2368 |       "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
2369 |       "dev": true,
2370 |       "requires": {
2371 |         "once": "^1.3.0",
2372 |         "wrappy": "1"
2373 |       }
2374 |     },
2375 |     "inherits": {
2376 |       "version": "2.0.4",
2377 |       "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
2378 |       "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
2379 |       "dev": true
2380 |     },
2381 |     "internal-slot": {
2382 |       "version": "1.0.3",
2383 |       "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz",
2384 |       "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==",
2385 |       "dev": true,
2386 |       "requires": {
2387 |         "get-intrinsic": "^1.1.0",
2388 |         "has": "^1.0.3",
2389 |         "side-channel": "^1.0.4"
2390 |       }
2391 |     },
2392 |     "is-arguments": {
2393 |       "version": "1.1.1",
2394 |       "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
2395 |       "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
2396 |       "dev": true,
2397 |       "requires": {
2398 |         "call-bind": "^1.0.2",
2399 |         "has-tostringtag": "^1.0.0"
2400 |       }
2401 |     },
2402 |     "is-bigint": {
2403 |       "version": "1.0.4",
2404 |       "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
2405 |       "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
2406 |       "dev": true,
2407 |       "requires": {
2408 |         "has-bigints": "^1.0.1"
2409 |       }
2410 |     },
2411 |     "is-boolean-object": {
2412 |       "version": "1.1.2",
2413 |       "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
2414 |       "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
2415 |       "dev": true,
2416 |       "requires": {
2417 |         "call-bind": "^1.0.2",
2418 |         "has-tostringtag": "^1.0.0"
2419 |       }
2420 |     },
2421 |     "is-callable": {
2422 |       "version": "1.2.4",
2423 |       "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz",
2424 |       "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==",
2425 |       "dev": true
2426 |     },
2427 |     "is-core-module": {
2428 |       "version": "2.8.1",
2429 |       "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz",
2430 |       "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==",
2431 |       "dev": true,
2432 |       "requires": {
2433 |         "has": "^1.0.3"
2434 |       }
2435 |     },
2436 |     "is-date-object": {
2437 |       "version": "1.0.5",
2438 |       "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
2439 |       "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
2440 |       "dev": true,
2441 |       "requires": {
2442 |         "has-tostringtag": "^1.0.0"
2443 |       }
2444 |     },
2445 |     "is-extglob": {
2446 |       "version": "2.1.1",
2447 |       "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
2448 |       "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
2449 |       "dev": true
2450 |     },
2451 |     "is-glob": {
2452 |       "version": "4.0.3",
2453 |       "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
2454 |       "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
2455 |       "dev": true,
2456 |       "requires": {
2457 |         "is-extglob": "^2.1.1"
2458 |       }
2459 |     },
2460 |     "is-map": {
2461 |       "version": "2.0.2",
2462 |       "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz",
2463 |       "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==",
2464 |       "dev": true
2465 |     },
2466 |     "is-negative-zero": {
2467 |       "version": "2.0.2",
2468 |       "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
2469 |       "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
2470 |       "dev": true
2471 |     },
2472 |     "is-number-object": {
2473 |       "version": "1.0.6",
2474 |       "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz",
2475 |       "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==",
2476 |       "dev": true,
2477 |       "requires": {
2478 |         "has-tostringtag": "^1.0.0"
2479 |       }
2480 |     },
2481 |     "is-regex": {
2482 |       "version": "1.1.4",
2483 |       "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
2484 |       "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
2485 |       "dev": true,
2486 |       "requires": {
2487 |         "call-bind": "^1.0.2",
2488 |         "has-tostringtag": "^1.0.0"
2489 |       }
2490 |     },
2491 |     "is-set": {
2492 |       "version": "2.0.2",
2493 |       "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz",
2494 |       "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==",
2495 |       "dev": true
2496 |     },
2497 |     "is-shared-array-buffer": {
2498 |       "version": "1.0.1",
2499 |       "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz",
2500 |       "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==",
2501 |       "dev": true
2502 |     },
2503 |     "is-string": {
2504 |       "version": "1.0.7",
2505 |       "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
2506 |       "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
2507 |       "dev": true,
2508 |       "requires": {
2509 |         "has-tostringtag": "^1.0.0"
2510 |       }
2511 |     },
2512 |     "is-symbol": {
2513 |       "version": "1.0.4",
2514 |       "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
2515 |       "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
2516 |       "dev": true,
2517 |       "requires": {
2518 |         "has-symbols": "^1.0.2"
2519 |       }
2520 |     },
2521 |     "is-typed-array": {
2522 |       "version": "1.1.8",
2523 |       "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz",
2524 |       "integrity": "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==",
2525 |       "dev": true,
2526 |       "requires": {
2527 |         "available-typed-arrays": "^1.0.5",
2528 |         "call-bind": "^1.0.2",
2529 |         "es-abstract": "^1.18.5",
2530 |         "foreach": "^2.0.5",
2531 |         "has-tostringtag": "^1.0.0"
2532 |       }
2533 |     },
2534 |     "is-weakmap": {
2535 |       "version": "2.0.1",
2536 |       "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz",
2537 |       "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==",
2538 |       "dev": true
2539 |     },
2540 |     "is-weakref": {
2541 |       "version": "1.0.2",
2542 |       "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
2543 |       "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
2544 |       "dev": true,
2545 |       "requires": {
2546 |         "call-bind": "^1.0.2"
2547 |       }
2548 |     },
2549 |     "is-weakset": {
2550 |       "version": "2.0.2",
2551 |       "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz",
2552 |       "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==",
2553 |       "dev": true,
2554 |       "requires": {
2555 |         "call-bind": "^1.0.2",
2556 |         "get-intrinsic": "^1.1.1"
2557 |       }
2558 |     },
2559 |     "isarray": {
2560 |       "version": "2.0.5",
2561 |       "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
2562 |       "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
2563 |       "dev": true
2564 |     },
2565 |     "isexe": {
2566 |       "version": "2.0.0",
2567 |       "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
2568 |       "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
2569 |       "dev": true
2570 |     },
2571 |     "js-yaml": {
2572 |       "version": "4.1.0",
2573 |       "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
2574 |       "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
2575 |       "dev": true,
2576 |       "requires": {
2577 |         "argparse": "^2.0.1"
2578 |       }
2579 |     },
2580 |     "json-schema-traverse": {
2581 |       "version": "0.4.1",
2582 |       "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
2583 |       "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
2584 |       "dev": true
2585 |     },
2586 |     "json-stable-stringify-without-jsonify": {
2587 |       "version": "1.0.1",
2588 |       "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
2589 |       "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
2590 |       "dev": true
2591 |     },
2592 |     "levn": {
2593 |       "version": "0.4.1",
2594 |       "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
2595 |       "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
2596 |       "dev": true,
2597 |       "requires": {
2598 |         "prelude-ls": "^1.2.1",
2599 |         "type-check": "~0.4.0"
2600 |       }
2601 |     },
2602 |     "lodash.merge": {
2603 |       "version": "4.6.2",
2604 |       "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
2605 |       "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
2606 |       "dev": true
2607 |     },
2608 |     "minimatch": {
2609 |       "version": "3.0.5",
2610 |       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz",
2611 |       "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==",
2612 |       "dev": true,
2613 |       "requires": {
2614 |         "brace-expansion": "^1.1.7"
2615 |       }
2616 |     },
2617 |     "minimist": {
2618 |       "version": "1.2.5",
2619 |       "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
2620 |       "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
2621 |       "dev": true
2622 |     },
2623 |     "ms": {
2624 |       "version": "2.1.2",
2625 |       "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
2626 |       "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
2627 |       "dev": true
2628 |     },
2629 |     "natural-compare": {
2630 |       "version": "1.4.0",
2631 |       "dev": true
2632 |     },
2633 |     "object-inspect": {
2634 |       "version": "1.12.0",
2635 |       "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz",
2636 |       "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==",
2637 |       "dev": true
2638 |     },
2639 |     "object-is": {
2640 |       "version": "1.1.5",
2641 |       "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
2642 |       "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
2643 |       "dev": true,
2644 |       "requires": {
2645 |         "call-bind": "^1.0.2",
2646 |         "define-properties": "^1.1.3"
2647 |       }
2648 |     },
2649 |     "object-keys": {
2650 |       "version": "1.1.1",
2651 |       "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
2652 |       "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
2653 |       "dev": true
2654 |     },
2655 |     "object.assign": {
2656 |       "version": "4.1.2",
2657 |       "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz",
2658 |       "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==",
2659 |       "dev": true,
2660 |       "requires": {
2661 |         "call-bind": "^1.0.0",
2662 |         "define-properties": "^1.1.3",
2663 |         "has-symbols": "^1.0.1",
2664 |         "object-keys": "^1.1.1"
2665 |       }
2666 |     },
2667 |     "once": {
2668 |       "version": "1.4.0",
2669 |       "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
2670 |       "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
2671 |       "dev": true,
2672 |       "requires": {
2673 |         "wrappy": "1"
2674 |       }
2675 |     },
2676 |     "optionator": {
2677 |       "version": "0.9.1",
2678 |       "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
2679 |       "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
2680 |       "dev": true,
2681 |       "requires": {
2682 |         "deep-is": "^0.1.3",
2683 |         "fast-levenshtein": "^2.0.6",
2684 |         "levn": "^0.4.1",
2685 |         "prelude-ls": "^1.2.1",
2686 |         "type-check": "^0.4.0",
2687 |         "word-wrap": "^1.2.3"
2688 |       }
2689 |     },
2690 |     "parent-module": {
2691 |       "version": "1.0.1",
2692 |       "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
2693 |       "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
2694 |       "dev": true,
2695 |       "requires": {
2696 |         "callsites": "^3.0.0"
2697 |       }
2698 |     },
2699 |     "path-is-absolute": {
2700 |       "version": "1.0.1",
2701 |       "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
2702 |       "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
2703 |       "dev": true
2704 |     },
2705 |     "path-key": {
2706 |       "version": "3.1.1",
2707 |       "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
2708 |       "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
2709 |       "dev": true
2710 |     },
2711 |     "path-parse": {
2712 |       "version": "1.0.7",
2713 |       "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
2714 |       "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
2715 |       "dev": true
2716 |     },
2717 |     "prelude-ls": {
2718 |       "version": "1.2.1",
2719 |       "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
2720 |       "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
2721 |       "dev": true
2722 |     },
2723 |     "punycode": {
2724 |       "version": "2.1.1",
2725 |       "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
2726 |       "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
2727 |       "dev": true
2728 |     },
2729 |     "regexp.prototype.flags": {
2730 |       "version": "1.4.1",
2731 |       "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz",
2732 |       "integrity": "sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==",
2733 |       "dev": true,
2734 |       "requires": {
2735 |         "call-bind": "^1.0.2",
2736 |         "define-properties": "^1.1.3"
2737 |       }
2738 |     },
2739 |     "regexpp": {
2740 |       "version": "3.2.0",
2741 |       "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
2742 |       "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
2743 |       "dev": true
2744 |     },
2745 |     "resolve": {
2746 |       "version": "2.0.0-next.3",
2747 |       "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz",
2748 |       "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==",
2749 |       "dev": true,
2750 |       "requires": {
2751 |         "is-core-module": "^2.2.0",
2752 |         "path-parse": "^1.0.6"
2753 |       }
2754 |     },
2755 |     "resolve-from": {
2756 |       "version": "4.0.0",
2757 |       "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
2758 |       "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
2759 |       "dev": true
2760 |     },
2761 |     "resumer": {
2762 |       "version": "0.0.0",
2763 |       "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz",
2764 |       "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=",
2765 |       "dev": true,
2766 |       "requires": {
2767 |         "through": "~2.3.4"
2768 |       }
2769 |     },
2770 |     "rimraf": {
2771 |       "version": "3.0.2",
2772 |       "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
2773 |       "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
2774 |       "dev": true,
2775 |       "requires": {
2776 |         "glob": "^7.1.3"
2777 |       }
2778 |     },
2779 |     "shebang-command": {
2780 |       "version": "2.0.0",
2781 |       "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
2782 |       "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
2783 |       "dev": true,
2784 |       "requires": {
2785 |         "shebang-regex": "^3.0.0"
2786 |       }
2787 |     },
2788 |     "shebang-regex": {
2789 |       "version": "3.0.0",
2790 |       "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
2791 |       "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
2792 |       "dev": true
2793 |     },
2794 |     "side-channel": {
2795 |       "version": "1.0.4",
2796 |       "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
2797 |       "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
2798 |       "dev": true,
2799 |       "requires": {
2800 |         "call-bind": "^1.0.0",
2801 |         "get-intrinsic": "^1.0.2",
2802 |         "object-inspect": "^1.9.0"
2803 |       }
2804 |     },
2805 |     "string.prototype.trim": {
2806 |       "version": "1.2.5",
2807 |       "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz",
2808 |       "integrity": "sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg==",
2809 |       "dev": true,
2810 |       "requires": {
2811 |         "call-bind": "^1.0.2",
2812 |         "define-properties": "^1.1.3",
2813 |         "es-abstract": "^1.19.1"
2814 |       }
2815 |     },
2816 |     "string.prototype.trimend": {
2817 |       "version": "1.0.4",
2818 |       "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz",
2819 |       "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==",
2820 |       "dev": true,
2821 |       "requires": {
2822 |         "call-bind": "^1.0.2",
2823 |         "define-properties": "^1.1.3"
2824 |       }
2825 |     },
2826 |     "string.prototype.trimstart": {
2827 |       "version": "1.0.4",
2828 |       "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz",
2829 |       "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==",
2830 |       "dev": true,
2831 |       "requires": {
2832 |         "call-bind": "^1.0.2",
2833 |         "define-properties": "^1.1.3"
2834 |       }
2835 |     },
2836 |     "strip-ansi": {
2837 |       "version": "6.0.1",
2838 |       "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
2839 |       "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
2840 |       "dev": true,
2841 |       "requires": {
2842 |         "ansi-regex": "^5.0.1"
2843 |       }
2844 |     },
2845 |     "strip-json-comments": {
2846 |       "version": "3.1.1",
2847 |       "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
2848 |       "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
2849 |       "dev": true
2850 |     },
2851 |     "supports-color": {
2852 |       "version": "7.2.0",
2853 |       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
2854 |       "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
2855 |       "dev": true,
2856 |       "requires": {
2857 |         "has-flag": "^4.0.0"
2858 |       }
2859 |     },
2860 |     "tape": {
2861 |       "version": "5.5.0",
2862 |       "resolved": "https://registry.npmjs.org/tape/-/tape-5.5.0.tgz",
2863 |       "integrity": "sha512-hmsc9J+07tM+evk2Rkv7pkbj70Uoy9k0w1yhnN8Sza8kmjhtUTVNltsjywQjC+4grB+EBMKXiJPTkftX8IrbSA==",
2864 |       "dev": true,
2865 |       "requires": {
2866 |         "array.prototype.every": "^1.1.3",
2867 |         "call-bind": "^1.0.2",
2868 |         "deep-equal": "^2.0.5",
2869 |         "defined": "^1.0.0",
2870 |         "dotignore": "^0.1.2",
2871 |         "for-each": "^0.3.3",
2872 |         "get-package-type": "^0.1.0",
2873 |         "glob": "^7.2.0",
2874 |         "has": "^1.0.3",
2875 |         "has-dynamic-import": "^2.0.1",
2876 |         "inherits": "^2.0.4",
2877 |         "is-regex": "^1.1.4",
2878 |         "minimist": "^1.2.5",
2879 |         "object-inspect": "^1.12.0",
2880 |         "object-is": "^1.1.5",
2881 |         "object-keys": "^1.1.1",
2882 |         "object.assign": "^4.1.2",
2883 |         "resolve": "^2.0.0-next.3",
2884 |         "resumer": "^0.0.0",
2885 |         "string.prototype.trim": "^1.2.5",
2886 |         "through": "^2.3.8"
2887 |       }
2888 |     },
2889 |     "text-table": {
2890 |       "version": "0.2.0",
2891 |       "dev": true
2892 |     },
2893 |     "through": {
2894 |       "version": "2.3.8",
2895 |       "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
2896 |       "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
2897 |       "dev": true
2898 |     },
2899 |     "type-check": {
2900 |       "version": "0.4.0",
2901 |       "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
2902 |       "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
2903 |       "dev": true,
2904 |       "requires": {
2905 |         "prelude-ls": "^1.2.1"
2906 |       }
2907 |     },
2908 |     "type-fest": {
2909 |       "version": "0.20.2",
2910 |       "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
2911 |       "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
2912 |       "dev": true
2913 |     },
2914 |     "unbox-primitive": {
2915 |       "version": "1.0.1",
2916 |       "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz",
2917 |       "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==",
2918 |       "dev": true,
2919 |       "requires": {
2920 |         "function-bind": "^1.1.1",
2921 |         "has-bigints": "^1.0.1",
2922 |         "has-symbols": "^1.0.2",
2923 |         "which-boxed-primitive": "^1.0.2"
2924 |       }
2925 |     },
2926 |     "uri-js": {
2927 |       "version": "4.4.1",
2928 |       "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
2929 |       "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
2930 |       "dev": true,
2931 |       "requires": {
2932 |         "punycode": "^2.1.0"
2933 |       }
2934 |     },
2935 |     "v8-compile-cache": {
2936 |       "version": "2.3.0",
2937 |       "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
2938 |       "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
2939 |       "dev": true
2940 |     },
2941 |     "which": {
2942 |       "version": "2.0.2",
2943 |       "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
2944 |       "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
2945 |       "dev": true,
2946 |       "requires": {
2947 |         "isexe": "^2.0.0"
2948 |       }
2949 |     },
2950 |     "which-boxed-primitive": {
2951 |       "version": "1.0.2",
2952 |       "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
2953 |       "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
2954 |       "dev": true,
2955 |       "requires": {
2956 |         "is-bigint": "^1.0.1",
2957 |         "is-boolean-object": "^1.1.0",
2958 |         "is-number-object": "^1.0.4",
2959 |         "is-string": "^1.0.5",
2960 |         "is-symbol": "^1.0.3"
2961 |       }
2962 |     },
2963 |     "which-collection": {
2964 |       "version": "1.0.1",
2965 |       "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz",
2966 |       "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==",
2967 |       "dev": true,
2968 |       "requires": {
2969 |         "is-map": "^2.0.1",
2970 |         "is-set": "^2.0.1",
2971 |         "is-weakmap": "^2.0.1",
2972 |         "is-weakset": "^2.0.1"
2973 |       }
2974 |     },
2975 |     "which-typed-array": {
2976 |       "version": "1.1.7",
2977 |       "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz",
2978 |       "integrity": "sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==",
2979 |       "dev": true,
2980 |       "requires": {
2981 |         "available-typed-arrays": "^1.0.5",
2982 |         "call-bind": "^1.0.2",
2983 |         "es-abstract": "^1.18.5",
2984 |         "foreach": "^2.0.5",
2985 |         "has-tostringtag": "^1.0.0",
2986 |         "is-typed-array": "^1.1.7"
2987 |       }
2988 |     },
2989 |     "word-wrap": {
2990 |       "version": "1.2.3",
2991 |       "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
2992 |       "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
2993 |       "dev": true
2994 |     },
2995 |     "wrappy": {
2996 |       "version": "1.0.2",
2997 |       "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
2998 |       "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
2999 |       "dev": true
3000 |     }
3001 |   }
3002 | }
3003 | 


--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
 1 | {
 2 |   "name": "suncalc",
 3 |   "version": "1.9.0",
 4 |   "description": "A tiny JavaScript library for calculating sun/moon positions and phases.",
 5 |   "homepage": "https://github.com/mourner/suncalc",
 6 |   "keywords": [
 7 |     "sun",
 8 |     "astronomy",
 9 |     "math",
10 |     "calculation",
11 |     "sunrise",
12 |     "sunset",
13 |     "twilight",
14 |     "moon",
15 |     "illumination"
16 |   ],
17 |   "author": "Vladimir Agafonkin",
18 |   "repository": {
19 |     "type": "git",
20 |     "url": "git://github.com/mourner/suncalc.git"
21 |   },
22 |   "main": "suncalc.js",
23 |   "devDependencies": {
24 |     "eslint": "^8.8.0",
25 |     "eslint-config-mourner": "^2.0.1",
26 |     "tape": "^5.5.0"
27 |   },
28 |   "eslintConfig": {
29 |     "extends": "mourner",
30 |     "rules": {
31 |       "indent": 0,
32 |       "array-bracket-spacing": 0,
33 |       "strict": 0,
34 |       "brace-style": 0
35 |     },
36 |     "env": {
37 |       "amd": true
38 |     }
39 |   },
40 |   "files": [
41 |     "suncalc.js"
42 |   ],
43 |   "scripts": {
44 |     "pretest": "eslint suncalc.js test.js",
45 |     "test": "node test.js",
46 |     "prepublishOnly": "npm test"
47 |   },
48 |   "jshintConfig": {
49 |     "quotmark": "single",
50 |     "trailing": true,
51 |     "unused": true
52 |   }
53 | }
54 | 


--------------------------------------------------------------------------------
/suncalc.js:
--------------------------------------------------------------------------------
  1 | /*
  2 |  (c) 2011-2015, Vladimir Agafonkin
  3 |  SunCalc is a JavaScript library for calculating sun/moon position and light phases.
  4 |  https://github.com/mourner/suncalc
  5 | */
  6 | 
  7 | (function () { 'use strict';
  8 | 
  9 | // shortcuts for easier to read formulas
 10 | 
 11 | var PI   = Math.PI,
 12 |     sin  = Math.sin,
 13 |     cos  = Math.cos,
 14 |     tan  = Math.tan,
 15 |     asin = Math.asin,
 16 |     atan = Math.atan2,
 17 |     acos = Math.acos,
 18 |     rad  = PI / 180;
 19 | 
 20 | // sun calculations are based on http://aa.quae.nl/en/reken/zonpositie.html formulas
 21 | 
 22 | 
 23 | // date/time constants and conversions
 24 | 
 25 | var dayMs = 1000 * 60 * 60 * 24,
 26 |     J1970 = 2440588,
 27 |     J2000 = 2451545;
 28 | 
 29 | function toJulian(date) { return date.valueOf() / dayMs - 0.5 + J1970; }
 30 | function fromJulian(j)  { return new Date((j + 0.5 - J1970) * dayMs); }
 31 | function toDays(date)   { return toJulian(date) - J2000; }
 32 | 
 33 | 
 34 | // general calculations for position
 35 | 
 36 | var e = rad * 23.4397; // obliquity of the Earth
 37 | 
 38 | function rightAscension(l, b) { return atan(sin(l) * cos(e) - tan(b) * sin(e), cos(l)); }
 39 | function declination(l, b)    { return asin(sin(b) * cos(e) + cos(b) * sin(e) * sin(l)); }
 40 | 
 41 | function azimuth(H, phi, dec)  { return atan(sin(H), cos(H) * sin(phi) - tan(dec) * cos(phi)); }
 42 | function altitude(H, phi, dec) { return asin(sin(phi) * sin(dec) + cos(phi) * cos(dec) * cos(H)); }
 43 | 
 44 | function siderealTime(d, lw) { return rad * (280.16 + 360.9856235 * d) - lw; }
 45 | 
 46 | function astroRefraction(h) {
 47 |     if (h < 0) // the following formula works for positive altitudes only.
 48 |         h = 0; // if h = -0.08901179 a div/0 would occur.
 49 | 
 50 |     // formula 16.4 of "Astronomical Algorithms" 2nd edition by Jean Meeus (Willmann-Bell, Richmond) 1998.
 51 |     // 1.02 / tan(h + 10.26 / (h + 5.10)) h in degrees, result in arc minutes -> converted to rad:
 52 |     return 0.0002967 / Math.tan(h + 0.00312536 / (h + 0.08901179));
 53 | }
 54 | 
 55 | // general sun calculations
 56 | 
 57 | function solarMeanAnomaly(d) { return rad * (357.5291 + 0.98560028 * d); }
 58 | 
 59 | function eclipticLongitude(M) {
 60 | 
 61 |     var C = rad * (1.9148 * sin(M) + 0.02 * sin(2 * M) + 0.0003 * sin(3 * M)), // equation of center
 62 |         P = rad * 102.9372; // perihelion of the Earth
 63 | 
 64 |     return M + C + P + PI;
 65 | }
 66 | 
 67 | function sunCoords(d) {
 68 | 
 69 |     var M = solarMeanAnomaly(d),
 70 |         L = eclipticLongitude(M);
 71 | 
 72 |     return {
 73 |         dec: declination(L, 0),
 74 |         ra: rightAscension(L, 0)
 75 |     };
 76 | }
 77 | 
 78 | 
 79 | var SunCalc = {};
 80 | 
 81 | 
 82 | // calculates sun position for a given date and latitude/longitude
 83 | 
 84 | SunCalc.getPosition = function (date, lat, lng) {
 85 | 
 86 |     var lw  = rad * -lng,
 87 |         phi = rad * lat,
 88 |         d   = toDays(date),
 89 | 
 90 |         c  = sunCoords(d),
 91 |         H  = siderealTime(d, lw) - c.ra;
 92 | 
 93 |     return {
 94 |         azimuth: azimuth(H, phi, c.dec),
 95 |         altitude: altitude(H, phi, c.dec)
 96 |     };
 97 | };
 98 | 
 99 | 
100 | // sun times configuration (angle, morning name, evening name)
101 | 
102 | var times = SunCalc.times = [
103 |     [-0.833, 'sunrise',       'sunset'      ],
104 |     [  -0.3, 'sunriseEnd',    'sunsetStart' ],
105 |     [    -6, 'dawn',          'dusk'        ],
106 |     [   -12, 'nauticalDawn',  'nauticalDusk'],
107 |     [   -18, 'nightEnd',      'night'       ],
108 |     [     6, 'goldenHourEnd', 'goldenHour'  ]
109 | ];
110 | 
111 | // adds a custom time to the times config
112 | 
113 | SunCalc.addTime = function (angle, riseName, setName) {
114 |     times.push([angle, riseName, setName]);
115 | };
116 | 
117 | 
118 | // calculations for sun times
119 | 
120 | var J0 = 0.0009;
121 | 
122 | function julianCycle(d, lw) { return Math.round(d - J0 - lw / (2 * PI)); }
123 | 
124 | function approxTransit(Ht, lw, n) { return J0 + (Ht + lw) / (2 * PI) + n; }
125 | function solarTransitJ(ds, M, L)  { return J2000 + ds + 0.0053 * sin(M) - 0.0069 * sin(2 * L); }
126 | 
127 | function hourAngle(h, phi, d) { return acos((sin(h) - sin(phi) * sin(d)) / (cos(phi) * cos(d))); }
128 | function observerAngle(height) { return -2.076 * Math.sqrt(height) / 60; }
129 | 
130 | // returns set time for the given sun altitude
131 | function getSetJ(h, lw, phi, dec, n, M, L) {
132 | 
133 |     var w = hourAngle(h, phi, dec),
134 |         a = approxTransit(w, lw, n);
135 |     return solarTransitJ(a, M, L);
136 | }
137 | 
138 | 
139 | // calculates sun times for a given date, latitude/longitude, and, optionally,
140 | // the observer height (in meters) relative to the horizon
141 | 
142 | SunCalc.getTimes = function (date, lat, lng, height) {
143 | 
144 |     height = height || 0;
145 | 
146 |     var lw = rad * -lng,
147 |         phi = rad * lat,
148 | 
149 |         dh = observerAngle(height),
150 | 
151 |         d = toDays(date),
152 |         n = julianCycle(d, lw),
153 |         ds = approxTransit(0, lw, n),
154 | 
155 |         M = solarMeanAnomaly(ds),
156 |         L = eclipticLongitude(M),
157 |         dec = declination(L, 0),
158 | 
159 |         Jnoon = solarTransitJ(ds, M, L),
160 | 
161 |         i, len, time, h0, Jset, Jrise;
162 | 
163 | 
164 |     var result = {
165 |         solarNoon: fromJulian(Jnoon),
166 |         nadir: fromJulian(Jnoon - 0.5)
167 |     };
168 | 
169 |     for (i = 0, len = times.length; i < len; i += 1) {
170 |         time = times[i];
171 |         h0 = (time[0] + dh) * rad;
172 | 
173 |         Jset = getSetJ(h0, lw, phi, dec, n, M, L);
174 |         Jrise = Jnoon - (Jset - Jnoon);
175 | 
176 |         result[time[1]] = fromJulian(Jrise);
177 |         result[time[2]] = fromJulian(Jset);
178 |     }
179 | 
180 |     return result;
181 | };
182 | 
183 | 
184 | // moon calculations, based on http://aa.quae.nl/en/reken/hemelpositie.html formulas
185 | 
186 | function moonCoords(d) { // geocentric ecliptic coordinates of the moon
187 | 
188 |     var L = rad * (218.316 + 13.176396 * d), // ecliptic longitude
189 |         M = rad * (134.963 + 13.064993 * d), // mean anomaly
190 |         F = rad * (93.272 + 13.229350 * d),  // mean distance
191 | 
192 |         l  = L + rad * 6.289 * sin(M), // longitude
193 |         b  = rad * 5.128 * sin(F),     // latitude
194 |         dt = 385001 - 20905 * cos(M);  // distance to the moon in km
195 | 
196 |     return {
197 |         ra: rightAscension(l, b),
198 |         dec: declination(l, b),
199 |         dist: dt
200 |     };
201 | }
202 | 
203 | SunCalc.getMoonPosition = function (date, lat, lng) {
204 | 
205 |     var lw  = rad * -lng,
206 |         phi = rad * lat,
207 |         d   = toDays(date),
208 | 
209 |         c = moonCoords(d),
210 |         H = siderealTime(d, lw) - c.ra,
211 |         h = altitude(H, phi, c.dec),
212 |         // formula 14.1 of "Astronomical Algorithms" 2nd edition by Jean Meeus (Willmann-Bell, Richmond) 1998.
213 |         pa = atan(sin(H), tan(phi) * cos(c.dec) - sin(c.dec) * cos(H));
214 | 
215 |     h = h + astroRefraction(h); // altitude correction for refraction
216 | 
217 |     return {
218 |         azimuth: azimuth(H, phi, c.dec),
219 |         altitude: h,
220 |         distance: c.dist,
221 |         parallacticAngle: pa
222 |     };
223 | };
224 | 
225 | 
226 | // calculations for illumination parameters of the moon,
227 | // based on http://idlastro.gsfc.nasa.gov/ftp/pro/astro/mphase.pro formulas and
228 | // Chapter 48 of "Astronomical Algorithms" 2nd edition by Jean Meeus (Willmann-Bell, Richmond) 1998.
229 | 
230 | SunCalc.getMoonIllumination = function (date) {
231 | 
232 |     var d = toDays(date || new Date()),
233 |         s = sunCoords(d),
234 |         m = moonCoords(d),
235 | 
236 |         sdist = 149598000, // distance from Earth to Sun in km
237 | 
238 |         phi = acos(sin(s.dec) * sin(m.dec) + cos(s.dec) * cos(m.dec) * cos(s.ra - m.ra)),
239 |         inc = atan(sdist * sin(phi), m.dist - sdist * cos(phi)),
240 |         angle = atan(cos(s.dec) * sin(s.ra - m.ra), sin(s.dec) * cos(m.dec) -
241 |                 cos(s.dec) * sin(m.dec) * cos(s.ra - m.ra));
242 | 
243 |     return {
244 |         fraction: (1 + cos(inc)) / 2,
245 |         phase: 0.5 + 0.5 * inc * (angle < 0 ? -1 : 1) / Math.PI,
246 |         angle: angle
247 |     };
248 | };
249 | 
250 | 
251 | function hoursLater(date, h) {
252 |     return new Date(date.valueOf() + h * dayMs / 24);
253 | }
254 | 
255 | // calculations for moon rise/set times are based on http://www.stargazing.net/kepler/moonrise.html article
256 | 
257 | SunCalc.getMoonTimes = function (date, lat, lng, inUTC) {
258 |     var t = new Date(date);
259 |     if (inUTC) t.setUTCHours(0, 0, 0, 0);
260 |     else t.setHours(0, 0, 0, 0);
261 | 
262 |     var hc = 0.133 * rad,
263 |         h0 = SunCalc.getMoonPosition(t, lat, lng).altitude - hc,
264 |         h1, h2, rise, set, a, b, xe, ye, d, roots, x1, x2, dx;
265 | 
266 |     // go in 2-hour chunks, each time seeing if a 3-point quadratic curve crosses zero (which means rise or set)
267 |     for (var i = 1; i <= 24; i += 2) {
268 |         h1 = SunCalc.getMoonPosition(hoursLater(t, i), lat, lng).altitude - hc;
269 |         h2 = SunCalc.getMoonPosition(hoursLater(t, i + 1), lat, lng).altitude - hc;
270 | 
271 |         a = (h0 + h2) / 2 - h1;
272 |         b = (h2 - h0) / 2;
273 |         xe = -b / (2 * a);
274 |         ye = (a * xe + b) * xe + h1;
275 |         d = b * b - 4 * a * h1;
276 |         roots = 0;
277 | 
278 |         if (d >= 0) {
279 |             dx = Math.sqrt(d) / (Math.abs(a) * 2);
280 |             x1 = xe - dx;
281 |             x2 = xe + dx;
282 |             if (Math.abs(x1) <= 1) roots++;
283 |             if (Math.abs(x2) <= 1) roots++;
284 |             if (x1 < -1) x1 = x2;
285 |         }
286 | 
287 |         if (roots === 1) {
288 |             if (h0 < 0) rise = i + x1;
289 |             else set = i + x1;
290 | 
291 |         } else if (roots === 2) {
292 |             rise = i + (ye < 0 ? x2 : x1);
293 |             set = i + (ye < 0 ? x1 : x2);
294 |         }
295 | 
296 |         if (rise && set) break;
297 | 
298 |         h0 = h2;
299 |     }
300 | 
301 |     var result = {};
302 | 
303 |     if (rise) result.rise = hoursLater(t, rise);
304 |     if (set) result.set = hoursLater(t, set);
305 | 
306 |     if (!rise && !set) result[ye > 0 ? 'alwaysUp' : 'alwaysDown'] = true;
307 | 
308 |     return result;
309 | };
310 | 
311 | 
312 | // export as Node module / AMD module / browser variable
313 | if (typeof exports === 'object' && typeof module !== 'undefined') module.exports = SunCalc;
314 | else if (typeof define === 'function' && define.amd) define(SunCalc);
315 | else window.SunCalc = SunCalc;
316 | 
317 | }());
318 | 


--------------------------------------------------------------------------------
/test.js:
--------------------------------------------------------------------------------
 1 | 
 2 | var SunCalc = require('./suncalc'),
 3 |     t = require('tape');
 4 | 
 5 | function near(val1, val2, margin) {
 6 |     return Math.abs(val1 - val2) < (margin || 1E-15);
 7 | }
 8 | 
 9 | var date = new Date('2013-03-05UTC'),
10 |     lat = 50.5,
11 |     lng = 30.5,
12 |     height = 2000;
13 | 
14 | var testTimes = {
15 |     solarNoon: '2013-03-05T10:10:57Z',
16 |     nadir: '2013-03-04T22:10:57Z',
17 |     sunrise: '2013-03-05T04:34:56Z',
18 |     sunset: '2013-03-05T15:46:57Z',
19 |     sunriseEnd: '2013-03-05T04:38:19Z',
20 |     sunsetStart: '2013-03-05T15:43:34Z',
21 |     dawn: '2013-03-05T04:02:17Z',
22 |     dusk: '2013-03-05T16:19:36Z',
23 |     nauticalDawn: '2013-03-05T03:24:31Z',
24 |     nauticalDusk: '2013-03-05T16:57:22Z',
25 |     nightEnd: '2013-03-05T02:46:17Z',
26 |     night: '2013-03-05T17:35:36Z',
27 |     goldenHourEnd: '2013-03-05T05:19:01Z',
28 |     goldenHour: '2013-03-05T15:02:52Z'
29 | };
30 | 
31 | var heightTestTimes = {
32 |     solarNoon: '2013-03-05T10:10:57Z',
33 |     nadir: '2013-03-04T22:10:57Z',
34 |     sunrise: '2013-03-05T04:25:07Z',
35 |     sunset: '2013-03-05T15:56:46Z'
36 | };
37 | 
38 | t.test('getPosition returns azimuth and altitude for the given time and location', function (t) {
39 |     var sunPos = SunCalc.getPosition(date, lat, lng);
40 | 
41 |     t.ok(near(sunPos.azimuth, -2.5003175907168385), 'azimuth');
42 |     t.ok(near(sunPos.altitude, -0.7000406838781611), 'altitude');
43 |     t.end();
44 | });
45 | 
46 | t.test('getTimes returns sun phases for the given date and location', function (t) {
47 |     var times = SunCalc.getTimes(date, lat, lng);
48 | 
49 |     for (var i in testTimes) {
50 |         t.equal(new Date(testTimes[i]).toUTCString(), times[i].toUTCString(), i);
51 |     }
52 |     t.end();
53 | });
54 | 
55 | t.test('getTimes adjusts sun phases when additionally given the observer height', function (t) {
56 |     var times = SunCalc.getTimes(date, lat, lng, height);
57 | 
58 |     for (var i in heightTestTimes) {
59 |         t.equal(new Date(heightTestTimes[i]).toUTCString(), times[i].toUTCString(), i);
60 |     }
61 |     t.end();
62 | });
63 | 
64 | t.test('getMoonPosition returns moon position data given time and location', function (t) {
65 |     var moonPos = SunCalc.getMoonPosition(date, lat, lng);
66 | 
67 |     t.ok(near(moonPos.azimuth, -0.9783999522438226), 'azimuth');
68 |     t.ok(near(moonPos.altitude, 0.014551482243892251), 'altitude');
69 |     t.ok(near(moonPos.distance, 364121.37256256194), 'distance');
70 |     t.end();
71 | });
72 | 
73 | t.test('getMoonIllumination returns fraction and angle of moon\'s illuminated limb and phase', function (t) {
74 |     var moonIllum = SunCalc.getMoonIllumination(date);
75 | 
76 |     t.ok(near(moonIllum.fraction, 0.4848068202456373), 'fraction');
77 |     t.ok(near(moonIllum.phase, 0.7548368838538762), 'phase');
78 |     t.ok(near(moonIllum.angle, 1.6732942678578346), 'angle');
79 |     t.end();
80 | });
81 | 
82 | t.test('getMoonTimes returns moon rise and set times', function (t) {
83 |     var moonTimes = SunCalc.getMoonTimes(new Date('2013-03-04UTC'), lat, lng, true);
84 | 
85 |     t.equal(moonTimes.rise.toUTCString(), 'Mon, 04 Mar 2013 23:54:29 GMT');
86 |     t.equal(moonTimes.set.toUTCString(), 'Mon, 04 Mar 2013 07:47:58 GMT');
87 | 
88 |     t.end();
89 | });
90 | 


--------------------------------------------------------------------------------