├── jest.config.js ├── dist ├── zfxy_tilehash.d.ts ├── types.d.ts ├── hilbert.d.ts ├── hilbert_tilehash.d.ts ├── tilebelt.d.ts ├── zfxy.d.ts └── index.d.ts ├── .editorconfig ├── src ├── types.ts ├── zfxy_tilehash.ts ├── tilebelt.ts ├── hilbert_tilehash.ts ├── hilbert.ts ├── zfxy.ts └── index.ts ├── tsconfig.json ├── rollup.config.js ├── tests ├── zfxy.test.ts ├── hilbert.test.ts └── index.test.ts ├── .github └── workflows │ ├── ci.yml │ └── pages.yml ├── LICENSE ├── .gitignore ├── package.json ├── README.md └── yarn.lock /jest.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */ 2 | module.exports = { 3 | preset: 'ts-jest', 4 | testEnvironment: 'node', 5 | maxWorkers: 1, 6 | }; 7 | -------------------------------------------------------------------------------- /dist/zfxy_tilehash.d.ts: -------------------------------------------------------------------------------- 1 | import { ZFXYTile } from "./zfxy"; 2 | export declare function parseZFXYTilehash(th: string): ZFXYTile; 3 | export declare function generateTilehash(tile: ZFXYTile): string; 4 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | end_of_line = lf 7 | charset = utf-8 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | indent_size = 4 13 | -------------------------------------------------------------------------------- /src/types.ts: -------------------------------------------------------------------------------- 1 | export type LngLatWithAltitude = { 2 | /** Longitude, in degrees */ 3 | lng: number 4 | /** Latitude, in degrees */ 5 | lat: number 6 | /** Altitude from the geoid, in meters */ 7 | alt?: number 8 | } 9 | 10 | export type LngLat = {lng: number, lat: number}; 11 | -------------------------------------------------------------------------------- /dist/types.d.ts: -------------------------------------------------------------------------------- 1 | export declare type LngLatWithAltitude = { 2 | /** Longitude, in degrees */ 3 | lng: number; 4 | /** Latitude, in degrees */ 5 | lat: number; 6 | /** Altitude from the geoid, in meters */ 7 | alt?: number; 8 | }; 9 | export declare type LngLat = { 10 | lng: number; 11 | lat: number; 12 | }; 13 | -------------------------------------------------------------------------------- /dist/hilbert.d.ts: -------------------------------------------------------------------------------- 1 | export declare function encodeHilbert3D(x: number, y: number, z: number, bits: number): bigint; 2 | export declare function decodeHilbert3D(index: bigint, bits: number): [number, number, number]; 3 | export declare function encodeMorton3D(x: number, y: number, z: number): bigint; 4 | export declare function decodeMorton3D(morton: bigint): [number, number, number]; 5 | -------------------------------------------------------------------------------- /dist/hilbert_tilehash.d.ts: -------------------------------------------------------------------------------- 1 | import { ZFXYTile } from "./zfxy"; 2 | export declare function generateHilbertIndex(tile: ZFXYTile): bigint; 3 | export declare function parseHilbertIndex(hilbertDistance: bigint, z: number): ZFXYTile; 4 | export declare function generateHilbertTilehash(hilbertIndex: bigint, order: number): string; 5 | export declare function parseHilbertTilehash(th: string): undefined | ZFXYTile; 6 | -------------------------------------------------------------------------------- /dist/tilebelt.d.ts: -------------------------------------------------------------------------------- 1 | import { BBox } from "geojson"; 2 | export declare function getBboxZoom(bbox: BBox): number; 3 | /** 4 | * Get the smallest tile to cover a bbox 5 | */ 6 | export declare function bboxToTile(bboxCoords: BBox, minZoom?: number): Array; 7 | /** 8 | * Get the tile for a point at a specified zoom level 9 | */ 10 | export declare function pointToTile(lon: number, lat: number, z: number): number[]; 11 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "outDir": "./dist/", 4 | "sourceMap": true, 5 | "noImplicitAny": true, 6 | "module": "es2020", 7 | "target": "es2020", 8 | "allowJs": true, 9 | "moduleResolution": "node", 10 | "allowSyntheticDefaultImports": true, 11 | "declaration": true, 12 | "downlevelIteration": true, 13 | "declarationDir": "./dist/" 14 | }, 15 | "include": [ 16 | "src/**/*.ts" 17 | ], 18 | "exclude": [ 19 | "./dist/", 20 | "./node_modules/" 21 | ] 22 | } 23 | -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | import resolve from '@rollup/plugin-node-resolve'; 2 | import commonjs from '@rollup/plugin-commonjs'; 3 | import typescript from 'rollup-plugin-typescript2'; 4 | 5 | const packageJson = require('./package.json'); 6 | 7 | const config = { 8 | input: 'src/index.ts', 9 | output: [ 10 | { 11 | file: packageJson.main, 12 | format: 'umd', 13 | sourcemap: true, 14 | name: 'SpatialId', 15 | }, 16 | { 17 | file: packageJson.module, 18 | format: 'esm', 19 | sourcemap: true, 20 | }, 21 | ], 22 | plugins: [ 23 | resolve(), 24 | commonjs({ 25 | requireReturnsDefault: "auto", 26 | }), 27 | typescript({ useTsconfigDeclarationDir: true }), 28 | ], 29 | }; 30 | export default config; 31 | -------------------------------------------------------------------------------- /tests/zfxy.test.ts: -------------------------------------------------------------------------------- 1 | import * as zfxy from "../src/zfxy"; 2 | 3 | describe('zfxy', () => { 4 | describe('getCenterLngLatAlt', () => { 5 | it('works', () => { 6 | const center1 = zfxy.getCenterLngLatAlt({z: 25, f: 0, x: 16777216, y: 16777216}); 7 | expect(center1.alt).toStrictEqual(0.5); 8 | 9 | const center2 = zfxy.getCenterLngLatAlt({z: 25, f: 1, x: 16777216, y: 16777216}); 10 | expect(center2.alt).toStrictEqual(1.5); 11 | 12 | const center3 = zfxy.getCenterLngLatAlt({z: 20, f: 0, x: 524288, y: 524288}); 13 | expect(center3.alt).toStrictEqual(16); 14 | 15 | const center4 = zfxy.getCenterLngLatAlt({z: 20, f: 1, x: 524288, y: 524288}); 16 | expect(center4.alt).toStrictEqual(32 + 16); 17 | 18 | const center5 = zfxy.getCenterLngLatAlt({z: 20, f: 10, x: 524288, y: 524288}); 19 | expect(center5.alt).toStrictEqual((32 * 10) + 16); 20 | }); 21 | }); 22 | }); 23 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: 4 | push: 5 | branches: ['*'] 6 | tags: ['*'] 7 | pull_request: 8 | branches: [main] 9 | 10 | jobs: 11 | build: 12 | runs-on: ubuntu-latest 13 | steps: 14 | - uses: actions/checkout@v2 15 | - name: Use Node.js 16.x 16 | uses: actions/setup-node@v1 17 | with: 18 | node-version: 16.x 19 | - name: Cache node_modules 20 | uses: actions/cache@v2 21 | with: 22 | path: node_modules 23 | key: modules-cache-v1-${{ runner.os }}-${{ hashFiles('yarn.lock') }} 24 | 25 | - run: yarn install 26 | - run: yarn test 27 | 28 | # - run: yarn build 29 | 30 | # - name: save build artifacts 31 | # uses: actions/upload-artifact@v2 32 | # if: "!failure()" 33 | # with: 34 | # retention-days: 1 35 | # name: dist 36 | # path: | 37 | # dist/ 38 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright 2022 Geolonia Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 10 | -------------------------------------------------------------------------------- /tests/hilbert.test.ts: -------------------------------------------------------------------------------- 1 | import { encodeHilbert3D, decodeHilbert3D } from "../src/hilbert"; 2 | 3 | describe('hilbert', () => { 4 | describe(`round-trip hilbert transformation`, () => { 5 | const inputs: [number, [number, number, number]][] = [ 6 | [1, [0, 0, 0]], 7 | [1, [1, 1, 1]], 8 | [2, [0, 0, 0]], 9 | [2, [3, 3, 3]], 10 | [25, [0, 0, 0]], // min of zoom 25 11 | [25, [33554431, 33554431, 33554431]], // max of zoom 25 12 | ]; 13 | for (let i = 0; i < 100; i++) { 14 | const order = Math.floor(Math.random() * 25 + 1); 15 | const coordMax = Math.pow(2, order) - 1; 16 | const x = Math.floor(Math.random() * coordMax); 17 | const y = Math.floor(Math.random() * coordMax); 18 | const z = Math.floor(Math.random() * coordMax); 19 | inputs.push([order, [x, y, z]]); 20 | } 21 | 22 | for (const [order, point] of inputs) { 23 | const [x, y, z] = point; 24 | it(`h${order}, (${x}, ${y}, ${z})`, () => { 25 | const idx = encodeHilbert3D(x, y, z, order); 26 | const invPoint = decodeHilbert3D(idx, order); 27 | expect(invPoint).toEqual(point); 28 | }); 29 | } 30 | }); 31 | }); 32 | -------------------------------------------------------------------------------- /src/zfxy_tilehash.ts: -------------------------------------------------------------------------------- 1 | import { ZFXYTile, getChildren, getParent } from "./zfxy"; 2 | 3 | export function parseZFXYTilehash(th: string): ZFXYTile { 4 | let negativeF = false; 5 | if (th[0] === '-') { 6 | negativeF = true; 7 | th = th.substring(1); 8 | } 9 | let children = getChildren(); 10 | let lastChild: ZFXYTile; 11 | for (const c of th) { 12 | lastChild = {...children[parseInt(c, 10) - 1]}; 13 | children = getChildren(lastChild); 14 | } 15 | if (negativeF) { 16 | lastChild.f = -lastChild.f; 17 | } 18 | return lastChild; 19 | } 20 | 21 | export function generateTilehash(tile: ZFXYTile): string { 22 | let {f,x,y,z} = tile; 23 | const originalF = f; 24 | let out = ''; 25 | while (z>0) { 26 | const thisTile: ZFXYTile = { f: Math.abs(f), x: x, y: y, z: z }; 27 | const parent = getParent(thisTile); 28 | const childrenOfParent = getChildren(parent); 29 | const positionInParent = childrenOfParent.findIndex( 30 | (child) => child.f === Math.abs(f) && child.x === x && child.y === y && child.z === z 31 | ); 32 | out = (positionInParent + 1).toString() + out; 33 | f = parent.f; 34 | x = parent.x; 35 | y = parent.y; 36 | z = parent.z; 37 | } 38 | return (originalF < 0 ? '-' : '') + out; 39 | } 40 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Runtime data 9 | pids 10 | *.pid 11 | *.seed 12 | *.pid.lock 13 | 14 | # Directory for instrumented libs generated by jscoverage/JSCover 15 | lib-cov 16 | 17 | # Coverage directory used by tools like istanbul 18 | coverage 19 | 20 | # nyc test coverage 21 | .nyc_output 22 | 23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 24 | .grunt 25 | 26 | # Bower dependency directory (https://bower.io/) 27 | bower_components 28 | 29 | # node-waf configuration 30 | .lock-wscript 31 | 32 | # Compiled binary addons (https://nodejs.org/api/addons.html) 33 | build/Release 34 | 35 | # Dependency directories 36 | node_modules/ 37 | jspm_packages/ 38 | 39 | # TypeScript v1 declaration files 40 | typings/ 41 | 42 | # Optional npm cache directory 43 | .npm 44 | 45 | # Optional eslint cache 46 | .eslintcache 47 | 48 | # Optional REPL history 49 | .node_repl_history 50 | 51 | # Output of 'npm pack' 52 | *.tgz 53 | 54 | # Yarn Integrity file 55 | .yarn-integrity 56 | 57 | # dotenv environment variables file 58 | .env 59 | 60 | # next.js build output 61 | .next 62 | 63 | # include compiled output for now so you can npm install directly from git 64 | # dist 65 | node_modules 66 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@spatial-id/javascript-sdk", 3 | "version": "0.0.0", 4 | "description": "The reference implementation of the Spatial ID Object Model Specification for JavaScript or TypeScript consumers.", 5 | "main": "dist/index.js", 6 | "module": "dist/index.es.js", 7 | "types": "dist/index.d.ts", 8 | "files": [ 9 | "README.md", 10 | "LICENSE", 11 | "package.json", 12 | "dist/**/*", 13 | "dist/*" 14 | ], 15 | "scripts": { 16 | "build": "rollup -c", 17 | "test": "jest" 18 | }, 19 | "repository": { 20 | "type": "git", 21 | "url": "git+https://github.com/spatial-id/javascript-sdk.git" 22 | }, 23 | "keywords": [], 24 | "author": "Geolonia (https://geolonia.com)", 25 | "license": "MIT", 26 | "bugs": { 27 | "url": "https://github.com/spatial-id/javascript-sdk/issues" 28 | }, 29 | "homepage": "https://github.com/spatial-id/javascript-sdk#readme", 30 | "devDependencies": { 31 | "@rollup/plugin-commonjs": "^22.0.0", 32 | "@rollup/plugin-node-resolve": "^13.2.1", 33 | "@turf/bbox": "^6.5.0", 34 | "@turf/boolean-intersects": "^6.5.0", 35 | "@types/geojson": "^7946.0.8", 36 | "@types/jest": "^27.4.1", 37 | "jest": "^27.5.1", 38 | "rollup": "^2.70.2", 39 | "rollup-plugin-typescript2": "^0.31.2", 40 | "ts-jest": "^27.1.4", 41 | "typescript": "^4.6.3" 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /.github/workflows/pages.yml: -------------------------------------------------------------------------------- 1 | # Simple workflow for deploying static content to GitHub Pages 2 | name: Deploy static content to Pages 3 | 4 | on: 5 | push: 6 | branches: ['main'] 7 | 8 | # Allows you to run this workflow manually from the Actions tab 9 | workflow_dispatch: 10 | 11 | # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages 12 | permissions: 13 | contents: read 14 | pages: write 15 | id-token: write 16 | 17 | # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. 18 | # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. 19 | concurrency: 20 | group: "pages" 21 | cancel-in-progress: false 22 | 23 | jobs: 24 | # Single deploy job since we're just deploying 25 | deploy: 26 | environment: 27 | name: github-pages 28 | url: ${{ steps.deployment.outputs.page_url }} 29 | runs-on: ubuntu-latest 30 | steps: 31 | - name: Checkout 32 | uses: actions/checkout@v3 33 | - name: Setup Pages 34 | uses: actions/configure-pages@v3 35 | - name: Upload artifact 36 | uses: actions/upload-pages-artifact@v1 37 | with: 38 | # Upload dist directory 39 | path: './dist' 40 | - name: Deploy to GitHub Pages 41 | id: deployment 42 | uses: actions/deploy-pages@v2 43 | -------------------------------------------------------------------------------- /dist/zfxy.d.ts: -------------------------------------------------------------------------------- 1 | import { LngLat, LngLatWithAltitude } from "./types"; 2 | export declare type ZFXYTile = { 3 | z: number; 4 | f: number; 5 | x: number; 6 | y: number; 7 | }; 8 | export declare function isZFXYTile(tile: any): tile is ZFXYTile; 9 | export declare const ZFXY_1M_ZOOM_BASE: 25; 10 | export declare const ZFXY_ROOT_TILE: ZFXYTile; 11 | export declare function getParent(tile: ZFXYTile, steps?: number): ZFXYTile; 12 | export declare function getChildren(tile?: ZFXYTile): ZFXYTile[]; 13 | export declare function getSurrounding(tile?: ZFXYTile): ZFXYTile[]; 14 | export declare function parseZFXYString(str: string): ZFXYTile | undefined; 15 | /** Returns the lng,lat of the northwest corner of the provided tile */ 16 | export declare function getLngLat(tile: ZFXYTile): LngLat; 17 | export declare function getCenterLngLat(tile: ZFXYTile): LngLat; 18 | export declare function getCenterLngLatAlt(tile: ZFXYTile): LngLatWithAltitude; 19 | export declare function getBBox(tile: ZFXYTile): [LngLat, LngLat]; 20 | /** Returns the floor of the voxel, in meters */ 21 | export declare function getFloor(tile: ZFXYTile): number; 22 | export interface CalculateZFXYInput { 23 | lat: number; 24 | lng: number; 25 | alt?: number; 26 | zoom: number; 27 | } 28 | export declare function calculateZFXY(input: CalculateZFXYInput): ZFXYTile; 29 | /** 30 | * Fix a tile that has out-of-bounds coordinates by: 31 | * for the x and y coordinates: wrapping the coordinates around. 32 | * for the f coordinate: limiting to maximum or minimum. 33 | */ 34 | export declare function zfxyWraparound(tile: ZFXYTile): ZFXYTile; 35 | -------------------------------------------------------------------------------- /src/tilebelt.ts: -------------------------------------------------------------------------------- 1 | import { BBox } from "geojson"; 2 | 3 | const d2r = Math.PI / 180, 4 | r2d = 180 / Math.PI, 5 | MAX_ZOOM = 28; 6 | 7 | export function getBboxZoom(bbox: BBox) { 8 | for (let z = 0; z < MAX_ZOOM; z++) { 9 | const mask = 1 << (32 - (z + 1)); 10 | if (((bbox[0] & mask) !== (bbox[2] & mask)) || 11 | ((bbox[1] & mask) !== (bbox[3] & mask))) { 12 | return z; 13 | } 14 | } 15 | 16 | return MAX_ZOOM; 17 | } 18 | 19 | /** 20 | * Get the smallest tile to cover a bbox 21 | */ 22 | export function bboxToTile(bboxCoords: BBox, minZoom?: number): Array { 23 | const min = pointToTile(bboxCoords[0], bboxCoords[1], 32); 24 | const max = pointToTile(bboxCoords[2], bboxCoords[3], 32); 25 | const bbox: BBox = [min[0], min[1], max[0], max[1]]; 26 | 27 | const z = Math.min(getBboxZoom(bbox), typeof minZoom !== 'undefined' ? minZoom : MAX_ZOOM); 28 | if (z === 0) return [0, 0, 0]; 29 | const x = bbox[0] >>> (32 - z); 30 | const y = bbox[1] >>> (32 - z); 31 | return [x, y, z]; 32 | } 33 | 34 | /** 35 | * Get the tile for a point at a specified zoom level 36 | */ 37 | export function pointToTile(lon: number, lat: number, z: number) { 38 | var tile = pointToTileFraction(lon, lat, z); 39 | tile[0] = Math.floor(tile[0]); 40 | tile[1] = Math.floor(tile[1]); 41 | return tile; 42 | } 43 | 44 | /** 45 | * Get the precise fractional tile location for a point at a zoom level 46 | */ 47 | function pointToTileFraction(lon: number, lat: number, z: number) { 48 | var sin = Math.sin(lat * d2r), 49 | z2 = Math.pow(2, z), 50 | x = z2 * (lon / 360 + 0.5), 51 | y = z2 * (0.5 - 0.25 * Math.log((1 + sin) / (1 - sin)) / Math.PI); 52 | 53 | // Wrap Tile X 54 | x = x % z2; 55 | if (x < 0) x = x + z2; 56 | return [x, y, z]; 57 | } 58 | -------------------------------------------------------------------------------- /src/hilbert_tilehash.ts: -------------------------------------------------------------------------------- 1 | // Functions to encode/decode 3D xyz coordinates to/from a Hilbert distance 2 | // Uses Skilling's algorithm because it was the easiest to adapt to 3D coordinates 3 | // (it's actually able to handle any number of dimensions, but we only need 3 right now) 4 | 5 | import { ZFXYTile } from "./zfxy"; 6 | import { encodeHilbert3D, decodeHilbert3D } from "./hilbert"; 7 | 8 | export function generateHilbertIndex(tile: ZFXYTile): bigint { 9 | // normalize the f attribute to be positive 10 | // this allows negative f values to be encoded in the hilbert index 11 | const f = tile.z > 0 ? tile.f + (2 ** (tile.z - 1)) : 0; 12 | return encodeHilbert3D(tile.x, tile.y, f, tile.z); 13 | } 14 | 15 | export function parseHilbertIndex(hilbertDistance: bigint, z: number): ZFXYTile { 16 | if (z === 0) { return { z: 0, f: 0, x: 0, y: 0 }; } 17 | 18 | const [x, y, originalF] = decodeHilbert3D(hilbertDistance, z); 19 | // denormalize the f attribute 20 | const f = originalF - (2 ** (z - 1)); 21 | return { f, x, y, z }; 22 | } 23 | 24 | export function generateHilbertTilehash(hilbertIndex: bigint, order: number): string { 25 | // radix 8 compresses 3 bits into 1 character (0-7) 26 | // we want 1-8, so we add 1 to each digit of the string 27 | return 'H' + hilbertIndex.toString(8).padStart(order, '0').split('').map((c) => (parseInt(c) + 1).toString()).join(''); 28 | } 29 | 30 | export function parseHilbertTilehash(th: string): undefined | ZFXYTile { 31 | if (th[0] !== 'H') { 32 | return undefined; 33 | } 34 | // need to subtract 1 from each digit to convert back to radix 8 35 | const thDigits = th.substring(1).split('').map((c) => (parseInt(c) - 1).toString()).join(''); 36 | const hilbertDistance = BigInt("0o" + thDigits); // thDigits is in radix 8, so we can parse it as an octal 37 | return parseHilbertIndex(hilbertDistance, thDigits.length); 38 | } 39 | -------------------------------------------------------------------------------- /dist/index.d.ts: -------------------------------------------------------------------------------- 1 | import { LngLatWithAltitude } from "./types"; 2 | import { ZFXYTile } from "./zfxy"; 3 | import type { Geometry, Polygon } from "geojson"; 4 | export declare class Space { 5 | center: LngLatWithAltitude; 6 | alt: number; 7 | zoom: number; 8 | zfxy: ZFXYTile; 9 | id: string; 10 | zfxyStr: string; 11 | tilehash: string; 12 | hilbertIndex: bigint; 13 | hilbertTilehash: string; 14 | /** 15 | * Create a new Space 16 | * 17 | * @param input A LngLatWithAltitude or string containing either a ZFXY or tilehash-encoded ZFXY. 18 | * @param zoom Optional. Defaults to 25 when `input` is LngLatWithAltitude. Ignored when ZXFY or tilehash is provided. 19 | */ 20 | constructor(input: LngLatWithAltitude | ZFXYTile | string, zoom?: number); 21 | up(by?: number): Space; 22 | down(by?: number): Space; 23 | north(by?: number): Space; 24 | south(by?: number): Space; 25 | east(by?: number): Space; 26 | west(by?: number): Space; 27 | move(by: Partial>): Space; 28 | parent(atZoom?: number): Space; 29 | children(): Space[]; 30 | /** Return an array of Space objects at the same zoom level that surround this Space 31 | * object. This method does not return the Space object itself, so the array will 32 | * contain 26 Space objects. 33 | */ 34 | surroundings(): Space[]; 35 | /** Returns true if a point lies within this Space. If the position's altitude is not 36 | * specified, it is ignored from the calculation. 37 | */ 38 | contains(position: LngLatWithAltitude): boolean; 39 | /** Calculates the polygon of this Space and returns a 2D GeoJSON Polygon. */ 40 | toGeoJSON(): Polygon; 41 | /** Calculates the 3D polygon of this Space and returns the vertices of that polygon. */ 42 | vertices3d(): [number, number, number][]; 43 | static getSpaceById(id: string, zoom?: number): Space; 44 | static getSpaceByLocation(loc: LngLatWithAltitude, zoom?: number): Space; 45 | static getSpaceByZFXY(zfxyStr: string): Space; 46 | /** Calculates the smallest spatial ID to fully contain the polygon. Currently only supports 2D polygons. */ 47 | static boundingSpaceForGeometry(geom: Geometry, minZoom?: number): Space; 48 | /** Calculate an array of spaces that make up the polygon. Currently only supports 2D polygons. */ 49 | static spacesForGeometry(geom: Geometry, zoom: number): Space[]; 50 | private _regenerateAttributesFromZFXY; 51 | } 52 | -------------------------------------------------------------------------------- /src/hilbert.ts: -------------------------------------------------------------------------------- 1 | // Function 1: Encode (x,y,z) to Hilbert curve index 2 | export function encodeHilbert3D(x: number, y: number, z: number, bits: number): bigint { 3 | let morton = encodeMorton3D(x, y, z); 4 | return mortonToHilbertN(morton, bits); 5 | } 6 | 7 | // Function 2: Decode Hilbert curve index to (x,y,z) 8 | export function decodeHilbert3D(index: bigint, bits: number): [number, number, number] { 9 | const morton = hilbertToMortonN(index, bits); 10 | return decodeMorton3D(morton); 11 | } 12 | 13 | // Helper functions: Encode/decode Morton curve using magic bits 14 | // This is a 3D Morton curve implementation, adapted from https://stackoverflow.com/questions/1024754/how-to-compute-a-3d-morton-number-interleave-the-bits-of-3-ints 15 | export function encodeMorton3D(x: number, y: number, z: number): bigint { 16 | let morton = 0n; 17 | morton = splitBy3(x) | (splitBy3(y) << 1n) | (splitBy3(z) << 2n); 18 | return morton; 19 | } 20 | 21 | export function decodeMorton3D(morton: bigint): [number, number, number] { 22 | let x = compactBy3(morton); 23 | let y = compactBy3(morton >> 1n); 24 | let z = compactBy3(morton >> 2n); 25 | return [x, y, z]; 26 | } 27 | 28 | function splitBy3(a: number): bigint { 29 | let x = BigInt(a) & BigInt('0x3ffffffffff'); 30 | x = (x | x << 64n) & BigInt('0x3ff0000000000000000ffffffff'); 31 | x = (x | x << 32n) & BigInt('0x3ff00000000ffff00000000ffff'); 32 | x = (x | x << 16n) & BigInt('0x30000ff0000ff0000ff0000ff0000ff'); 33 | x = (x | x << 8n) & BigInt('0x300f00f00f00f00f00f00f00f00f00f'); 34 | x = (x | x << 4n) & BigInt('0x30c30c30c30c30c30c30c30c30c30c3'); 35 | x = (x | x << 2n) & BigInt('0x9249249249249249249249249249249'); 36 | return x; 37 | } 38 | 39 | function compactBy3(a: bigint): number { 40 | let x = a & BigInt('0x9249249249249249249249249249249'); 41 | x = (x | x >> 2n) & BigInt('0x30c30c30c30c30c30c30c30c30c30c3'); 42 | x = (x | x >> 4n) & BigInt('0x300f00f00f00f00f00f00f00f00f00f'); 43 | x = (x | x >> 8n) & BigInt('0x30000ff0000ff0000ff0000ff0000ff'); 44 | x = (x | x >> 16n) & BigInt('0x3ff00000000ffff00000000ffff'); 45 | x = (x | x >> 32n) & BigInt('0x3ff0000000000000000ffffffff'); 46 | x = (x | x >> 64n) & BigInt('0x3ffffffffff'); 47 | return Number(x); 48 | } 49 | 50 | // Helper functions: Translate morton/hilbert codes using a simple lookup table 51 | // This code has been adapted from http://threadlocalmutex.com/?p=149 52 | const mortonToHilbertTable: number[] = [ 53 | 48, 33, 27, 34, 47, 78, 28, 77, 54 | 66, 29, 51, 52, 65, 30, 72, 63, 55 | 76, 95, 75, 24, 53, 54, 82, 81, 56 | 18, 3, 17, 80, 61, 4, 62, 15, 57 | 0, 59, 71, 60, 49, 50, 86, 85, 58 | 84, 83, 5, 90, 79, 56, 6, 89, 59 | 32, 23, 1, 94, 11, 12, 2, 93, 60 | 42, 41, 13, 14, 35, 88, 36, 31, 61 | 92, 37, 87, 38, 91, 74, 8, 73, 62 | 46, 45, 9, 10, 7, 20, 64, 19, 63 | 70, 25, 39, 16, 69, 26, 44, 43, 64 | 22, 55, 21, 68, 57, 40, 58, 67, 65 | ]; 66 | 67 | const hilbertToMortonTable: number[] = [ 68 | 48, 33, 35, 26, 30, 79, 77, 44, 69 | 78, 68, 64, 50, 51, 25, 29, 63, 70 | 27, 87, 86, 74, 72, 52, 53, 89, 71 | 83, 18, 16, 1, 5, 60, 62, 15, 72 | 0, 52, 53, 57, 59, 87, 86, 66, 73 | 61, 95, 91, 81, 80, 2, 6, 76, 74 | 32, 2, 6, 12, 13, 95, 91, 17, 75 | 93, 41, 40, 36, 38, 10, 11, 31, 76 | 14, 79, 77, 92, 88, 33, 35, 82, 77 | 70, 10, 11, 23, 21, 41, 40, 4, 78 | 19, 25, 29, 47, 46, 68, 64, 34, 79 | 45, 60, 62, 71, 67, 18, 16, 49, 80 | ]; 81 | 82 | function transformCurve(inValue: bigint, bits: number, lookupTable: number[]): bigint { 83 | let transform = 0; 84 | let out = 0n; 85 | 86 | for (let i = 3 * (bits - 1); i >= 0; i -= 3) { 87 | transform = lookupTable[transform | Number((inValue >> BigInt(i)) & 7n)]; 88 | out = (out << 3n) | BigInt(transform & 7); 89 | transform &= ~7; 90 | } 91 | 92 | return out; 93 | }; 94 | 95 | function mortonToHilbertN(mortonIndex: bigint, bits: number): bigint { 96 | return transformCurve(mortonIndex, bits, mortonToHilbertTable); 97 | } 98 | function hilbertToMortonN(hilbertIndex: bigint, bits: number): bigint { 99 | return transformCurve(hilbertIndex, bits, hilbertToMortonTable); 100 | } 101 | -------------------------------------------------------------------------------- /src/zfxy.ts: -------------------------------------------------------------------------------- 1 | import { LngLat, LngLatWithAltitude } from "./types"; 2 | 3 | export type ZFXYTile = { z: number, f: number, x: number, y: number }; 4 | 5 | export function isZFXYTile(tile: any): tile is ZFXYTile { 6 | return ('z' in tile && 'f' in tile && 'x' in tile && 'y' in tile); 7 | } 8 | 9 | export const ZFXY_1M_ZOOM_BASE = 25 as const; 10 | export const ZFXY_ROOT_TILE: ZFXYTile = { f: 0, x: 0, y: 0, z: 0 }; 11 | 12 | const rad2deg = 180 / Math.PI; 13 | 14 | export function getParent(tile: ZFXYTile, steps: number = 1): ZFXYTile { 15 | const { f,x,y,z } = tile; 16 | if (steps <= 0) { 17 | throw new Error('steps must be greater than 0'); 18 | } 19 | if (steps > z) { 20 | throw new Error(`Getting parent tile of ${tile}, ${steps} steps is not possible because it would go beyond the root tile (z=0)`); 21 | } 22 | return { 23 | f: f >> steps, 24 | x: x >> steps, 25 | y: y >> steps, 26 | z: z - steps, 27 | }; 28 | } 29 | 30 | export function getChildren(tile: ZFXYTile = ZFXY_ROOT_TILE): ZFXYTile[] { 31 | const {f,x,y,z} = tile; 32 | return [ 33 | {f: f * 2, x: x * 2, y: y * 2, z: z+1}, // f +0, x +0, y +0 34 | {f: f * 2, x: x * 2 + 1, y: y * 2, z: z+1}, // f +0, x +1, y +0 35 | {f: f * 2, x: x * 2, y: y * 2 + 1, z: z+1}, // f +0, x +0, y +1 36 | {f: f * 2, x: x * 2 + 1, y: y * 2 + 1, z: z+1}, // f +0, x +1, y +1 37 | {f: f * 2 + 1, x: x * 2, y: y * 2, z: z+1}, // f +1, x +0, y +0 38 | {f: f * 2 + 1, x: x * 2 + 1, y: y * 2, z: z+1}, // f +1, x +1, y +0 39 | {f: f * 2 + 1, x: x * 2, y: y * 2 + 1, z: z+1}, // f +1, x +0, y +1 40 | {f: f * 2 + 1, x: x * 2 + 1, y: y * 2 + 1, z: z+1}, // f +1, x +1, y +1 41 | ]; 42 | } 43 | 44 | export function getSurrounding(tile: ZFXYTile = ZFXY_ROOT_TILE): ZFXYTile[] { 45 | const {f,x,y,z} = tile; 46 | return [ 47 | zfxyWraparound({f: f, x: x, y: y, z: z}), // f +0, x +0, y +0 48 | zfxyWraparound({f: f, x: x + 1, y: y, z: z}), // f +0, x +1, y +0 49 | zfxyWraparound({f: f, x: x, y: y + 1, z: z}), // f +0, x +0, y +1 50 | zfxyWraparound({f: f, x: x + 1, y: y + 1, z: z}), // f +0, x +1, y +1 51 | zfxyWraparound({f: f, x: x - 1, y: y, z: z}), // f +0, x -1, y +0 52 | zfxyWraparound({f: f, x: x, y: y - 1, z: z}), // f +0, x +0, y -1 53 | zfxyWraparound({f: f, x: x - 1, y: y - 1, z: z}), // f +0, x -1, y -1 54 | zfxyWraparound({f: f, x: x + 1, y: y - 1, z: z}), // f +0, x +1, y -1 55 | zfxyWraparound({f: f, x: x - 1, y: y + 1, z: z}), // f +0, x -1, y +1 56 | ]; 57 | } 58 | 59 | export function parseZFXYString(str: string): ZFXYTile | undefined { 60 | const match = str.match(/^\/?(\d+)\/(?:(\d+)\/)?(\d+)\/(\d+)$/); 61 | if (!match) { 62 | return undefined; 63 | } 64 | return { 65 | z: parseInt(match[1], 10), 66 | f: parseInt(match[2] || '0', 10), 67 | x: parseInt(match[3], 10), 68 | y: parseInt(match[4], 10), 69 | }; 70 | } 71 | 72 | /** Returns the lng,lat of the northwest corner of the provided tile */ 73 | export function getLngLat(tile: ZFXYTile): LngLat { 74 | const n = Math.PI - 2 * Math.PI * tile.y / Math.pow(2, tile.z); 75 | return { 76 | lng: tile.x / Math.pow(2, tile.z) * 360 - 180, 77 | lat: rad2deg * Math.atan(0.5 * (Math.exp(n) - Math.exp(-n))), 78 | }; 79 | } 80 | 81 | export function getCenterLngLat(tile: ZFXYTile): LngLat { 82 | const x = tile.x * 2 + 1, 83 | y = tile.y * 2 + 1, 84 | z = tile.z + 1; 85 | return getLngLat({x, y, z, f: 0}); 86 | } 87 | 88 | export function getCenterLngLatAlt(tile: ZFXYTile): LngLatWithAltitude { 89 | return { 90 | ...getCenterLngLat(tile), 91 | alt: getFloor(tile) + ((2**ZFXY_1M_ZOOM_BASE) / (2**(tile.z + 1))), 92 | }; 93 | } 94 | 95 | export function getBBox(tile: ZFXYTile): [LngLat, LngLat] { 96 | const nw = getLngLat(tile), 97 | se = getLngLat({...tile, y: tile.y + 1, x: tile.x + 1}); 98 | return [ nw, se ]; 99 | } 100 | 101 | /** Returns the floor of the voxel, in meters */ 102 | export function getFloor(tile: ZFXYTile): number { 103 | return tile.f * (2**ZFXY_1M_ZOOM_BASE) / (2**tile.z) 104 | } 105 | 106 | export interface CalculateZFXYInput { 107 | lat: number 108 | lng: number 109 | alt?: number 110 | zoom: number 111 | } 112 | 113 | export function calculateZFXY(input: CalculateZFXYInput): ZFXYTile { 114 | const meters = typeof input.alt !== 'undefined' ? input.alt : 0; 115 | if (meters <= -(2**ZFXY_1M_ZOOM_BASE) || meters >= (2**ZFXY_1M_ZOOM_BASE)) { 116 | // TODO: make altitude unlimited? 117 | throw new Error(`ZFXY only supports altitude between -2^${ZFXY_1M_ZOOM_BASE} and +2^${ZFXY_1M_ZOOM_BASE}.`); 118 | } 119 | const f = Math.floor(((2 ** input.zoom) * meters) / (2 ** ZFXY_1M_ZOOM_BASE)); 120 | 121 | // Algorithm adapted from tilebelt.js 122 | const d2r = Math.PI / 180; 123 | const sin = Math.sin(input.lat * d2r); 124 | const z2 = 2 ** input.zoom; 125 | let x = z2 * (input.lng / 360 + 0.5); 126 | const y = z2 * (0.5 - 0.25 * Math.log((1 + sin) / (1 - sin)) / Math.PI); 127 | 128 | // Wrap Tile X 129 | x = x % z2; 130 | if (x < 0) x = x + z2; 131 | 132 | return { 133 | f: f, 134 | x: Math.floor(x), 135 | y: Math.floor(y), 136 | z: input.zoom, 137 | }; 138 | } 139 | 140 | /** 141 | * Fix a tile that has out-of-bounds coordinates by: 142 | * for the x and y coordinates: wrapping the coordinates around. 143 | * for the f coordinate: limiting to maximum or minimum. 144 | */ 145 | export function zfxyWraparound(tile: ZFXYTile): ZFXYTile { 146 | const {z, f, x, y} = tile; 147 | return { 148 | z, 149 | f: Math.max(Math.min(f, (2**z)), -(2**z)), 150 | x: (x < 0) ? x + 2**z : x % 2**z, 151 | y: (y < 0) ? y + 2**z : y % 2**z, 152 | } 153 | } 154 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 3D 空間 ID 共通ライブラリ 2 | 3 | これは 3D 空間 ID の共通ライブラリの JavaScript 版のプロトタイプです。 4 | 5 | ### 概要 6 | 7 | このライブラリは位置情報と空間 ID を相互変換したり操作するための共通ライブラリとして利用されるべき機能を提供します。 8 | 9 | コンストラクタである `Space()` に対して、座標及び高度、または空間 ID を引数として渡して実行すると、空間オブジェクトを生成します。 10 | 11 | 空間オブジェクトは以下のプロパティを持っており、空間を移動するためのいくつかのメソッドも提供します。 12 | 13 | * 中心点の緯度及び経度 14 | * 高度 15 | * ズームレベル(分解能) 16 | * ZFXY(3次元タイル番号) 17 | * タイルハッシュ(3次元タイル番号をハッシュ化した値) 18 | 19 | メソッドについては以下のリンク先をご参照ください。 20 | 21 | https://github.com/spatial-id/spatial-object-model-specification#readme 22 | 23 | ### 空間IDとその表現形式 24 | 25 | 「空間ID」は、3次元空間を指し示すための識別子であり、いくつかの表現方法があります。このライブラリでは、主に以下の3つの方法で表現できます。 26 | 27 | 1. **ZFXY形式** (`/zoom/floor/x/y` のURL形式) 28 | * `zoom=0` の場合、`f=0/x=0/y=0` の1つの空間IDが全世界を表します。 29 | * `zoom=1` では、`zoom=0` の空間IDを8分割します。北西下が `0,0,0` として、`f/x/y` の値を設定します。 30 | 31 | 2. **タイルハッシュ形式** 32 | * [Z曲線](https://ja.wikipedia.org/wiki/Z%E9%9A%8E%E6%95%B0%E6%9B%B2%E7%B7%9A)や[ヒルベルト曲線](https://ja.wikipedia.org/wiki/%E3%83%92%E3%83%AB%E3%83%99%E3%83%AB%E3%83%88%E6%9B%B2%E7%B7%9A)で利用できます。 33 | * 空間IDは再帰的に計算でき、ズームレベル1から指定のズームレベルまで、各ズームレベルでの相対的な位置(北西下、北東下、南西下、南東下、上などの8方向)を1文字ずつ追加して、グローバルな位置を特定します。 34 | * ある空間IDが他の空間IDに含まれているかどうかは、文字列の**前方一致**で判定できます。 35 | 36 | 3. **インデックス形式** 37 | * ヒルベルト曲線で利用できます。 38 | * 指定したズームレベルでのヒルベルト曲線上の位置を、0から最大値までの数字で表します。 39 | 40 | それぞれの形式には短所と長所があり、用途に応じて使い分けることができます。 41 | 42 | * **ZFXY形式** 43 | * 地図ライブラリで使われる XYZ タイルを拡張した形であるため、既存のライブラリや Web サーバー技術との相性が高い。 44 | * 空間IDの計算や処理が直感的で簡単です。 45 | 46 | * **タイルハッシュ形式** 47 | * 異なるズームレベルの複数の空間IDを評価することが容易です。前方一致によって包含関係を確認でき、数字が近ければ地理的にも近いことを示します。 48 | * 1つの文字列が1つのズームレベルに対応するため、高いズームレベル(例:ズーム25)では25文字の長さが必要になります。 49 | 50 | * **インデックス形式** 51 | * 数値型であるため、ビット演算やデータベースでの保存に適しています。 52 | * ズームレベルを別途指定しないと、正しい空間IDを計算できない可能性があります。 53 | 54 | ## インストール方法 55 | 56 | ``` 57 | $ npm install https://github.com/spatial-id/javascript-sdk -S 58 | ``` 59 | 60 | ## モジュールのロード 61 | 62 | 以下の方法でモジュールを読み込んでください。 63 | 64 | ``` 65 | import { Space } from '@spatial-id/javascript-sdk' 66 | ``` 67 | 68 | ## コンストラクタ 69 | 70 | ``` 71 | Space( input, zoom? ) 72 | ``` 73 | 74 | 新しい空間オブジェクトを返します。 75 | 76 | ### 引数 77 | 78 | #### input 79 | 80 | 座標及び高度または空間 ID を以下のフォーマットで指定することができます。 81 | 82 | * LngLatWithAltitude: 緯度経度及び高度を含むオブジェクト。(例: `{ lng: number, lat: number, alt?: number }`) 83 | * ZFXYTile: ZFXY(3次元タイル番号)を示す文字列。(例: `/15/6/2844/17952`) 84 | * TileHash: ZFXY をハッシュ化した値(Z曲線方式)。(例: `311234211322651`) 85 | * Hilbert Tilehash: ZFXYをヒルベルト曲線に利用したハッシュ化した値。(例: `H535663435842141`) 86 | 87 | #### zoom 88 | 89 | ズームレベル(分解能)を整数で指定することができます。 90 | 91 | この引数は省略も可能で、デフォルトは `25` です。 92 | 93 | ## 補助コンストラクタ 94 | 95 | ``` 96 | Space.boundingSpaceForGeometry( geometry, minZoom? ) 97 | ``` 98 | 99 | `geometry` に渡された GeoJSON の Geometry オブジェクトに対して、最小分解能(ズームレベル)での空間IDを返す。 100 | `minZoom` が指定している場合は、より少ない分解能(ズームレベル)の空間IDが作られるにしても、 `minZoom` での空間IDを返す。 101 | 102 | ``` 103 | Space.spacesForGeometry( geometry, zoom ) 104 | ``` 105 | 106 | `geometry` に渡された GeoJSON の Geometry オブジェクトに対して、その Geometry と指定の `zoom` での分解能(ズームレベル)の空間IDの共通集合を配列として返す。 107 | 108 | ## メソッド 109 | 110 | このライブラリは [Spatial Object Model](https://github.com/spatial-id/spatial-object-model-specification#readme) を参照に実装しています。 111 | 112 | `Space` のメソッドのドキュメンテーションは下記となります。 113 | 114 | ### `.center` 115 | 116 | * 現在の空間オブジェクトの中央点 (3Dの `{lng: number, lat: number, alt: number}` 型) 117 | 118 | ### `.alt` 119 | 120 | * 現在の空間オブジェクトの最低高さ (floor) 121 | 122 | ### `.zoom` 123 | 124 | * 現在の空間オブジェクトのズームレベル(分解能) 125 | 126 | ### `.zfxy` 127 | 128 | * 現在の空間オブジェクトが表現している ZFXY を ZFXYTile 型 (`{ z: number, f: number, x: number, y: number }`) 129 | 130 | ### `.id`, `.tilehash` 131 | 132 | * 現在の空間オブジェクトが表現している ZFXY の tilehash の文字列 133 | * tilehashの文字列数はズームレベルに相当します。 134 | * 文字列の後ろから数字を削ると、そのズームレベルの親ズームレベルの空間IDを表現できます。 135 | 136 | ### `.hilbertTilehash` 137 | 138 | * 現在の空間オブジェクトが表現している ZFXY のヒルベルト曲線 tilehash の文字列 139 | * `tilehash` と区別するために、ヒルベルト曲線の文字列は `H` から始まります。 140 | * tilehashの文字列数(冒頭の `H` を除く)はズームレベルに相当します。 141 | * 文字列の後ろから数字を削ると、そのズームレベルの親ズームレベルの空間IDを表現できます。 142 | 143 | ### `.hilbertIndex` 144 | 145 | * 現在の空間オブジェクトのヒルベルト空間内の位置を一次元の数字で表す。 146 | * ビット操作や最適化したデータベースのインデックスなど、距離推定計算などに使用ください。 147 | * BigInt型として値が入っています。ズーム10ぐらい以降、JavaScriptのNumber型に入れないので、ご注意ください。 148 | * ズームレベルの情報が含まれていない。 149 | 150 | ### `.zfxyStr` 151 | 152 | * 現在の空間オブジェクトが表現している ZFXY を URL のパス型に変換したもの 153 | 154 | ### `.up(by?: number)` 155 | 156 | ![up](https://user-images.githubusercontent.com/309946/168220328-47e09300-c4dc-4ad1-adae-2cb17aff23ab.png) 157 | 158 | * パラメータがない場合は、現在の空間オブジェクトのひとつ上の空間オブジェクトを返す 159 | * パラメータが指定されている場合は、その個数分の空間オブジェクトを配列で返す 160 | 161 | ### `.down(by?: number)` 162 | 163 | ![down](https://user-images.githubusercontent.com/309946/168220818-f89a73b1-b99c-462d-9fcb-5eae0eac03eb.png) 164 | 165 | * パラメータがない場合は現在の空間オブジェクトのひとつ下の空間オブジェクトを返す 166 | * パラメータが指定されている場合は、その個数分の空間オブジェクトを配列で返す 167 | 168 | ### `.north(by?: number), .east(by?: number), south(by?: number), .west(by?: number)` 169 | 170 | ![north](https://user-images.githubusercontent.com/309946/168221234-b03809ef-6c69-442b-98d3-583b4391108e.png) 171 | 172 | * パラメータがない場合は、現在の空間オブジェクトの隣のオブジェクトを返す 173 | * パラメータが指定されている場合は、その個数分の空間オブジェクトを配列で返す 174 | 175 | ### `.move(by: Partial>)` 176 | 177 | * 現在の空間オブジェクトから相対的な新しいオブジェクトを返す。 `by` は少なくとも `x, y, f` の一つ以上を含めてください 178 | 179 | ``` 180 | space.move({x: 1, y: 5, f: -1}) 181 | ``` 182 | 183 | 上記の例の場合では、返り値は西1マス、北5マス、下1マスにある空間オブジェクト 184 | 185 | ### `.surroundings()` 186 | 187 | ![surroundings](https://user-images.githubusercontent.com/309946/168221371-b1ec30c7-f501-4a6b-ad64-5a6345fb9665.png) 188 | 189 | * 現在の空間オブジェクトのまわりにあるすべての空間オブジェクトを配列で返す。 190 | 191 | ### `.parent(atZoom?: number)` 192 | 193 | * 現在の空間オブジェクトから、分解能(ズームレベル)を `atZoom` のズームレベルまで下げる。デフォルトでは1段階下げます。 194 | 195 | ### `.children()` 196 | 197 | * 現在の空間オブジェクトから、分解能(ズームレベル)を一つ上げて、そこに含まれるすべての空間オブジェクトを返す。 198 | 199 | ### `.contains()` 200 | 201 | * 指定された緯度経度が、指定されたボクセル内に含まれるかどうかを判定して bool 値を返す。 202 | 203 | ### `.vertices3d()` 204 | 205 | * 現在の空間オブジェクトの3Dバウンディングボックスを作る8点の座標を配列として返す。 206 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { LngLatWithAltitude } from "./types"; 2 | import { calculateZFXY, getBBox, getChildren, getFloor, getParent, isZFXYTile, parseZFXYString, ZFXYTile, zfxyWraparound, getSurrounding, getCenterLngLatAlt } from "./zfxy"; 3 | import { generateTilehash, parseZFXYTilehash } from "./zfxy_tilehash"; 4 | import turfBBox from '@turf/bbox'; 5 | import turfBooleanIntersects from '@turf/boolean-intersects'; 6 | import type { Geometry, Polygon } from "geojson"; 7 | import { bboxToTile, pointToTile } from "./tilebelt"; 8 | import { generateHilbertIndex, generateHilbertTilehash, parseHilbertTilehash } from "./hilbert_tilehash"; 9 | 10 | const DEFAULT_ZOOM = 25 as const; 11 | 12 | export class Space { 13 | center: LngLatWithAltitude 14 | alt: number 15 | zoom: number 16 | 17 | zfxy: ZFXYTile 18 | 19 | id: string 20 | zfxyStr: string 21 | tilehash: string 22 | hilbertIndex: bigint 23 | hilbertTilehash: string 24 | 25 | /** 26 | * Create a new Space 27 | * 28 | * @param input A LngLatWithAltitude or string containing either a ZFXY or tilehash-encoded ZFXY. 29 | * @param zoom Optional. Defaults to 25 when `input` is LngLatWithAltitude. Ignored when ZXFY or tilehash is provided. 30 | */ 31 | constructor(input: LngLatWithAltitude | ZFXYTile | string, zoom?: number) { 32 | if (typeof input === 'string') { 33 | // parse string 34 | let zfxy = parseZFXYString(input) || parseHilbertTilehash(input) || parseZFXYTilehash(input); 35 | if (zfxy) { 36 | this.zfxy = zfxy; 37 | this._regenerateAttributesFromZFXY(); 38 | } else { 39 | throw new Error(`parse ZFXY failed with input: ${input}`); 40 | } 41 | return; 42 | } else if (isZFXYTile(input)) { 43 | this.zfxy = input; 44 | this._regenerateAttributesFromZFXY(); 45 | return; 46 | } else { 47 | this.zfxy = calculateZFXY({ 48 | ...input, 49 | zoom: (typeof zoom !== 'undefined') ? zoom : DEFAULT_ZOOM, 50 | }); 51 | } 52 | 53 | this._regenerateAttributesFromZFXY(); 54 | } 55 | 56 | /* - PUBLIC API - */ 57 | 58 | up(by: number = 1) { 59 | return this.move({f: by}); 60 | } 61 | 62 | down(by: number = 1) { 63 | return this.move({f: -by}); 64 | } 65 | 66 | north(by: number = 1) { 67 | return this.move({y: by}); 68 | } 69 | 70 | south(by: number = 1) { 71 | return this.move({y: -by}); 72 | } 73 | 74 | east(by: number = 1) { 75 | return this.move({x: by}); 76 | } 77 | 78 | west(by: number = 1) { 79 | return this.move({x: -by}); 80 | } 81 | 82 | move(by: Partial>) { 83 | const newSpace = new Space(this.zfxy); 84 | newSpace.zfxy = zfxyWraparound({ 85 | z: newSpace.zfxy.z, 86 | f: newSpace.zfxy.f + (by.f || 0), 87 | x: newSpace.zfxy.x + (by.x || 0), 88 | y: newSpace.zfxy.y + (by.y || 0), 89 | }); 90 | newSpace._regenerateAttributesFromZFXY(); 91 | return newSpace; 92 | } 93 | 94 | parent(atZoom?: number) { 95 | const steps = (typeof atZoom === 'undefined') ? 1 : this.zfxy.z - atZoom; 96 | return new Space(getParent(this.zfxy, steps)); 97 | } 98 | 99 | children() { 100 | return getChildren(this.zfxy).map((tile) => new Space(tile)); 101 | } 102 | 103 | /** Return an array of Space objects at the same zoom level that surround this Space 104 | * object. This method does not return the Space object itself, so the array will 105 | * contain 26 Space objects. 106 | */ 107 | surroundings(): Space[] { 108 | return [ 109 | ...( 110 | getSurrounding(this.zfxy) 111 | .filter(({z,f,x,y}) => `/${z}/${f}/${x}/${y}` !== this.zfxyStr) 112 | .map((tile) => new Space(tile)) 113 | ), 114 | ...( 115 | getSurrounding(this.up().zfxy) 116 | .map((tile) => new Space(tile)) 117 | ), 118 | ...( 119 | getSurrounding(this.down().zfxy) 120 | .map((tile) => new Space(tile)) 121 | ), 122 | ]; 123 | } 124 | 125 | /** Returns true if a point lies within this Space. If the position's altitude is not 126 | * specified, it is ignored from the calculation. 127 | */ 128 | contains(position: LngLatWithAltitude) { 129 | const geom = this.toGeoJSON(); 130 | const point = { 131 | type: 'Point', 132 | coordinates: [position.lng, position.lat], 133 | }; 134 | const floor = this.alt; 135 | const ceil = getFloor({...this.zfxy, f: this.zfxy.f + 1}); 136 | return ( 137 | turfBooleanIntersects(geom, point) && 138 | (typeof position.alt !== 'undefined' === true ? 139 | position.alt >= floor && position.alt < ceil 140 | : 141 | true 142 | ) 143 | ); 144 | } 145 | 146 | /** Calculates the polygon of this Space and returns a 2D GeoJSON Polygon. */ 147 | toGeoJSON(): Polygon { 148 | const [nw, se] = getBBox(this.zfxy); 149 | return { 150 | type: 'Polygon', 151 | coordinates: [ 152 | [ 153 | [nw.lng, nw.lat], 154 | [nw.lng, se.lat], 155 | [se.lng, se.lat], 156 | [se.lng, nw.lat], 157 | [nw.lng, nw.lat], 158 | ], 159 | ], 160 | }; 161 | } 162 | 163 | /** Calculates the 3D polygon of this Space and returns the vertices of that polygon. */ 164 | vertices3d(): [number, number, number][] { 165 | const [nw, se] = getBBox(this.zfxy); 166 | const floor = getFloor(this.zfxy); 167 | const ceil = getFloor({...this.zfxy, f: this.zfxy.f + 1}); 168 | return [ 169 | [nw.lng, nw.lat, floor], 170 | [nw.lng, se.lat, floor], 171 | [se.lng, se.lat, floor], 172 | [se.lng, nw.lat, floor], 173 | [nw.lng, nw.lat, ceil], 174 | [nw.lng, se.lat, ceil], 175 | [se.lng, se.lat, ceil], 176 | [se.lng, nw.lat, ceil], 177 | ]; 178 | } 179 | 180 | static getSpaceById(id: string, zoom?: number) { 181 | return new Space(id, zoom); 182 | } 183 | 184 | static getSpaceByLocation(loc: LngLatWithAltitude, zoom?: number) { 185 | return new Space(loc, zoom); 186 | } 187 | 188 | static getSpaceByZFXY(zfxyStr: string) { 189 | return new Space(zfxyStr); 190 | } 191 | 192 | /** Calculates the smallest spatial ID to fully contain the polygon. Currently only supports 2D polygons. */ 193 | static boundingSpaceForGeometry(geom: Geometry, minZoom?: number): Space { 194 | minZoom = minZoom || 25; 195 | const bbox = turfBBox(geom); 196 | const largestTile = bboxToTile(bbox, minZoom); 197 | const [ x, y, z ] = largestTile; 198 | return new Space({x, y, z, f: 0}); 199 | } 200 | 201 | /** Calculate an array of spaces that make up the polygon. Currently only supports 2D polygons. */ 202 | static spacesForGeometry(geom: Geometry, zoom: number): Space[] { 203 | const z = zoom; 204 | 205 | if (z === 0) { 206 | // not recommended. 207 | return [new Space('0/0/0/0')]; 208 | } 209 | 210 | if (geom.type === 'GeometryCollection') { 211 | throw new Error('GeometryCollection not supported'); 212 | } 213 | 214 | // this can be optimized a lot! 215 | const bbox = turfBBox(geom), 216 | min = pointToTile(bbox[0], bbox[1], 32), 217 | max = pointToTile(bbox[2], bbox[3], 32), 218 | minX = (Math.min(min[0], max[0])) >>> (32 - z), 219 | minY = (Math.min(min[1], max[1])) >>> (32 - z), 220 | maxX = (Math.max(max[0], min[0]) >>> (32 - z)) + 1, 221 | maxY = (Math.max(max[1], min[1]) >>> (32 - z)) + 1, 222 | spaces: Space[] = []; 223 | 224 | // scanline polygon fill algorithm 225 | for (let x = minX; x <= maxX; x++) { 226 | for (let y = minY; y <= maxY; y++) { 227 | const space = new Space({x, y, z, f: 0}); 228 | if (turfBooleanIntersects(geom, space.toGeoJSON())) { 229 | spaces.push(space); 230 | } 231 | } 232 | } 233 | return spaces; 234 | } 235 | 236 | private _regenerateAttributesFromZFXY() { 237 | this.alt = getFloor(this.zfxy); 238 | this.center = getCenterLngLatAlt(this.zfxy); 239 | this.zoom = this.zfxy.z; 240 | this.id = this.tilehash = generateTilehash(this.zfxy); 241 | this.zfxyStr = `/${this.zfxy.z}/${this.zfxy.f}/${this.zfxy.x}/${this.zfxy.y}`; 242 | this.hilbertIndex = generateHilbertIndex(this.zfxy); 243 | this.hilbertTilehash = generateHilbertTilehash(this.hilbertIndex, this.zfxy.z); 244 | } 245 | } 246 | -------------------------------------------------------------------------------- /tests/index.test.ts: -------------------------------------------------------------------------------- 1 | import { Polygon } from 'geojson'; 2 | import { Space } from '../src/index'; 3 | 4 | describe('Space', () => { 5 | it('should be able to create a Space from lng/lat/alt', () => { 6 | const space = new Space({ lng: 0, lat: 0, alt: 10 }, 25); 7 | expect(space).toBeInstanceOf(Space); 8 | expect(space.zfxyStr).toStrictEqual('/25/10/16777216/16777216'); 9 | expect(space.tilehash).toStrictEqual('4111111111111111111115151'); 10 | expect(space.hilbertTilehash).toStrictEqual('H6757575757575757575756523'); 11 | }); 12 | 13 | it('works', () => { 14 | const space = new Space('1/0/0/0'); 15 | expect(space.zfxy).toStrictEqual({z: 1, f: 0, x: 0, y: 0}); 16 | expect(space.zfxyStr).toStrictEqual('/1/0/0/0'); 17 | expect(space.tilehash).toStrictEqual('1'); 18 | expect(space.center).toStrictEqual({ 19 | "alt": 8388608, 20 | "lat": 66.51326044311186, 21 | "lng": -90, 22 | }); 23 | 24 | expect(space.up(1).zfxy).toStrictEqual({z: 1, f: 1, x: 0, y: 0}); 25 | expect(space.up(1).tilehash).toStrictEqual('5'); 26 | expect(space.down(1).zfxy).toStrictEqual({z: 1, f: -1, x: 0, y: 0}); 27 | expect(space.down(1).tilehash).toStrictEqual('-5'); 28 | }); 29 | 30 | describe('tilehash', () => { 31 | it('creating a space from a truncated tilehash returns its parent', () => { 32 | let tilehash = '4111111111111111111115151'; 33 | let child = new Space(tilehash); 34 | while (tilehash.length > 1) { 35 | tilehash = tilehash.slice(0, -1); 36 | const parent = new Space(tilehash); 37 | expect(child.parent().zfxy).toStrictEqual(parent.zfxy); 38 | child = parent; 39 | } 40 | }); 41 | 42 | it('creating a space from a truncated Hilbert tilehash returns its parent', () => { 43 | let tilehash = 'H6757575757575757575756523'; 44 | let child = new Space(tilehash); 45 | while (tilehash.length > 2) { 46 | tilehash = tilehash.slice(0, -1); 47 | const parent = new Space(tilehash); 48 | expect(child.parent().zfxy).toStrictEqual(parent.zfxy); 49 | child = parent; 50 | } 51 | }); 52 | }); 53 | 54 | describe('creates spaces from lng/lat/alt and can convert them back', () => { 55 | const points: { lng: number, lat: number, alt: number }[] = []; 56 | for (let i = 0; i < 1000; i++) { 57 | points.push({ 58 | lng: Math.random() * 360 - 180, // -180 ~ 180 59 | lat: Math.random() * 170.12 - 85.06, // -85.06 ~ 85.06 60 | alt: Math.random() * 500 - 100, // -100 ~ 400 61 | }); 62 | } 63 | 64 | for (const point of points) { 65 | const space = new Space(point, 25); 66 | 67 | it(`works for (${point.lng}, ${point.lat}, ${point.alt}) (zfxy=${space.zfxyStr}, hilbertIndex=${space.hilbertIndex})`, () => { 68 | const tilehash = space.tilehash; 69 | const space2 = new Space(tilehash); 70 | expect(space2.zfxy).toStrictEqual(space.zfxy); 71 | 72 | const space3 = new Space(space.hilbertTilehash); 73 | expect(space3.hilbertIndex).toStrictEqual(space.hilbertIndex); 74 | expect(space3.zfxy).toStrictEqual(space.zfxy); 75 | }); 76 | } 77 | }); 78 | 79 | const zfxyToPolygonTruthTable: [string, number[][]][] = [ 80 | ['1/0/0/0', [ 81 | [-180, 85.0511287798066], 82 | [-180, 0], 83 | [0, 0], 84 | [0, 85.0511287798066], 85 | [-180, 85.0511287798066], 86 | ]], 87 | ['25/0/29803304/13212456', [ 88 | [139.75476264953613, 35.68595383239409], 89 | [139.75476264953613, 35.68594511814803], 90 | [139.7547733783722, 35.68594511814803], 91 | [139.7547733783722, 35.68595383239409], 92 | [139.75476264953613, 35.68595383239409], 93 | ]], 94 | ['22/0/3725212/1650923', [ 95 | [139.73751068115234, 35.73014024024556], 96 | [139.73751068115234, 35.73007056488394], 97 | [139.73759651184082, 35.73007056488394], 98 | [139.73759651184082, 35.73014024024556], 99 | [139.73751068115234, 35.73014024024556], 100 | ]], 101 | ]; 102 | for (const [zfxy, polygon] of zfxyToPolygonTruthTable) { 103 | it(`calculates GeoJSON for ${zfxy}`, () => { 104 | const space = new Space(zfxy); 105 | expect(space.toGeoJSON()).toStrictEqual({ 106 | type: 'Polygon', 107 | coordinates: [ 108 | polygon, 109 | ] 110 | }); 111 | }); 112 | } 113 | 114 | describe('parent', () => { 115 | it('returns the correct parent coordinates with no arguments', () => { 116 | const space = new Space('25/0/29803304/13212456'); 117 | expect(space.parent().zfxy).toStrictEqual({z: 24, f: 0, x: 14901652, y: 6606228}); 118 | }); 119 | it('returns the correct parent coordinates at a specified zoom level', () => { 120 | const space = new Space('25/0/29803304/13212456'); 121 | expect(space.parent(23).zfxy).toStrictEqual({z: 23, f: 0, x: 7450826, y: 3303114}); 122 | expect(space.parent(22).zfxy).toStrictEqual({z: 22, f: 0, x: 3725413, y: 1651557}); 123 | expect(space.parent(14).zfxy).toStrictEqual({z: 14, f: 0, x: 14552, y: 6451}); 124 | expect(space.parent(0).zfxy).toStrictEqual({z: 0, f: 0, x: 0, y: 0}); 125 | }); 126 | }); 127 | 128 | describe('surroundings', () => { 129 | it('works', () => { 130 | const space = new Space('25/0/29802274/13208496'); 131 | const zfxyStrs = space.surroundings().map(s => s.zfxyStr); 132 | expect(zfxyStrs.length).toStrictEqual(26); 133 | expect(zfxyStrs).toStrictEqual([ 134 | "/25/0/29802275/13208496", 135 | "/25/0/29802274/13208497", 136 | "/25/0/29802275/13208497", 137 | "/25/0/29802273/13208496", 138 | "/25/0/29802274/13208495", 139 | "/25/0/29802273/13208495", 140 | "/25/0/29802275/13208495", 141 | "/25/0/29802273/13208497", 142 | "/25/1/29802274/13208496", 143 | "/25/1/29802275/13208496", 144 | "/25/1/29802274/13208497", 145 | "/25/1/29802275/13208497", 146 | "/25/1/29802273/13208496", 147 | "/25/1/29802274/13208495", 148 | "/25/1/29802273/13208495", 149 | "/25/1/29802275/13208495", 150 | "/25/1/29802273/13208497", 151 | "/25/-1/29802274/13208496", 152 | "/25/-1/29802275/13208496", 153 | "/25/-1/29802274/13208497", 154 | "/25/-1/29802275/13208497", 155 | "/25/-1/29802273/13208496", 156 | "/25/-1/29802274/13208495", 157 | "/25/-1/29802273/13208495", 158 | "/25/-1/29802275/13208495", 159 | "/25/-1/29802273/13208497", 160 | ]); 161 | }); 162 | 163 | it('works by wrapping around boundaries', () => { 164 | const space = new Space('1111111111'); 165 | const zfxyStrs = space.surroundings().map(s => s.zfxyStr); 166 | expect(zfxyStrs.length).toStrictEqual(26); 167 | expect(zfxyStrs).toStrictEqual([ 168 | "/10/0/1/0", 169 | "/10/0/0/1", 170 | "/10/0/1/1", 171 | "/10/0/1023/0", 172 | "/10/0/0/1023", 173 | "/10/0/1023/1023", 174 | "/10/0/1/1023", 175 | "/10/0/1023/1", 176 | "/10/1/0/0", 177 | "/10/1/1/0", 178 | "/10/1/0/1", 179 | "/10/1/1/1", 180 | "/10/1/1023/0", 181 | "/10/1/0/1023", 182 | "/10/1/1023/1023", 183 | "/10/1/1/1023", 184 | "/10/1/1023/1", 185 | "/10/-1/0/0", 186 | "/10/-1/1/0", 187 | "/10/-1/0/1", 188 | "/10/-1/1/1", 189 | "/10/-1/1023/0", 190 | "/10/-1/0/1023", 191 | "/10/-1/1023/1023", 192 | "/10/-1/1/1023", 193 | "/10/-1/1023/1", 194 | ]); 195 | }); 196 | }); 197 | 198 | describe('contains', () => { 199 | it('works without altitude specified', () => { 200 | const space = new Space('25/15/29802274/13208496'); 201 | expect(space.contains({ 202 | lat: 35.72044997095608, 203 | lng: 139.7437134824338, 204 | })).toBe(true); 205 | 206 | expect(space.contains({ 207 | lat: 35.0, 208 | lng: 139.0, 209 | })).toBe(false); 210 | }); 211 | 212 | it('works with altitude specified', () => { 213 | const space = new Space('25/15/29802274/13208496'); 214 | expect(space.contains({ 215 | lat: 35.72044997095608, 216 | lng: 139.7437134824338, 217 | alt: 15.2, 218 | })).toBe(true); 219 | 220 | expect(space.contains({ 221 | lat: 35.72044997095608, 222 | lng: 139.7437134824338, 223 | alt: 0, 224 | })).toBe(false); 225 | 226 | expect(space.contains({ 227 | lat: 10.0, 228 | lng: 140.0, 229 | alt: 0, 230 | })).toBe(false); 231 | 232 | expect(space.contains({ 233 | lat: 10.0, 234 | lng: 140.0, 235 | alt: 15.5, 236 | })).toBe(false); 237 | }); 238 | }); 239 | 240 | describe('vertices3d', () => { 241 | it('works', () => { 242 | const space = new Space('/22/6/3725284/1651062'); 243 | const vertices3d = space.vertices3d(); 244 | expect(vertices3d.length).toStrictEqual(8); 245 | expect(vertices3d).toStrictEqual([ 246 | [ 139.74369049072266, 35.720454780411565, 48 ], 247 | [ 139.74369049072266, 35.7203850965781, 48 ], 248 | [ 139.74377632141113, 35.7203850965781, 48 ], 249 | [ 139.74377632141113, 35.720454780411565, 48 ], 250 | [ 139.74369049072266, 35.720454780411565, 56 ], 251 | [ 139.74369049072266, 35.7203850965781, 56 ], 252 | [ 139.74377632141113, 35.7203850965781, 56 ], 253 | [ 139.74377632141113, 35.720454780411565, 56 ], 254 | ]); 255 | }); 256 | }); 257 | }); 258 | 259 | const testPolygons: { [key: string]: Polygon } = { 260 | SIMPLE: {"coordinates":[[[139.7404337636242,35.676005522333085],[139.7404337636242,35.67374730758844],[139.7427432114959,35.67374730758844],[139.7427432114959,35.676005522333085],[139.7404337636242,35.676005522333085]]],"type":"Polygon"}, 261 | DETAILED: {"coordinates":[[[139.73132532824928,35.66657408663923],[139.7308657092451,35.66613900145083],[139.73099702895985,35.66602897953335],[139.73108320752306,35.666103994493525],[139.7309847177366,35.666184010373385],[139.7312986539318,35.666487403189706],[139.7314894778924,35.66635737783834],[139.7310544813364,35.665987304525416],[139.73134174321268,35.665758925093],[139.73141561055252,35.66583560731111],[139.73118169730958,35.66599897352954],[139.73124940903864,35.66605398452789],[139.73146280357656,35.66589061842207],[139.73154487839815,35.665950630499836],[139.73131506889678,35.66610232749561],[139.73142586990656,35.666199013341924],[139.73170287243033,35.66614900343582],[139.7315941232913,35.66622901927059],[139.73171107991362,35.66633403993197],[139.73132532824928,35.66657408663923]]],"type":"Polygon"}, 262 | }; 263 | 264 | describe('boundingSpaceForGeometry', () => { 265 | it('automatically detects the smallest tile that contains the polygon', () => { 266 | const space = Space.boundingSpaceForGeometry(testPolygons.SIMPLE); 267 | expect(space.zfxy).toStrictEqual({z: 11, f: 0, x: 1818, y: 806}); 268 | }); 269 | 270 | it('respects the minimum zoom level', () => { 271 | const space = Space.boundingSpaceForGeometry(testPolygons.SIMPLE, 8); 272 | expect(space.zfxy).toStrictEqual({z: 8, f: 0, x: 227, y: 100}); 273 | }); 274 | }); 275 | 276 | describe('spacesForGeometry', () => { 277 | it('returns the correct spaces for a simple polygon', () => { 278 | const spaces = Space.spacesForGeometry(testPolygons.SIMPLE, 15); 279 | expect(spaces.map(s => s.zfxy)).toStrictEqual([ 280 | {z: 15, f: 0, x: 29103, y: 12903}, 281 | {z: 15, f: 0, x: 29103, y: 12904}, 282 | ]); 283 | }); 284 | 285 | it('returns the correct spaces for a detailed polygon', () => { 286 | const spaces = Space.spacesForGeometry(testPolygons.DETAILED, 20); 287 | expect(spaces.map(s => s.zfxy)).toStrictEqual([ 288 | { f: 0, x: 931283, y: 412959, z: 20, }, 289 | { f: 0, x: 931283, y: 412960, z: 20, }, 290 | { f: 0, x: 931284, y: 412958, z: 20, }, 291 | { f: 0, x: 931284, y: 412959, z: 20, }, 292 | { f: 0, x: 931284, y: 412960, z: 20, }, 293 | { f: 0, x: 931284, y: 412961, z: 20, }, 294 | { f: 0, x: 931285, y: 412958, z: 20, }, 295 | { f: 0, x: 931285, y: 412959, z: 20, }, 296 | { f: 0, x: 931285, y: 412960, z: 20, }, 297 | { f: 0, x: 931285, y: 412961, z: 20, }, 298 | { f: 0, x: 931286, y: 412959, z: 20, }, 299 | { f: 0, x: 931286, y: 412960, z: 20, }, 300 | ]); 301 | }); 302 | }); 303 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@ampproject/remapping@^2.1.0": 6 | version "2.2.0" 7 | resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" 8 | integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== 9 | dependencies: 10 | "@jridgewell/gen-mapping" "^0.1.0" 11 | "@jridgewell/trace-mapping" "^0.3.9" 12 | 13 | "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7": 14 | version "7.16.7" 15 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" 16 | integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== 17 | dependencies: 18 | "@babel/highlight" "^7.16.7" 19 | 20 | "@babel/compat-data@^7.17.10": 21 | version "7.17.10" 22 | resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.10.tgz#711dc726a492dfc8be8220028b1b92482362baab" 23 | integrity sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw== 24 | 25 | "@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.2", "@babel/core@^7.8.0": 26 | version "7.18.2" 27 | resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.2.tgz#87b2fcd7cce9becaa7f5acebdc4f09f3dd19d876" 28 | integrity sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ== 29 | dependencies: 30 | "@ampproject/remapping" "^2.1.0" 31 | "@babel/code-frame" "^7.16.7" 32 | "@babel/generator" "^7.18.2" 33 | "@babel/helper-compilation-targets" "^7.18.2" 34 | "@babel/helper-module-transforms" "^7.18.0" 35 | "@babel/helpers" "^7.18.2" 36 | "@babel/parser" "^7.18.0" 37 | "@babel/template" "^7.16.7" 38 | "@babel/traverse" "^7.18.2" 39 | "@babel/types" "^7.18.2" 40 | convert-source-map "^1.7.0" 41 | debug "^4.1.0" 42 | gensync "^1.0.0-beta.2" 43 | json5 "^2.2.1" 44 | semver "^6.3.0" 45 | 46 | "@babel/generator@^7.18.2", "@babel/generator@^7.7.2": 47 | version "7.18.2" 48 | resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.2.tgz#33873d6f89b21efe2da63fe554460f3df1c5880d" 49 | integrity sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw== 50 | dependencies: 51 | "@babel/types" "^7.18.2" 52 | "@jridgewell/gen-mapping" "^0.3.0" 53 | jsesc "^2.5.1" 54 | 55 | "@babel/helper-compilation-targets@^7.18.2": 56 | version "7.18.2" 57 | resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz#67a85a10cbd5fc7f1457fec2e7f45441dc6c754b" 58 | integrity sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ== 59 | dependencies: 60 | "@babel/compat-data" "^7.17.10" 61 | "@babel/helper-validator-option" "^7.16.7" 62 | browserslist "^4.20.2" 63 | semver "^6.3.0" 64 | 65 | "@babel/helper-environment-visitor@^7.16.7", "@babel/helper-environment-visitor@^7.18.2": 66 | version "7.18.2" 67 | resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz#8a6d2dedb53f6bf248e31b4baf38739ee4a637bd" 68 | integrity sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ== 69 | 70 | "@babel/helper-function-name@^7.17.9": 71 | version "7.17.9" 72 | resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12" 73 | integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg== 74 | dependencies: 75 | "@babel/template" "^7.16.7" 76 | "@babel/types" "^7.17.0" 77 | 78 | "@babel/helper-hoist-variables@^7.16.7": 79 | version "7.16.7" 80 | resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" 81 | integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== 82 | dependencies: 83 | "@babel/types" "^7.16.7" 84 | 85 | "@babel/helper-module-imports@^7.16.7": 86 | version "7.16.7" 87 | resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" 88 | integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== 89 | dependencies: 90 | "@babel/types" "^7.16.7" 91 | 92 | "@babel/helper-module-transforms@^7.18.0": 93 | version "7.18.0" 94 | resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz#baf05dec7a5875fb9235bd34ca18bad4e21221cd" 95 | integrity sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA== 96 | dependencies: 97 | "@babel/helper-environment-visitor" "^7.16.7" 98 | "@babel/helper-module-imports" "^7.16.7" 99 | "@babel/helper-simple-access" "^7.17.7" 100 | "@babel/helper-split-export-declaration" "^7.16.7" 101 | "@babel/helper-validator-identifier" "^7.16.7" 102 | "@babel/template" "^7.16.7" 103 | "@babel/traverse" "^7.18.0" 104 | "@babel/types" "^7.18.0" 105 | 106 | "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.17.12", "@babel/helper-plugin-utils@^7.8.0": 107 | version "7.17.12" 108 | resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz#86c2347da5acbf5583ba0a10aed4c9bf9da9cf96" 109 | integrity sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA== 110 | 111 | "@babel/helper-simple-access@^7.17.7": 112 | version "7.18.2" 113 | resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz#4dc473c2169ac3a1c9f4a51cfcd091d1c36fcff9" 114 | integrity sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ== 115 | dependencies: 116 | "@babel/types" "^7.18.2" 117 | 118 | "@babel/helper-split-export-declaration@^7.16.7": 119 | version "7.16.7" 120 | resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" 121 | integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== 122 | dependencies: 123 | "@babel/types" "^7.16.7" 124 | 125 | "@babel/helper-validator-identifier@^7.16.7": 126 | version "7.16.7" 127 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" 128 | integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== 129 | 130 | "@babel/helper-validator-option@^7.16.7": 131 | version "7.16.7" 132 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" 133 | integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== 134 | 135 | "@babel/helpers@^7.18.2": 136 | version "7.18.2" 137 | resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.2.tgz#970d74f0deadc3f5a938bfa250738eb4ac889384" 138 | integrity sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg== 139 | dependencies: 140 | "@babel/template" "^7.16.7" 141 | "@babel/traverse" "^7.18.2" 142 | "@babel/types" "^7.18.2" 143 | 144 | "@babel/highlight@^7.16.7": 145 | version "7.17.12" 146 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.12.tgz#257de56ee5afbd20451ac0a75686b6b404257351" 147 | integrity sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg== 148 | dependencies: 149 | "@babel/helper-validator-identifier" "^7.16.7" 150 | chalk "^2.0.0" 151 | js-tokens "^4.0.0" 152 | 153 | "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.18.0": 154 | version "7.18.4" 155 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.4.tgz#6774231779dd700e0af29f6ad8d479582d7ce5ef" 156 | integrity sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow== 157 | 158 | "@babel/plugin-syntax-async-generators@^7.8.4": 159 | version "7.8.4" 160 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" 161 | integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== 162 | dependencies: 163 | "@babel/helper-plugin-utils" "^7.8.0" 164 | 165 | "@babel/plugin-syntax-bigint@^7.8.3": 166 | version "7.8.3" 167 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" 168 | integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== 169 | dependencies: 170 | "@babel/helper-plugin-utils" "^7.8.0" 171 | 172 | "@babel/plugin-syntax-class-properties@^7.8.3": 173 | version "7.12.13" 174 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" 175 | integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== 176 | dependencies: 177 | "@babel/helper-plugin-utils" "^7.12.13" 178 | 179 | "@babel/plugin-syntax-import-meta@^7.8.3": 180 | version "7.10.4" 181 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" 182 | integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== 183 | dependencies: 184 | "@babel/helper-plugin-utils" "^7.10.4" 185 | 186 | "@babel/plugin-syntax-json-strings@^7.8.3": 187 | version "7.8.3" 188 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" 189 | integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== 190 | dependencies: 191 | "@babel/helper-plugin-utils" "^7.8.0" 192 | 193 | "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": 194 | version "7.10.4" 195 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" 196 | integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== 197 | dependencies: 198 | "@babel/helper-plugin-utils" "^7.10.4" 199 | 200 | "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": 201 | version "7.8.3" 202 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" 203 | integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== 204 | dependencies: 205 | "@babel/helper-plugin-utils" "^7.8.0" 206 | 207 | "@babel/plugin-syntax-numeric-separator@^7.8.3": 208 | version "7.10.4" 209 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" 210 | integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== 211 | dependencies: 212 | "@babel/helper-plugin-utils" "^7.10.4" 213 | 214 | "@babel/plugin-syntax-object-rest-spread@^7.8.3": 215 | version "7.8.3" 216 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" 217 | integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== 218 | dependencies: 219 | "@babel/helper-plugin-utils" "^7.8.0" 220 | 221 | "@babel/plugin-syntax-optional-catch-binding@^7.8.3": 222 | version "7.8.3" 223 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" 224 | integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== 225 | dependencies: 226 | "@babel/helper-plugin-utils" "^7.8.0" 227 | 228 | "@babel/plugin-syntax-optional-chaining@^7.8.3": 229 | version "7.8.3" 230 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" 231 | integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== 232 | dependencies: 233 | "@babel/helper-plugin-utils" "^7.8.0" 234 | 235 | "@babel/plugin-syntax-top-level-await@^7.8.3": 236 | version "7.14.5" 237 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" 238 | integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== 239 | dependencies: 240 | "@babel/helper-plugin-utils" "^7.14.5" 241 | 242 | "@babel/plugin-syntax-typescript@^7.7.2": 243 | version "7.17.12" 244 | resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.12.tgz#b54fc3be6de734a56b87508f99d6428b5b605a7b" 245 | integrity sha512-TYY0SXFiO31YXtNg3HtFwNJHjLsAyIIhAhNWkQ5whPPS7HWUFlg9z0Ta4qAQNjQbP1wsSt/oKkmZ/4/WWdMUpw== 246 | dependencies: 247 | "@babel/helper-plugin-utils" "^7.17.12" 248 | 249 | "@babel/template@^7.16.7", "@babel/template@^7.3.3": 250 | version "7.16.7" 251 | resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" 252 | integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== 253 | dependencies: 254 | "@babel/code-frame" "^7.16.7" 255 | "@babel/parser" "^7.16.7" 256 | "@babel/types" "^7.16.7" 257 | 258 | "@babel/traverse@^7.18.0", "@babel/traverse@^7.18.2", "@babel/traverse@^7.7.2": 259 | version "7.18.2" 260 | resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.2.tgz#b77a52604b5cc836a9e1e08dca01cba67a12d2e8" 261 | integrity sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA== 262 | dependencies: 263 | "@babel/code-frame" "^7.16.7" 264 | "@babel/generator" "^7.18.2" 265 | "@babel/helper-environment-visitor" "^7.18.2" 266 | "@babel/helper-function-name" "^7.17.9" 267 | "@babel/helper-hoist-variables" "^7.16.7" 268 | "@babel/helper-split-export-declaration" "^7.16.7" 269 | "@babel/parser" "^7.18.0" 270 | "@babel/types" "^7.18.2" 271 | debug "^4.1.0" 272 | globals "^11.1.0" 273 | 274 | "@babel/types@^7.0.0", "@babel/types@^7.16.7", "@babel/types@^7.17.0", "@babel/types@^7.18.0", "@babel/types@^7.18.2", "@babel/types@^7.3.0", "@babel/types@^7.3.3": 275 | version "7.18.4" 276 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.4.tgz#27eae9b9fd18e9dccc3f9d6ad051336f307be354" 277 | integrity sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw== 278 | dependencies: 279 | "@babel/helper-validator-identifier" "^7.16.7" 280 | to-fast-properties "^2.0.0" 281 | 282 | "@bcoe/v8-coverage@^0.2.3": 283 | version "0.2.3" 284 | resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" 285 | integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== 286 | 287 | "@istanbuljs/load-nyc-config@^1.0.0": 288 | version "1.1.0" 289 | resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" 290 | integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== 291 | dependencies: 292 | camelcase "^5.3.1" 293 | find-up "^4.1.0" 294 | get-package-type "^0.1.0" 295 | js-yaml "^3.13.1" 296 | resolve-from "^5.0.0" 297 | 298 | "@istanbuljs/schema@^0.1.2": 299 | version "0.1.3" 300 | resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" 301 | integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== 302 | 303 | "@jest/console@^27.5.1": 304 | version "27.5.1" 305 | resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.5.1.tgz#260fe7239602fe5130a94f1aa386eff54b014bba" 306 | integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg== 307 | dependencies: 308 | "@jest/types" "^27.5.1" 309 | "@types/node" "*" 310 | chalk "^4.0.0" 311 | jest-message-util "^27.5.1" 312 | jest-util "^27.5.1" 313 | slash "^3.0.0" 314 | 315 | "@jest/core@^27.5.1": 316 | version "27.5.1" 317 | resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.5.1.tgz#267ac5f704e09dc52de2922cbf3af9edcd64b626" 318 | integrity sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ== 319 | dependencies: 320 | "@jest/console" "^27.5.1" 321 | "@jest/reporters" "^27.5.1" 322 | "@jest/test-result" "^27.5.1" 323 | "@jest/transform" "^27.5.1" 324 | "@jest/types" "^27.5.1" 325 | "@types/node" "*" 326 | ansi-escapes "^4.2.1" 327 | chalk "^4.0.0" 328 | emittery "^0.8.1" 329 | exit "^0.1.2" 330 | graceful-fs "^4.2.9" 331 | jest-changed-files "^27.5.1" 332 | jest-config "^27.5.1" 333 | jest-haste-map "^27.5.1" 334 | jest-message-util "^27.5.1" 335 | jest-regex-util "^27.5.1" 336 | jest-resolve "^27.5.1" 337 | jest-resolve-dependencies "^27.5.1" 338 | jest-runner "^27.5.1" 339 | jest-runtime "^27.5.1" 340 | jest-snapshot "^27.5.1" 341 | jest-util "^27.5.1" 342 | jest-validate "^27.5.1" 343 | jest-watcher "^27.5.1" 344 | micromatch "^4.0.4" 345 | rimraf "^3.0.0" 346 | slash "^3.0.0" 347 | strip-ansi "^6.0.0" 348 | 349 | "@jest/environment@^27.5.1": 350 | version "27.5.1" 351 | resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74" 352 | integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA== 353 | dependencies: 354 | "@jest/fake-timers" "^27.5.1" 355 | "@jest/types" "^27.5.1" 356 | "@types/node" "*" 357 | jest-mock "^27.5.1" 358 | 359 | "@jest/fake-timers@^27.5.1": 360 | version "27.5.1" 361 | resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74" 362 | integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ== 363 | dependencies: 364 | "@jest/types" "^27.5.1" 365 | "@sinonjs/fake-timers" "^8.0.1" 366 | "@types/node" "*" 367 | jest-message-util "^27.5.1" 368 | jest-mock "^27.5.1" 369 | jest-util "^27.5.1" 370 | 371 | "@jest/globals@^27.5.1": 372 | version "27.5.1" 373 | resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b" 374 | integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q== 375 | dependencies: 376 | "@jest/environment" "^27.5.1" 377 | "@jest/types" "^27.5.1" 378 | expect "^27.5.1" 379 | 380 | "@jest/reporters@^27.5.1": 381 | version "27.5.1" 382 | resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.5.1.tgz#ceda7be96170b03c923c37987b64015812ffec04" 383 | integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw== 384 | dependencies: 385 | "@bcoe/v8-coverage" "^0.2.3" 386 | "@jest/console" "^27.5.1" 387 | "@jest/test-result" "^27.5.1" 388 | "@jest/transform" "^27.5.1" 389 | "@jest/types" "^27.5.1" 390 | "@types/node" "*" 391 | chalk "^4.0.0" 392 | collect-v8-coverage "^1.0.0" 393 | exit "^0.1.2" 394 | glob "^7.1.2" 395 | graceful-fs "^4.2.9" 396 | istanbul-lib-coverage "^3.0.0" 397 | istanbul-lib-instrument "^5.1.0" 398 | istanbul-lib-report "^3.0.0" 399 | istanbul-lib-source-maps "^4.0.0" 400 | istanbul-reports "^3.1.3" 401 | jest-haste-map "^27.5.1" 402 | jest-resolve "^27.5.1" 403 | jest-util "^27.5.1" 404 | jest-worker "^27.5.1" 405 | slash "^3.0.0" 406 | source-map "^0.6.0" 407 | string-length "^4.0.1" 408 | terminal-link "^2.0.0" 409 | v8-to-istanbul "^8.1.0" 410 | 411 | "@jest/source-map@^27.5.1": 412 | version "27.5.1" 413 | resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf" 414 | integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg== 415 | dependencies: 416 | callsites "^3.0.0" 417 | graceful-fs "^4.2.9" 418 | source-map "^0.6.0" 419 | 420 | "@jest/test-result@^27.5.1": 421 | version "27.5.1" 422 | resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.5.1.tgz#56a6585fa80f7cdab72b8c5fc2e871d03832f5bb" 423 | integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag== 424 | dependencies: 425 | "@jest/console" "^27.5.1" 426 | "@jest/types" "^27.5.1" 427 | "@types/istanbul-lib-coverage" "^2.0.0" 428 | collect-v8-coverage "^1.0.0" 429 | 430 | "@jest/test-sequencer@^27.5.1": 431 | version "27.5.1" 432 | resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz#4057e0e9cea4439e544c6353c6affe58d095745b" 433 | integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ== 434 | dependencies: 435 | "@jest/test-result" "^27.5.1" 436 | graceful-fs "^4.2.9" 437 | jest-haste-map "^27.5.1" 438 | jest-runtime "^27.5.1" 439 | 440 | "@jest/transform@^27.5.1": 441 | version "27.5.1" 442 | resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.5.1.tgz#6c3501dcc00c4c08915f292a600ece5ecfe1f409" 443 | integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw== 444 | dependencies: 445 | "@babel/core" "^7.1.0" 446 | "@jest/types" "^27.5.1" 447 | babel-plugin-istanbul "^6.1.1" 448 | chalk "^4.0.0" 449 | convert-source-map "^1.4.0" 450 | fast-json-stable-stringify "^2.0.0" 451 | graceful-fs "^4.2.9" 452 | jest-haste-map "^27.5.1" 453 | jest-regex-util "^27.5.1" 454 | jest-util "^27.5.1" 455 | micromatch "^4.0.4" 456 | pirates "^4.0.4" 457 | slash "^3.0.0" 458 | source-map "^0.6.1" 459 | write-file-atomic "^3.0.0" 460 | 461 | "@jest/types@^27.5.1": 462 | version "27.5.1" 463 | resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" 464 | integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== 465 | dependencies: 466 | "@types/istanbul-lib-coverage" "^2.0.0" 467 | "@types/istanbul-reports" "^3.0.0" 468 | "@types/node" "*" 469 | "@types/yargs" "^16.0.0" 470 | chalk "^4.0.0" 471 | 472 | "@jridgewell/gen-mapping@^0.1.0": 473 | version "0.1.1" 474 | resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" 475 | integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== 476 | dependencies: 477 | "@jridgewell/set-array" "^1.0.0" 478 | "@jridgewell/sourcemap-codec" "^1.4.10" 479 | 480 | "@jridgewell/gen-mapping@^0.3.0": 481 | version "0.3.1" 482 | resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz#cf92a983c83466b8c0ce9124fadeaf09f7c66ea9" 483 | integrity sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg== 484 | dependencies: 485 | "@jridgewell/set-array" "^1.0.0" 486 | "@jridgewell/sourcemap-codec" "^1.4.10" 487 | "@jridgewell/trace-mapping" "^0.3.9" 488 | 489 | "@jridgewell/resolve-uri@^3.0.3": 490 | version "3.0.7" 491 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz#30cd49820a962aff48c8fffc5cd760151fca61fe" 492 | integrity sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA== 493 | 494 | "@jridgewell/set-array@^1.0.0": 495 | version "1.1.1" 496 | resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.1.tgz#36a6acc93987adcf0ba50c66908bd0b70de8afea" 497 | integrity sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ== 498 | 499 | "@jridgewell/sourcemap-codec@^1.4.10": 500 | version "1.4.13" 501 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz#b6461fb0c2964356c469e115f504c95ad97ab88c" 502 | integrity sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w== 503 | 504 | "@jridgewell/trace-mapping@^0.3.9": 505 | version "0.3.13" 506 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea" 507 | integrity sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w== 508 | dependencies: 509 | "@jridgewell/resolve-uri" "^3.0.3" 510 | "@jridgewell/sourcemap-codec" "^1.4.10" 511 | 512 | "@rollup/plugin-commonjs@^22.0.0": 513 | version "22.0.0" 514 | resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-22.0.0.tgz#f4d87016e2fbf187a593ab9f46626fe05b59e8bd" 515 | integrity sha512-Ktvf2j+bAO+30awhbYoCaXpBcyPmJbaEUYClQns/+6SNCYFURbvBiNbWgHITEsIgDDWCDUclWRKEuf8cwZCFoQ== 516 | dependencies: 517 | "@rollup/pluginutils" "^3.1.0" 518 | commondir "^1.0.1" 519 | estree-walker "^2.0.1" 520 | glob "^7.1.6" 521 | is-reference "^1.2.1" 522 | magic-string "^0.25.7" 523 | resolve "^1.17.0" 524 | 525 | "@rollup/plugin-node-resolve@^13.2.1": 526 | version "13.3.0" 527 | resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz#da1c5c5ce8316cef96a2f823d111c1e4e498801c" 528 | integrity sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw== 529 | dependencies: 530 | "@rollup/pluginutils" "^3.1.0" 531 | "@types/resolve" "1.17.1" 532 | deepmerge "^4.2.2" 533 | is-builtin-module "^3.1.0" 534 | is-module "^1.0.0" 535 | resolve "^1.19.0" 536 | 537 | "@rollup/pluginutils@^3.1.0": 538 | version "3.1.0" 539 | resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" 540 | integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== 541 | dependencies: 542 | "@types/estree" "0.0.39" 543 | estree-walker "^1.0.1" 544 | picomatch "^2.2.2" 545 | 546 | "@rollup/pluginutils@^4.1.2": 547 | version "4.2.1" 548 | resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz#e6c6c3aba0744edce3fb2074922d3776c0af2a6d" 549 | integrity sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ== 550 | dependencies: 551 | estree-walker "^2.0.1" 552 | picomatch "^2.2.2" 553 | 554 | "@sinonjs/commons@^1.7.0": 555 | version "1.8.3" 556 | resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" 557 | integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== 558 | dependencies: 559 | type-detect "4.0.8" 560 | 561 | "@sinonjs/fake-timers@^8.0.1": 562 | version "8.1.0" 563 | resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7" 564 | integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg== 565 | dependencies: 566 | "@sinonjs/commons" "^1.7.0" 567 | 568 | "@tootallnate/once@1": 569 | version "1.1.2" 570 | resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" 571 | integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== 572 | 573 | "@turf/bbox@*", "@turf/bbox@^6.5.0": 574 | version "6.5.0" 575 | resolved "https://registry.yarnpkg.com/@turf/bbox/-/bbox-6.5.0.tgz#bec30a744019eae420dac9ea46fb75caa44d8dc5" 576 | integrity sha512-RBbLaao5hXTYyyg577iuMtDB8ehxMlUqHEJiMs8jT1GHkFhr6sYre3lmLsPeYEi/ZKj5TP5tt7fkzNdJ4GIVyw== 577 | dependencies: 578 | "@turf/helpers" "^6.5.0" 579 | "@turf/meta" "^6.5.0" 580 | 581 | "@turf/boolean-disjoint@^6.5.0": 582 | version "6.5.0" 583 | resolved "https://registry.yarnpkg.com/@turf/boolean-disjoint/-/boolean-disjoint-6.5.0.tgz#e291d8f8f8cce7f7bb3c11e23059156a49afc5e4" 584 | integrity sha512-rZ2ozlrRLIAGo2bjQ/ZUu4oZ/+ZjGvLkN5CKXSKBcu6xFO6k2bgqeM8a1836tAW+Pqp/ZFsTA5fZHsJZvP2D5g== 585 | dependencies: 586 | "@turf/boolean-point-in-polygon" "^6.5.0" 587 | "@turf/helpers" "^6.5.0" 588 | "@turf/line-intersect" "^6.5.0" 589 | "@turf/meta" "^6.5.0" 590 | "@turf/polygon-to-line" "^6.5.0" 591 | 592 | "@turf/boolean-intersects@^6.5.0": 593 | version "6.5.0" 594 | resolved "https://registry.yarnpkg.com/@turf/boolean-intersects/-/boolean-intersects-6.5.0.tgz#df2b831ea31a4574af6b2fefe391f097a926b9d6" 595 | integrity sha512-nIxkizjRdjKCYFQMnml6cjPsDOBCThrt+nkqtSEcxkKMhAQj5OO7o2CecioNTaX8EayqwMGVKcsz27oP4mKPTw== 596 | dependencies: 597 | "@turf/boolean-disjoint" "^6.5.0" 598 | "@turf/helpers" "^6.5.0" 599 | "@turf/meta" "^6.5.0" 600 | 601 | "@turf/boolean-point-in-polygon@^6.5.0": 602 | version "6.5.0" 603 | resolved "https://registry.yarnpkg.com/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-6.5.0.tgz#6d2e9c89de4cd2e4365004c1e51490b7795a63cf" 604 | integrity sha512-DtSuVFB26SI+hj0SjrvXowGTUCHlgevPAIsukssW6BG5MlNSBQAo70wpICBNJL6RjukXg8d2eXaAWuD/CqL00A== 605 | dependencies: 606 | "@turf/helpers" "^6.5.0" 607 | "@turf/invariant" "^6.5.0" 608 | 609 | "@turf/helpers@6.x", "@turf/helpers@^6.5.0": 610 | version "6.5.0" 611 | resolved "https://registry.yarnpkg.com/@turf/helpers/-/helpers-6.5.0.tgz#f79af094bd6b8ce7ed2bd3e089a8493ee6cae82e" 612 | integrity sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw== 613 | 614 | "@turf/invariant@^6.5.0": 615 | version "6.5.0" 616 | resolved "https://registry.yarnpkg.com/@turf/invariant/-/invariant-6.5.0.tgz#970afc988023e39c7ccab2341bd06979ddc7463f" 617 | integrity sha512-Wv8PRNCtPD31UVbdJE/KVAWKe7l6US+lJItRR/HOEW3eh+U/JwRCSUl/KZ7bmjM/C+zLNoreM2TU6OoLACs4eg== 618 | dependencies: 619 | "@turf/helpers" "^6.5.0" 620 | 621 | "@turf/line-intersect@^6.5.0": 622 | version "6.5.0" 623 | resolved "https://registry.yarnpkg.com/@turf/line-intersect/-/line-intersect-6.5.0.tgz#dea48348b30c093715d2195d2dd7524aee4cf020" 624 | integrity sha512-CS6R1tZvVQD390G9Ea4pmpM6mJGPWoL82jD46y0q1KSor9s6HupMIo1kY4Ny+AEYQl9jd21V3Scz20eldpbTVA== 625 | dependencies: 626 | "@turf/helpers" "^6.5.0" 627 | "@turf/invariant" "^6.5.0" 628 | "@turf/line-segment" "^6.5.0" 629 | "@turf/meta" "^6.5.0" 630 | geojson-rbush "3.x" 631 | 632 | "@turf/line-segment@^6.5.0": 633 | version "6.5.0" 634 | resolved "https://registry.yarnpkg.com/@turf/line-segment/-/line-segment-6.5.0.tgz#ee73f3ffcb7c956203b64ed966d96af380a4dd65" 635 | integrity sha512-jI625Ho4jSuJESNq66Mmi290ZJ5pPZiQZruPVpmHkUw257Pew0alMmb6YrqYNnLUuiVVONxAAKXUVeeUGtycfw== 636 | dependencies: 637 | "@turf/helpers" "^6.5.0" 638 | "@turf/invariant" "^6.5.0" 639 | "@turf/meta" "^6.5.0" 640 | 641 | "@turf/meta@6.x", "@turf/meta@^6.5.0": 642 | version "6.5.0" 643 | resolved "https://registry.yarnpkg.com/@turf/meta/-/meta-6.5.0.tgz#b725c3653c9f432133eaa04d3421f7e51e0418ca" 644 | integrity sha512-RrArvtsV0vdsCBegoBtOalgdSOfkBrTJ07VkpiCnq/491W67hnMWmDu7e6Ztw0C3WldRYTXkg3SumfdzZxLBHA== 645 | dependencies: 646 | "@turf/helpers" "^6.5.0" 647 | 648 | "@turf/polygon-to-line@^6.5.0": 649 | version "6.5.0" 650 | resolved "https://registry.yarnpkg.com/@turf/polygon-to-line/-/polygon-to-line-6.5.0.tgz#4dc86db66168b32bb83ce448cf966208a447d952" 651 | integrity sha512-5p4n/ij97EIttAq+ewSnKt0ruvuM+LIDzuczSzuHTpq4oS7Oq8yqg5TQ4nzMVuK41r/tALCk7nAoBuw3Su4Gcw== 652 | dependencies: 653 | "@turf/helpers" "^6.5.0" 654 | "@turf/invariant" "^6.5.0" 655 | 656 | "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": 657 | version "7.1.19" 658 | resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460" 659 | integrity sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw== 660 | dependencies: 661 | "@babel/parser" "^7.1.0" 662 | "@babel/types" "^7.0.0" 663 | "@types/babel__generator" "*" 664 | "@types/babel__template" "*" 665 | "@types/babel__traverse" "*" 666 | 667 | "@types/babel__generator@*": 668 | version "7.6.4" 669 | resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" 670 | integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== 671 | dependencies: 672 | "@babel/types" "^7.0.0" 673 | 674 | "@types/babel__template@*": 675 | version "7.4.1" 676 | resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" 677 | integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== 678 | dependencies: 679 | "@babel/parser" "^7.1.0" 680 | "@babel/types" "^7.0.0" 681 | 682 | "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": 683 | version "7.17.1" 684 | resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.17.1.tgz#1a0e73e8c28c7e832656db372b779bfd2ef37314" 685 | integrity sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA== 686 | dependencies: 687 | "@babel/types" "^7.3.0" 688 | 689 | "@types/estree@*": 690 | version "0.0.51" 691 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" 692 | integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== 693 | 694 | "@types/estree@0.0.39": 695 | version "0.0.39" 696 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" 697 | integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== 698 | 699 | "@types/geojson@7946.0.8", "@types/geojson@^7946.0.8": 700 | version "7946.0.8" 701 | resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.8.tgz#30744afdb385e2945e22f3b033f897f76b1f12ca" 702 | integrity sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA== 703 | 704 | "@types/graceful-fs@^4.1.2": 705 | version "4.1.5" 706 | resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" 707 | integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== 708 | dependencies: 709 | "@types/node" "*" 710 | 711 | "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": 712 | version "2.0.4" 713 | resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" 714 | integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== 715 | 716 | "@types/istanbul-lib-report@*": 717 | version "3.0.0" 718 | resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" 719 | integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== 720 | dependencies: 721 | "@types/istanbul-lib-coverage" "*" 722 | 723 | "@types/istanbul-reports@^3.0.0": 724 | version "3.0.1" 725 | resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" 726 | integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== 727 | dependencies: 728 | "@types/istanbul-lib-report" "*" 729 | 730 | "@types/jest@^27.4.1": 731 | version "27.5.1" 732 | resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.5.1.tgz#2c8b6dc6ff85c33bcd07d0b62cb3d19ddfdb3ab9" 733 | integrity sha512-fUy7YRpT+rHXto1YlL+J9rs0uLGyiqVt3ZOTQR+4ROc47yNl8WLdVLgUloBRhOxP1PZvguHl44T3H0wAWxahYQ== 734 | dependencies: 735 | jest-matcher-utils "^27.0.0" 736 | pretty-format "^27.0.0" 737 | 738 | "@types/node@*": 739 | version "17.0.38" 740 | resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.38.tgz#f8bb07c371ccb1903f3752872c89f44006132947" 741 | integrity sha512-5jY9RhV7c0Z4Jy09G+NIDTsCZ5G0L5n+Z+p+Y7t5VJHM30bgwzSjVtlcBxqAj+6L/swIlvtOSzr8rBk/aNyV2g== 742 | 743 | "@types/prettier@^2.1.5": 744 | version "2.6.3" 745 | resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.6.3.tgz#68ada76827b0010d0db071f739314fa429943d0a" 746 | integrity sha512-ymZk3LEC/fsut+/Q5qejp6R9O1rMxz3XaRHDV6kX8MrGAhOSPqVARbDi+EZvInBpw+BnCX3TD240byVkOfQsHg== 747 | 748 | "@types/resolve@1.17.1": 749 | version "1.17.1" 750 | resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" 751 | integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== 752 | dependencies: 753 | "@types/node" "*" 754 | 755 | "@types/stack-utils@^2.0.0": 756 | version "2.0.1" 757 | resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" 758 | integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== 759 | 760 | "@types/yargs-parser@*": 761 | version "21.0.0" 762 | resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" 763 | integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== 764 | 765 | "@types/yargs@^16.0.0": 766 | version "16.0.4" 767 | resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.4.tgz#26aad98dd2c2a38e421086ea9ad42b9e51642977" 768 | integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw== 769 | dependencies: 770 | "@types/yargs-parser" "*" 771 | 772 | "@yarn-tool/resolve-package@^1.0.40": 773 | version "1.0.47" 774 | resolved "https://registry.yarnpkg.com/@yarn-tool/resolve-package/-/resolve-package-1.0.47.tgz#8ec25f291a316280a281632331e88926a66fdf19" 775 | integrity sha512-Zaw58gQxjQceJqhqybJi1oUDaORT8i2GTgwICPs8v/X/Pkx35FXQba69ldHVg5pQZ6YLKpROXgyHvBaCJOFXiA== 776 | dependencies: 777 | pkg-dir "< 6 >= 5" 778 | tslib "^2" 779 | upath2 "^3.1.13" 780 | 781 | abab@^2.0.3, abab@^2.0.5: 782 | version "2.0.6" 783 | resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" 784 | integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== 785 | 786 | acorn-globals@^6.0.0: 787 | version "6.0.0" 788 | resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" 789 | integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== 790 | dependencies: 791 | acorn "^7.1.1" 792 | acorn-walk "^7.1.1" 793 | 794 | acorn-walk@^7.1.1: 795 | version "7.2.0" 796 | resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" 797 | integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== 798 | 799 | acorn@^7.1.1: 800 | version "7.4.1" 801 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" 802 | integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== 803 | 804 | acorn@^8.2.4: 805 | version "8.7.1" 806 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" 807 | integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== 808 | 809 | agent-base@6: 810 | version "6.0.2" 811 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" 812 | integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== 813 | dependencies: 814 | debug "4" 815 | 816 | ansi-escapes@^4.2.1: 817 | version "4.3.2" 818 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" 819 | integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== 820 | dependencies: 821 | type-fest "^0.21.3" 822 | 823 | ansi-regex@^5.0.1: 824 | version "5.0.1" 825 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 826 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 827 | 828 | ansi-styles@^3.2.1: 829 | version "3.2.1" 830 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 831 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 832 | dependencies: 833 | color-convert "^1.9.0" 834 | 835 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 836 | version "4.3.0" 837 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 838 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 839 | dependencies: 840 | color-convert "^2.0.1" 841 | 842 | ansi-styles@^5.0.0: 843 | version "5.2.0" 844 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" 845 | integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== 846 | 847 | anymatch@^3.0.3: 848 | version "3.1.2" 849 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" 850 | integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== 851 | dependencies: 852 | normalize-path "^3.0.0" 853 | picomatch "^2.0.4" 854 | 855 | argparse@^1.0.7: 856 | version "1.0.10" 857 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 858 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 859 | dependencies: 860 | sprintf-js "~1.0.2" 861 | 862 | asynckit@^0.4.0: 863 | version "0.4.0" 864 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 865 | integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== 866 | 867 | babel-jest@^27.5.1: 868 | version "27.5.1" 869 | resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444" 870 | integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg== 871 | dependencies: 872 | "@jest/transform" "^27.5.1" 873 | "@jest/types" "^27.5.1" 874 | "@types/babel__core" "^7.1.14" 875 | babel-plugin-istanbul "^6.1.1" 876 | babel-preset-jest "^27.5.1" 877 | chalk "^4.0.0" 878 | graceful-fs "^4.2.9" 879 | slash "^3.0.0" 880 | 881 | babel-plugin-istanbul@^6.1.1: 882 | version "6.1.1" 883 | resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" 884 | integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== 885 | dependencies: 886 | "@babel/helper-plugin-utils" "^7.0.0" 887 | "@istanbuljs/load-nyc-config" "^1.0.0" 888 | "@istanbuljs/schema" "^0.1.2" 889 | istanbul-lib-instrument "^5.0.4" 890 | test-exclude "^6.0.0" 891 | 892 | babel-plugin-jest-hoist@^27.5.1: 893 | version "27.5.1" 894 | resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz#9be98ecf28c331eb9f5df9c72d6f89deb8181c2e" 895 | integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ== 896 | dependencies: 897 | "@babel/template" "^7.3.3" 898 | "@babel/types" "^7.3.3" 899 | "@types/babel__core" "^7.0.0" 900 | "@types/babel__traverse" "^7.0.6" 901 | 902 | babel-preset-current-node-syntax@^1.0.0: 903 | version "1.0.1" 904 | resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" 905 | integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== 906 | dependencies: 907 | "@babel/plugin-syntax-async-generators" "^7.8.4" 908 | "@babel/plugin-syntax-bigint" "^7.8.3" 909 | "@babel/plugin-syntax-class-properties" "^7.8.3" 910 | "@babel/plugin-syntax-import-meta" "^7.8.3" 911 | "@babel/plugin-syntax-json-strings" "^7.8.3" 912 | "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" 913 | "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" 914 | "@babel/plugin-syntax-numeric-separator" "^7.8.3" 915 | "@babel/plugin-syntax-object-rest-spread" "^7.8.3" 916 | "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" 917 | "@babel/plugin-syntax-optional-chaining" "^7.8.3" 918 | "@babel/plugin-syntax-top-level-await" "^7.8.3" 919 | 920 | babel-preset-jest@^27.5.1: 921 | version "27.5.1" 922 | resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz#91f10f58034cb7989cb4f962b69fa6eef6a6bc81" 923 | integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag== 924 | dependencies: 925 | babel-plugin-jest-hoist "^27.5.1" 926 | babel-preset-current-node-syntax "^1.0.0" 927 | 928 | balanced-match@^1.0.0: 929 | version "1.0.2" 930 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 931 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 932 | 933 | brace-expansion@^1.1.7: 934 | version "1.1.11" 935 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 936 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 937 | dependencies: 938 | balanced-match "^1.0.0" 939 | concat-map "0.0.1" 940 | 941 | braces@^3.0.2: 942 | version "3.0.2" 943 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 944 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 945 | dependencies: 946 | fill-range "^7.0.1" 947 | 948 | browser-process-hrtime@^1.0.0: 949 | version "1.0.0" 950 | resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" 951 | integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== 952 | 953 | browserslist@^4.20.2: 954 | version "4.20.3" 955 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.3.tgz#eb7572f49ec430e054f56d52ff0ebe9be915f8bf" 956 | integrity sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg== 957 | dependencies: 958 | caniuse-lite "^1.0.30001332" 959 | electron-to-chromium "^1.4.118" 960 | escalade "^3.1.1" 961 | node-releases "^2.0.3" 962 | picocolors "^1.0.0" 963 | 964 | bs-logger@0.x: 965 | version "0.2.6" 966 | resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" 967 | integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== 968 | dependencies: 969 | fast-json-stable-stringify "2.x" 970 | 971 | bser@2.1.1: 972 | version "2.1.1" 973 | resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" 974 | integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== 975 | dependencies: 976 | node-int64 "^0.4.0" 977 | 978 | buffer-from@^1.0.0: 979 | version "1.1.2" 980 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" 981 | integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== 982 | 983 | builtin-modules@^3.0.0: 984 | version "3.3.0" 985 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" 986 | integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== 987 | 988 | callsites@^3.0.0: 989 | version "3.1.0" 990 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 991 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 992 | 993 | camelcase@^5.3.1: 994 | version "5.3.1" 995 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" 996 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== 997 | 998 | camelcase@^6.2.0: 999 | version "6.3.0" 1000 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" 1001 | integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== 1002 | 1003 | caniuse-lite@^1.0.30001332: 1004 | version "1.0.30001344" 1005 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001344.tgz#8a1e7fdc4db9c2ec79a05e9fd68eb93a761888bb" 1006 | integrity sha512-0ZFjnlCaXNOAYcV7i+TtdKBp0L/3XEU2MF/x6Du1lrh+SRX4IfzIVL4HNJg5pB2PmFb8rszIGyOvsZnqqRoc2g== 1007 | 1008 | chalk@^2.0.0: 1009 | version "2.4.2" 1010 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 1011 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 1012 | dependencies: 1013 | ansi-styles "^3.2.1" 1014 | escape-string-regexp "^1.0.5" 1015 | supports-color "^5.3.0" 1016 | 1017 | chalk@^4.0.0: 1018 | version "4.1.2" 1019 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 1020 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 1021 | dependencies: 1022 | ansi-styles "^4.1.0" 1023 | supports-color "^7.1.0" 1024 | 1025 | char-regex@^1.0.2: 1026 | version "1.0.2" 1027 | resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" 1028 | integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== 1029 | 1030 | ci-info@^3.2.0: 1031 | version "3.3.1" 1032 | resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.1.tgz#58331f6f472a25fe3a50a351ae3052936c2c7f32" 1033 | integrity sha512-SXgeMX9VwDe7iFFaEWkA5AstuER9YKqy4EhHqr4DVqkwmD9rpVimkMKWHdjn30Ja45txyjhSn63lVX69eVCckg== 1034 | 1035 | cjs-module-lexer@^1.0.0: 1036 | version "1.2.2" 1037 | resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" 1038 | integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== 1039 | 1040 | cliui@^7.0.2: 1041 | version "7.0.4" 1042 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" 1043 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== 1044 | dependencies: 1045 | string-width "^4.2.0" 1046 | strip-ansi "^6.0.0" 1047 | wrap-ansi "^7.0.0" 1048 | 1049 | co@^4.6.0: 1050 | version "4.6.0" 1051 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" 1052 | integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== 1053 | 1054 | collect-v8-coverage@^1.0.0: 1055 | version "1.0.1" 1056 | resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" 1057 | integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== 1058 | 1059 | color-convert@^1.9.0: 1060 | version "1.9.3" 1061 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 1062 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 1063 | dependencies: 1064 | color-name "1.1.3" 1065 | 1066 | color-convert@^2.0.1: 1067 | version "2.0.1" 1068 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 1069 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 1070 | dependencies: 1071 | color-name "~1.1.4" 1072 | 1073 | color-name@1.1.3: 1074 | version "1.1.3" 1075 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 1076 | integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== 1077 | 1078 | color-name@~1.1.4: 1079 | version "1.1.4" 1080 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 1081 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 1082 | 1083 | combined-stream@^1.0.8: 1084 | version "1.0.8" 1085 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 1086 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 1087 | dependencies: 1088 | delayed-stream "~1.0.0" 1089 | 1090 | commondir@^1.0.1: 1091 | version "1.0.1" 1092 | resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" 1093 | integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== 1094 | 1095 | concat-map@0.0.1: 1096 | version "0.0.1" 1097 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 1098 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 1099 | 1100 | convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: 1101 | version "1.8.0" 1102 | resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" 1103 | integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== 1104 | dependencies: 1105 | safe-buffer "~5.1.1" 1106 | 1107 | cross-spawn@^7.0.3: 1108 | version "7.0.3" 1109 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 1110 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 1111 | dependencies: 1112 | path-key "^3.1.0" 1113 | shebang-command "^2.0.0" 1114 | which "^2.0.1" 1115 | 1116 | cssom@^0.4.4: 1117 | version "0.4.4" 1118 | resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" 1119 | integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== 1120 | 1121 | cssom@~0.3.6: 1122 | version "0.3.8" 1123 | resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" 1124 | integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== 1125 | 1126 | cssstyle@^2.3.0: 1127 | version "2.3.0" 1128 | resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" 1129 | integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== 1130 | dependencies: 1131 | cssom "~0.3.6" 1132 | 1133 | data-urls@^2.0.0: 1134 | version "2.0.0" 1135 | resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" 1136 | integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== 1137 | dependencies: 1138 | abab "^2.0.3" 1139 | whatwg-mimetype "^2.3.0" 1140 | whatwg-url "^8.0.0" 1141 | 1142 | debug@4, debug@^4.1.0, debug@^4.1.1: 1143 | version "4.3.4" 1144 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 1145 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 1146 | dependencies: 1147 | ms "2.1.2" 1148 | 1149 | decimal.js@^10.2.1: 1150 | version "10.3.1" 1151 | resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" 1152 | integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== 1153 | 1154 | dedent@^0.7.0: 1155 | version "0.7.0" 1156 | resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" 1157 | integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== 1158 | 1159 | deep-is@~0.1.3: 1160 | version "0.1.4" 1161 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" 1162 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== 1163 | 1164 | deepmerge@^4.2.2: 1165 | version "4.2.2" 1166 | resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" 1167 | integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== 1168 | 1169 | delayed-stream@~1.0.0: 1170 | version "1.0.0" 1171 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 1172 | integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== 1173 | 1174 | detect-newline@^3.0.0: 1175 | version "3.1.0" 1176 | resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" 1177 | integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== 1178 | 1179 | diff-sequences@^27.5.1: 1180 | version "27.5.1" 1181 | resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" 1182 | integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== 1183 | 1184 | domexception@^2.0.1: 1185 | version "2.0.1" 1186 | resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" 1187 | integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== 1188 | dependencies: 1189 | webidl-conversions "^5.0.0" 1190 | 1191 | electron-to-chromium@^1.4.118: 1192 | version "1.4.143" 1193 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.143.tgz#10f1bb595ad6cd893c05097039c685dcf5c8e30c" 1194 | integrity sha512-2hIgvu0+pDfXIqmVmV5X6iwMjQ2KxDsWKwM+oI1fABEOy/Dqmll0QJRmIQ3rm+XaoUa/qKrmy5h7LSTFQ6Ldzg== 1195 | 1196 | emittery@^0.8.1: 1197 | version "0.8.1" 1198 | resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" 1199 | integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== 1200 | 1201 | emoji-regex@^8.0.0: 1202 | version "8.0.0" 1203 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 1204 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 1205 | 1206 | error-ex@^1.3.1: 1207 | version "1.3.2" 1208 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 1209 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 1210 | dependencies: 1211 | is-arrayish "^0.2.1" 1212 | 1213 | escalade@^3.1.1: 1214 | version "3.1.1" 1215 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 1216 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 1217 | 1218 | escape-string-regexp@^1.0.5: 1219 | version "1.0.5" 1220 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 1221 | integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== 1222 | 1223 | escape-string-regexp@^2.0.0: 1224 | version "2.0.0" 1225 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" 1226 | integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== 1227 | 1228 | escodegen@^2.0.0: 1229 | version "2.0.0" 1230 | resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" 1231 | integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== 1232 | dependencies: 1233 | esprima "^4.0.1" 1234 | estraverse "^5.2.0" 1235 | esutils "^2.0.2" 1236 | optionator "^0.8.1" 1237 | optionalDependencies: 1238 | source-map "~0.6.1" 1239 | 1240 | esprima@^4.0.0, esprima@^4.0.1: 1241 | version "4.0.1" 1242 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 1243 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 1244 | 1245 | estraverse@^5.2.0: 1246 | version "5.3.0" 1247 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" 1248 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== 1249 | 1250 | estree-walker@^1.0.1: 1251 | version "1.0.1" 1252 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" 1253 | integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== 1254 | 1255 | estree-walker@^2.0.1: 1256 | version "2.0.2" 1257 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" 1258 | integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== 1259 | 1260 | esutils@^2.0.2: 1261 | version "2.0.3" 1262 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 1263 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 1264 | 1265 | execa@^5.0.0: 1266 | version "5.1.1" 1267 | resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" 1268 | integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== 1269 | dependencies: 1270 | cross-spawn "^7.0.3" 1271 | get-stream "^6.0.0" 1272 | human-signals "^2.1.0" 1273 | is-stream "^2.0.0" 1274 | merge-stream "^2.0.0" 1275 | npm-run-path "^4.0.1" 1276 | onetime "^5.1.2" 1277 | signal-exit "^3.0.3" 1278 | strip-final-newline "^2.0.0" 1279 | 1280 | exit@^0.1.2: 1281 | version "0.1.2" 1282 | resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" 1283 | integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== 1284 | 1285 | expect@^27.5.1: 1286 | version "27.5.1" 1287 | resolved "https://registry.yarnpkg.com/expect/-/expect-27.5.1.tgz#83ce59f1e5bdf5f9d2b94b61d2050db48f3fef74" 1288 | integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw== 1289 | dependencies: 1290 | "@jest/types" "^27.5.1" 1291 | jest-get-type "^27.5.1" 1292 | jest-matcher-utils "^27.5.1" 1293 | jest-message-util "^27.5.1" 1294 | 1295 | fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: 1296 | version "2.1.0" 1297 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 1298 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 1299 | 1300 | fast-levenshtein@~2.0.6: 1301 | version "2.0.6" 1302 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 1303 | integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== 1304 | 1305 | fb-watchman@^2.0.0: 1306 | version "2.0.1" 1307 | resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" 1308 | integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== 1309 | dependencies: 1310 | bser "2.1.1" 1311 | 1312 | fill-range@^7.0.1: 1313 | version "7.0.1" 1314 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 1315 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 1316 | dependencies: 1317 | to-regex-range "^5.0.1" 1318 | 1319 | find-cache-dir@^3.3.2: 1320 | version "3.3.2" 1321 | resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" 1322 | integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== 1323 | dependencies: 1324 | commondir "^1.0.1" 1325 | make-dir "^3.0.2" 1326 | pkg-dir "^4.1.0" 1327 | 1328 | find-up@^4.0.0, find-up@^4.1.0: 1329 | version "4.1.0" 1330 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" 1331 | integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== 1332 | dependencies: 1333 | locate-path "^5.0.0" 1334 | path-exists "^4.0.0" 1335 | 1336 | find-up@^5.0.0: 1337 | version "5.0.0" 1338 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" 1339 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 1340 | dependencies: 1341 | locate-path "^6.0.0" 1342 | path-exists "^4.0.0" 1343 | 1344 | form-data@^3.0.0: 1345 | version "3.0.1" 1346 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" 1347 | integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== 1348 | dependencies: 1349 | asynckit "^0.4.0" 1350 | combined-stream "^1.0.8" 1351 | mime-types "^2.1.12" 1352 | 1353 | fs-extra@^10.0.0: 1354 | version "10.1.0" 1355 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" 1356 | integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== 1357 | dependencies: 1358 | graceful-fs "^4.2.0" 1359 | jsonfile "^6.0.1" 1360 | universalify "^2.0.0" 1361 | 1362 | fs.realpath@^1.0.0: 1363 | version "1.0.0" 1364 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1365 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 1366 | 1367 | fsevents@^2.3.2, fsevents@~2.3.2: 1368 | version "2.3.2" 1369 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 1370 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 1371 | 1372 | function-bind@^1.1.1: 1373 | version "1.1.1" 1374 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 1375 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 1376 | 1377 | gensync@^1.0.0-beta.2: 1378 | version "1.0.0-beta.2" 1379 | resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" 1380 | integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== 1381 | 1382 | geojson-rbush@3.x: 1383 | version "3.2.0" 1384 | resolved "https://registry.yarnpkg.com/geojson-rbush/-/geojson-rbush-3.2.0.tgz#8b543cf0d56f99b78faf1da52bb66acad6dfc290" 1385 | integrity sha512-oVltQTXolxvsz1sZnutlSuLDEcQAKYC/uXt9zDzJJ6bu0W+baTI8LZBaTup5afzibEH4N3jlq2p+a152wlBJ7w== 1386 | dependencies: 1387 | "@turf/bbox" "*" 1388 | "@turf/helpers" "6.x" 1389 | "@turf/meta" "6.x" 1390 | "@types/geojson" "7946.0.8" 1391 | rbush "^3.0.1" 1392 | 1393 | get-caller-file@^2.0.5: 1394 | version "2.0.5" 1395 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 1396 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 1397 | 1398 | get-package-type@^0.1.0: 1399 | version "0.1.0" 1400 | resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" 1401 | integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== 1402 | 1403 | get-stream@^6.0.0: 1404 | version "6.0.1" 1405 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" 1406 | integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== 1407 | 1408 | glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: 1409 | version "7.2.3" 1410 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" 1411 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== 1412 | dependencies: 1413 | fs.realpath "^1.0.0" 1414 | inflight "^1.0.4" 1415 | inherits "2" 1416 | minimatch "^3.1.1" 1417 | once "^1.3.0" 1418 | path-is-absolute "^1.0.0" 1419 | 1420 | globals@^11.1.0: 1421 | version "11.12.0" 1422 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" 1423 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== 1424 | 1425 | graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.9: 1426 | version "4.2.10" 1427 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" 1428 | integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== 1429 | 1430 | has-flag@^3.0.0: 1431 | version "3.0.0" 1432 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 1433 | integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== 1434 | 1435 | has-flag@^4.0.0: 1436 | version "4.0.0" 1437 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 1438 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 1439 | 1440 | has@^1.0.3: 1441 | version "1.0.3" 1442 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 1443 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 1444 | dependencies: 1445 | function-bind "^1.1.1" 1446 | 1447 | html-encoding-sniffer@^2.0.1: 1448 | version "2.0.1" 1449 | resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" 1450 | integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== 1451 | dependencies: 1452 | whatwg-encoding "^1.0.5" 1453 | 1454 | html-escaper@^2.0.0: 1455 | version "2.0.2" 1456 | resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" 1457 | integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== 1458 | 1459 | http-proxy-agent@^4.0.1: 1460 | version "4.0.1" 1461 | resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" 1462 | integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== 1463 | dependencies: 1464 | "@tootallnate/once" "1" 1465 | agent-base "6" 1466 | debug "4" 1467 | 1468 | https-proxy-agent@^5.0.0: 1469 | version "5.0.1" 1470 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" 1471 | integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== 1472 | dependencies: 1473 | agent-base "6" 1474 | debug "4" 1475 | 1476 | human-signals@^2.1.0: 1477 | version "2.1.0" 1478 | resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" 1479 | integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== 1480 | 1481 | iconv-lite@0.4.24: 1482 | version "0.4.24" 1483 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 1484 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 1485 | dependencies: 1486 | safer-buffer ">= 2.1.2 < 3" 1487 | 1488 | import-local@^3.0.2: 1489 | version "3.1.0" 1490 | resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" 1491 | integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== 1492 | dependencies: 1493 | pkg-dir "^4.2.0" 1494 | resolve-cwd "^3.0.0" 1495 | 1496 | imurmurhash@^0.1.4: 1497 | version "0.1.4" 1498 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1499 | integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== 1500 | 1501 | inflight@^1.0.4: 1502 | version "1.0.6" 1503 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1504 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 1505 | dependencies: 1506 | once "^1.3.0" 1507 | wrappy "1" 1508 | 1509 | inherits@2: 1510 | version "2.0.4" 1511 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1512 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1513 | 1514 | is-arrayish@^0.2.1: 1515 | version "0.2.1" 1516 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 1517 | integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== 1518 | 1519 | is-builtin-module@^3.1.0: 1520 | version "3.1.0" 1521 | resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.1.0.tgz#6fdb24313b1c03b75f8b9711c0feb8c30b903b00" 1522 | integrity sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg== 1523 | dependencies: 1524 | builtin-modules "^3.0.0" 1525 | 1526 | is-core-module@^2.8.1: 1527 | version "2.9.0" 1528 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" 1529 | integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== 1530 | dependencies: 1531 | has "^1.0.3" 1532 | 1533 | is-fullwidth-code-point@^3.0.0: 1534 | version "3.0.0" 1535 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 1536 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 1537 | 1538 | is-generator-fn@^2.0.0: 1539 | version "2.1.0" 1540 | resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" 1541 | integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== 1542 | 1543 | is-module@^1.0.0: 1544 | version "1.0.0" 1545 | resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" 1546 | integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== 1547 | 1548 | is-number@^7.0.0: 1549 | version "7.0.0" 1550 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 1551 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 1552 | 1553 | is-potential-custom-element-name@^1.0.1: 1554 | version "1.0.1" 1555 | resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" 1556 | integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== 1557 | 1558 | is-reference@^1.2.1: 1559 | version "1.2.1" 1560 | resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" 1561 | integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== 1562 | dependencies: 1563 | "@types/estree" "*" 1564 | 1565 | is-stream@^2.0.0: 1566 | version "2.0.1" 1567 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" 1568 | integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== 1569 | 1570 | is-typedarray@^1.0.0: 1571 | version "1.0.0" 1572 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 1573 | integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== 1574 | 1575 | isexe@^2.0.0: 1576 | version "2.0.0" 1577 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1578 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== 1579 | 1580 | istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: 1581 | version "3.2.0" 1582 | resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" 1583 | integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== 1584 | 1585 | istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: 1586 | version "5.2.0" 1587 | resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz#31d18bdd127f825dd02ea7bfdfd906f8ab840e9f" 1588 | integrity sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A== 1589 | dependencies: 1590 | "@babel/core" "^7.12.3" 1591 | "@babel/parser" "^7.14.7" 1592 | "@istanbuljs/schema" "^0.1.2" 1593 | istanbul-lib-coverage "^3.2.0" 1594 | semver "^6.3.0" 1595 | 1596 | istanbul-lib-report@^3.0.0: 1597 | version "3.0.0" 1598 | resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" 1599 | integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== 1600 | dependencies: 1601 | istanbul-lib-coverage "^3.0.0" 1602 | make-dir "^3.0.0" 1603 | supports-color "^7.1.0" 1604 | 1605 | istanbul-lib-source-maps@^4.0.0: 1606 | version "4.0.1" 1607 | resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" 1608 | integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== 1609 | dependencies: 1610 | debug "^4.1.1" 1611 | istanbul-lib-coverage "^3.0.0" 1612 | source-map "^0.6.1" 1613 | 1614 | istanbul-reports@^3.1.3: 1615 | version "3.1.4" 1616 | resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.4.tgz#1b6f068ecbc6c331040aab5741991273e609e40c" 1617 | integrity sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw== 1618 | dependencies: 1619 | html-escaper "^2.0.0" 1620 | istanbul-lib-report "^3.0.0" 1621 | 1622 | jest-changed-files@^27.5.1: 1623 | version "27.5.1" 1624 | resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.5.1.tgz#a348aed00ec9bf671cc58a66fcbe7c3dfd6a68f5" 1625 | integrity sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw== 1626 | dependencies: 1627 | "@jest/types" "^27.5.1" 1628 | execa "^5.0.0" 1629 | throat "^6.0.1" 1630 | 1631 | jest-circus@^27.5.1: 1632 | version "27.5.1" 1633 | resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc" 1634 | integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw== 1635 | dependencies: 1636 | "@jest/environment" "^27.5.1" 1637 | "@jest/test-result" "^27.5.1" 1638 | "@jest/types" "^27.5.1" 1639 | "@types/node" "*" 1640 | chalk "^4.0.0" 1641 | co "^4.6.0" 1642 | dedent "^0.7.0" 1643 | expect "^27.5.1" 1644 | is-generator-fn "^2.0.0" 1645 | jest-each "^27.5.1" 1646 | jest-matcher-utils "^27.5.1" 1647 | jest-message-util "^27.5.1" 1648 | jest-runtime "^27.5.1" 1649 | jest-snapshot "^27.5.1" 1650 | jest-util "^27.5.1" 1651 | pretty-format "^27.5.1" 1652 | slash "^3.0.0" 1653 | stack-utils "^2.0.3" 1654 | throat "^6.0.1" 1655 | 1656 | jest-cli@^27.5.1: 1657 | version "27.5.1" 1658 | resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.5.1.tgz#278794a6e6458ea8029547e6c6cbf673bd30b145" 1659 | integrity sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw== 1660 | dependencies: 1661 | "@jest/core" "^27.5.1" 1662 | "@jest/test-result" "^27.5.1" 1663 | "@jest/types" "^27.5.1" 1664 | chalk "^4.0.0" 1665 | exit "^0.1.2" 1666 | graceful-fs "^4.2.9" 1667 | import-local "^3.0.2" 1668 | jest-config "^27.5.1" 1669 | jest-util "^27.5.1" 1670 | jest-validate "^27.5.1" 1671 | prompts "^2.0.1" 1672 | yargs "^16.2.0" 1673 | 1674 | jest-config@^27.5.1: 1675 | version "27.5.1" 1676 | resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41" 1677 | integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA== 1678 | dependencies: 1679 | "@babel/core" "^7.8.0" 1680 | "@jest/test-sequencer" "^27.5.1" 1681 | "@jest/types" "^27.5.1" 1682 | babel-jest "^27.5.1" 1683 | chalk "^4.0.0" 1684 | ci-info "^3.2.0" 1685 | deepmerge "^4.2.2" 1686 | glob "^7.1.1" 1687 | graceful-fs "^4.2.9" 1688 | jest-circus "^27.5.1" 1689 | jest-environment-jsdom "^27.5.1" 1690 | jest-environment-node "^27.5.1" 1691 | jest-get-type "^27.5.1" 1692 | jest-jasmine2 "^27.5.1" 1693 | jest-regex-util "^27.5.1" 1694 | jest-resolve "^27.5.1" 1695 | jest-runner "^27.5.1" 1696 | jest-util "^27.5.1" 1697 | jest-validate "^27.5.1" 1698 | micromatch "^4.0.4" 1699 | parse-json "^5.2.0" 1700 | pretty-format "^27.5.1" 1701 | slash "^3.0.0" 1702 | strip-json-comments "^3.1.1" 1703 | 1704 | jest-diff@^27.5.1: 1705 | version "27.5.1" 1706 | resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" 1707 | integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== 1708 | dependencies: 1709 | chalk "^4.0.0" 1710 | diff-sequences "^27.5.1" 1711 | jest-get-type "^27.5.1" 1712 | pretty-format "^27.5.1" 1713 | 1714 | jest-docblock@^27.5.1: 1715 | version "27.5.1" 1716 | resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0" 1717 | integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ== 1718 | dependencies: 1719 | detect-newline "^3.0.0" 1720 | 1721 | jest-each@^27.5.1: 1722 | version "27.5.1" 1723 | resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.5.1.tgz#5bc87016f45ed9507fed6e4702a5b468a5b2c44e" 1724 | integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ== 1725 | dependencies: 1726 | "@jest/types" "^27.5.1" 1727 | chalk "^4.0.0" 1728 | jest-get-type "^27.5.1" 1729 | jest-util "^27.5.1" 1730 | pretty-format "^27.5.1" 1731 | 1732 | jest-environment-jsdom@^27.5.1: 1733 | version "27.5.1" 1734 | resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz#ea9ccd1fc610209655a77898f86b2b559516a546" 1735 | integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw== 1736 | dependencies: 1737 | "@jest/environment" "^27.5.1" 1738 | "@jest/fake-timers" "^27.5.1" 1739 | "@jest/types" "^27.5.1" 1740 | "@types/node" "*" 1741 | jest-mock "^27.5.1" 1742 | jest-util "^27.5.1" 1743 | jsdom "^16.6.0" 1744 | 1745 | jest-environment-node@^27.5.1: 1746 | version "27.5.1" 1747 | resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.5.1.tgz#dedc2cfe52fab6b8f5714b4808aefa85357a365e" 1748 | integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw== 1749 | dependencies: 1750 | "@jest/environment" "^27.5.1" 1751 | "@jest/fake-timers" "^27.5.1" 1752 | "@jest/types" "^27.5.1" 1753 | "@types/node" "*" 1754 | jest-mock "^27.5.1" 1755 | jest-util "^27.5.1" 1756 | 1757 | jest-get-type@^27.5.1: 1758 | version "27.5.1" 1759 | resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" 1760 | integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== 1761 | 1762 | jest-haste-map@^27.5.1: 1763 | version "27.5.1" 1764 | resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f" 1765 | integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng== 1766 | dependencies: 1767 | "@jest/types" "^27.5.1" 1768 | "@types/graceful-fs" "^4.1.2" 1769 | "@types/node" "*" 1770 | anymatch "^3.0.3" 1771 | fb-watchman "^2.0.0" 1772 | graceful-fs "^4.2.9" 1773 | jest-regex-util "^27.5.1" 1774 | jest-serializer "^27.5.1" 1775 | jest-util "^27.5.1" 1776 | jest-worker "^27.5.1" 1777 | micromatch "^4.0.4" 1778 | walker "^1.0.7" 1779 | optionalDependencies: 1780 | fsevents "^2.3.2" 1781 | 1782 | jest-jasmine2@^27.5.1: 1783 | version "27.5.1" 1784 | resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4" 1785 | integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ== 1786 | dependencies: 1787 | "@jest/environment" "^27.5.1" 1788 | "@jest/source-map" "^27.5.1" 1789 | "@jest/test-result" "^27.5.1" 1790 | "@jest/types" "^27.5.1" 1791 | "@types/node" "*" 1792 | chalk "^4.0.0" 1793 | co "^4.6.0" 1794 | expect "^27.5.1" 1795 | is-generator-fn "^2.0.0" 1796 | jest-each "^27.5.1" 1797 | jest-matcher-utils "^27.5.1" 1798 | jest-message-util "^27.5.1" 1799 | jest-runtime "^27.5.1" 1800 | jest-snapshot "^27.5.1" 1801 | jest-util "^27.5.1" 1802 | pretty-format "^27.5.1" 1803 | throat "^6.0.1" 1804 | 1805 | jest-leak-detector@^27.5.1: 1806 | version "27.5.1" 1807 | resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz#6ec9d54c3579dd6e3e66d70e3498adf80fde3fb8" 1808 | integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ== 1809 | dependencies: 1810 | jest-get-type "^27.5.1" 1811 | pretty-format "^27.5.1" 1812 | 1813 | jest-matcher-utils@^27.0.0, jest-matcher-utils@^27.5.1: 1814 | version "27.5.1" 1815 | resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" 1816 | integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== 1817 | dependencies: 1818 | chalk "^4.0.0" 1819 | jest-diff "^27.5.1" 1820 | jest-get-type "^27.5.1" 1821 | pretty-format "^27.5.1" 1822 | 1823 | jest-message-util@^27.5.1: 1824 | version "27.5.1" 1825 | resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf" 1826 | integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g== 1827 | dependencies: 1828 | "@babel/code-frame" "^7.12.13" 1829 | "@jest/types" "^27.5.1" 1830 | "@types/stack-utils" "^2.0.0" 1831 | chalk "^4.0.0" 1832 | graceful-fs "^4.2.9" 1833 | micromatch "^4.0.4" 1834 | pretty-format "^27.5.1" 1835 | slash "^3.0.0" 1836 | stack-utils "^2.0.3" 1837 | 1838 | jest-mock@^27.5.1: 1839 | version "27.5.1" 1840 | resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" 1841 | integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== 1842 | dependencies: 1843 | "@jest/types" "^27.5.1" 1844 | "@types/node" "*" 1845 | 1846 | jest-pnp-resolver@^1.2.2: 1847 | version "1.2.2" 1848 | resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" 1849 | integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== 1850 | 1851 | jest-regex-util@^27.5.1: 1852 | version "27.5.1" 1853 | resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" 1854 | integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== 1855 | 1856 | jest-resolve-dependencies@^27.5.1: 1857 | version "27.5.1" 1858 | resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz#d811ecc8305e731cc86dd79741ee98fed06f1da8" 1859 | integrity sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg== 1860 | dependencies: 1861 | "@jest/types" "^27.5.1" 1862 | jest-regex-util "^27.5.1" 1863 | jest-snapshot "^27.5.1" 1864 | 1865 | jest-resolve@^27.5.1: 1866 | version "27.5.1" 1867 | resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.5.1.tgz#a2f1c5a0796ec18fe9eb1536ac3814c23617b384" 1868 | integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== 1869 | dependencies: 1870 | "@jest/types" "^27.5.1" 1871 | chalk "^4.0.0" 1872 | graceful-fs "^4.2.9" 1873 | jest-haste-map "^27.5.1" 1874 | jest-pnp-resolver "^1.2.2" 1875 | jest-util "^27.5.1" 1876 | jest-validate "^27.5.1" 1877 | resolve "^1.20.0" 1878 | resolve.exports "^1.1.0" 1879 | slash "^3.0.0" 1880 | 1881 | jest-runner@^27.5.1: 1882 | version "27.5.1" 1883 | resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.5.1.tgz#071b27c1fa30d90540805c5645a0ec167c7b62e5" 1884 | integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ== 1885 | dependencies: 1886 | "@jest/console" "^27.5.1" 1887 | "@jest/environment" "^27.5.1" 1888 | "@jest/test-result" "^27.5.1" 1889 | "@jest/transform" "^27.5.1" 1890 | "@jest/types" "^27.5.1" 1891 | "@types/node" "*" 1892 | chalk "^4.0.0" 1893 | emittery "^0.8.1" 1894 | graceful-fs "^4.2.9" 1895 | jest-docblock "^27.5.1" 1896 | jest-environment-jsdom "^27.5.1" 1897 | jest-environment-node "^27.5.1" 1898 | jest-haste-map "^27.5.1" 1899 | jest-leak-detector "^27.5.1" 1900 | jest-message-util "^27.5.1" 1901 | jest-resolve "^27.5.1" 1902 | jest-runtime "^27.5.1" 1903 | jest-util "^27.5.1" 1904 | jest-worker "^27.5.1" 1905 | source-map-support "^0.5.6" 1906 | throat "^6.0.1" 1907 | 1908 | jest-runtime@^27.5.1: 1909 | version "27.5.1" 1910 | resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af" 1911 | integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A== 1912 | dependencies: 1913 | "@jest/environment" "^27.5.1" 1914 | "@jest/fake-timers" "^27.5.1" 1915 | "@jest/globals" "^27.5.1" 1916 | "@jest/source-map" "^27.5.1" 1917 | "@jest/test-result" "^27.5.1" 1918 | "@jest/transform" "^27.5.1" 1919 | "@jest/types" "^27.5.1" 1920 | chalk "^4.0.0" 1921 | cjs-module-lexer "^1.0.0" 1922 | collect-v8-coverage "^1.0.0" 1923 | execa "^5.0.0" 1924 | glob "^7.1.3" 1925 | graceful-fs "^4.2.9" 1926 | jest-haste-map "^27.5.1" 1927 | jest-message-util "^27.5.1" 1928 | jest-mock "^27.5.1" 1929 | jest-regex-util "^27.5.1" 1930 | jest-resolve "^27.5.1" 1931 | jest-snapshot "^27.5.1" 1932 | jest-util "^27.5.1" 1933 | slash "^3.0.0" 1934 | strip-bom "^4.0.0" 1935 | 1936 | jest-serializer@^27.5.1: 1937 | version "27.5.1" 1938 | resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" 1939 | integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== 1940 | dependencies: 1941 | "@types/node" "*" 1942 | graceful-fs "^4.2.9" 1943 | 1944 | jest-snapshot@^27.5.1: 1945 | version "27.5.1" 1946 | resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.5.1.tgz#b668d50d23d38054a51b42c4039cab59ae6eb6a1" 1947 | integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA== 1948 | dependencies: 1949 | "@babel/core" "^7.7.2" 1950 | "@babel/generator" "^7.7.2" 1951 | "@babel/plugin-syntax-typescript" "^7.7.2" 1952 | "@babel/traverse" "^7.7.2" 1953 | "@babel/types" "^7.0.0" 1954 | "@jest/transform" "^27.5.1" 1955 | "@jest/types" "^27.5.1" 1956 | "@types/babel__traverse" "^7.0.4" 1957 | "@types/prettier" "^2.1.5" 1958 | babel-preset-current-node-syntax "^1.0.0" 1959 | chalk "^4.0.0" 1960 | expect "^27.5.1" 1961 | graceful-fs "^4.2.9" 1962 | jest-diff "^27.5.1" 1963 | jest-get-type "^27.5.1" 1964 | jest-haste-map "^27.5.1" 1965 | jest-matcher-utils "^27.5.1" 1966 | jest-message-util "^27.5.1" 1967 | jest-util "^27.5.1" 1968 | natural-compare "^1.4.0" 1969 | pretty-format "^27.5.1" 1970 | semver "^7.3.2" 1971 | 1972 | jest-util@^27.0.0, jest-util@^27.5.1: 1973 | version "27.5.1" 1974 | resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" 1975 | integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== 1976 | dependencies: 1977 | "@jest/types" "^27.5.1" 1978 | "@types/node" "*" 1979 | chalk "^4.0.0" 1980 | ci-info "^3.2.0" 1981 | graceful-fs "^4.2.9" 1982 | picomatch "^2.2.3" 1983 | 1984 | jest-validate@^27.5.1: 1985 | version "27.5.1" 1986 | resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.5.1.tgz#9197d54dc0bdb52260b8db40b46ae668e04df067" 1987 | integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ== 1988 | dependencies: 1989 | "@jest/types" "^27.5.1" 1990 | camelcase "^6.2.0" 1991 | chalk "^4.0.0" 1992 | jest-get-type "^27.5.1" 1993 | leven "^3.1.0" 1994 | pretty-format "^27.5.1" 1995 | 1996 | jest-watcher@^27.5.1: 1997 | version "27.5.1" 1998 | resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.5.1.tgz#71bd85fb9bde3a2c2ec4dc353437971c43c642a2" 1999 | integrity sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw== 2000 | dependencies: 2001 | "@jest/test-result" "^27.5.1" 2002 | "@jest/types" "^27.5.1" 2003 | "@types/node" "*" 2004 | ansi-escapes "^4.2.1" 2005 | chalk "^4.0.0" 2006 | jest-util "^27.5.1" 2007 | string-length "^4.0.1" 2008 | 2009 | jest-worker@^27.5.1: 2010 | version "27.5.1" 2011 | resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" 2012 | integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== 2013 | dependencies: 2014 | "@types/node" "*" 2015 | merge-stream "^2.0.0" 2016 | supports-color "^8.0.0" 2017 | 2018 | jest@^27.5.1: 2019 | version "27.5.1" 2020 | resolved "https://registry.yarnpkg.com/jest/-/jest-27.5.1.tgz#dadf33ba70a779be7a6fc33015843b51494f63fc" 2021 | integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== 2022 | dependencies: 2023 | "@jest/core" "^27.5.1" 2024 | import-local "^3.0.2" 2025 | jest-cli "^27.5.1" 2026 | 2027 | js-tokens@^4.0.0: 2028 | version "4.0.0" 2029 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 2030 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 2031 | 2032 | js-yaml@^3.13.1: 2033 | version "3.14.1" 2034 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" 2035 | integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== 2036 | dependencies: 2037 | argparse "^1.0.7" 2038 | esprima "^4.0.0" 2039 | 2040 | jsdom@^16.6.0: 2041 | version "16.7.0" 2042 | resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" 2043 | integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== 2044 | dependencies: 2045 | abab "^2.0.5" 2046 | acorn "^8.2.4" 2047 | acorn-globals "^6.0.0" 2048 | cssom "^0.4.4" 2049 | cssstyle "^2.3.0" 2050 | data-urls "^2.0.0" 2051 | decimal.js "^10.2.1" 2052 | domexception "^2.0.1" 2053 | escodegen "^2.0.0" 2054 | form-data "^3.0.0" 2055 | html-encoding-sniffer "^2.0.1" 2056 | http-proxy-agent "^4.0.1" 2057 | https-proxy-agent "^5.0.0" 2058 | is-potential-custom-element-name "^1.0.1" 2059 | nwsapi "^2.2.0" 2060 | parse5 "6.0.1" 2061 | saxes "^5.0.1" 2062 | symbol-tree "^3.2.4" 2063 | tough-cookie "^4.0.0" 2064 | w3c-hr-time "^1.0.2" 2065 | w3c-xmlserializer "^2.0.0" 2066 | webidl-conversions "^6.1.0" 2067 | whatwg-encoding "^1.0.5" 2068 | whatwg-mimetype "^2.3.0" 2069 | whatwg-url "^8.5.0" 2070 | ws "^7.4.6" 2071 | xml-name-validator "^3.0.0" 2072 | 2073 | jsesc@^2.5.1: 2074 | version "2.5.2" 2075 | resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" 2076 | integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== 2077 | 2078 | json-parse-even-better-errors@^2.3.0: 2079 | version "2.3.1" 2080 | resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" 2081 | integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== 2082 | 2083 | json5@2.x, json5@^2.2.1: 2084 | version "2.2.1" 2085 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" 2086 | integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== 2087 | 2088 | jsonfile@^6.0.1: 2089 | version "6.1.0" 2090 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" 2091 | integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== 2092 | dependencies: 2093 | universalify "^2.0.0" 2094 | optionalDependencies: 2095 | graceful-fs "^4.1.6" 2096 | 2097 | kleur@^3.0.3: 2098 | version "3.0.3" 2099 | resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" 2100 | integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== 2101 | 2102 | leven@^3.1.0: 2103 | version "3.1.0" 2104 | resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" 2105 | integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== 2106 | 2107 | levn@~0.3.0: 2108 | version "0.3.0" 2109 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" 2110 | integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== 2111 | dependencies: 2112 | prelude-ls "~1.1.2" 2113 | type-check "~0.3.2" 2114 | 2115 | lines-and-columns@^1.1.6: 2116 | version "1.2.4" 2117 | resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" 2118 | integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== 2119 | 2120 | locate-path@^5.0.0: 2121 | version "5.0.0" 2122 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" 2123 | integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== 2124 | dependencies: 2125 | p-locate "^4.1.0" 2126 | 2127 | locate-path@^6.0.0: 2128 | version "6.0.0" 2129 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" 2130 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 2131 | dependencies: 2132 | p-locate "^5.0.0" 2133 | 2134 | lodash.memoize@4.x: 2135 | version "4.1.2" 2136 | resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" 2137 | integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== 2138 | 2139 | lodash@^4.7.0: 2140 | version "4.17.21" 2141 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 2142 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 2143 | 2144 | lru-cache@^6.0.0: 2145 | version "6.0.0" 2146 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 2147 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 2148 | dependencies: 2149 | yallist "^4.0.0" 2150 | 2151 | magic-string@^0.25.7: 2152 | version "0.25.9" 2153 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" 2154 | integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== 2155 | dependencies: 2156 | sourcemap-codec "^1.4.8" 2157 | 2158 | make-dir@^3.0.0, make-dir@^3.0.2: 2159 | version "3.1.0" 2160 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" 2161 | integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== 2162 | dependencies: 2163 | semver "^6.0.0" 2164 | 2165 | make-error@1.x: 2166 | version "1.3.6" 2167 | resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" 2168 | integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== 2169 | 2170 | makeerror@1.0.12: 2171 | version "1.0.12" 2172 | resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" 2173 | integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== 2174 | dependencies: 2175 | tmpl "1.0.5" 2176 | 2177 | merge-stream@^2.0.0: 2178 | version "2.0.0" 2179 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 2180 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 2181 | 2182 | micromatch@^4.0.4: 2183 | version "4.0.5" 2184 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" 2185 | integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== 2186 | dependencies: 2187 | braces "^3.0.2" 2188 | picomatch "^2.3.1" 2189 | 2190 | mime-db@1.52.0: 2191 | version "1.52.0" 2192 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" 2193 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== 2194 | 2195 | mime-types@^2.1.12: 2196 | version "2.1.35" 2197 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" 2198 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== 2199 | dependencies: 2200 | mime-db "1.52.0" 2201 | 2202 | mimic-fn@^2.1.0: 2203 | version "2.1.0" 2204 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 2205 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 2206 | 2207 | minimatch@^3.0.4, minimatch@^3.1.1: 2208 | version "3.1.2" 2209 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 2210 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 2211 | dependencies: 2212 | brace-expansion "^1.1.7" 2213 | 2214 | ms@2.1.2: 2215 | version "2.1.2" 2216 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 2217 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 2218 | 2219 | natural-compare@^1.4.0: 2220 | version "1.4.0" 2221 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 2222 | integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== 2223 | 2224 | node-int64@^0.4.0: 2225 | version "0.4.0" 2226 | resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" 2227 | integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== 2228 | 2229 | node-releases@^2.0.3: 2230 | version "2.0.5" 2231 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.5.tgz#280ed5bc3eba0d96ce44897d8aee478bfb3d9666" 2232 | integrity sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q== 2233 | 2234 | normalize-path@^3.0.0: 2235 | version "3.0.0" 2236 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 2237 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 2238 | 2239 | npm-run-path@^4.0.1: 2240 | version "4.0.1" 2241 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" 2242 | integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== 2243 | dependencies: 2244 | path-key "^3.0.0" 2245 | 2246 | nwsapi@^2.2.0: 2247 | version "2.2.0" 2248 | resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" 2249 | integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== 2250 | 2251 | once@^1.3.0: 2252 | version "1.4.0" 2253 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 2254 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 2255 | dependencies: 2256 | wrappy "1" 2257 | 2258 | onetime@^5.1.2: 2259 | version "5.1.2" 2260 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" 2261 | integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== 2262 | dependencies: 2263 | mimic-fn "^2.1.0" 2264 | 2265 | optionator@^0.8.1: 2266 | version "0.8.3" 2267 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" 2268 | integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== 2269 | dependencies: 2270 | deep-is "~0.1.3" 2271 | fast-levenshtein "~2.0.6" 2272 | levn "~0.3.0" 2273 | prelude-ls "~1.1.2" 2274 | type-check "~0.3.2" 2275 | word-wrap "~1.2.3" 2276 | 2277 | p-limit@^2.2.0: 2278 | version "2.3.0" 2279 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" 2280 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== 2281 | dependencies: 2282 | p-try "^2.0.0" 2283 | 2284 | p-limit@^3.0.2: 2285 | version "3.1.0" 2286 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 2287 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 2288 | dependencies: 2289 | yocto-queue "^0.1.0" 2290 | 2291 | p-locate@^4.1.0: 2292 | version "4.1.0" 2293 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" 2294 | integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== 2295 | dependencies: 2296 | p-limit "^2.2.0" 2297 | 2298 | p-locate@^5.0.0: 2299 | version "5.0.0" 2300 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" 2301 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 2302 | dependencies: 2303 | p-limit "^3.0.2" 2304 | 2305 | p-try@^2.0.0: 2306 | version "2.2.0" 2307 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 2308 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 2309 | 2310 | parse-json@^5.2.0: 2311 | version "5.2.0" 2312 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" 2313 | integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== 2314 | dependencies: 2315 | "@babel/code-frame" "^7.0.0" 2316 | error-ex "^1.3.1" 2317 | json-parse-even-better-errors "^2.3.0" 2318 | lines-and-columns "^1.1.6" 2319 | 2320 | parse5@6.0.1: 2321 | version "6.0.1" 2322 | resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" 2323 | integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== 2324 | 2325 | path-exists@^4.0.0: 2326 | version "4.0.0" 2327 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 2328 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 2329 | 2330 | path-is-absolute@^1.0.0: 2331 | version "1.0.1" 2332 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 2333 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 2334 | 2335 | path-is-network-drive@^1.0.15: 2336 | version "1.0.15" 2337 | resolved "https://registry.yarnpkg.com/path-is-network-drive/-/path-is-network-drive-1.0.15.tgz#305630eebb2c1324c2a94f098a99213bbe7eb4a3" 2338 | integrity sha512-bJGs1SxUne+q29P1xCLMkNBhMetku+vPN+yVQu8FGL/7diHesCSSIKoF4Wq42tcbwm7rK72XrGfK8FUXN00LLQ== 2339 | dependencies: 2340 | tslib "^2" 2341 | 2342 | path-key@^3.0.0, path-key@^3.1.0: 2343 | version "3.1.1" 2344 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 2345 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 2346 | 2347 | path-parse@^1.0.7: 2348 | version "1.0.7" 2349 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 2350 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 2351 | 2352 | path-strip-sep@^1.0.12: 2353 | version "1.0.12" 2354 | resolved "https://registry.yarnpkg.com/path-strip-sep/-/path-strip-sep-1.0.12.tgz#e395568764c3a21eb7e879d7573a6eb4619e8bcf" 2355 | integrity sha512-EJZSC5WBjVlA9XHLCiluiyisYg6yzeMJ4nY3BQVCuedyEHA/I2crcHWdwuQ74h3V599U9nEbEZUTvvSxOK3vbQ== 2356 | dependencies: 2357 | tslib "^2" 2358 | 2359 | picocolors@^1.0.0: 2360 | version "1.0.0" 2361 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" 2362 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== 2363 | 2364 | picomatch@^2.0.4, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.1: 2365 | version "2.3.1" 2366 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 2367 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 2368 | 2369 | pirates@^4.0.4: 2370 | version "4.0.5" 2371 | resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" 2372 | integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== 2373 | 2374 | "pkg-dir@< 6 >= 5": 2375 | version "5.0.0" 2376 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760" 2377 | integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA== 2378 | dependencies: 2379 | find-up "^5.0.0" 2380 | 2381 | pkg-dir@^4.1.0, pkg-dir@^4.2.0: 2382 | version "4.2.0" 2383 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" 2384 | integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== 2385 | dependencies: 2386 | find-up "^4.0.0" 2387 | 2388 | prelude-ls@~1.1.2: 2389 | version "1.1.2" 2390 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 2391 | integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= 2392 | 2393 | pretty-format@^27.0.0, pretty-format@^27.5.1: 2394 | version "27.5.1" 2395 | resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" 2396 | integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== 2397 | dependencies: 2398 | ansi-regex "^5.0.1" 2399 | ansi-styles "^5.0.0" 2400 | react-is "^17.0.1" 2401 | 2402 | prompts@^2.0.1: 2403 | version "2.4.2" 2404 | resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" 2405 | integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== 2406 | dependencies: 2407 | kleur "^3.0.3" 2408 | sisteransi "^1.0.5" 2409 | 2410 | psl@^1.1.33: 2411 | version "1.8.0" 2412 | resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" 2413 | integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== 2414 | 2415 | punycode@^2.1.1: 2416 | version "2.1.1" 2417 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 2418 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 2419 | 2420 | quickselect@^2.0.0: 2421 | version "2.0.0" 2422 | resolved "https://registry.yarnpkg.com/quickselect/-/quickselect-2.0.0.tgz#f19680a486a5eefb581303e023e98faaf25dd018" 2423 | integrity sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw== 2424 | 2425 | rbush@^3.0.1: 2426 | version "3.0.1" 2427 | resolved "https://registry.yarnpkg.com/rbush/-/rbush-3.0.1.tgz#5fafa8a79b3b9afdfe5008403a720cc1de882ecf" 2428 | integrity sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w== 2429 | dependencies: 2430 | quickselect "^2.0.0" 2431 | 2432 | react-is@^17.0.1: 2433 | version "17.0.2" 2434 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" 2435 | integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== 2436 | 2437 | require-directory@^2.1.1: 2438 | version "2.1.1" 2439 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 2440 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= 2441 | 2442 | resolve-cwd@^3.0.0: 2443 | version "3.0.0" 2444 | resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" 2445 | integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== 2446 | dependencies: 2447 | resolve-from "^5.0.0" 2448 | 2449 | resolve-from@^5.0.0: 2450 | version "5.0.0" 2451 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" 2452 | integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== 2453 | 2454 | resolve.exports@^1.1.0: 2455 | version "1.1.0" 2456 | resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" 2457 | integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== 2458 | 2459 | resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0: 2460 | version "1.22.0" 2461 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" 2462 | integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== 2463 | dependencies: 2464 | is-core-module "^2.8.1" 2465 | path-parse "^1.0.7" 2466 | supports-preserve-symlinks-flag "^1.0.0" 2467 | 2468 | rimraf@^3.0.0: 2469 | version "3.0.2" 2470 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 2471 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 2472 | dependencies: 2473 | glob "^7.1.3" 2474 | 2475 | rollup-plugin-typescript2@^0.31.2: 2476 | version "0.31.2" 2477 | resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.31.2.tgz#463aa713a7e2bf85b92860094b9f7fb274c5a4d8" 2478 | integrity sha512-hRwEYR1C8xDGVVMFJQdEVnNAeWRvpaY97g5mp3IeLnzhNXzSVq78Ye/BJ9PAaUfN4DXa/uDnqerifMOaMFY54Q== 2479 | dependencies: 2480 | "@rollup/pluginutils" "^4.1.2" 2481 | "@yarn-tool/resolve-package" "^1.0.40" 2482 | find-cache-dir "^3.3.2" 2483 | fs-extra "^10.0.0" 2484 | resolve "^1.20.0" 2485 | tslib "^2.3.1" 2486 | 2487 | rollup@^2.70.2: 2488 | version "2.75.4" 2489 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.75.4.tgz#c3518c326c98e508b628a93015a03a276c331f22" 2490 | integrity sha512-JgZiJMJkKImMZJ8ZY1zU80Z2bA/TvrL/7D9qcBCrfl2bP+HUaIw0QHUroB4E3gBpFl6CRFM1YxGbuYGtdAswbQ== 2491 | optionalDependencies: 2492 | fsevents "~2.3.2" 2493 | 2494 | safe-buffer@~5.1.1: 2495 | version "5.1.2" 2496 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 2497 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 2498 | 2499 | "safer-buffer@>= 2.1.2 < 3": 2500 | version "2.1.2" 2501 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 2502 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 2503 | 2504 | saxes@^5.0.1: 2505 | version "5.0.1" 2506 | resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" 2507 | integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== 2508 | dependencies: 2509 | xmlchars "^2.2.0" 2510 | 2511 | semver@7.x, semver@^7.3.2: 2512 | version "7.3.7" 2513 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" 2514 | integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== 2515 | dependencies: 2516 | lru-cache "^6.0.0" 2517 | 2518 | semver@^6.0.0, semver@^6.3.0: 2519 | version "6.3.0" 2520 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 2521 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 2522 | 2523 | shebang-command@^2.0.0: 2524 | version "2.0.0" 2525 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 2526 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 2527 | dependencies: 2528 | shebang-regex "^3.0.0" 2529 | 2530 | shebang-regex@^3.0.0: 2531 | version "3.0.0" 2532 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 2533 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 2534 | 2535 | signal-exit@^3.0.2, signal-exit@^3.0.3: 2536 | version "3.0.7" 2537 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" 2538 | integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== 2539 | 2540 | sisteransi@^1.0.5: 2541 | version "1.0.5" 2542 | resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" 2543 | integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== 2544 | 2545 | slash@^3.0.0: 2546 | version "3.0.0" 2547 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" 2548 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== 2549 | 2550 | source-map-support@^0.5.6: 2551 | version "0.5.21" 2552 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" 2553 | integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== 2554 | dependencies: 2555 | buffer-from "^1.0.0" 2556 | source-map "^0.6.0" 2557 | 2558 | source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: 2559 | version "0.6.1" 2560 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 2561 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 2562 | 2563 | source-map@^0.7.3: 2564 | version "0.7.3" 2565 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" 2566 | integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== 2567 | 2568 | sourcemap-codec@^1.4.8: 2569 | version "1.4.8" 2570 | resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" 2571 | integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== 2572 | 2573 | sprintf-js@~1.0.2: 2574 | version "1.0.3" 2575 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 2576 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= 2577 | 2578 | stack-utils@^2.0.3: 2579 | version "2.0.5" 2580 | resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" 2581 | integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== 2582 | dependencies: 2583 | escape-string-regexp "^2.0.0" 2584 | 2585 | string-length@^4.0.1: 2586 | version "4.0.2" 2587 | resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" 2588 | integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== 2589 | dependencies: 2590 | char-regex "^1.0.2" 2591 | strip-ansi "^6.0.0" 2592 | 2593 | string-width@^4.1.0, string-width@^4.2.0: 2594 | version "4.2.3" 2595 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 2596 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 2597 | dependencies: 2598 | emoji-regex "^8.0.0" 2599 | is-fullwidth-code-point "^3.0.0" 2600 | strip-ansi "^6.0.1" 2601 | 2602 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 2603 | version "6.0.1" 2604 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 2605 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 2606 | dependencies: 2607 | ansi-regex "^5.0.1" 2608 | 2609 | strip-bom@^4.0.0: 2610 | version "4.0.0" 2611 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" 2612 | integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== 2613 | 2614 | strip-final-newline@^2.0.0: 2615 | version "2.0.0" 2616 | resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" 2617 | integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== 2618 | 2619 | strip-json-comments@^3.1.1: 2620 | version "3.1.1" 2621 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 2622 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 2623 | 2624 | supports-color@^5.3.0: 2625 | version "5.5.0" 2626 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 2627 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 2628 | dependencies: 2629 | has-flag "^3.0.0" 2630 | 2631 | supports-color@^7.0.0, supports-color@^7.1.0: 2632 | version "7.2.0" 2633 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 2634 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 2635 | dependencies: 2636 | has-flag "^4.0.0" 2637 | 2638 | supports-color@^8.0.0: 2639 | version "8.1.1" 2640 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" 2641 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== 2642 | dependencies: 2643 | has-flag "^4.0.0" 2644 | 2645 | supports-hyperlinks@^2.0.0: 2646 | version "2.2.0" 2647 | resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" 2648 | integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== 2649 | dependencies: 2650 | has-flag "^4.0.0" 2651 | supports-color "^7.0.0" 2652 | 2653 | supports-preserve-symlinks-flag@^1.0.0: 2654 | version "1.0.0" 2655 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 2656 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 2657 | 2658 | symbol-tree@^3.2.4: 2659 | version "3.2.4" 2660 | resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" 2661 | integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== 2662 | 2663 | terminal-link@^2.0.0: 2664 | version "2.1.1" 2665 | resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" 2666 | integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== 2667 | dependencies: 2668 | ansi-escapes "^4.2.1" 2669 | supports-hyperlinks "^2.0.0" 2670 | 2671 | test-exclude@^6.0.0: 2672 | version "6.0.0" 2673 | resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" 2674 | integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== 2675 | dependencies: 2676 | "@istanbuljs/schema" "^0.1.2" 2677 | glob "^7.1.4" 2678 | minimatch "^3.0.4" 2679 | 2680 | throat@^6.0.1: 2681 | version "6.0.1" 2682 | resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" 2683 | integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w== 2684 | 2685 | tmpl@1.0.5: 2686 | version "1.0.5" 2687 | resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" 2688 | integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== 2689 | 2690 | to-fast-properties@^2.0.0: 2691 | version "2.0.0" 2692 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 2693 | integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= 2694 | 2695 | to-regex-range@^5.0.1: 2696 | version "5.0.1" 2697 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 2698 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 2699 | dependencies: 2700 | is-number "^7.0.0" 2701 | 2702 | tough-cookie@^4.0.0: 2703 | version "4.0.0" 2704 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" 2705 | integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== 2706 | dependencies: 2707 | psl "^1.1.33" 2708 | punycode "^2.1.1" 2709 | universalify "^0.1.2" 2710 | 2711 | tr46@^2.1.0: 2712 | version "2.1.0" 2713 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" 2714 | integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== 2715 | dependencies: 2716 | punycode "^2.1.1" 2717 | 2718 | ts-jest@^27.1.4: 2719 | version "27.1.5" 2720 | resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-27.1.5.tgz#0ddf1b163fbaae3d5b7504a1e65c914a95cff297" 2721 | integrity sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA== 2722 | dependencies: 2723 | bs-logger "0.x" 2724 | fast-json-stable-stringify "2.x" 2725 | jest-util "^27.0.0" 2726 | json5 "2.x" 2727 | lodash.memoize "4.x" 2728 | make-error "1.x" 2729 | semver "7.x" 2730 | yargs-parser "20.x" 2731 | 2732 | tslib@^2, tslib@^2.3.1: 2733 | version "2.4.0" 2734 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" 2735 | integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== 2736 | 2737 | type-check@~0.3.2: 2738 | version "0.3.2" 2739 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" 2740 | integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= 2741 | dependencies: 2742 | prelude-ls "~1.1.2" 2743 | 2744 | type-detect@4.0.8: 2745 | version "4.0.8" 2746 | resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" 2747 | integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== 2748 | 2749 | type-fest@^0.21.3: 2750 | version "0.21.3" 2751 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" 2752 | integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== 2753 | 2754 | typedarray-to-buffer@^3.1.5: 2755 | version "3.1.5" 2756 | resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" 2757 | integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== 2758 | dependencies: 2759 | is-typedarray "^1.0.0" 2760 | 2761 | typescript@^4.6.3: 2762 | version "4.7.2" 2763 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.2.tgz#1f9aa2ceb9af87cca227813b4310fff0b51593c4" 2764 | integrity sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A== 2765 | 2766 | universalify@^0.1.2: 2767 | version "0.1.2" 2768 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" 2769 | integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== 2770 | 2771 | universalify@^2.0.0: 2772 | version "2.0.0" 2773 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" 2774 | integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== 2775 | 2776 | upath2@^3.1.13: 2777 | version "3.1.13" 2778 | resolved "https://registry.yarnpkg.com/upath2/-/upath2-3.1.13.tgz#18dd1b99789e51d76a0124490e9020e66e0c3aa4" 2779 | integrity sha512-M88uBoqgzrkXvXrF/+oSIPsTmL21uRwGhPVJKODrl+3lXkQ5NPKrTYuSBZVa+lgPGFoI6qYyHlSKACFHO0AoNw== 2780 | dependencies: 2781 | "@types/node" "*" 2782 | path-is-network-drive "^1.0.15" 2783 | path-strip-sep "^1.0.12" 2784 | tslib "^2" 2785 | 2786 | v8-to-istanbul@^8.1.0: 2787 | version "8.1.1" 2788 | resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz#77b752fd3975e31bbcef938f85e9bd1c7a8d60ed" 2789 | integrity sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w== 2790 | dependencies: 2791 | "@types/istanbul-lib-coverage" "^2.0.1" 2792 | convert-source-map "^1.6.0" 2793 | source-map "^0.7.3" 2794 | 2795 | w3c-hr-time@^1.0.2: 2796 | version "1.0.2" 2797 | resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" 2798 | integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== 2799 | dependencies: 2800 | browser-process-hrtime "^1.0.0" 2801 | 2802 | w3c-xmlserializer@^2.0.0: 2803 | version "2.0.0" 2804 | resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" 2805 | integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== 2806 | dependencies: 2807 | xml-name-validator "^3.0.0" 2808 | 2809 | walker@^1.0.7: 2810 | version "1.0.8" 2811 | resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" 2812 | integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== 2813 | dependencies: 2814 | makeerror "1.0.12" 2815 | 2816 | webidl-conversions@^5.0.0: 2817 | version "5.0.0" 2818 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" 2819 | integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== 2820 | 2821 | webidl-conversions@^6.1.0: 2822 | version "6.1.0" 2823 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" 2824 | integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== 2825 | 2826 | whatwg-encoding@^1.0.5: 2827 | version "1.0.5" 2828 | resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" 2829 | integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== 2830 | dependencies: 2831 | iconv-lite "0.4.24" 2832 | 2833 | whatwg-mimetype@^2.3.0: 2834 | version "2.3.0" 2835 | resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" 2836 | integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== 2837 | 2838 | whatwg-url@^8.0.0, whatwg-url@^8.5.0: 2839 | version "8.7.0" 2840 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" 2841 | integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== 2842 | dependencies: 2843 | lodash "^4.7.0" 2844 | tr46 "^2.1.0" 2845 | webidl-conversions "^6.1.0" 2846 | 2847 | which@^2.0.1: 2848 | version "2.0.2" 2849 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 2850 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 2851 | dependencies: 2852 | isexe "^2.0.0" 2853 | 2854 | word-wrap@~1.2.3: 2855 | version "1.2.3" 2856 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" 2857 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== 2858 | 2859 | wrap-ansi@^7.0.0: 2860 | version "7.0.0" 2861 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 2862 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 2863 | dependencies: 2864 | ansi-styles "^4.0.0" 2865 | string-width "^4.1.0" 2866 | strip-ansi "^6.0.0" 2867 | 2868 | wrappy@1: 2869 | version "1.0.2" 2870 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2871 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 2872 | 2873 | write-file-atomic@^3.0.0: 2874 | version "3.0.3" 2875 | resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" 2876 | integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== 2877 | dependencies: 2878 | imurmurhash "^0.1.4" 2879 | is-typedarray "^1.0.0" 2880 | signal-exit "^3.0.2" 2881 | typedarray-to-buffer "^3.1.5" 2882 | 2883 | ws@^7.4.6: 2884 | version "7.5.8" 2885 | resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.8.tgz#ac2729881ab9e7cbaf8787fe3469a48c5c7f636a" 2886 | integrity sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw== 2887 | 2888 | xml-name-validator@^3.0.0: 2889 | version "3.0.0" 2890 | resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" 2891 | integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== 2892 | 2893 | xmlchars@^2.2.0: 2894 | version "2.2.0" 2895 | resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" 2896 | integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== 2897 | 2898 | y18n@^5.0.5: 2899 | version "5.0.8" 2900 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" 2901 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 2902 | 2903 | yallist@^4.0.0: 2904 | version "4.0.0" 2905 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 2906 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 2907 | 2908 | yargs-parser@20.x, yargs-parser@^20.2.2: 2909 | version "20.2.9" 2910 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" 2911 | integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== 2912 | 2913 | yargs@^16.2.0: 2914 | version "16.2.0" 2915 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" 2916 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== 2917 | dependencies: 2918 | cliui "^7.0.2" 2919 | escalade "^3.1.1" 2920 | get-caller-file "^2.0.5" 2921 | require-directory "^2.1.1" 2922 | string-width "^4.2.0" 2923 | y18n "^5.0.5" 2924 | yargs-parser "^20.2.2" 2925 | 2926 | yocto-queue@^0.1.0: 2927 | version "0.1.0" 2928 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 2929 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 2930 | --------------------------------------------------------------------------------