├── .gitignore ├── README.md ├── tsconfig.json ├── src ├── index.html ├── target.ts ├── main.css ├── main.ts ├── viewport.ts └── line.ts ├── package.json ├── .github └── workflows │ └── ci.yml ├── LICENSE ├── rollup.config.js └── pnpm-lock.yaml /.gitignore: -------------------------------------------------------------------------------- 1 | dist 2 | node_modules 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [fabrik](https://fabrik.gatunes.com) 2 | == 3 | 4 | > Forward and backward reaching inverse kinematics 5 | 6 | ```bash 7 | # clone repo: 8 | git clone https://github.com/danielesteban/fabrik.git 9 | cd fabrik 10 | # install dependencies: 11 | pnpm install 12 | # start environment: 13 | pnpm start 14 | # open http://localhost:8080/ in your browser 15 | ``` 16 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": "./src", 4 | "moduleResolution": "node", 5 | "noFallthroughCasesInSwitch": true, 6 | "noImplicitReturns": true, 7 | "noImplicitOverride": true, 8 | "noUnusedLocals": true, 9 | "noUnusedParameters": true, 10 | "strict": true, 11 | "target": "esnext" 12 | }, 13 | "exclude": ["dist", "node_modules"], 14 | "include": ["src"] 15 | } 16 | -------------------------------------------------------------------------------- /src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | fabrik 6 | 7 | 8 | 9 | 10 | 11 |
12 | dani@gatunes © 2024 13 |
14 | 15 | 16 | -------------------------------------------------------------------------------- /src/target.ts: -------------------------------------------------------------------------------- 1 | import { CircleGeometry, Mesh, MeshBasicMaterial } from 'three'; 2 | 3 | class Target extends Mesh { 4 | private static readonly geometry = (() => { 5 | const geometry = new CircleGeometry(0.1); 6 | geometry.translate(0, 0, -0.001); 7 | return geometry; 8 | })(); 9 | private static readonly material = new MeshBasicMaterial({ color: 0xFF0000 }); 10 | 11 | constructor() { 12 | super(Target.geometry, Target.material); 13 | } 14 | } 15 | 16 | export { Target }; 17 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "fabrik", 3 | "scripts": { 4 | "build": "rollup -c rollup.config.js", 5 | "start": "pnpm build -w" 6 | }, 7 | "type": "module", 8 | "dependencies": { 9 | "three": "^0.165.0" 10 | }, 11 | "devDependencies": { 12 | "@rollup/plugin-html": "^1.0.3", 13 | "@rollup/plugin-node-resolve": "^15.2.3", 14 | "@rollup/plugin-terser": "^0.4.4", 15 | "@rollup/plugin-typescript": "^11.1.6", 16 | "@types/three": "^0.165.0", 17 | "postcss": "^8.4.38", 18 | "rollup": "^4.18.0", 19 | "rollup-plugin-livereload": "^2.0.5", 20 | "rollup-plugin-postcss": "^4.0.2", 21 | "rollup-plugin-serve": "^3.0.0", 22 | "tslib": "^2.6.2", 23 | "typescript": "^5.4.5" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main.css: -------------------------------------------------------------------------------- 1 | :root { 2 | font-size: 16px; 3 | } 4 | 5 | body { 6 | margin: 0; 7 | background: #000; 8 | color: #eee; 9 | cursor: crosshair; 10 | font-family: monospace; 11 | font-size: 0.75rem; 12 | font-weight: 400; 13 | font-style: normal; 14 | line-height: 1.125rem; 15 | touch-action: none; 16 | overflow: hidden; 17 | overscroll-behavior: none; 18 | user-select: none; 19 | -webkit-tap-highlight-color: transparent; 20 | -webkit-text-size-adjust: none; 21 | -webkit-touch-callout: none; 22 | -webkit-user-select: none; 23 | -webkit-overflow-scrolling: auto; 24 | } 25 | 26 | :root, body, #viewport { 27 | width: 100vw; 28 | height: 100%; 29 | } 30 | 31 | a { 32 | color: inherit; 33 | } 34 | 35 | canvas { 36 | vertical-align: middle; 37 | } 38 | 39 | #info { 40 | position: absolute; 41 | bottom: 1rem; 42 | right: 1rem; 43 | text-align: right; 44 | } 45 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: 4 | push: 5 | branches: 6 | - master 7 | 8 | jobs: 9 | client: 10 | environment: 11 | name: github-pages 12 | url: ${{ steps.deployment.outputs.page_url }} 13 | permissions: 14 | contents: read 15 | pages: write 16 | packages: read 17 | id-token: write 18 | runs-on: ubuntu-latest 19 | steps: 20 | - uses: actions/checkout@v3 21 | - uses: pnpm/action-setup@v2 22 | with: 23 | version: 9 24 | - uses: actions/setup-node@v3 25 | with: 26 | node-version: 20 27 | cache: 'pnpm' 28 | - name: Install 29 | run: pnpm install 30 | - name: Build 31 | run: pnpm build 32 | - uses: actions/configure-pages@v3 33 | - uses: actions/upload-pages-artifact@v2 34 | with: 35 | path: 'dist' 36 | - id: deployment 37 | uses: actions/deploy-pages@v2 38 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License 2 | 3 | Copyright © 2024 Daniel Esteban Nombela 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | import { Color, Mesh, PlaneGeometry, Raycaster, Vector2, Vector3 } from 'three'; 2 | import { Line } from 'line'; 3 | import { Target } from 'target'; 4 | import { camera, clock, renderer, scene } from 'viewport'; 5 | import './main.css'; 6 | 7 | const { searchParams: params } = new URL(location.href); 8 | const length = parseInt(params.get('length')!, 10) || 10; 9 | const count = parseInt(params.get('count')!, 10) || 100; 10 | const size = length / count; 11 | 12 | const line = new Line(Array.from({ length: count + 1 }, (_v, i) => ({ 13 | position: new Vector3(i * size, 0, 0), 14 | color: (new Color()).setHSL(i / count, 0.5, 0.5), 15 | }))); 16 | scene.add(line); 17 | 18 | const target = new Target(); 19 | target.position.set(length, 0, 0); 20 | scene.add(target); 21 | 22 | const plane = new Mesh(new PlaneGeometry(10000, 10000)); 23 | const pointer = new Vector2(); 24 | const raycaster = new Raycaster(); 25 | const worldPointer = target.position.clone(); 26 | document.body.addEventListener('pointermove', ({ clientX, clientY }) => { 27 | raycaster.setFromCamera(pointer.set((clientX / window.innerWidth) * 2 - 1, -(clientY / window.innerHeight) * 2 + 1), camera); 28 | worldPointer.copy(raycaster.intersectObject(plane)[0].point); 29 | }); 30 | 31 | renderer.setAnimationLoop(() => { 32 | const delta = Math.min(clock.getDelta(), 0.2); 33 | target.position.lerp(worldPointer, 1 - Math.exp(-10 * delta)); 34 | line.solve(target.position); 35 | renderer.render(scene, camera); 36 | }); 37 | -------------------------------------------------------------------------------- /src/viewport.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Clock, 3 | PerspectiveCamera, 4 | Scene, 5 | WebGLRenderer, 6 | } from 'three'; 7 | 8 | const viewport = document.createElement('div'); 9 | viewport.id = 'viewport'; 10 | document.body.appendChild(viewport); 11 | 12 | export const camera = new PerspectiveCamera(60, 1, 0.1, 1000); 13 | camera.position.z = 10; 14 | export const clock = new Clock(); 15 | export const renderer = new WebGLRenderer({ antialias: true }); 16 | renderer.setPixelRatio(window.devicePixelRatio || 1); 17 | viewport.appendChild(renderer.domElement); 18 | export const scene = new Scene(); 19 | 20 | const resize = () => { 21 | const { innerWidth: width, innerHeight: height } = window; 22 | const aspect = width / height; 23 | renderer.setSize(width, height); 24 | camera.aspect = aspect; 25 | camera.updateProjectionMatrix(); 26 | }; 27 | resize(); 28 | 29 | window.addEventListener('resize', resize); 30 | document.addEventListener('visibilitychange', () => ( 31 | document.visibilityState === 'visible' && clock.start() 32 | )); 33 | 34 | const prevent = (e: Event) => e.preventDefault(); 35 | window.addEventListener('contextmenu', prevent); 36 | window.addEventListener('keydown', (e) => ( 37 | e.key === ' ' 38 | && !['input', 'textarea', 'select'].includes((e.target as HTMLElement).tagName.toLowerCase()) 39 | && prevent(e) 40 | )); 41 | window.addEventListener('touchstart', prevent, { passive: false }); 42 | window.addEventListener('wheel', (e) => e.ctrlKey && prevent(e), { passive: false }); 43 | -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | import fs from 'fs'; 2 | import path from 'path'; 3 | import { fileURLToPath } from 'url'; 4 | import html from '@rollup/plugin-html'; 5 | import livereload from 'rollup-plugin-livereload'; 6 | import { nodeResolve } from '@rollup/plugin-node-resolve'; 7 | import postcss from 'rollup-plugin-postcss'; 8 | import serve from 'rollup-plugin-serve'; 9 | import terser from '@rollup/plugin-terser'; 10 | import typescript from '@rollup/plugin-typescript'; 11 | 12 | const __dirname = path.dirname(fileURLToPath(import.meta.url)); 13 | const production = !process.env.ROLLUP_WATCH; 14 | const outputPath = path.resolve(__dirname, 'dist'); 15 | 16 | export default { 17 | input: path.join(__dirname, 'src', 'main.ts'), 18 | output: { 19 | dir: outputPath, 20 | entryFileNames: `[name]${production ? '-[hash]' : ''}.js`, 21 | format: 'iife', 22 | sourcemap: !production, 23 | }, 24 | plugins: [ 25 | nodeResolve({ browser: true, extensions: ['.js', '.ts'] }), 26 | typescript({ sourceMap: !production, inlineSources: !production }), 27 | postcss({ extract: true, minimize: production }), 28 | html({ 29 | template: ({ files }) => ( 30 | fs.readFileSync(path.join(__dirname, 'src', 'index.html'), 'utf8') 31 | .replace( 32 | '', 33 | (files.css || []) 34 | .map(({ fileName }) => ``) 35 | .join('') 36 | ) 37 | .replace( 38 | '', 39 | (files.js || []) 40 | .map(({ fileName }) => ``) 41 | .join('') 42 | ) 43 | .replace(/( |\n)/g, '') 44 | ), 45 | }), 46 | ...(production ? [ 47 | terser({ format: { comments: false } }), 48 | ] : [ 49 | serve({ 50 | contentBase: outputPath, 51 | port: 8080, 52 | }), 53 | livereload({ 54 | watch: outputPath, 55 | }), 56 | ]), 57 | ], 58 | watch: { clearScreen: false }, 59 | }; 60 | -------------------------------------------------------------------------------- /src/line.ts: -------------------------------------------------------------------------------- 1 | import { Color, Vector2, Vector3 } from 'three'; 2 | import { LineSegments2 } from 'three/examples/jsm/lines/LineSegments2.js'; 3 | import { LineMaterial } from 'three/examples/jsm/lines/LineMaterial.js'; 4 | import { LineSegmentsGeometry } from 'three/examples/jsm/lines/LineSegmentsGeometry.js'; 5 | 6 | class Line extends LineSegments2 { 7 | static readonly material = new LineMaterial({ 8 | alphaToCoverage: true, 9 | linewidth: 0.1, 10 | resolution: new Vector2(window.innerWidth, window.innerHeight), 11 | vertexColors: true, 12 | worldUnits: true, 13 | }); 14 | 15 | private readonly colors: Float32Array; 16 | private readonly positions: Float32Array; 17 | private readonly points: { position: Vector3; color: Color; length: number; }[]; 18 | 19 | constructor(points: { position: Vector3; color: Color }[]) { 20 | super(new LineSegmentsGeometry(), Line.material); 21 | this.colors = new Float32Array((points.length - 1) * 3 * 2); 22 | this.positions = new Float32Array((points.length - 1) * 3 * 2); 23 | this.points = points.map((point, i) => ({ 24 | position: point.position, 25 | color: point.color, 26 | length: i === (points.length - 1) ? 0 : point.position.distanceTo(points[i + 1].position), 27 | })); 28 | this.updateColors(); 29 | this.updatePositions(); 30 | } 31 | 32 | solve(target: Vector3) { 33 | const { points } = this; 34 | points[points.length - 1].position.copy(target); 35 | for (let i = points.length - 1; i > 1; i--) { 36 | points[i - 1].position.sub(points[i].position).normalize().multiplyScalar(points[i - 1].length).add(points[i].position); 37 | } 38 | for (let i = 0, l = points.length - 1; i < l; i++) { 39 | points[i + 1].position.sub(points[i].position).normalize().multiplyScalar(points[i].length).add(points[i].position); 40 | } 41 | this.updatePositions(); 42 | } 43 | 44 | private updateColors() { 45 | const { colors, geometry, points } = this; 46 | for (let i = 0, l = points.length - 1; i < l; i++) { 47 | const start = points[i]; 48 | colors[2 * i * 3] = colors[2 * i * 3 + 3] = start.color.r; 49 | colors[2 * i * 3 + 1] = colors[2 * i * 3 + 4] = start.color.g; 50 | colors[2 * i * 3 + 2] = colors[2 * i * 3 + 5] = start.color.b; 51 | } 52 | geometry.setColors(colors); 53 | } 54 | 55 | private updatePositions() { 56 | const { geometry, points, positions } = this; 57 | for (let i = 0, l = points.length - 1; i < l; i++) { 58 | const start = points[i]; 59 | const end = points[i + 1]; 60 | positions[2 * i * 3] = start.position.x; 61 | positions[2 * i * 3 + 1] = start.position.y; 62 | positions[2 * i * 3 + 2] = start.position.z; 63 | positions[2 * i * 3 + 3] = end.position.x; 64 | positions[2 * i * 3 + 4] = end.position.y; 65 | positions[2 * i * 3 + 5] = end.position.z; 66 | } 67 | geometry.setPositions(positions); 68 | } 69 | } 70 | 71 | window.addEventListener('resize', () => ( 72 | Line.material.resolution.set(window.innerWidth, window.innerHeight) 73 | )); 74 | 75 | export { Line }; 76 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | three: 12 | specifier: ^0.165.0 13 | version: 0.165.0 14 | devDependencies: 15 | '@rollup/plugin-html': 16 | specifier: ^1.0.3 17 | version: 1.0.3(rollup@4.18.0) 18 | '@rollup/plugin-node-resolve': 19 | specifier: ^15.2.3 20 | version: 15.2.3(rollup@4.18.0) 21 | '@rollup/plugin-terser': 22 | specifier: ^0.4.4 23 | version: 0.4.4(rollup@4.18.0) 24 | '@rollup/plugin-typescript': 25 | specifier: ^11.1.6 26 | version: 11.1.6(rollup@4.18.0)(tslib@2.6.2)(typescript@5.4.5) 27 | '@types/three': 28 | specifier: ^0.165.0 29 | version: 0.165.0 30 | postcss: 31 | specifier: ^8.4.38 32 | version: 8.4.38 33 | rollup: 34 | specifier: ^4.18.0 35 | version: 4.18.0 36 | rollup-plugin-livereload: 37 | specifier: ^2.0.5 38 | version: 2.0.5 39 | rollup-plugin-postcss: 40 | specifier: ^4.0.2 41 | version: 4.0.2(postcss@8.4.38) 42 | rollup-plugin-serve: 43 | specifier: ^3.0.0 44 | version: 3.0.0 45 | tslib: 46 | specifier: ^2.6.2 47 | version: 2.6.2 48 | typescript: 49 | specifier: ^5.4.5 50 | version: 5.4.5 51 | 52 | packages: 53 | 54 | '@jridgewell/gen-mapping@0.3.5': 55 | resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} 56 | engines: {node: '>=6.0.0'} 57 | 58 | '@jridgewell/resolve-uri@3.1.2': 59 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 60 | engines: {node: '>=6.0.0'} 61 | 62 | '@jridgewell/set-array@1.2.1': 63 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 64 | engines: {node: '>=6.0.0'} 65 | 66 | '@jridgewell/source-map@0.3.6': 67 | resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} 68 | 69 | '@jridgewell/sourcemap-codec@1.4.15': 70 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 71 | 72 | '@jridgewell/trace-mapping@0.3.25': 73 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 74 | 75 | '@rollup/plugin-html@1.0.3': 76 | resolution: {integrity: sha512-bbjQciNXitHX+Bgk0xsW3/0wFWih/356/r7/kvmdz4wzWhAU/a0zYBWTczihrlzz/6Qpw/kZ0yXqOJwsETgg7A==} 77 | engines: {node: '>=14.0.0'} 78 | peerDependencies: 79 | rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 80 | peerDependenciesMeta: 81 | rollup: 82 | optional: true 83 | 84 | '@rollup/plugin-node-resolve@15.2.3': 85 | resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} 86 | engines: {node: '>=14.0.0'} 87 | peerDependencies: 88 | rollup: ^2.78.0||^3.0.0||^4.0.0 89 | peerDependenciesMeta: 90 | rollup: 91 | optional: true 92 | 93 | '@rollup/plugin-terser@0.4.4': 94 | resolution: {integrity: sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==} 95 | engines: {node: '>=14.0.0'} 96 | peerDependencies: 97 | rollup: ^2.0.0||^3.0.0||^4.0.0 98 | peerDependenciesMeta: 99 | rollup: 100 | optional: true 101 | 102 | '@rollup/plugin-typescript@11.1.6': 103 | resolution: {integrity: sha512-R92yOmIACgYdJ7dJ97p4K69I8gg6IEHt8M7dUBxN3W6nrO8uUxX5ixl0yU/N3aZTi8WhPuICvOHXQvF6FaykAA==} 104 | engines: {node: '>=14.0.0'} 105 | peerDependencies: 106 | rollup: ^2.14.0||^3.0.0||^4.0.0 107 | tslib: '*' 108 | typescript: '>=3.7.0' 109 | peerDependenciesMeta: 110 | rollup: 111 | optional: true 112 | tslib: 113 | optional: true 114 | 115 | '@rollup/pluginutils@5.1.0': 116 | resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} 117 | engines: {node: '>=14.0.0'} 118 | peerDependencies: 119 | rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 120 | peerDependenciesMeta: 121 | rollup: 122 | optional: true 123 | 124 | '@rollup/rollup-android-arm-eabi@4.18.0': 125 | resolution: {integrity: sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==} 126 | cpu: [arm] 127 | os: [android] 128 | 129 | '@rollup/rollup-android-arm64@4.18.0': 130 | resolution: {integrity: sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==} 131 | cpu: [arm64] 132 | os: [android] 133 | 134 | '@rollup/rollup-darwin-arm64@4.18.0': 135 | resolution: {integrity: sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==} 136 | cpu: [arm64] 137 | os: [darwin] 138 | 139 | '@rollup/rollup-darwin-x64@4.18.0': 140 | resolution: {integrity: sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==} 141 | cpu: [x64] 142 | os: [darwin] 143 | 144 | '@rollup/rollup-linux-arm-gnueabihf@4.18.0': 145 | resolution: {integrity: sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==} 146 | cpu: [arm] 147 | os: [linux] 148 | 149 | '@rollup/rollup-linux-arm-musleabihf@4.18.0': 150 | resolution: {integrity: sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==} 151 | cpu: [arm] 152 | os: [linux] 153 | 154 | '@rollup/rollup-linux-arm64-gnu@4.18.0': 155 | resolution: {integrity: sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==} 156 | cpu: [arm64] 157 | os: [linux] 158 | 159 | '@rollup/rollup-linux-arm64-musl@4.18.0': 160 | resolution: {integrity: sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==} 161 | cpu: [arm64] 162 | os: [linux] 163 | 164 | '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': 165 | resolution: {integrity: sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==} 166 | cpu: [ppc64] 167 | os: [linux] 168 | 169 | '@rollup/rollup-linux-riscv64-gnu@4.18.0': 170 | resolution: {integrity: sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==} 171 | cpu: [riscv64] 172 | os: [linux] 173 | 174 | '@rollup/rollup-linux-s390x-gnu@4.18.0': 175 | resolution: {integrity: sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==} 176 | cpu: [s390x] 177 | os: [linux] 178 | 179 | '@rollup/rollup-linux-x64-gnu@4.18.0': 180 | resolution: {integrity: sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==} 181 | cpu: [x64] 182 | os: [linux] 183 | 184 | '@rollup/rollup-linux-x64-musl@4.18.0': 185 | resolution: {integrity: sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==} 186 | cpu: [x64] 187 | os: [linux] 188 | 189 | '@rollup/rollup-win32-arm64-msvc@4.18.0': 190 | resolution: {integrity: sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==} 191 | cpu: [arm64] 192 | os: [win32] 193 | 194 | '@rollup/rollup-win32-ia32-msvc@4.18.0': 195 | resolution: {integrity: sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==} 196 | cpu: [ia32] 197 | os: [win32] 198 | 199 | '@rollup/rollup-win32-x64-msvc@4.18.0': 200 | resolution: {integrity: sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==} 201 | cpu: [x64] 202 | os: [win32] 203 | 204 | '@trysound/sax@0.2.0': 205 | resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} 206 | engines: {node: '>=10.13.0'} 207 | 208 | '@tweenjs/tween.js@23.1.2': 209 | resolution: {integrity: sha512-kMCNaZCJugWI86xiEHaY338CU5JpD0B97p1j1IKNn/Zto8PgACjQx0UxbHjmOcLl/dDOBnItwD07KmCs75pxtQ==} 210 | 211 | '@types/estree@1.0.5': 212 | resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} 213 | 214 | '@types/resolve@1.20.2': 215 | resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} 216 | 217 | '@types/stats.js@0.17.3': 218 | resolution: {integrity: sha512-pXNfAD3KHOdif9EQXZ9deK82HVNaXP5ZIF5RP2QG6OQFNTaY2YIetfrE9t528vEreGQvEPRDDc8muaoYeK0SxQ==} 219 | 220 | '@types/three@0.165.0': 221 | resolution: {integrity: sha512-AJK8JZAFNBF0kBXiAIl5pggYlzAGGA8geVYQXAcPCEDRbyA+oEjkpUBcJJrtNz6IiALwzGexFJGZG2yV3WsYBw==} 222 | 223 | '@types/webxr@0.5.16': 224 | resolution: {integrity: sha512-0E0Cl84FECtzrB4qG19TNTqpunw0F1YF0QZZnFMF6pDw1kNKJtrlTKlVB34stGIsHbZsYQ7H0tNjPfZftkHHoA==} 225 | 226 | acorn@8.11.3: 227 | resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} 228 | engines: {node: '>=0.4.0'} 229 | hasBin: true 230 | 231 | ansi-styles@4.3.0: 232 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 233 | engines: {node: '>=8'} 234 | 235 | anymatch@3.1.3: 236 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 237 | engines: {node: '>= 8'} 238 | 239 | binary-extensions@2.3.0: 240 | resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} 241 | engines: {node: '>=8'} 242 | 243 | boolbase@1.0.0: 244 | resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} 245 | 246 | braces@3.0.3: 247 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 248 | engines: {node: '>=8'} 249 | 250 | browserslist@4.23.0: 251 | resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} 252 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 253 | hasBin: true 254 | 255 | buffer-from@1.1.2: 256 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 257 | 258 | builtin-modules@3.3.0: 259 | resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} 260 | engines: {node: '>=6'} 261 | 262 | caniuse-api@3.0.0: 263 | resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} 264 | 265 | caniuse-lite@1.0.30001625: 266 | resolution: {integrity: sha512-4KE9N2gcRH+HQhpeiRZXd+1niLB/XNLAhSy4z7fI8EzcbcPoAqjNInxVHTiTwWfTIV4w096XG8OtCOCQQKPv3w==} 267 | 268 | chalk@4.1.2: 269 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 270 | engines: {node: '>=10'} 271 | 272 | chokidar@3.6.0: 273 | resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} 274 | engines: {node: '>= 8.10.0'} 275 | 276 | color-convert@2.0.1: 277 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 278 | engines: {node: '>=7.0.0'} 279 | 280 | color-name@1.1.4: 281 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 282 | 283 | colord@2.9.3: 284 | resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} 285 | 286 | commander@2.20.3: 287 | resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} 288 | 289 | commander@7.2.0: 290 | resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} 291 | engines: {node: '>= 10'} 292 | 293 | concat-with-sourcemaps@1.1.0: 294 | resolution: {integrity: sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==} 295 | 296 | css-declaration-sorter@6.4.1: 297 | resolution: {integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==} 298 | engines: {node: ^10 || ^12 || >=14} 299 | peerDependencies: 300 | postcss: ^8.0.9 301 | 302 | css-select@4.3.0: 303 | resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} 304 | 305 | css-tree@1.1.3: 306 | resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} 307 | engines: {node: '>=8.0.0'} 308 | 309 | css-what@6.1.0: 310 | resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} 311 | engines: {node: '>= 6'} 312 | 313 | cssesc@3.0.0: 314 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 315 | engines: {node: '>=4'} 316 | hasBin: true 317 | 318 | cssnano-preset-default@5.2.14: 319 | resolution: {integrity: sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==} 320 | engines: {node: ^10 || ^12 || >=14.0} 321 | peerDependencies: 322 | postcss: ^8.2.15 323 | 324 | cssnano-utils@3.1.0: 325 | resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==} 326 | engines: {node: ^10 || ^12 || >=14.0} 327 | peerDependencies: 328 | postcss: ^8.2.15 329 | 330 | cssnano@5.1.15: 331 | resolution: {integrity: sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==} 332 | engines: {node: ^10 || ^12 || >=14.0} 333 | peerDependencies: 334 | postcss: ^8.2.15 335 | 336 | csso@4.2.0: 337 | resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} 338 | engines: {node: '>=8.0.0'} 339 | 340 | deepmerge@4.3.1: 341 | resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} 342 | engines: {node: '>=0.10.0'} 343 | 344 | dom-serializer@1.4.1: 345 | resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} 346 | 347 | domelementtype@2.3.0: 348 | resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} 349 | 350 | domhandler@4.3.1: 351 | resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} 352 | engines: {node: '>= 4'} 353 | 354 | domutils@2.8.0: 355 | resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} 356 | 357 | electron-to-chromium@1.4.788: 358 | resolution: {integrity: sha512-ubp5+Ev/VV8KuRoWnfP2QF2Bg+O2ZFdb49DiiNbz2VmgkIqrnyYaqIOqj8A6K/3p1xV0QcU5hBQ1+BmB6ot1OA==} 359 | 360 | entities@2.2.0: 361 | resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} 362 | 363 | escalade@3.1.2: 364 | resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} 365 | engines: {node: '>=6'} 366 | 367 | estree-walker@0.6.1: 368 | resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==} 369 | 370 | estree-walker@2.0.2: 371 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 372 | 373 | eventemitter3@4.0.7: 374 | resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} 375 | 376 | fflate@0.8.2: 377 | resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} 378 | 379 | fill-range@7.1.1: 380 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 381 | engines: {node: '>=8'} 382 | 383 | fsevents@2.3.3: 384 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 385 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 386 | os: [darwin] 387 | 388 | function-bind@1.1.2: 389 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 390 | 391 | generic-names@4.0.0: 392 | resolution: {integrity: sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==} 393 | 394 | glob-parent@5.1.2: 395 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 396 | engines: {node: '>= 6'} 397 | 398 | has-flag@4.0.0: 399 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 400 | engines: {node: '>=8'} 401 | 402 | hasown@2.0.2: 403 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 404 | engines: {node: '>= 0.4'} 405 | 406 | icss-replace-symbols@1.1.0: 407 | resolution: {integrity: sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==} 408 | 409 | icss-utils@5.1.0: 410 | resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} 411 | engines: {node: ^10 || ^12 || >= 14} 412 | peerDependencies: 413 | postcss: ^8.1.0 414 | 415 | import-cwd@3.0.0: 416 | resolution: {integrity: sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==} 417 | engines: {node: '>=8'} 418 | 419 | import-from@3.0.0: 420 | resolution: {integrity: sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==} 421 | engines: {node: '>=8'} 422 | 423 | is-binary-path@2.1.0: 424 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 425 | engines: {node: '>=8'} 426 | 427 | is-builtin-module@3.2.1: 428 | resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} 429 | engines: {node: '>=6'} 430 | 431 | is-core-module@2.13.1: 432 | resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} 433 | 434 | is-extglob@2.1.1: 435 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 436 | engines: {node: '>=0.10.0'} 437 | 438 | is-glob@4.0.3: 439 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 440 | engines: {node: '>=0.10.0'} 441 | 442 | is-module@1.0.0: 443 | resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} 444 | 445 | is-number@7.0.0: 446 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 447 | engines: {node: '>=0.12.0'} 448 | 449 | lilconfig@2.1.0: 450 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} 451 | engines: {node: '>=10'} 452 | 453 | livereload-js@3.4.1: 454 | resolution: {integrity: sha512-5MP0uUeVCec89ZbNOT/i97Mc+q3SxXmiUGhRFOTmhrGPn//uWVQdCvcLJDy64MSBR5MidFdOR7B9viumoavy6g==} 455 | 456 | livereload@0.9.3: 457 | resolution: {integrity: sha512-q7Z71n3i4X0R9xthAryBdNGVGAO2R5X+/xXpmKeuPMrteg+W2U8VusTKV3YiJbXZwKsOlFlHe+go6uSNjfxrZw==} 458 | engines: {node: '>=8.0.0'} 459 | hasBin: true 460 | 461 | loader-utils@3.2.2: 462 | resolution: {integrity: sha512-vjJi4vQDasD8t0kMpxe+9URAcgbSuASqoj/Wuk3MawTk97LYa2KfdHreAkd1G/pmPLMvzZEw7/OsydADNemerQ==} 463 | engines: {node: '>= 12.13.0'} 464 | 465 | lodash.camelcase@4.3.0: 466 | resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} 467 | 468 | lodash.memoize@4.1.2: 469 | resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} 470 | 471 | lodash.uniq@4.5.0: 472 | resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} 473 | 474 | mdn-data@2.0.14: 475 | resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} 476 | 477 | meshoptimizer@0.18.1: 478 | resolution: {integrity: sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw==} 479 | 480 | mime@4.0.3: 481 | resolution: {integrity: sha512-KgUb15Oorc0NEKPbvfa0wRU+PItIEZmiv+pyAO2i0oTIVTJhlzMclU7w4RXWQrSOVH5ax/p/CkIO7KI4OyFJTQ==} 482 | engines: {node: '>=16'} 483 | hasBin: true 484 | 485 | nanoid@3.3.7: 486 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} 487 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 488 | hasBin: true 489 | 490 | node-releases@2.0.14: 491 | resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} 492 | 493 | normalize-path@3.0.0: 494 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 495 | engines: {node: '>=0.10.0'} 496 | 497 | normalize-url@6.1.0: 498 | resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} 499 | engines: {node: '>=10'} 500 | 501 | nth-check@2.1.1: 502 | resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} 503 | 504 | opener@1.5.2: 505 | resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} 506 | hasBin: true 507 | 508 | opts@2.0.2: 509 | resolution: {integrity: sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg==} 510 | 511 | p-finally@1.0.0: 512 | resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} 513 | engines: {node: '>=4'} 514 | 515 | p-queue@6.6.2: 516 | resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} 517 | engines: {node: '>=8'} 518 | 519 | p-timeout@3.2.0: 520 | resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} 521 | engines: {node: '>=8'} 522 | 523 | path-parse@1.0.7: 524 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 525 | 526 | picocolors@1.0.1: 527 | resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} 528 | 529 | picomatch@2.3.1: 530 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 531 | engines: {node: '>=8.6'} 532 | 533 | pify@5.0.0: 534 | resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} 535 | engines: {node: '>=10'} 536 | 537 | postcss-calc@8.2.4: 538 | resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==} 539 | peerDependencies: 540 | postcss: ^8.2.2 541 | 542 | postcss-colormin@5.3.1: 543 | resolution: {integrity: sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==} 544 | engines: {node: ^10 || ^12 || >=14.0} 545 | peerDependencies: 546 | postcss: ^8.2.15 547 | 548 | postcss-convert-values@5.1.3: 549 | resolution: {integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==} 550 | engines: {node: ^10 || ^12 || >=14.0} 551 | peerDependencies: 552 | postcss: ^8.2.15 553 | 554 | postcss-discard-comments@5.1.2: 555 | resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==} 556 | engines: {node: ^10 || ^12 || >=14.0} 557 | peerDependencies: 558 | postcss: ^8.2.15 559 | 560 | postcss-discard-duplicates@5.1.0: 561 | resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==} 562 | engines: {node: ^10 || ^12 || >=14.0} 563 | peerDependencies: 564 | postcss: ^8.2.15 565 | 566 | postcss-discard-empty@5.1.1: 567 | resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==} 568 | engines: {node: ^10 || ^12 || >=14.0} 569 | peerDependencies: 570 | postcss: ^8.2.15 571 | 572 | postcss-discard-overridden@5.1.0: 573 | resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==} 574 | engines: {node: ^10 || ^12 || >=14.0} 575 | peerDependencies: 576 | postcss: ^8.2.15 577 | 578 | postcss-load-config@3.1.4: 579 | resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} 580 | engines: {node: '>= 10'} 581 | peerDependencies: 582 | postcss: '>=8.0.9' 583 | ts-node: '>=9.0.0' 584 | peerDependenciesMeta: 585 | postcss: 586 | optional: true 587 | ts-node: 588 | optional: true 589 | 590 | postcss-merge-longhand@5.1.7: 591 | resolution: {integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==} 592 | engines: {node: ^10 || ^12 || >=14.0} 593 | peerDependencies: 594 | postcss: ^8.2.15 595 | 596 | postcss-merge-rules@5.1.4: 597 | resolution: {integrity: sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==} 598 | engines: {node: ^10 || ^12 || >=14.0} 599 | peerDependencies: 600 | postcss: ^8.2.15 601 | 602 | postcss-minify-font-values@5.1.0: 603 | resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==} 604 | engines: {node: ^10 || ^12 || >=14.0} 605 | peerDependencies: 606 | postcss: ^8.2.15 607 | 608 | postcss-minify-gradients@5.1.1: 609 | resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==} 610 | engines: {node: ^10 || ^12 || >=14.0} 611 | peerDependencies: 612 | postcss: ^8.2.15 613 | 614 | postcss-minify-params@5.1.4: 615 | resolution: {integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==} 616 | engines: {node: ^10 || ^12 || >=14.0} 617 | peerDependencies: 618 | postcss: ^8.2.15 619 | 620 | postcss-minify-selectors@5.2.1: 621 | resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==} 622 | engines: {node: ^10 || ^12 || >=14.0} 623 | peerDependencies: 624 | postcss: ^8.2.15 625 | 626 | postcss-modules-extract-imports@3.1.0: 627 | resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} 628 | engines: {node: ^10 || ^12 || >= 14} 629 | peerDependencies: 630 | postcss: ^8.1.0 631 | 632 | postcss-modules-local-by-default@4.0.5: 633 | resolution: {integrity: sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==} 634 | engines: {node: ^10 || ^12 || >= 14} 635 | peerDependencies: 636 | postcss: ^8.1.0 637 | 638 | postcss-modules-scope@3.2.0: 639 | resolution: {integrity: sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==} 640 | engines: {node: ^10 || ^12 || >= 14} 641 | peerDependencies: 642 | postcss: ^8.1.0 643 | 644 | postcss-modules-values@4.0.0: 645 | resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} 646 | engines: {node: ^10 || ^12 || >= 14} 647 | peerDependencies: 648 | postcss: ^8.1.0 649 | 650 | postcss-modules@4.3.1: 651 | resolution: {integrity: sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==} 652 | peerDependencies: 653 | postcss: ^8.0.0 654 | 655 | postcss-normalize-charset@5.1.0: 656 | resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==} 657 | engines: {node: ^10 || ^12 || >=14.0} 658 | peerDependencies: 659 | postcss: ^8.2.15 660 | 661 | postcss-normalize-display-values@5.1.0: 662 | resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==} 663 | engines: {node: ^10 || ^12 || >=14.0} 664 | peerDependencies: 665 | postcss: ^8.2.15 666 | 667 | postcss-normalize-positions@5.1.1: 668 | resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==} 669 | engines: {node: ^10 || ^12 || >=14.0} 670 | peerDependencies: 671 | postcss: ^8.2.15 672 | 673 | postcss-normalize-repeat-style@5.1.1: 674 | resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==} 675 | engines: {node: ^10 || ^12 || >=14.0} 676 | peerDependencies: 677 | postcss: ^8.2.15 678 | 679 | postcss-normalize-string@5.1.0: 680 | resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==} 681 | engines: {node: ^10 || ^12 || >=14.0} 682 | peerDependencies: 683 | postcss: ^8.2.15 684 | 685 | postcss-normalize-timing-functions@5.1.0: 686 | resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==} 687 | engines: {node: ^10 || ^12 || >=14.0} 688 | peerDependencies: 689 | postcss: ^8.2.15 690 | 691 | postcss-normalize-unicode@5.1.1: 692 | resolution: {integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==} 693 | engines: {node: ^10 || ^12 || >=14.0} 694 | peerDependencies: 695 | postcss: ^8.2.15 696 | 697 | postcss-normalize-url@5.1.0: 698 | resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==} 699 | engines: {node: ^10 || ^12 || >=14.0} 700 | peerDependencies: 701 | postcss: ^8.2.15 702 | 703 | postcss-normalize-whitespace@5.1.1: 704 | resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==} 705 | engines: {node: ^10 || ^12 || >=14.0} 706 | peerDependencies: 707 | postcss: ^8.2.15 708 | 709 | postcss-ordered-values@5.1.3: 710 | resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==} 711 | engines: {node: ^10 || ^12 || >=14.0} 712 | peerDependencies: 713 | postcss: ^8.2.15 714 | 715 | postcss-reduce-initial@5.1.2: 716 | resolution: {integrity: sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==} 717 | engines: {node: ^10 || ^12 || >=14.0} 718 | peerDependencies: 719 | postcss: ^8.2.15 720 | 721 | postcss-reduce-transforms@5.1.0: 722 | resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==} 723 | engines: {node: ^10 || ^12 || >=14.0} 724 | peerDependencies: 725 | postcss: ^8.2.15 726 | 727 | postcss-selector-parser@6.1.0: 728 | resolution: {integrity: sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==} 729 | engines: {node: '>=4'} 730 | 731 | postcss-svgo@5.1.0: 732 | resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==} 733 | engines: {node: ^10 || ^12 || >=14.0} 734 | peerDependencies: 735 | postcss: ^8.2.15 736 | 737 | postcss-unique-selectors@5.1.1: 738 | resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==} 739 | engines: {node: ^10 || ^12 || >=14.0} 740 | peerDependencies: 741 | postcss: ^8.2.15 742 | 743 | postcss-value-parser@4.2.0: 744 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 745 | 746 | postcss@8.4.38: 747 | resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} 748 | engines: {node: ^10 || ^12 || >=14} 749 | 750 | promise.series@0.2.0: 751 | resolution: {integrity: sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ==} 752 | engines: {node: '>=0.12'} 753 | 754 | randombytes@2.1.0: 755 | resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} 756 | 757 | readdirp@3.6.0: 758 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 759 | engines: {node: '>=8.10.0'} 760 | 761 | resolve-from@5.0.0: 762 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 763 | engines: {node: '>=8'} 764 | 765 | resolve@1.22.8: 766 | resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} 767 | hasBin: true 768 | 769 | rollup-plugin-livereload@2.0.5: 770 | resolution: {integrity: sha512-vqQZ/UQowTW7VoiKEM5ouNW90wE5/GZLfdWuR0ELxyKOJUIaj+uismPZZaICU4DnWPVjnpCDDxEqwU7pcKY/PA==} 771 | engines: {node: '>=8.3'} 772 | 773 | rollup-plugin-postcss@4.0.2: 774 | resolution: {integrity: sha512-05EaY6zvZdmvPUDi3uCcAQoESDcYnv8ogJJQRp6V5kZ6J6P7uAVJlrTZcaaA20wTH527YTnKfkAoPxWI/jPp4w==} 775 | engines: {node: '>=10'} 776 | peerDependencies: 777 | postcss: 8.x 778 | 779 | rollup-plugin-serve@3.0.0: 780 | resolution: {integrity: sha512-DjVRhbwC0OgP1Q1sj8Lvx12ee60UTZM767kkjT61sYKHw/wLpANAw3VZN5ZMa5NlvO8bYpfTaqiUrW+icAjXFg==} 781 | 782 | rollup-pluginutils@2.8.2: 783 | resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} 784 | 785 | rollup@4.18.0: 786 | resolution: {integrity: sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==} 787 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 788 | hasBin: true 789 | 790 | safe-buffer@5.2.1: 791 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 792 | 793 | safe-identifier@0.4.2: 794 | resolution: {integrity: sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w==} 795 | 796 | serialize-javascript@6.0.2: 797 | resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} 798 | 799 | smob@1.5.0: 800 | resolution: {integrity: sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==} 801 | 802 | source-map-js@1.2.0: 803 | resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} 804 | engines: {node: '>=0.10.0'} 805 | 806 | source-map-support@0.5.21: 807 | resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} 808 | 809 | source-map@0.6.1: 810 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 811 | engines: {node: '>=0.10.0'} 812 | 813 | stable@0.1.8: 814 | resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} 815 | deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' 816 | 817 | string-hash@1.1.3: 818 | resolution: {integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==} 819 | 820 | style-inject@0.3.0: 821 | resolution: {integrity: sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw==} 822 | 823 | stylehacks@5.1.1: 824 | resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==} 825 | engines: {node: ^10 || ^12 || >=14.0} 826 | peerDependencies: 827 | postcss: ^8.2.15 828 | 829 | supports-color@7.2.0: 830 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 831 | engines: {node: '>=8'} 832 | 833 | supports-preserve-symlinks-flag@1.0.0: 834 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 835 | engines: {node: '>= 0.4'} 836 | 837 | svgo@2.8.0: 838 | resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} 839 | engines: {node: '>=10.13.0'} 840 | hasBin: true 841 | 842 | terser@5.31.0: 843 | resolution: {integrity: sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==} 844 | engines: {node: '>=10'} 845 | hasBin: true 846 | 847 | three@0.165.0: 848 | resolution: {integrity: sha512-cc96IlVYGydeceu0e5xq70H8/yoVT/tXBxV/W8A/U6uOq7DXc4/s1Mkmnu6SqoYGhSRWWYFOhVwvq6V0VtbplA==} 849 | 850 | to-regex-range@5.0.1: 851 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 852 | engines: {node: '>=8.0'} 853 | 854 | tslib@2.6.2: 855 | resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} 856 | 857 | typescript@5.4.5: 858 | resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} 859 | engines: {node: '>=14.17'} 860 | hasBin: true 861 | 862 | update-browserslist-db@1.0.16: 863 | resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==} 864 | hasBin: true 865 | peerDependencies: 866 | browserslist: '>= 4.21.0' 867 | 868 | util-deprecate@1.0.2: 869 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 870 | 871 | ws@7.5.9: 872 | resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} 873 | engines: {node: '>=8.3.0'} 874 | peerDependencies: 875 | bufferutil: ^4.0.1 876 | utf-8-validate: ^5.0.2 877 | peerDependenciesMeta: 878 | bufferutil: 879 | optional: true 880 | utf-8-validate: 881 | optional: true 882 | 883 | yaml@1.10.2: 884 | resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} 885 | engines: {node: '>= 6'} 886 | 887 | snapshots: 888 | 889 | '@jridgewell/gen-mapping@0.3.5': 890 | dependencies: 891 | '@jridgewell/set-array': 1.2.1 892 | '@jridgewell/sourcemap-codec': 1.4.15 893 | '@jridgewell/trace-mapping': 0.3.25 894 | 895 | '@jridgewell/resolve-uri@3.1.2': {} 896 | 897 | '@jridgewell/set-array@1.2.1': {} 898 | 899 | '@jridgewell/source-map@0.3.6': 900 | dependencies: 901 | '@jridgewell/gen-mapping': 0.3.5 902 | '@jridgewell/trace-mapping': 0.3.25 903 | 904 | '@jridgewell/sourcemap-codec@1.4.15': {} 905 | 906 | '@jridgewell/trace-mapping@0.3.25': 907 | dependencies: 908 | '@jridgewell/resolve-uri': 3.1.2 909 | '@jridgewell/sourcemap-codec': 1.4.15 910 | 911 | '@rollup/plugin-html@1.0.3(rollup@4.18.0)': 912 | optionalDependencies: 913 | rollup: 4.18.0 914 | 915 | '@rollup/plugin-node-resolve@15.2.3(rollup@4.18.0)': 916 | dependencies: 917 | '@rollup/pluginutils': 5.1.0(rollup@4.18.0) 918 | '@types/resolve': 1.20.2 919 | deepmerge: 4.3.1 920 | is-builtin-module: 3.2.1 921 | is-module: 1.0.0 922 | resolve: 1.22.8 923 | optionalDependencies: 924 | rollup: 4.18.0 925 | 926 | '@rollup/plugin-terser@0.4.4(rollup@4.18.0)': 927 | dependencies: 928 | serialize-javascript: 6.0.2 929 | smob: 1.5.0 930 | terser: 5.31.0 931 | optionalDependencies: 932 | rollup: 4.18.0 933 | 934 | '@rollup/plugin-typescript@11.1.6(rollup@4.18.0)(tslib@2.6.2)(typescript@5.4.5)': 935 | dependencies: 936 | '@rollup/pluginutils': 5.1.0(rollup@4.18.0) 937 | resolve: 1.22.8 938 | typescript: 5.4.5 939 | optionalDependencies: 940 | rollup: 4.18.0 941 | tslib: 2.6.2 942 | 943 | '@rollup/pluginutils@5.1.0(rollup@4.18.0)': 944 | dependencies: 945 | '@types/estree': 1.0.5 946 | estree-walker: 2.0.2 947 | picomatch: 2.3.1 948 | optionalDependencies: 949 | rollup: 4.18.0 950 | 951 | '@rollup/rollup-android-arm-eabi@4.18.0': 952 | optional: true 953 | 954 | '@rollup/rollup-android-arm64@4.18.0': 955 | optional: true 956 | 957 | '@rollup/rollup-darwin-arm64@4.18.0': 958 | optional: true 959 | 960 | '@rollup/rollup-darwin-x64@4.18.0': 961 | optional: true 962 | 963 | '@rollup/rollup-linux-arm-gnueabihf@4.18.0': 964 | optional: true 965 | 966 | '@rollup/rollup-linux-arm-musleabihf@4.18.0': 967 | optional: true 968 | 969 | '@rollup/rollup-linux-arm64-gnu@4.18.0': 970 | optional: true 971 | 972 | '@rollup/rollup-linux-arm64-musl@4.18.0': 973 | optional: true 974 | 975 | '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': 976 | optional: true 977 | 978 | '@rollup/rollup-linux-riscv64-gnu@4.18.0': 979 | optional: true 980 | 981 | '@rollup/rollup-linux-s390x-gnu@4.18.0': 982 | optional: true 983 | 984 | '@rollup/rollup-linux-x64-gnu@4.18.0': 985 | optional: true 986 | 987 | '@rollup/rollup-linux-x64-musl@4.18.0': 988 | optional: true 989 | 990 | '@rollup/rollup-win32-arm64-msvc@4.18.0': 991 | optional: true 992 | 993 | '@rollup/rollup-win32-ia32-msvc@4.18.0': 994 | optional: true 995 | 996 | '@rollup/rollup-win32-x64-msvc@4.18.0': 997 | optional: true 998 | 999 | '@trysound/sax@0.2.0': {} 1000 | 1001 | '@tweenjs/tween.js@23.1.2': {} 1002 | 1003 | '@types/estree@1.0.5': {} 1004 | 1005 | '@types/resolve@1.20.2': {} 1006 | 1007 | '@types/stats.js@0.17.3': {} 1008 | 1009 | '@types/three@0.165.0': 1010 | dependencies: 1011 | '@tweenjs/tween.js': 23.1.2 1012 | '@types/stats.js': 0.17.3 1013 | '@types/webxr': 0.5.16 1014 | fflate: 0.8.2 1015 | meshoptimizer: 0.18.1 1016 | 1017 | '@types/webxr@0.5.16': {} 1018 | 1019 | acorn@8.11.3: {} 1020 | 1021 | ansi-styles@4.3.0: 1022 | dependencies: 1023 | color-convert: 2.0.1 1024 | 1025 | anymatch@3.1.3: 1026 | dependencies: 1027 | normalize-path: 3.0.0 1028 | picomatch: 2.3.1 1029 | 1030 | binary-extensions@2.3.0: {} 1031 | 1032 | boolbase@1.0.0: {} 1033 | 1034 | braces@3.0.3: 1035 | dependencies: 1036 | fill-range: 7.1.1 1037 | 1038 | browserslist@4.23.0: 1039 | dependencies: 1040 | caniuse-lite: 1.0.30001625 1041 | electron-to-chromium: 1.4.788 1042 | node-releases: 2.0.14 1043 | update-browserslist-db: 1.0.16(browserslist@4.23.0) 1044 | 1045 | buffer-from@1.1.2: {} 1046 | 1047 | builtin-modules@3.3.0: {} 1048 | 1049 | caniuse-api@3.0.0: 1050 | dependencies: 1051 | browserslist: 4.23.0 1052 | caniuse-lite: 1.0.30001625 1053 | lodash.memoize: 4.1.2 1054 | lodash.uniq: 4.5.0 1055 | 1056 | caniuse-lite@1.0.30001625: {} 1057 | 1058 | chalk@4.1.2: 1059 | dependencies: 1060 | ansi-styles: 4.3.0 1061 | supports-color: 7.2.0 1062 | 1063 | chokidar@3.6.0: 1064 | dependencies: 1065 | anymatch: 3.1.3 1066 | braces: 3.0.3 1067 | glob-parent: 5.1.2 1068 | is-binary-path: 2.1.0 1069 | is-glob: 4.0.3 1070 | normalize-path: 3.0.0 1071 | readdirp: 3.6.0 1072 | optionalDependencies: 1073 | fsevents: 2.3.3 1074 | 1075 | color-convert@2.0.1: 1076 | dependencies: 1077 | color-name: 1.1.4 1078 | 1079 | color-name@1.1.4: {} 1080 | 1081 | colord@2.9.3: {} 1082 | 1083 | commander@2.20.3: {} 1084 | 1085 | commander@7.2.0: {} 1086 | 1087 | concat-with-sourcemaps@1.1.0: 1088 | dependencies: 1089 | source-map: 0.6.1 1090 | 1091 | css-declaration-sorter@6.4.1(postcss@8.4.38): 1092 | dependencies: 1093 | postcss: 8.4.38 1094 | 1095 | css-select@4.3.0: 1096 | dependencies: 1097 | boolbase: 1.0.0 1098 | css-what: 6.1.0 1099 | domhandler: 4.3.1 1100 | domutils: 2.8.0 1101 | nth-check: 2.1.1 1102 | 1103 | css-tree@1.1.3: 1104 | dependencies: 1105 | mdn-data: 2.0.14 1106 | source-map: 0.6.1 1107 | 1108 | css-what@6.1.0: {} 1109 | 1110 | cssesc@3.0.0: {} 1111 | 1112 | cssnano-preset-default@5.2.14(postcss@8.4.38): 1113 | dependencies: 1114 | css-declaration-sorter: 6.4.1(postcss@8.4.38) 1115 | cssnano-utils: 3.1.0(postcss@8.4.38) 1116 | postcss: 8.4.38 1117 | postcss-calc: 8.2.4(postcss@8.4.38) 1118 | postcss-colormin: 5.3.1(postcss@8.4.38) 1119 | postcss-convert-values: 5.1.3(postcss@8.4.38) 1120 | postcss-discard-comments: 5.1.2(postcss@8.4.38) 1121 | postcss-discard-duplicates: 5.1.0(postcss@8.4.38) 1122 | postcss-discard-empty: 5.1.1(postcss@8.4.38) 1123 | postcss-discard-overridden: 5.1.0(postcss@8.4.38) 1124 | postcss-merge-longhand: 5.1.7(postcss@8.4.38) 1125 | postcss-merge-rules: 5.1.4(postcss@8.4.38) 1126 | postcss-minify-font-values: 5.1.0(postcss@8.4.38) 1127 | postcss-minify-gradients: 5.1.1(postcss@8.4.38) 1128 | postcss-minify-params: 5.1.4(postcss@8.4.38) 1129 | postcss-minify-selectors: 5.2.1(postcss@8.4.38) 1130 | postcss-normalize-charset: 5.1.0(postcss@8.4.38) 1131 | postcss-normalize-display-values: 5.1.0(postcss@8.4.38) 1132 | postcss-normalize-positions: 5.1.1(postcss@8.4.38) 1133 | postcss-normalize-repeat-style: 5.1.1(postcss@8.4.38) 1134 | postcss-normalize-string: 5.1.0(postcss@8.4.38) 1135 | postcss-normalize-timing-functions: 5.1.0(postcss@8.4.38) 1136 | postcss-normalize-unicode: 5.1.1(postcss@8.4.38) 1137 | postcss-normalize-url: 5.1.0(postcss@8.4.38) 1138 | postcss-normalize-whitespace: 5.1.1(postcss@8.4.38) 1139 | postcss-ordered-values: 5.1.3(postcss@8.4.38) 1140 | postcss-reduce-initial: 5.1.2(postcss@8.4.38) 1141 | postcss-reduce-transforms: 5.1.0(postcss@8.4.38) 1142 | postcss-svgo: 5.1.0(postcss@8.4.38) 1143 | postcss-unique-selectors: 5.1.1(postcss@8.4.38) 1144 | 1145 | cssnano-utils@3.1.0(postcss@8.4.38): 1146 | dependencies: 1147 | postcss: 8.4.38 1148 | 1149 | cssnano@5.1.15(postcss@8.4.38): 1150 | dependencies: 1151 | cssnano-preset-default: 5.2.14(postcss@8.4.38) 1152 | lilconfig: 2.1.0 1153 | postcss: 8.4.38 1154 | yaml: 1.10.2 1155 | 1156 | csso@4.2.0: 1157 | dependencies: 1158 | css-tree: 1.1.3 1159 | 1160 | deepmerge@4.3.1: {} 1161 | 1162 | dom-serializer@1.4.1: 1163 | dependencies: 1164 | domelementtype: 2.3.0 1165 | domhandler: 4.3.1 1166 | entities: 2.2.0 1167 | 1168 | domelementtype@2.3.0: {} 1169 | 1170 | domhandler@4.3.1: 1171 | dependencies: 1172 | domelementtype: 2.3.0 1173 | 1174 | domutils@2.8.0: 1175 | dependencies: 1176 | dom-serializer: 1.4.1 1177 | domelementtype: 2.3.0 1178 | domhandler: 4.3.1 1179 | 1180 | electron-to-chromium@1.4.788: {} 1181 | 1182 | entities@2.2.0: {} 1183 | 1184 | escalade@3.1.2: {} 1185 | 1186 | estree-walker@0.6.1: {} 1187 | 1188 | estree-walker@2.0.2: {} 1189 | 1190 | eventemitter3@4.0.7: {} 1191 | 1192 | fflate@0.8.2: {} 1193 | 1194 | fill-range@7.1.1: 1195 | dependencies: 1196 | to-regex-range: 5.0.1 1197 | 1198 | fsevents@2.3.3: 1199 | optional: true 1200 | 1201 | function-bind@1.1.2: {} 1202 | 1203 | generic-names@4.0.0: 1204 | dependencies: 1205 | loader-utils: 3.2.2 1206 | 1207 | glob-parent@5.1.2: 1208 | dependencies: 1209 | is-glob: 4.0.3 1210 | 1211 | has-flag@4.0.0: {} 1212 | 1213 | hasown@2.0.2: 1214 | dependencies: 1215 | function-bind: 1.1.2 1216 | 1217 | icss-replace-symbols@1.1.0: {} 1218 | 1219 | icss-utils@5.1.0(postcss@8.4.38): 1220 | dependencies: 1221 | postcss: 8.4.38 1222 | 1223 | import-cwd@3.0.0: 1224 | dependencies: 1225 | import-from: 3.0.0 1226 | 1227 | import-from@3.0.0: 1228 | dependencies: 1229 | resolve-from: 5.0.0 1230 | 1231 | is-binary-path@2.1.0: 1232 | dependencies: 1233 | binary-extensions: 2.3.0 1234 | 1235 | is-builtin-module@3.2.1: 1236 | dependencies: 1237 | builtin-modules: 3.3.0 1238 | 1239 | is-core-module@2.13.1: 1240 | dependencies: 1241 | hasown: 2.0.2 1242 | 1243 | is-extglob@2.1.1: {} 1244 | 1245 | is-glob@4.0.3: 1246 | dependencies: 1247 | is-extglob: 2.1.1 1248 | 1249 | is-module@1.0.0: {} 1250 | 1251 | is-number@7.0.0: {} 1252 | 1253 | lilconfig@2.1.0: {} 1254 | 1255 | livereload-js@3.4.1: {} 1256 | 1257 | livereload@0.9.3: 1258 | dependencies: 1259 | chokidar: 3.6.0 1260 | livereload-js: 3.4.1 1261 | opts: 2.0.2 1262 | ws: 7.5.9 1263 | transitivePeerDependencies: 1264 | - bufferutil 1265 | - utf-8-validate 1266 | 1267 | loader-utils@3.2.2: {} 1268 | 1269 | lodash.camelcase@4.3.0: {} 1270 | 1271 | lodash.memoize@4.1.2: {} 1272 | 1273 | lodash.uniq@4.5.0: {} 1274 | 1275 | mdn-data@2.0.14: {} 1276 | 1277 | meshoptimizer@0.18.1: {} 1278 | 1279 | mime@4.0.3: {} 1280 | 1281 | nanoid@3.3.7: {} 1282 | 1283 | node-releases@2.0.14: {} 1284 | 1285 | normalize-path@3.0.0: {} 1286 | 1287 | normalize-url@6.1.0: {} 1288 | 1289 | nth-check@2.1.1: 1290 | dependencies: 1291 | boolbase: 1.0.0 1292 | 1293 | opener@1.5.2: {} 1294 | 1295 | opts@2.0.2: {} 1296 | 1297 | p-finally@1.0.0: {} 1298 | 1299 | p-queue@6.6.2: 1300 | dependencies: 1301 | eventemitter3: 4.0.7 1302 | p-timeout: 3.2.0 1303 | 1304 | p-timeout@3.2.0: 1305 | dependencies: 1306 | p-finally: 1.0.0 1307 | 1308 | path-parse@1.0.7: {} 1309 | 1310 | picocolors@1.0.1: {} 1311 | 1312 | picomatch@2.3.1: {} 1313 | 1314 | pify@5.0.0: {} 1315 | 1316 | postcss-calc@8.2.4(postcss@8.4.38): 1317 | dependencies: 1318 | postcss: 8.4.38 1319 | postcss-selector-parser: 6.1.0 1320 | postcss-value-parser: 4.2.0 1321 | 1322 | postcss-colormin@5.3.1(postcss@8.4.38): 1323 | dependencies: 1324 | browserslist: 4.23.0 1325 | caniuse-api: 3.0.0 1326 | colord: 2.9.3 1327 | postcss: 8.4.38 1328 | postcss-value-parser: 4.2.0 1329 | 1330 | postcss-convert-values@5.1.3(postcss@8.4.38): 1331 | dependencies: 1332 | browserslist: 4.23.0 1333 | postcss: 8.4.38 1334 | postcss-value-parser: 4.2.0 1335 | 1336 | postcss-discard-comments@5.1.2(postcss@8.4.38): 1337 | dependencies: 1338 | postcss: 8.4.38 1339 | 1340 | postcss-discard-duplicates@5.1.0(postcss@8.4.38): 1341 | dependencies: 1342 | postcss: 8.4.38 1343 | 1344 | postcss-discard-empty@5.1.1(postcss@8.4.38): 1345 | dependencies: 1346 | postcss: 8.4.38 1347 | 1348 | postcss-discard-overridden@5.1.0(postcss@8.4.38): 1349 | dependencies: 1350 | postcss: 8.4.38 1351 | 1352 | postcss-load-config@3.1.4(postcss@8.4.38): 1353 | dependencies: 1354 | lilconfig: 2.1.0 1355 | yaml: 1.10.2 1356 | optionalDependencies: 1357 | postcss: 8.4.38 1358 | 1359 | postcss-merge-longhand@5.1.7(postcss@8.4.38): 1360 | dependencies: 1361 | postcss: 8.4.38 1362 | postcss-value-parser: 4.2.0 1363 | stylehacks: 5.1.1(postcss@8.4.38) 1364 | 1365 | postcss-merge-rules@5.1.4(postcss@8.4.38): 1366 | dependencies: 1367 | browserslist: 4.23.0 1368 | caniuse-api: 3.0.0 1369 | cssnano-utils: 3.1.0(postcss@8.4.38) 1370 | postcss: 8.4.38 1371 | postcss-selector-parser: 6.1.0 1372 | 1373 | postcss-minify-font-values@5.1.0(postcss@8.4.38): 1374 | dependencies: 1375 | postcss: 8.4.38 1376 | postcss-value-parser: 4.2.0 1377 | 1378 | postcss-minify-gradients@5.1.1(postcss@8.4.38): 1379 | dependencies: 1380 | colord: 2.9.3 1381 | cssnano-utils: 3.1.0(postcss@8.4.38) 1382 | postcss: 8.4.38 1383 | postcss-value-parser: 4.2.0 1384 | 1385 | postcss-minify-params@5.1.4(postcss@8.4.38): 1386 | dependencies: 1387 | browserslist: 4.23.0 1388 | cssnano-utils: 3.1.0(postcss@8.4.38) 1389 | postcss: 8.4.38 1390 | postcss-value-parser: 4.2.0 1391 | 1392 | postcss-minify-selectors@5.2.1(postcss@8.4.38): 1393 | dependencies: 1394 | postcss: 8.4.38 1395 | postcss-selector-parser: 6.1.0 1396 | 1397 | postcss-modules-extract-imports@3.1.0(postcss@8.4.38): 1398 | dependencies: 1399 | postcss: 8.4.38 1400 | 1401 | postcss-modules-local-by-default@4.0.5(postcss@8.4.38): 1402 | dependencies: 1403 | icss-utils: 5.1.0(postcss@8.4.38) 1404 | postcss: 8.4.38 1405 | postcss-selector-parser: 6.1.0 1406 | postcss-value-parser: 4.2.0 1407 | 1408 | postcss-modules-scope@3.2.0(postcss@8.4.38): 1409 | dependencies: 1410 | postcss: 8.4.38 1411 | postcss-selector-parser: 6.1.0 1412 | 1413 | postcss-modules-values@4.0.0(postcss@8.4.38): 1414 | dependencies: 1415 | icss-utils: 5.1.0(postcss@8.4.38) 1416 | postcss: 8.4.38 1417 | 1418 | postcss-modules@4.3.1(postcss@8.4.38): 1419 | dependencies: 1420 | generic-names: 4.0.0 1421 | icss-replace-symbols: 1.1.0 1422 | lodash.camelcase: 4.3.0 1423 | postcss: 8.4.38 1424 | postcss-modules-extract-imports: 3.1.0(postcss@8.4.38) 1425 | postcss-modules-local-by-default: 4.0.5(postcss@8.4.38) 1426 | postcss-modules-scope: 3.2.0(postcss@8.4.38) 1427 | postcss-modules-values: 4.0.0(postcss@8.4.38) 1428 | string-hash: 1.1.3 1429 | 1430 | postcss-normalize-charset@5.1.0(postcss@8.4.38): 1431 | dependencies: 1432 | postcss: 8.4.38 1433 | 1434 | postcss-normalize-display-values@5.1.0(postcss@8.4.38): 1435 | dependencies: 1436 | postcss: 8.4.38 1437 | postcss-value-parser: 4.2.0 1438 | 1439 | postcss-normalize-positions@5.1.1(postcss@8.4.38): 1440 | dependencies: 1441 | postcss: 8.4.38 1442 | postcss-value-parser: 4.2.0 1443 | 1444 | postcss-normalize-repeat-style@5.1.1(postcss@8.4.38): 1445 | dependencies: 1446 | postcss: 8.4.38 1447 | postcss-value-parser: 4.2.0 1448 | 1449 | postcss-normalize-string@5.1.0(postcss@8.4.38): 1450 | dependencies: 1451 | postcss: 8.4.38 1452 | postcss-value-parser: 4.2.0 1453 | 1454 | postcss-normalize-timing-functions@5.1.0(postcss@8.4.38): 1455 | dependencies: 1456 | postcss: 8.4.38 1457 | postcss-value-parser: 4.2.0 1458 | 1459 | postcss-normalize-unicode@5.1.1(postcss@8.4.38): 1460 | dependencies: 1461 | browserslist: 4.23.0 1462 | postcss: 8.4.38 1463 | postcss-value-parser: 4.2.0 1464 | 1465 | postcss-normalize-url@5.1.0(postcss@8.4.38): 1466 | dependencies: 1467 | normalize-url: 6.1.0 1468 | postcss: 8.4.38 1469 | postcss-value-parser: 4.2.0 1470 | 1471 | postcss-normalize-whitespace@5.1.1(postcss@8.4.38): 1472 | dependencies: 1473 | postcss: 8.4.38 1474 | postcss-value-parser: 4.2.0 1475 | 1476 | postcss-ordered-values@5.1.3(postcss@8.4.38): 1477 | dependencies: 1478 | cssnano-utils: 3.1.0(postcss@8.4.38) 1479 | postcss: 8.4.38 1480 | postcss-value-parser: 4.2.0 1481 | 1482 | postcss-reduce-initial@5.1.2(postcss@8.4.38): 1483 | dependencies: 1484 | browserslist: 4.23.0 1485 | caniuse-api: 3.0.0 1486 | postcss: 8.4.38 1487 | 1488 | postcss-reduce-transforms@5.1.0(postcss@8.4.38): 1489 | dependencies: 1490 | postcss: 8.4.38 1491 | postcss-value-parser: 4.2.0 1492 | 1493 | postcss-selector-parser@6.1.0: 1494 | dependencies: 1495 | cssesc: 3.0.0 1496 | util-deprecate: 1.0.2 1497 | 1498 | postcss-svgo@5.1.0(postcss@8.4.38): 1499 | dependencies: 1500 | postcss: 8.4.38 1501 | postcss-value-parser: 4.2.0 1502 | svgo: 2.8.0 1503 | 1504 | postcss-unique-selectors@5.1.1(postcss@8.4.38): 1505 | dependencies: 1506 | postcss: 8.4.38 1507 | postcss-selector-parser: 6.1.0 1508 | 1509 | postcss-value-parser@4.2.0: {} 1510 | 1511 | postcss@8.4.38: 1512 | dependencies: 1513 | nanoid: 3.3.7 1514 | picocolors: 1.0.1 1515 | source-map-js: 1.2.0 1516 | 1517 | promise.series@0.2.0: {} 1518 | 1519 | randombytes@2.1.0: 1520 | dependencies: 1521 | safe-buffer: 5.2.1 1522 | 1523 | readdirp@3.6.0: 1524 | dependencies: 1525 | picomatch: 2.3.1 1526 | 1527 | resolve-from@5.0.0: {} 1528 | 1529 | resolve@1.22.8: 1530 | dependencies: 1531 | is-core-module: 2.13.1 1532 | path-parse: 1.0.7 1533 | supports-preserve-symlinks-flag: 1.0.0 1534 | 1535 | rollup-plugin-livereload@2.0.5: 1536 | dependencies: 1537 | livereload: 0.9.3 1538 | transitivePeerDependencies: 1539 | - bufferutil 1540 | - utf-8-validate 1541 | 1542 | rollup-plugin-postcss@4.0.2(postcss@8.4.38): 1543 | dependencies: 1544 | chalk: 4.1.2 1545 | concat-with-sourcemaps: 1.1.0 1546 | cssnano: 5.1.15(postcss@8.4.38) 1547 | import-cwd: 3.0.0 1548 | p-queue: 6.6.2 1549 | pify: 5.0.0 1550 | postcss: 8.4.38 1551 | postcss-load-config: 3.1.4(postcss@8.4.38) 1552 | postcss-modules: 4.3.1(postcss@8.4.38) 1553 | promise.series: 0.2.0 1554 | resolve: 1.22.8 1555 | rollup-pluginutils: 2.8.2 1556 | safe-identifier: 0.4.2 1557 | style-inject: 0.3.0 1558 | transitivePeerDependencies: 1559 | - ts-node 1560 | 1561 | rollup-plugin-serve@3.0.0: 1562 | dependencies: 1563 | mime: 4.0.3 1564 | opener: 1.5.2 1565 | 1566 | rollup-pluginutils@2.8.2: 1567 | dependencies: 1568 | estree-walker: 0.6.1 1569 | 1570 | rollup@4.18.0: 1571 | dependencies: 1572 | '@types/estree': 1.0.5 1573 | optionalDependencies: 1574 | '@rollup/rollup-android-arm-eabi': 4.18.0 1575 | '@rollup/rollup-android-arm64': 4.18.0 1576 | '@rollup/rollup-darwin-arm64': 4.18.0 1577 | '@rollup/rollup-darwin-x64': 4.18.0 1578 | '@rollup/rollup-linux-arm-gnueabihf': 4.18.0 1579 | '@rollup/rollup-linux-arm-musleabihf': 4.18.0 1580 | '@rollup/rollup-linux-arm64-gnu': 4.18.0 1581 | '@rollup/rollup-linux-arm64-musl': 4.18.0 1582 | '@rollup/rollup-linux-powerpc64le-gnu': 4.18.0 1583 | '@rollup/rollup-linux-riscv64-gnu': 4.18.0 1584 | '@rollup/rollup-linux-s390x-gnu': 4.18.0 1585 | '@rollup/rollup-linux-x64-gnu': 4.18.0 1586 | '@rollup/rollup-linux-x64-musl': 4.18.0 1587 | '@rollup/rollup-win32-arm64-msvc': 4.18.0 1588 | '@rollup/rollup-win32-ia32-msvc': 4.18.0 1589 | '@rollup/rollup-win32-x64-msvc': 4.18.0 1590 | fsevents: 2.3.3 1591 | 1592 | safe-buffer@5.2.1: {} 1593 | 1594 | safe-identifier@0.4.2: {} 1595 | 1596 | serialize-javascript@6.0.2: 1597 | dependencies: 1598 | randombytes: 2.1.0 1599 | 1600 | smob@1.5.0: {} 1601 | 1602 | source-map-js@1.2.0: {} 1603 | 1604 | source-map-support@0.5.21: 1605 | dependencies: 1606 | buffer-from: 1.1.2 1607 | source-map: 0.6.1 1608 | 1609 | source-map@0.6.1: {} 1610 | 1611 | stable@0.1.8: {} 1612 | 1613 | string-hash@1.1.3: {} 1614 | 1615 | style-inject@0.3.0: {} 1616 | 1617 | stylehacks@5.1.1(postcss@8.4.38): 1618 | dependencies: 1619 | browserslist: 4.23.0 1620 | postcss: 8.4.38 1621 | postcss-selector-parser: 6.1.0 1622 | 1623 | supports-color@7.2.0: 1624 | dependencies: 1625 | has-flag: 4.0.0 1626 | 1627 | supports-preserve-symlinks-flag@1.0.0: {} 1628 | 1629 | svgo@2.8.0: 1630 | dependencies: 1631 | '@trysound/sax': 0.2.0 1632 | commander: 7.2.0 1633 | css-select: 4.3.0 1634 | css-tree: 1.1.3 1635 | csso: 4.2.0 1636 | picocolors: 1.0.1 1637 | stable: 0.1.8 1638 | 1639 | terser@5.31.0: 1640 | dependencies: 1641 | '@jridgewell/source-map': 0.3.6 1642 | acorn: 8.11.3 1643 | commander: 2.20.3 1644 | source-map-support: 0.5.21 1645 | 1646 | three@0.165.0: {} 1647 | 1648 | to-regex-range@5.0.1: 1649 | dependencies: 1650 | is-number: 7.0.0 1651 | 1652 | tslib@2.6.2: {} 1653 | 1654 | typescript@5.4.5: {} 1655 | 1656 | update-browserslist-db@1.0.16(browserslist@4.23.0): 1657 | dependencies: 1658 | browserslist: 4.23.0 1659 | escalade: 3.1.2 1660 | picocolors: 1.0.1 1661 | 1662 | util-deprecate@1.0.2: {} 1663 | 1664 | ws@7.5.9: {} 1665 | 1666 | yaml@1.10.2: {} 1667 | --------------------------------------------------------------------------------